@norges-domstoler/dds-components 21.1.0 → 21.2.1
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.css +15 -52
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +70 -64
- package/dist/index.d.ts +70 -64
- package/dist/index.js +254 -172
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +368 -288
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Typography/typographyStyles.module.css","../src/components/helpers/styling/utilStyles.module.css","../src/components/helpers/Backdrop/Backdrop.utils.tsx","../src/components/helpers/Backdrop/Backdrop.module.css","../src/utils/color.tsx","../src/utils/combineHandlers.tsx","../src/utils/dom.ts","../src/utils/getFocusableElements.ts","../src/utils/icon.ts","../src/utils/idGenerator.tsx","../src/utils/object.tsx","../src/utils/readonlyEventHandlers.tsx","../src/utils/searchFilter.tsx","../src/utils/RequiredMarker/RequiredMarker.module.css","../src/utils/RequiredMarker/RequiredMarker.tsx","../src/utils/useElementHeight.ts","../src/components/helpers/Backdrop/Backdrop.tsx","../src/components/helpers/Chevron/Chevron.module.css","../src/components/helpers/Chevron/AnimatedChevronUpDown.tsx","../src/components/helpers/ElementAs/ElementAs.tsx","../src/components/helpers/HiddenInput/HiddenInput.tsx","../src/components/helpers/Input/Input.module.css","../src/components/helpers/styling/focus.module.css","../src/components/helpers/Input/Input.tsx","../src/components/helpers/Input/CharCounter.tsx","../src/types/BaseComponentProps.ts","../src/types/Surface.tsx","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.module.css","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.tsx","../src/components/Typography/Typography/Typography.module.css","../src/components/Typography/Typography/Typography.utils.ts","../src/components/Icon/Icon.tsx","../src/components/Icon/Icon.module.css","../src/components/Icon/utils/SvgWrapper.tsx","../src/components/Icon/icons/index.ts","../src/components/Icon/icons/addressShielded.tsx","../src/components/Icon/icons/agreement.tsx","../src/components/Icon/icons/apps.tsx","../src/components/Icon/icons/archive.tsx","../src/components/Icon/icons/arrowDown.tsx","../src/components/Icon/icons/arrowLeft.tsx","../src/components/Icon/icons/arrowRight.tsx","../src/components/Icon/icons/arrowUp.tsx","../src/components/Icon/icons/attachment.tsx","../src/components/Icon/icons/block.tsx","../src/components/Icon/icons/book.tsx","../src/components/Icon/icons/build.tsx","../src/components/Icon/icons/buildCircled.tsx","../src/components/Icon/icons/calendar.tsx","../src/components/Icon/icons/calendarMonth.tsx","../src/components/Icon/icons/calendarViewDay.tsx","../src/components/Icon/icons/calendarViewMonth.tsx","../src/components/Icon/icons/calendarViewWeek.tsx","../src/components/Icon/icons/call.tsx","../src/components/Icon/icons/caring.tsx","../src/components/Icon/icons/chat.tsx","../src/components/Icon/icons/check.tsx","../src/components/Icon/icons/checkCircled.tsx","../src/components/Icon/icons/checklist.tsx","../src/components/Icon/icons/chevronDown.tsx","../src/components/Icon/icons/chevronFirst.tsx","../src/components/Icon/icons/chevronLargeLeft.tsx","../src/components/Icon/icons/chevronLargeRight.tsx","../src/components/Icon/icons/chevronLast.tsx","../src/components/Icon/icons/chevronLeft.tsx","../src/components/Icon/icons/chevronRight.tsx","../src/components/Icon/icons/chevronUp.tsx","../src/components/Icon/icons/close.tsx","../src/components/Icon/icons/closeSmall.tsx","../src/components/Icon/icons/closeCircled.tsx","../src/components/Icon/icons/cloud.tsx","../src/components/Icon/icons/collapse.tsx","../src/components/Icon/icons/comment.tsx","../src/components/Icon/icons/copy.tsx","../src/components/Icon/icons/court.tsx","../src/components/Icon/icons/dateRange.tsx","../src/components/Icon/icons/deaths.tsx","../src/components/Icon/icons/doubleChevronLeft.tsx","../src/components/Icon/icons/doubleChevronRight.tsx","../src/components/Icon/icons/download.tsx","../src/components/Icon/icons/downloadDone.tsx","../src/components/Icon/icons/dragHandle.tsx","../src/components/Icon/icons/edit.tsx","../src/components/Icon/icons/error.tsx","../src/components/Icon/icons/exclaim.tsx","../src/components/Icon/icons/expand.tsx","../src/components/Icon/icons/facebook.tsx","../src/components/Icon/icons/family.tsx","../src/components/Icon/icons/feedback.tsx","../src/components/Icon/icons/file.tsx","../src/components/Icon/icons/fileAdd.tsx","../src/components/Icon/icons/fileShielded.tsx","../src/components/Icon/icons/fileText.tsx","../src/components/Icon/icons/filter.tsx","../src/components/Icon/icons/filterList.tsx","../src/components/Icon/icons/filterListOff.tsx","../src/components/Icon/icons/filterOff.tsx","../src/components/Icon/icons/findInPage.tsx","../src/components/Icon/icons/flickr.tsx","../src/components/Icon/icons/folder.tsx","../src/components/Icon/icons/folderAdd.tsx","../src/components/Icon/icons/folderShielded.tsx","../src/components/Icon/icons/fullsceenExit.tsx","../src/components/Icon/icons/fullscreen.tsx","../src/components/Icon/icons/gavel.tsx","../src/components/Icon/icons/guardian.tsx","../src/components/Icon/icons/help.tsx","../src/components/Icon/icons/helpFilled.tsx","../src/components/Icon/icons/home.tsx","../src/components/Icon/icons/hourglassBottom.tsx","../src/components/Icon/icons/hourglassDisabled.tsx","../src/components/Icon/icons/hourglassEmpty.tsx","../src/components/Icon/icons/hourglassFull.tsx","../src/components/Icon/icons/hourglassTop.tsx","../src/components/Icon/icons/image.tsx","../src/components/Icon/icons/info.tsx","../src/components/Icon/icons/instagram.tsx","../src/components/Icon/icons/jordskifterett.tsx","../src/components/Icon/icons/jordskiftesak.tsx","../src/components/Icon/icons/key.tsx","../src/components/Icon/icons/lagmannsrett.tsx","../src/components/Icon/icons/language.tsx","../src/components/Icon/icons/link.tsx","../src/components/Icon/icons/linkedIn.tsx","../src/components/Icon/icons/linkOff.tsx","../src/components/Icon/icons/list.tsx","../src/components/Icon/icons/listAlt.tsx","../src/components/Icon/icons/location.tsx","../src/components/Icon/icons/lock.tsx","../src/components/Icon/icons/lockOpen.tsx","../src/components/Icon/icons/login.tsx","../src/components/Icon/icons/logout.tsx","../src/components/Icon/icons/mail.tsx","../src/components/Icon/icons/mailOpen.tsx","../src/components/Icon/icons/menu.tsx","../src/components/Icon/icons/minus.tsx","../src/components/Icon/icons/minusCircled.tsx","../src/components/Icon/icons/moreHorizontal.tsx","../src/components/Icon/icons/moreVertical.tsx","../src/components/Icon/icons/notarial.tsx","../src/components/Icon/icons/notifications.tsx","../src/components/Icon/icons/notificationsOff.tsx","../src/components/Icon/icons/onlineMeeting.tsx","../src/components/Icon/icons/openExternal.tsx","../src/components/Icon/icons/payout.tsx","../src/components/Icon/icons/pdf.tsx","../src/components/Icon/icons/person.tsx","../src/components/Icon/icons/personAdd.tsx","../src/components/Icon/icons/personShielded.tsx","../src/components/Icon/icons/pin.tsx","../src/components/Icon/icons/plus.tsx","../src/components/Icon/icons/plusCircled.tsx","../src/components/Icon/icons/powerOfAttorney.tsx","../src/components/Icon/icons/print.tsx","../src/components/Icon/icons/property.tsx","../src/components/Icon/icons/publish.tsx","../src/components/Icon/icons/questionAnswer.tsx","../src/components/Icon/icons/receipt.tsx","../src/components/Icon/icons/redo.tsx","../src/components/Icon/icons/refresh.tsx","../src/components/Icon/icons/replay.tsx","../src/components/Icon/icons/search.tsx","../src/components/Icon/icons/settings.tsx","../src/components/Icon/icons/sms.tsx","../src/components/Icon/icons/star.tsx","../src/components/Icon/icons/starFilled.tsx","../src/components/Icon/icons/starHalfFilled.tsx","../src/components/Icon/icons/sync.tsx","../src/components/Icon/icons/thumbdown.tsx","../src/components/Icon/icons/thumbdownFilled.tsx","../src/components/Icon/icons/thumbup.tsx","../src/components/Icon/icons/thumbupFilled.tsx","../src/components/Icon/icons/time.tsx","../src/components/Icon/icons/tingrett.tsx","../src/components/Icon/icons/tip.tsx","../src/components/Icon/icons/trash.tsx","../src/components/Icon/icons/undo.tsx","../src/components/Icon/icons/unfoldLess.tsx","../src/components/Icon/icons/unfoldMore.tsx","../src/components/Icon/icons/upload.tsx","../src/components/Icon/icons/visibilityOff.tsx","../src/components/Icon/icons/visibilityOn.tsx","../src/components/Icon/icons/warning.tsx","../src/components/Icon/icons/webex.tsx","../src/components/Icon/icons/x.tsx","../src/components/Icon/icons/zoomIn.tsx","../src/components/Icon/icons/zoomOut.tsx","../src/components/Icon/icons/barChart.tsx","../src/components/Icon/icons/barChartBoxed.tsx","../src/components/Icon/icons/lineChart.tsx","../src/components/Icon/icons/trendingUp.tsx","../src/components/Icon/icons/trendingDown.tsx","../src/components/Icon/icons/libraryAdd.tsx","../src/components/Icon/icons/helpSimple.tsx","../src/components/Typography/Typography/Typography.tsx","../src/components/Typography/Caption/Caption.tsx","../src/components/Typography/Heading/Heading.tsx","../src/components/Typography/Label/Label.module.css","../src/components/Typography/Label/Label.tsx","../src/components/Typography/Legend/Legend.tsx","../src/components/Typography/Link/Link.tsx","../src/components/Typography/Paragraph/Paragraph.tsx","../src/components/helpers/Input/Input.utils.tsx","../src/hooks/useCombinedRefs.tsx","../src/hooks/useFloatPosition.tsx","../src/hooks/useFocusTrap.tsx","../src/hooks/useIsMounted.ts","../src/hooks/useMountTransition.tsx","../src/hooks/useOnClickOutside.tsx","../src/hooks/useOnKeyDown.tsx","../src/hooks/useReturnFocusOnBlur.ts","../src/hooks/useRoveFocus.tsx","../src/hooks/useScreenSize.tsx","../src/hooks/useWindowResize.tsx","../src/components/helpers/ScreenSize/ScreenSize.utils.tsx","../src/components/helpers/StylelessList/StylelessList.tsx","../src/components/helpers/styling/utils.ts","../src/components/layout/common/layout.module.css","../src/components/layout/common/Responsive.types.tsx","../src/components/layout/common/utils.tsx","../src/components/layout/common/display.module.css","../src/components/layout/ShowHide/ShowHide.tsx","../src/components/layout/Box/Box.tsx","../src/components/layout/Grid/Grid.module.css","../src/components/layout/Grid/Grid.tsx","../src/components/layout/Grid/GridChild.tsx","../src/components/layout/Paper/Paper.module.css","../src/components/layout/Paper/Paper.tsx","../src/components/layout/Stack/VStack/VStack.tsx","../src/components/layout/Stack/HStack/HStack.tsx","../src/components/Accordion/Accordion.module.css","../src/components/helpers/AccordionBase/useAccordion.tsx","../src/components/helpers/AccordionBase/AccordionBase.module.css","../src/components/helpers/AccordionBase/AccordionContext.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Accordion/AccordionHeader.tsx","../src/components/Accordion/AccordionBody.tsx","../src/components/BackLink/BackLink.module.css","../src/components/BackLink/BackLink.tsx","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumbs.module.css","../src/components/Button/Button.module.css","../src/components/ButtonGroup/ButtonGroup.context.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Spinner/Spinner.module.css","../src/components/Button/Button.tsx","../src/components/OverflowMenu/OverflowMenu.tsx","../src/components/OverflowMenu/OverflowMenu.context.tsx","../src/components/OverflowMenu/OverflowMenu.module.css","../src/components/OverflowMenu/components/OverflowMenuButton.tsx","../src/components/OverflowMenu/components/OverflowMenuLink.tsx","../src/components/Divider/Divider.module.css","../src/components/Divider/Divider.tsx","../src/components/OverflowMenu/components/OverflowMenuDivider.tsx","../src/components/OverflowMenu/components/OverflowMenuList.tsx","../src/components/OverflowMenu/components/OverflowMenuSpan.tsx","../src/components/OverflowMenu/components/OverflowMenuListHeader.tsx","../src/components/OverflowMenu/OverflowMenuGroup.tsx","../src/components/ButtonGroup/ButtonGroup.module.css","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Card/Card.module.css","../src/components/Card/Card.tsx","../src/components/Card/CardExpandable/CardExpandable.module.css","../src/components/Card/CardExpandable/CardExpandable.tsx","../src/components/Card/CardExpandable/CardExpandableHeader.tsx","../src/components/Card/CardExpandable/CardExpandableBody.tsx","../src/components/Chip/Chip.tsx","../src/components/Chip/Chip.module.css","../src/components/Chip/ChipGroup.tsx","../src/components/Contrast/Contrast.module.css","../src/components/Contrast/Contrast.tsx","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/SelectionControl.module.css","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/components/InputMessage/InputMessage.module.css","../src/components/InputMessage/InputMessage.tsx","../src/components/CookieBanner/CookieBanner.module.css","../src/components/CookieBanner/CookieBannerCheckbox.tsx","../src/components/CookieBanner/CookieBanner.tsx","../src/components/date-inputs/DatePicker/Calendar/Calendar.tsx","../src/components/date-inputs/DatePicker/Calendar/CalendarGrid.tsx","../src/components/date-inputs/DatePicker/Calendar/CalendarCell.tsx","../src/components/date-inputs/common/DateInput.module.css","../src/components/date-inputs/DatePicker/constants.ts","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/date-inputs/utils/getWeekNumber.ts","../src/components/date-inputs/DatePicker/CalendarPopover.tsx","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/ThemeProvider/ThemeProvider.module.css","../src/components/date-inputs/DatePicker/DatePicker.tsx","../src/components/date-inputs/DatePicker/DateField/DateField.tsx","../src/components/date-inputs/DatePicker/DateField/CalendarButton.tsx","../src/components/date-inputs/DatePicker/DateField/DateSegment.tsx","../src/components/date-inputs/common/DateInput.tsx","../src/components/date-inputs/utils/useFocusManagerRef.ts","../src/components/date-inputs/TimePicker/TimePicker.tsx","../src/components/date-inputs/utils/transform.ts","../src/components/DescriptionList/DescriptionList.module.css","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionListTerm.tsx","../src/components/DescriptionList/DescriptionListDesc.tsx","../src/components/DescriptionList/DescriptionListGroup.tsx","../src/components/DetailList/DetailList.module.css","../src/components/DetailList/DetailList.context.tsx","../src/components/DetailList/DetailList.tsx","../src/components/DetailList/DetailListDesc.tsx","../src/components/DetailList/DetailListRow.tsx","../src/components/DetailList/DetailListTerm.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.module.css","../src/components/Drawer/Drawer.context.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/EmptyContent/EmptyContent.module.css","../src/components/EmptyContent/EmptyContent.tsx","../src/components/FavStar/FavStar.tsx","../src/components/FavStar/FavStar.module.css","../src/hooks/useControllableState.ts","../src/hooks/useCallbackRef.ts","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/Feedback.module.css","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.module.css","../src/components/Feedback/utils.tsx","../src/components/Feedback/CommentComponent.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.module.css","../src/components/Feedback/RatingComponent.tsx","../src/components/Fieldset/Fieldset.module.css","../src/components/Fieldset/Fieldset.tsx","../src/components/Fieldset/FieldsetGroup.tsx","../src/components/FileUploader/FileUploader.tsx","../src/components/FileUploader/ErrorList.tsx","../src/components/FileUploader/FileUploader.module.css","../src/components/FileUploader/File.tsx","../src/components/FileUploader/useFileUploader.ts","../src/components/FileUploader/fileUploaderReducer.ts","../src/components/FileUploader/attr-accept.ts","../src/components/FileUploader/utils.ts","../src/components/Footer/Footer.module.css","../src/components/Footer/Footer.tsx","../src/components/Footer/FooterListHeader.tsx","../src/components/Footer/FooterLogo.tsx","../src/components/Footer/FooterList.tsx","../src/components/Footer/FooterSocialsList.tsx","../src/components/Footer/FooterSocialsGroup.tsx","../src/components/Footer/FooterListGroup.tsx","../src/components/Footer/FooterLeft.tsx","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.module.css","../src/components/InlineButton/InlineButton.module.css","../src/components/InlineButton/InlineButton.tsx","../src/components/InlineEdit/InlineEditTextArea.tsx","../src/components/InlineEdit/InlineEdit.context.tsx","../src/components/InlineEdit/InlineTextArea.tsx","../src/components/InlineEdit/InlineEdit.module.css","../src/components/InlineEdit/InlineEdit.utils.tsx","../src/components/InlineEdit/InlineEditInput.tsx","../src/components/InlineEdit/InlineInput.tsx","../src/components/InternalHeader/InternalHeader.tsx","../src/components/InternalHeader/InternalHeader.module.css","../src/components/InternalHeader/NavigationItem.tsx","../src/components/List/List.module.css","../src/components/List/List.tsx","../src/components/List/ListItem.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.module.css","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.module.css","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/Pagination.module.css","../src/components/Pagination/paginationGenerator.tsx","../src/components/Select/Select.tsx","../src/components/Select/Select.module.css","../src/components/Select/Select.styles.ts","../src/components/Select/SelectComponents.tsx","../src/components/Select/NativeSelect/NativeSelect.tsx","../src/components/Select/NativeSelect/NativeSelect.module.css","../src/components/Select/utils.ts","../src/components/PhoneInput/PhoneInput.tsx","../src/components/PhoneInput/constants.ts","../src/components/PhoneInput/PhoneInput.module.css","../src/components/Popover/Popover.tsx","../src/components/Popover/Popover.module.css","../src/components/Popover/Popover.context.tsx","../src/components/Popover/PopoverGroup.tsx","../src/components/ProgressTracker/ProgressTracker.tsx","../src/components/ProgressTracker/ProgressTracker.context.tsx","../src/components/ProgressTracker/ProgressTracker.module.css","../src/components/ProgressTracker/ProgressTrackerItem.tsx","../src/components/ProgressBar/ProgressBar.tsx","../src/components/ProgressBar/ProgressBar.module.css","../src/components/Search/Search.tsx","../src/components/Search/AutocompleteSearch.context.tsx","../src/components/Search/Search.module.css","../src/components/Search/Search.utils.ts","../src/components/Search/SearchSuggestionItem.tsx","../src/components/Search/SearchSuggestions.tsx","../src/components/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/Skeleton/Skeleton.module.css","../src/components/Skeleton/Skeleton.tsx","../src/components/SkipToContent/SkipToContent.module.css","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.module.css","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/normal/Body.tsx","../src/components/Table/normal/Head.tsx","../src/components/Table/normal/Table.module.css","../src/components/Table/normal/Cell.tsx","../src/components/Table/normal/Foot.tsx","../src/components/Table/normal/Row.tsx","../src/components/Table/normal/SortCell.tsx","../src/components/Table/normal/Table.tsx","../src/components/Table/normal/TableWrapper.tsx","../src/components/Table/normal/index.ts","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/collapsible/index.ts","../src/components/Tabs/AddTabButton.tsx","../src/components/Tabs/Tabs.context.tsx","../src/components/Tabs/Tabs.module.css","../src/components/Tabs/TabWidthContext.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tab.tsx","../src/components/Tabs/TabList.tsx","../src/components/Tabs/TabPanel.tsx","../src/components/Tabs/TabPanels.tsx","../src/components/Tag/Tag.module.css","../src/components/Tag/Tag.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextInput/TextInput.module.css","../src/components/Toggle/Toggle.tsx","../src/components/Toggle/Toggle.module.css","../src/components/ToggleBar/ToggleBar.tsx","../src/components/ToggleBar/ToggleBar.context.tsx","../src/components/ToggleBar/ToggleBar.module.css","../src/components/ToggleBar/ToggleRadio.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.module.css","../src/components/ToggleButton/ToggleButtonGroup.tsx"],"sourcesContent":[".contrast {\n --dds-color-text-body: var(--dds-color-text-on-inverse);\n --dds-color-text-body-subtle: var(--dds-color-text-on-inverse);\n --dds-color-text-link: var(--dds-color-text-on-inverse);\n --dds-color-text-link-visited: var(\n --dds-color-text-action-visited-on-inverse\n );\n --dds-color-text-label: var(--dds-color-text-on-inverse);\n --dds-color-text-helper: var(--dds-color-text-on-inverse);\n --dds-color-text-placeholder: var(--dds-color-text-subtle);\n --dds-color-icon-link: var(--dds-color-text-on-inverse);\n color: var(--dds-color-text-on-inverse);\n}\n\n:where(.a) {\n font: inherit;\n color: var(--dds-color-text-link);\n width: -moz-fit-content;\n width: fit-content;\n text-decoration: underline;\n text-decoration-thickness: max(1px, 0.0625rem);\n text-underline-offset: max(4px, 0.25rem);\n margin: 0;\n\n &:hover {\n text-decoration-color: transparent;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n color 0.2s,\n text-decoration-color 0.2s,\n var(--dds-focus-transition);\n }\n}\n\n:where(.a--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-medium-paragraph-spacing);\n}\n\n:where(.a--external) {\n & > svg {\n display: inline;\n margin: 0.1em 0.1em -0.1em;\n transform: translateY(0.05em);\n vertical-align: baseline;\n }\n}\n\n.a--visited:visited {\n color: var(--dds-color-text-action-visited);\n}\n\n:where(.body-xsmall) {\n margin: 0;\n font: var(--dds-font-body-xsmall);\n letter-spacing: var(--dds-font-body-xsmall-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.body-xsmall--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-xsmall-paragraph-spacing);\n}\n\n:where(.body-small) {\n margin: 0;\n font: var(--dds-font-body-small);\n letter-spacing: var(--dds-font-body-small-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.body-small--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-small-paragraph-spacing);\n}\n\n:where(.body-medium) {\n margin: 0;\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.body-medium--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-medium-paragraph-spacing);\n}\n\n:where(.body-large) {\n margin: 0;\n font: var(--dds-font-body-large);\n letter-spacing: var(--dds-font-body-large-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.body-large--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-large-paragraph-spacing);\n}\n\n:where(.lead-medium) {\n margin: 0;\n font: var(--dds-font-lead-medium);\n letter-spacing: var(--dds-font-lead-medium-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.lead-medium--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-lead-medium-paragraph-spacing);\n}\n\n:where(.heading-xxsmall) {\n margin: 0;\n font: var(--dds-font-heading-xxsmall);\n letter-spacing: var(--dds-font-heading-xxsmall-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-xxsmall--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-xxsmall-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-xsmall) {\n margin: 0;\n font: var(--dds-font-heading-xsmall);\n letter-spacing: var(--dds-font-heading-xsmall-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-xsmall--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-xsmall-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-small) {\n margin: 0;\n font: var(--dds-font-heading-small);\n letter-spacing: var(--dds-font-heading-small-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-small--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-small-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-medium) {\n margin: 0;\n font: var(--dds-font-heading-medium);\n letter-spacing: var(--dds-font-heading-medium-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-medium--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-medium-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-large) {\n margin: 0;\n font: var(--dds-font-heading-large);\n letter-spacing: var(--dds-font-heading-large-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-large--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-large-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-xlarge) {\n margin: 0;\n font: var(--dds-font-heading-xlarge);\n letter-spacing: var(--dds-font-heading-xlarge-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-xlarge--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-xlarge-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-xxlarge) {\n margin: 0;\n font: var(--dds-font-heading-xxlarge);\n letter-spacing: var(--dds-font-heading-xxlarge-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-xxlarge--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-xxlarge-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.label-medium) {\n margin: 0;\n font: var(--dds-font-label-medium);\n letter-spacing: var(--dds-font-label-medium-letter-spacing);\n color: var(--dds-color-text-label);\n}\n\n:where(.label-medium--margins) {\n display: block;\n margin-top: var(--dds-font-label-medium-paragraph-spacing);\n margin-bottom: var(--dds-font-label-medium-paragraph-spacing);\n}\n\n:where(.legend) {\n padding-inline: 0;\n}\n\n:where(.caption--withMargins) {\n display: table-caption;\n}\n\n:where(.bold) {\n font-weight: 600;\n}\n\n:where(.italic) {\n font-style: italic;\n}\n\n:where(.underline) {\n text-decoration: underline;\n}\n\n.text-color--default {\n color: var(--dds-color-text-default);\n}\n\n.text-color--medium {\n color: var(--dds-color-text-medium);\n}\n\n.text-color--subtle {\n color: var(--dds-color-text-subtle);\n}\n\n.text-color--on-inverse {\n color: var(--dds-color-text-on-inverse);\n}\n",":where(.remove-list-styling) {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n:where(.remove-button-styling) {\n background: none;\n border: none;\n padding: 0;\n font: inherit;\n cursor: pointer;\n outline: inherit;\n}\n\n:where(.normalize-button) {\n margin: 0;\n text-transform: none;\n}\n\n.hide-input {\n clip-path: rect(0 0 0 0);\n position: absolute;\n height: 1px;\n width: 1px;\n margin: 0;\n}\n\n.inherit-link-styling {\n color: inherit;\n text-decoration: inherit;\n}\n\n.scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--dds-color-surface-scrollbar) transparent;\n\n /* Safari styling. TODO: fjernes når scrollbar styling blir standardisert */\n &::-webkit-scrollbar {\n width: var(--dds-spacing-x0-5);\n height: var(--dds-spacing-x0-5);\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n background: var(--dds-color-surface-scrollbar);\n }\n}\n\n.scrollable-y {\n overflow-y: auto;\n}\n\n.visibility-transition {\n --dds-visiblity-transition: visibility 0.4s;\n --dds-opacity-transition: opacity 0.2s;\n\n opacity: 0;\n @media (prefers-reduced-motion: no-preference) {\n transition: var(--dds-visiblity-transition), var(--dds-opacity-transition);\n }\n}\n.visibility-transition--open {\n opacity: 1;\n visibility: visible;\n}\n.visibility-transition--closed {\n opacity: 0;\n visibility: hidden;\n}\n\n.visually-hidden {\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\n.invisible {\n visibility: hidden;\n}\n\n.center-absolute {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n}\n\n.center-absolute-y {\n position: absolute;\n\n top: 50%;\n transform: translate(0, -50%);\n}\n\n.center-absolute-x {\n position: absolute;\n left: 50%;\n transform: translate(-50%, 0);\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",".backdrop {\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow-y: auto;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: var(--dds-color-surface-backdrop-default);\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n}\n\n.drawer {\n z-index: var(--dds-zindex-drawer-backdrop);\n}\n\n.modal {\n z-index: var(--dds-zindex-modal-backdrop);\n}\n\n.backdrop--visible {\n opacity: 1;\n}\n\n.backdrop--hidden {\n opacity: 0;\n}\n","import { type Property } from 'csstype';\n\nexport type ColorAlphaFormat = 'hex8' | 'decimal';\n\nexport const convertAlpha = (\n value: number | string,\n typeFrom: ColorAlphaFormat,\n typeTo: ColorAlphaFormat,\n) => {\n if (typeFrom === 'decimal' && typeTo === 'hex8') {\n const numberValue = Number(value);\n\n if (typeof numberValue !== 'number' || numberValue > 1 || numberValue < 0)\n return '';\n const hex8 = Math.round(\n 255 * (Math.round(numberValue * 100) / 100),\n ).toString(16);\n\n return hex8.length === 1 ? '0' + hex8 : hex8;\n }\n if (typeFrom === 'hex8' && typeTo === 'decimal') {\n const regexCheck = new RegExp(/^[0-9a-fA-F]+$/).test(value.toString());\n if (value.toString().length > 2 || regexCheck === false) return '';\n const decimal =\n Math.round((parseInt(value.toString(), 16) / 256) * 100) / 100;\n return decimal;\n }\n};\n\nexport const hexToRGBValues = (hex: string): string => {\n const r = parseInt(hex.slice(1, 3), 16),\n g = parseInt(hex.slice(3, 5), 16),\n b = parseInt(hex.slice(5, 7), 16);\n\n return [r, g, b].join(', ');\n};\n\nexport const hexToRGBA = (hex: string): string => {\n const alpha = hex.length === 9 ? hex.slice(7, 9) : 'ff';\n\n return `rgba(${hexToRGBValues(hex)}, ${convertAlpha(alpha, 'hex8', 'decimal')})`;\n};\n\nconst getRGBValues = (value: string) =>\n value.replace(/\\s/g, '').match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i);\n\nexport const addAlphaToRGB = (rgb: string, alpha: number | string) => {\n const values = getRGBValues(rgb);\n\n return values\n ? `rgba(${values[1]}, ${values[2]}, ${values[3]}, ${alpha})`\n : '';\n};\n\nexport const RGBToHex = (value: string): string => {\n const rgb = getRGBValues(value);\n const alpha = (rgb?.[4] ?? '').trim();\n const hex = rgb\n ? '#' +\n (parseInt(rgb[1]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[2]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[3]) | (1 << 8)).toString(16).slice(1) +\n convertAlpha(alpha, 'decimal', 'hex8')\n : '';\n\n return hex;\n};\n\nexport const changeRGBAAlpha = (value: string, alpha: number): string => {\n if (!value.startsWith('rgba(') || !value.endsWith(')')) {\n return '';\n }\n\n return value.replace(/[\\d.]+\\)$/g, alpha.toString() + ')');\n};\n\nexport const textColors = {\n textOnAction: 'var(--dds-color-text-on-action)',\n textOnInverse: 'var(--dds-color-text-on-inverse)',\n textOnStatusDefault: 'var(--dds-color-text-on-status-default)',\n textOnStatusStrong: 'var(--dds-color-text-on-status-strong)',\n textActionResting: 'var(--dds-color-text-action-resting)',\n textActionHover: 'var(--dds-color-text-action-hover)',\n textActionVisited: 'var(--dds-color-text-action-visited)',\n textDefault: 'var(--dds-color-text-default)',\n textRequiredfield: 'var(--dds-color-text-requiredfield)',\n textSubtle: 'var(--dds-color-text-subtle)',\n textMedium: 'var(--dds-color-text-medium)',\n textOnNotification: 'var(--dds-color-text-on-notification)',\n\n iconOnAction: 'var(--dds-color-icon-on-action)',\n iconOnInfoDefault: 'var(--dds-color-icon-on-info-default)',\n iconOnSuccessDefault: 'var(--dds-color-icon-on-success-default)',\n iconOnDangerDefault: 'var(--dds-color-icon-on-danger-default)',\n iconOnWarningDefault: 'var(--dds-color-icon-on-warning-default)',\n iconOnInfoStrong: 'var(--dds-color-icon-on-info-strong)',\n iconOnSuccessStrong: 'var(--dds-color-icon-on-success-strong)',\n iconOnDangerStrong: 'var(--dds-color-icon-on-danger-strong)',\n iconOnWarningStrong: 'var(--dds-color-icon-on-warning-strong)',\n iconOnInverse: 'var(--dds-color-icon-on-inverse)',\n iconActionResting: 'var(--dds-color-icon-action-resting)',\n iconActionHover: 'var(--dds-color-icon-action-hover)',\n iconDefault: 'var(--dds-color-icon-default)',\n iconSubtle: 'var(--dds-color-icon-subtle)',\n iconMedium: 'var(--dds-color-icon-medium)',\n};\n\nexport type DDSTextColor =\n | 'textOnAction'\n | 'textOnInverse'\n | 'textOnStatusDefault'\n | 'textOnStatusStrong'\n | 'textActionResting'\n | 'textActionHover'\n | 'textActionVisited'\n | 'textDefault'\n | 'textRequiredfield'\n | 'textSubtle'\n | 'textMedium'\n | 'textOnNotification'\n | 'iconOnAction'\n | 'iconOnInfoDefault'\n | 'iconOnSuccessDefault'\n | 'iconOnDangerDefault'\n | 'iconOnWarningDefault'\n | 'iconOnInfoStrong'\n | 'iconOnSuccessStrong'\n | 'iconOnDangerStrong'\n | 'iconOnWarningStrong'\n | 'iconOnInverse'\n | 'iconActionResting'\n | 'iconActionHover'\n | 'iconDefault'\n | 'iconSubtle'\n | 'iconMedium';\n\nexport const textColorsArray = [\n 'textOnAction',\n 'textOnInverse',\n 'textOnStatusDefault',\n 'textOnStatusStrong',\n 'textActionResting',\n 'textActionHover',\n 'textActionVisited',\n 'textDefault',\n 'textRequiredfield',\n 'textSubtle',\n 'textMedium',\n 'textOnNotification',\n\n 'iconOnAction',\n 'iconOnInfoDefault',\n 'iconOnSuccessDefault',\n 'iconOnDangerDefault',\n 'iconOnWarningDefault',\n 'iconOnInfoStrong',\n 'iconOnSuccessStrong',\n 'iconOnDangerStrong',\n 'iconOnWarningStrong',\n 'iconOnInverse',\n 'iconActionResting',\n 'iconActionHover',\n 'iconDefault',\n 'iconSubtle',\n 'iconMedium',\n];\n\nexport type TextColor = DDSTextColor | Property.Color;\n\nexport function isTextColor(color: string): color is DDSTextColor {\n return textColorsArray.indexOf(color) !== -1;\n}\n\nexport const getTextColor = (color: TextColor): TextColor => {\n if (isTextColor(color)) return textColors[color];\n return color;\n};\n","import { type Callback } from '../types';\n\nexport const combineHandlers = <T,>(\n handler1?: Callback<T>,\n handler2?: Callback<T>,\n): Callback<T> => {\n const callback: Callback<T> = event => {\n handler1 && handler1(event);\n handler2 && handler2(event);\n };\n return callback;\n};\n","/**\n * Join class names together.\n * Will filter out all falsy values.\n */\nexport function cn(...classNames: Array<unknown>) {\n return classNames.filter(Boolean).join(' ');\n}\n\nexport function convertCamelToHyphen(value: string) {\n return value\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/([a-z])([0-9])/g, '$1-$2')\n .toLowerCase();\n}\n\nexport const defaultPortalTarget = () =>\n document.getElementsByClassName('dds-themed')[0] as HTMLElement;\n","import { type RefObject } from 'react';\n\nexport function getFocusableElements<T extends HTMLElement>(\n elementRef: RefObject<T | null>,\n): NodeListOf<HTMLElement> | [] {\n return elementRef && elementRef.current\n ? elementRef.current.querySelectorAll(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n : [];\n}\n","import { type InputSize } from '../components/helpers';\nimport { type IconSize } from '../components/Icon';\n\nexport const getFormInputIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'medium';\n case 'xsmall':\n return 'small';\n }\n};\n","export const derivativeIdGenerator = (prefix: string, suffix: string): string =>\n `${prefix}-${suffix}`;\n\nexport const spaceSeparatedIdListGenerator = (\n values: Array<string | undefined>,\n): string | undefined => {\n const filtered = values.filter(Boolean);\n\n return filtered.length > 0 ? filtered.join(' ') : undefined;\n};\n","export const isEmpty = (obj: object) =>\n Object.keys(obj).length === 0 && obj.constructor === Object;\n","import {\n type ChangeEvent,\n type ChangeEventHandler,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEvent,\n type MouseEventHandler,\n} from 'react';\n\n// Handlers ved readonly, da det ikke støttes ut av boksen for enkelte inputelementer (select, radio, checkbox)\n\nexport const readOnlyMouseDownHandler = <T,>(\n readOnly?: boolean,\n onMouseDown?: MouseEventHandler<T>,\n) => {\n return (evt: MouseEvent<T>) => {\n // NOTE: stopper ikke klikk\n if (readOnly) {\n evt.preventDefault();\n // gi fokus til elementet per standard readonly oppførsel\n (evt.target as HTMLElement).focus();\n } else onMouseDown && onMouseDown(evt);\n };\n};\n\ntype ReadOnlyKeyDownHandlerType = 'select' | 'selectionControl';\n\nexport const readOnlyKeyDownHandler = <T,>(\n type: ReadOnlyKeyDownHandlerType,\n readOnly?: boolean,\n onKeyDown?: KeyboardEventHandler<T>,\n) => {\n return (evt: KeyboardEvent<T>) => {\n // stopper relevant tastaturinput, unntatt Tab, per standard readonly oppførsel\n if (readOnly) {\n if (\n type === 'select' &&\n ['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', ' '].includes(\n evt.key,\n )\n ) {\n evt.preventDefault();\n } else if (type === 'selectionControl' && evt.key === ' ') {\n evt.preventDefault();\n }\n } else onKeyDown && onKeyDown(evt);\n };\n};\n\nexport const readOnlyChangeHandler = <T,>(\n readOnly?: boolean,\n onChange?: ChangeEventHandler<T>,\n) => {\n return (evt: ChangeEvent<T>) => {\n if (readOnly) {\n return;\n }\n onChange && onChange(evt);\n };\n};\n\nexport const readOnlyClickHandler = <T,>(\n readOnly?: boolean,\n onClick?: MouseEventHandler<T>,\n) => {\n return (evt: MouseEvent<T>) => {\n if (readOnly) {\n evt.preventDefault();\n return;\n }\n onClick && onClick(evt);\n };\n};\n","export function escapeRegexCharacters(text: string) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport function searchFilter(text: string, query: string): boolean {\n // Søkeordet er enten først i teksten, eller så har det mellomrom, bindestrek eller start-parentes før seg.\n const searchFilterRegex = new RegExp(\n `(?:^|[\\\\s-(])${escapeRegexCharacters(query.toLowerCase())}`,\n );\n return searchFilterRegex.test(text.toLowerCase());\n}\n",".wrapper {\n color: var(--dds-color-text-requiredfield);\n}\n","import styles from './RequiredMarker.module.css';\n\nexport const RequiredMarker = () => <span className={styles.wrapper}>*</span>;\n","import { useEffect, useState } from 'react';\n\nimport { type Nullable } from '../types';\n\nexport function useElementHeight(\n element: HTMLDivElement | null,\n): number | null {\n const [height, setHeight] = useState<Nullable<number>>(null);\n\n useEffect(() => {\n if (!element) return;\n\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.offsetHeight);\n });\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [element]);\n\n return height;\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Backdrop.module.css';\nimport { cn } from '../../../utils';\n\ntype BackdropProps = {\n isMounted?: boolean;\n zIndex: 'drawer' | 'modal';\n} & Pick<ComponentPropsWithRef<'div'>, 'children' | 'onClick' | 'ref'>;\n\nexport const Backdrop = ({ isMounted, zIndex, ...props }: BackdropProps) => {\n const isMountedCn = isMounted ? 'visible' : 'hidden';\n return (\n <div\n className={cn(\n styles.backdrop,\n styles[zIndex],\n styles[`backdrop--${isMountedCn}`],\n )}\n {...props}\n />\n );\n};\n\nBackdrop.displayName = 'Backdrop';\n",".svg {\n display: inline-block;\n flex-shrink: 0;\n position: relative;\n text-align: center;\n vertical-align: middle;\n --dds-chevron-transition: transform 0.2s linear;\n}\n\n.group {\n transition: var(--dds-chevron-transition);\n}\n\n.group--up {\n transform: translateY(3px);\n}\n\n.group--down {\n transform: translateY(0);\n}\n\n.left {\n transition: var(--dds-chevron-transition);\n transform-origin: 1px 1px;\n}\n\n.left--up {\n transform: rotate(-90deg) translateY(0);\n}\n.left--down {\n transform: rotate(0) translateY(0);\n}\n\n.right {\n transition: var(--dds-chevron-transition);\n transform-origin: 7px 1px;\n}\n\n.right--up {\n transform: rotate(90deg) translateY(0);\n}\n.right--down {\n transform: rotate(0) translateY(0);\n}\n","import { type Property } from 'csstype';\n\nimport styles from './Chevron.module.css';\nimport { cn } from '../../../utils';\n\nconst svgChevronLeftPath =\n 'M 1 0 L 5 4 C 5 4 5 4 5 4 L 4 5 C 4 5 4 5 4 5 C 4 5 4 5 4 5 L 0 1 C 0 1 0 1 0 1 L 1 0 C 1 0 1 0 1 0 C 1 0 1 0 1 0 L 1 0 Z';\nconst svgChevronRightPath =\n 'M 3 4 L 7 0 L 8 1 C 8 1 8 1 8 1 L 4 5 L 3 4 C 3 4 3 4 3 4 L 3 4 Z';\n\ninterface SvgChevronProps {\n isUp?: boolean;\n height?: Property.Height;\n width?: Property.Width;\n}\n\nexport const AnimatedChevronUpDown = ({\n isUp,\n height = '5px',\n width = '8px',\n}: SvgChevronProps) => {\n const stateCn = isUp ? 'up' : 'down';\n return (\n <svg\n viewBox=\"0 0 8 5\"\n fill=\"currentColor\"\n className={cn(styles.svg)}\n style={{ height, width }}\n >\n <g className={cn(styles.group, styles[`group--${stateCn}`])}>\n <path\n d={svgChevronLeftPath}\n className={cn(styles.left, styles[`left--${stateCn}`])}\n />\n <path\n d={svgChevronRightPath}\n className={cn(styles.right, styles[`right--${stateCn}`])}\n />\n </g>\n </svg>\n );\n};\n","import { type ElementType } from 'react';\n\nimport { type PropsOfWithRef } from '../../../types';\n\nexport type PolymorphicProps<T extends ElementType> = PropsOfWithRef<T>;\n\nexport const ElementAs = <T extends ElementType>({\n as = 'div',\n ref,\n children,\n ...props\n}: PolymorphicProps<T>) => {\n const Component = as;\n return (\n <Component ref={ref} {...props}>\n {children}\n </Component>\n );\n};\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../../utils';\nimport utilStyles from '../styling/utilStyles.module.css';\n\nexport const HiddenInput = ({\n className,\n ...rest\n}: ComponentPropsWithRef<'input'>) => (\n <input className={cn(className, utilStyles['hide-input'])} {...rest} />\n);\n",".container {\n position: relative;\n}\n\n.input-group {\n position: relative;\n}\n\n:where(.input) {\n position: relative;\n color: var(--dds-color-text-default);\n border: 1px solid var(--dds-color-border-default);\n background-color: var(--dds-color-surface-default);\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1)\n var(--dds-spacing-x0-75) var(--dds-spacing-x0-75);\n border-radius: var(--dds-border-radius-input);\n margin: 0;\n box-sizing: border-box;\n box-shadow: none;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s,\n background-color 0.2s,\n var(--dds-focus-transition);\n }\n &[type='text'],\n &[type='password'],\n &[type='number'],\n &[type='tel'],\n &[type='date'],\n &[type='url'],\n &[type='email'],\n &[type='search'],\n &[type='datetime-local'] {\n -webkit-appearance: none;\n }\n\n &:hover:enabled:-moz-read-write:not(:focus-visible):not(.disabled):not(\n .read-only\n ) {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: 0 0 0 1px var(--dds-color-border-action-hover);\n }\n\n &:hover:enabled:read-write:not(:focus-visible):not(.disabled):not(\n .read-only\n ) {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: 0 0 0 1px var(--dds-color-border-action-hover);\n }\n}\n\n:where(.input--stateful) {\n -webkit-appearance: textfield;\n\n &:enabled:-moz-read-only {\n box-shadow: none;\n border: 1px solid var(--dds-color-border-default);\n background-color: var(--dds-color-surface-field-disabled);\n color: var(--dds-color-text-medium);\n cursor: default;\n }\n\n &:not(.disabled).read-only,\n &:enabled:read-only {\n box-shadow: none;\n border: 1px solid var(--dds-color-border-default);\n background-color: var(--dds-color-surface-field-disabled);\n color: var(--dds-color-text-medium);\n cursor: default;\n }\n\n &.disabled,\n &:disabled {\n box-shadow: none;\n border: 1px solid var(--dds-color-border-subtle);\n background-color: var(--dds-color-surface-field-disabled);\n color: var(--dds-color-text-subtle);\n cursor: not-allowed;\n }\n}\n\n:where(.input--hover:hover) {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: 0 0 0 1px var(--dds-color-border-action-hover);\n}\n\n:where(.input--stateful-danger) {\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-color-border-danger);\n\n &:hover:enabled:-moz-read-write:not(:focus-within) {\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-color-border-danger);\n }\n\n &:not(.disabled):hover:not(:focus-within),\n &:hover:enabled:read-write:not(:focus-within) {\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-color-border-danger);\n }\n\n &:focus-within:enabled:-moz-read-write, &:hover:focus-within:enabled:-moz-read-write, &:active:enabled:-moz-read-write {\n border-color: 1px solid var(--dds-color-border-default);\n }\n\n &:not(.disabled):focus-within,\n &:focus-within:enabled:read-write,\n &:hover:focus-within:enabled:read-write,\n &:active:enabled:read-write {\n border-color: 1px solid var(--dds-color-border-default);\n }\n}\n\n:where(.input--medium) {\n padding: var(--dds-spacing-x0-75);\n}\n\n:where(.input--small) {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x0-75);\n}\n\n:where(.input--xsmall) {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n}\n\n:where(.input--with-affix) {\n gap: var(--dds-spacing-x1);\n}\n\n:where(.label) {\n display: block;\n}\n\n:where(.char-counter) {\n margin-left: auto;\n}\n\n:where(.input-group__absolute-element) {\n position: absolute;\n top: 50%;\n transform: translate(0, -50%);\n z-index: var(--dds-zindex-absolute-element);\n color: var(--dds-color-icon-default);\n}\n",".focused,\n.focusable:focus-visible,\n.focusable-within:focus-within,\n.has-focusable-input:has(input:focus-visible),\n.focusable-sibling:focus-visible + .focus-styled-sibling {\n outline: var(--dds-focus-outline);\n outline-offset: var(--dds-focus-outline-offset);\n box-shadow: var(--dds-focus-box-shadow);\n}\n\n.focusable--inset:focus-visible {\n outline: var(--dds-focus-outline);\n outline-offset: var(--dds-focus-outline-inset);\n box-shadow: var(--dds-focus-box-shadow);\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Input.module.css';\nimport { type StatefulInputProps } from './Input.types';\nimport { cn } from '../../../utils';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\nimport { focusable } from '../styling/focus.module.css';\n\nexport const Input = ({\n className,\n ...rest\n}: ComponentPropsWithRef<'input'>) => (\n <input className={cn(className, styles.input, focusable)} {...rest} />\n);\n\nInput.displayName = 'Input';\n\nexport const StatefulInput = ({\n className,\n componentSize = 'medium',\n hasErrorMessage,\n ...rest\n}: StatefulInputProps) => (\n <Input\n className={cn(\n className,\n styles['input--stateful'],\n styles[`input--${componentSize}`],\n typographyStyles[`body-${componentSize}`],\n hasErrorMessage && styles['input--stateful-danger'],\n )}\n {...rest}\n />\n);\n\nStatefulInput.displayName = 'StatefulInput';\n","import { useId } from 'react';\n\nimport styles from './Input.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../../types';\nimport { cn } from '../../../utils';\nimport { Typography } from '../../Typography';\n\ntype Props = BaseComponentProps<\n HTMLElement,\n {\n current: number;\n max: number;\n }\n>;\n\nexport function 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 <Typography\n {...getBaseHTMLProps(\n uniqueId,\n cn(className, styles['char-counter']),\n htmlProps,\n rest,\n )}\n as=\"div\"\n typographyType=\"bodyXsmall\"\n color=\"textSubtle\"\n aria-label={`${current} av ${max} tegn skrevet`}\n >\n {current}/{max}\n </Typography>\n );\n}\n\nexport const renderCharCounter = (\n id: string,\n isShown: boolean,\n textLength: number,\n maxLength?: number,\n) => {\n if (!!maxLength && Number.isInteger(maxLength) && maxLength > 0 && isShown)\n return <CharCounter id={id} max={maxLength} current={textLength} />;\n};\n","import {\n type CSSProperties,\n type ComponentPropsWithRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n} from 'react';\n\nimport { cn } from '../../../dds-components/src/utils/dom';\n\n/**\n * Basetype for props som eksponeres til konsumenter av designsystemet.\n * Lager en intersection-type med props som sendes inn og `id` og `htmlProps`\n * slik at man kan ha `HTMLAttributes`-props på komponenter som eksponeres\n * av designsystemet. Se også {@link BaseComponentPropsWithChildren} og\n * {@link getBaseHTMLProps}.\n *\n * @template TElement Element-type som genereres av komponenten.\n * @template TOtherProps Andre props komponenten skal eksponere til konsumenter.\n * @template THTMLAttributesProps Standard `HTMLAttributes<T>` men kan overstyres for f.eks knapper hvis man trenger en annen basetype for `htmlProps`.\n */\nexport type BaseComponentProps<\n TElement extends Element,\n TOtherProps extends object = object,\n THTMLAttributesProps extends\n HTMLAttributes<TElement> = HTMLAttributes<TElement>,\n> = Omit<THTMLAttributesProps, 'id' | 'className'> &\n TOtherProps & {\n /**Native HTML-attributter som vil settes på elementet som genereres. Untatt `id`, `className` (og eventuelle andre attributter spesifisert i dokumentasjonen) som settes på toppnivå. */\n htmlProps?: THTMLAttributesProps;\n /**Ref til komponenten. */\n ref?: Ref<TElement>;\n /**HTML id. */\n id?: string;\n /**Klassenavn. */\n className?: string;\n };\n\n/**\n * Basetype for polymorfe props som eksponeres til konsumenter av designsystemet.\n * Lager en intersection-type med props som sendes inn og `id` og `htmlProps`\n * slik at man kan ha `ComponentPropsWithRef`-props på komponenter som eksponeres\n * av designsystemet.\n *\n * @template E `ElemenType` komponenten returnerer.\n * @template TOtherProps Andre props komponenten skal eksponere til konsumenter.\n * @template TComponentProps Standard `ComponentPropsWithoutRef<E>` som kan overstyres hvis man trenger en annen basetype for `htmlProps`, f.eks. for å støtte ofte brukte attributter på roten.\n */\nexport type PolymorphicBaseComponentProps<\n E extends ElementType,\n TOtherProps extends object = object,\n TComponentProps extends object = ComponentPropsWithoutRef<E>,\n> = Omit<TComponentProps, 'id' | 'className' | 'style' | 'ref'> &\n TOtherProps & {\n /**HTML- eller React-element som returneres. */\n as?: E;\n /**Ref til komponenten. */\n ref?: ComponentPropsWithRef<E>['ref'];\n /**Native HTML-attributter som vil settes på elementet som genereres. Untatt `id`, `className` og `style` (og eventuelle andre attributter spesifisert i dokumentasjonen) som settes på toppnivå. */\n htmlProps?: TComponentProps;\n /**HTML id. */\n id?: string;\n /**Klassenavn. */\n className?: string;\n /**Inline style. */\n style?: CSSProperties;\n };\n\n/**\n * Utvidelese av {@link BaseComponentProps} med prop for `children`.\n *\n * {@link BaseComponentProps}\n */\nexport type BaseComponentPropsWithChildren<\n T extends Element,\n TProps extends object = object,\n THTMLProps extends HTMLAttributes<T> = HTMLAttributes<T>,\n> = BaseComponentProps<\n T,\n TProps & {\n /**Barn. */\n children?: ReactNode;\n },\n THTMLProps\n>;\n\ninterface GetBaseHTMLProps {\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n className: HTMLAttributes<T>['className'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n}\n\n/**\n * Slår sammen id, className, htmlProps og unknownProps til ett objekt\n * som kan spreades som baseprops for en komponent. `unknownProps` er\n * med for å sikre at aria- og data- attributter blir spreadet, alle\n * komponenter må derfor ta hensyn til `...rest` når de leser props.\n *\n * Typisk bruk:\n * ```\n * const Props = BaseComponentProps<HTMLElement, {\n * propA: string,\n * propB: string,\n * }>\n *\n * const MyComponent = (props: Props) => {\n * const { propA, propB, id, className, htmlProps, ...rest } = props;\n *\n * const wrapperProps = getBaseHTMLProps(id, className, htmlProps, rest)\n *\n * return <div {...wrapperProps}>innhold</div>\n * }\n * ```\n * @param id id fra props til komponenten.\n * @param className className for komponenten.\n * @param htmlProps htmlProps fra komponenten.\n * @param unknownProps andre ukjente props som skal spreades, kommer typisk fra `...rest` når man leser props til komponenten.\n * @returns Objekt med alle argumentene som kan spreades.\n *\n * Kan også kalles uten `className`-parameteret. Oppførselen er lik.\n */\nexport const getBaseHTMLProps: GetBaseHTMLProps = <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlPropsOrClassName:\n | HTMLAttributes<T>['className']\n | (HTMLAttributes<T> | undefined),\n htmlPropsOrUnknownProps: (HTMLAttributes<T> | undefined) | object,\n unknownPropsOrUndefined?: object,\n): HTMLAttributes<T> & object => {\n if (\n typeof htmlPropsOrClassName === 'string' ||\n unknownPropsOrUndefined != undefined\n ) {\n const {\n id: idFromHtmlProps,\n className: classNameFromHtmlProps,\n ...restHTMLProps\n } = (htmlPropsOrUnknownProps as HTMLAttributes<T> | undefined) ?? {};\n\n const propId = id ?? idFromHtmlProps;\n\n const propClassName = cn(\n htmlPropsOrClassName as string | undefined,\n classNameFromHtmlProps,\n );\n\n return {\n ...unknownPropsOrUndefined,\n ...restHTMLProps,\n ...(propClassName && { className: propClassName }),\n ...(propId && { id: propId }),\n };\n } else {\n const {\n id: htmlPropsId,\n className: htmlPropsClassName,\n ...restHTMLProps\n } = htmlPropsOrClassName ?? {};\n\n const propId = id ?? htmlPropsId;\n\n return {\n ...htmlPropsOrUnknownProps,\n ...restHTMLProps,\n ...(htmlPropsClassName && { className: htmlPropsClassName }),\n ...(propId && { id: propId }),\n };\n }\n};\n","export const BORDER_RADII = [\n 'button',\n 'input',\n 'surface',\n 'chip',\n 'rounded',\n '0',\n] as const;\n\nexport const ELEVATIONS = [1, 2, 3, 4] as const;\n\nexport const BORDER_COLORS = [\n 'border-default',\n 'border-subtle',\n 'border-inverse',\n 'border-action-default',\n 'border-action-hover',\n 'border-success',\n 'border-warning',\n 'border-danger',\n 'border-info',\n 'border-on-action',\n] as const;\n\nconst BACKGROUNDS = [\n 'surface-subtle',\n 'surface-medium',\n 'surface-inverse-default',\n 'surface-danger-default',\n 'surface-danger-strong',\n 'surface-success-default',\n 'surface-success-strong',\n 'surface-warning-default',\n 'surface-warning-strong',\n 'surface-info-default',\n 'surface-info-strong',\n 'surface-paper-default',\n 'surface-notification',\n 'brand-primary-default',\n 'brand-primary-subtle',\n 'brand-primary-medium',\n 'brand-primary-strong',\n 'brand-secondary-default',\n 'brand-secondary-subtle',\n 'brand-secondary-medium',\n 'brand-secondary-strong',\n 'brand-tertiary-default',\n 'brand-tertiary-subtle',\n 'brand-tertiary-medium',\n 'brand-tertiary-strong',\n] as const;\n\nexport type BorderRadius = (typeof BORDER_RADII)[number];\nexport type Elevation = (typeof ELEVATIONS)[number];\nexport type BorderColor = (typeof BORDER_COLORS)[number];\nexport type PaperBackground = (typeof BACKGROUNDS)[number];\n\nexport const isPaperBackground = (value: unknown): value is PaperBackground => {\n return (\n typeof value === 'string' && BACKGROUNDS.includes(value as PaperBackground)\n );\n};\n\nexport const isBorderColor = (value: unknown): value is BorderColor => {\n return (\n typeof value === 'string' && BORDER_COLORS.includes(value as BorderColor)\n );\n};\n\nexport const isBorderRadius = (value: unknown): value is BorderRadius => {\n return (\n typeof value === 'string' && BORDER_RADII.includes(value as BorderRadius)\n );\n};\n\nexport const isElevation = (value: unknown): value is Elevation => {\n return typeof value === 'number' && ELEVATIONS.includes(value as Elevation);\n};\n",".wrapper {\n max-width: 100%;\n}\n\n.inner {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n","import type { ComponentProps } from 'react';\n\nimport styles from './TextOverflowEllipsis.module.css';\nimport { cn } from '../../../../utils/dom';\n\nexport function TextOverflowEllipsisWrapper({\n className,\n ...rest\n}: ComponentProps<'span'>) {\n return <span {...rest} className={cn(className, styles.wrapper)} />;\n}\n\nexport function TextOverflowEllipsisInner({\n className,\n ...rest\n}: ComponentProps<'span'>) {\n return <span {...rest} className={cn(className, styles.inner)} />;\n}\n",".container {\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n}\n","import { type ElementType } from 'react';\n\nimport {\n type HyphenTypographyType,\n type InlineElement,\n type TypographyBodyType,\n type TypographyHeadingType,\n type TypographyType,\n} from './Typography.types';\nimport { convertCamelToHyphen } from '../../../utils';\n\nexport const defaultTypographyType: TypographyBodyType = 'bodyMedium';\nexport const defaultTypographyTypeClassName: HyphenTypographyType =\n 'body-medium';\n\nexport const getElementType = (element: TypographyType): ElementType => {\n switch (element) {\n case 'a':\n return 'a';\n case 'headingXxsmall':\n return 'h6';\n case 'headingXsmall':\n return 'h5';\n case 'headingSmall':\n return 'h4';\n case 'headingMedium':\n return 'h3';\n case 'headingLarge':\n return 'h2';\n case 'headingXlarge':\n case 'headingXxlarge':\n return 'h1';\n case 'labelMedium':\n return 'label';\n case 'bodyXsmall':\n case 'bodySmall':\n case 'bodyMedium':\n case 'bodyLarge':\n case 'leadMedium':\n default:\n return 'p';\n }\n};\n\nexport const isHeading = (\n type: TypographyType,\n): type is TypographyHeadingType => {\n return true;\n};\n\nexport const isLegend = (as: ElementType): boolean => {\n return as === 'legend';\n};\n\nexport const isCaption = (as: ElementType): boolean => {\n return as === 'caption';\n};\n\nexport const inlineElements: Array<ElementType> = [\n 'a',\n 'abbr',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'br',\n 'button',\n 'canvas',\n 'cite',\n 'code',\n 'data',\n 'datalist',\n 'del',\n 'dfn',\n 'em',\n 'embed',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'map',\n 'mark',\n 'meter',\n 'noscript',\n 'object',\n 'output',\n 'picture',\n 'progress',\n 'q',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'select',\n 'slot',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'svg',\n 'template',\n 'textarea',\n 'time',\n 'u',\n 'var',\n 'video',\n 'wbr',\n];\n\nexport const isInlineElement = (as: ElementType): as is InlineElement =>\n inlineElements.indexOf(as) !== -1;\n\nexport function getTypographyCn(value: TypographyType): HyphenTypographyType {\n return convertCamelToHyphen(value) as HyphenTypographyType;\n}\n","import { type SvgIcon } from './utils';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { type TextColor } from '../../utils';\n\nconst getSize = (iconSize: IconSize): string => {\n switch (iconSize) {\n case 'small':\n return 'var(--dds-icon-size-small)';\n case 'medium':\n return 'var(--dds-icon-size-medium)';\n case 'large':\n return 'var(--dds-icon-size-large)';\n case 'inherit':\n return '1em';\n default:\n return 'var(--dds-icon-size-medium)';\n }\n};\n\nexport type IconSize = 'small' | 'medium' | 'large' | 'inherit';\n\nexport type IconProps = BaseComponentProps<\n SVGSVGElement,\n {\n /**Ikonet importert fra `@norges-domstoler/dds-components`. */\n icon: SvgIcon;\n /**Størrelsen på ikonet.\n * @default \"medium\"\n */\n iconSize?: IconSize;\n /**Fargen på ikonet.\n * @default \"currentcolor\"\n */\n color?: TextColor;\n }\n>;\n\nexport function Icon(props: IconProps) {\n const {\n id,\n iconSize = 'medium',\n color = 'currentcolor',\n icon,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const { title, 'aria-hidden': ariaHidden = true } = htmlProps;\n\n const size = getSize(iconSize);\n\n return icon({\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n title,\n height: size,\n width: size,\n fill: color,\n 'aria-hidden': ariaHidden,\n });\n}\n\nIcon.displayName = 'Icon';\n",".svg {\n display: inline-block;\n transition: fill 0.2s;\n flex-shrink: 0;\n}\n","import { type SvgProps } from './types';\nimport { cn, getTextColor } from '../../../utils';\nimport styles from '../Icon.module.css';\n\nconst size = 24;\nconst sizeCSS = 'var(--dds-icon-size-medium)';\n\nexport function SvgWrapper({\n height,\n width,\n fill = 'currentColor',\n className,\n title,\n children,\n ...props\n}: SvgProps) {\n return (\n <svg\n {...props}\n fill={getTextColor(fill)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${size} ${size}`}\n className={cn(className, styles.svg)}\n style={{\n height: height ? height : sizeCSS,\n width: width ? width : sizeCSS,\n }}\n >\n {title && <title>{title}</title>}\n {children}\n </svg>\n );\n}\n","export * from './addressShielded';\nexport * from './agreement';\nexport * from './apps';\nexport * from './archive';\nexport * from './arrowDown';\nexport * from './arrowLeft';\nexport * from './arrowRight';\nexport * from './arrowUp';\nexport * from './attachment';\nexport * from './block';\nexport * from './book';\nexport * from './build';\nexport * from './buildCircled';\nexport * from './calendar';\nexport * from './calendarMonth';\nexport * from './calendarViewDay';\nexport * from './calendarViewMonth';\nexport * from './calendarViewWeek';\nexport * from './call';\nexport * from './caring';\nexport * from './chat';\nexport * from './check';\nexport * from './checkCircled';\nexport * from './checklist';\nexport * from './chevronDown';\nexport * from './chevronFirst';\nexport * from './chevronLargeLeft';\nexport * from './chevronLargeRight';\nexport * from './chevronLast';\nexport * from './chevronLeft';\nexport * from './chevronRight';\nexport * from './chevronUp';\nexport * from './close';\nexport * from './closeSmall';\nexport * from './closeCircled';\nexport * from './cloud';\nexport * from './collapse';\nexport * from './comment';\nexport * from './copy';\nexport * from './court';\nexport * from './dateRange';\nexport * from './deaths';\nexport * from './doubleChevronLeft';\nexport * from './doubleChevronRight';\nexport * from './download';\nexport * from './downloadDone';\nexport * from './dragHandle';\nexport * from './edit';\nexport * from './error';\nexport * from './exclaim';\nexport * from './expand';\nexport * from './facebook';\nexport * from './family';\nexport * from './feedback';\nexport * from './file';\nexport * from './fileAdd';\nexport * from './fileShielded';\nexport * from './fileText';\nexport * from './filter';\nexport * from './filterList';\nexport * from './filterListOff';\nexport * from './filterOff';\nexport * from './findInPage';\nexport * from './flickr';\nexport * from './folder';\nexport * from './folderAdd';\nexport * from './folderShielded';\nexport * from './fullsceenExit';\nexport * from './fullscreen';\nexport * from './gavel';\nexport * from './guardian';\nexport * from './help';\nexport * from './helpFilled';\nexport * from './home';\nexport * from './hourglassBottom';\nexport * from './hourglassDisabled';\nexport * from './hourglassEmpty';\nexport * from './hourglassFull';\nexport * from './hourglassTop';\nexport * from './image';\nexport * from './info';\nexport * from './instagram';\nexport * from './jordskifterett';\nexport * from './jordskiftesak';\nexport * from './key';\nexport * from './lagmannsrett';\nexport * from './language';\nexport * from './link';\nexport * from './linkedIn';\nexport * from './linkOff';\nexport * from './list';\nexport * from './listAlt';\nexport * from './location';\nexport * from './lock';\nexport * from './lockOpen';\nexport * from './login';\nexport * from './logout';\nexport * from './mail';\nexport * from './mailOpen';\nexport * from './menu';\nexport * from './minus';\nexport * from './minusCircled';\nexport * from './moreHorizontal';\nexport * from './moreVertical';\nexport * from './notarial';\nexport * from './notifications';\nexport * from './notificationsOff';\nexport * from './onlineMeeting';\nexport * from './openExternal';\nexport * from './payout';\nexport * from './pdf';\nexport * from './person';\nexport * from './personAdd';\nexport * from './personShielded';\nexport * from './pin';\nexport * from './plus';\nexport * from './plusCircled';\nexport * from './powerOfAttorney';\nexport * from './print';\nexport * from './property';\nexport * from './publish';\nexport * from './questionAnswer';\nexport * from './receipt';\nexport * from './redo';\nexport * from './refresh';\nexport * from './replay';\nexport * from './search';\nexport * from './settings';\nexport * from './sms';\nexport * from './star';\nexport * from './starFilled';\nexport * from './starHalfFilled';\nexport * from './sync';\nexport * from './thumbdown';\nexport * from './thumbdownFilled';\nexport * from './thumbup';\nexport * from './thumbupFilled';\nexport * from './time';\nexport * from './tingrett';\nexport * from './tip';\nexport * from './trash';\nexport * from './undo';\nexport * from './unfoldLess';\nexport * from './unfoldMore';\nexport * from './upload';\nexport * from './visibilityOff';\nexport * from './visibilityOn';\nexport * from './warning';\nexport * from './webex';\nexport * from './x';\nexport * from './zoomIn';\nexport * from './zoomOut';\nexport * from './barChart';\nexport * from './barChartBoxed';\nexport * from './lineChart';\nexport * from './trendingUp';\nexport * from './trendingDown';\nexport * from './libraryAdd';\nexport * from './helpSimple';\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function AddressShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 4V10H16.7889L12 5.69L7 10.19V18H9V12H14V14H11V20H5V12H2L12 3L16 6.6V4H19Z\" />\n <path d=\"M10 10H14C14 8.9 13.1 8 12 8C10.9 8 10 8.9 10 10Z\" />\n <path d=\"M20 15V14C20 12.9 19.1 12 18 12C16.9 12 16 12.9 16 14V15C15.45 15 15 15.45 15 16V19C15 19.55 15.45 20 16 20H20C20.55 20 21 19.55 21 19V16C21 15.45 20.55 15 20 15ZM17 15V14C17 13.45 17.45 13 18 13C18.55 13 19 13.45 19 14V15H17Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function AgreementIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.22 19.85c-.18.18-.5.21-.71 0-.18-.18-.21-.5 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.19.2-.51.19-.71 0-.21-.21-.18-.53 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.19-.19-.51 0-.71l3.39-3.39-1.42-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.2-.19-.51 0-.71L9.52 8.4l1.87 1.86c.95.95 2.59.94 3.54 0 .98-.98.98-2.56 0-3.54l-1.86-1.86.28-.28c.78-.78 2.05-.78 2.83 0l4.24 4.24c.78.78.78 2.05 0 2.83l-8.2 8.2zm9.61-6.78c1.56-1.56 1.56-4.09 0-5.66l-4.24-4.24c-1.56-1.56-4.09-1.56-5.66 0l-.28.28-.28-.28c-1.56-1.56-4.09-1.56-5.66 0L2.17 6.71C.75 8.13.62 10.34 1.77 11.9l1.45-1.45c-.39-.75-.26-1.7.37-2.33l3.54-3.54c.78-.78 2.05-.78 2.83 0l3.56 3.56c.18.18.21.5 0 .71-.21.21-.53.18-.71 0L9.52 5.57l-5.8 5.79c-.98.97-.98 2.56 0 3.54.39.39.89.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.54.31 1.03.7 1.42.47.47 1.1.73 1.77.73.67 0 1.3-.26 1.77-.73l8.21-8.19z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function AppsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ArchiveIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1 0-2 .9-2 2v3.01c0 .72.43 1.34 1 1.69V20c0 1.1 1.1 2 2 2h14c.9 0 2-.9 2-2V8.7c.57-.35 1-.97 1-1.69V4c0-1.1-1-2-2-2zm-1 18H5V9h14v11zm1-13H4V4h16v3z\" />\n <path d=\"M9 12h6v2H9v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function ArrowDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ArrowLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ArrowRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ArrowUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function AttachmentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 115 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 005 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function BlockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8 0 1.853-.63 3.55-1.682 4.904L7.096 5.682A7.965 7.965 0 0112 4zM5.682 7.096l11.222 11.222A7.965 7.965 0 0112 20c-4.43 0-8-3.57-8-8 0-1.853.63-3.55 1.682-4.904z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function BookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5-1.95 0-4.05.4-5.5 1.5v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z\" />\n <path d=\"M17.5 10.5c.88 0 1.73.09 2.5.26V9.24c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99zM13 12.49v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26V11.9c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.3-4.5.83zm4.5 1.84c-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26v-1.52c-.79-.16-1.64-.24-2.5-.24z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function BuildIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.5 1c-.873 0-1.707.176-2.467.488l-1.388.57L7.585 6 6 7.586 2.059 3.645l-.57 1.388A6.474 6.474 0 001 7.5C1 11.078 3.922 14 7.5 14c.619 0 1.181-.183 1.748-.346l8.908 8.907a1.514 1.514 0 002.121 0l2.285-2.288a1.516 1.516 0 00-.002-2.119l-8.906-8.906c.162-.567.346-1.13.346-1.748C14 3.922 11.078 1 7.5 1zm0 2C9.998 3 12 5.002 12 7.5c0 .607-.122 1.182-.34 1.713l-.252.617 9.385 9.385-1.576 1.578-9.387-9.387-.617.254c-.53.219-1.105.34-1.713.34A4.484 4.484 0 013 7.5c0-.026.013-.047.014-.072L6 10.414 10.414 6 7.428 3.014c.025 0 .046-.014.072-.014z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function BuildCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.49 11.38c.43-1.22.17-2.64-.81-3.62a3.468 3.468 0 00-4.1-.59l2.35 2.35-1.41 1.41-2.35-2.35c-.71 1.32-.52 2.99.59 4.1.98.98 2.4 1.24 3.62.81l3.41 3.41c.2.2.51.2.71 0l1.4-1.4c.2-.2.2-.51 0-.71l-3.41-3.41z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V10h16v11zm0-13H4V5h16v3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.6 3.2h-1.1V1h-2.2v2.2H7.5V1H5.3v2.2H4.2a2.19 2.19 0 00-2.189 2.2L2 20.8A2.2 2.2 0 004.2 23h15.4c1.21 0 2.2-.99 2.2-2.2V5.4c0-1.21-.99-2.2-2.2-2.2zm0 17.6H4.2v-11h15.4v11zm0-13.2H4.2V5.4h15.4v2.2zm-11 6.6H6.4V12h2.2v2.2zm4.4 0h-2.2V12H13v2.2zm4.4 0h-2.2V12h2.2v2.2zm-8.8 4.4H6.4v-2.2h2.2v2.2zm4.4 0h-2.2v-2.2H13v2.2zm4.4 0h-2.2v-2.2h2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarViewDayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 17h18v2H3v-2zm16-5v1H5v-1h14zm2-2H3v5h18v-5zM3 6h18v2H3V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarViewMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM8 11H4V6h4v5zm6 0h-4V6h4v5zm6 0h-4V6h4v5zM8 18H4v-5h4v5zm6 0h-4v-5h4v5zm6 0h-4v-5h4v5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarViewWeekIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-7 2h2.5v12H13V6zm-2 12H8.5V6H11v12zM4 6h2.5v12H4V6zm16 12h-2.5V6H20v12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.54 5c.06.89.21 1.76.45 2.59l-1.2 1.2c-.41-1.2-.67-2.47-.76-3.79h1.51zm9.86 12.02c.85.24 1.72.39 2.6.45v1.49c-1.32-.09-2.59-.35-3.8-.75l1.2-1.19zM7.5 3H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.49c0-.55-.45-1-1-1-1.24 0-2.45-.2-3.57-.57a.84.84 0 00-.31-.05c-.26 0-.51.1-.71.29l-2.2 2.2a15.149 15.149 0 01-6.59-6.59l2.2-2.2c.28-.28.36-.67.25-1.02A11.36 11.36 0 018.5 4c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CaringIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 13c3.09-2.81 6-5.44 6-7.7C22 3.45 20.55 2 18.7 2c-1.04 0-2.05.49-2.7 1.25C15.34 2.49 14.34 2 13.3 2 11.45 2 10 3.45 10 5.3c0 2.26 2.91 4.89 6 7.7zm-2.7-9c.44 0 .89.21 1.18.55L16 6.34l1.52-1.79c.29-.34.74-.55 1.18-.55.74 0 1.3.56 1.3 1.3 0 1.12-2.04 3.17-4 4.99-1.96-1.82-4-3.88-4-4.99 0-.74.56-1.3 1.3-1.3zM19 16h-2c0-1.2-.75-2.28-1.87-2.7L8.97 11H1v11h6v-1.44l7 1.94 8-2.5v-1c0-1.66-1.34-3-3-3zM3 20v-7h2v7H3zm10.97.41L7 18.48V13h1.61l5.82 2.17c.34.13.57.46.57.83 0 0-1.99-.05-2.3-.15l-2.38-.79-.63 1.9 2.38.79c.51.17 1.04.26 1.58.26H19c.39 0 .74.23.9.56l-5.93 1.84z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChatIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CheckIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.293 5.293L9 16.586l-4.293-4.293-1.414 1.414L9 19.414 21.707 6.707l-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CheckCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm4.293 4.293L10 14.586l-2.293-2.293-1.414 1.414L10 17.414l7.707-7.707-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChecklistIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 7h-9v2h9V7zm0 8h-9v2h9v-2zM5.54 11L2 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 11zm0 8L2 15.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 19z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronFirstIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6 1.41-1.41zM6 6h2v12H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronLargeLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.51 3.87L15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronLargeRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.49 20.13l1.77 1.77 9.9-9.9-9.9-9.9-1.77 1.77L14.62 12l-8.13 8.13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronLastIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6-1.41 1.41zM16 6h2v12h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function ChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CloseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4.707 3.293L3.293 4.707 10.586 12l-7.293 7.293 1.414 1.414L12 13.414l7.293 7.293 1.414-1.414L13.414 12l7.293-7.293-1.414-1.414L12 10.586 4.707 3.293z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function CloseSmallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.293 8.707l1.414-1.414L12 10.586l3.293-3.293 1.414 1.414L13.414 12l3.293 3.293-1.414 1.414L12 13.414l-3.293 3.293-1.414-1.414L10.586 12 7.293 8.707z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CloseCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zM8.707 7.293L7.293 8.707 10.586 12l-3.293 3.293 1.414 1.414L12 13.414l3.293 3.293 1.414-1.414L13.414 12l3.293-3.293-1.414-1.414L12 10.586 8.707 7.293z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CloudIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11A2.98 2.98 0 0122 15c0 1.65-1.35 3-3 3H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95A5.47 5.47 0 0112 6zm0-2C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96A7.49 7.49 0 0012 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CollapseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 3.41L16.71 8.7 20 12h-8V4l3.29 3.29L20.59 2 22 3.41zM3.41 22l5.29-5.29L12 20v-8H4l3.29 3.29L2 20.59 3.41 22z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CommentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4h16v12H5.17L4 17.17V4zm0-2c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H4zm2 10h8v2H6v-2zm0-3h12v2H6V9zm0-3h12v2H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CopyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CourtIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.5 10h-2v7h2v-7zm6 0h-2v7h2v-7zm8.5 9H2v2h19v-2zm-2.5-9h-2v7h2v-7zm-7-6.74L16.71 6H6.29l5.21-2.74zm0-2.26L2 6v2h19V6l-9.5-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DateRangeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.4 10.9h2.2v2.2H6.4v-2.2zm15.4-5.5v15.4c0 1.21-.99 2.2-2.2 2.2H4.2A2.2 2.2 0 012 20.8l.011-15.4c0-1.21.968-2.2 2.189-2.2h1.1V1h2.2v2.2h8.8V1h2.2v2.2h1.1c1.21 0 2.2.99 2.2 2.2zM4.2 7.6h15.4V5.4H4.2v2.2zm15.4 13.2v-11H4.2v11h15.4zm-4.4-7.7h2.2v-2.2h-2.2v2.2zm-4.4 0H13v-2.2h-2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DeathsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 3c-.96 0-1.9.25-2.73.69L12 9h3l-3 10 1-9h-3l1.54-5.39C10.47 3.61 9.01 3 7.5 3 4.42 3 2 5.42 2 8.5c0 4.13 4.16 7.18 10 12.5 5.47-4.94 10-8.26 10-12.5C22 5.42 19.58 3 16.5 3zm-6.26 13.73C6.45 13.34 4 11 4 8.5 4 6.54 5.54 5 7.5 5c.59 0 1.19.15 1.73.42L7.35 12h3.42l-.53 4.73zm4.89-1.2L17.69 7h-2.91l.61-1.82c.36-.12.74-.18 1.11-.18C18.46 5 20 6.54 20 8.5c0 2.21-2.02 4.43-4.87 7.03z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DoubleChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 18.414,7.41398L 17,6L 11,12L 17,18L 18.414,16.586L 13.828,12L 18.414,7.41398 Z M 12.414,7.41398L 11,6L 5.00001,12L 11,18L 12.414,16.586L 7.82801,12L 12.414,7.41398 Z \" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DoubleChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 5.586,7.41398L 7,6L 13,12L 7,18L 5.586,16.586L 10.172,12L 5.586,7.41398 Z M 11.586,7.41399L 13,6.00001L 19,12L 13,18L 11.586,16.586L 16.172,12L 11.586,7.41399 Z \" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DownloadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 5v6h1.17L12 13.17 9.83 11H11V5h2zm2-2H9v6H5l7 7 7-7h-4V3zm4 15H5v2h14v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DownloadDoneIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.13 5.41L18.72 4l-9.19 9.19-4.25-4.24-1.41 1.41 5.66 5.66 10.6-10.61zM5 18h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DragHandleIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9H4v2h16V9zM4 15h16v-2H4v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function EditIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.06 9.02l.92.92L5.92 19H5v-.92l9.06-9.06zM17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83a.996.996 0 000-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ErrorIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99zM12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ExclaimIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 21a2 2 0 100-4 2 2 0 000 4zM10 3h4v12h-4V3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ExpandIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10L21 11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FacebookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.625 2.625H3.375a.75.75 0 00-.75.75v17.25c0 .415.335.75.75.75h17.25a.75.75 0 00.75-.75V3.375a.75.75 0 00-.75-.75zm-2.166 5.473h-1.497c-1.175 0-1.402.557-1.402 1.378v1.807h2.803l-.365 2.829H15.56v7.263h-2.923v-7.26h-2.444v-2.832h2.444V9.197c0-2.421 1.48-3.74 3.64-3.74 1.036 0 1.925.077 2.185.112v2.529h-.003z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FamilyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.66 13.07c.15 0 .29-.01.43-.03A3.15 3.15 0 0012 15c1.31 0 2.44-.81 2.91-1.96a3.144 3.144 0 003.57-3.11c0-.71-.25-1.39-.67-1.93.43-.54.67-1.22.67-1.93a3.144 3.144 0 00-3.57-3.11A3.15 3.15 0 0012 1c-1.31 0-2.44.81-2.91 1.96a3.145 3.145 0 00-3.57 3.11c0 .71.25 1.39.67 1.93-.43.54-.68 1.22-.68 1.93 0 1.73 1.41 3.14 3.15 3.14zM12 13c-.62 0-1.12-.49-1.14-1.1l.12-1.09c.32.12.66.19 1.02.19s.71-.07 1.03-.19l.11 1.09c-.02.61-.52 1.1-1.14 1.1zm3.34-1.93c-.24 0-.46-.07-.64-.2l-.81-.57c.55-.45.94-1.09 1.06-1.83l.88.42c.4.19.66.59.66 1.03 0 .64-.52 1.15-1.15 1.15zm-.65-5.94c.2-.13.42-.2.65-.2.63 0 1.14.51 1.14 1.14 0 .44-.25.83-.66 1.03l-.88.42c-.12-.74-.51-1.38-1.07-1.83l.82-.56zM12 3c.62 0 1.12.49 1.14 1.1l-.11 1.09C12.71 5.07 12.36 5 12 5s-.7.07-1.02.19l-.12-1.09c.02-.61.52-1.1 1.14-1.1zM8.66 4.93c.24 0 .46.07.64.2l.81.56c-.55.45-.94 1.09-1.06 1.83l-.88-.42c-.4-.2-.66-.59-.66-1.03 0-.63.52-1.14 1.15-1.14zM8.17 8.9l.88-.42c.12.74.51 1.38 1.07 1.83l-.81.55c-.2.13-.42.2-.65.2-.63 0-1.14-.51-1.14-1.14-.01-.43.25-.82.65-1.02zM12 22a9 9 0 009-9 9 9 0 00-9 9zm2.44-2.44c.71-1.9 2.22-3.42 4.12-4.12a7.04 7.04 0 01-4.12 4.12zM3 13a9 9 0 009 9 9 9 0 00-9-9zm2.44 2.44c1.9.71 3.42 2.22 4.12 4.12a7.04 7.04 0 01-4.12-4.12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FeedbackIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17l-.59.59-.58.58V4h16v12zm-9-4h2v2h-2v-2zm0-6h2v4h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FileIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2c-1.094 0-2 .906-2 2v16c0 1.094.906 2 2 2h12c1.094 0 2-.906 2-2V8l-6-6H6zm0 2h7v5h5v11H6V4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FileAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 11h-2v3H8v2h3v3h2v-3h3v-2h-3v-3zm1-9H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FileShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 2H5C3.9 2 3 2.9 3 4V20C3 21.1 3.89 22 4.99 22H13V20H5V4H12V9H17V12H19V8L13 2Z\" />\n <path d=\"M20 17V16C20 14.9 19.1 14 18 14C16.9 14 16 14.9 16 16V17C15.45 17 15 17.45 15 18V21C15 21.55 15.45 22 16 22H20C20.55 22 21 21.55 21 21V18C21 17.45 20.55 17 20 17ZM17 17V16C17 15.45 17.45 15 18 15C18.55 15 19 15.45 19 16V17H17Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FileTextIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 16h8v2H8v-2zm0-4h8v2H8v-2zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FilterIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 6h10l-5.01 6.3L7 6zm-2.75-.39C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0018.95 4H5.04c-.83 0-1.3.95-.79 1.61z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FilterListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FilterListOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10.83 8H21V6H8.83l2 2zm5 5H18v-2h-4.17l2 2zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41L14 16.83z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FilterOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.95 6l-3.57 4.55 1.43 1.43c1.03-1.31 4.98-6.37 4.98-6.37A.998.998 0 0019 4H6.83l2 2h8.12zM2.81 2.81L1.39 4.22 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.17l5.78 5.78 1.41-1.41L2.81 2.81z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FindInPageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 4h7l5 5v8.58l-1.84-1.84a4.992 4.992 0 00-.64-6.28A4.96 4.96 0 0012 8a5 5 0 00-4.612 3.077A4.98 4.98 0 008.47 16.51a4.982 4.982 0 006.28.63L17.6 20H6V4zm8.11 11.1c-.56.56-1.31.88-2.11.88-.8 0-1.55-.31-2.11-.88-.56-.56-.88-1.31-.88-2.11 0-.8.31-1.55.88-2.11.56-.57 1.31-.88 2.11-.88.8 0 1.55.31 2.11.88.56.56.88 1.31.88 2.11 0 .8-.31 1.55-.88 2.11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FlickrIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.8571 2H4.14286C2.95982 2 2 2.95982 2 4.14286V19.8571C2 21.0402 2.95982 22 4.14286 22H19.8571C21.0402 22 22 21.0402 22 19.8571V4.14286C22 2.95982 21.0402 2 19.8571 2ZM8.45089 14.8125C6.88393 14.8125 5.61607 13.5446 5.61607 11.9777C5.61607 10.4107 6.88393 9.14286 8.45089 9.14286C10.0179 9.14286 11.2857 10.4107 11.2857 11.9777C11.2857 13.5446 10.0179 14.8125 8.45089 14.8125ZM15.5491 14.8125C13.9821 14.8125 12.7143 13.5446 12.7143 11.9777C12.7143 10.4107 13.9821 9.14286 15.5491 9.14286C17.1161 9.14286 18.3839 10.4107 18.3839 11.9777C18.3839 13.5446 17.1161 14.8125 15.5491 14.8125Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FolderIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4c-1.094 0-2 .906-2 2v12c0 1.094.906 2 2 2h16c1.094 0 2-.906 2-2V8c0-1.094-.906-2-2-2h-8l-2-2H4zm0 2h5.172l2 2H20v10H4V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FolderAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FolderShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M1 6C1 4.90575 1.90575 4 3 4H9L11 6H19C20.0943 6 21 6.90575 21 8V10H19V8H10.1719L8.17188 6H3V18H15V20H3C1.90575 20 1 19.0943 1 18V6Z\" />\n <path d=\"M22 15V14C22 12.9 21.1 12 20 12C18.9 12 18 12.9 18 14V15C17.45 15 17 15.45 17 16V19C17 19.55 17.45 20 18 20H22C22.55 20 23 19.55 23 19V16C23 15.45 22.55 15 22 15ZM19 15V14C19 13.45 19.45 13 20 13C20.55 13 21 13.45 21 14V15H19Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FullscreenExitIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FullscreenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function GavelIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.112 15.528L3.302 9.86l1.393-1.43 5.81 5.669-1.393 1.429zM15.385 9.097L9.575 3.43 10.967 2l5.81 5.668-1.393 1.43zM21.606 21.44l-9.095-8.87 1.394-1.43L23 20.012l-1.394 1.429zM10.802 12.993L5.75 8.066l3.485-3.573 5.052 4.929-3.485 3.572zM3.998 18.686h8.984v1.996H3.998v-1.996z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3 20.183h10.98v1.997H3v-1.997z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function GuardianIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.225 14.275C15.7084 14.7583 16.3 15 17 15C17.7 15 18.2916 14.7583 18.775 14.275C19.2583 13.7917 19.5 13.2 19.5 12.5C19.5 11.8 19.2583 11.2083 18.775 10.725C18.2916 10.2417 17.7 10 17 10C16.3 10 15.7084 10.2417 15.225 10.725C14.7417 11.2083 14.5 11.8 14.5 12.5C14.5 13.2 14.7417 13.7917 15.225 14.275Z\" />\n <path d=\"M12 18.6V20H22V18.8371C21.1597 18.9446 20.2638 18.635 19.6233 18.0638C19.0679 17.5685 18.6862 16.8599 18.6017 16.1281C18.0706 16.0427 17.5366 16 17 16C16.3507 16.0007 15.705 16.0633 15.063 16.188C14.421 16.3127 13.8 16.5 13.2 16.75C12.8174 16.9007 12.5216 17.1467 12.313 17.488C12.1044 17.8293 12 18.2 12 18.6Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.17505 10.825C7.95837 11.6083 8.90002 12 10 12C11.1 12 12.0416 11.6083 12.825 10.825C13.6083 10.0417 14 9.10001 14 8C14 6.89999 13.6083 5.95834 12.825 5.17499C12.0416 4.39166 11.1 4 10 4C8.90002 4 7.95837 4.39166 7.17505 5.17499C6.39172 5.95834 6 6.89999 6 8C6 9.10001 6.39172 10.0417 7.17505 10.825ZM11.413 9.41299C11.021 9.80432 10.55 10 10 10C9.45068 10.0007 8.97998 9.80499 8.58801 9.41299C8.19604 9.021 8 8.54999 8 8C8.00061 7.45065 8.19666 6.98001 8.58801 6.58801C8.97937 6.19601 9.44995 6 10 6C10.5507 6.00067 11.0216 6.19666 11.413 6.58801C11.8043 6.97934 12 7.45001 12 8C12.0006 8.55066 11.8051 9.02167 11.413 9.41299Z\"\n />\n <path d=\"M2 17.2V20H10V18H4V17.2C4 17.0167 4.04163 16.85 4.125 16.7C4.20837 16.55 4.33337 16.4333 4.5 16.35C5.34937 15.9167 6.23669 15.5833 7.16199 15.35C8.08728 15.1167 9.03333 15 10 15C10.3 15.0007 10.6 15.0133 10.9 15.038C11.2 15.0627 11.5 15.1167 11.8 15.2L13.5 13.5C12.9166 13.3667 12.3334 13.25 11.75 13.15C11.1666 13.05 10.5834 13 10 13C8.88403 13 7.78833 13.1333 6.71301 13.4C5.6377 13.6667 4.59998 14.05 3.59998 14.55C3.09998 14.8007 2.70837 15.1633 2.42505 15.638C2.14172 16.1127 2 16.6333 2 17.2Z\" />\n <path d=\"M20.1512 17.1838C20.1947 17.2298 20.2406 17.2744 20.2889 17.3175C21.0617 18.0067 22.1565 18.0404 22.7341 17.3927C23.1146 16.9662 23.0624 16.4776 22.7617 15.9968C22.6629 15.8389 22.5373 15.6817 22.3913 15.5279C22.307 15.439 22.2159 15.3513 22.1193 15.2652C21.3465 14.5759 20.5132 14.249 19.9355 14.8967C19.4786 15.4091 19.4821 16.1943 19.886 16.8413C19.9608 16.9611 20.0493 17.0761 20.1512 17.1838Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HelpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HelpFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HomeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2.1L1 12h3v9h7v-6h2v6h7v-9h3L12 2.1zm0 2.691l6 5.4V19h-3v-6H9v6H6v-8.809l6-5.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassBottomIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m18 22-.01-6L14 12l3.99-4.01L18 2H6v6l4 4-4 3.99V22h12zM8 7.5V4h8v3.5l-4 4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassDisabledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 4h8v3.5l-2.84 2.84 1.25 1.25L18 8.01 17.99 8H18V2H6v1.17l2 2zM2.1 2.1.69 3.51l8.9 8.9L6 16l.01.01H6V22h12v-1.17l2.49 2.49 1.41-1.41L2.1 2.1zM16 20H8v-3.5l2.84-2.84L16 18.83V20z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassEmptyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5-4-4V4h8v3.5l-4 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassFullIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassTopIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m6 2 .01 6L10 12l-3.99 4.01L6 22h12v-6l-4-4 4-3.99V2H6zm10 14.5V20H8v-3.5l4-4 4 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function ImageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 5v14H5V5h14zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86L11 16l-2-2.86L6 17h12l-3.86-5.14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function InfoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8-8-3.57-8-8 3.57-8 8-8zm-1 3v2h2V7h-2zm0 4v6h2v-6h-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function InstagramIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 7.193A4.8 4.8 0 007.193 12 4.8 4.8 0 0012 16.807 4.8 4.8 0 0016.807 12 4.8 4.8 0 0012 7.193zm0 7.931A3.13 3.13 0 018.876 12 3.13 3.13 0 0112 8.876 3.13 3.13 0 0115.124 12 3.13 3.13 0 0112 15.124zm5.004-9.248a1.121 1.121 0 100 2.245A1.12 1.12 0 0018.04 6.57a1.122 1.122 0 00-1.037-.693zM21.37 12c0-1.294.012-2.576-.06-3.867-.073-1.5-.415-2.831-1.512-3.928-1.1-1.1-2.428-1.44-3.928-1.512-1.294-.073-2.576-.061-3.868-.061-1.293 0-2.575-.012-3.867.061-1.5.073-2.831.415-3.928 1.512-1.1 1.099-1.439 2.428-1.512 3.928-.072 1.294-.06 2.576-.06 3.867s-.012 2.576.06 3.867c.073 1.5.415 2.831 1.512 3.928 1.1 1.1 2.428 1.44 3.928 1.512 1.294.073 2.576.061 3.867.061 1.294 0 2.576.012 3.867-.061 1.5-.073 2.832-.415 3.929-1.512 1.099-1.099 1.439-2.428 1.511-3.928.075-1.291.061-2.573.061-3.867zm-2.062 5.527A2.978 2.978 0 0118.6 18.6c-.33.33-.647.537-1.073.708-1.233.49-4.16.38-5.527.38-1.366 0-4.296.11-5.529-.378a2.98 2.98 0 01-1.073-.708 2.999 2.999 0 01-.708-1.073c-.488-1.235-.378-4.163-.378-5.529 0-1.366-.11-4.296.378-5.529.17-.426.377-.745.708-1.073A3.03 3.03 0 016.47 4.69c1.233-.488 4.163-.377 5.529-.377 1.366 0 4.296-.11 5.529.377.427.17.745.377 1.073.708.33.33.537.647.708 1.073.488 1.233.378 4.163.378 5.529 0 1.366.11 4.294-.38 5.527z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function JordskifterettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function JordskiftesakIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M20.5257 1.14935C20.8205 1.33156 21 1.65342 21 2V10L19 9V3.61804L15 5.61803V10L13 11V5.61803L9 3.61804V14.4648L11.5 16.154V18.5L7.92816 16.154L2.44721 18.8944C2.13723 19.0494 1.76909 19.0329 1.47427 18.8507C1.17945 18.6684 1 18.3466 1 18V5C1 4.62123 1.214 4.27497 1.55279 4.10557L7.55279 1.10557C7.83431 0.96481 8.16569 0.96481 8.44721 1.10557L14 3.88197L19.5528 1.10557C19.8628 0.95058 20.2309 0.967144 20.5257 1.14935ZM7 14.382V3.61804L3 5.61804V16.382L7 14.382Z\"\n />\n <path d=\"M18.6667 17.8008C20.0261 17.3203 21 16.0239 21 14.5C21 12.567 19.433 11 17.5 11C15.567 11 14 12.567 14 14.5C14 16.0239 14.9739 17.3204 16.3333 17.8008V23H18.6667L18.6667 17.8008Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function KeyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 10h-8.35A5.99 5.99 0 007 6c-3.31 0-6 2.69-6 6s2.69 6 6 6a5.99 5.99 0 005.65-4H13l2 2 2-2 2 2 4-4.04L21 10zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LagmannsrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 10h15.65v3.913H4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function LanguageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95a15.65 15.65 0 00-1.38-3.56A8.03 8.03 0 0118.92 8zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A7.987 7.987 0 015.08 16zm2.95-8H5.08a7.987 7.987 0 014.33-3.56A15.65 15.65 0 008.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 01-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LinkIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LinkedInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1 2.838A1.838 1.838 0 012.838 1H21.16A1.836 1.836 0 0123 2.838V21.16A1.838 1.838 0 0121.161 23H2.838A1.839 1.839 0 011 21.161V2.838zm8.708 6.55h2.979v1.496c.43-.86 1.53-1.634 3.183-1.634 3.169 0 3.92 1.713 3.92 4.856v5.822h-3.207v-5.106c0-1.79-.43-2.8-1.522-2.8-1.515 0-2.145 1.089-2.145 2.8v5.106H9.708V9.388zm-5.5 10.403h3.208V9.25H4.208V19.791zM7.875 5.812a2.063 2.063 0 11-4.125.09 2.063 2.063 0 014.125-.09z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LinkOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.39 11L16 12.61V11h-1.61zM17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.27-.77 2.37-1.87 2.84l1.4 1.4A4.986 4.986 0 0022 12c0-2.76-2.24-5-5-5zM2 4.27l3.11 3.11A4.991 4.991 0 002 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4.01 1.41-1.41L3.41 2.86 2 4.27z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7zm-4 6h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ListAltIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7h6v2h-6V7zm0 4h6v2h-6v-2zm0 4h6v2h-6v-2zM7 7h2v2H7V7zm0 4h2v2H7v-2zm0 4h2v2H7v-2zM20.1 3H3.9c-.5 0-.9.4-.9.9v16.2c0 .4.4.9.9.9h16.2c.4 0 .9-.5.9-.9V3.9c0-.5-.5-.9-.9-.9zM19 19H5V5h14v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LocationIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 12c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6-1.8C18 6.57 15.35 4 12 4s-6 2.57-6 6.2c0 2.34 1.95 5.44 6 9.14 4.05-3.7 6-6.8 6-9.14zM12 2c4.2 0 8 3.22 8 8.2 0 3.32-2.67 7.25-8 11.8-5.33-4.55-8-8.48-8-11.8C4 5.22 7.8 2 12 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 14C14 15.1046 13.1046 16 12 16C10.8954 16 10 15.1046 10 14C10 12.8954 10.8954 12 12 12C13.1046 12 14 12.8954 14 14Z\" />\n <path d=\"M11 15H13V18H11V15Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 10V20H18V10H6ZM5 8.00001C4.44772 8.00001 4 8.44772 4 9.00001V21C4 21.5523 4.44772 22 5 22H19C19.5523 22 20 21.5523 20 21V9.00001C20 8.44772 19.5523 8.00001 19 8.00001H5Z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.36753 4.80798C7.83895 5.96255 7.8442 7.49987 8.03406 8.8771L6.25092 9.12291C6.04866 7.6557 5.98267 5.69302 6.73089 4.0587C7.11485 3.22001 7.71599 2.46272 8.61205 1.92286C9.50288 1.38615 10.6256 1.10001 12 1.10001C13.3437 1.10001 14.4487 1.38826 15.331 1.92478C16.2165 2.46328 16.8195 3.21672 17.2117 4.05013C17.9784 5.67948 17.9537 7.6385 17.749 9.12292L15.9659 8.8771C16.1534 7.51707 16.1286 5.97609 15.583 4.81655C15.319 4.25552 14.9377 3.79229 14.3957 3.46273C13.8506 3.1312 13.0851 2.90001 12 2.90001C10.8744 2.90001 10.0909 3.1333 9.54096 3.46465C8.99622 3.79285 8.62196 4.25222 8.36753 4.80798Z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LockOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 14C14 15.1046 13.1046 16 12 16C10.8954 16 10 15.1046 10 14C10 12.8954 10.8954 12 12 12C13.1046 12 14 12.8954 14 14Z\" />\n <path d=\"M11 15H13V18H11V15Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 10V20H18V10H6ZM5 8.00001C4.44772 8.00001 4 8.44772 4 9.00001V21C4 21.5523 4.44772 22 5 22H19C19.5523 22 20 21.5523 20 21V9.00001C20 8.44772 19.5523 8.00001 19 8.00001H5Z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.41702 3.54352C8.86392 3.91502 8.49455 4.43767 8.25766 5.07353L6.57091 4.44514C6.91347 3.52561 7.49133 2.6686 8.4134 2.04928C9.33221 1.43216 10.5198 1.10001 12 1.10001C13.3437 1.10001 14.4487 1.38826 15.331 1.92478C16.2165 2.46328 16.8195 3.21672 17.2117 4.05013C17.9784 5.67948 17.9537 7.6385 17.749 9.12292L15.9659 8.8771C16.1534 7.51707 16.1286 5.97609 15.583 4.81655C15.319 4.25551 14.9377 3.79229 14.3957 3.46273C13.8506 3.1312 13.0851 2.90001 12 2.90001C10.789 2.90001 9.9734 3.16983 9.41702 3.54352Z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LoginIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7L9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LogoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 8l-1.41 1.41L17.17 11H9v2h8.17l-1.58 1.58L17 16l4-4-4-4zM5 5h7V3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h7v-2H5V5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MailIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MailOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zm-2 0v.01L12 13 4 8l8-4.68L19.99 8zM4 18v-7.66l8 5.02 7.99-4.99L20 18H4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MenuIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MinusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998H5v-2h14v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MinusCirledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MoreHorizontalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 12a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function MoreVerticalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function NotarialIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 16v6h16v-6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2zm14 2H6v-2h12v2zM12 2C9.24 2 7 4.24 7 7l5 7 5-7c0-2.76-2.24-5-5-5zm0 9L9 7c0-1.66 1.34-3 3-3s3 1.34 3 3l-3 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function NotificationsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm6-6v-5c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.64 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-2 1H8v-6c0-2.48 1.51-4.5 4-4.5s4 2.02 4 4.5v6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function NotificationsOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm0-15.5c2.49 0 4 2.02 4 4.5v.1l2 2V11c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.24.06-.47.15-.69.23l1.64 1.64c.18-.02.36-.05.55-.05zM5.41 3.35L4 4.76l2.81 2.81C6.29 8.57 6 9.74 6 11v5l-2 2v1h14.24l1.74 1.74 1.41-1.41L5.41 3.35zM16 17H8v-6c0-.68.12-1.32.34-1.9L16 16.76V17z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function OnlineMeetingIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zm-6-5.4l3 2.4V7l-3 2.4V7H7v6h7v-2.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function OpenExternalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 19H5V5h7V3H5a2 2 0 00-2 2v14a2 2 0 002 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PayoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v4h5v12H6zm5-1h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4v-2h-2V9h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function PdfIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm12 6V9c0-.55-.45-1-1-1h-2v5h2c.55 0 1-.45 1-1zm-2-3h1v3h-1V9zm4 2h1v-1h-1V9h1V8h-2v5h1v-2zm-8 0h1c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9v5h1v-2zm0-2h1v1h-1V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PersonIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9a2.1 2.1 0 110 4.199A2.1 2.1 0 0112 5.9zm0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1zM12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PersonAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9V6h-2v3h-3v2h3v3h2v-3h3V9h-3zM9 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0-6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm6.39 8.56C13.71 13.7 11.53 13 9 13s-4.71.7-6.39 1.56A2.97 2.97 0 001 17.22V20h16v-2.78c0-1.12-.61-2.15-1.61-2.66zM15 18H3v-.78c0-.38.2-.72.52-.88C4.71 15.73 6.63 15 9 15c2.37 0 4.29.73 5.48 1.34.32.16.52.5.52.88V18z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function PersonShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9C12.2758 5.9 12.5489 5.95432 12.8036 6.05985C13.0584 6.16539 13.2899 6.32007 13.4849 6.51508C13.6799 6.71008 13.8346 6.94158 13.9401 7.19636C14.0457 7.45115 14.1 7.72422 14.1 8C14.1 8.27578 14.0457 8.54885 13.9401 8.80364C13.8346 9.05842 13.6799 9.28992 13.4849 9.48492C13.2899 9.67993 13.0584 9.83461 12.8036 9.94015C12.5489 10.0457 12.2758 10.1 12 10.1C11.443 10.1 10.9089 9.87875 10.5151 9.48492C10.1212 9.0911 9.9 8.55695 9.9 8C9.9 7.44305 10.1212 6.9089 10.5151 6.51508C10.9089 6.12125 11.443 5.9 12 5.9ZM12 4C9.79 4 8 5.79 8 8C8 10.21 9.79 12 12 12C14.21 12 16 10.21 16 8C16 5.79 14.21 4 12 4Z\" />\n <path d=\"M5.9 18.1V17C5.9 16.36 9.03 14.9 12 14.9C12.3329 14.9 12.6677 14.9183 13 14.9518V13.0517C12.6402 13.0173 12.303 13 12 13C9.33 13 4 14.34 4 17V20H12V18.1H5.9Z\" />\n <path d=\"M19 15V14C19 12.9 18.1 12 17 12C15.9 12 15 12.9 15 14V15C14.45 15 14 15.45 14 16V19C14 19.55 14.45 20 15 20H19C19.55 20 20 19.55 20 19V16C20 15.45 19.55 15 19 15ZM16 15V14C16 13.45 16.45 13 17 13C17.55 13 18 13.45 18 14V15H16Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PinIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 4v5c0 1.12.37 2.16 1 3H9c.65-.86 1-1.9 1-3V4h4zm3-2H7c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3V4h1c.55 0 1-.45 1-1s-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PlusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998h-6v6h-2v-6H5v-2h6v-6h2v6h6v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PlusCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm-1 3v4H7v2h4v4h2v-4h4v-2h-4V7h-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PowerOfAttorneyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4C4 2.90575 4.90575 2 6 2H14L20 8V12H18V9H13V4H6V16H4V4Z\" />\n <path d=\"M5 19.5652V20.2609L10.7143 22L15.7143 20.6783V21.6522H20V14H14.2857L9.85714 15.6C9.14286 15.8783 8.57143 16.6435 8.57143 17.4783H7.14286C5.92857 17.4783 5 18.3826 5 19.5652ZM17.1429 20.2609V15.3913H18.5714V20.2609H17.1429ZM6.5 19.287C6.64286 19.0087 6.85714 18.8696 7.14286 18.8696H11C11.3571 18.8696 11.7857 18.8 12.1429 18.7304L13.7857 18.1739L13.3571 16.8522L11.6429 17.4087C11.4286 17.4087 10 17.4783 10 17.4783C10 17.2 10.1429 16.9913 10.4286 16.9217L14.5714 15.3913H15.7143V19.2174L10.7143 20.5391L6.5 19.287Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PrintIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 8h-1V3H6v5H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zM8 5h8v3H8V5zm8 12v2H8v-4h8v2zm2-2v-2H6v2H4v-4c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v4h-2z\" />\n <path d=\"M18 12.5a1 1 0 100-2 1 1 0 000 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PropertyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 9.3V4h-3v2.6L12 3 2 12h3v8h6v-6h2v6h6v-8h3l-3-2.7zM17 18h-2v-6H9v6H7v-7.81l5-4.5 5 4.5V18z\" />\n <path d=\"M10 10h4c0-1.1-.9-2-2-2s-2 .9-2 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PublishIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 4h14v2H5V4zm0 10h4v6h6v-6h4l-7-7-7 7zm8-2v6h-2v-6H9.83L12 9.83 14.17 12H13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function QuestionAnswerIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15 4v7H5.17l-.59.59-.58.58V4h11zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ReceiptIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.5 3.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5zM19 19.09H5V4.91h14v14.18zM6 15h12v2H6v-2zm0-4h12v2H6v-2zm0-4h12v2H6V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function RedoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16a8.002 8.002 0 017.6-5.5c1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3.6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function RefreshIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.65 6.35A7.958 7.958 0 0012 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0112 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function ReplayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function SearchIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 2C5.146 2 2 5.146 2 9s3.146 7 7 7a6.958 6.958 0 004.574-1.719l.426.426V16l6 6 2-2-6-6h-1.293l-.426-.426A6.958 6.958 0 0016 9c0-3.854-3.146-7-7-7zm0 2c2.773 0 5 2.227 5 5s-2.227 5-5 5-5-2.227-5-5 2.227-5 5-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function SettingsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9.666 2l-.451 2.477.014-.006.128-.041c-.05.012-.093.033-.142.047-.918.26-1.639.741-2.256 1.255l-.033.03h-.002l-2.389-.758-2.297 3.982 1.873 1.762.008-.045.01-.045C3.99 11.21 4 11.7 4 12c0 .3-.001.796.12 1.396l-.013-.064-1.882 1.66 2.328 4.035 2.39-.869.02.02.082.054c.643.429 1.388.856 2.162 1.188l.004.002L9.658 22h4.676l.451-2.477-.014.006-.128.041c.05-.012.093-.033.142-.047.918-.26 1.639-.741 2.256-1.255l.033-.03h.002l2.4.764 2.29-4.12-1.873-1.652-.012.067-.01.045C20.01 12.79 20 12.3 20 12c0-.3.01-.79-.129-1.342l.006.026 1.898-1.676-2.328-4.035-2.39.869-.02-.02-.082-.054a13.73 13.73 0 00-2.162-1.188l-.004-.002L14.342 2H9.666zm1.668 2h1.324l.352 2.021 1.02.407-.024-.008c.605.26 1.234.62 1.78.978l.757.76 2.01-.732.672 1.166-1.502 1.326.197 1.186.01.039c.062.247.07.557.07.857 0 .3-.008.61-.07.857l-.006.024-.217 1.088 1.527 1.35-.71 1.28-2-.636-.778.777c-.543.451-.983.738-1.588.889l-.066.017-1.076.43-.35 1.924h-1.324l-.352-2.021-1.02-.407.024.008c-.605-.26-1.234-.62-1.78-.978l-.757-.76-2.01.732-.672-1.166 1.518-1.34-.213-1.064C6 12.604 6 12.3 6 12c0-.3.008-.61.07-.857l.006-.024.213-1.066-1.527-1.44.703-1.217 2.012.641.777-.777c.543-.451.983-.738 1.588-.889l.066-.017 1.076-.43.35-1.924zM12 8c-1.25 0-2.315.505-2.998 1.273C8.319 10.043 8 11.028 8 12s.319 1.958 1.002 2.727C9.685 15.495 10.75 16 12 16c1.25 0 2.315-.505 2.998-1.273C15.681 13.957 16 12.972 16 12s-.319-1.958-1.002-2.727C14.315 8.505 13.25 8 12 8zm0 2c.75 0 1.185.245 1.502.602.317.356.498.87.498 1.398 0 .528-.181 1.042-.498 1.398-.317.357-.752.602-1.502.602s-1.185-.245-1.502-.602C10.181 13.042 10 12.528 10 12c0-.528.181-1.042.498-1.398.317-.357.752-.602 1.502-.602z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function SmsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zM7 9h2v2H7V9zm8 0h2v2h-2V9zm-4 0h2v2h-2V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function StarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function StarFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function StarHalfFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function SyncIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 0L8 4l4 4V5c3.859 0 7 3.14 7 7 0 .88-.17 1.72-.469 2.496l1.516 1.514A8.931 8.931 0 0021 12c0-4.962-4.037-9-9-9V0zM3.953 7.99A8.931 8.931 0 003 12c0 4.962 4.037 9 9 9v3l4-4-4-4v3c-3.859 0-7-3.14-7-7 0-.88.17-1.72.469-2.496L3.953 7.99z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ThumbDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m10.89 18.28.57-2.89c.12-.59-.04-1.2-.42-1.66-.38-.46-.94-.73-1.54-.73H4v-1.08L6.57 6h8.09c.18 0 .34.16.34.34v7.84l-4.11 4.1M10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22zm10-7h2V4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ThumbDownFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h2V4zM2.17 11.12c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ThumbUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m13.11 5.72-.57 2.89c-.12.59.04 1.2.42 1.66.38.46.94.73 1.54.73H20v1.08L17.43 18H9.34c-.18 0-.34-.16-.34-.34V9.82l4.11-4.1M14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.83C7 18.95 8.05 20 9.34 20h8.1c.71 0 1.36-.37 1.72-.97l2.67-6.15c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2zM4 9H2v11h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ThumbUpFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M2 20h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1H2v11zm19.83-7.12c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.84C7 18.95 8.05 20 9.34 20h8.11c.7 0 1.36-.37 1.72-.97l2.66-6.15z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function TimeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function TingrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 16.615c4.418 0 8-3.857 8-8.615H4c0 4.758 3.582 8.615 8 8.615z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function TipIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6A4.997 4.997 0 017 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function TrashIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 9v10H8V9h8zm-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function UndoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function UnfoldLessIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 18.59L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10l4.59-4.59z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function UnfoldMoreIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.59 18.17L8.42 15l-1.41 1.41L11.59 21l4.59-4.59L14.76 15l-3.17 3.17zm0-12.34L14.76 9l1.41-1.41L11.59 3 7 7.59 8.42 9l3.17-3.17z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function UploadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4v6zm2-2V8H9.828L12 5.828 14.172 8H13v6h-2zm-6 4h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function VisibilityOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5 9.648 9.648 0 01-2.41 3.12l1.41 1.41c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l1.65 1.65C10.66 6.09 11.32 6 12 6zm-1.07 1.14L13 9.21c.57.25 1.03.71 1.28 1.28l2.07 2.07c.08-.34.14-.7.14-1.07C16.5 9.01 14.48 7 12 7c-.37 0-.72.05-1.07.14zM2.01 3.87l2.68 2.68C3.04 7.841 1.766 9.55 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.98-.29 4.32-.82l3.42 3.42 1.41-1.41L3.42 2.45 2.01 3.87zm7.5 7.5l2.61 2.61c-.04.01-.08.02-.12.02a2.5 2.5 0 01-2.5-2.5c0-.05.01-.08.01-.13zm-3.4-3.4l1.75 1.75a4.6 4.6 0 00-.36 1.78 4.507 4.507 0 006.27 4.14l.98.98c-.88.24-1.8.38-2.75.38a9.77 9.77 0 01-8.82-5.5c.7-1.43 1.72-2.61 2.93-3.53z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function VisibilityOnIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5A9.77 9.77 0 0112 17a9.77 9.77 0 01-8.82-5.5A9.77 9.77 0 0112 6zm0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function WarningIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM19 14.9L14.9 19H9.1L5 14.9V9.1L9.1 5h5.8L19 9.1v5.8z\" />\n <path d=\"M12 17a1 1 0 100-2 1 1 0 000 2zM11 7h2v7h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function WebexIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.16445 3.02741C5.37251 3.2006 4.00929 4.54287 3.55167 5.19235C5.71934 5.89286 5.1413 9.08924 5.71934 10.6047C6.00836 9.73873 6.65866 7.71812 7.67024 7.71812C10.3525 7.71812 9.18761 21.2516 16.3409 20.9964C22.4104 20.7799 24 10.0274 24 8.00678C24 5.83103 21.8323 5.6975 21.8323 5.6975C21.8323 5.6975 23.2325 7.80594 22.5 9.73872C21.7039 11.8393 19.3034 11.615 18.9421 11.3985C18.5086 13.1305 17.5693 16.3057 16.3409 16.3057C14.5 16.3057 14.1251 8.65625 12.1501 5.6975C10.9458 3.89338 9.40437 2.81091 7.16445 3.02741Z\" />\n <path d=\"M16.2687 3.0274C14.1732 3.18241 12.9449 4.20609 12.3669 4.83152C14 6.5 14.679 10.6047 14.679 10.6047C14.8958 9.30573 15.4714 7.64595 16.2687 7.64595C17.0659 7.64595 17.3525 8.00677 18.0028 9.73872C18.5644 11.2344 22.6151 11.0722 21.9046 7.79027C21.3265 5.12018 18.6531 2.851 16.2687 3.0274Z\" />\n <path d=\"M8.03151 20.9243C9.91016 20.9243 11.4998 19.1923 11.4998 19.1923C9.98242 16.883 9.33212 13.6356 9.33212 13.6356C9.33212 13.6356 8.75685 16.3057 7.81475 16.3057C5.93611 16.3057 4.82819 10.4844 4.34648 7.35728C4.12972 6.41914 3.306 5.42327 1.74528 5.76966C0.184558 6.11605 -0.0611107 7.54972 0.0111449 8.22326C0.251997 10.6288 0.950471 15.0068 3.04588 18.2542C4.62908 20.7078 6.36963 20.9243 8.03151 20.9243Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function XIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.7508 3H20.8175L14.1175 10.6583L22 21.0775H15.8283L10.995 14.7575L5.46333 21.0775H2.395L9.56167 12.8858L2 3.00083H8.32833L12.6975 8.7775L17.7508 3ZM16.675 19.2425H18.3742L7.405 4.73917H5.58167L16.675 19.2425Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ZoomInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm.5-7H9v2H7v1h2v2h1v-2h2V9h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ZoomOutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function BarChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function BarChartBoxedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7 10h2v7H7v-7zm4-3h2v10h-2V7zm4 6h2v4h-2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function LineChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99l1.5 1.5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function TrendingUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function TrendingDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LibraryAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zm-7-2h2v-3h3V9h-3V6h-2v3h-3v2h3v3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HelpSimpleIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13.25 21H10.75V18.5714H13.25V21ZM15.8375 11.5893L14.7125 12.7064C13.8125 13.5929 13.25 14.3214 13.25 16.1429H10.75V15.5357C10.75 14.2 11.3125 12.9857 12.2125 12.0993L13.7625 10.5693C14.225 10.1321 14.5 9.525 14.5 8.85714C14.5 7.52143 13.375 6.42857 12 6.42857C10.625 6.42857 9.5 7.52143 9.5 8.85714H7C7 6.17357 9.2375 4 12 4C14.7625 4 17 6.17357 17 8.85714C17 9.92571 16.55 10.8971 15.8375 11.5893Z\" />\n </SvgWrapper>\n );\n}\n","import { type AnchorHTMLAttributes, type HTMLAttributes } from 'react';\n\nimport styles from './Typography.module.css';\nimport {\n type OtherTypographyType,\n type TypographyAnchorType,\n type TypographyComponentProps,\n type TypographyLabelType,\n} from './Typography.types';\nimport {\n getElementType,\n getTypographyCn,\n isCaption,\n isLegend,\n} from './Typography.utils';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../../types';\nimport { cn } from '../../../utils';\nimport { getTextColor } from '../../../utils/color';\nimport { ElementAs } from '../../helpers/ElementAs/ElementAs';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport { Icon } from '../../Icon';\nimport { OpenExternalIcon } from '../../Icon/icons';\nimport typographyStyles from '../typographyStyles.module.css';\n\ntype AnchorTypographyProps = BaseComponentProps<\n HTMLAnchorElement,\n TypographyComponentProps & {\n /**nativ `href`-prop ved `typographyType='a'`. */\n href?: string | undefined;\n\n /** Spesifiserer om lenka er ekstern ved `typographyType='a'` eller `as='a'`.*/\n externalLink?: boolean;\n\n /**nativ `target`-prop ved `typographyType='a'`. */\n target?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n>;\n\ntype LabelTypographyProps = BaseComponentProps<\n HTMLLabelElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLLabelElement>\n>;\n\ntype OtherTypographyProps = BaseComponentProps<\n HTMLElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLElement>\n>;\n\nexport type TypographyProps =\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: TypographyAnchorType;\n } & AnchorTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: TypographyLabelType;\n } & LabelTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: OtherTypographyType;\n } & OtherTypographyProps);\n\nconst isAnchorProps = (\n props: TypographyProps,\n): props is AnchorTypographyProps => props.typographyType === 'a';\n\nexport const Typography = (props: TypographyProps) => {\n const {\n typographyType = 'bodyMedium',\n as: propAs,\n children,\n bold,\n underline,\n italic,\n style,\n id,\n withMargins,\n color,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { style: htmlPropsStyle, ...restHtmlProps } = htmlProps;\n\n const as = propAs ? propAs : getElementType(typographyType);\n const typographyCn = getTypographyCn(typographyType);\n\n let relProp;\n let targetProp;\n let externalLinkProp;\n if (isAnchorProps(props)) {\n const { externalLink, target } = props;\n relProp = as === 'a' ? 'noopener noreferer' : undefined;\n targetProp = as !== 'a' ? undefined : externalLink ? '_blank' : target;\n externalLinkProp = as === 'a' && externalLink ? externalLink : undefined;\n }\n\n return (\n <ElementAs\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.container,\n externalLinkProp && typographyStyles['a--external'],\n typographyStyles[typographyCn],\n withMargins && typographyStyles[`${typographyCn}--margins`],\n isLegend(as) && typographyStyles.legend,\n isCaption(as) &&\n withMargins &&\n typographyStyles['caption--withMargins'],\n bold && typographyStyles.bold,\n underline && typographyStyles.underline,\n italic && typographyStyles.italic,\n as === 'a' && focusable,\n ),\n restHtmlProps,\n rest,\n )}\n as={as}\n style={{\n ...htmlPropsStyle,\n ...style,\n color: color && getTextColor(color),\n }}\n rel={relProp}\n target={targetProp}\n >\n {children}\n {externalLinkProp && <Icon icon={OpenExternalIcon} iconSize=\"inherit\" />}\n </ElementAs>\n );\n};\n\nTypography.displayName = 'Typography';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { type BaseTypographyProps, Typography } from '../Typography';\n\nexport type CaptionProps = BaseComponentPropsWithChildren<\n HTMLTableCaptionElement,\n BaseTypographyProps\n>;\n\nexport const Caption = ({\n id,\n className,\n htmlProps,\n children,\n ...rest\n}: CaptionProps) => {\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n typographyType=\"headingLarge\"\n as=\"caption\"\n >\n {children}\n </Typography>\n );\n};\n\nCaption.displayName = 'Caption';\n","import { type ElementType } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n Typography,\n type TypographyHeadingType,\n} from '../Typography';\n\nconst getHeadingElement = (level: HeadingLevel): ElementType => `h${level}`;\n\nconst getDefaultTypographyType = (h: ElementType): TypographyHeadingType => {\n switch (h) {\n case 'h1':\n return 'headingXlarge';\n case 'h2':\n return 'headingLarge';\n case 'h3':\n return 'headingMedium';\n case 'h4':\n return 'headingSmall';\n case 'h5':\n return 'headingXsmall';\n case 'h6':\n return 'headingXxsmall';\n default:\n return 'headingXlarge';\n }\n};\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type HeadingProps = BaseComponentPropsWithChildren<\n HTMLHeadingElement,\n {\n /**Nivå på overskriften. Komponenten returnerer HTML heading element med dette nivået med default styling. */\n level: HeadingLevel;\n /**Spesifiserer typografistil basert på utvalget for HTML heading elementer. */\n typographyType?: TypographyHeadingType;\n } & BaseTypographyProps\n>;\n\nexport const Heading = ({\n id,\n className,\n htmlProps,\n children,\n typographyType,\n level,\n ...rest\n}: HeadingProps) => {\n const headingElement: ElementType = getHeadingElement(level);\n\n const standardTypographyType =\n typographyType ?? getDefaultTypographyType(headingElement);\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n typographyType={standardTypographyType}\n as={headingElement}\n >\n {children}\n </Typography>\n );\n};\n\nHeading.displayName = 'Heading';\n",".read-only {\n display: flex;\n}\n\n.read-only__icon {\n align-self: center;\n flex-shrink: 0;\n margin-inline-end: var(--dds-spacing-x0-125);\n width: 1.25em;\n height: 1.25em;\n}\n","import { type LabelHTMLAttributes } from 'react';\n\nimport styles from './Label.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { RequiredMarker, cn } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport { LockIcon } from '../../Icon/icons';\nimport { type BaseTypographyProps, Typography } from '../Typography';\n\ntype PickedHTMLAttributes = Pick<\n LabelHTMLAttributes<HTMLLabelElement>,\n 'htmlFor'\n>;\n\nexport interface BaseLabelProps {\n /** Om input knyttet til ledeteksten er påkrevd; påvirker styling. */\n showRequiredStyling?: boolean;\n /** Om input knyttet til ledeteksten er `read-only`; påvirker styling. */\n readOnly?: boolean;\n}\n\nexport type LabelProps = BaseComponentPropsWithChildren<\n HTMLLabelElement,\n BaseLabelProps & BaseTypographyProps & PickedHTMLAttributes,\n Omit<LabelHTMLAttributes<HTMLLabelElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Label = ({\n showRequiredStyling,\n readOnly,\n id,\n className,\n htmlProps,\n children,\n ...rest\n}: LabelProps) => {\n return (\n <Typography\n {...getBaseHTMLProps(\n id,\n cn(className, readOnly && styles['read-only']),\n htmlProps,\n rest,\n )}\n typographyType=\"labelMedium\"\n >\n {readOnly && (\n <Icon\n icon={LockIcon}\n iconSize=\"small\"\n className={styles['read-only__icon']}\n />\n )}\n {children}\n {showRequiredStyling && <RequiredMarker />}\n </Typography>\n );\n};\n\nLabel.displayName = 'Label';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n Typography,\n type TypographyHeadingType,\n} from '../Typography';\n\nexport type LegendProps = BaseComponentPropsWithChildren<\n HTMLLegendElement,\n BaseTypographyProps & {\n /**Typografistil basert på utvalget for HTML heading elementer. */\n typographyType?: TypographyHeadingType;\n }\n>;\n\nexport const Legend = ({\n id,\n className,\n htmlProps,\n typographyType = 'headingLarge',\n ...rest\n}: LegendProps) => {\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n as=\"legend\"\n typographyType={typographyType}\n />\n );\n};\n\nLegend.displayName = 'Legend';\n","import { type AnchorHTMLAttributes } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport { Icon } from '../../Icon';\nimport { OpenExternalIcon } from '../../Icon/icons';\nimport {\n type BaseTypographyProps,\n type TypographyBodyType,\n getTypographyCn,\n} from '../Typography';\nimport typographyStyles from '../typographyStyles.module.css';\n\ntype PickedHTMLAttributes = Pick<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n 'onClick' | 'href' | 'target'\n>;\n\nexport type LinkProps = BaseComponentPropsWithChildren<\n HTMLAnchorElement,\n {\n /**Spesifiserer om lenken fører til et eksternt nettsted eller åpnes i nytt vindu. Påvirker styling og setter `target` prop. */\n external?: boolean;\n /**Om lenken kan få `:visited`-styling. */\n withVisited?: boolean;\n /**Spesifiserer typografistil basert på utvalget for brødtekst. Arver hvis ikke oppgitt. */\n typographyType?: TypographyBodyType;\n } & BaseTypographyProps &\n PickedHTMLAttributes,\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Link = ({\n id,\n className,\n htmlProps,\n children,\n typographyType,\n withMargins,\n withVisited,\n external,\n target,\n ...rest\n}: LinkProps) => {\n return (\n <a\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n typographyStyles.a,\n external && typographyStyles['a--external'],\n withVisited && typographyStyles['a--visited'],\n typographyType && typographyStyles[getTypographyCn(typographyType)],\n typographyType &&\n withMargins &&\n typographyStyles[`${getTypographyCn(typographyType)}--margins`],\n focusable,\n ),\n htmlProps,\n rest,\n )}\n {...rest}\n rel=\"noopener noreferer\"\n target={external ? '_blank' : target}\n >\n {children}\n {external && <Icon iconSize=\"inherit\" icon={OpenExternalIcon} />}\n </a>\n );\n};\n\nLink.displayName = 'Link';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n Typography,\n type TypographyBodyType,\n type TypographyLeadType,\n} from '../Typography';\n\nexport type ParagraphProps = BaseComponentPropsWithChildren<\n HTMLParagraphElement,\n {\n /**Spesifiserer typografistil basert på utvalget for brødtekst og ingress. */\n typographyType?: TypographyBodyType | TypographyLeadType;\n } & BaseTypographyProps\n>;\n\nexport const Paragraph = ({\n id,\n className,\n htmlProps,\n children,\n typographyType = 'bodyMedium',\n ...rest\n}: ParagraphProps) => {\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n typographyType={typographyType}\n >\n {children}\n </Typography>\n );\n};\n\nParagraph.displayName = 'Paragraph';\n","import { type ResponsiveProps } from '../../layout';\n\nexport function getDefaultText(\n value?: string | number | ReadonlyArray<string>,\n defaultValue?: string | number | ReadonlyArray<string>,\n): string {\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof defaultValue === 'string') {\n return defaultValue;\n }\n\n return '';\n}\n\nexport function getInputWidth(\n width?: ResponsiveProps['width'],\n defaultW?: ResponsiveProps['width'] | false | null,\n): ResponsiveProps['width'] {\n return width ? width : defaultW ? defaultW : 'var(--dds-input-default-width)';\n}\n","import type { Ref, RefCallback, RefObject } from 'react';\nimport { useCallback } from 'react';\n\n/**\n * Kombinerer refs for et element.\n * Eksempel på bruk:\n * ```\n * const MyComponent = ({ref, ...props}) => {\n *\n * const itemRef = useRef<HTMLDivElement>(null);\n * const combinedRef = useCombinedRef(ref, itemRef);\n *\n * return <div ref={combinedRef} {...props}>innhold</div>\n * });\n * ```\n * @param refs array med refs.\n * @template T elementet som refereres til.\n * @returns callback med kombinerte refs.\n *\n * {@link useCombinedRef}\n */\n\nexport function useCombinedRef<T>(\n ...refs: Array<Ref<T> | undefined>\n): RefCallback<T> {\n return useCallback((element: T) => {\n refs.filter(Boolean).forEach(ref => {\n if (typeof ref === 'function') ref(element);\n else if (ref && typeof ref === 'object')\n (ref as RefObject<T>).current = element;\n });\n }, refs);\n}\n","import {\n type Coords,\n type Strategy,\n type UseFloatingReturn,\n arrow,\n autoUpdate,\n flip,\n offset as floatingOffset,\n shift,\n useFloating,\n} from '@floating-ui/react-dom';\n\nconst defaultOffset = 8;\n\nexport type Placement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n\nexport interface UseFloatPositionOptions {\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n * This is optimized for performance but can still be costly.\n * @default true\n */\n animationFrame?: boolean;\n /**\n * `offset` is used to displace the floating element from its core placement.\n * The value passed is logical, meaning its effect on the\n * physical result is dependent on the writing direction (e.g. RTL).\n * @default 8\n */\n offset?: number;\n /**\n * Where to place the floating element relative to its reference element.\n * @default 'bottom'\n */\n placement?: Placement;\n}\n\nexport interface FloatingStyles {\n position: Strategy;\n top: number;\n left: number;\n}\n\ninterface UseFloatPosition {\n refs: UseFloatingReturn['refs'];\n styles: {\n floating: FloatingStyles;\n arrow:\n | {\n [x: string]: string | number;\n position: Strategy;\n top: string | number;\n left: string | number;\n transform: string;\n }\n | undefined;\n };\n}\n\nexport const useFloatPosition = (\n arrowRef: HTMLElement | null,\n options: UseFloatPositionOptions = {},\n): UseFloatPosition => {\n const {\n animationFrame = true,\n offset = defaultOffset,\n placement = 'bottom',\n } = options;\n\n const middleware = [\n floatingOffset(offset),\n flip(),\n shift(),\n\n // Only add arrow(...) if arrowRef is set\n ...(arrowRef ? [arrow({ element: arrowRef })] : []),\n ];\n\n const {\n x,\n y,\n strategy,\n middlewareData,\n placement: actualPlacement,\n refs,\n } = useFloating({\n placement,\n middleware,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, update, { animationFrame }),\n });\n\n return {\n refs,\n styles: {\n floating: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n arrow: middlewareData.arrow\n ? getArrowStyling(strategy, actualPlacement, middlewareData.arrow)\n : undefined,\n },\n };\n};\n\ntype Arrow = Partial<Coords> & { centerOffset: number };\n\nfunction getArrowStyling(\n strategy: Strategy,\n placement: Placement,\n arrow: Arrow,\n) {\n const arrowPlacement = placementToArrowPlacement(placement);\n\n const arrowPlacementOffset = {\n top: '-15px',\n bottom: '-15px',\n right: '-21px',\n left: '-21px',\n }[arrowPlacement];\n\n const rotateArrow = {\n top: 'rotate(180deg)',\n right: 'rotate(-90deg)',\n bottom: '',\n left: 'rotate(90deg)',\n }[arrowPlacement];\n\n return {\n position: strategy,\n top: arrow?.y ?? '',\n left: arrow?.x ?? '',\n [arrowPlacement]: arrowPlacementOffset,\n transform: rotateArrow,\n };\n}\n\ntype ArrowPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nfunction placementToArrowPlacement(placement: Placement): ArrowPlacement {\n switch (placement) {\n case 'top':\n case 'top-start':\n case 'top-end':\n return 'bottom';\n\n case 'bottom':\n case 'bottom-start':\n case 'bottom-end':\n return 'top';\n\n case 'left':\n case 'left-start':\n case 'left-end':\n return 'right';\n\n case 'right':\n case 'right-start':\n case 'right-end':\n return 'left';\n }\n}\n","import { type RefObject, useEffect, useRef } from 'react';\n\nimport { getFocusableElements } from '../../../dds-components/src/utils';\n\n/**\n * Fanger fokus i en loop inni et element. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const componentRef = useFocusTrap<HTMLDivElement>(props.isOpen);\n *\n * return props.isOpen ? <div ref={componentRef}><button>click</button></div> : null;\n *\n * }\n * ```\n * @param active om focus skal fanges, f.eks. når en modal åpnes.\n * @param initialFocusRef Ref som skal motta focus når focus trap er aktiv.\n * @returns ref til elementet som fanger fokus.\n */\n\nexport function useFocusTrap<T extends HTMLElement>(\n active: boolean,\n initialFocusRef: RefObject<HTMLElement | null> | undefined = undefined,\n): RefObject<T | null> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current) return;\n\n const focusableElements = getFocusableElements(elementRef);\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (!e.shiftKey && document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n\n if (e.shiftKey && document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n }\n\n const element = elementRef.current;\n\n if (element && active) {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n};\n","import { useEffect, useState } from 'react';\n\n/**\n * Tillater effekter og animasjoner å bli gjennomført like etter et element blir lagt til eller like før det blir fjernet fra DOM.\n * Typisk bruk:\n * ```\n * // CSS\n * .component {\n * transition: opacity 0.2s;\n * opacity: 0;\n * }\n *\n * .transitionedIn.mounted {\n * opacity: 1;\n * }\n *\n * const MyComponent = (props) => {\n *\n * const hasTransitionedIn = useMountTransition(props.isMounted, 500);\n *\n * return props.isMounted || hasTransitionedIn ? (\n * <div\n * className={`component ${hasTransitionedIn && 'transitionedIn'} ${props.isMounted && 'mounted'}`}\n * >\n * innhold\n * </div>)\n * : null;\n *\n * }\n * ```\n * @param isMounted om elementet er mounted.\n * @param unmountDelay hvor lenge transition skal vare før unmount.\n * @returns om transition er ferdig.\n */\n\nexport const useMountTransition = (\n isMounted: boolean,\n unmountDelay: number,\n) => {\n const [hasTransitionedIn, setHasTransitionedIn] = useState(false);\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n if (isMounted && !hasTransitionedIn) setHasTransitionedIn(true);\n else if (!isMounted && hasTransitionedIn) {\n timeoutId = setTimeout(() => setHasTransitionedIn(false), unmountDelay);\n }\n return () => {\n clearTimeout(timeoutId);\n };\n }, [unmountDelay, isMounted, hasTransitionedIn]);\n return hasTransitionedIn;\n};\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når brukeren klikker utenfor et element, f.eks at elementet fjernes fra DOM.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnClickOutside(ref.current, () => setOpen(false));\n *\n * return <div ref={ref}>innhold</div>\n * ```\n * @param element HTML elementet man klikker utenfor.\n * @param handler funksjonen som kjøres ved klikk utenfor.\n */\n\nexport function useOnClickOutside(\n element:\n | HTMLElement\n | null\n | undefined\n | Array<HTMLElement | null | undefined>,\n handler: (event: MouseEvent | TouchEvent) => void,\n) {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const elements = Array.isArray(element)\n ? element\n : [element].filter(Boolean);\n\n const hasClickedInside = elements.some(el =>\n el?.contains(event.target as HTMLElement),\n );\n\n // ClearIndicator in react-select removes itself from DOM before this handler goes off.\n // Therefore a click on it will always be counted as a click outside, for everything.\n // This is not a great solution, but it is a fair assumption that this will do more good than harm.\n const clickedOnSomethingInDocument = document.contains(\n event.target as Node,\n );\n if (hasClickedInside || !clickedOnSomethingInDocument) return;\n\n handler(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [element, handler]);\n}\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når en spesifisert tast blir trykt ned.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnKeyDown(['Escape', 'Esc'], () => setOpen(false));\n *\n * return isOpen ? <div>innhold</div> : null;\n * ```\n * @param key tasten som trykkes.\n * @param handler funksjonen som skal kjøres.\n */\n\nexport const useOnKeyDown = (\n key: string | Array<string>,\n handler: (event: KeyboardEvent) => void,\n) => {\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n const keys = Array.isArray(key) ? key : [key];\n if (keys.indexOf(event.key) !== -1) {\n handler(event);\n }\n };\n\n document.addEventListener('keydown', listener, true);\n\n return () => {\n document.removeEventListener('keydown', listener, true);\n };\n }, [handler]);\n};\n","import { type RefObject, useEffect, useRef } from 'react';\n\nimport { getFocusableElements } from '../../../dds-components/src/utils';\n\n/**\n * Returnerer fokus til et element når første eller siste barn i en container mister fokus ved tastaturnavigasjon. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const [isOpen, setOpen] = useState(true);\n * const close = () => setOpen(false);\n * const triggerRef = useRef<HTMLButtonElement>(null);\n * const containerRef = useReturnFocusOnBlur<HTMLDivElement>(\n * isOpen,\n * triggerRef.current,\n * () => close()\n * );\n *\n * return (\n * <div>\n * <button ref={triggerRef} >Åpne popover</button>\n * <div ref={containerRef}>\n * <button>gjør noe</button>\n * </div>\n * </div>\n * )\n * }\n * ```\n * @param active om container skal få fokus, f.eks. når en modal åpnes.\n * @param triggerElement elementet som skal få fokus når fokus forlater container.\n * @param onBlur ekstra logikk når fokus forlater container.\n * @returns ref til container som får fokus.\n */\n\nexport function useReturnFocusOnBlur<T extends HTMLElement>(\n active: boolean,\n onBlur: () => void,\n triggerElement?: HTMLElement | null,\n): RefObject<T | null> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current || !triggerElement)\n return;\n\n const focusableElements = getFocusableElements(elementRef);\n const lastElement = focusableElements[focusableElements.length - 1];\n const firstElement = focusableElements[0];\n\n if (\n (!e.shiftKey && document.activeElement === lastElement) ||\n (e.shiftKey && document.activeElement === firstElement) ||\n (e.shiftKey && document.activeElement === element)\n ) {\n triggerElement.focus();\n e.preventDefault();\n onBlur();\n }\n }\n\n const element = elementRef.current;\n if (element && active) {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import {\n type Dispatch,\n type KeyboardEvent,\n type SetStateAction,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nimport { type Direction } from '../types';\n\nexport const isKeyboardEvent = (\n e: Event | KeyboardEvent<Element>,\n): e is KeyboardEvent<Element> =>\n (e as KeyboardEvent<Element>).key !== undefined;\n\n/**\n * Bytter fokus mellom elementer i en gruppe med piltaster og ikke Tab, og looper fokus i gruppen. Typisk bruk:\n * ```\n * import elements from './elements';\n * import RoveItem from './RoveItem';\n *\n * const MyComponent = () => {\n * const [focus, setFocus] = useRoveFocus(elements.length);\n *\n * return (\n * <ul>\n * {elements.map((element, index) => (\n * <li key={element}>\n * <RoveItem index={index} focus={focus === index} setFocus={setFocus}>{element.name}</RoveItem>\n * </li>\n * ))}\n * </ul>)\n * }\n * ```\n * @param size antall elementer i gruppen.\n * @param active om fokus skal kontrolleres av hooken. Når status blir inaktiv vil fokusrekkefølge nullstilles.\n * @param direction retning elementene blas i.\n * @param noWrap om indeksen skal 'wrappe' rundt til 0 hvis den går over size - 1, eller til size - 1 hvis den går under 0.\n * @returns hook par: indeksen til fokuserte elemenentet og funksjonen som håndterer fokus.\n */\n\nexport function useRoveFocus(\n size?: number,\n active?: boolean,\n direction: Direction = 'column',\n noWrap?: boolean,\n): [number, Dispatch<SetStateAction<number>>] {\n const [currentFocusIndex, setCurrentFocusIndex] = useState(-1);\n\n const nextKey = direction === 'row' ? 'ArrowRight' : 'ArrowDown';\n const previousKey = direction === 'row' ? 'ArrowLeft' : 'ArrowUp';\n\n const handleKeyDown = useCallback(\n (e: Event) => {\n if (!size || !isKeyboardEvent(e)) return;\n if (e.key === nextKey) {\n // Down / Right arrow\n e.preventDefault();\n setCurrentFocusIndex(prev => {\n if (prev === size - 1) return noWrap ? prev : 0;\n return prev + 1;\n });\n } else if (e.key === previousKey) {\n // Up / Left arrow\n e.preventDefault();\n setCurrentFocusIndex(prev => {\n if (prev === -1 || prev === 0) return noWrap ? prev : size - 1;\n return prev - 1;\n });\n }\n },\n [size, setCurrentFocusIndex, direction, noWrap],\n );\n\n useEffect(() => {\n if (!active) {\n setCurrentFocusIndex(-1);\n return;\n }\n\n document.addEventListener('keydown', handleKeyDown, false);\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n }, [handleKeyDown, active]);\n\n return [currentFocusIndex, setCurrentFocusIndex];\n}\n","import { useEffect, useState } from 'react';\n\nexport enum ScreenSize {\n XSmall = 0,\n Small,\n Medium,\n Large,\n XLarge,\n}\n\nconst screenSizesAndMediaQueries: Array<[ScreenSize, string]> = [\n [\n ScreenSize.XLarge,\n /** var(--dds-breakpoint-xl) */\n `only screen and (min-width: 1920px)`,\n ],\n [\n ScreenSize.Large,\n /** var(--dds-breakpoint-lg) */\n `only screen and (min-width: 1280px)`,\n ],\n [\n ScreenSize.Medium,\n /** var(--dds-breakpoint-md) */\n `only screen and (min-width: 960px)`,\n ],\n [\n ScreenSize.Small,\n /** var(--dds-breakpoint-sm) */\n `only screen and (min-width: 600px)`,\n ],\n [\n ScreenSize.XSmall,\n /** var(--dds-breakpoint-xs) */\n `only screen and (min-width: 1px)`,\n ],\n];\n\n/**\n * Sjekker skjermstørrelsen basert på brekkpunkter definerte i designsystemet. Eksempel på bruk:\n * ```\n * const MyComponent = () => {\n * const screenSize = useScreenSize();\n * const isSmallScreen = screenSize === ScreenSize.Small;\n *\n * return <div className={isSmallScreen && 'smallDiv'} >innhold</div>\n * }\n * ```\n * @returns den aktuelle skjermstørrelsen basert på {@link ScreenSize}.\n */\n\nexport const useScreenSize = function () {\n const [screenSize, setScreenSize] = useState(ScreenSize.Large);\n\n useEffect(() => {\n function listener() {\n for (const [screenSize, mediaQuery] of screenSizesAndMediaQueries) {\n if (window.matchMedia(mediaQuery).matches) {\n setScreenSize(screenSize);\n return;\n }\n }\n }\n listener();\n\n window.addEventListener('resize', listener);\n return () => window.removeEventListener('resize', listener);\n }, []);\n\n return screenSize;\n};\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når vindusstørrelsen endrer seg.\n * Typisk bruk:\n * ```\n * const [width, setWidth] = useState<number>(window.innerWidth);\n * useResize(() => setWidth(window.innerWidth));\n *\n * return <div>vindusstørrelse: {width}px</div>;\n * ```\n * @param handler funksjonen som skal kjøres.\n */\n\nexport const useWindowResize = (handler: () => void) => {\n useEffect(() => {\n window.addEventListener('resize', handler);\n return () => window.removeEventListener('resize', handler);\n }, [handler]);\n};\n","import { ScreenSize } from '../../../hooks';\nimport { type Breakpoint } from '../../layout/common/Responsive.types';\n\nexport const getLiteralScreenSize = (screenSize: ScreenSize): Breakpoint => {\n switch (screenSize) {\n case ScreenSize.XLarge:\n return 'xl';\n case ScreenSize.Large:\n return 'lg';\n case ScreenSize.Medium:\n return 'md';\n case ScreenSize.Small:\n return 'sm';\n case ScreenSize.XSmall:\n return 'xs';\n }\n};\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../../utils';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\n\nexport type StylelessListProps<TProps extends object = object> = TProps &\n ComponentPropsWithRef<'ul'>;\n\nexport const StylelessList = ({ className, ...rest }: StylelessListProps) => (\n <ul {...rest} className={cn(className, utilStyles['remove-list-styling'])} />\n);\n","import { type Property } from 'csstype';\n\n/**\n * Styling utils i TS (CSS-in-JS)\n */\n\n/**\n * DDS utils\n */\n\nexport const outlineOffset = 'var(--dds-spacing-x0-125)';\nexport const outlineInset = 'calc(var(--dds-spacing-x0-125) * -1)';\n\nexport const focusVisible = {\n outline: 'var(--dds-color-focus-outside) 2px solid',\n outlineOffset: outlineOffset,\n boxShadow: '0 0 0 2px var(--dds-color-focus-inside)',\n};\n\nexport const focusVisibleTransitionValue = 'outline-offset 0.2s';\n\nexport const focusVisibleInset = {\n outline: 'var(--dds-color-focus-outside) 2px solid',\n outlineOffset: outlineInset,\n};\n\nconst scrollbarWidth: Property.ScrollbarWidth = 'thin';\n\nexport const scrollbarStyling = {\n scrollbarColor: 'var(--dds-color-surface-scrollbar) transparent',\n scrollbarWidth: scrollbarWidth,\n\n /* Safari styling. TODO: fjernes når scrollbar styling blir standardisert */\n\n /* width */\n '&::-webkit-scrollbar': {\n width: 'var(--dds-spacing-x0-5)',\n height: 'var(--dds-spacing-x0-5)',\n },\n /* Track */\n '&::-webkit-scrollbar-track': {\n background: 'transparent',\n },\n /* Handle */\n '&::-webkit-scrollbar-thumb': {\n background: 'var(--dds-color-surface-scrollbar)',\n },\n};\n\nexport const visibilityTransition = (open: boolean) => {\n return `\n @media (prefers-reduced-motion: no-preference) {\n transition:\n visibility 0.4s,\n opacity 0.2s;\n }\n visibility: ${open ? 'visible' : 'hidden'};\n opacity: ${open ? 1 : 0};\n `;\n};\n\n/**\n * Generelle utils\n */\n\nexport const hideInput = {\n clip: 'rect(0 0 0 0)',\n position: 'absolute',\n height: '1px',\n width: '1px',\n margin: 0,\n};\n\nexport const inheritLinkStyling = {\n color: 'inherit',\n textDecoration: 'inherit',\n};\n\nexport const removeButtonStyling = {\n background: 'none',\n color: 'inherit',\n border: 'none',\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n outline: 'inherit',\n};\n\nexport const removeListStyling = {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n};\n\nexport const normalizeButton = {\n margin: 0,\n textTransform: 'none' as Property.TextTransform,\n};\n","/* Primitives */\n\n.dds-p {\n --dds-r-p: var(--dds-r-xs-p);\n padding: var(--dds-r-p, initial);\n}\n\n.dds-p-i {\n --dds-r-p-i: var(--dds-r-xs-p-i);\n padding-inline: var(--dds-r-p-i, initial);\n}\n\n.dds-p-b {\n --dds-r-p-b: var(--dds-r-xs-p-b);\n padding-block: var(--dds-r-p-b, initial);\n}\n\n.dds-m {\n --dds-r-m: var(--dds-r-xs-m);\n margin: var(--dds-r-m, initial);\n}\n\n.dds-m-i {\n --dds-r-m-i: var(--dds-r-xs-m-i);\n margin-inline: var(--dds-r-m-i, initial);\n}\n\n.dds-m-b {\n --dds-r-m-b: var(--dds-r-xs-m-b);\n margin-block: var(--dds-r-m-b, initial);\n}\n\n.dds-h {\n --dds-r-h: var(--dds-r-xs-h);\n height: var(--dds-r-h, initial);\n}\n\n.dds-max-h {\n --dds-r-max-h: var(--dds-r-xs-max-h);\n max-height: var(--dds-r-max-h, initial);\n}\n\n.dds-min-h {\n --dds-r-min-h: var(--dds-r-xs-min-h);\n min-height: var(--dds-r-min-h, initial);\n}\n\n.dds-w {\n --dds-r-w: var(--dds-r-xs-w);\n width: var(--dds-r-w, initial);\n}\n\n.dds-max-w {\n --dds-r-max-w: var(--dds-r-xs-max-w);\n max-width: var(--dds-r-max-w, initial);\n}\n\n.dds-min-w {\n --dds-r-min-w: var(--dds-r-xs-min-w);\n min-width: var(--dds-r-min-w, initial);\n}\n\n.dds-pos {\n --dds-r-pos: var(--dds-r-xs-pos);\n position: var(--dds-r-pos, initial);\n}\n\n.dds-l {\n --dds-r-l: var(--dds-r-xs-l);\n left: var(--dds-r-l, initial);\n}\n\n.dds-r {\n --dds-r-r: var(--dds-r-xs-r);\n right: var(--dds-r-r, initial);\n}\n\n.dds-t {\n --dds-r-t: var(--dds-r-xs-t);\n top: var(--dds-r-t, initial);\n}\n\n.dds-b {\n --dds-r-b: var(--dds-r-xs-b);\n bottom: var(--dds-r-b, initial);\n}\n\n.dds-o {\n --dds-r-o: var(--dds-r-xs-o);\n overflow: var(--dds-r-o, initial);\n}\n\n.dds-o-x {\n --dds-r-o-x: var(--dds-r-xs-o-x);\n overflow-x: var(--dds-r-o-x, initial);\n}\n\n.dds-o-y {\n --dds-r-o-y: var(--dds-r-xs-o-y);\n overflow-y: var(--dds-r-o-y, initial);\n}\n\n.dds-display {\n --dds-r-display: var(--dds-r-xs-display);\n display: var(--dds-r-display, initial);\n}\n\n.dds-text-align {\n --dds-r-text-align: var(--dds-r-xs-text-align);\n text-align: var(--dds-r-text-align, initial);\n}\n\n/* Flex */\n\n.dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-xs-flex-dir);\n flex-direction: var(--dds-r-flex-dir, initial);\n}\n\n.dds-gap {\n --dds-r-gap: var(--dds-r-xs-gap);\n gap: var(--dds-r-gap, initial);\n}\n\n.dds-c-gap {\n --dds-r-c-gap: var(--dds-r-xs-c-gap);\n -moz-column-gap: var(--dds-r-c-gap, initial);\n column-gap: var(--dds-r-c-gap, initial);\n}\n\n.dds-r-gap {\n --dds-r-r-gap: var(--dds-r-xs-r-gap);\n row-gap: var(--dds-r-r-gap, initial);\n}\n\n.dds-a-i {\n --dds-r-a-i: var(--dds-r-xs-a-i);\n align-items: var(--dds-r-a-i, initial);\n}\n\n.dds-a-c {\n --dds-r-a-c: var(--dds-r-xs-a-c);\n align-content: var(--dds-r-a-c, initial);\n}\n\n.dds-j-i {\n --dds-r-j-i: var(--dds-r-xs-j-i);\n justify-items: var(--dds-r-j-i, initial);\n}\n\n.dds-j-c {\n --dds-r-j-c: var(--dds-r-xs-j-c);\n justify-content: var(--dds-r-j-c, initial);\n}\n\n.dds-wrap {\n --dds-r-wrap: var(--dds-r-xs-wrap);\n flex-wrap: var(--dds-r-wrap, initial);\n}\n\n.dds-basis {\n --dds-r-basis: var(--dds-r-xs-basis);\n flex-basis: var(--dds-r-basis, initial);\n}\n\n.dds-flow {\n --dds-r-flow: var(--dds-r-xs-flow);\n flex-flow: var(--dds-r-flow, initial);\n}\n\n@media (max-width: 599px) {\n .dds-p {\n --dds-r-p: var(--dds-r-xs-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-xs-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-xs-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-xs-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-xs-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-xs-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-xs-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-xs-max-h);\n }\n .dds-min-h {\n --dds-r-max-h: var(--dds-r-xs-max-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-xs-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-xs-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-xs-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-xs-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-xs-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-xs-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-xs-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-xs-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-xs-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-xs-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-xs-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-xs-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-xs-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-xs-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-xs-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-xs-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-xs-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-xs-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-xs-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-xs-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-xs-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-xs-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-xs-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-xs-flow);\n }\n}\n\n@media (min-width: 600px) {\n .dds-p {\n --dds-r-p: var(--dds-r-sm-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-sm-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-sm-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-sm-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-sm-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-sm-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-sm-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-sm-max-h);\n }\n .dds-min-h {\n --dds-r-max-h: var(--dds-r-sm-max-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-sm-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-sm-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-sm-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-sm-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-sm-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-sm-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-sm-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-sm-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-sm-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-sm-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-sm-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-sm-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-sm-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-sm-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-sm-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-sm-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-sm-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-sm-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-sm-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-sm-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-sm-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-sm-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-sm-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-sm-flow);\n }\n}\n\n@media (min-width: 960px) {\n .dds-p {\n --dds-r-p: var(--dds-r-md-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-md-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-md-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-md-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-md-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-md-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-md-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-md-max-h);\n }\n .dds-min-h {\n --dds-r-max-h: var(--dds-r-md-max-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-md-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-md-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-md-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-md-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-md-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-md-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-md-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-md-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-md-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-md-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-md-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-md-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-md-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-md-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-md-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-md-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-md-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-md-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-md-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-md-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-md-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-md-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-md-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-md-flow);\n }\n}\n\n@media (min-width: 1280px) {\n .dds-p {\n --dds-r-p: var(--dds-r-lg-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-lg-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-lg-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-lg-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-lg-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-lg-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-lg-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-lg-max-h);\n }\n .dds-min-h {\n --dds-r-max-h: var(--dds-r-lg-max-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-lg-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-lg-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-lg-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-lg-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-lg-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-lg-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-lg-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-lg-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-lg-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-lg-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-lg-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-lg-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-lg-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-lg-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-lg-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-lg-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-lg-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-lg-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-lg-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-lg-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-lg-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-lg-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-lg-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-lg-flow);\n }\n}\n\n@media (min-width: 1920px) {\n .dds-p {\n --dds-r-p: var(--dds-r-xl-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-xl-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-xl-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-xl-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-xl-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-xl-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-xl-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-xl-max-h);\n }\n .dds-min-h {\n --dds-r-min-h: var(--dds-r-xl-min-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-xl-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-xl-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-xl-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-xl-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-xl-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-xl-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-xl-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-xl-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-xl-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-xl-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-xl-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-xl-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-xl-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-xl-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-xl-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-xl-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-xl-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-xl-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-xl-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-xl-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-xl-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-xl-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-xl-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-xl-flow);\n }\n}\n","import { type Property } from 'csstype';\n\nexport const BREAKPOINTS = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type Breakpoint = (typeof BREAKPOINTS)[number];\n\nexport const SPACING_SCALES = [\n 'x0',\n 'x0.125',\n 'x0.25',\n 'x0.5',\n 'x0.75',\n 'x1',\n 'x1.5',\n 'x2',\n 'x2.5',\n 'x3',\n 'x4',\n 'x6',\n 'x10',\n] as const;\n\nexport type SpacingScale = (typeof SPACING_SCALES)[number];\n\nexport type RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\n\nexport interface PrimitiveDisplayProps {\n /** Skjuler komponenten fra og med det angitte brekkpunktet og nedover. */\n hideBelow?: Breakpoint;\n /** Viser komponenten kun under det angitte brekkpunktet. */\n showBelow?: Breakpoint;\n}\n\nexport type BreakpointBasedProp<T> = {\n [k in Breakpoint]?: T;\n};\n\nexport type ResponsiveProp<T> = T | BreakpointBasedProp<T>;\n\ninterface PrimitiveLayoutProps {\n /** CSS `width`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n width?: ResponsiveProp<Property.Width>;\n /** CSS `max-width`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n maxWidth?: ResponsiveProp<Property.MaxWidth>;\n /** CSS `min-width`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n minWidth?: ResponsiveProp<Property.MinWidth>;\n /** CSS `height`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n height?: ResponsiveProp<Property.Height>;\n /** CSS `max-height`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n maxHeight?: ResponsiveProp<Property.MaxHeight>;\n /** CSS `min-height`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n minHeight?: ResponsiveProp<Property.MinHeight>;\n /** CSS `overflow`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n overflow?: ResponsiveProp<Property.Overflow>;\n /** CSS `overflow-y`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n overflowY?: ResponsiveProp<Property.OverflowY>;\n /** CSS `overflow-x`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n overflowX?: ResponsiveProp<Property.OverflowX>;\n /** CSS `position`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n position?: ResponsiveProp<Property.Position>;\n /** CSS `top`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n top?: ResponsiveProp<Property.Top | SpacingScale>;\n /** CSS `bottom`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n bottom?: ResponsiveProp<Property.Bottom | SpacingScale>;\n /** CSS `left`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n left?: ResponsiveProp<Property.Left | SpacingScale>;\n /** CSS `right`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n right?: ResponsiveProp<Property.Right | SpacingScale>;\n /** CSS `padding`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n padding?: ResponsiveProp<Property.Padding | SpacingScale>;\n /** CSS `padding-inline`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n paddingInline?: ResponsiveProp<Property.PaddingInline | SpacingScale>;\n /** CSS `padding-block`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n paddingBlock?: ResponsiveProp<Property.PaddingBlock | SpacingScale>;\n /** CSS `margin`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n margin?: ResponsiveProp<Property.Margin | SpacingScale>;\n /** CSS `margin-inline`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n marginInline?: ResponsiveProp<Property.MarginInline | SpacingScale>;\n /** CSS `margin-block`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n marginBlock?: ResponsiveProp<Property.MarginBlock | SpacingScale>;\n /** CSS `display`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n display?: ResponsiveProp<Property.Display>;\n /** CSS `flex-direction`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n flexDirection?: ResponsiveProp<Property.FlexDirection>;\n /** CSS `flex-basis`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n flexBasis?: ResponsiveProp<Property.FlexBasis>;\n /** CSS `flex-wrap`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n flexWrap?: ResponsiveProp<Property.FlexWrap>;\n /** CSS `flex-flow`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n flexFlow?: ResponsiveProp<Property.FlexFlow>;\n /** CSS `align-items`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n alignItems?: ResponsiveProp<Property.AlignItems>;\n /** CSS `justify-items`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n justifyItems?: ResponsiveProp<Property.JustifyItems>;\n /** CSS `align-content`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n alignContent?: ResponsiveProp<Property.AlignContent>;\n /** CSS `justify-content`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n justifyContent?: ResponsiveProp<Property.JustifyContent>;\n /** CSS `text-align`. Støtter standardverdier per brekkpunkt eller samme for alle skjermstørrelser. */\n textAlign?: ResponsiveProp<Property.TextAlign>;\n /** CSS `gap`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n gap?: ResponsiveProp<Property.Gap | SpacingScale>;\n /** CSS `row-gap`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n rowGap?: ResponsiveProp<Property.RowGap | SpacingScale>;\n /** CSS `column-gap`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n columnGap?: ResponsiveProp<Property.ColumnGap | SpacingScale>;\n}\n\nexport type ResponsiveProps = PrimitiveDisplayProps & PrimitiveLayoutProps;\n\nexport type ResponsiveStackProps = Omit<\n ResponsiveProps,\n 'display' | 'flexDirection'\n>;\n","import { type Properties } from 'csstype';\n\nimport {\n BREAKPOINTS,\n type Breakpoint,\n type RelativeColumnsOccupied,\n type ResponsiveProp,\n SPACING_SCALES,\n type SpacingScale,\n} from './Responsive.types';\nimport {\n type BorderColor,\n type PaperBackground,\n isBorderColor,\n isPaperBackground,\n} from '../../../types';\n\nexport function isBreakpointObject<T>(\n value: ResponsiveProp<T>,\n): value is { [k in Breakpoint]?: T } {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport const getBreakpointFromScreenWidth = (width: number) => {\n if (width > 1919) return 'xl';\n if (width >= 1280) return 'lg';\n if (width >= 960) return 'md';\n if (width >= 600) return 'sm';\n return 'xs';\n};\n\nexport const isSpacingScale = (value: unknown): value is SpacingScale => {\n return (\n typeof value === 'string' && SPACING_SCALES.includes(value as SpacingScale)\n );\n};\n\nexport const isRelativeGridColumn = (\n type: unknown,\n): type is RelativeColumnsOccupied => {\n return type === 'all' || type === 'firstHalf' || type === 'secondHalf';\n};\n\nexport function spacingPropToToken(value: string): string {\n return value.replace(/\\./g, '-');\n}\n\nconst getSpacingToken = (v: SpacingScale): string =>\n `var(--dds-spacing-${spacingPropToToken(v)})`;\n\nconst getColorToken = (v: PaperBackground | BorderColor): string =>\n `var(--dds-color-${v})`;\n\nconst relativeGridColumnToken = (\n v: RelativeColumnsOccupied,\n bp?: Breakpoint,\n): string => {\n if (v === 'all') return '1 / -1';\n if (!bp) return '';\n return v === 'firstHalf'\n ? `1 / calc(var(--dds-grid-${bp}-count) / 2 + 1)`\n : `calc(var(--dds-grid-${bp}-count) / 2 + 1) / -1`;\n};\n\nconst getValue = (v: string, bp?: Breakpoint): string => {\n if (isPaperBackground(v) || isBorderColor(v)) return getColorToken(v);\n if (isSpacingScale(v)) return getSpacingToken(v);\n if (isRelativeGridColumn(v)) return relativeGridColumnToken(v, bp);\n return v;\n};\n\nconst convertMultiValue = (value: string, bp?: Breakpoint) =>\n value\n .split(' ')\n .map(v => getValue(v, bp))\n .join(' ');\n\nexport function getResponsiveCSSProperties<T>(\n property?: ResponsiveProp<T>,\n prefix?: string,\n suffix?: string,\n): Properties | undefined {\n if (!property) return;\n\n const properties: Properties = {};\n const pPrefix = `--dds-${prefix}`;\n const pSuffix = suffix ? `-${suffix}` : '';\n\n if (isBreakpointObject(property)) {\n BREAKPOINTS.forEach(bp => {\n if (property[bp]) {\n (properties as Record<string, string>)[`${pPrefix}-${bp}${pSuffix}`] =\n convertMultiValue(property[bp].toString(), bp);\n }\n });\n } else {\n (properties as Record<string, string>)[`${pPrefix}${pSuffix}`] =\n convertMultiValue(property.toString());\n }\n\n return properties;\n}\n\nexport function applyResponsiveStyle<T>(\n p: T,\n bp?: Breakpoint,\n largeScreenP?: T,\n): ResponsiveProp<T> | undefined {\n if (!bp) return largeScreenP;\n const bpIndex = BREAKPOINTS.indexOf(bp);\n return BREAKPOINTS.reduce((acc, curr, index) => {\n return { ...acc, [curr]: index <= bpIndex ? p : largeScreenP };\n }, {});\n}\n",".xs-hide-below {\n @media only screen and (max-width: 599px) {\n display: none !important;\n }\n}\n\n.sm-hide-below {\n @media only screen and (max-width: 959px) {\n display: none !important;\n }\n}\n\n.md-hide-below {\n @media only screen and (max-width: 1279px) {\n display: none !important;\n }\n}\n\n.lg-hide-below {\n @media only screen and (max-width: 1919px) {\n display: none !important;\n }\n}\n\n.xl-hide-below {\n display: none !important;\n}\n\n.xs-hide-above {\n @media only screen and (min-width: 600px) {\n display: none !important;\n }\n}\n\n.sm-hide-above {\n @media only screen and (min-width: 960px) {\n display: none !important;\n }\n}\n\n.md-hide-above {\n @media only screen and (min-width: 1280px) {\n display: none !important;\n }\n}\n\n.lg-hide-above {\n @media only screen and (min-width: 1920px) {\n display: none !important;\n }\n}\n","import { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { ElementAs } from '../../helpers';\nimport styles from '../common/display.module.css';\nimport { type PrimitiveDisplayProps } from '../common/Responsive.types';\n\nexport type ShowHideProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<T, PrimitiveDisplayProps>;\n\nexport const ShowHide = <T extends ElementType = 'div'>({\n hideBelow,\n showBelow,\n className,\n htmlProps,\n id,\n ...rest\n}: ShowHideProps<T>) => (\n <ElementAs\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n hideBelow && styles[`${hideBelow}-hide-below`],\n showBelow && showBelow !== 'xl' && styles[`${showBelow}-hide-above`],\n ),\n htmlProps,\n rest,\n )}\n />\n);\n\nShowHide.displayName = 'ShowHide';\n","import { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport styles from '../common/layout.module.css';\nimport { type ResponsiveProps } from '../common/Responsive.types';\nimport { getResponsiveCSSProperties } from '../common/utils';\nimport { ShowHide } from '../ShowHide';\n\nexport type BoxProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<T, ResponsiveProps>;\n\nexport const Box = <T extends ElementType = 'div'>({\n id,\n className,\n style,\n padding,\n paddingInline,\n paddingBlock,\n margin,\n marginInline,\n marginBlock,\n height,\n maxHeight,\n minHeight,\n width,\n maxWidth,\n minWidth,\n position,\n left,\n right,\n bottom,\n top,\n overflow,\n overflowX,\n overflowY,\n display,\n textAlign,\n flexDirection,\n gap,\n columnGap,\n rowGap,\n alignItems,\n alignContent,\n justifyItems,\n justifyContent,\n flexWrap,\n flexBasis,\n flexFlow,\n htmlProps,\n ...rest\n}: BoxProps<T>) => {\n const responsiveStyles = {\n ...getResponsiveCSSProperties(padding, 'r', 'p'),\n ...getResponsiveCSSProperties(paddingInline, 'r', 'p-i'),\n ...getResponsiveCSSProperties(paddingBlock, 'r', 'p-b'),\n ...getResponsiveCSSProperties(margin, 'r', 'm'),\n ...getResponsiveCSSProperties(marginInline, 'r', 'm-i'),\n ...getResponsiveCSSProperties(marginBlock, 'r', 'm-b'),\n ...getResponsiveCSSProperties(height, 'r', 'h'),\n ...getResponsiveCSSProperties(maxHeight, 'r', 'max-h'),\n ...getResponsiveCSSProperties(minHeight, 'r', 'min-h'),\n ...getResponsiveCSSProperties(width, 'r', 'w'),\n ...getResponsiveCSSProperties(maxWidth, 'r', 'max-w'),\n ...getResponsiveCSSProperties(minWidth, 'r', 'min-w'),\n ...getResponsiveCSSProperties(position, 'r', 'pos'),\n ...getResponsiveCSSProperties(left, 'r', 'l'),\n ...getResponsiveCSSProperties(right, 'r', 'r'),\n ...getResponsiveCSSProperties(top, 'r', 't'),\n ...getResponsiveCSSProperties(bottom, 'r', 'b'),\n ...getResponsiveCSSProperties(overflow, 'r', 'o'),\n ...getResponsiveCSSProperties(overflowX, 'r', 'o-x'),\n ...getResponsiveCSSProperties(overflowY, 'r', 'o-y'),\n ...getResponsiveCSSProperties(display, 'r', 'display'),\n ...getResponsiveCSSProperties(textAlign, 'r', 'text-align'),\n ...getResponsiveCSSProperties(flexDirection, 'r', 'flex-dir'),\n ...getResponsiveCSSProperties(gap, 'r', 'gap'),\n ...getResponsiveCSSProperties(columnGap, 'r', 'c-gap'),\n ...getResponsiveCSSProperties(rowGap, 'r', 'r-gap'),\n ...getResponsiveCSSProperties(alignItems, 'r', 'a-i'),\n ...getResponsiveCSSProperties(alignContent, 'r', 'a-c'),\n ...getResponsiveCSSProperties(justifyItems, 'r', 'j-i'),\n ...getResponsiveCSSProperties(justifyContent, 'r', 'j-c'),\n ...getResponsiveCSSProperties(flexWrap, 'r', 'wrap'),\n ...getResponsiveCSSProperties(flexBasis, 'r', 'basis'),\n ...getResponsiveCSSProperties(flexFlow, 'r', 'flow'),\n };\n\n return (\n <ShowHide\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n padding && styles['dds-p'],\n paddingInline && styles['dds-p-i'],\n paddingBlock && styles['dds-p-b'],\n margin && styles['dds-m'],\n marginInline && styles['dds-m-i'],\n marginBlock && styles['dds-m-b'],\n height && styles['dds-h'],\n maxHeight && styles['dds-max-h'],\n minHeight && styles['dds-min-h'],\n width && styles['dds-w'],\n maxWidth && styles['dds-max-w'],\n minWidth && styles['dds-min-w'],\n position && styles['dds-pos'],\n left && styles['dds-l'],\n right && styles['dds-r'],\n top && styles['dds-t'],\n bottom && styles['dds-b'],\n overflow && styles['dds-o'],\n overflowX && styles['dds-o-x'],\n overflowY && styles['dds-o-y'],\n display && styles['dds-display'],\n textAlign && styles['dds-text-align'],\n flexDirection && styles['dds-flex-dir'],\n gap && styles['dds-gap'],\n columnGap && styles['dds-c-gap'],\n rowGap && styles['dds-r-gap'],\n alignContent && styles['dds-a-c'],\n alignItems && styles['dds-a-i'],\n justifyContent && styles['dds-j-c'],\n justifyItems && styles['dds-j-i'],\n flexWrap && styles['dds-wrap'],\n flexBasis && styles['dds-basis'],\n flexFlow && styles['dds-flow'],\n ),\n htmlProps,\n rest,\n )}\n style={{ ...style, ...responsiveStyles }}\n />\n );\n};\n\nBox.displayName = 'Box';\n","/*Grid*/\n.dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-xs-grid-template-columns);\n grid-template-columns: var(--dds-r-grid-template-columns);\n}\n\n/*GridChild*/\n\n.dds-grid-column {\n --dds-r-grid-column: var(--dds-r-xs-grid-column);\n grid-column: var(--dds-r-grid-column);\n}\n\n.dds-grid-row {\n --dds-r-grid-row: var(--dds-r-xs-grid-row);\n grid-row: var(--dds-r-grid-row);\n}\n\n.dds-j-self {\n --dds-r-j-self: var(--dds-r-xs-j-self);\n grid-row: var(--dds-r-j-self);\n}\n\n.child--first-half {\n grid-column: 1 / calc(var(--dds-grid-col-count) / 2 + 1);\n}\n\n.child--second-half {\n grid-column: calc(var(--dds-grid-col-count) / 2 + 1) / -1;\n}\n\n@media (max-width: 599px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-xs-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-xs-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-xs-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-xs-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-xs-j-self);\n }\n}\n\n@media (min-width: 600px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-sm-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-sm-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-sm-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-sm-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-sm-j-self);\n }\n}\n\n@media (min-width: 960px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-md-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-md-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-md-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-md-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-md-j-self);\n }\n}\n\n@media (min-width: 1280px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-lg-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-lg-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-lg-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-lg-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-lg-j-self);\n }\n}\n\n@media (min-width: 1920px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-xl-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-xl-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-xl-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-xl-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-xl-j-self);\n }\n}\n","import { type Property } from 'csstype';\nimport { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { Box } from '../Box';\nimport styles from './Grid.module.css';\nimport {\n type ResponsiveProp,\n type ResponsiveProps,\n} from '../common/Responsive.types';\nimport { getResponsiveCSSProperties } from '../common/utils';\n\nexport type GridProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<\n T,\n Omit<\n {\n /** CSS `grid-template-columns`. Støtter standardverdier per brekkpunkt eller samme for alle skjermstørrelser.\n * @default {\n xs: 'repeat(var(--dds-grid-xs-count), minmax(0, 1fr))',\n sm: 'repeat(var(--dds-grid-sm-count), minmax(0, 1fr))',\n md: 'repeat(var(--dds-grid-md-count), minmax(0, 1fr))',\n lg: 'repeat(var(--dds-grid-lg-count), minmax(0, 1fr))',\n xl: 'repeat(var(--dds-grid-xl-count), minmax(0, 1fr))',\n }\n */\n gridTemplateColumns?: ResponsiveProp<Property.GridTemplateColumns>;\n } & ResponsiveProps,\n 'display'\n >\n >;\n\nexport const Grid = <T extends ElementType = 'div'>({\n id,\n className,\n htmlProps,\n gridTemplateColumns = {\n xs: 'repeat(var(--dds-grid-xs-count), minmax(0, 1fr))',\n sm: 'repeat(var(--dds-grid-sm-count), minmax(0, 1fr))',\n md: 'repeat(var(--dds-grid-md-count), minmax(0, 1fr))',\n lg: 'repeat(var(--dds-grid-lg-count), minmax(0, 1fr))',\n xl: 'repeat(var(--dds-grid-xl-count), minmax(0, 1fr))',\n },\n columnGap = {\n xs: 'var(--dds-grid-xs-gutter-size)',\n sm: 'var(--dds-grid-sm-gutter-size)',\n md: 'var(--dds-grid-md-gutter-size)',\n lg: 'var(--dds-grid-lg-gutter-size)',\n xl: 'var(--dds-grid-xl-gutter-size)',\n },\n rowGap = {\n xs: 'var(--dds-grid-xs-gutter-size)',\n sm: 'var(--dds-grid-sm-gutter-size)',\n md: 'var(--dds-grid-md-gutter-size)',\n lg: 'var(--dds-grid-lg-gutter-size)',\n xl: 'var(--dds-grid-xl-gutter-size)',\n },\n marginInline = { xs: 'x2', sm: 'x2', md: 'x4', lg: 'x6', xl: 'x10' },\n style,\n ...rest\n}: GridProps<T>) => {\n const styleVariables = {\n ...getResponsiveCSSProperties(\n gridTemplateColumns,\n 'r',\n 'grid-template-columns',\n ),\n };\n return (\n <Box\n display=\"grid\"\n {...getBaseHTMLProps(\n id,\n cn(className, styles['dds-grid-template-columns']),\n htmlProps,\n rest,\n )}\n marginInline={marginInline}\n columnGap={columnGap}\n rowGap={rowGap}\n style={{ ...style, ...styleVariables }}\n />\n );\n};\n\nGrid.displayName = 'Grid';\n","import {\n type Properties,\n type Property,\n type StandardProperties,\n} from 'csstype';\nimport { type ElementType } from 'react';\n\nimport { Box } from '../Box';\nimport styles from './Grid.module.css';\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport {\n type ResponsiveProp,\n type ResponsiveProps,\n} from '../common/Responsive.types';\nimport { getResponsiveCSSProperties } from '../common/utils';\n\ntype RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\n\nexport type ColumnsOccupied = ResponsiveProp<\n StandardProperties['gridColumn'] | RelativeColumnsOccupied\n>;\n\nexport type GridChildProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<\n T,\n {\n /**Hvilke kolonner innholdet skal okkupere. Støtter standardverdier for CSS `grid-column` og relative verider `'all'`, `'firstHalf'` eller `'secondHalf'`, per brekkpunkt eller samme for alle skjermstørrelser. */\n columnsOccupied?: ColumnsOccupied;\n /**CSS `justify-self`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n justifySelf?: ResponsiveProp<Property.JustifySelf>;\n /**CSS `grid-row`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n gridRow?: ResponsiveProp<Property.GridRow>;\n } & Omit<ResponsiveProps, 'display'>\n >;\n\nexport const GridChild = <T extends ElementType = 'div'>({\n id,\n className,\n htmlProps,\n style,\n gridRow,\n justifySelf,\n columnsOccupied,\n ...rest\n}: GridChildProps<T>) => {\n const styleVariables: Properties = {\n ...getResponsiveCSSProperties(gridRow, 'r', 'grid-row'),\n ...getResponsiveCSSProperties(justifySelf, 'r', 'j-self'),\n ...getResponsiveCSSProperties(columnsOccupied, 'r', 'grid-column'),\n };\n\n return (\n <Box\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles['child-col-count'],\n gridRow && styles['dds-grid-row'],\n justifySelf && styles['dds-j-self'],\n columnsOccupied && styles['dds-grid-column'],\n columnsOccupied === 'firstHalf' && styles['child--first-half'],\n columnsOccupied === 'secondHalf' && styles['child--second-half'],\n ),\n htmlProps,\n rest,\n )}\n style={{ ...style, ...styleVariables }}\n />\n );\n};\n\nGridChild.displayName = 'GridChild';\n",".background {\n background: var(--dds-paper-background);\n}\n.border {\n border: 1px solid var(--dds-paper-border);\n}\n\n:where(.container) {\n box-sizing: border-box;\n background-color: var(--dds-color-surface-default);\n border-radius: var(--dds-border-radius-surface);\n margin: 0;\n}\n\n:where(.shadow--1) {\n box-shadow: var(--dds-shadow-1);\n}\n:where(.shadow--2) {\n box-shadow: var(--dds-shadow-2);\n}\n:where(.shadow--3) {\n box-shadow: var(--dds-shadow-3);\n}\n:where(.shadow--4) {\n box-shadow: var(--dds-shadow-4);\n}\n\n:where(.border-radius--button) {\n border-radius: var(--dds-border-radius-button);\n}\n\n:where(.border-radius--surface) {\n border-radius: var(--dds-border-radius-surface);\n}\n\n:where(.border-radius--chip) {\n border-radius: var(--dds-border-radius-chip);\n}\n\n:where(.border-radius--input) {\n border-radius: var(--dds-border-radius-input);\n}\n\n:where(.border-radius--rounded) {\n border-radius: var(--dds-border-radius-rounded);\n}\n\n:where(.border-radius--0) {\n border-radius: 0;\n}\n","import { type ComponentProps, type ElementType } from 'react';\n\nimport styles from './Paper.module.css';\nimport {\n type BorderColor,\n type BorderRadius,\n type Elevation,\n type PaperBackground,\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { Box } from '../../layout/Box/Box';\nimport { type ResponsiveProps } from '../common';\nimport { getResponsiveCSSProperties } from '../common/utils';\n\nexport type PaperElevation = Elevation;\nexport type PaperBorder = BorderColor;\nexport type PaperBorderRadius = BorderRadius;\n\ntype PickedAttributes<T extends ElementType = 'div'> = Pick<\n ComponentProps<T>,\n 'tabIndex' | 'role'\n>;\n\nexport type PaperProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<\n T,\n {\n /**I hvor stor grad flaten skal framheves. Støtter dds tokens. */\n elevation?: PaperElevation;\n /**Farge på kantlinje. Støtter dds tokens. */\n border?: PaperBorder;\n /**Hvor runde hjørner skal være. Støtter dds tokens. */\n borderRadius?: PaperBorderRadius;\n /**Bakgrunn. Støtter dds tokens. */\n background?: PaperBackground;\n } & ResponsiveProps &\n PickedAttributes,\n Omit<ComponentProps<T>, keyof PickedAttributes>\n >;\n\nexport const Paper = <T extends ElementType = 'div'>({\n id,\n elevation,\n border,\n borderRadius = 'surface',\n background = 'surface-paper-default',\n className,\n htmlProps,\n style,\n ...rest\n}: PaperProps<T>) => {\n const styleVariables = {\n ...getResponsiveCSSProperties(background, 'paper-background'),\n ...getResponsiveCSSProperties(border, 'paper-border'),\n };\n\n return (\n <Box\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.container,\n elevation && styles[`shadow--${elevation}`],\n borderRadius && styles[`border-radius--${borderRadius}`],\n styles.background,\n border && styles.border,\n ),\n htmlProps,\n rest,\n )}\n style={{ ...style, ...styleVariables }}\n />\n );\n};\n","import { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../../types';\nimport { Box } from '../../Box';\nimport { type ResponsiveStackProps } from '../../common';\n\nexport type VStackProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<T, ResponsiveStackProps>;\n\nexport const VStack = <T extends ElementType = 'div'>({\n id,\n className,\n htmlProps,\n ...rest\n}: VStackProps<T>) => {\n return (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n );\n};\n\nVStack.displayName = 'VStack';\n","import { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../../types';\nimport { Box } from '../../Box';\nimport { type ResponsiveStackProps } from '../../common';\n\nexport type HStackProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<T, ResponsiveStackProps>;\n\nexport const HStack = <T extends ElementType = 'div'>({\n id,\n className,\n htmlProps,\n ...rest\n}: HStackProps<T>) => {\n return (\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n );\n};\n\nHStack.displayName = 'HStack';\n",":where(.container) {\n border-bottom: 1px solid var(--dds-color-border-default);\n}\n\n:where(.container:first-child) {\n border-top: 1px solid var(--dds-color-border-default);\n}\n\n:where(.header-button) {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n color: var(--dds-color-text-action-hover);\n }\n}\n\n.body {\n height: var(--dds-card-accordion-body-height);\n}\n","import {\n type Dispatch,\n type RefObject,\n type SetStateAction,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './AccordionBase.module.css';\nimport { useIsMounted } from '../../../hooks';\nimport { type Nullable } from '../../../types';\nimport { cn, useElementHeight } from '../../../utils';\n\nexport interface AccordionConfig {\n /**\n * Om accordion skal være åpen ved innlasting.\n */\n initiallyExpanded: boolean;\n /**\n * Callback som blir kalt når brukeren trykker på header.\n */\n onChange?: (expanded: boolean) => void;\n /**\n * Custom id for accordion. Brukes til universell utforming.\n */\n id?: string;\n}\n\nexport interface AccordionHeaderProps {\n /**\n * `onClick` som kontrollerer lukking og åpning av accordion, og eventuelt `onChange` satt i config\n */\n onClick: () => void;\n /**\n * Nativ `aria-expanded`.\n */\n 'aria-expanded': boolean;\n /**\n * Nativ `aria-controls`.\n */\n 'aria-controls': string;\n /**\n * Id, settes for riktig bruk av aria-props.\n */\n id: string;\n}\n\nexport interface AccordionBodyProps {\n /**\n * Id, settes for riktig bruk av aria-props.\n */\n id: string;\n /**\n * Nativ `role`. Gir innholdet en rolle tilgjengelig for skjermlesere.\n */\n role: string;\n /**\n * Nativ `aria-labelledby`.\n */\n 'aria-labelledby': string;\n /**\n * Nativ `aria-hidden`.\n */\n 'aria-hidden': boolean;\n /**\n * Høyde som skal settes i CSS for animasjon.\n */\n height?: number;\n /**\n * Klassenavn for innhold-wrapper; håndterer animasjon og lukking.\n */\n className?: string;\n}\n\nexport interface AccordionState {\n /**\n * Id, settes for riktig bruk av aria-props.\n */\n id: string;\n /**\n * Om accordion er utvided.\n */\n isExpanded: boolean;\n /**\n * State funksjon som setter `isExpanded` ved behov.\n */\n setIsExpanded: Dispatch<SetStateAction<boolean>>;\n /**\n * Funksjon som åpner accordion. Brukes ved behov.\n */\n openAccordion: () => void;\n /**\n * Funksjon som lukker accordion. Brukes ved behov.\n */\n closeAccordion: () => void;\n /**\n * Funksjon som toggler accordion. Brukes ved behov.\n */\n toggleExpanded: () => void;\n /**\n * Props som settes på header-elementet.\n */\n headerProps: AccordionHeaderProps;\n /**\n * Props som settes på innholds-elementet.\n */\n bodyProps: AccordionBodyProps;\n /**\n * Ref som settes på wrapper inni innholds-elementet; Sørger for animasjon.\n */\n bodyContentRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const useAccordion = ({\n initiallyExpanded = false,\n onChange,\n id,\n}: AccordionConfig): AccordionState => {\n const [isExpanded, setIsExpanded] = useState(initiallyExpanded);\n\n const generatedId = useId();\n const accordionId = id ?? `${generatedId}-accordion`;\n\n const openAccordion = () => {\n setIsExpanded(true);\n };\n\n const closeAccordion = () => {\n setIsExpanded(false);\n };\n\n useEffect(() => {\n setIsExpanded(isExpanded);\n }, [isExpanded]);\n\n const toggleExpanded = useCallback(() => {\n setIsExpanded(prevExpanded => {\n const newExpanded = !prevExpanded;\n\n if (onChange) {\n onChange(newExpanded);\n }\n\n return newExpanded;\n });\n }, [onChange]);\n\n const bodyContentRef = useRef<HTMLDivElement>(null);\n\n const [animate, setAnimate] = useState(false);\n\n const isMounted = useIsMounted();\n const height = useElementHeight(bodyContentRef.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 (bodyContentRef.current && isExpanded) {\n setIntialExpandedHeight(bodyContentRef.current.scrollHeight);\n }\n }, []);\n\n useEffect(() => {\n if (isMounted()) {\n setAnimate(true);\n }\n }, [isMounted]);\n\n const headerProps: AccordionHeaderProps = {\n id: `${accordionId}-header`,\n onClick: toggleExpanded,\n 'aria-expanded': isExpanded,\n 'aria-controls': `${accordionId}-body`,\n };\n\n const bodyProps: AccordionBodyProps = {\n id: `${accordionId}-body`,\n role: 'region',\n 'aria-labelledby': `${accordionId}-header`,\n 'aria-hidden': !isExpanded,\n className: cn(\n styles.body,\n !isExpanded && styles['body--hidden'],\n animate && styles['body--animated'],\n ),\n height: height ?? initialExpandedHeight ?? 0,\n };\n\n return {\n id: accordionId,\n isExpanded,\n setIsExpanded,\n openAccordion,\n closeAccordion,\n toggleExpanded,\n bodyContentRef,\n headerProps,\n bodyProps,\n };\n};\n",":where(.header-button) {\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n position: relative;\n cursor: pointer;\n display: block;\n width: 100%;\n border-radius: inherit;\n}\n\n.header-container {\n display: flex;\n align-items: center;\n}\n\n.header__content {\n text-align: left;\n}\n\n.header__chevron {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--dds-icon-size-medium);\n width: var(--dds-icon-size-medium);\n}\n\n.body {\n overflow: hidden;\n}\n\n.body--animated {\n @media (prefers-reduced-motion: no-preference) {\n transition: height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n}\n\n.body--hidden {\n display: none;\n}\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n} from 'react';\n\nimport {\n type AccordionBodyProps,\n type AccordionHeaderProps,\n} from './useAccordion';\nimport { isEmpty } from '../../../utils';\n\ninterface AccordionContext {\n headerProps: AccordionHeaderProps;\n bodyProps: AccordionBodyProps;\n isExpanded: boolean;\n toggleExpanded: () => void;\n bodyContentRef: RefObject<HTMLDivElement | null>;\n}\n\nconst AccordionContext = createContext<Partial<AccordionContext>>({});\n\nexport const AccordionContextProvider = ({\n children,\n ...values\n}: AccordionContext & { children: ReactNode }) => {\n return <AccordionContext value={values}>{children}</AccordionContext>;\n};\n\nexport const useAccordionContext = (): Partial<AccordionContext> => {\n const context = useContext(AccordionContext);\n if (isEmpty(context)) {\n throw new Error(\n 'useAccordionContext must be used within a AccordionContextProvider. Have you wrapped <AccordionHeader> and <AccordionBody> inside a <Accordion>, or <CardAccordionHeader> and <CardAccordionBody> inside a <CardAccordion>?',\n );\n }\n\n return context;\n};\n","import styles from './Accordion.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport {\n AccordionContextProvider,\n useAccordion,\n} from '../helpers/AccordionBase';\n\nexport type AccordionProps = 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 Accordion = ({\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n}: AccordionProps) => {\n const {\n id: accordionId,\n isExpanded: expanded,\n toggleExpanded,\n bodyContentRef,\n headerProps,\n bodyProps,\n } = useAccordion({ initiallyExpanded: isExpanded, onChange, id });\n\n return (\n <div\n {...getBaseHTMLProps(\n accordionId,\n cn(className, styles.container),\n htmlProps,\n rest,\n )}\n >\n <AccordionContextProvider\n headerProps={headerProps}\n bodyProps={bodyProps}\n isExpanded={expanded}\n toggleExpanded={toggleExpanded}\n bodyContentRef={bodyContentRef}\n >\n {children}\n </AccordionContextProvider>\n </div>\n );\n};\n\nAccordion.displayName = 'Accordion';\n","import { type ButtonHTMLAttributes } from 'react';\n\nimport styles from './Accordion.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { AnimatedChevronUpDown } from '../helpers';\nimport { useAccordionContext } from '../helpers/AccordionBase';\nimport baseStyles from '../helpers/AccordionBase/AccordionBase.module.css';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Box } from '../layout';\nimport { type StaticTypographyType, getTypographyCn } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type AccordionHeaderProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n >,\n 'id'\n>;\n\nexport const AccordionHeader = ({\n children,\n className,\n htmlProps,\n typographyType = 'headingMedium',\n bold,\n ...rest\n}: AccordionHeaderProps) => {\n const { isExpanded, headerProps } = useAccordionContext();\n const { id, ...restHeaderProps } = headerProps ?? {};\n\n return (\n <Box\n as=\"button\"\n padding=\"x1 x1.5 x1 x1\"\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles['header-button'],\n baseStyles['header-button'],\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n focusable,\n baseStyles['header-container'],\n ),\n htmlProps,\n rest,\n )}\n {...restHeaderProps}\n >\n <Box\n as=\"span\"\n marginInline=\"x0 x0.5\"\n className={baseStyles.header__chevron}\n >\n <AnimatedChevronUpDown\n width=\"var(--dds-icon-size-medium)\"\n height=\"var(--dds-spacing-x0-5)\"\n isUp={isExpanded}\n />\n </Box>\n <div\n className={cn(\n baseStyles.header__content,\n typographyStyles[getTypographyCn(typographyType)],\n bold && typographyStyles.bold,\n )}\n >\n {children}\n </div>\n </Box>\n );\n};\n\nAccordionHeader.displayName = 'AccordionHeader';\n","import { type Properties } from 'csstype';\n\nimport styles from './Accordion.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { useAccordionContext } from '../helpers/AccordionBase';\nimport { Box } from '../layout';\n\nexport type AccordionBodyProps = Omit<\n BaseComponentPropsWithChildren<HTMLDivElement>,\n 'id'\n>;\n\nexport const AccordionBody = ({\n children,\n className,\n htmlProps,\n ...rest\n}: AccordionBodyProps) => {\n const { bodyContentRef, bodyProps } = useAccordionContext();\n\n const {\n className: bodyContextCn,\n id,\n height,\n ...restBodyProps\n } = bodyProps ?? {};\n\n const styleVariables: Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-card-accordion-body-height' as any]: height + 'px',\n };\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.body, bodyContextCn),\n htmlProps,\n rest,\n )}\n {...restBodyProps}\n style={{ ...htmlProps?.style, ...styleVariables }}\n >\n <Box ref={bodyContentRef} padding=\"x0.5 x1.5 x2 x1\">\n {children}\n </Box>\n </div>\n );\n};\n\nAccordionBody.displayName = 'AccordionBody';\n",".icon {\n display: inline;\n margin: 0.1em 0.25em -0.1em 0.1em;\n transform: translateY(0.05em);\n vertical-align: baseline;\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './BackLink.module.css';\nimport { Icon } from '../Icon';\nimport { ArrowLeftIcon } from '../Icon/icons';\nimport { Link } from '../Typography';\n\nexport type BackLinkProps = {\n /**\n * Ledetekst.\n */\n label: string;\n} & Pick<ComponentPropsWithRef<'a'>, 'onClick' | 'href' | 'ref'>;\n\nexport const BackLink = ({ label, ref, ...rest }: BackLinkProps) => {\n return (\n <nav ref={ref} aria-label=\"Gå tilbake\">\n <Link {...rest}>\n <Icon icon={ArrowLeftIcon} iconSize=\"inherit\" className={styles.icon} />\n {label}\n </Link>\n </nav>\n );\n};\n\nBackLink.displayName = 'BackLink';\n","import { type ComponentPropsWithRef, type Ref } from 'react';\n\nimport { Link } from '../Typography';\n\nexport type BreadcrumbProps =\n | ComponentPropsWithRef<'a'>\n | ComponentPropsWithRef<'span'>;\n\nexport const isAnchorTypographyProps = (\n props: BreadcrumbProps,\n): props is ComponentPropsWithRef<'a'> => {\n return (props as ComponentPropsWithRef<'a'>).href != undefined;\n};\n\nexport const Breadcrumb = ({ children, ref, ...rest }: BreadcrumbProps) => {\n if (isAnchorTypographyProps(rest)) {\n return (\n <Link ref={ref as Ref<HTMLAnchorElement>} htmlProps={rest}>\n {children}\n </Link>\n );\n }\n return (\n <span ref={ref} {...rest}>\n {children}\n </span>\n );\n};\n\nBreadcrumb.displayName = 'Breadcrumb';\n","import { Children, isValidElement } from 'react';\n\nimport styles from './Breadcrumbs.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { StylelessList } from '../helpers';\nimport { Icon } from '../Icon';\nimport { ChevronRightIcon, MoreHorizontalIcon } from '../Icon/icons';\nimport {\n OverflowMenu,\n OverflowMenuGroup,\n OverflowMenuLink,\n OverflowMenuList,\n OverflowMenuSpan,\n} from '../OverflowMenu';\nimport { type BreadcrumbProps, isAnchorTypographyProps } from './Breadcrumb';\nimport { type Breakpoint, HStack, type HStackProps } from '../layout';\n\nexport type BreadcrumbsProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**\n * Spesifiserer ved hvilket brekkpunkt og nedover versjonen for små skjermer skal vises.\n * Trunkerer barn unntatt første og siste; trunkerte barn er tilgjengelige ved å trykke på trunkeringsknappen.\n */\n smallScreenBreakpoint?: Breakpoint;\n }\n>;\n\nexport const Breadcrumbs = ({\n children,\n smallScreenBreakpoint,\n id,\n className,\n htmlProps,\n ...rest\n}: BreadcrumbsProps) => {\n const chevronIcon = (\n <Icon\n className={cn(styles.icon)}\n iconSize=\"inherit\"\n icon={ChevronRightIcon}\n />\n );\n\n const childrenArray = Children.toArray(children);\n\n const responsiveLiProps: HStackProps<'li'> = {\n as: 'li',\n alignItems: 'center',\n gap: 'x0.5',\n padding: 'x0',\n };\n\n const breadcrumbChildren = childrenArray.map((item, index) => {\n return (\n <HStack\n key={`breadcrumb-${index}`}\n {...responsiveLiProps}\n padding=\"x0.125 0\"\n >\n {index !== 0 && chevronIcon}\n {item}\n </HStack>\n );\n });\n\n const breadcrumbChildrenTruncated =\n childrenArray.length > 2\n ? childrenArray.slice(1, childrenArray.length - 1).map((item, index) => {\n if (isValidElement<BreadcrumbProps>(item)) {\n if (isAnchorTypographyProps(item.props)) {\n return (\n <OverflowMenuLink key={index} href={item.props.href}>\n {item.props.children}\n </OverflowMenuLink>\n );\n } else\n return (\n <OverflowMenuSpan key={index}>\n {item.props.children}\n </OverflowMenuSpan>\n );\n }\n })\n : [];\n\n const breadcrumbChildrenSmallScreen = (\n <>\n <HStack {...responsiveLiProps}>{childrenArray[0]}</HStack>\n {breadcrumbChildrenTruncated.length > 0 && (\n <HStack {...responsiveLiProps}>\n {chevronIcon}\n <OverflowMenuGroup>\n <Button\n size=\"xsmall\"\n icon={MoreHorizontalIcon}\n purpose=\"tertiary\"\n aria-label={`Vis brødsmulesti brødsmule 2 ${breadcrumbChildrenTruncated.length > 1 && `til ${breadcrumbChildren.length - 1}`}`}\n />\n <OverflowMenu>\n <OverflowMenuList>{breadcrumbChildrenTruncated}</OverflowMenuList>\n </OverflowMenu>\n </OverflowMenuGroup>\n </HStack>\n )}\n <HStack {...responsiveLiProps}>\n {chevronIcon}\n {childrenArray[childrenArray.length - 1]}\n </HStack>\n </>\n );\n\n const hasSmallScreenBreakpoint = !!smallScreenBreakpoint;\n\n const responsiveListProps: HStackProps<typeof StylelessList> = {\n as: StylelessList,\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: 'x0.5',\n };\n return (\n <nav\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n aria-label=\"brødsmulesti\"\n >\n <HStack\n {...responsiveListProps}\n hideBelow={hasSmallScreenBreakpoint ? smallScreenBreakpoint : undefined}\n >\n {breadcrumbChildren}\n </HStack>\n {hasSmallScreenBreakpoint && (\n <HStack {...responsiveListProps} showBelow={smallScreenBreakpoint}>\n {breadcrumbChildrenSmallScreen}\n </HStack>\n )}\n </nav>\n );\n};\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n",".icon {\n color: var(--dds-color-icon-link);\n}\n",":where(.button) {\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: -moz-fit-content;\n height: fit-content;\n width: -moz-fit-content;\n width: fit-content;\n cursor: pointer;\n box-shadow: none;\n text-decoration: none;\n border-radius: var(--dds-border-radius-button);\n border: 1px solid;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: all 0.2s;\n }\n\n &:active:not([aria-disabled='true']) {\n scale: 0.95;\n }\n}\n\n.button--is-loading {\n cursor: not-allowed;\n}\n\n.button--full-width {\n width: 100%;\n justify-content: space-between;\n\n &.button--is-loading,\n &.just-icon,\n &.just-text {\n justify-content: center;\n }\n\n &.with-text-and-icon.with-icon-left {\n justify-content: left;\n }\n}\n\n.button--xsmall {\n &.just-text {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n }\n\n &.with-text-and-icon {\n gap: var(--dds-spacing-x0-125);\n\n &.with-icon-left {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5)\n var(--dds-spacing-x0-25) var(--dds-spacing-x0-25);\n }\n &.with-icon-right {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-25)\n var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n }\n }\n\n &.just-icon,\n &.button--is-loading.no-content {\n padding: var(--dds-spacing-x0-25);\n }\n\n .icon {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.button--small {\n &.just-text {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x0-75);\n }\n\n &.with-text-and-icon {\n gap: var(--dds-spacing-x0-25);\n\n &.with-icon-left {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x0-75)\n var(--dds-spacing-x0-5) var(--dds-spacing-x0-5);\n }\n &.with-icon-right {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x0-5)\n var(--dds-spacing-x0-5) var(--dds-spacing-x0-75);\n }\n }\n\n &.just-icon,\n &.button--is-loading.no-content {\n padding: var(--dds-spacing-x0-5);\n }\n\n .icon {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.button--medium {\n &.just-text {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1);\n }\n\n &.with-text-and-icon {\n gap: var(--dds-spacing-x0-5);\n\n &.with-icon-left {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1)\n var(--dds-spacing-x0-75) var(--dds-spacing-x0-75);\n }\n &.with-icon-right {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x0-75)\n var(--dds-spacing-x0-75) var(--dds-spacing-x1);\n }\n }\n\n &.just-icon,\n &.button--is-loading.no-content {\n padding: var(--dds-spacing-x0-75);\n }\n\n .icon {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.button--large {\n &.just-text {\n padding: var(--dds-spacing-x1) var(--dds-spacing-x1-5);\n }\n\n &.with-text-and-icon {\n gap: var(--dds-spacing-x0-75);\n\n &.with-icon-left {\n padding: var(--dds-spacing-x1) var(--dds-spacing-x1-5)\n var(--dds-spacing-x1) var(--dds-spacing-x1);\n }\n &.with-icon-right {\n padding: var(--dds-spacing-x1) var(--dds-spacing-x1) var(--dds-spacing-x1)\n var(--dds-spacing-x1-5);\n }\n }\n\n &.just-icon,\n &.button--is-loading.no-content {\n padding: var(--dds-spacing-x1);\n }\n\n .icon {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.spinner-wrapper--absolute {\n position: absolute;\n}\n\n.icon-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.button--primary {\n background-color: var(--dds-color-surface-action-resting);\n border-color: var(--dds-color-surface-action-resting);\n color: var(--dds-color-text-on-action);\n &:hover:not(.button--is-loading) {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-surface-action-hover);\n color: var(--dds-color-text-on-action);\n }\n}\n\n.button--secondary {\n background-color: var(--dds-color-surface-default);\n border-color: var(--dds-color-border-default);\n color: var(--dds-color-text-default);\n\n &:hover:not(.button--is-loading) {\n background-color: var(--dds-color-surface-hover-default);\n border-color: var(--dds-color-border-action-hover);\n color: var(--dds-color-text-default);\n }\n}\n\n.button--tertiary {\n background-color: transparent;\n border-color: transparent;\n color: var(--dds-color-text-default);\n\n &:hover:not(.button--is-loading) {\n background-color: var(--dds-color-surface-hover-default);\n border-color: transparent;\n color: var(--dds-color-text-default);\n }\n}\n\n.button--danger {\n background-color: var(--dds-color-surface-action-danger-resting);\n border-color: var(--dds-color-surface-action-danger-resting);\n color: var(--dds-color-text-on-action);\n &:hover:not(.button--is-loading) {\n background-color: var(--dds-color-surface-action-danger-hover);\n border-color: var(--dds-color-surface-action-danger-hover);\n color: var(--dds-color-text-on-action);\n }\n}\n","import { createContext, useContext } from 'react';\n\nimport { type ButtonSize } from '../Button/Button.types';\n\ninterface ButtonGroupContextType {\n size?: ButtonSize;\n purpose: 'secondary';\n}\n\nexport const ButtonGroupContext = createContext<\n Partial<ButtonGroupContextType>\n>({});\n\nexport const useButtonGroupContext = () => useContext(ButtonGroupContext);\n","import { type Property } from 'csstype';\nimport { useId, useRef } from 'react';\n\nimport styles from './Spinner.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { type TextColor, cn, getTextColor } from '../../utils';\n\nexport type SpinnerProps = BaseComponentProps<\n SVGElement,\n {\n /**Farge på spinneren.\n * @default \"iconActionResting\"\n */\n color?: TextColor;\n /**Størrelse; Setter høyde og bredde på spinneren.\n * @default \"var(--dds-icon-size-medium)\"\n */\n size?: Property.Width;\n /**Tekst som vises ved hover.\n * @default \"Innlasting pågår\"\n */\n tooltip?: string;\n }\n>;\n\nexport function Spinner(props: SpinnerProps) {\n const {\n size = 'var(--dds-icon-size-medium)',\n color = 'iconActionResting',\n tooltip = 'Innlasting pågår',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const mountTime = useRef(Date.now());\n const outerAnimationDelay = -(mountTime.current % 2000);\n const innerAnimationDelay = -(mountTime.current % 1500);\n\n const generatedId = useId();\n const uniqueId = `${generatedId}-spinnerTitle`;\n\n return (\n <svg\n viewBox=\"0 0 50 50\"\n role=\"progressbar\"\n aria-labelledby={uniqueId}\n {...getBaseHTMLProps(id, cn(className, styles.svg), htmlProps, rest)}\n style={{\n ...htmlProps?.style,\n animationDelay: outerAnimationDelay + 'ms',\n width: size,\n height: size,\n }}\n >\n <title id={uniqueId}>{tooltip}</title>\n <circle\n className={cn(styles.circle)}\n style={{\n animationDelay: innerAnimationDelay + 'ms',\n }}\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke={getTextColor(color)}\n strokeWidth=\"4\"\n />\n </svg>\n );\n}\n\nSpinner.displayName = 'Spinner';\n",".svg {\n display: block;\n stroke-dasharray: 90, 150;\n animation: rotate 1.5s linear infinite;\n @media (prefers-reduced-motion: no-preference) {\n animation: rotate 2s linear infinite;\n }\n}\n\n.circle {\n stroke-linecap: round;\n @media (prefers-reduced-motion: no-preference) {\n animation: dash 1.5s ease-in-out infinite;\n }\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\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","import {\n type FocusEventHandler,\n type HTMLAttributes,\n type MouseEventHandler,\n type RefObject,\n} from 'react';\n\nimport styles from './Button.module.css';\nimport { type ButtonProps } from './Button.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { useButtonGroupContext } from '../ButtonGroup/ButtonGroup.context';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { invisible } from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { Spinner } from '../Spinner';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const Button = ({\n children,\n purpose = 'primary',\n size = 'medium',\n iconPosition = 'left',\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 ref,\n className,\n htmlProps = {},\n ...rest\n}: ButtonProps) => {\n const { purpose: groupPurpose, size: groupSize } = useButtonGroupContext();\n\n const hasLabel = !!children;\n const hasIcon = !!icon;\n const hasLabelAndIcon = hasIcon && hasLabel;\n const isIconButton = !hasLabel && hasIcon;\n const isTextButton = hasLabel && !hasIcon;\n const noContent = !hasLabel && !hasIcon;\n\n const buttonCn = cn(\n className,\n styles.button,\n styles[`button--${groupPurpose ? groupPurpose : purpose}`],\n styles[`button--${groupSize ? groupSize : size}`],\n isTextButton && styles['just-text'],\n ...(hasLabelAndIcon\n ? [styles['with-text-and-icon'], styles[`with-icon-${iconPosition}`]]\n : []),\n isIconButton && styles['just-icon'],\n noContent && styles['no-content'],\n fullWidth && styles['button--full-width'],\n loading && styles['button--is-loading'],\n typographyStyles[`body-${size}`],\n focusable,\n );\n\n const iconElement = hasIcon && (\n <Icon\n icon={icon}\n iconSize=\"inherit\"\n className={cn(styles.icon, loading && invisible)}\n />\n );\n\n const content = (\n <>\n {hasLabel && (\n <>\n {iconPosition === 'left' && iconElement}\n <span aria-hidden={loading} className={cn(loading && invisible)}>\n {children}\n </span>\n {iconPosition === 'right' && iconElement}\n </>\n )}\n {isIconButton && iconElement}\n {loading && (\n <span className={cn(!noContent && styles['spinner-wrapper--absolute'])}>\n <Spinner\n /*TODO: bytte til icon size token for button når den er på plass*/\n size=\"calc(var(--dds-font-lineheight-x1) * 1em)\"\n color={\n purpose === 'primary' || purpose === 'danger'\n ? 'iconOnAction'\n : 'iconDefault'\n }\n tooltip={loadingTooltip}\n className={styles.icon}\n />\n </span>\n )}\n </>\n );\n\n if (!href)\n return (\n <button\n ref={ref}\n {...getBaseHTMLProps(id, buttonCn, htmlProps, rest)}\n onClick={loading ? undefined : onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n aria-disabled={loading}\n >\n {content}\n </button>\n );\n else if (href)\n return (\n <a\n ref={ref as RefObject<HTMLAnchorElement | null>}\n {...getBaseHTMLProps(\n id,\n buttonCn,\n //TODO: fikse types ordentlig\n htmlProps as HTMLAttributes<HTMLAnchorElement>,\n rest,\n )}\n onClick={\n loading\n ? undefined\n : //TODO: fikse types ordentlig\n (onClick as unknown as MouseEventHandler<HTMLAnchorElement>)\n }\n //TODO: fikse types ordentlig\n onFocus={onFocus as unknown as FocusEventHandler<HTMLAnchorElement>}\n onBlur={onBlur as unknown as FocusEventHandler<HTMLAnchorElement>}\n href={href}\n rel=\"noreferrer noopener\"\n target={target}\n >\n {content}\n </a>\n );\n};\n\nButton.displayName = 'Button';\n","import { useEffect } from 'react';\n\nimport { useOverflowMenuContext } from './OverflowMenu.context';\nimport styles from './OverflowMenu.module.css';\nimport { useCombinedRef } from '../../hooks';\nimport { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Paper } from '../layout';\n\nimport { type OverflowMenuProps } from '.';\n\nexport const OverflowMenu = ({\n placement = 'bottom-end',\n offset = 2,\n className,\n htmlProps = {},\n ref,\n ...rest\n}: OverflowMenuProps) => {\n const { isOpen, floatStyling, setFloatOptions, menuRef, menuId } =\n useOverflowMenuContext();\n\n useEffect(() => {\n setFloatOptions?.({ placement, offset });\n }, [placement, offset]);\n\n const { style = {}, ...restHTMLProps } = htmlProps;\n const openCn = isOpen ? 'open' : 'closed';\n\n return (\n <Paper\n overflowY=\"auto\"\n minWidth=\"180px\"\n maxWidth=\"300px\"\n ref={useCombinedRef(menuRef, ref)}\n {...getBaseHTMLProps(\n menuId,\n cn(\n className,\n styles.container,\n utilStyles.scrollbar,\n utilStyles['visibility-transition'],\n utilStyles[`visibility-transition--${openCn}`],\n ),\n restHTMLProps,\n rest,\n )}\n role=\"menu\"\n aria-hidden={!isOpen}\n elevation={1}\n border=\"border-default\"\n style={{ ...style, ...floatStyling }}\n />\n );\n};\n\nOverflowMenu.displayName = 'OverflowMenu';\n","import {\n type Dispatch,\n type ReactNode,\n type RefObject,\n type SetStateAction,\n createContext,\n useContext,\n useEffect,\n useState,\n} from 'react';\n\nimport {\n type FloatingStyles,\n type UseFloatPositionOptions,\n useRoveFocus,\n} from '../../hooks';\n\ntype FocusableElement = HTMLButtonElement | HTMLAnchorElement;\n\ninterface CommonContextProps {\n isOpen: boolean;\n onClose?: () => void;\n menuRef?: (node: HTMLElement | null) => void;\n menuId?: string;\n floatStyling?: FloatingStyles;\n setFloatOptions?: Dispatch<\n SetStateAction<UseFloatPositionOptions | undefined>\n >;\n}\ntype OverflowMenuContextProps = CommonContextProps & {\n registerItem: (ref: RefObject<FocusableElement | null>) => void;\n unregisterItem: (ref: RefObject<FocusableElement | null>) => void;\n focusedRef?: RefObject<FocusableElement | null>;\n};\n\nexport type OverflowMenuContextProviderProps = CommonContextProps & {\n children: ReactNode;\n};\n\nconst OverflowMenuContext = createContext<OverflowMenuContextProps>({\n isOpen: false,\n registerItem: () => null,\n unregisterItem: () => null,\n});\n\nexport function OverflowMenuContextProvider({\n children,\n ...rest\n}: OverflowMenuContextProviderProps) {\n const [items, setItems] = useState<Array<RefObject<FocusableElement | null>>>(\n [],\n );\n const [focusIndex] = useRoveFocus(items.length, rest.isOpen);\n\n useEffect(() => {\n items[focusIndex]?.current?.focus();\n }, [focusIndex]);\n\n return (\n <OverflowMenuContext\n value={{\n ...rest,\n registerItem: ref => setItems(prev => [...prev, ref]),\n unregisterItem: ref =>\n setItems(prev => prev.filter(item => item !== ref)),\n focusedRef: items[focusIndex],\n }}\n >\n {children}\n </OverflowMenuContext>\n );\n}\n\nexport const useOverflowMenuContext = () => {\n return useContext(OverflowMenuContext);\n};\n",".container {\n box-sizing: border-box;\n z-index: var(--dds-zindex-overflowmenu);\n}\n\n.list {\n display: flex;\n flex-direction: column;\n}\n\n.list__item {\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--dds-color-surface-default);\n text-decoration: none;\n padding: var(--dds-spacing-x0-75);\n gap: var(--dds-spacing-x0-25);\n\n &.default {\n color: var(--dds-color-text-default);\n }\n\n &.danger {\n color: var(--dds-color-text-danger);\n }\n}\n\n.list__item--link {\n text-align: left;\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n border: none;\n cursor: pointer;\n outline: inherit;\n width: 100%;\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n\n &:hover,\n &:active {\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n\n.icon {\n display: flex;\n align-items: center;\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n}\n\n.button-loading {\n cursor: not-allowed;\n position: relative;\n}\n","import { useEffect, useRef } from 'react';\n\nimport { useCombinedRef } from '../../../hooks';\nimport { cn } from '../../../utils';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport utilStyles, {\n invisible,\n} from '../../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../../Icon';\nimport { Spinner } from '../../Spinner';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\nimport { useOverflowMenuContext } from '../OverflowMenu.context';\nimport styles from '../OverflowMenu.module.css';\nimport { type OverflowMenuButtonProps } from '../OverflowMenu.types';\n\nexport const OverflowMenuButton = ({\n id,\n icon,\n children,\n className,\n onClick,\n purpose = 'default',\n loading,\n loadingTooltip,\n 'aria-disabled': ariaDisabled,\n ref,\n ...rest\n}: OverflowMenuButtonProps) => {\n const itemRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n const { onClose, registerItem, unregisterItem, focusedRef } =\n useOverflowMenuContext();\n\n useEffect(() => {\n registerItem(itemRef);\n return () => unregisterItem(itemRef);\n }, []);\n\n return (\n <li>\n <button\n ref={combinedRef}\n role=\"menuitem\"\n id={id}\n className={cn(\n className,\n styles.list__item,\n styles[purpose],\n typographyStyles['body-small'],\n styles['list__item--link'],\n focusStyles['focusable--inset'],\n loading && styles['button-loading'],\n )}\n onClick={\n loading\n ? undefined\n : e => {\n onClick?.(e);\n onClose?.();\n }\n }\n aria-disabled={loading ? true : ariaDisabled ? ariaDisabled : undefined}\n {...rest}\n tabIndex={focusedRef === itemRef ? 0 : -1}\n >\n {loading && (\n <span className={cn(utilStyles['center-absolute'])}>\n <Spinner\n size=\"var(--dds-icon-size-medium)\"\n tooltip={loadingTooltip}\n />\n </span>\n )}\n\n {icon && (\n <Icon\n className={cn(loading && invisible)}\n iconSize=\"inherit\"\n icon={icon}\n />\n )}\n <span className={cn(loading && invisible)}>{children}</span>\n </button>\n </li>\n );\n};\n\nOverflowMenuButton.displayName = 'OverflowMenuButton';\n","import { useEffect, useRef } from 'react';\n\nimport { useCombinedRef } from '../../../hooks';\nimport { cn } from '../../../utils';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport { Icon } from '../../Icon';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\nimport { useOverflowMenuContext } from '../OverflowMenu.context';\nimport styles from '../OverflowMenu.module.css';\nimport { type OverflowMenuLinkProps } from '../OverflowMenu.types';\n\nexport const OverflowMenuLink = ({\n id,\n href,\n icon,\n className,\n onClick,\n children,\n ref,\n purpose = 'default',\n ...rest\n}: OverflowMenuLinkProps) => {\n const itemRef = useRef<HTMLAnchorElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n const { onClose, registerItem, unregisterItem, focusedRef } =\n useOverflowMenuContext();\n\n useEffect(() => {\n registerItem(itemRef);\n return () => unregisterItem(itemRef);\n }, []);\n\n return (\n <li>\n <a\n ref={combinedRef}\n role=\"menuitem\"\n id={id}\n className={cn(\n className,\n styles.list__item,\n styles[purpose],\n typographyStyles['body-small'],\n styles['list__item--link'],\n focusStyles['focusable--inset'],\n )}\n href={href}\n onClick={e => {\n onClick?.(e);\n onClose?.();\n }}\n {...rest}\n tabIndex={focusedRef === itemRef ? 0 : -1}\n >\n {icon && <Icon iconSize=\"inherit\" icon={icon} />}\n {children}\n </a>\n </li>\n );\n};\n\nOverflowMenuLink.displayName = 'OverflowMenuLink';\n",":where(.divider) {\n border: 0;\n background-color: transparent;\n border-top: 1px solid;\n margin-top: var(--dds-spacing-x1);\n margin-bottom: var(--dds-spacing-x1);\n}\n\n.divider--default {\n color: var(--dds-color-border-default);\n}\n\n.divider--subtle {\n color: var(--dds-color-border-subtle);\n}\n\n.divider--on-inverse {\n color: var(--dds-color-border-inverse);\n}\n","import styles from './Divider.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\n\nexport type DividerColor = 'default' | 'subtle' | 'on-inverse';\n\nexport type DividerProps = BaseComponentProps<\n HTMLHRElement,\n {\n /** Farge på horisontal linje.\n * @default \"default\"\n */\n color?: DividerColor;\n }\n>;\n\nexport const Divider = ({\n color = 'default',\n id,\n className,\n htmlProps,\n ...rest\n}: DividerProps) => {\n return (\n <hr\n {...getBaseHTMLProps(\n id,\n cn(className, styles.divider, styles[`divider--${color}`]),\n htmlProps,\n rest,\n )}\n />\n );\n};\n","import { getBaseHTMLProps } from '../../../types';\nimport { Divider, type DividerProps } from '../../Divider';\nimport { Box } from '../../layout';\n\ntype OverflowMenuDividerProps = Omit<DividerProps, 'color'>;\n\nexport const OverflowMenuDivider = ({\n id,\n className,\n htmlProps,\n ...rest\n}: OverflowMenuDividerProps) => {\n return (\n <Box\n as={Divider}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n marginInline=\"x0.5\"\n marginBlock=\"x0\"\n color=\"subtle\"\n />\n );\n};\n\nOverflowMenuDivider.displayName = 'OverflowMenuDivider';\n","import { StylelessList, type StylelessListProps } from '../../helpers';\n\ntype OverflowMenuListProps = StylelessListProps;\n\nexport const OverflowMenuList = (props: OverflowMenuListProps) => (\n <StylelessList {...props} />\n);\n","import { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\nimport styles from '../OverflowMenu.module.css';\nimport { type OverflowMenuSpanProps } from '../OverflowMenu.types';\n\nexport const OverflowMenuSpan = ({\n icon,\n children,\n className,\n purpose = 'default',\n ...rest\n}: OverflowMenuSpanProps) => (\n <li>\n <span\n className={cn(\n className,\n styles.list__item,\n styles[purpose],\n typographyStyles['body-small'],\n )}\n {...rest}\n >\n {icon && <Icon iconSize=\"inherit\" icon={icon} />}\n {children}\n </span>\n </li>\n);\n\nOverflowMenuSpan.displayName = 'OverflowMenuSpan';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Box } from '../../layout';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\n\ntype OverflowMenuListHeaderProps = ComponentPropsWithRef<'h2'>;\n\nexport const OverflowMenuListHeader = ({\n className,\n ...rest\n}: OverflowMenuListHeaderProps) => (\n <Box\n as=\"h2\"\n paddingInline=\"x0.75\"\n paddingBlock=\"x0.75 0\"\n {...rest}\n className={cn(className, typographyStyles['heading-xxsmall'])}\n />\n);\n\nOverflowMenuListHeader.displayName = 'OverflowMenuListHeader';\n","import {\n type DetailedHTMLProps,\n type Dispatch,\n type HTMLAttributes,\n Children as ReactChildren,\n type ReactNode,\n type SetStateAction,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { OverflowMenuContextProvider } from './OverflowMenu.context';\nimport {\n type UseFloatPositionOptions,\n useCombinedRef,\n useFloatPosition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../hooks';\n\nexport interface OverflowMenuGroupProps {\n /**Om `<OverflowMenu>` er åpen ved første render.\n * @default false\n */\n isInitiallyOpen?: boolean;\n /**Implementerer kontrollert tilstand: forteller `<OverflowMenu>` om den skal være åpen. */\n isOpen?: boolean;\n /**Implementerer kontrollert tilstand: funksjon for å kontrollere `isOpen`. */\n setIsOpen?: Dispatch<SetStateAction<boolean>>;\n /**Callback når `<OverflowMenu>` åpnes. */\n onOpen?: () => void;\n /**Callback 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 onOpen,\n setIsOpen: propSetIsOpen,\n isOpen: propIsOpen,\n isInitiallyOpen = false,\n overflowMenuId,\n}: OverflowMenuGroupProps) => {\n const [internalIsOpen, internalSetIsOpen] = useState(isInitiallyOpen);\n\n const [isOpen, setIsOpen] = [\n propIsOpen ?? internalIsOpen,\n propSetIsOpen ?? internalSetIsOpen,\n ];\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n\n const generatedId = useId();\n const uniqueOverflowMenuId = overflowMenuId ?? `${generatedId}-overflowMenu`;\n\n const [floatOptions, setFloatOptions] = useState<UseFloatPositionOptions>();\n const { refs, styles: positionStyles } = useFloatPosition(null, floatOptions);\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const anchorRef = refs.setReference;\n const combinedAnchorRef = useCombinedRef(buttonRef, anchorRef);\n const menuRef = useRef<HTMLDivElement>(null);\n const floatingRef = refs.setFloating;\n const combinedMenuRef = useCombinedRef(menuRef, floatingRef);\n\n const handleClose = () => {\n if (isOpen) {\n onClose && onClose();\n close();\n }\n };\n\n const handleToggle = () => {\n !isOpen && onOpen?.();\n isOpen && onClose?.();\n toggle();\n };\n\n useOnClickOutside([menuRef.current, buttonRef.current], () => {\n handleClose();\n });\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n onClose && onClose();\n close();\n buttonRef.current?.focus();\n }\n });\n\n useOnKeyDown(['Tab'], () => {\n handleClose();\n });\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement<\n DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>\n >(child) &&\n (childIndex === 0\n ? cloneElement(child, {\n 'aria-haspopup': 'menu',\n 'aria-controls': uniqueOverflowMenuId,\n 'aria-expanded': isOpen,\n onClick: handleToggle,\n ref: combinedAnchorRef,\n })\n : child)\n );\n });\n\n return (\n <OverflowMenuContextProvider\n isOpen={isOpen}\n onClose={handleClose}\n menuRef={combinedMenuRef}\n setFloatOptions={setFloatOptions}\n floatStyling={positionStyles.floating}\n menuId={uniqueOverflowMenuId}\n >\n {Children}\n </OverflowMenuContextProvider>\n );\n};\n\nOverflowMenuGroup.displayName = 'OverflowMenuGroup';\n",".group > *:focus-visible {\n position: relative;\n z-index: var(--dds-zindex-absolute-element);\n}\n\n.group--column {\n display: flex;\n flex-direction: column;\n\n > * {\n width: 100%;\n }\n}\n\n.group--column > *:first-child {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-block-end: -1px;\n}\n\n.group--column > *:last-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.group--column > *:not(:first-child):not(:last-child) {\n border-radius: 0;\n margin-block-end: -1px;\n}\n\n.group--row > *:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n margin-inline-end: -1px;\n}\n\n.group--row > *:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.group--row > *:not(:first-child):not(:last-child) {\n border-radius: 0;\n margin-inline-end: -1px;\n}\n","import {\n type AriaRole,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n} from 'react';\n\nimport { ButtonGroupContext } from './ButtonGroup.context';\nimport styles from './ButtonGroup.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { type ButtonSize } from '../Button/Button.types';\n\ntype PickedHTMLAttributes = Pick<\n HTMLAttributes<HTMLDivElement>,\n 'role' | 'aria-label' | 'aria-labelledby'\n>;\n\nexport type ButtonGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Retning for gruppen.\n * @default \"row\"\n */\n direction?: Direction;\n /**Størrelse på knappene.\n * @default \"medium\"\n */\n buttonSize?: ButtonSize;\n /**Nativ `aria-label` ved behov. */\n 'aria-label'?: string;\n /**Nativ `aria-labelledby` ved behov. */\n 'aria-labelledby'?: string;\n /**Nativ `role` ved behov.\n * @default \"group\"\n */\n role?: AriaRole;\n } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const ButtonGroup = ({\n children,\n id,\n className,\n htmlProps,\n direction = 'row',\n buttonSize = 'medium',\n role = 'group',\n ...rest\n}: ButtonGroupProps) => (\n <ButtonGroupContext value={{ size: buttonSize, purpose: 'secondary' }}>\n <div\n role={role}\n {...getBaseHTMLProps(\n id,\n cn(className, styles.group, styles[`group--${direction}`]),\n htmlProps,\n rest,\n )}\n >\n {children}\n </div>\n </ButtonGroupContext>\n);\nButtonGroup.displayName = 'ButtonGroup';\n",".container {\n border: 1px solid;\n border-radius: var(--dds-border-radius-surface);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s;\n }\n}\n\n.container--filled {\n background-color: var(--dds-color-brand-primary-subtle);\n border-color: var(--dds-color-brand-primary-subtle);\n}\n\n.container--border {\n background-color: var(--dds-color-surface-default);\n border-color: var(--dds-color-border-subtle);\n}\n\n.container--navigation {\n text-decoration: none;\n display: block;\n &:hover {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: inset 0 0 0 1px var(--dds-color-border-action-hover);\n }\n}\n\n.container--expandable {\n width: 100%;\n box-sizing: border-box;\n & + .container--expandable {\n border-top: none;\n }\n}\n","import { type AnchorHTMLAttributes, type RefObject } from 'react';\n\nimport styles from './Card.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\n\nexport type CardAppearance = 'filled' | 'border';\n\nexport type CardType = 'info' | 'navigation' | 'expandable';\n\ntype BaseCardProps<T extends HTMLElement> = BaseComponentPropsWithChildren<\n T,\n {\n /** Utseende på komponenten.\n * @default \"filled\"\n */\n appearance?: CardAppearance;\n\n /** Referanse til komponenten. */\n cardRef?: RefObject<T | null>;\n }\n>;\n\nexport type InfoCardProps = BaseCardProps<HTMLDivElement> & {\n /** Spesifiserer funksjonalitet og formål med komponenten. **OBS!** ved `'navigation'` må `href` oppgis. */\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 appearance = 'filled',\n cardType,\n cardRef,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const classNames = cn(\n className,\n styles.container,\n styles[`container--${appearance}`],\n cardType !== 'info' && styles[`container--${cardType}`],\n );\n\n if (cardType === 'navigation') {\n const { href, target } = props;\n\n return (\n <a\n {...getBaseHTMLProps(\n id,\n cn(classNames, focusStyles.focusable),\n htmlProps,\n rest,\n )}\n ref={cardRef}\n href={href}\n target={target}\n />\n );\n }\n\n return (\n <div {...getBaseHTMLProps(id, classNames, htmlProps, rest)} ref={cardRef} />\n );\n};\n\nCard.displayName = 'Card';\n",".container {\n border-radius: inherit;\n}\n\n.header-button {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover {\n box-shadow: 0 0 0 2px var(--dds-color-border-action-hover);\n }\n}\n\n.header-container {\n padding: var(--dds-card-accordion-header-container-padding);\n justify-content: space-between;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n}\n\n.header-container__chevron {\n margin-left: var(--dds-spacing-x0-5);\n}\n\n.body {\n height: var(--dds-card-accordion-body-height);\n}\n\n.body__content {\n padding: var(--dds-card-accordion-body-content-padding);\n}\n","import styles from './CardExpandable.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport {\n AccordionContextProvider,\n useAccordion,\n} from '../../helpers/AccordionBase';\n\nexport type CardExpandableProps = 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 CardExpandable = ({\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n}: CardExpandableProps) => {\n const {\n id: accordionId,\n isExpanded: expanded,\n toggleExpanded,\n bodyContentRef,\n headerProps,\n bodyProps,\n } = useAccordion({ initiallyExpanded: isExpanded, onChange, id });\n\n return (\n <div\n {...getBaseHTMLProps(\n accordionId,\n cn(className, styles['container']),\n htmlProps,\n rest,\n )}\n >\n <AccordionContextProvider\n headerProps={headerProps}\n bodyProps={bodyProps}\n isExpanded={expanded}\n toggleExpanded={toggleExpanded}\n bodyContentRef={bodyContentRef}\n >\n {children}\n </AccordionContextProvider>\n </div>\n );\n};\n\nCardExpandable.displayName = 'CardExpandable';\n","import { type Properties, type Property } from 'csstype';\nimport { type ButtonHTMLAttributes } from 'react';\n\nimport styles from './CardExpandable.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { AnimatedChevronUpDown } from '../../helpers';\nimport { useAccordionContext } from '../../helpers/AccordionBase';\nimport baseStyles from '../../helpers/AccordionBase/AccordionBase.module.css';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { type StaticTypographyType, getTypographyCn } from '../../Typography';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\n\nexport type CardExpandableHeaderProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n >,\n 'id'\n>;\n\nexport const CardExpandableHeader = ({\n children,\n className,\n htmlProps,\n padding,\n typographyType = 'headingLarge',\n bold,\n ...rest\n}: CardExpandableHeaderProps) => {\n const { isExpanded, headerProps } = useAccordionContext();\n\n const containerStyleVariables: Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-card-accordion-header-container-padding' as any]:\n padding ??\n 'var(--dds-spacing-x1) var(--dds-spacing-x0-75) var(--dds-spacing-x1) var(--dds-spacing-x1-5)',\n };\n\n const { id, ...restHeaderProps } = headerProps ?? {};\n\n return (\n <button\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles['header-button'],\n baseStyles['header-button'],\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n focusable,\n ),\n htmlProps,\n rest,\n )}\n {...restHeaderProps}\n type=\"button\"\n >\n <div\n style={containerStyleVariables}\n className={cn(\n baseStyles['header-container'],\n styles['header-container'],\n typographyStyles[getTypographyCn(typographyType)],\n bold && typographyStyles.bold,\n )}\n >\n <div className={baseStyles.header__content}>{children}</div>\n <span\n className={cn(\n baseStyles.header__chevron,\n styles['header-container__chevron'],\n )}\n >\n <AnimatedChevronUpDown\n width=\"var(--dds-icon-size-medium)\"\n height=\"var(--dds-spacing-x0-5)\"\n isUp={isExpanded}\n />\n </span>\n </div>\n </button>\n );\n};\n\nCardExpandableHeader.displayName = 'CardExpandableHeader';\n","import { type Properties, type Property } from 'csstype';\n\nimport styles from './CardExpandable.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { useAccordionContext } from '../../helpers/AccordionBase';\nimport baseStyles from '../../helpers/AccordionBase/AccordionBase.module.css';\n\nexport type CardExpandableBodyProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n }\n >,\n 'id'\n>;\n\nexport const CardExpandableBody = ({\n children,\n className,\n htmlProps,\n padding,\n ...rest\n}: CardExpandableBodyProps) => {\n const { bodyContentRef, bodyProps } = useAccordionContext();\n\n const {\n className: bodyContextCn,\n id,\n height,\n ...restBodyProps\n } = bodyProps ?? {};\n\n const styleVariables: Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-card-accordion-body-height' as any]: height + 'px',\n };\n\n const contentStyleVariables: Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-card-accordion-body-content-padding' as any]:\n padding ??\n 'var(--dds-spacing-x1) calc(var(--dds-spacing-x2) + var(--dds-spacing-x0-75)) var(--dds-spacing-x2) var(--dds-spacing-x1-5)',\n };\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, baseStyles.body, styles.body, bodyContextCn),\n htmlProps,\n rest,\n )}\n {...restBodyProps}\n style={{ ...htmlProps?.style, ...styleVariables }}\n >\n <div\n ref={bodyContentRef}\n className={styles.body__content}\n style={contentStyleVariables}\n >\n {children}\n </div>\n </div>\n );\n};\n\nCardExpandableBody.displayName = 'CardExpandableBody';\n","import { useState } from 'react';\n\nimport styles from './Chip.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils/dom';\nimport { Button } from '../Button';\nimport { CloseSmallIcon } from '../Icon/icons';\nimport { TextOverflowEllipsisInner } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\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 = ({\n text,\n onClose,\n id,\n className,\n htmlProps = {},\n ...rest\n}: ChipProps) => {\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 <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container),\n restHTMLprops,\n rest,\n )}\n >\n <TextOverflowEllipsisInner className={cn(typographyStyles['body-small'])}>\n {text}\n </TextOverflowEllipsisInner>\n <Button\n size=\"xsmall\"\n icon={CloseSmallIcon}\n purpose=\"tertiary\"\n onClick={onClick}\n aria-label={ariaLabel ?? `Fjern ${text ? `chip ${text}` : 'chip'}`}\n />\n </div>\n ) : null;\n};\n\nChip.displayName = 'Chip';\n",".container {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n gap: var(--dds-spacing-x0-25);\n padding: var(--dds-spacing-x0-125) var(--dds-spacing-x0-25)\n var(--dds-spacing-x0-125) var(--dds-spacing-x0-5);\n border: 1px solid var(--dds-color-border-subtle);\n border-radius: var(--dds-border-radius-chip);\n background-color: var(--dds-color-surface-subtle);\n}\n","import { Children, type ComponentPropsWithRef } from 'react';\n\nimport { StylelessList } from '../helpers';\nimport { HStack } from '../layout';\n\nexport type ChipGroupProps = ComponentPropsWithRef<'ul'>;\n\nexport const ChipGroup = ({ children, ...rest }: ChipGroupProps) => {\n const childrenArray = Children.toArray(children);\n\n return (\n <HStack as={StylelessList} {...rest} gap=\"x0.75\">\n {childrenArray.map((item, index) => (\n <li key={`chip-${index}`}>{item}</li>\n ))}\n </HStack>\n );\n};\n\nChipGroup.displayName = 'ChipGroup';\n",":where(.container) {\n background-color: var(--dds-color-surface-inverse-default);\n}\n","import styles from './Contrast.module.css';\nimport { cn } from '../../utils';\nimport { ElementAs, type PolymorphicProps } from '../helpers/ElementAs';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type ContrastProps<T extends React.ElementType> = PolymorphicProps<T>;\n\nexport const Contrast = <T extends React.ElementType>({\n className,\n as = 'div',\n ...rest\n}: ContrastProps<T>) => {\n return (\n <ElementAs\n as={as}\n className={cn(className, typographyStyles.contrast, styles.container)}\n {...rest}\n />\n );\n};\n","import { useId } from 'react';\n\nimport { type CheckboxProps } from './Checkbox.types';\nimport { useCheckboxGroup } from './CheckboxGroupContext';\nimport { getBaseHTMLProps } from '../../../types';\nimport {\n cn,\n readOnlyClickHandler,\n readOnlyKeyDownHandler,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { Box } from '../../layout';\nimport { Typography } from '../../Typography';\nimport { Label, SelectionControl } from '../SelectionControl.styles';\nimport { selectionControlTypographyProps } from '../SelectionControl.utils';\n\nexport const Checkbox = ({\n id,\n name,\n label,\n error = false,\n disabled,\n readOnly,\n indeterminate,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n children,\n ...rest\n}: CheckboxProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-checkbox`;\n const checkboxGroup = useCheckboxGroup();\n\n const hasLabel = !!label;\n const hasChildren = !!children;\n\n const { style, className: htmlPropsClassName, ...restHtmlProps } = htmlProps;\n\n const isReadOnly = readOnly || checkboxGroup?.readOnly;\n const hasError = error || checkboxGroup?.error;\n const isDisabled = disabled || checkboxGroup?.disabled;\n\n return (\n <Box\n position=\"relative\"\n display=\"flex\"\n alignItems=\"center\"\n width=\"fit-content\"\n paddingInline=\"calc(18px + var(--dds-spacing-x0-5)) 0\"\n as={Label}\n hasError={hasError}\n disabled={isDisabled}\n readOnly={isReadOnly}\n htmlFor={uniqueId}\n hasText={hasLabel}\n controlType=\"checkbox\"\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <input\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n name={name}\n disabled={isDisabled}\n aria-describedby={spaceSeparatedIdListGenerator([\n checkboxGroup?.tipId,\n checkboxGroup?.errorMessageId,\n ariaDescribedby,\n ])}\n aria-invalid={hasError ? true : undefined}\n aria-labelledby={checkboxGroup?.uniqueGroupId}\n aria-checked={indeterminate ? 'mixed' : undefined}\n aria-readonly={isReadOnly}\n type=\"checkbox\"\n data-indeterminate={indeterminate}\n className={cn(\n utilStyles['hide-input'],\n focusStyles['focusable-sibling'],\n )}\n onKeyDown={readOnlyKeyDownHandler(\n 'selectionControl',\n isReadOnly,\n htmlProps.onKeyDown,\n )}\n onClick={readOnlyClickHandler(isReadOnly, htmlProps.onClick)}\n />\n <SelectionControl\n controlType=\"checkbox\"\n className={focusStyles['focus-styled-sibling']}\n />\n {hasChildren ? (\n children\n ) : hasLabel ? (\n <Typography {...selectionControlTypographyProps}>{label}</Typography>\n ) : null}\n </Box>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n","import { createContext, useContext } from 'react';\n\nimport { type Nullable } from '../../../types';\n\nexport interface CheckboxGroupContextProps {\n error?: boolean;\n errorMessageId?: string;\n uniqueGroupId?: string;\n tipId?: string;\n disabled?: boolean;\n readOnly?: boolean;\n}\n\nexport const CheckboxGroupContext =\n createContext<Nullable<CheckboxGroupContextProps>>(null);\n\nexport const useCheckboxGroup = () => {\n return useContext(CheckboxGroupContext);\n};\n",".container {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x0-125);\n}\n\n.group {\n display: flex;\n}\n\n.group--row {\n flex-direction: row;\n gap: var(--dds-spacing-x0-75);\n}\n\n.group--column {\n flex-direction: column;\n gap: var(--dds-spacing-x0-5);\n}\n\n.label {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n\n input ~ .selection-control {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n background-color 0.2s,\n border 0.2s,\n var(--dds-focus-transition);\n }\n }\n\n &:hover:not(.label--readonly)\n input:enabled:not(:checked)\n ~ .selection-control {\n background-color: var(--dds-color-surface-hover-default);\n box-shadow: inset 0 0 0 1px var(--dds-color-border-action-hover);\n border-color: var(--dds-color-border-action-hover);\n }\n\n input:checked:enabled ~ .selection-control,\n input:enabled[data-indeterminate='true'] ~ .selection-control {\n border-color: var(--dds-color-surface-action-selected);\n background-color: var(--dds-color-surface-action-selected);\n }\n\n &.label--readonly input:checked:enabled ~ .selection-control,\n &.label--readonly\n input:enabled[data-indeterminate='true']\n ~ .selection-control {\n border-color: var(--dds-color-surface-action-selected-disabled);\n background-color: var(--dds-color-surface-action-selected-disabled);\n }\n\n &:hover:not(.label--readonly)\n input:checked:enabled[type='checkbox']\n ~ .selection-control,\n &:hover:not(.label--readonly)\n input:enabled[data-indeterminate='true']\n ~ .selection-control {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-surface-action-hover);\n }\n\n input:checked ~ .selection-control:after,\n input[data-indeterminate='true'] ~ .selection-control:after {\n display: block;\n }\n}\n\n.label--checkbox {\n .selection-control:after {\n border: solid var(--dds-color-icon-on-action);\n border-width: 0 1px 1px 0;\n left: 6px;\n top: 1px;\n width: 5px;\n height: 10px;\n transform: rotate(45deg);\n }\n\n input[data-indeterminate='true'] ~ .selection-control: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\n.label--radio {\n .selection-control:after {\n border-radius: var(--dds-border-radius-rounded);\n background-color: var(--dds-color-icon-on-action);\n height: 8px;\n width: 8px;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n}\n\n.label--disabled {\n cursor: not-allowed;\n input:disabled ~ .selection-control {\n border-color: var(--dds-color-border-default);\n }\n input:checked:disabled ~ .selection-control,\n input:disabled[data-indeterminate='true'] ~ .selection-control {\n border-color: var(--dds-color-surface-action-selected-disabled);\n background-color: var(--dds-color-surface-action-selected-disabled);\n }\n}\n\n.label--readonly {\n cursor: default;\n color: var(--dds-color-text-medium);\n input ~ .selection-control {\n border-color: var(--dds-color-border-default);\n background-color: var(--dds-color-surface-field-disabled);\n }\n input:checked ~ .selection-control,\n input[data-indeterminate='true'] ~ .selection-control {\n border-color: var(--dds-color-surface-action-selected-disabled);\n background-color: var(--dds-color-surface-action-selected-disabled);\n }\n}\n\n.label--error {\n &:hover input:enabled:not(:focus-visible):not(:checked) ~ .selection-control {\n background-color: var(--dds-color-surface-danger-default);\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-c-tic-border-danger);\n }\n\n input:not(:focus-visible) ~ .selection-control,\n input:checked:enabled:not(:focus-visible)\n .selection-control\n &:hover\n input:checked:enabled:not(:focus-visible)\n .selection-control {\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-color-border-danger);\n }\n}\n\n.label--no-text {\n padding: 9px;\n}\n\n.selection-control {\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: 1px solid;\n border-color: var(--dds-color-border-default);\n background-color: var(--dds-color-surface-field-default);\n border-radius: var(--dds-border-radius-input);\n height: 18px;\n width: 18px;\n &:after {\n content: '';\n position: absolute;\n display: none;\n box-sizing: border-box;\n }\n}\n\n.selection-control--radio {\n border-radius: var(--dds-border-radius-rounded);\n}\n","import { type HTMLAttributes, type LabelHTMLAttributes } from 'react';\n\nimport styles from './SelectionControl.module.css';\nimport { cn } from '../../utils';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\ntype SelectionControlType = 'radio' | 'checkbox';\n\ntype SelectionControlProps = {\n controlType: SelectionControlType;\n} & HTMLAttributes<HTMLSpanElement>;\n\nexport const SelectionControl = ({\n controlType,\n className,\n ...rest\n}: SelectionControlProps) => (\n <span\n className={cn(\n className,\n styles['selection-control'],\n controlType === 'radio' && styles['selection-control--radio'],\n )}\n {...rest}\n />\n);\n\ntype SelectionControlLabelProps = {\n disabled?: boolean;\n readOnly?: boolean;\n hasError?: boolean;\n hasText?: boolean;\n controlType: SelectionControlType;\n} & LabelHTMLAttributes<HTMLLabelElement>;\n\nexport const Label = ({\n disabled,\n readOnly,\n hasError,\n hasText,\n controlType,\n className,\n ...rest\n}: SelectionControlLabelProps) => {\n return (\n <label\n className={cn(\n className,\n styles.label,\n styles[`label--${controlType}`],\n !hasText && styles['label--no-text'],\n typographyStyles['text-color--default'],\n disabled && styles['label--disabled'],\n disabled && typographyStyles['text-color--subtle'],\n readOnly && styles['label--readonly'],\n hasError && styles['label--error'],\n )}\n {...rest}\n />\n );\n};\n","import { type TypographyProps } from '../Typography';\n\nexport const selectionControlSizeNumberPx = 18;\nexport const selectionControlSize = `${selectionControlSizeNumberPx}px`;\n\nexport const selectionControlTypographyProps: TypographyProps = {\n color: 'inherit',\n typographyType: 'bodyMedium',\n as: 'span',\n};\n","import { useId } from 'react';\n\nimport {\n CheckboxGroupContext,\n type CheckboxGroupContextProps,\n} from './CheckboxGroupContext';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { RequiredMarker, cn, derivativeIdGenerator } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport { LockIcon } from '../../Icon/icons';\nimport { renderInputMessage } from '../../InputMessage';\nimport { Typography } from '../../Typography';\nimport labelStyles from '../../Typography/Label/Label.module.css';\nimport { type SelectionControlGroupCommonProps } from '../common/SelectionControl.types';\nimport styles from '../SelectionControl.module.css';\n\nexport type CheckboxGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n SelectionControlGroupCommonProps & {\n /**Indikerer at det er påkrevd å velge minst ett alternativ. Legger en markør bak ledeteksten. **OBS!** `required` må i tillegg gis til `<Checkbox>`-barna 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 disabled = false,\n readOnly = 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 disabled,\n readOnly,\n };\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container),\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n {label !== undefined ? (\n <Typography\n as=\"span\"\n typographyType=\"labelMedium\"\n id={uniqueGroupId}\n className={readOnly ? labelStyles['read-only'] : undefined}\n >\n {readOnly && (\n <Icon icon={LockIcon} className={labelStyles['read-only__icon']} />\n )}\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n ) : null}\n {renderInputMessage(tip, tipId)}\n <CheckboxGroupContext value={{ ...contextProps }}>\n <div\n role=\"group\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tip ? tipId : undefined}\n className={cn(styles.group, styles[`group--${direction}`])}\n >\n {children}\n </div>\n </CheckboxGroupContext>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </div>\n );\n};\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n",".container {\n display: flex;\n width: -moz-fit-content;\n width: fit-content;\n word-break: break-word;\n max-width: 100%;\n}\n\n.container--error {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n background-color: var(--dds-color-surface-danger-default);\n border-bottom-left-radius: var(--dds-border-radius-surface);\n border-bottom-right-radius: var(--dds-border-radius-surface);\n gap: var(--dds-spacing-x0-25);\n\n .icon {\n color: var(--dds-color-icon-on-danger-default);\n }\n}\n\n/* Plasserer ikonet sentrert i forhold til første linja av teksten.\n* Trekker fra 1px slik at det ser ut som i Figma; CSS håndterer linjehøyde annerledes.\n*/\n.icon {\n margin-top: calc(\n (var(--dds-font-lineheight-x1) * 1em - var(--dds-icon-size-small)) / 2 - 1px\n );\n}\n","import styles from './InputMessage.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\nimport { ErrorIcon } from '../Icon/icons';\nimport { Typography } from '../Typography/Typography/Typography';\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 * @default \"error\"\n */\n messageType: InputMessageType;\n }\n>;\n\nexport const InputMessage = ({\n message,\n messageType,\n id,\n className,\n htmlProps,\n ...rest\n}: InputMessageProps) => {\n const isError = messageType === 'error';\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container, isError && styles['container--error']),\n htmlProps,\n rest,\n )}\n >\n {isError && (\n <Icon icon={ErrorIcon} iconSize=\"small\" className={styles.icon} />\n )}\n <Typography\n typographyType={isError ? 'bodySmall' : 'bodyXsmall'}\n color={isError ? 'textDefault' : 'textSubtle'}\n as=\"span\"\n >\n {message}\n </Typography>\n </div>\n );\n};\n\nInputMessage.displayName = '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",".checkbox-label {\n padding: 0 0 0 calc(18px + var(--dds-spacing-x0-5));\n align-items: flex-start;\n /* Plasserer ikonet sentrert i forhold til første linja av teksten.\n * Trekker fra 1px slik at det ser ut som i Figma; CSS håndterer linjehøyde annerledes.\n */\n & > span {\n top: calc(\n (var(--dds-font-lineheight-x1) * 1em - var(--dds-icon-size-small)) / 2 -\n 1px\n );\n }\n}\n","import { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { VStack } from '../layout';\nimport { Checkbox, type CheckboxProps } from '../SelectionControl/Checkbox';\nimport { Typography } from '../Typography';\nimport styles from './CookieBanner.module.css';\n\nexport type CookieBannerCheckboxProps = Omit<\n CheckboxProps,\n 'label' | 'children'\n> & {\n /**Header - kort oppsummering av den spesifikke typen informasjonskapsel. */\n headerText?: string;\n /**Detaljer rundt den spesifikke typen informasjonskapsel. */\n description: string;\n};\n\nexport function CookieBannerCheckbox({\n headerText,\n description,\n id,\n className,\n htmlProps,\n ...rest\n}: CookieBannerCheckboxProps) {\n return (\n <Checkbox\n {...getBaseHTMLProps(\n id,\n cn(className, styles['checkbox-label']),\n htmlProps,\n rest,\n )}\n >\n <VStack gap=\"x0.5\">\n <Typography as=\"span\" typographyType=\"headingSmall\">\n {headerText}\n </Typography>\n <Typography as=\"span\"> {description} </Typography>\n </VStack>\n </Checkbox>\n );\n}\n\nCookieBannerCheckbox.displayName = 'CookieBannerCheckbox';\n","import { type ReactNode } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button, type ButtonProps } from '../Button';\nimport { HStack, Paper, type ResponsiveProps, VStack } from '../layout';\nimport { Heading } from '../Typography';\nimport {\n CookieBannerCheckbox,\n type CookieBannerCheckboxProps,\n} from './CookieBannerCheckbox';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { applyResponsiveStyle } from '../layout/common/utils';\n\nexport type CookieBannerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Header - kort oppsummering. */\n headerText?: string;\n /**Hovedinnholdet med info rundt informasjonkapsler bruk på siden. Kan inneholde lenker og andre interaktive elementer. */\n description?: ReactNode;\n /**Knapper for ulike nivåer av godkjenning av informasjonskaplser. Layout for knappene håndteres ut av boksen. */\n buttons?: Array<Omit<ButtonProps, 'purpose' | 'size'>>;\n /**Checkboxes for hver type informasjonskapsel som brukes på siden. Layout håndteres ut av boksen. */\n checkboxes?: Array<CookieBannerCheckboxProps>;\n } & Pick<\n ResponsiveProps,\n 'position' | 'top' | 'bottom' | 'left' | 'right' | 'width' | 'maxHeight'\n >\n>;\n\nexport function CookieBanner({\n headerText,\n description,\n buttons,\n checkboxes,\n id,\n className,\n htmlProps,\n 'aria-label': ariaLabel = 'Samtykke for bruk av informasjonskapsler',\n maxHeight = 'calc(100vh - 100px)',\n width = 'fit-content',\n children,\n ...rest\n}: CookieBannerProps) {\n return (\n <Paper\n {...getBaseHTMLProps(\n id,\n cn(className, utilStyles.scrollbar, utilStyles['scrollable-y']),\n htmlProps,\n rest,\n )}\n role=\"region\"\n aria-label={ariaLabel}\n padding={applyResponsiveStyle('x1', 'sm', 'x1.5')}\n width={width}\n maxHeight={maxHeight}\n border=\"border-default\"\n background=\"brand-tertiary-medium\"\n >\n <VStack maxWidth=\"70ch\" gap=\"x1\">\n {headerText && (\n <Heading level={2} typographyType=\"headingMedium\">\n {headerText}\n </Heading>\n )}\n {children}\n {description && <div>{description}</div>}\n {checkboxes && (\n <VStack gap=\"x1\">\n {checkboxes.map(props => (\n <CookieBannerCheckbox {...props} />\n ))}\n </VStack>\n )}\n {buttons && (\n <HStack\n gap={applyResponsiveStyle('x1', 'sm', 'x1.5')}\n flexWrap=\"wrap\"\n paddingBlock=\"x0.25 0\"\n >\n {buttons.map(props => (\n <Button {...props} size=\"medium\" purpose=\"secondary\" />\n ))}\n </HStack>\n )}\n </VStack>\n </Paper>\n );\n}\n\nCookieBanner.displayName = 'CookieBanner';\n","import { GregorianCalendar } from '@internationalized/date';\nimport {\n type AriaCalendarProps,\n type DateValue,\n useCalendar,\n} from '@react-aria/calendar';\nimport { useLocale } from '@react-aria/i18n';\nimport { useCalendarState } from '@react-stately/calendar';\nimport {\n type KeyboardEvent,\n type KeyboardEventHandler,\n useContext,\n} from 'react';\n\nimport { CalendarGrid } from './CalendarGrid';\nimport { Button } from '../../../Button';\nimport { ArrowLeftIcon, ArrowRightIcon } from '../../../Icon/icons';\nimport { Heading } from '../../../Typography';\nimport styles from '../../common/DateInput.module.css';\nimport { CalendarPopoverContext } from '../CalendarPopover';\n\nfunction createCalendar(identifier: string) {\n switch (identifier) {\n case 'gregory':\n return new GregorianCalendar();\n default:\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n}\n\nexport type CalendarProps<T extends DateValue> = AriaCalendarProps<T>;\n\nexport function Calendar<T extends DateValue>(props: CalendarProps<T>) {\n const { locale } = useLocale();\n const state = useCalendarState({\n ...props,\n createCalendar,\n locale,\n });\n const {\n calendarProps,\n prevButtonProps: { onPress: onPrev, 'aria-label': prevAriaLabel },\n nextButtonProps: { onPress: onNext, 'aria-label': nextAriaLabel },\n title,\n } = useCalendar(props, state);\n\n const { onClose, closeButtonRef } = useContext(CalendarPopoverContext);\n\n const closeOnKeyboardBlurBack: KeyboardEventHandler<HTMLButtonElement> = (\n event: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (event.key === 'Tab' && event.shiftKey === true) {\n if (!closeButtonRef?.current?.checkVisibility()) {\n onClose();\n }\n }\n };\n\n return (\n <div {...calendarProps} className={styles.calendar}>\n <div className={styles.calendar__header}>\n <Button\n type=\"button\"\n aria-label={prevAriaLabel}\n onClick={e => onPrev?.(e as never)}\n size=\"small\"\n purpose=\"tertiary\"\n icon={ArrowLeftIcon}\n htmlProps={{ onKeyDown: closeOnKeyboardBlurBack }}\n className={styles['calendar__month-button']}\n />\n <Heading\n level={2}\n typographyType=\"headingXsmall\"\n className={styles.calendar__header__month}\n >\n {title}\n </Heading>\n <Button\n type=\"button\"\n aria-label={nextAriaLabel}\n onClick={e => onNext?.(e as never)}\n size=\"small\"\n purpose=\"tertiary\"\n icon={ArrowRightIcon}\n className={styles['calendar__month-button']}\n />\n </div>\n <CalendarGrid state={state} />\n </div>\n );\n}\n\nCalendar.displayName = 'Calendar';\n","import { getWeeksInMonth } from '@internationalized/date';\nimport {\n type AriaCalendarGridProps,\n useCalendarGrid,\n} from '@react-aria/calendar';\nimport { useLocale } from '@react-aria/i18n';\nimport {\n type CalendarState,\n type RangeCalendarState,\n} from '@react-stately/calendar';\nimport { useContext } from 'react';\n\nimport { CalendarCell } from './CalendarCell';\nimport { cn } from '../../../../utils';\nimport typographyStyles from '../../../Typography/typographyStyles.module.css';\nimport { VisuallyHidden } from '../../../VisuallyHidden';\nimport styles from '../../common/DateInput.module.css';\nimport { getWeekNumber } from '../../utils/getWeekNumber';\nimport { CalendarPopoverContext } from '../CalendarPopover';\n\ninterface CalendarGridProps extends AriaCalendarGridProps {\n state: CalendarState | RangeCalendarState;\n}\n\nexport function CalendarGrid({ state, ...props }: CalendarGridProps) {\n const { locale } = useLocale();\n const {\n gridProps: { onKeyDown, ...gridProps },\n headerProps,\n } = useCalendarGrid(props, state);\n\n // Get the number of weeks in the month so we can render the proper number of rows.\n const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);\n const weekDays = ['Ma', 'Ti', 'On', 'To', 'Fr', 'Lø', 'Sø'];\n\n const { showWeekNumbers, onClose } = useContext(CalendarPopoverContext);\n\n const typographyCn = [\n typographyStyles['body-xsmall'],\n typographyStyles['text-color--subtle'],\n ];\n return (\n <table\n {...gridProps}\n onKeyDown={e => {\n if (\n (e.key === 'Enter' || e.key === ' ') &&\n state.isCellUnavailable(state.focusedDate)\n ) {\n return;\n }\n\n onKeyDown?.(e);\n }}\n cellPadding=\"0\"\n >\n <thead {...headerProps}>\n <tr>\n {showWeekNumbers && (\n <th className={cn(...typographyCn)}>\n # <VisuallyHidden as=\"span\">Ukenummer</VisuallyHidden>\n </th>\n )}\n {weekDays.map((day, index) => (\n <th key={index} className={cn(...typographyCn)}>\n {day}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {[...new Array(weeksInMonth).keys()].map(weekIndex => {\n const datesInWeek = state.getDatesInWeek(weekIndex);\n const firstExistingDay = datesInWeek.find(Boolean);\n const weekNumber = firstExistingDay\n ? getWeekNumber(firstExistingDay)\n : '';\n return (\n <tr key={weekIndex}>\n {showWeekNumbers && (\n <td\n className={cn(\n styles['calendar__week-number'],\n ...typographyCn,\n )}\n >\n {weekNumber}\n </td>\n )}\n {datesInWeek.map((date, i) =>\n date ? (\n <CalendarCell\n key={i}\n state={state}\n date={date}\n onClose={onClose}\n />\n ) : (\n <td key={i} />\n ),\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n}\n\nCalendarGrid.displayName = 'CalendarGrid';\n","import { isToday } from '@internationalized/date';\nimport {\n type AriaCalendarCellProps,\n useCalendarCell,\n} from '@react-aria/calendar';\nimport {\n type CalendarState,\n type RangeCalendarState,\n} from '@react-stately/calendar';\nimport { type KeyboardEvent, useRef } from 'react';\n\nimport { cn } from '../../../../utils';\nimport { focusable } from '../../../helpers/styling/focus.module.css';\nimport typographyStyles from '../../../Typography/typographyStyles.module.css';\nimport styles from '../../common/DateInput.module.css';\nimport { timezone } from '../constants';\n\nexport type CellVariant = 'default' | 'selected' | 'unavailable';\n\ninterface CalendarCellProps extends AriaCalendarCellProps {\n state: CalendarState | RangeCalendarState;\n onClose: () => void;\n}\n\nexport function CalendarCell({ date, state, onClose }: CalendarCellProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const {\n buttonProps,\n cellProps,\n isOutsideVisibleRange,\n formattedDate,\n isSelected,\n isDisabled,\n isUnavailable,\n } = useCalendarCell({ date }, state, ref);\n if (isDisabled) {\n return <td {...cellProps} />;\n }\n\n const variant: CellVariant = isSelected\n ? 'selected'\n : isUnavailable || isDisabled\n ? 'unavailable'\n : 'default';\n\n const closeOnKeyboardBlurForward = (event: KeyboardEvent) => {\n if (event.key === 'Tab' && event.shiftKey === false) {\n onClose();\n }\n };\n\n return (\n <td {...cellProps}>\n <button\n {...buttonProps}\n type=\"button\"\n ref={ref}\n hidden={isOutsideVisibleRange}\n onKeyDown={closeOnKeyboardBlurForward}\n className={cn(\n styles['calendar__cell-button'],\n isToday(date, timezone) && styles['calendar__cell-button--today'],\n styles[`calendar__cell-button--${variant}`],\n typographyStyles['body-small'],\n focusable,\n )}\n >\n {formattedDate}\n </button>\n </td>\n );\n}\n\nCalendarCell.displayName = 'CalendarCell';\n",".date-input {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n gap: var(--dds-spacing-x0-25);\n width: var(--dds-date-input-width);\n}\n\n.date-input--medium {\n padding-inline-start: var(--dds-spacing-x0-5);\n padding-inline-end: var(--dds-spacing-x1);\n}\n\n.date-input--small {\n padding-inline-start: var(--dds-spacing-x0-5);\n padding-inline-end: var(--dds-spacing-x0-75);\n}\n\n.date-input--xsmall {\n padding-inline-start: var(--dds-spacing-x0-25);\n padding-inline-end: var(--dds-spacing-x0-5);\n}\n\n.date-segment-container {\n display: flex;\n flex-direction: row;\n}\n\n.segment {\n padding: 0 0.05rem;\n display: block;\n width: -moz-max-content;\n width: max-content;\n font-variant-numeric: tabular-nums;\n outline: none;\n\n &:focus {\n background-color: var(--dds-color-surface-action-selected);\n color: var(--dds-color-text-on-action);\n }\n}\n\n.segment__placeholder {\n display: block;\n width: 100%;\n font-variant-numeric: tabular-nums;\n pointer-events: none;\n\n .segment:focus & {\n color: var(--dds-color-text-on-action);\n }\n}\n\n.segment__placeholder--invisible {\n visibility: hidden;\n height: 0;\n width: 0;\n}\n\n/**------------------------------------------------------------------------\n * Ikon-wrapper ved siden av input\n * Gjelder både dato og tid\n *------------------------------------------------------------------------*/\n\n.icon-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--dds-spacing-x0-25);\n color: var(--dds-color-icon-default);\n}\n\n.icon-wrapper--disabled {\n color: var(--dds-color-icon-subtle);\n}\n\n.icon-wrapper--readonly {\n color: var(--dds-color-icon-medium);\n}\n\n.icon-wrapper--small {\n margin-block: calc(0px - var(--dds-icon-size-medium));\n}\n\n.icon-wrapper--medium {\n margin-block: calc(0px - var(--dds-icon-size-small));\n}\n\n/**------------------------------------------------------------------------\n * Klasser relaterte til kalender-popover\n *------------------------------------------------------------------------*/\n\n.popover-button {\n cursor: pointer;\n border: 0;\n transition: 0.2s;\n background: transparent;\n border-radius: var(--dds-border-radius-button);\n color: var(--dds-color-icon-default);\n\n &:not(:disabled):not(.disabled):hover,\n &:not(:disabled):not(.disabled):active {\n background-color: var(--dds-color-surface-hover-default);\n color: var(--dds-color-icon-action-hover);\n }\n\n &:disabled,\n &.disabled {\n cursor: not-allowed;\n outline: none;\n color: var(--dds-color-text-subtle);\n }\n}\n\n.popover-button--readonly:disabled {\n color: var(--dds-color-text-medium);\n}\n\n.popover {\n z-index: var(--dds-zindex-popover);\n}\n\n.modal-close-button-wrapper {\n display: flex;\n justify-content: right;\n}\n\n.calendar {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n height: 327px;\n}\n\n.calendar__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.calendar__header__month {\n text-transform: capitalize;\n}\n\n.calendar__month-button {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.calendar__week-number {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.calendar__cell-button {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid;\n border-color: transparent;\n border-radius: var(--dds-border-radius-button);\n transition: 0.2s;\n}\n\n.calendar__cell-button--today {\n text-decoration: underline;\n border-color: var(--dds-color-border-default);\n}\n\n.calendar__cell-button--default {\n background-color: transparent;\n color: var(--dds-color-text-default);\n\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n border-color: var(--dds-color-border-action-hover);\n color: var(--dds-color-text-default);\n }\n}\n\n.calendar__cell-button--selected {\n background-color: var(--dds-color-surface-action-selected);\n border-color: var(--dds-color-surface-action-selected);\n color: var(--dds-color-text-on-action);\n}\n\n.calendar__cell-button--unavailable {\n background-color: var(--dds-color-surface-field-disabled);\n border-color: var(--dds-color-surface-field-disabled);\n color: var(--dds-color-text-subtle);\n cursor: not-allowed;\n text-decoration: line-through;\n}\n\n.calendar__cell-button--unavailable--today {\n border-color: var(--dds-color-surface-field-disabled);\n text-decoration: underline line-through;\n}\n","export const locale = 'no-NO' as const;\nexport const timezone = 'Europe/Oslo' as const;\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\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 { id, className, htmlProps, as, ...rest } = props;\n\n const cl = cn(className, utilStyles['visually-hidden']);\n\n if (as === 'div') {\n return <div {...getBaseHTMLProps(id, cl, htmlProps, rest)} />;\n }\n return <span {...getBaseHTMLProps(id, cl, htmlProps, rest)} />;\n};\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n type CalendarDate,\n type CalendarDateTime,\n type ZonedDateTime,\n endOfYear,\n startOfWeek,\n startOfYear,\n} from '@internationalized/date';\n\n/**\n * Calculates the week number following the ISO-8601 format.\n * @returns week number, 1 indexed\n */\nexport function getWeekNumber(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const dayOfWeek = getDayOfWeek(date);\n const dayOfYear = getDayOfYear(date);\n const jan1DayOfWeek = getDayOfWeek(startOfYear(date));\n\n const isPartOfLastWeekOfPreviousYear =\n dayOfYear <= 8 - jan1DayOfWeek && jan1DayOfWeek > 4;\n\n if (isPartOfLastWeekOfPreviousYear) {\n if (\n jan1DayOfWeek === 5 ||\n (jan1DayOfWeek === 6 && isLeapYear(date.subtract({ years: 1 })))\n ) {\n return 53;\n }\n return 52;\n }\n\n const daysInYear = getDayOfYear(endOfYear(date));\n if (daysInYear - dayOfYear < 4 - dayOfWeek) {\n return 1;\n }\n\n const weekNum = (dayOfYear + (7 - dayOfWeek) + (jan1DayOfWeek - 1)) / 7;\n if (jan1DayOfWeek > 4) {\n return weekNum - 1;\n }\n\n return weekNum;\n}\n\n/**\n * Mon = 1\n * Tue = 2\n * Wed = 3\n * Thu = 4\n * Fri = 5\n * Sat = 6\n * Sun = 7\n * @returns day of week, 1 indexed\n */\nexport function getDayOfWeek(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const weekStart = startOfWeek(date, 'no-NO');\n return (\n date.calendar.toJulianDay(date) -\n weekStart.calendar.toJulianDay(weekStart) +\n 1\n );\n}\n\n/**\n * @returns day of year, 1 indexed\n */\nexport function getDayOfYear(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const yearStart = startOfYear(date);\n return (\n date.calendar.toJulianDay(date) -\n yearStart.calendar.toJulianDay(yearStart) +\n 1\n );\n}\n\nexport function isLeapYear(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n return (\n (date.year % 4 === 0 && date.year % 100 !== 0) || date.year % 400 === 0\n );\n}\n","import {\n type KeyboardEvent,\n type KeyboardEventHandler,\n type ReactElement,\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useCombinedRef,\n useFloatPosition,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../../hooks';\nimport { cn } from '../../../utils';\nimport { Button } from '../../Button';\nimport {\n Backdrop,\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n} from '../../helpers';\nimport { CloseIcon } from '../../Icon/icons';\nimport { ThemeContext } from '../../ThemeProvider';\nimport styles from '../common/DateInput.module.css';\nimport { type DateField } from './DateField/DateField';\nimport { type Breakpoint, ShowHide } from '../../layout';\nimport { Paper } from '../../layout';\n\n/**------------------------------------------------------------------------\n * CalendarPopover\n *------------------------------------------------------------------------*/\n\ninterface CalendarPopoverContextValue {\n anchorRef: RefObject<HTMLDivElement | null> | null;\n closeButtonRef: RefObject<HTMLButtonElement | null> | null;\n isOpen: boolean;\n onClose: () => void;\n showWeekNumbers: boolean;\n}\n\nexport const CalendarPopoverContext =\n createContext<CalendarPopoverContextValue>({\n anchorRef: null,\n closeButtonRef: null,\n isOpen: false,\n onClose: () => null,\n showWeekNumbers: true,\n });\n\ninterface CalendarPopoverProps {\n children: ReactNode;\n isOpen: boolean;\n onClose: () => void;\n showWeekNumbers: boolean;\n}\n\nexport const CalendarPopover = ({\n children,\n onClose,\n ...props\n}: CalendarPopoverProps) => {\n const anchorRef = useRef<HTMLDivElement>(null);\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n useOnKeyDown('Escape', onClose);\n return (\n <CalendarPopoverContext\n value={{ anchorRef, closeButtonRef, onClose, ...props }}\n >\n {children}\n </CalendarPopoverContext>\n );\n};\n\n/**------------------------------------------------------------------------\n * CalendarPopoverAnchor\n *------------------------------------------------------------------------*/\n\ninterface CalendarPopoverAnchorProps {\n children: ReactElement<typeof DateField>;\n}\n\nexport const CalendarPopoverAnchor = ({\n children,\n}: CalendarPopoverAnchorProps) => {\n const { anchorRef } = useContext(CalendarPopoverContext);\n return <div ref={anchorRef ?? undefined}>{children}</div>;\n};\n\n/**------------------------------------------------------------------------\n * CalendarPopoverContent\n *------------------------------------------------------------------------*/\n\ninterface CalendarPopoverContentProps {\n children: ReactNode;\n className?: string;\n smallScreenBreakpoint?: Breakpoint;\n}\n\nexport const CalendarPopoverContent = ({\n children,\n className,\n smallScreenBreakpoint,\n}: CalendarPopoverContentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const modalRef = useRef<HTMLDivElement>(null);\n const { refs, styles: floatingStyles } = useFloatPosition(null, {\n placement: 'bottom-start',\n });\n\n const themeContext = useContext(ThemeContext);\n\n if (!themeContext) {\n throw new Error('DatePicker must be used within a ThemeProvider');\n }\n\n const portalTarget = themeContext.el;\n const { isOpen, onClose, anchorRef, closeButtonRef } = useContext(\n CalendarPopoverContext,\n );\n const hasTransitionedIn = useMountTransition(isOpen, 500);\n const isMounted = isOpen && hasTransitionedIn;\n const combinedRef = useCombinedRef(refs.setFloating, ref);\n\n useOnClickOutside([ref.current, modalRef.current], onClose);\n\n useEffect(() => {\n refs.setReference(anchorRef?.current ?? null);\n }, []);\n\n const hasBreakpoint = !!smallScreenBreakpoint;\n\n useEffect(() => {\n if (hasBreakpoint && modalRef.current?.checkVisibility()) {\n if (isOpen) {\n handleElementWithBackdropMount(document.body);\n } else {\n handleElementWithBackdropUnmount(document.body);\n }\n\n return () => handleElementWithBackdropUnmount(document.body);\n }\n }, [isOpen, hasBreakpoint]);\n\n const closeOnKeyboardBlurBack: KeyboardEventHandler<HTMLButtonElement> = (\n event: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (event.key === 'Tab' && event.shiftKey === true) {\n onClose();\n }\n };\n\n if (!isOpen) return null;\n\n return (\n <>\n {portalTarget &&\n hasBreakpoint &&\n createPortal(\n <ShowHide showBelow={smallScreenBreakpoint}>\n <Backdrop zIndex=\"modal\" isMounted={isMounted}>\n <Paper\n ref={modalRef}\n className={cn(styles.popover, className)}\n elevation={2}\n border=\"border-default\"\n padding=\"x0.5\"\n >\n <div className={styles['modal-close-button-wrapper']}>\n <Button\n ref={closeButtonRef}\n icon={CloseIcon}\n size=\"small\"\n purpose=\"tertiary\"\n aria-label=\"Lukk\"\n onClick={onClose}\n htmlProps={{ onKeyDown: closeOnKeyboardBlurBack }}\n />\n </div>\n {children}\n </Paper>\n </Backdrop>\n </ShowHide>,\n portalTarget,\n )}\n <Paper\n ref={combinedRef}\n hideBelow={hasBreakpoint ? smallScreenBreakpoint : undefined}\n className={cn(styles.popover, className)}\n style={floatingStyles.floating}\n elevation={2}\n border=\"border-default\"\n >\n {children}\n </Paper>\n </>\n );\n};\n","import { ddsTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n type ReactNode,\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './ThemeProvider.module.css';\nimport { cn } from '../../utils';\n\nexport type DdsTheme = keyof typeof ddsTokens;\nconst defaultTheme = 'core';\n\ninterface ThemeContextProps {\n theme: DdsTheme;\n el: HTMLDivElement | null;\n}\n\nexport const ThemeContext = createContext<ThemeContextProps | undefined>(\n undefined,\n);\n\nexport interface ThemeProviderProps {\n /**\n * Elsa tema for applikasjonen.\n * @default \"core\"\n */\n theme?: DdsTheme;\n /**\n * Selve applikasjonen.\n */\n children?: ReactNode;\n}\n\nexport function ThemeProvider({\n theme = defaultTheme,\n children,\n}: ThemeProviderProps) {\n const themeRef = useRef<HTMLDivElement>(null);\n\n const [element, setElement] = useState<HTMLDivElement | null>(null);\n useEffect(() => {\n setElement(themeRef.current);\n }, []);\n\n return (\n <div\n ref={themeRef}\n className={cn(\n `dds-${theme}`,\n styles['global-variables'],\n styles['global-styles'],\n 'dds-themed',\n )}\n >\n <ThemeContext value={{ theme, el: element }}>{children}</ThemeContext>\n </div>\n );\n}\n\n/**\n * Hook for å hente gjeldende tema og temanavn. Brukes inni ThemeProvider.\n *\n * @returns tema med JS-konstanter og navnet på temaet.\n */\n\nexport function useTheme() {\n const themeName = useContext(ThemeContext)?.theme;\n\n if (!themeName) {\n throw new Error('useTheme must be used inside a ThemeProvider');\n }\n\n const theme = ddsTokens[themeName];\n\n return { theme, themeName };\n}\n",".global-variables {\n /*Default text colors*/\n --dds-color-text-body: var(--dds-color-text-default);\n --dds-color-text-body-subtle: var(--dds-color-text-subtle);\n --dds-color-text-link: var(--dds-color-text-action-resting);\n --dds-color-text-link-visited: var(--dds-color-text-action-visited);\n --dds-color-text-label: var(--dds-color-text-medium);\n --dds-color-text-placeholder: var(--dds-color-text-subtle);\n --dds-color-text-helper: var(--dds-color-text-subtle);\n --dds-color-icon-link: var(--dds-color-text-action-resting);\n\n /*Focus*/\n --dds-focus-outline: var(--dds-color-focus-outside) 2px solid;\n --dds-focus-outline-offset: var(--dds-spacing-x0-125);\n --dds-focus-outline-inset: calc(0px - var(--dds-spacing-x0-25));\n --dds-focus-box-shadow: 0 0 0 2px var(--dds-color-focus-inside);\n --dds-focus-transition: outline-offset 0.2s;\n\n /*Other*/\n --dds-input-default-width: 320px;\n --dds-input-default-width-xsmall: 210px;\n --dds-transition-duration-surface-move: 0.5s;\n}\n\n.global-styles {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n color: var(--dds-color-text-default);\n}\n","import { type CalendarDate } from '@internationalized/date';\nimport { useDatePicker } from '@react-aria/datepicker';\nimport { I18nProvider } from '@react-aria/i18n';\nimport { useDatePickerState } from '@react-stately/datepicker';\nimport type { AriaDatePickerProps } from '@react-types/datepicker';\nimport { type Ref, useRef } from 'react';\n\nimport { Calendar } from './Calendar/Calendar';\nimport {\n CalendarPopover,\n CalendarPopoverAnchor,\n CalendarPopoverContent,\n} from './CalendarPopover';\nimport { locale } from './constants';\nimport { DateField, type DateFieldProps } from './DateField/DateField';\nimport { useCombinedRef } from '../../../hooks';\nimport { type Breakpoint } from '../../layout';\nimport { type ResponsiveProps } from '../../layout/common/Responsive.types';\nimport {\n type FocusableRef,\n useFocusManagerRef,\n} from '../utils/useFocusManagerRef';\n\nexport interface DatePickerProps\n extends Omit<AriaDatePickerProps<CalendarDate>, 'granularity'>,\n Pick<DateFieldProps<CalendarDate>, 'componentSize' | 'tip' | 'style'>,\n Pick<ResponsiveProps, 'width'> {\n ref?: Ref<HTMLElement>;\n /**\n * Ledetekst.\n */\n label?: string;\n /**\n * Feilmelding.\n */\n errorMessage?: string;\n /**Om ukenummer skal vises.\n * @default true\n */\n showWeekNumbers?: boolean;\n /**\n * Brekkpunkt for å vise versjon for liten skjerm.\n */\n smallScreenBreakpoint?: Breakpoint;\n}\n\nconst refIsFocusable = (ref: Ref<unknown>): ref is FocusableRef => {\n return typeof ref === 'object' && ref !== null && 'focus' in ref;\n};\n\nexport function DatePicker({\n errorMessage,\n componentSize,\n tip,\n style,\n width,\n smallScreenBreakpoint,\n showWeekNumbers = true,\n ref,\n ...props\n}: DatePickerProps) {\n const state = useDatePickerState(props);\n const domRef = useFocusManagerRef(ref && refIsFocusable(ref) ? ref : null);\n const internalRef = useRef<HTMLElement>(null);\n const combinedRef = useCombinedRef(internalRef, domRef);\n const { buttonProps, calendarProps, fieldProps, groupProps } = useDatePicker(\n { ...props, granularity: 'day' },\n state,\n internalRef,\n );\n\n return (\n <I18nProvider locale={locale}>\n <CalendarPopover\n isOpen={state.isOpen}\n onClose={state.close}\n showWeekNumbers={showWeekNumbers}\n >\n <CalendarPopoverAnchor>\n <DateField\n {...fieldProps}\n groupProps={groupProps}\n ref={combinedRef}\n componentSize={componentSize}\n tip={tip}\n label={props.label}\n errorMessage={errorMessage}\n buttonProps={buttonProps}\n style={style}\n width={width}\n />\n </CalendarPopoverAnchor>\n <CalendarPopoverContent smallScreenBreakpoint={smallScreenBreakpoint}>\n <Calendar {...calendarProps} />\n </CalendarPopoverContent>\n </CalendarPopover>\n </I18nProvider>\n );\n}\n\nDatePicker.displayName = 'DatePicker';\n","import {\n type CalendarDate,\n type DateValue,\n createCalendar,\n} from '@internationalized/date';\nimport {\n type AriaDateFieldOptions,\n useDateField,\n type useDatePicker,\n} from '@react-aria/datepicker';\nimport { useLocale } from '@react-aria/i18n';\nimport { useDateFieldState } from '@react-stately/datepicker';\nimport { type Ref, useRef } from 'react';\n\nimport { CalendarButton } from './CalendarButton';\nimport { DateSegment } from './DateSegment';\nimport { type InputProps } from '../../../helpers';\nimport { DateInput } from '../../common/DateInput';\n\nexport type DateFieldProps<T extends DateValue = CalendarDate> =\n AriaDateFieldOptions<T> & {\n buttonProps?: ReturnType<typeof useDatePicker>['buttonProps'];\n buttonOnClick?: () => void;\n groupProps?: ReturnType<typeof useDatePicker>['groupProps'];\n } & Pick<\n InputProps,\n | 'componentSize'\n | 'errorMessage'\n | 'tip'\n | 'disabled'\n | 'style'\n | 'width'\n | 'className'\n > & {\n ref?: Ref<HTMLDivElement>;\n };\n\nexport function DateField({\n componentSize = 'medium',\n buttonProps,\n groupProps,\n ref,\n ...props\n}: DateFieldProps) {\n const { locale } = useLocale();\n const state = useDateFieldState({\n ...props,\n locale,\n createCalendar,\n });\n\n const internalRef = useRef<HTMLInputElement>(null);\n const { labelProps, fieldProps } = useDateField(props, state, internalRef);\n\n const disabled = props.isDisabled || !!fieldProps['aria-disabled'];\n\n return (\n <DateInput\n {...props}\n groupProps={groupProps}\n componentSize={componentSize}\n label={props.label}\n disabled={disabled}\n required={props.isRequired}\n ref={ref}\n internalRef={internalRef}\n readOnly={props.isReadOnly}\n prefix={\n <CalendarButton\n componentSize={componentSize}\n {...buttonProps}\n isReadOnly={props.isReadOnly}\n isDisabled={disabled || props.isReadOnly}\n />\n }\n labelProps={labelProps}\n fieldProps={fieldProps}\n >\n {state.segments.map((segment, i) => (\n <DateSegment\n aria-readonly={props.isReadOnly}\n componentSize={componentSize}\n key={i}\n segment={segment}\n state={state}\n />\n ))}\n </DateInput>\n );\n}\n\nDateField.displayName = 'DateField';\n","import { type AriaButtonProps, useButton } from '@react-aria/button';\nimport { useRef } from 'react';\n\nimport type { DateFieldProps } from './DateField';\nimport { cn } from '../../../../utils';\nimport { focusable } from '../../../helpers/styling/focus.module.css';\nimport { Icon } from '../../../Icon';\nimport { CalendarIcon } from '../../../Icon/icons';\nimport styles from '../../common/DateInput.module.css';\n\ninterface CalendarButtonProps extends AriaButtonProps {\n componentSize: DateFieldProps['componentSize'];\n isReadOnly?: DateFieldProps['isReadOnly'];\n}\n\nexport function CalendarButton({\n componentSize,\n isReadOnly,\n ...props\n}: CalendarButtonProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(props, ref);\n\n const size = componentSize === 'xsmall' ? 'small' : 'medium';\n\n return (\n <button\n {...buttonProps}\n ref={ref}\n type=\"button\"\n className={cn(\n buttonProps.className,\n styles['icon-wrapper'],\n styles[`icon-wrapper--${size}`],\n styles['popover-button'],\n isReadOnly && styles['popover-button--readonly'],\n !props.isDisabled && focusable,\n props.isDisabled && 'disabled',\n )}\n >\n <Icon icon={CalendarIcon} iconSize={size} />\n </button>\n );\n}\n","import { useDateSegment } from '@react-aria/datepicker';\nimport type {\n DateFieldState,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport { useRef } from 'react';\n\nimport { cn } from '../../../../utils';\nimport { type InputSize } from '../../../helpers';\nimport {\n type StaticTypographyType,\n getTypographyCn,\n} from '../../../Typography';\nimport typographyStyles from '../../../Typography/typographyStyles.module.css';\nimport styles from '../../common/DateInput.module.css';\nimport { type DatePickerProps } from '../DatePicker';\n\nexport const typographyTypes: Record<InputSize, StaticTypographyType> = {\n medium: 'bodyMedium',\n small: 'bodySmall',\n xsmall: 'bodyXsmall',\n};\n\ninterface DateSegmentProps\n extends Pick<Required<DatePickerProps>, 'componentSize'> {\n segment: DateSegmentType;\n state: DateFieldState;\n}\n\nexport function DateSegment({\n segment,\n state,\n componentSize,\n}: DateSegmentProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n return (\n <div\n {...segmentProps}\n ref={ref}\n className={cn(\n segmentProps.className,\n styles.segment,\n typographyStyles[getTypographyCn(typographyTypes[componentSize])],\n )}\n style={{\n ...segmentProps.style,\n minWidth:\n segment.maxValue != null\n ? String(segment.maxValue).length + 'ch'\n : undefined,\n }}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n styles.segment__placeholder,\n !segment.isPlaceholder && styles['segment__placeholder--invisible'],\n typographyStyles[getTypographyCn(typographyTypes[componentSize])],\n )}\n >\n {segment.placeholder}\n </span>\n {segment.isPlaceholder\n ? ''\n : segment.text.padStart(String(segment.maxValue ?? '').length, '0')}\n </div>\n );\n}\n\nDateSegment.displayName = 'DateSegment';\n","import { type useDateField, type useDatePicker } from '@react-aria/datepicker';\nimport { type ReactNode, type Ref, useContext } from 'react';\n\nimport styles from './DateInput.module.css';\nimport { cn } from '../../../utils';\nimport { type InputProps, getInputWidth } from '../../helpers';\nimport inputStyles from '../../helpers/Input/Input.module.css';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport { InputMessage } from '../../InputMessage';\nimport { Box } from '../../layout';\nimport { Label } from '../../Typography';\nimport { CalendarPopoverContext } from '../DatePicker/CalendarPopover';\n\nexport type DateInputProps = {\n className?: string;\n active?: boolean;\n children: ReactNode;\n prefix?: ReactNode;\n label?: ReactNode;\n internalRef: Ref<HTMLDivElement>;\n groupProps?: ReturnType<typeof useDatePicker>['groupProps'];\n} & Pick<ReturnType<typeof useDateField>, 'fieldProps' | 'labelProps'> &\n Pick<\n InputProps,\n | 'componentSize'\n | 'errorMessage'\n | 'tip'\n | 'disabled'\n | 'style'\n | 'required'\n | 'readOnly'\n | 'width'\n > & {\n ref?: Ref<HTMLDivElement>;\n };\n\nexport function DateInput({\n errorMessage,\n tip,\n componentSize = 'medium',\n style,\n className,\n disabled,\n active,\n internalRef,\n readOnly,\n required,\n children,\n prefix: button,\n labelProps,\n fieldProps,\n groupProps,\n width,\n ref,\n ...props\n}: DateInputProps) {\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = props.label != null;\n const hasMessage = hasErrorMessage || hasTip;\n\n const { isOpen } = useContext(CalendarPopoverContext);\n\n return (\n <div\n {...groupProps}\n className={cn(className, inputStyles.container)}\n ref={ref}\n >\n {hasLabel && (\n <Label\n {...labelProps}\n showRequiredStyling={required}\n className={inputStyles.label}\n readOnly={readOnly}\n >\n {props.label}\n </Label>\n )}\n <Box\n {...fieldProps}\n style={style}\n ref={internalRef}\n width={getInputWidth(width, 'fit-content')}\n className={cn(\n inputStyles.input,\n inputStyles['input--stateful'],\n inputStyles['input--hover'],\n inputStyles[`input--${componentSize}`],\n hasErrorMessage && inputStyles['input--stateful-danger'],\n styles['date-input'],\n styles[`date-input--${componentSize}`],\n focusStyles['focusable-within'],\n isOpen && focusStyles.focused,\n disabled && 'disabled',\n disabled && inputStyles.disabled,\n active && 'active',\n readOnly && 'read-only',\n readOnly && inputStyles['read-only'],\n )}\n >\n {button}\n <div className={styles['date-segment-container']}>{children}</div>\n </Box>\n {hasMessage && (\n <InputMessage\n messageType={hasErrorMessage ? 'error' : 'tip'}\n message={errorMessage ?? tip ?? ''}\n />\n )}\n </div>\n );\n}\n\nDateInput.displayName = 'DateInput';\n","import { createFocusManager } from '@react-aria/focus';\nimport { type Ref, type RefObject, useImperativeHandle, useRef } from 'react';\n\ninterface DOMRefValue<T extends HTMLElement = HTMLElement> {\n UNSAFE_getDOMNode(): T | null;\n}\n\nexport interface FocusableRefValue<\n T extends HTMLElement = HTMLElement,\n D extends HTMLElement = T,\n> extends DOMRefValue<D> {\n focus(): void;\n}\n\nexport type DOMRef<T extends HTMLElement = HTMLElement> = Ref<DOMRefValue<T>>;\nexport type FocusableRef<T extends HTMLElement = HTMLElement> = Ref<\n FocusableRefValue<T>\n>;\n\nexport function useFocusManagerRef<T extends HTMLElement = HTMLElement>(\n ref: Ref<unknown>,\n) {\n const domRef = useRef<T>(null);\n useImperativeHandle(ref, () => ({\n ...createDOMRef(domRef),\n focus() {\n createFocusManager(domRef).focusFirst({ tabbable: true });\n },\n }));\n return domRef;\n}\n\nfunction createDOMRef<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null>,\n): DOMRefValue<T> {\n return {\n UNSAFE_getDOMNode() {\n return ref.current;\n },\n };\n}\n","import { type Time } from '@internationalized/date';\nimport { type AriaTimeFieldProps, useTimeField } from '@react-aria/datepicker';\nimport { useTimeFieldState } from '@react-stately/datepicker';\nimport { type Ref, useRef } from 'react';\n\nimport { cn } from '../../../utils';\nimport { type InputProps } from '../../helpers/Input/Input.types';\nimport { Icon } from '../../Icon';\nimport { TimeIcon } from '../../Icon/icons';\nimport { DateInput } from '../common/DateInput';\nimport styles from '../common/DateInput.module.css';\nimport { locale } from '../DatePicker/constants';\nimport { DateSegment } from '../DatePicker/DateField/DateSegment';\n\nexport type TimePickerProps = Omit<AriaTimeFieldProps<Time>, 'hideTimeZone'> &\n Pick<\n InputProps,\n 'componentSize' | 'errorMessage' | 'tip' | 'style' | 'width' | 'className'\n > & {\n ref?: Ref<HTMLDivElement>;\n };\n\nexport function TimePicker({\n componentSize = 'medium',\n width,\n ref,\n ...props\n}: TimePickerProps) {\n const internalRef = useRef<HTMLInputElement>(null);\n const state = useTimeFieldState({\n ...props,\n locale,\n });\n const { labelProps, fieldProps } = useTimeField(\n { ...props, hideTimeZone: true, granularity: 'hour' },\n state,\n internalRef,\n );\n\n const iconSize = componentSize === 'xsmall' ? 'small' : 'medium';\n const disabled = props.isDisabled || !!fieldProps['aria-disabled'];\n\n return (\n <DateInput\n {...props}\n width={width}\n disabled={disabled}\n required={props.isRequired}\n componentSize={componentSize}\n ref={ref}\n internalRef={internalRef}\n readOnly={props.isReadOnly}\n labelProps={labelProps}\n fieldProps={fieldProps}\n prefix={\n <span\n className={cn(\n styles['icon-wrapper'],\n disabled && styles['icon-wrapper--disabled'],\n props.isReadOnly && styles['icon-wrapper--readonly'],\n styles[`icon-wrapper--${iconSize}`],\n )}\n >\n <Icon icon={TimeIcon} iconSize={iconSize} />\n </span>\n }\n >\n {state.segments.map((segment, i) => (\n <DateSegment\n componentSize={componentSize}\n key={i}\n segment={segment}\n state={state}\n />\n ))}\n </DateInput>\n );\n}\n\nTimePicker.displayName = 'TimePicker';\n","import {\n CalendarDate,\n type DateValue,\n Time,\n fromDate,\n} from '@internationalized/date';\n\nexport function nativeDateToDateValue(\n date: Date,\n timeZone: string | undefined = 'Europe/Oslo',\n): DateValue {\n return fromDate(date, timeZone);\n}\n\nexport function dateValueToNativeDate(\n date: DateValue,\n timeZone: string | undefined = 'Europe/Oslo',\n): Date {\n return date.toDate(timeZone);\n}\n\nexport function nativeDateToCalendarDate(date: Date): CalendarDate {\n return new CalendarDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n}\n\nexport function nativeDateToTime(date: Date): Time {\n return new Time(date.getHours(), date.getMinutes(), date.getSeconds());\n}\n\nexport function calendarDateToNativeDate(\n date: CalendarDate,\n time: Time = new Time(12, 0, 0, 0),\n): Date {\n return new Date(\n date.year,\n date.month - 1,\n date.day,\n time.hour,\n time.minute,\n time.second,\n );\n}\n",".list {\n & > dt:first-of-type {\n margin-top: var(--dds-spacing-x1);\n }\n & > dd:last-child {\n margin-bottom: var(--dds-spacing-x1);\n }\n dd + dt {\n margin-top: var(--dds-spacing-x2);\n }\n}\n\n.list--default {\n dt {\n color: var(--dds-color-text-body);\n font-weight: 600;\n }\n}\n\n.list--subtle {\n dt {\n color: var(--dds-color-text-body-subtle);\n }\n}\n\n.list--row {\n &:not(:has(> dt):has(> dd)) {\n flex-direction: row;\n }\n}\n\n.list--column {\n &:not(:has(> dt):has(> dd)) {\n flex-direction: column;\n }\n}\n\n.desc {\n margin-inline-start: 0;\n align-items: center;\n display: flex;\n gap: var(--dds-spacing-x0-25);\n color: var(--dds-color-text-body);\n}\n\n.group {\n margin: var(--dds-spacing-x2);\n}\n","import styles from './DescriptionList.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { VStack } from '../layout';\n\nexport type DescriptionListAppearance = 'default' | 'subtle';\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?: Direction;\n }\n>;\n\nexport const DescriptionList = ({\n appearance = 'default',\n direction = 'column',\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: DescriptionListProps) => (\n <VStack\n as=\"dl\"\n margin=\"x0\"\n flexWrap=\"wrap\"\n rowGap=\"x0\"\n columnGap=\"x2\"\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.list,\n styles[`list--${appearance}`],\n styles[`list--${direction}`],\n ),\n htmlProps,\n rest,\n )}\n >\n {children}\n </VStack>\n);\n\nDescriptionList.displayName = 'DescriptionList';\n","import { type ComponentPropsWithRef } from 'react';\n\nexport type DescriptionListTermProps = ComponentPropsWithRef<'dt'>;\n\nexport const DescriptionListTerm = (props: DescriptionListTermProps) => {\n return <dt {...props} />;\n};\n\nDescriptionListTerm.displayName = 'DescriptionListTerm';\n","import styles from './DescriptionList.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\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 = ({\n children,\n icon,\n id,\n className,\n htmlProps,\n ...rest\n}: DescriptionListDescProps) => (\n <dd {...getBaseHTMLProps(id, cn(className, styles.desc), htmlProps, rest)}>\n {icon && <Icon icon={icon} />} {children}\n </dd>\n);\n\nDescriptionListDesc.displayName = 'DescriptionListDesc';\n","import { type Property } from 'csstype';\n\nimport styles from './DescriptionList.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\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 = ({\n children,\n margin,\n minWidth,\n maxWidth,\n id,\n className,\n htmlProps,\n ...rest\n}: DescriptionListGroupProps) => (\n <div\n {...getBaseHTMLProps(id, cn(className, styles.group), htmlProps, rest)}\n style={{ ...htmlProps?.style, maxWidth, minWidth, margin }}\n >\n {children}\n </div>\n);\n\nDescriptionListGroup.displayName = 'DescriptionListGroup';\n",".list {\n display: table;\n width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n}\n\n.list--with-dividers {\n .row {\n border-bottom: 1px solid var(--dds-color-border-default);\n }\n}\n\n.list--striped {\n .row {\n &:nth-of-type(even) {\n background-color: var(--dds-color-surface-default);\n }\n\n &:nth-of-type(odd) {\n background-color: var(--dds-color-surface-subtle);\n }\n }\n}\n\n.list--striped-with-bp {\n .row {\n &:nth-of-type(4n-1),\n &:nth-of-type(4n) {\n background-color: var(--dds-color-surface-default);\n }\n\n &:nth-of-type(4n-3),\n &:nth-of-type(4n-2) {\n background-color: var(--dds-color-surface-subtle);\n }\n }\n}\n\n.list--small {\n font: var(--dds-font-body-small);\n letter-spacing: var(--dds-font-body-small-letter-spacing);\n .cell {\n padding: var(--dds-spacing-x0-5);\n }\n}\n\n.list--medium {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n .cell {\n padding: var(--dds-spacing-x0-75);\n }\n}\n\n.list--large {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n .cell {\n padding-block: var(--dds-spacing-x1-5);\n padding-inline: var(--dds-spacing-x0-75);\n }\n}\n\n.column {\n dt,\n dd {\n margin-inline-start: 0;\n text-align: left;\n }\n}\n\n.cell {\n display: table-cell;\n}\n\n.term {\n font-weight: var(--dds-font-weight-bold);\n}\n","import { createContext, useContext } from 'react';\n\nimport { type Breakpoint } from '../layout';\n\ninterface DetailListContextProps {\n smallScreenBreakpoint?: Breakpoint;\n}\n\nexport const DetailListContext = createContext<DetailListContextProps>({});\nexport const useDetailListContext = () => useContext(DetailListContext);\n","import styles from './DetailList.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n type Size,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { type Breakpoint } from '../layout';\nimport { DetailListContext } from './DetailList.context';\n\nexport type DetailListSize = Extract<Size, 'large' | 'medium' | 'small'>;\n\nexport type DetailListProps = BaseComponentPropsWithChildren<\n HTMLDListElement,\n {\n /**\n * Størrelse på tabellen. Påvirker tetthet i cellene og font.\n * @default \"medium\"\n */\n size?: DetailListSize;\n /**\n * Om rader skal ha skillelinje.\n * @default true\n */\n withDividers?: boolean;\n /**\n * Om rader skal ha sebrastriper.\n * @default true\n */\n striped?: boolean;\n /**Brekkpunkt og nedover versjonen for små skjermer skal vises; den gjør om rader til kolonner. */\n smallScreenBreakpoint?: Breakpoint;\n }\n>;\n\nexport const DetailList = ({\n id,\n className,\n htmlProps,\n withDividers = true,\n striped = true,\n size = 'medium',\n smallScreenBreakpoint,\n ...rest\n}: DetailListProps) => (\n <DetailListContext value={{ smallScreenBreakpoint }}>\n <dl\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.list,\n styles[`list--${size}`],\n withDividers && styles['list--with-dividers'],\n striped && !smallScreenBreakpoint && styles['list--striped'],\n striped && smallScreenBreakpoint && styles['list--striped-with-bp'],\n ),\n htmlProps,\n rest,\n )}\n />\n </DetailListContext>\n);\n\nDetailList.displayName = 'DetailList';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './DetailList.module.css';\nimport { cn } from '../../utils';\n\nexport type DetailListDescProps = ComponentPropsWithRef<'dd'>;\n\nexport const DetailListDesc = ({ className, ...rest }: DetailListDescProps) => (\n <dd className={cn(className, styles.cell)} {...rest} />\n);\n\nDetailListDesc.displayName = 'DetailListDesc';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './DetailList.module.css';\nimport { cn } from '../../utils';\nimport { Box } from '../layout';\nimport { useDetailListContext } from './DetailList.context';\n\nexport type DetailListRowProps = ComponentPropsWithRef<'div'>;\n\nexport const DetailListRow = ({ className, ...rest }: DetailListRowProps) => {\n const { smallScreenBreakpoint: bp } = useDetailListContext();\n const hasBp = !!bp;\n\n return (\n <>\n <Box\n display=\"table-row\"\n hideBelow={hasBp ? bp : undefined}\n className={cn(className, styles.row)}\n {...rest}\n />\n {hasBp && (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n showBelow={bp}\n className={cn(className, styles.row, styles.column)}\n {...rest}\n />\n )}\n </>\n );\n};\n\nDetailListRow.displayName = 'DetailListRow';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './DetailList.module.css';\nimport { cn } from '../../utils';\n\nexport type DetailListTermProps = ComponentPropsWithRef<'dt'>;\n\nexport const DetailListTerm = ({ className, ...rest }: DetailListTermProps) => (\n <dt className={cn(className, styles.cell, styles.term)} {...rest} />\n);\n\nDetailListTerm.displayName = 'DetailListTerm';\n","import {\n type MouseEvent,\n type ReactNode,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport styles from './Drawer.module.css';\nimport {\n useCombinedRef,\n useFocusTrap,\n useMountTransition,\n useOnClickOutside,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n type Size,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport {\n Backdrop,\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n} from '../helpers';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { CloseIcon } from '../Icon/icons';\nimport { ThemeContext } from '../ThemeProvider';\nimport { Heading } from '../Typography';\nimport { useDrawerContext } from './Drawer.context';\nimport { HStack, Paper, type ResponsiveProps, VStack } from '../layout';\n\nexport type DrawerSize = Extract<Size, 'small' | 'medium' | 'large'>;\nexport type DrawerPlacement = 'left' | 'right';\nexport type WidthProps = Pick<\n ResponsiveProps,\n 'minWidth' | 'maxWidth' | 'width'\n>;\n\nexport type DrawerProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelsen på `<Drawer>`.\n * @default \"small\"\n */\n size?: DrawerSize;\n /** Plasseringen til `<Drawer>`.\n * @default \"right\"\n */\n placement?: DrawerPlacement;\n /**Header for `<Drawer>`. Returnerer default `<Heading>` hvis verdien er en `string`. */\n header?: string | ReactNode;\n /**Spesifiserer hvilken DOM node `<Drawer>` skal ha som forelder via React portal.\n * Brukes med f.eks `document.getElementById(\"id\")` eller ref (skaper ikke ny DOM node).\n * @default themeProviderRef\n */\n parentElement?: HTMLElement;\n /**Custom props for breddehåndtering ved behov. Kan settes per brekkpunkt eller samme verdi for alle. */\n widthProps?: WidthProps;\n /**\n * Om `<Drawer>` skal vises med backdrop som gråer ut bakgrunnen.\n */\n withBackdrop?: boolean;\n }\n >,\n 'id'\n>;\n\nexport const Drawer = ({\n children,\n header,\n placement = 'right',\n parentElement,\n size = 'small',\n className,\n htmlProps,\n widthProps = {},\n withBackdrop,\n ref,\n ...rest\n}: DrawerProps) => {\n const themeContext = useContext(ThemeContext);\n\n if (!themeContext) {\n throw new Error('Drawer must be used within a ThemeProvider');\n }\n\n const portalTarget = parentElement ?? themeContext?.el;\n\n const { isOpen = false, onClose, drawerId, triggerEl } = useDrawerContext();\n const { minWidth, maxWidth, width } = widthProps;\n\n const hasHeader = !!header;\n const headerId = hasHeader ? `${drawerId}-header` : undefined;\n\n const drawerRef = useFocusTrap<HTMLDivElement>(isOpen);\n const combinedRef = useCombinedRef(ref, drawerRef);\n\n useEffect(() => {\n if (withBackdrop) {\n if (isOpen) {\n handleElementWithBackdropMount(document.body);\n } else {\n handleElementWithBackdropUnmount(document.body);\n }\n\n return () => handleElementWithBackdropUnmount(document.body);\n }\n }, [isOpen]);\n\n const elements: Array<HTMLElement | null> = [drawerRef.current];\n if (triggerEl) elements.push(triggerEl);\n\n useOnClickOutside(elements, () => {\n if (isOpen && !withBackdrop) {\n onClose?.();\n }\n });\n\n const backdropRef = useRef<HTMLDivElement>(null);\n const onBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.target === backdropRef.current && isOpen && withBackdrop) {\n onClose?.();\n }\n };\n\n const hasTransitionedIn = useMountTransition(isOpen, 500);\n const isMounted = hasTransitionedIn && isOpen;\n\n const isOpenCn = isMounted ? 'opened' : 'closed';\n\n const getMaxWidth = (size: DrawerSize): string => {\n switch (size) {\n case 'small':\n return '400px';\n case 'medium':\n return '600px';\n case 'large':\n return '800px';\n }\n };\n\n const drawer = (\n <Paper\n ref={combinedRef}\n role=\"dialog\"\n tabIndex={-1}\n position=\"fixed\"\n top=\"0\"\n height=\"100%\"\n minWidth={minWidth ? minWidth : '300px'}\n maxWidth={maxWidth ? maxWidth : getMaxWidth(size)}\n width={width}\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"flex-start\"\n padding=\"var(--dds-drawer-container-padding)\"\n borderRadius=\"0\"\n {...getBaseHTMLProps(\n drawerId,\n cn(\n className,\n styles.container,\n styles[`container--${placement}`],\n styles[`container--${placement}-${isOpenCn}`],\n focusStyles['focusable--inset'],\n ),\n htmlProps,\n rest,\n )}\n elevation={4}\n aria-labelledby={headerId}\n >\n <HStack\n position=\"sticky\"\n top=\"0\"\n left=\"0\"\n width=\"100%\"\n paddingInline=\"var(--dds-drawer-content-container-padding)\"\n className={styles['drawer-header']}\n >\n {hasHeader && (\n <div id={headerId}>\n {typeof header === 'string' ? (\n <Heading level={2} typographyType=\"headingLarge\">\n {header}\n </Heading>\n ) : (\n header\n )}\n </div>\n )}\n <Button\n className={cn(styles['button--close'])}\n data-testid=\"drawer-close-btn\"\n size=\"small\"\n purpose=\"tertiary\"\n onClick={onClose}\n aria-label=\"Lukk\"\n icon={CloseIcon}\n />\n </HStack>\n <VStack\n gap=\"x1\"\n overflowY=\"auto\"\n className={cn(styles['content-container'], utilStyles.scrollbar)}\n >\n {children}\n </VStack>\n </Paper>\n );\n\n const component = withBackdrop ? (\n <Backdrop\n zIndex=\"drawer\"\n isMounted={isMounted}\n ref={backdropRef}\n onClick={onBackdropClick}\n >\n {drawer}\n </Backdrop>\n ) : (\n drawer\n );\n\n return (isOpen || hasTransitionedIn) && portalTarget\n ? createPortal(component, portalTarget)\n : null;\n};\n\nDrawer.displayName = 'Drawer';\n",".container {\n --dds-transition-duration-drawer-move: 0.2s;\n /* Justering på spacing slik at fokusmarkering osv. ikke skjules ved overflow */\n --dds-drawer-content-container-padding: var(--dds-spacing-x0-25);\n --dds-drawer-container-padding: var(--dds-spacing-x1)\n calc(var(--dds-spacing-x1) - var(--dds-drawer-content-container-padding))\n calc(var(--dds-spacing-x1) - var(--dds-drawer-content-container-padding))\n calc(var(--dds-spacing-x1-5) - var(--dds-drawer-content-container-padding));\n\n z-index: var(--dds-zindex-drawer);\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform var(--dds-transition-duration-drawer-move);\n }\n}\n\n.container--left {\n left: 0;\n}\n\n.container--left-opened {\n transform: translate(0px);\n}\n\n.container--left-closed {\n transform: translate(-100%);\n}\n\n.container--right {\n right: 0;\n}\n\n.container--right-opened {\n transform: translate(0px);\n}\n\n.container--right-closed {\n transform: translate(100%);\n}\n\n.content-container {\n /* Spacing slik at fokusmarkering osv. ikke skjules ved overflow */\n padding: var(--dds-drawer-content-container-padding);\n}\n\n.drawer-header {\n padding-bottom: calc(\n var(--dds-spacing-x0-75) - var(--dds-drawer-content-container-padding)\n );\n background-color: var(--dds-color-surface-default);\n z-index: 1;\n}\n\n.button--close {\n margin-left: auto;\n margin-top: calc(-1 * var(--dds-spacing-x0-125));\n}\n","import { createContext, useContext } from 'react';\n\ninterface DrawerContextType {\n drawerId: string;\n triggerEl: HTMLElement | null;\n onClose: () => void;\n isOpen: boolean;\n}\n\nexport const DrawerContext = createContext<Partial<DrawerContextType>>({});\n\nexport const useDrawerContext = () => useContext(DrawerContext);\n","import {\n type DetailedHTMLProps,\n type Dispatch,\n type HTMLAttributes,\n Children as ReactChildren,\n type ReactNode,\n type SetStateAction,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { DrawerContext } from './Drawer.context';\nimport { useOnKeyDown } from '../../hooks';\n\nexport interface DrawerGroupProps {\n /**Barna til komponenten: trigger-element og `<Drawer>`. */\n children: ReactNode;\n /**\n * Om `<Drawer>` er åpen ved første render.\n */\n isInitiallyOpen?: boolean;\n /**\n * Implementerer kontrollert tilstand: om `<Drawer>` er åpen.\n */\n isOpen?: boolean;\n /**\n * Implementerer kontrollert tilstand: funksjon som kontrollerer `isOpen`.\n */\n setIsOpen?: Dispatch<SetStateAction<boolean>>;\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 isInitiallyOpen,\n isOpen: propIsOpen,\n setIsOpen: propSetIsOpen,\n drawerId,\n onOpen,\n onClose,\n}: DrawerGroupProps) => {\n const [internalIsOpen, internalSetIsOpen] = useState(isInitiallyOpen);\n const [isOpen, setIsOpen] = [\n propIsOpen ?? internalIsOpen,\n propSetIsOpen ?? internalSetIsOpen,\n ];\n\n const generatedId = useId();\n const uniqueDrawerId = drawerId ?? `${generatedId}-drawer`;\n\n const triggerRef = useRef<HTMLElement>(null);\n\n const open = () => setIsOpen(true);\n const close = () => setIsOpen(false);\n\n const handleOpen = () => {\n open();\n onOpen?.();\n };\n\n const handleClose = () => {\n close();\n onClose?.();\n };\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n triggerRef?.current?.focus();\n handleClose();\n }\n });\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement<\n DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>\n >(child) &&\n (childIndex === 0\n ? cloneElement(child, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniqueDrawerId,\n 'aria-expanded': isOpen,\n ref: triggerRef,\n onClick: handleOpen,\n })\n : child)\n );\n });\n return (\n <DrawerContext\n value={{\n drawerId: uniqueDrawerId,\n isOpen,\n onClose: handleClose,\n triggerEl: triggerRef.current,\n }}\n >\n {Children}\n </DrawerContext>\n );\n};\n\nDrawerGroup.displayName = 'DrawerGroup';\n",".message {\n color: var(--dds-text-color--subtle);\n}\n","import { type HTMLAttributes, type ReactNode } from 'react';\n\nimport styles from './EmptyContent.module.css';\nimport { Paper, VStack } from '../layout';\nimport { Heading, type HeadingLevel, Paragraph } from '../Typography';\n\nexport type EmptyContentProps = {\n /**Tittel - kort oppsummering. */\n headerText?: string;\n /**Nivå på overskriften. Sørg for at den følger hierarkiet på siden.\n * @default 2\n */\n headerHeadingLevel?: HeadingLevel;\n /**Melding - beskrivelse og forklaring på hvordan brukeren kan få innhold. Kan inneholde lenker og andre interaktive elementer. */\n message: ReactNode;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function EmptyContent({\n headerText,\n message,\n headerHeadingLevel = 2,\n\n ...rest\n}: EmptyContentProps) {\n return (\n <Paper\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n minHeight=\"var(--dds-spacing-x10)\"\n height=\"100%\"\n width=\"100%\"\n padding=\"x1.5\"\n background=\"surface-subtle\"\n borderRadius=\"0\"\n {...rest}\n >\n <VStack maxWidth=\"70ch\" gap=\"x1\" textAlign=\"center\">\n {headerText && (\n <Heading level={headerHeadingLevel} typographyType=\"headingMedium\">\n {headerText}\n </Heading>\n )}\n <Paragraph className={styles.message}>{message}</Paragraph>\n </VStack>\n </Paper>\n );\n}\n\nEmptyContent.displayName = 'EmptyContent';\n","import { type HTMLAttributes, useId } from 'react';\n\nimport styles from './FavStar.module.css';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { StarFilledIcon, StarIcon } from '../Icon/icons';\n\ntype ComponentSize = 'medium' | 'large';\n\nexport type FavStarProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**\n * Status på favorisering. `true` betyr at den er favorisert.\n */\n checked?: boolean;\n /**\n * Hvis du skal bruke `<FavStar>` uncontrolled så kan denne brukes til å sette den initielle \"favoritt\"-statusen.\n * @default false\n */\n defaultChecked?: boolean;\n /**\n * Callback som blir kalt når brukeren endrer status på favorisering.\n */\n onChange?: (checked: boolean) => void;\n /**\n * Størrelse på `<FavStar>`. `'medium'` er den mest vanlige størrelsen.\n * @default \"medium\"\n */\n size?: ComponentSize;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const FavStar = ({\n id,\n className,\n onChange,\n checked: checkedProp,\n defaultChecked,\n size = 'medium',\n htmlProps,\n ...rest\n}: FavStarProps) => {\n const { style, ...props } = getBaseHTMLProps(\n id,\n cn(className),\n htmlProps,\n rest,\n );\n const generatedId = useId();\n const [checked, setChecked] = useControllableState({\n value: checkedProp,\n defaultValue: defaultChecked ?? false,\n onChange,\n });\n return (\n <label\n className={cn(\n className,\n styles.container,\n styles[`container--${size}`],\n focusStyles['has-focusable-input'],\n )}\n style={style}\n htmlFor={id ?? generatedId}\n >\n <input\n {...props}\n id={id ?? generatedId}\n checked={checked}\n onChange={e => setChecked(e.target.checked)}\n type=\"checkbox\"\n aria-label={props['aria-label'] ?? 'Favoriser'}\n className={utilStyles['hide-input']}\n />\n <Icon iconSize={size} icon={StarIcon} className={styles.icon} />\n <Icon\n iconSize={size}\n icon={StarFilledIcon}\n className={cn(styles.icon, !checked && styles['icon--invisible'])}\n />\n </label>\n );\n};\n\nFavStar.displayName = 'FavStar';\n",".container {\n position: relative;\n cursor: pointer;\n display: inline-block;\n color: var(--dds-color-icon-medium);\n background-color: transparent;\n border-radius: var(--dds-border-radius-button);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n 0.2s color,\n 0.2s background-color,\n 0.2s transform,\n var(--dds-focus-transition);\n }\n\n &:hover {\n color: var(--dds-color-icon-action-hover);\n background-color: var(--dds-color-surface-hover-default);\n }\n\n &:has(input:checked) {\n color: var(--dds-color-icon-action-resting);\n }\n\n &:hover:has(input:checked) {\n color: var(--dds-color-icon-action-hover);\n }\n\n &:active {\n .icon {\n transform: scale(0.75);\n }\n }\n}\n\n.container--medium {\n width: var(--dds-icon-size-medium);\n height: var(--dds-icon-size-medium);\n}\n\n.container--large {\n width: var(--dds-icon-size-large);\n height: var(--dds-icon-size-large);\n}\n\n.icon {\n color: currentColor;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 1;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n opacity 0.2s,\n transform 0.2s;\n }\n}\n\n.icon--invisible {\n opacity: 0;\n}\n","import { type Dispatch, type SetStateAction, useState } from 'react';\n\nimport { useCallbackRef } from './useCallbackRef';\n\nexport interface UseControllableStateProps<T> {\n value?: T;\n defaultValue?: T | (() => T);\n onChange?: (value: T) => void;\n}\n\n/**\n * The `useControllableState` hook returns the state and function that updates the state, just like React.useState does.\n */\nexport function useControllableState<T>(props: UseControllableStateProps<T>) {\n const { value: valueProp, defaultValue, onChange } = props;\n\n const onChangeProp = useCallbackRef(onChange);\n\n const [uncontrolledState, setUncontrolledState] = useState(defaultValue as T);\n const controlled = valueProp !== undefined;\n const value = controlled ? valueProp : uncontrolledState;\n\n const setValue = useCallbackRef(\n (next: SetStateAction<T>) => {\n const setter = next as (prevState?: T) => T;\n const nextValue = typeof next === 'function' ? setter(value) : next;\n\n if (!controlled) {\n setUncontrolledState(nextValue);\n }\n\n onChangeProp(nextValue);\n },\n [controlled, onChangeProp, value],\n );\n\n return [value, setValue] as [T, Dispatch<SetStateAction<T>>];\n}\n","import { type DependencyList, useCallback, useEffect, useRef } from 'react';\n\nexport function useCallbackRef<T extends (...args: Array<never>) => unknown>(\n callback: T | undefined,\n deps: DependencyList = [],\n) {\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n });\n\n return useCallback(((...args) => callbackRef.current?.(...args)) as T, deps);\n}\n","import { useEffect, useState } from 'react';\n\nimport { CommentComponent } from './CommentComponent';\nimport { type FeedbackProps, type Rating } from './Feedback.types';\nimport { RatingComponent } from './RatingComponent';\nimport { Paragraph } from '../Typography';\n\nexport const Feedback = ({\n layout = 'vertical',\n ratingLabel = 'Hva syns du om tjenesten?',\n positiveFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n negativeFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n ratingSubmittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n submittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n textAreaTip = 'Ikke send inn personopplysninger eller annen sensitiv informasjon',\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 layout={layout}\n rating={rating}\n feedbackText={feedbackText}\n positiveFeedbackLabel={positiveFeedbackLabel}\n negativeFeedbackLabel={negativeFeedbackLabel}\n ratingSubmittedTitle={ratingSubmittedTitle}\n textAreaTip={textAreaTip}\n loading={loading}\n handleSubmit={handleSubmit}\n handleFeedbackTextChange={handleFeedbackTextChange}\n />\n );\n }\n\n return <Paragraph>{submittedTitle}</Paragraph>;\n};\n",".rating-container {\n display: flex;\n gap: var(--dds-spacing-x1);\n}\n\n.rating-container--horizontal {\n flex-direction: row;\n align-items: center;\n}\n\n.rating-container--vertical {\n flex-direction: column;\n align-items: start;\n}\n\n.rating-submitted-title {\n display: inline-flex;\n align-items: center;\n gap: var(--dds-spacing-x0-5);\n}\n\n.button {\n border-radius: var(--dds-border-radius-button);\n color: var(--dds-color-icon-medium);\n\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n color: var(--dds-color-icon-action-hover);\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n color 0.2s,\n var(--dds-focus-transition);\n }\n}\n\n.button--horizontal {\n width: var(--dds-icon-size-medium);\n height: var(--dds-icon-size-medium);\n}\n\n.button--vertical {\n width: var(--dds-icon-size-large);\n height: var(--dds-icon-size-large);\n}\n","import {\n type ComponentPropsWithRef,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './TextArea.module.css';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { getDefaultText, getInputWidth, renderCharCounter } from '../helpers';\nimport { type CommonInputProps } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { scrollbar } from '../helpers/styling/utilStyles.module.css';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport { Label } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type TextAreaProps = CommonInputProps & {\n /** Spesifiserer om tegntelleren skal vises ved bruk av `maxLength` attributt.\n * @default true\n */\n withCharacterCounter?: boolean;\n} & ComponentPropsWithRef<'textarea'>;\n\nexport const TextArea = ({\n id,\n value,\n defaultValue,\n onChange,\n errorMessage,\n required = false,\n tip,\n label,\n readOnly,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n maxLength,\n withCharacterCounter = true,\n className,\n style,\n width,\n ref,\n ...rest\n}: TextAreaProps) => {\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>(getDefaultText(value, defaultValue));\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 hasMessage = hasErrorMessage || !!tip;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const characterCounterId = derivativeIdGenerator(\n uniqueId,\n 'characterCounter',\n );\n\n const showRequiredStyling = required || !!ariaRequired;\n const inputWidth = getInputWidth(width);\n\n return (\n <div className={cn(className, inputStyles.container)} style={{ ...style }}>\n {hasLabel && (\n <Label\n showRequiredStyling={showRequiredStyling}\n htmlFor={uniqueId}\n className={inputStyles.label}\n readOnly={readOnly}\n >\n {label}\n </Label>\n )}\n <Box\n as=\"textarea\"\n width={inputWidth}\n ref={multiRef}\n id={uniqueId}\n onChange={onChangeHandler}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n required={required}\n readOnly={readOnly}\n aria-required={ariaRequired}\n aria-describedby={spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n maxLength && withCharacterCounter ? characterCounterId : undefined,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorMessage ? true : undefined}\n className={cn(\n inputStyles.input,\n inputStyles['input--stateful'],\n hasErrorMessage && inputStyles['input--stateful-danger'],\n styles.textarea,\n scrollbar,\n typographyStyles['body-medium'],\n focusable,\n )}\n {...rest}\n />\n <Box\n display=\"flex\"\n justifyContent={\n withCharacterCounter\n ? hasMessage\n ? 'space-between'\n : 'flex-end'\n : undefined\n }\n width={withCharacterCounter ? inputWidth : undefined}\n >\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {renderCharCounter(\n characterCounterId,\n withCharacterCounter,\n text.length,\n maxLength,\n )}\n </Box>\n </div>\n );\n};\n\nTextArea.displayName = 'TextArea';\n",".textarea {\n height: auto;\n resize: vertical;\n vertical-align: bottom;\n padding-bottom: var(--dds-spacing-x0-5);\n}\n","import { Icon } from '../Icon';\nimport { type Layout, type ThumbIconProps } from './Feedback.types';\nimport {\n ThumbDownFilledIcon,\n ThumbDownIcon,\n ThumbUpFilledIcon,\n ThumbUpIcon,\n} from '../Icon/icons';\n\nconst getIconSize = (layout: Layout) =>\n layout === 'vertical' ? 'large' : 'medium';\n\nexport const ThumbIcon = ({ rating, layout, type }: ThumbIconProps) =>\n type === 'comment' ? (\n <Icon\n icon={rating === 'positive' ? ThumbUpFilledIcon : ThumbDownFilledIcon}\n color=\"iconActionResting\"\n iconSize={getIconSize(layout)}\n />\n ) : (\n <Icon\n icon={rating === 'positive' ? ThumbUpIcon : ThumbDownIcon}\n color=\"iconMedium\"\n iconSize={getIconSize(layout)}\n />\n );\n","import styles from './Feedback.module.css';\nimport { type Layout, type Rating } from './Feedback.types';\nimport { Button } from '../Button';\nimport { VStack } from '../layout';\nimport { TextArea } from '../TextArea';\nimport { Paragraph } from '../Typography';\nimport { ThumbIcon } from './utils';\n\ninterface CommentComponentType {\n layout: Layout;\n rating: Rating | null;\n feedbackText: string | undefined;\n positiveFeedbackLabel: string;\n negativeFeedbackLabel: string;\n ratingSubmittedTitle: string;\n textAreaTip: string;\n loading: boolean;\n handleSubmit: () => void;\n handleFeedbackTextChange: (newText: string) => void;\n}\n\nexport const CommentComponent = ({\n layout,\n rating,\n feedbackText,\n positiveFeedbackLabel,\n negativeFeedbackLabel,\n ratingSubmittedTitle,\n textAreaTip,\n loading,\n handleSubmit,\n handleFeedbackTextChange,\n}: CommentComponentType) => {\n return (\n <VStack gap=\"x1\">\n <span className={styles['rating-submitted-title']}>\n {ThumbIcon({ rating, layout, type: 'comment' })}\n <Paragraph>{ratingSubmittedTitle} </Paragraph>\n </span>\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={textAreaTip}\n />\n\n <Button\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n >\n Send inn\n </Button>\n </VStack>\n );\n};\n","import { type Placement } from '@floating-ui/react-dom';\nimport {\n type HTMLAttributes,\n Children as ReactChildren,\n type ReactElement,\n type Ref,\n cloneElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './Tooltip.module.css';\nimport { useCombinedRef, useFloatPosition, useOnKeyDown } from '../../hooks';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn, combineHandlers } from '../../utils';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Paper } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\ntype AnchorElement = ReactElement<\n HTMLAttributes<HTMLElement> & {\n ref: Ref<HTMLElement>;\n }\n>;\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 * @default \"bottom\"\n */\n placement?: Placement;\n /**Anchor-elementet. */\n children: AnchorElement;\n /**Forsinkelse for når tooltip skal dukke opp. Oppgis i millisekunder.\n * @default 100\n */\n delay?: number;\n /**`id` for tooltip. */\n tooltipId?: string;\n } & PickedHTMLAttributes,\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof PickedHTMLAttributes>\n>;\n\nexport const Tooltip = ({\n text,\n placement = 'bottom',\n children,\n tooltipId,\n delay = 100,\n style,\n onMouseLeave,\n onMouseOver,\n id,\n ref,\n className,\n htmlProps,\n ...rest\n}: TooltipProps) => {\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: positionStyles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, refs.setFloating, tooltipRef);\n\n const closeWhenNotInView: IntersectionObserverCallback = entries => {\n const [entry] = entries;\n entry.isIntersecting ? setInView(true) : setInView(false);\n };\n\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '0px',\n };\n const ref = tooltipRef.current;\n const observer = new IntersectionObserver(closeWhenNotInView, options);\n\n if (ref) observer.observe(ref);\n\n return () => {\n if (ref) observer.unobserve(ref);\n };\n }, [tooltipRef]);\n\n useEffect(() => {\n if (tooltipRef.current) {\n window.addEventListener('scroll', () => {\n closeTooltip();\n });\n }\n return () => {\n if (tooltipRef.current) {\n window.removeEventListener('scroll', () => null);\n }\n };\n }, []);\n\n let timer: ReturnType<typeof setTimeout>;\n\n useEffect(() => {\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useOnKeyDown(['Escape', 'Esc'], () => {\n if (open) setOpen(false);\n });\n\n const closeTooltip = () => {\n clearTimeout(timer);\n setOpen(false);\n };\n const openTooltip = () => {\n if (!open) {\n clearTimeout(timer);\n timer = setTimeout(() => setOpen(true), delay);\n }\n };\n\n const anchorElement = ReactChildren.only(\n cloneElement(children, {\n ref: refs.setReference,\n onFocus: combineHandlers(openTooltip, children.props.onFocus),\n onBlur: combineHandlers(closeTooltip, children.props.onBlur),\n 'aria-describedby': uniqueTooltipId,\n }),\n );\n\n const openCn = open && inView ? 'open' : 'closed';\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container),\n htmlProps,\n rest,\n )}\n style={style}\n onMouseLeave={combineHandlers(closeTooltip, onMouseLeave)}\n onMouseOver={combineHandlers(openTooltip, onMouseOver)}\n >\n {anchorElement}\n <Paper\n id={uniqueTooltipId}\n ref={combinedRef}\n role=\"tooltip\"\n aria-hidden={!open}\n style={{ ...positionStyles.floating }}\n elevation={1}\n border=\"border-subtle\"\n className={cn(\n styles.paper,\n typographyStyles['body-medium'],\n utilStyles['visibility-transition'],\n utilStyles[`visibility-transition--${openCn}`],\n )}\n >\n {text}\n <div ref={setArrowElement} style={positionStyles.arrow}>\n <svg width=\"36\" height=\"9\">\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 className={styles['svg-arrow__background']}\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 className={styles['svg-arrow__border']}\n />\n </svg>\n </div>\n </Paper>\n </div>\n );\n};\n\nTooltip.displayName = 'Tooltip';\n",".container {\n width: -moz-fit-content;\n width: fit-content;\n}\n\n.svg-arrow__border {\n fill: var(--dds-color-border-subtle);\n}\n\n.svg-arrow__background {\n fill: var(--dds-color-surface-default);\n}\n\n.paper {\n width: -moz-fit-content;\n width: fit-content;\n position: absolute;\n z-index: var(--dds-zindex-tooltip);\n text-align: center;\n padding: var(--dds-spacing-x0-75);\n}\n","import styles from './Feedback.module.css';\nimport { type Layout, type Rating } from './Feedback.types';\nimport { ThumbIcon } from './utils';\nimport { cn } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { HStack } from '../layout';\nimport { Spinner } from '../Spinner';\nimport { Tooltip } from '../Tooltip';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\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 const button = (rating: Rating, layout: Layout, tooltip: string) => (\n <button\n aria-label={tooltip}\n onClick={() => handleRatingChange(rating)}\n className={cn(\n utilStyles['remove-button-styling'],\n styles.button,\n styles[`button--${layout}`],\n focusable,\n )}\n >\n {ThumbIcon({ rating, layout, type: 'rating' })}\n </button>\n );\n\n return (\n <div\n className={cn(\n styles['rating-container'],\n styles[`rating-container--${layout}`],\n )}\n >\n <h2 className={typographyStyles['label-medium']}>{ratingLabel}</h2>\n {loading ? (\n <Spinner tooltip=\"Laster opp tilbakemelding ...\" />\n ) : (\n <HStack gap=\"x1\">\n <Tooltip text={thumbUpTooltip}>\n {button('positive', layout, thumbUpTooltip)}\n </Tooltip>\n <Tooltip text={thumbDownTooltip}>\n <div>{button('negative', layout, thumbDownTooltip)}</div>\n </Tooltip>\n </HStack>\n )}\n </div>\n );\n};\n",".container {\n padding-block: 0;\n padding-inline: 0;\n margin-inline: 0;\n border: none;\n}\n","import { container } from './Fieldset.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\n\nexport type FieldsetProps = BaseComponentPropsWithChildren<\n HTMLFieldSetElement,\n {\n /** Om alle inputfelt skal bli `disabled`. */\n disabled?: boolean;\n }\n>;\n\nexport const Fieldset = ({\n id,\n className,\n htmlProps,\n ...rest\n}: FieldsetProps) => (\n <fieldset\n {...getBaseHTMLProps(id, cn(className, container), htmlProps, rest)}\n />\n);\n\nFieldset.displayName = 'Fieldset';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { VStack } from '../layout';\n\nexport type FieldsetGroupProps = BaseComponentPropsWithChildren<HTMLDivElement>;\n\nexport const FieldsetGroup = ({\n id,\n className,\n htmlProps,\n ...rest\n}: FieldsetGroupProps) => (\n <VStack gap=\"x1.5\" {...getBaseHTMLProps(id, className, htmlProps, rest)} />\n);\n\nFieldsetGroup.displayName = 'FieldsetGroup';\n","import { type ComponentPropsWithRef, useId } from 'react';\n\nimport { ErrorList } from './ErrorList';\nimport { File } from './File';\nimport styles from './FileUploader.module.css';\nimport { type FileList } from './types';\nimport { type FileUploaderHookProps, useFileUploader } from './useFileUploader';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Button } from '../Button';\nimport { StylelessList } from '../helpers';\nimport { UploadIcon } from '../Icon/icons';\nimport { InputMessage } from '../InputMessage';\nimport { Box, type ResponsiveProps, VStack } from '../layout';\nimport { Label } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\nexport type FileUploaderProps = {\n /**Id til filopplasteren. */\n id?: string;\n /**Ledetekst for filopplaster. */\n label?: string;\n /**Ledetekst for slippsonen. Denne teksten skal, av UU-hensyn, henge sammen med den usynlige teksten: \"velg fil med påfølgende knapp\"\n * @default Dra og slipp filer her eller\n */\n dropAreaLabel?: string;\n /**Ledetekst for opplastingsknappen.\n * @default Velg fil\n */\n btnLabel?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Om det er påkrevd med minst én fil. */\n required?: boolean;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Om drag-and-drop zone skal vises.\n * @default true\n */\n withDragAndDrop?: boolean;\n /**Om listen med opplastede filer skal skjules. Brukes kun hvis listen blir vist på egen måte. */\n hideFileList?: boolean;\n} & Pick<ResponsiveProps, 'width'> &\n Partial<FileUploaderHookProps> &\n Omit<ComponentPropsWithRef<'div'>, 'onChange' | 'id'>;\n\nexport const FileUploader = (props: FileUploaderProps) => {\n const {\n id,\n label,\n dropAreaLabel = 'Dra og slipp filer her eller',\n btnLabel = 'Velg fil',\n tip,\n required = false,\n withDragAndDrop = true,\n initialFiles,\n value,\n accept,\n maxFiles,\n disabled,\n onChange,\n width = 'var(--dds-input-default-width)',\n errorMessage,\n hideFileList,\n className,\n ...rest\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 labelId = derivativeIdGenerator(uniqueId, 'label');\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const buttonId = derivativeIdGenerator(uniqueId, 'button');\n const inputId = derivativeIdGenerator(uniqueId, 'input');\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 const button = (\n <Button\n {...getButtonProps()}\n id={buttonId}\n size=\"medium\"\n type=\"button\"\n purpose=\"secondary\"\n icon={UploadIcon}\n htmlProps={{\n 'aria-invalid': hasRootErrors ? true : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasLabel ? labelId : undefined,\n hasTip ? tipId : undefined,\n ...rootErrorsList.map(e => e.id),\n ]),\n }}\n >\n {btnLabel}\n </Button>\n );\n\n return (\n <Box\n id={uniqueId}\n className={cn(className, typographyStyles['body-medium'])}\n width={width}\n {...rest}\n >\n {hasLabel && (\n <Label\n id={labelId}\n showRequiredStyling={showRequiredMarker}\n htmlFor={inputId}\n >\n {label}\n </Label>\n )}\n {hasTip && <InputMessage id={tipId} message={tip} messageType=\"tip\" />}\n {withDragAndDrop ? (\n <VStack\n gap=\"x1\"\n padding=\"x1.5 x1.5 x2 x1.5\"\n {...getRootProps()}\n className={cn(\n styles['input-container'],\n hasRootErrors && styles['input-container--with-errors'],\n isDragActive && styles['input-container--drag-active'],\n )}\n >\n <input\n {...getInputProps()}\n id={inputId}\n data-testid=\"file-uploader-input\"\n />\n {dropAreaLabel}\n <VisuallyHidden as=\"span\">\n velg fil med påfølgende knapp\n </VisuallyHidden>\n {button}\n </VStack>\n ) : (\n <div className={styles['input-container--no-drag-zone']}>\n <input {...getInputProps()} id={inputId} />\n {button}\n </div>\n )}\n <ErrorList errors={rootErrorsList} />\n {!hideFileList && <StylelessList>{fileListElements}</StylelessList>}\n </Box>\n );\n};\n\nFileUploader.displayName = 'FileUploader';\n","import { StylelessList } from '../helpers';\nimport { InputMessage } from '../InputMessage';\n\ninterface ErrorListProps {\n errors: Array<{\n id: string | undefined;\n message: string;\n }>;\n}\n\nexport const ErrorList = (props: ErrorListProps) => {\n const { errors } = props;\n\n if (errors.length < 1) {\n return null;\n }\n\n if (errors.length === 1) {\n return (\n <InputMessage\n id={errors[0].id}\n message={errors[0].message}\n messageType=\"error\"\n />\n );\n }\n\n return (\n <StylelessList>\n {errors.map(({ id, message }) => {\n return (\n <li>\n <InputMessage\n key={id}\n id={id}\n message={message}\n messageType=\"error\"\n />\n </li>\n );\n })}\n </StylelessList>\n );\n};\n",".input-container {\n box-sizing: border-box;\n border: 2px dashed;\n border-color: var(--dds-color-border-default);\n background-color: var(--dds-color-surface-default);\n border-radius: var(--dds-border-radius-surface);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s;\n }\n}\n\n.input-container--with-errors {\n border-color: var(--dds-color-border-danger);\n}\n\n.input-container--drag-active {\n border-color: var(--dds-color-border-action-hover);\n background-color: var(--dds-color-surface-hover-default);\n}\n\n.input-container--no-drag-zone {\n padding: var(--dds-spacing-x0-5) 0;\n}\n\n.file--invalid {\n box-shadow: inset 0 0 0 1px var(--dds-color-border-danger);\n}\n\n.file__icon--invalid {\n color: var(--dds-color-icon-on-danger-default);\n}\n\n.file__icon--valid {\n color: var(--dds-color-icon-on-success-default);\n}\n\n.file__name {\n word-break: break-all;\n width: 100%;\n}\n","import { ErrorList } from './ErrorList';\nimport styles from './FileUploader.module.css';\nimport { type FileUploaderFile } from './fileUploaderReducer';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { CheckCircledIcon, CloseIcon, ErrorIcon } from '../Icon/icons';\nimport { Paper } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\ninterface FileProps {\n parentId: string;\n index: number;\n isValid: boolean;\n file: FileUploaderFile;\n removeFile: () => void;\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 <li>\n <Paper\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap=\"x0.75\"\n marginBlock=\"x0.5 0\"\n padding=\"x0.5 x1\"\n border={isValid ? 'border-default' : 'border-danger'}\n background=\"surface-subtle\"\n className={cn(!isValid && styles['file--invalid'])}\n >\n <span\n className={cn(styles.file__name, typographyStyles['body-medium'])}\n >\n {stateFile.file.name}\n </span>\n <Icon\n icon={isValid ? CheckCircledIcon : ErrorIcon}\n className={styles[`file__icon--${isValid ? 'valid' : 'invalid'}`]}\n />\n <Button\n size=\"small\"\n purpose=\"tertiary\"\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 </Paper>\n <ErrorList errors={errorsList} />\n </li>\n );\n};\n","import {\n type FileWithPath,\n fromEvent as getFilesFromEvent,\n} from 'file-selector';\nimport type React from 'react';\nimport {\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type Ref,\n} from 'react';\nimport { useCallback, useEffect, useMemo, useReducer, useRef } from 'react';\n\nimport {\n type FileUploaderFile,\n type RootErrorList,\n fileUploaderReducer,\n} from './fileUploaderReducer';\nimport { type FileList, type FileUploaderAccept } from './types';\nimport {\n getInvalidFileTypeErrorMessage,\n getTooManyFilesErrorMessage,\n isEventWithFiles,\n isFileAccepted,\n preventDefaults,\n} from './utils';\n\nexport interface FileUploaderHookProps {\n id: string | undefined;\n /**Dersom komponenten skal styres internt. Utgangspunktet for filene som har blitt lastet opp. */\n initialFiles: FileList | undefined;\n /**Dersom komponenten styres utenfra. Filene som har blitt lastet opp. */\n value: FileList | undefined;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Hvilke filendelser eller mime-typer som filopplasteren skal akseptere. */\n accept: Array<FileUploaderAccept> | undefined;\n /**Om filopplasteren er avslått eller ikke */\n disabled: boolean | undefined;\n /**Maks antall filer som tillates. */\n maxFiles: number | undefined;\n /**Feilmelding. Setter også error state. */\n errorMessage: string | undefined;\n}\n\nconst calcRootErrors = (\n files: Array<FileUploaderFile>,\n maxFiles: number | undefined,\n errorMessage: string | undefined,\n): RootErrorList => {\n const errors: RootErrorList = [];\n\n if (maxFiles && maxFiles >= 1 && files.length > maxFiles) {\n errors.push(getTooManyFilesErrorMessage(maxFiles));\n }\n\n if (errorMessage) {\n errors.push(errorMessage);\n }\n\n return errors;\n};\n\nexport const useFileUploader = <TRootElement extends HTMLElement>(\n props: FileUploaderHookProps,\n) => {\n const {\n initialFiles,\n value,\n onChange,\n accept,\n maxFiles,\n disabled,\n errorMessage,\n } = props;\n\n const rootRef = useRef<TRootElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const isControlled = !!value;\n\n const initialFileUploaderFiles = useMemo(\n () =>\n (initialFiles ?? []).map<FileUploaderFile>(f => ({\n file: f,\n errors: [],\n })),\n [initialFiles],\n );\n\n const [state, dispatch] = useReducer(fileUploaderReducer, {\n files: initialFileUploaderFiles,\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n rootErrors: calcRootErrors(\n initialFileUploaderFiles,\n maxFiles,\n errorMessage,\n ),\n });\n\n const { files: stateFiles } = state;\n\n useEffect(() => {\n if (isControlled) {\n const files = value.map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n });\n\n dispatch({\n type: 'onSetFiles',\n payload: files,\n });\n }\n }, [value, isControlled, accept, dispatch]);\n\n useEffect(() => {\n dispatch({\n type: 'setRootErrors',\n payload: calcRootErrors(stateFiles, maxFiles, errorMessage),\n });\n }, [dispatch, stateFiles, maxFiles, errorMessage]);\n\n const onRootFocus = useCallback(\n () => dispatch({ type: 'focus' }),\n [dispatch],\n );\n\n const onRootBlur = useCallback(() => dispatch({ type: 'blur' }), [dispatch]);\n\n const onRootDragEnter = useCallback(\n async (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (isEventWithFiles(evt)) {\n const files = await getFilesFromEvent(evt);\n const fileCount = files.length;\n\n if (fileCount === 0) return;\n\n dispatch({ type: 'dragEnter' });\n }\n },\n [dispatch, accept, maxFiles],\n );\n\n const onRootDragOver = useCallback((evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n const hasFiles = isEventWithFiles(evt);\n if (hasFiles && evt.dataTransfer) {\n try {\n evt.dataTransfer.dropEffect = 'copy';\n } catch {} /* eslint-disable-line no-empty */\n }\n }, []);\n\n const onRootDragLeave = useCallback(\n (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (evt.currentTarget.contains(evt.relatedTarget as HTMLElement)) return;\n\n dispatch({ type: 'dragLeave' });\n },\n [dispatch],\n );\n\n const setFiles = useCallback(\n async (\n evt: React.DragEvent<TRootElement> | React.ChangeEvent<HTMLInputElement>,\n ) => {\n evt.preventDefault();\n if (isEventWithFiles(evt)) {\n const existingFileNames = stateFiles.map(f => f.file.name);\n\n // TODO: Fiks cast her.\n const filesFromEvent = (await getFilesFromEvent(\n evt,\n )) as Array<FileWithPath>;\n\n const newFiles = filesFromEvent\n .filter(f => !existingFileNames.includes(f.name))\n .map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n })\n .concat(stateFiles);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onSetFiles',\n payload: newFiles,\n });\n }\n }\n },\n [\n stateFiles,\n isControlled,\n accept,\n errorMessage,\n maxFiles,\n onChange,\n dispatch,\n ],\n );\n\n const openFileDialog = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n inputRef.current.click();\n }\n }, [inputRef]);\n\n const removeFile = useCallback(\n (file: FileUploaderFile) => {\n const newFiles = [...stateFiles];\n newFiles.splice(stateFiles.indexOf(file), 1);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onRemoveFile',\n payload: newFiles,\n });\n }\n },\n [stateFiles, isControlled, maxFiles, errorMessage, onChange, dispatch],\n );\n\n const getRootProps = useCallback(\n (): HTMLAttributes<TRootElement> & {\n ref: Ref<TRootElement>;\n } => ({\n onBlur: onRootBlur,\n onFocus: onRootFocus,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDrop: setFiles,\n ref: rootRef,\n }),\n [\n onRootBlur,\n onRootFocus,\n onRootDragEnter,\n onRootDragOver,\n setFiles,\n rootRef,\n disabled,\n ],\n );\n\n const getButtonProps = useCallback(\n (): ButtonHTMLAttributes<HTMLButtonElement> & {\n ref: Ref<HTMLButtonElement>;\n } => ({\n onClick: openFileDialog,\n ref: buttonRef,\n }),\n [openFileDialog, buttonRef],\n );\n\n const getInputProps = useCallback(\n (): InputHTMLAttributes<HTMLInputElement> & {\n ref: Ref<HTMLInputElement>;\n } => ({\n type: 'file',\n style: { display: 'none' },\n tabIndex: -1,\n ref: inputRef,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onChange: setFiles,\n multiple: !maxFiles || maxFiles > 1,\n ...(accept ? { accept: accept.join(',') } : {}),\n }),\n [inputRef, setFiles, maxFiles, accept],\n );\n\n return {\n state,\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n };\n};\n","import { type FileWithPath } from 'file-selector';\nimport { type Reducer } from 'react';\n\nexport interface FileUploaderFile {\n file: FileWithPath;\n errors: Array<string>;\n}\n\nexport type RootErrorList = Array<string>;\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: Array<FileUploaderFile>;\n }\n | {\n type: 'onRemoveFile';\n payload: Array<FileUploaderFile>;\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: Array<FileUploaderFile>;\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: Array<string>;\n}\n\nexport const fileUploaderReducer: Reducer<\n FileUploaderState,\n FileUploaderAction\n> = (state, action) => {\n switch (action.type) {\n case 'focus':\n return { ...state, isFocused: true };\n case 'blur':\n return { ...state, isFocused: false };\n case 'dragEnter':\n return {\n ...state,\n isDragActive: true,\n };\n case 'dragLeave':\n return { ...state, isDragActive: false };\n case 'onSetFiles':\n return {\n ...state,\n isDragActive: false,\n files: action.payload,\n };\n case 'onRemoveFile':\n return {\n ...state,\n files: action.payload,\n };\n case 'setRootErrors':\n return {\n ...state,\n rootErrors: action.payload,\n };\n default:\n return state;\n }\n};\n","/* Kopiert fra https://github.com/react-dropzone/attr-accept.\n * attr-accept har problemer med ESM output, så vi tar heller bare inn koden direkte.\n * Dette er all kode som ligger i pakken, og den har ikke vært endret på fire år, så\n * det skal nok gå fint å \"vedlikeholde\" dette selv.\n */\n\n/**\n * Check if the provided file type should be accepted by the input with accept attribute.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#attr-accept\n *\n * Inspired by https://github.com/enyo/dropzone\n *\n * @param file {File} https://developer.mozilla.org/en-US/docs/Web/API/File\n * @param acceptedFiles {string}\n * @returns {boolean}\n */\nexport function isAccepted(\n file: File,\n acceptedFiles: Array<string> | string | undefined,\n): boolean {\n if (file && acceptedFiles) {\n const acceptedFilesArray = Array.isArray(acceptedFiles)\n ? acceptedFiles\n : acceptedFiles.split(',');\n const fileName = file.name || '';\n const mimeType = (file.type || '').toLowerCase();\n const baseMimeType = mimeType.split('/')[0] || '';\n\n return acceptedFilesArray.some(type => {\n const validType = type.trim().toLowerCase();\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.slice(0, -2);\n }\n return mimeType === validType;\n });\n }\n return true;\n}\n","import { isAccepted } from './attr-accept';\n\nexport const preventDefaults = (event: React.BaseSyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nexport const isDragEvent = (\n event: unknown,\n): event is React.DragEvent<unknown> => {\n const asDragEvent = event as React.DragEvent<unknown>;\n\n return asDragEvent.dataTransfer !== undefined;\n};\n\nexport const isEventWithFiles = (\n event: React.DragEvent<unknown> | React.ChangeEvent<HTMLInputElement>,\n): boolean => {\n if (!isDragEvent(event)) {\n return event.target.files !== null && event.target.files !== undefined;\n }\n\n return (\n event.dataTransfer.types.includes('Files') ||\n event.dataTransfer.types.includes('application/x-moz-file')\n );\n};\n\nexport const isFileAccepted = (\n file: File,\n accept: Array<string> | undefined,\n): boolean => {\n return accept !== undefined ? isAccepted(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",".container {\n padding-block-start: var(--dds-spacing-x3);\n padding-block-end: var(--dds-spacing-x6);\n\n @media only screen and (min-width: 960px) {\n padding-block: var(--dds-spacing-x4);\n }\n}\n\n.left {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x4);\n}\n\n.list {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x1-5);\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x1-5);\n}\n\n.socials-group {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x1);\n}\n\n.socials-list {\n display: flex;\n gap: var(--dds-spacing-x1-5);\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\nimport { Contrast } from '../Contrast';\n\nexport type FooterProps = ComponentPropsWithRef<'footer'>;\n\nexport const Footer = ({ className, ...rest }: FooterProps) => (\n <Contrast as=\"footer\" className={cn(className, styles.container)} {...rest} />\n);\n","import { Heading, type HeadingProps } from '../Typography';\n\nexport type FooterListHeaderProps = Omit<HeadingProps, 'level' | 'withMargins'>;\n\nexport const FooterListHeader = (props: FooterListHeaderProps) => (\n <Heading level={2} typographyType=\"headingSmall\" {...props} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport Logo from './norges_domstoler_logo.svg';\nimport { Box } from '../layout/Box/Box';\n\ntype HideBreakpoint = 'xs' | 'sm' | 'md';\n\nexport type FooterLogoProps = ComponentPropsWithRef<'img'> & {\n /**Brekkepunkt når logoen skal skjules på mindre skjerm. */\n hideBreakpoint?: HideBreakpoint;\n};\n\nexport const FooterLogo = ({ hideBreakpoint, ...rest }: FooterLogoProps) => {\n return (\n <Box\n hideBelow={hideBreakpoint ? hideBreakpoint : undefined}\n width=\"fit-content\"\n >\n <img\n height={80}\n width={151}\n alt=\"norges domstoler\"\n src={Logo}\n {...rest}\n />\n </Box>\n );\n};\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\nimport { StylelessList } from '../helpers';\n\nexport type FooterListProps = ComponentPropsWithRef<'ul'>;\n\nexport const FooterList = ({ className, ...rest }: FooterListProps) => (\n <StylelessList className={cn(className, styles.list)} {...rest} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\nimport { StylelessList } from '../helpers';\n\nexport type FooterSocialsListProps = ComponentPropsWithRef<'ul'>;\n\nexport const FooterSocialsList = ({\n className,\n ...rest\n}: FooterSocialsListProps) => (\n <StylelessList className={cn(className, styles['socials-list'])} {...rest} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\n\nexport type FooterSocialsGroupProps = ComponentPropsWithRef<'div'>;\n\nexport const FooterSocialsGroup = ({\n className,\n ...rest\n}: FooterSocialsGroupProps) => (\n <div className={cn(className, styles['socials-group'])} {...rest} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\n\nexport type FooterListGroupProps = ComponentPropsWithRef<'div'>;\n\nexport const FooterListGroup = ({\n className,\n ...rest\n}: FooterListGroupProps) => (\n <div className={cn(className, styles['list-group'])} {...rest} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\n\nexport type FooterLeftProps = ComponentPropsWithRef<'div'>;\n\nexport const FooterLeft = ({ className, ...rest }: FooterLeftProps) => (\n <div className={cn(className, styles['left'])} {...rest} />\n);\n","import { useState } from 'react';\n\nimport styles from './GlobalMessage.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Icon, type SvgIcon } from '../Icon';\nimport { CloseIcon, ErrorIcon, InfoIcon, WarningIcon } from '../Icon/icons';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const icons: Record<GlobalMessagePurpose, SvgIcon> = {\n info: InfoIcon,\n danger: ErrorIcon,\n warning: WarningIcon,\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 * @default \"info\"\n */\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 = ({\n message,\n purpose = 'info',\n closable,\n onClose,\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: GlobalMessageProps) => {\n const [isClosed, setClosed] = useState(false);\n\n return !isClosed ? (\n <div\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.container,\n styles[`container--${purpose}`],\n typographyStyles['body-medium'],\n ),\n htmlProps,\n rest,\n )}\n >\n <div\n className={cn(styles.content, closable && styles['content--closable'])}\n >\n <Icon icon={icons[purpose]} className={styles.icon} />\n {children ?? <span>{message}</span>}\n </div>\n\n {closable && (\n <Button\n icon={CloseIcon}\n purpose=\"tertiary\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </div>\n ) : null;\n};\n\nGlobalMessage.displayName = 'GlobalMessage';\n",".container {\n border-bottom: 2px solid;\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n padding: 0 var(--dds-spacing-x1);\n}\n\n.container--info {\n border-color: var(--dds-color-border-info);\n background-color: var(--dds-color-surface-info-default);\n\n .icon {\n color: var(--dds-color-icon-on-info-default);\n }\n}\n\n.container--danger {\n border-color: var(--dds-color-border-danger);\n background-color: var(--dds-color-surface-danger-default);\n\n .icon {\n color: var(--dds-color-icon-on-danger-default);\n }\n}\n\n.container--warning {\n border-color: var(--dds-color-border-warning);\n background-color: var(--dds-color-surface-warning-default);\n\n .icon {\n color: var(--dds-color-icon-on-warning-default);\n }\n}\n\n.content {\n display: flex;\n align-items: center;\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1-5)\n var(--dds-spacing-x0-75) 0;\n}\n\n.content--closable {\n padding-right: var(--dds-spacing-x0-75);\n}\n\n.icon {\n margin-right: var(--dds-spacing-x0-75);\n}\n",".button {\n display: inline;\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './InlineButton.module.css';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type InlineButtonProps = ComponentPropsWithRef<'button'>;\n\nexport const InlineButton = ({ className, ...rest }: InlineButtonProps) => (\n <button\n className={cn(\n className,\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n focusStyles.focusable,\n typographyStyles.a,\n styles.button,\n )}\n {...rest}\n />\n);\n","import { useRef } from 'react';\n\nimport { InlineEditContextProvider } from './InlineEdit.context';\nimport { type InlineEditTextAreaProps } from './InlineEdit.types';\nimport { InlineTextArea } from './InlineTextArea';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditTextArea = ({\n onSetValue,\n emptiable,\n value,\n onFocus,\n onChange,\n onBlur,\n ref,\n ...rest\n}: InlineEditTextAreaProps) => {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, textareaRef);\n return (\n <InlineEditContextProvider\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 </InlineEditContextProvider>\n );\n};\n","import {\n type ChangeEvent,\n type FocusEvent,\n type FocusEventHandler,\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n} from 'react';\n\nimport { type EditElement } from './InlineEdit.types';\nimport { useOnClickOutside, useOnKeyDown } from '../../hooks';\n\ninterface InlineEditContextType {\n onChange: (e: ChangeEvent<EditElement>) => void;\n onBlur: (e: FocusEvent<EditElement>) => void;\n onFocus: (e: FocusEvent<EditElement>) => void;\n isEditing: boolean;\n value: string | number | ReadonlyArray<string> | undefined;\n emptiable: boolean;\n}\n\ntype InlineEditContextProviderType = Partial<\n InlineEditContextType & {\n children: ReactNode;\n onSetValue?: (value: string) => void;\n inputRef: RefObject<HTMLElement | null>;\n }\n>;\n\nexport const InlineEditContext = createContext<Partial<InlineEditContextType>>(\n {},\n);\n\nexport const useInlineEditContext = () => useContext(InlineEditContext);\n\nexport const InlineEditContextProvider = (\n props: InlineEditContextProviderType,\n) => {\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?.(e);\n };\n\n const onFocusHandler: FocusEventHandler<EditElement> = (\n e: FocusEvent<EditElement>,\n ) => {\n setIsEditing(true);\n onFocus?.(e);\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?.(e.target.value);\n }\n setIsEditing(false);\n onBlur?.(e);\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 return (\n <InlineEditContext\n value={{\n onChange: onChangeHandler,\n onBlur: onBlurHandler,\n onFocus: onFocusHandler,\n isEditing,\n value: editingValue,\n emptiable,\n }}\n >\n {children}\n </InlineEditContext>\n );\n};\n\nInlineEditContextProvider.displayName = 'InlineEditContextProvider';\n","import { useId, useRef } from 'react';\n\nimport { useInlineEditContext } from './InlineEdit.context';\nimport styles from './InlineEdit.module.css';\nimport { type InlineTextAreaProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const InlineTextArea = ({\n id,\n error,\n errorMessage,\n width = '140px',\n 'aria-describedby': ariaDescribedby,\n hideIcon,\n ref,\n ...rest\n}: InlineTextAreaProps) => {\n const { onBlur, onChange, onFocus, isEditing, value, emptiable } =\n useInlineEditContext();\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineTextArea`;\n const hasErrorMessage = !!errorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const hasError = !!error;\n const hasErrorState = hasError || hasErrorMessage;\n\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <Box position=\"relative\" width={width}>\n <div className={inputStyles['input-group']}>\n {!isEditing && !hideIcon && (\n <span\n onClick={() => {\n inputRef.current?.focus();\n }}\n className={styles['icon-wrapper']}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </span>\n )}\n <textarea\n {...rest}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n id={uniqueId}\n ref={combinedRef}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n className={cn(\n styles['inline-input'],\n !hideIcon && !isEditing && styles['inline-input--with-icon'],\n styles['inline-textarea'],\n inputStyles['input--stateful'],\n hasErrorState && inputStyles['input--stateful-danger'],\n typographyStyles['body-medium'],\n utilStyles.scrollbar,\n focusable,\n )}\n />\n </div>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </Box>\n );\n};\n\nInlineTextArea.displayName = 'InlineTextArea';\n",".inline-input {\n width: 100%;\n padding: var(--dds-spacing-x0-25);\n border-color: transparent;\n background-color: transparent;\n border-radius: var(--dds-border-radius-input);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover:enabled:-moz-read-write:not(:focus) {\n border-color: transparent;\n box-shadow: none;\n background-color: var(--dds-color-surface-hover-default);\n }\n\n &:hover:enabled:read-write:not(:focus) {\n border-color: transparent;\n box-shadow: none;\n background-color: var(--dds-color-surface-hover-default);\n }\n\n &:focus {\n background-color: var(--dds-color-surface-default);\n }\n}\n\n.inline-input--with-icon {\n padding-left: var(--dds-spacing-x2);\n}\n\n.inline-textarea {\n resize: vertical;\n}\n\n.icon-wrapper {\n position: absolute;\n top: var(--dds-spacing-x0-5);\n left: var(--dds-spacing-x0-5);\n z-index: var(--dds-zindex-absolute-element);\n\n &:hover {\n cursor: text;\n }\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 { useRef } from 'react';\n\nimport { InlineEditContextProvider } from './InlineEdit.context';\nimport { type InlineEditInputProps } from './InlineEdit.types';\nimport { InlineInput } from './InlineInput';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditInput = ({\n onSetValue,\n emptiable,\n value,\n onFocus,\n onChange,\n onBlur,\n ref,\n ...rest\n}: InlineEditInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n return (\n <InlineEditContextProvider\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 </InlineEditContextProvider>\n );\n};\n","import { useId, useRef } from 'react';\n\nimport { useInlineEditContext } from './InlineEdit.context';\nimport styles from './InlineEdit.module.css';\nimport { type InlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const InlineInput = ({\n id,\n error,\n errorMessage,\n width = '140px',\n 'aria-describedby': ariaDescribedby,\n hideIcon,\n ref,\n ...rest\n}: InlineInputProps) => {\n const { onBlur, onChange, onFocus, isEditing, value, emptiable } =\n useInlineEditContext();\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 <Box position=\"relative\" width={width}>\n <div className={inputStyles['input-group']}>\n {!isEditing && !hideIcon && (\n <span\n onClick={() => {\n inputRef.current?.focus();\n }}\n className={styles['icon-wrapper']}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </span>\n )}\n <input\n {...rest}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n id={uniqueId}\n ref={combinedRef}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorState}\n className={cn(\n styles['inline-input'],\n !hideIcon && !isEditing && styles['inline-input--with-icon'],\n typographyStyles['body-medium'],\n hasErrorState && inputStyles['input--stateful-danger'],\n focusable,\n )}\n />\n </div>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </Box>\n );\n};\n\nInlineInput.displayName = 'InlineInput';\n","import { useState } from 'react';\n\nimport styles from './InternalHeader.module.css';\nimport { type InternalHeaderProps } from './InternalHeader.types';\nimport { NavigationItem } from './NavigationItem';\nimport { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { StylelessList } from '../helpers';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { MenuIcon, MoreVerticalIcon, PersonIcon } from '../Icon/icons';\nimport { Box } from '../layout';\nimport { applyResponsiveStyle } from '../layout/common/utils';\nimport { ShowHide } from '../layout/ShowHide';\nimport {\n OverflowMenu,\n OverflowMenuButton,\n type OverflowMenuButtonProps,\n OverflowMenuDivider,\n OverflowMenuGroup,\n OverflowMenuLink,\n type OverflowMenuLinkProps,\n OverflowMenuList,\n OverflowMenuSpan,\n} from '../OverflowMenu';\nimport { Typography } from '../Typography';\n\nexport const InternalHeader = (props: InternalHeaderProps) => {\n const {\n applicationDesc,\n applicationName,\n applicationHref,\n smallScreenBreakpoint,\n navItems,\n contextMenuItems,\n currentPageHref,\n user,\n onCurrentPageChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [currentPage, setCurrentPage] = useState<string | undefined>(\n currentPageHref,\n );\n\n const handleCurrentPageChange = (href: string) => {\n setCurrentPage(href);\n onCurrentPageChange?.();\n };\n\n const hasNavigationElements = !!navItems && navItems.length > 0;\n const hasContextMenuElements =\n !!contextMenuItems && contextMenuItems.length > 0;\n const hasSmallScreenBreakpoint = !!smallScreenBreakpoint;\n const hasNavInContextMenu = hasSmallScreenBreakpoint && hasNavigationElements;\n\n const navigation = hasNavigationElements ? (\n <nav aria-label=\"sidenavigasjon\">\n <ShowHide\n as={StylelessList}\n hideBelow={hasSmallScreenBreakpoint ? smallScreenBreakpoint : undefined}\n className={cn(styles['nav-list'])}\n >\n {navItems.map((item, index) => {\n const { href, ...rest } = item;\n const isCurrent = href === currentPage;\n return (\n <li key={index} className={styles['nav-list__item']}>\n <NavigationItem\n href={href}\n {...rest}\n isCurrent={isCurrent}\n onClick={() => handleCurrentPageChange(href)}\n />\n </li>\n );\n })}\n </ShowHide>\n </nav>\n ) : null;\n\n const hasContextMenu =\n hasContextMenuElements || !!user || hasNavInContextMenu;\n const hasContextMenuLargeScreen = hasContextMenuElements || !!user;\n\n return (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n gap={applyResponsiveStyle('x1.5', smallScreenBreakpoint, 'x1')}\n paddingInline={applyResponsiveStyle(\n 'x1.5',\n smallScreenBreakpoint,\n 'x1 x0.5',\n )}\n {...getBaseHTMLProps(\n id,\n cn(className, styles.bar, !!navigation && styles['bar--with-nav']),\n htmlProps,\n rest,\n )}\n >\n <Typography typographyType=\"headingSmall\" bold as=\"span\">\n {applicationHref ? (\n <a\n href={applicationHref}\n rel=\"noopener noreferrer\"\n className={cn(utilStyles['inherit-link-styling'], focusable)}\n >\n {applicationName}\n </a>\n ) : (\n applicationName\n )}\n </Typography>\n <Typography typographyType=\"bodyMedium\" as=\"span\">\n {applicationDesc}\n </Typography>\n {(hasContextMenu || navigation !== null) && (\n <div className={styles['bar-separator']} />\n )}\n {navigation}\n {hasContextMenu && (\n <ShowHide\n showBelow={\n !hasContextMenuLargeScreen && hasSmallScreenBreakpoint\n ? smallScreenBreakpoint\n : undefined\n }\n className={cn(styles['context-menu-group'])}\n >\n <OverflowMenuGroup>\n <Button\n icon={hasNavInContextMenu ? MenuIcon : MoreVerticalIcon}\n purpose=\"tertiary\"\n aria-label=\"åpne meny\"\n />\n <OverflowMenu className={styles['context-menu']}>\n {user && (\n <OverflowMenuList>\n {user.href ? (\n <OverflowMenuLink icon={PersonIcon} {...user} />\n ) : (\n <OverflowMenuSpan icon={PersonIcon} {...user} />\n )}\n </OverflowMenuList>\n )}\n {hasNavInContextMenu && (\n <ShowHide\n as=\"nav\"\n aria-label=\"sidenavigasjon\"\n showBelow={smallScreenBreakpoint}\n >\n <OverflowMenuList>\n {navItems.map(item => (\n <OverflowMenuLink {...item} />\n ))}\n </OverflowMenuList>\n </ShowHide>\n )}\n {hasNavInContextMenu && hasContextMenuElements && (\n <ShowHide\n as={OverflowMenuDivider}\n showBelow={smallScreenBreakpoint}\n />\n )}\n {hasContextMenuElements && (\n <OverflowMenuList>\n {contextMenuItems.map(item => {\n return item.href ? (\n <OverflowMenuLink {...(item as OverflowMenuLinkProps)} />\n ) : (\n <OverflowMenuButton\n {...(item as OverflowMenuButtonProps)}\n />\n );\n })}\n </OverflowMenuList>\n )}\n </OverflowMenu>\n </OverflowMenuGroup>\n </ShowHide>\n )}\n </Box>\n );\n};\n\nInternalHeader.displayName = 'InternalHeader';\n",".bar {\n background-color: var(--dds-color-surface-default);\n border-bottom: 1px solid var(--dds-color-border-default);\n min-height: 58px;\n .bar-separator {\n margin-left: auto;\n }\n}\n\n.bar--with-nav {\n .bar-separator {\n margin-left: 0;\n }\n\n .context-menu-group {\n margin-left: auto;\n }\n}\n\n.bar-separator {\n align-self: stretch;\n border-left: 1px solid var(--dds-color-border-default);\n}\n\n.nav-list {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%;\n gap: var(--dds-spacing-x1-5);\n}\n\n.nav-list__item {\n display: flex;\n}\n\n.nav-list__item__link {\n text-decoration: none;\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1);\n border-radius: var(--dds-border-radius-surface);\n background-color: transparent;\n color: var(--dds-color-text-subtle);\n\n &:hover {\n background-color: var(--dds-color-surface-hover-subtle);\n color: var(--dds-color-text-default);\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n color 0.2s,\n var(--dds-focus-transition);\n }\n}\n\n.nav-list__item__link--active {\n background-color: var(--dds-color-surface-selected-default);\n color: var(--dds-color-text-default);\n\n &:hover {\n background-color: var(--dds-color-surface-selected-default);\n color: var(--dds-color-text-default);\n }\n}\n\n.context-menu {\n max-height: calc(100vh - 110px);\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './InternalHeader.module.css';\nimport { cn } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type NavigationItemProps = {\n isCurrent?: boolean;\n} & ComponentPropsWithRef<'a'>;\n\nexport const NavigationItem = ({ isCurrent, ...rest }: NavigationItemProps) => (\n <a\n {...rest}\n aria-current={isCurrent ? 'page' : undefined}\n className={cn(\n styles['nav-list__item__link'],\n isCurrent && styles['nav-list__item__link--active'],\n typographyStyles['body-medium'],\n focusable,\n )}\n />\n);\n",".list {\n color: var(--dds-color-text-body);\n margin: var(--dds-spacing-x1) 0;\n ul,\n ol {\n margin: 0;\n }\n}\n\n.list--inherit {\n font: inherit;\n}\n\n.list--unordered {\n --dds-list-ul-li-padding-left: 1em + var(--dds-spacing-x0-25);\n list-style: none;\n padding-left: calc(\n var(--dds-spacing-x2) - (var(--dds-list-ul-li-padding-left))\n );\n\n li {\n position: relative;\n\n padding-left: calc(var(--dds-list-ul-li-padding-left));\n\n &:before {\n content: '';\n display: inline-block;\n height: 1em;\n width: 1em;\n position: absolute;\n top: calc((2.5em / 2) - 0.5em);\n left: 0;\n background: var(--dds-color-text-body);\n -webkit-mask-size: 100%;\n mask-size: 100%;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-image: url('./bullets/jordskifterett_bullet1.svg');\n mask-image: url('./bullets/jordskifterett_bullet1.svg');\n }\n ul > li:before {\n -webkit-mask-image: url('./bullets/lagmannsrett_bullet2.svg');\n mask-image: url('./bullets/lagmannsrett_bullet2.svg');\n }\n ul > li > ul > li:before {\n -webkit-mask-image: url('./bullets/tingrett_bullet3.svg');\n mask-image: url('./bullets/tingrett_bullet3.svg');\n }\n }\n}\n\n.list--ordered {\n padding-left: var(--dds-spacing-x2);\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.li {\n line-height: var(--dds-font-lineheight-list);\n}\n","import { type ElementType } from 'react';\n\nimport styles from './List.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { type TypographyBodyType, getTypographyCn } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\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 * @default \"unordered\"\n */\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 * @default \"inherit\"\n */\n typographyType?: ListTypographyType;\n }\n>;\n\nexport const List = ({\n listType = 'unordered',\n typographyType = 'inherit',\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: ListProps) => {\n const List: ElementType = listType === 'ordered' ? 'ol' : 'ul';\n\n return (\n <List\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n className={cn(\n styles.list,\n styles[`list--${listType}`],\n typographyType === 'inherit'\n ? styles['list--inherit']\n : typographyStyles[getTypographyCn(typographyType)],\n )}\n >\n {children}\n </List>\n );\n};\n\nList.displayName = 'List';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './List.module.css';\nimport { cn } from '../../utils';\n\nexport type ListItemProps = ComponentPropsWithRef<'li'>;\n\nexport const ListItem = ({ className, ...rest }: ListItemProps) => (\n <li {...rest} className={cn(className, styles.li)} />\n);\n\nListItem.displayName = 'ListItem';\n","import { useState } from 'react';\n\nimport styles from './LocalMessage.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Icon, type SvgIcon } from '../Icon';\nimport {\n CheckCircledIcon,\n CloseIcon,\n ErrorIcon,\n InfoIcon,\n TipIcon,\n WarningIcon,\n} from '../Icon/icons';\nimport { Box, type ResponsiveProps } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nconst icons: Record<LocalMessagePurpose, SvgIcon> = {\n info: InfoIcon,\n danger: ErrorIcon,\n warning: WarningIcon,\n success: CheckCircledIcon,\n tips: TipIcon,\n};\n\nexport type LocalMessagePurpose =\n | 'info'\n | 'warning'\n | 'danger'\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 * @default \"info\"\n */\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 * @default \"horisontal\"\n */\n layout?: LocalMessageLayout;\n } & Pick<ResponsiveProps, 'width'>\n>;\n\nexport const LocalMessage = ({\n message,\n purpose = 'info',\n closable,\n onClose,\n width,\n layout = 'horisontal',\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: LocalMessageProps) => {\n const [isClosed, setClosed] = useState(false);\n\n if (isClosed) {\n return <></>;\n }\n\n return (\n <Box\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n typographyStyles['body-medium'],\n styles.container,\n styles[`container--${layout}`],\n closable && styles[`container--${layout}--closable`],\n styles[`container--${purpose}`],\n ),\n htmlProps,\n rest,\n )}\n width={width}\n display=\"grid\"\n alignItems=\"center\"\n padding=\"x0.75\"\n gap=\"x0.5\"\n >\n <Icon\n icon={icons[purpose]}\n className={cn(styles.icon, styles.container__icon)}\n />\n <div className={styles.container__text}>\n {children ?? <span>{message}</span>}\n </div>\n {closable && (\n <Button\n icon={CloseIcon}\n purpose=\"tertiary\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n className={styles.container__button}\n />\n )}\n </Box>\n );\n};\n\nLocalMessage.displayName = 'LocalMessage';\n",".container {\n border: 1px solid;\n box-sizing: border-box;\n border-radius: var(--dds-border-radius-surface);\n}\n\n.container--info {\n border-color: var(--dds-color-border-info);\n background-color: var(--dds-color-surface-info-default);\n\n .icon {\n color: var(--dds-color-icon-on-info-default);\n }\n}\n.container--warning {\n border-color: var(--dds-color-border-warning);\n background-color: var(--dds-color-surface-warning-default);\n\n .icon {\n color: var(--dds-color-icon-on-warning-default);\n }\n}\n.container--danger {\n border-color: var(--dds-color-border-danger);\n background-color: var(--dds-color-surface-danger-default);\n\n .icon {\n color: var(--dds-color-icon-on-danger-default);\n }\n}\n.container--success {\n border-color: var(--dds-color-border-success);\n background-color: var(--dds-color-surface-success-default);\n\n .icon {\n color: var(--dds-color-icon-on-success-default);\n }\n}\n\n.container--tips {\n border-color: var(--dds-color-border-info);\n background-color: var(--dds-color-surface-info-default);\n\n .icon {\n color: var(--dds-color-icon-on-info-default);\n }\n}\n\n.container--horisontal {\n grid-template-areas: 'icon text';\n grid-template-columns: min-content 1fr;\n}\n\n.container--horisontal--closable {\n grid-template-areas: 'icon text closeButton';\n grid-template-columns: min-content 1fr min-content;\n}\n\n.container--vertical {\n grid-template-areas: 'icon icon' 'text text';\n grid-template-columns: 1fr min-content;\n}\n\n.container--vertical--closable {\n grid-template-areas: 'icon closeButton' 'text text';\n grid-template-columns: 1fr;\n}\n\n.container__text {\n grid-area: text;\n padding-right: var(--dds-spacing-x0-75);\n}\n\n.container__icon {\n grid-area: icon;\n}\n\n.container__button {\n grid-area: closeButton;\n margin: calc(0px - var(--dds-spacing-x0-75)) 0;\n}\n","import {\n type ReactNode,\n type RefObject,\n useContext,\n useEffect,\n useId,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport styles from './Modal.module.css';\nimport {\n useCombinedRef,\n useFocusTrap,\n useMountTransition,\n useOnKeyDown,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport {\n Backdrop,\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n} from '../helpers';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { CloseIcon } from '../Icon/icons';\nimport { Box, HStack, Paper } from '../layout';\nimport { ThemeContext } from '../ThemeProvider';\nimport { Heading } from '../Typography';\n\nexport type ModalProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om `<Modal>` skal åpnes. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking; gjør at `<Modal>` blir lukkbar via: Esc-tast, klikk utenfor, klikk på dedikert lukkeknapp. */\n onClose?: () => void;\n /**Fordeler DOM node for `<Modal>` via React portal. Brukes med f.eks `document.getElementById(\"id\")` eller `ref` (skaper ikke ny DOM node).\n * @default themeProviderRef\n */\n parentElement?: HTMLElement;\n /**Header i `<Modal>`. Returnerer default `<Heading>` ved `string`. Setter også `aria-labelledby`. */\n header?: string | ReactNode;\n /**Ref som brukes til returnering av fokus. */\n triggerRef?: RefObject<HTMLElement | null>;\n /**Ref som skal motta fokus når `<Modal>` åpnes. Hvis utelatt blir `<Modal>` fokusert. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Gjør at innholdet kan scrolles */\n scrollable?: boolean;\n }\n>;\n\nexport const Modal = ({\n isOpen = false,\n parentElement,\n children,\n header,\n onClose,\n id,\n triggerRef,\n initialFocusRef,\n scrollable,\n className,\n htmlProps,\n ref,\n ...rest\n}: ModalProps) => {\n const generatedId = useId();\n const modalId = id ?? `${generatedId}-modal`;\n const headerId = `${modalId}-header`;\n\n const modalRef = useFocusTrap<HTMLDivElement>(isOpen, initialFocusRef);\n const combinedRef = useCombinedRef(ref, modalRef);\n const handleClose = () => {\n if (onClose && isOpen) {\n triggerRef?.current?.focus();\n onClose();\n }\n };\n\n const themeContext = useContext(ThemeContext);\n\n if (!themeContext) {\n throw new Error('Modal must be used within a ThemeProvider');\n }\n\n const portalTarget = parentElement ?? themeContext?.el;\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 const backdropRef = useRef<HTMLDivElement>(null);\n const onBackdropClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.target === backdropRef.current && isOpen) {\n handleClose();\n }\n };\n\n useOnKeyDown(['Escape', 'Esc'], () => handleClose());\n\n const hasTransitionedIn = useMountTransition(isOpen, 200);\n\n return (isOpen || hasTransitionedIn) && portalTarget\n ? createPortal(\n <Backdrop\n zIndex=\"modal\"\n isMounted={isOpen && hasTransitionedIn}\n ref={backdropRef}\n onClick={onBackdropClick}\n >\n <Paper\n display=\"flex\"\n flexDirection=\"column\"\n minWidth=\"200px\"\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.container,\n focusable,\n scrollable && styles['container-scrollable'],\n utilStyles.scrollbar,\n ),\n htmlProps,\n rest,\n )}\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 <HStack\n paddingBlock=\"0 x0.75\"\n position=\"sticky\"\n top=\"0\"\n left=\"0\"\n width=\"100%\"\n className={styles['header-container']}\n >\n {!!header && (\n <div id={headerId}>\n {typeof header === 'string' ? (\n <Heading level={2} typographyType=\"headingLarge\">\n {header}\n </Heading>\n ) : (\n header\n )}\n </div>\n )}\n {onClose && (\n <Button\n size=\"small\"\n purpose=\"tertiary\"\n icon={CloseIcon}\n onClick={handleClose}\n aria-label=\"Lukk dialog\"\n className={styles['close-button']}\n />\n )}\n </HStack>\n <Box display=\"grid\" gap=\"x1\">\n {children}\n </Box>\n </Paper>\n </Backdrop>,\n portalTarget,\n )\n : null;\n};\n\nModal.displayName = 'Modal';\n",".container {\n /* Justering på spacing slik at fokusmarkering osv. ikke skjules ved overflow */\n --dds-modal-content-padding: var(--dds-spacing-x0-25);\n --dds-modal-container-padding: var(--dds-spacing-x1)\n calc(var(--dds-spacing-x1) - var(--dds-modal-content-padding))\n calc(var(--dds-spacing-x1-5) - var(--dds-modal-content-padding))\n calc(var(--dds-spacing-x1-5) - var(--dds-modal-content-padding));\n\n padding: var(--dds-modal-container-padding);\n}\n\n.container-scrollable {\n max-height: calc(100vh - var(--dds-spacing-x1));\n overflow: auto;\n}\n\n.header-container {\n background-color: var(--dds-color-surface-default);\n padding-bottom: calc(\n var(--dds-spacing-x0-75) - var(--dds-modal-content-padding)\n );\n z-index: 1;\n}\n\n.close-button {\n margin-left: auto;\n margin-top: calc(-1 * var(--dds-spacing-x0-125));\n}\n\n.content {\n padding-right: calc(var(--dds-spacing-x1) - var(--dds-modal-content-padding));\n}\n\n/* Spacing slik at fokusmarkering osv. ikke skjules ved overflow */\n.body {\n padding: var(--dds-modal-content-padding);\n}\n","import { type Property } from 'csstype';\n\nimport styles from './Modal.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\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. Kan resultere i scrolling. */\n height?: Property.Height;\n }\n>;\n\nexport const ModalBody = ({\n children,\n id,\n className,\n scrollable,\n htmlProps,\n height,\n ...rest\n}: ModalBodyProps) => {\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n utilStyles.scrollbar,\n scrollable && utilStyles['scrollable-y'],\n styles.body,\n ),\n htmlProps,\n rest,\n )}\n style={{ ...htmlProps?.style, height: height }}\n >\n {children}\n </div>\n );\n};\n\nModalBody.displayName = 'ModalBody';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { Box } from '../layout';\n\nexport type ModalActionsProps = ComponentPropsWithRef<'div'>;\n\nexport const ModalActions = (props: ModalActionsProps) => (\n <Box display=\"flex\" flexWrap=\"wrap\" gap=\"x1\" {...props} />\n);\n\nModalActions.displayName = 'ModalActions';\n","import { type HTMLAttributes, useState } from 'react';\n\nimport styles from './Pagination.module.css';\nimport { PaginationGenerator } from './paginationGenerator';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport {\n ChevronFirstIcon,\n ChevronLastIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from '../Icon/icons';\nimport { Box, type Breakpoint, ShowHide } from '../layout';\nimport { applyResponsiveStyle } from '../layout/common/utils';\nimport { Select } from '../Select';\nimport { Paragraph } from '../Typography';\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 * @default 10\n */\n defaultItemsPerPage?: number;\n /**Den aktive siden ved innlastning av komponenten.\n * @default 1\n */\n defaultActivePage?: number;\n /**Spesifiserer om selve pagineringen skal vises.\n * @default true\n */\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 * @default [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: 'Alle', value: itemsAmount },\n ]\n */\n selectOptions?: Array<PaginationOption>;\n /**Brukes til å hente side og eventuelt annen logikk ved endring av side. */\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => void;\n /**Brukes til å hente `selectedOption` og eventuelt kjøre annen logikk når `withSelect=true` ved endring av alternativ. */\n onSelectOptionChange?: (option: PaginationOption | null) => void;\n /**Spesifiserer ved hvilket brekkpunkt og nedover versjonen for små skjermer skal vises; den viser færre sideknapper og stacker subkomponentene. */\n smallScreenBreakpoint?: Breakpoint;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const Pagination = ({\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 smallScreenBreakpoint,\n onChange,\n onSelectOptionChange,\n id,\n className,\n htmlProps,\n ref,\n ...rest\n}: PaginationProps) => {\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 <li key={`pagination-item-${i}`} className={styles.list__item}>\n {item !== 'truncator' && typeof item === 'number' ? (\n <Button\n purpose={isActive ? 'primary' : 'secondary'}\n size=\"small\"\n onClick={event => {\n onPageChange(event, item);\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 className={styles['truncation-icon']}\n />\n )}\n </li>\n );\n })\n : undefined;\n\n const previousPageButton = (\n <Button\n purpose=\"secondary\"\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 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 isOnFirstPage = activePage === 1;\n const isOnLastPage = activePage === pagesLength;\n\n const navigation = withPagination ? (\n <Box\n as=\"nav\"\n ref={ref}\n aria-label=\"paginering\"\n display=\"flex\"\n alignItems=\"center\"\n {...(!withSelect &&\n !withCounter && {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n })}\n >\n <ShowHide\n as=\"ol\"\n hideBelow={smallScreenBreakpoint}\n className={styles.list}\n >\n <li\n className={cn(\n styles.list__item,\n isOnFirstPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnFirstPage}\n >\n {previousPageButton}\n </li>\n {listItems}\n <li\n className={cn(\n styles.list__item,\n isOnLastPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnLastPage}\n >\n {nextPageButton}\n </li>\n </ShowHide>\n {!!smallScreenBreakpoint && (\n <ShowHide\n as=\"ol\"\n showBelow={smallScreenBreakpoint}\n className={styles.list}\n >\n <li\n className={cn(\n styles.list__item,\n isOnFirstPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnFirstPage}\n >\n <Button\n purpose=\"secondary\"\n size=\"small\"\n icon={ChevronFirstIcon}\n onClick={event => {\n onPageChange(event, 1);\n }}\n aria-label=\"Gå til første siden\"\n />\n </li>\n <li\n className={cn(\n styles.list__item,\n isOnFirstPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnFirstPage}\n >\n {previousPageButton}\n </li>\n <li className={styles.list__item}>\n <Button\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n >\n {activePage}\n </Button>\n </li>\n <li\n className={cn(\n styles.list__item,\n isOnLastPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnLastPage}\n >\n {nextPageButton}\n </li>\n <li\n className={cn(\n styles.list__item,\n isOnLastPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnLastPage}\n >\n <Button\n purpose=\"secondary\"\n size=\"small\"\n icon={ChevronLastIcon}\n onClick={event => {\n onPageChange(event, pagesLength);\n }}\n aria-label=\"Gå til siste siden\"\n />\n </li>\n </ShowHide>\n )}\n </Box>\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 return !withCounter && !withSelect ? (\n navigation\n ) : (\n <Box\n display=\"flex\"\n gap=\"x0.75\"\n justifyContent=\"space-between\"\n flexWrap=\"wrap\"\n flexDirection={applyResponsiveStyle('column', smallScreenBreakpoint)}\n alignItems={applyResponsiveStyle('center', smallScreenBreakpoint)}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <div className={styles.indicators}>\n {withSelect && (\n <Select\n options={selectOptions}\n isSearchable={false}\n width=\"74px\"\n defaultValue={{\n label: itemsPerPage.toString(),\n value: itemsPerPage,\n }}\n isClearable={false}\n onChange={handleSelectChange}\n componentSize=\"small\"\n aria-label=\"Antall elementer per side\"\n />\n )}\n {withCounter && (\n <Paragraph>\n Viser {activePageFirstItem}-{activePageLastItem} av {itemsAmount}\n </Paragraph>\n )}\n </div>\n {navigation}\n </Box>\n );\n};\n\nPagination.displayName = 'Pagination';\n",".list {\n display: grid;\n grid-auto-flow: column;\n margin: 0;\n padding: 0;\n gap: var(--dds-spacing-x0-75);\n}\n\n.list__item {\n display: inline-grid;\n align-content: center;\n}\n\n.list__item--hidden {\n visibility: hidden;\n}\n\n.indicators {\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n gap: var(--dds-spacing-x0-75);\n}\n\n.truncation-icon {\n color: var(--dds-color-icon-medium);\n min-width: calc(1ch + (2 * var(--dds-spacing-x0-75)));\n}\n","const arrayRange = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport function PaginationGenerator(\n pagesAmount: number,\n activePage: number,\n): Array<string | number> {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: Array<string | number>;\n\n if (pagesAmount > 4) {\n const middleStartPage = Math.max(\n 1,\n activePage < pagesBeforeTruncator || pagesAmount <= maxPagesShown\n ? 1\n : activePage + siblingsCount + 1 >= pagesAmount\n ? pagesAmount - 4 // - 4 to fit total columns /\n : activePage > 4 && pagesAmount > maxPagesShown\n ? activePage - siblingsCount\n : 1,\n );\n\n const middleEndOffset =\n activePage < pagesBeforeTruncator && pagesAmount > maxPagesShown\n ? pagesBeforeTruncator\n : activePage < pagesBeforeTruncator && pagesAmount <= maxPagesShown\n ? pagesAmount\n : activePage + siblingsCount + 1 < pagesAmount - 1\n ? activePage + siblingsCount\n : activePage + siblingsCount + 1 === pagesAmount - 1\n ? pagesAmount\n : pagesAmount;\n\n const middleEndPage = Math.min(pagesAmount, middleEndOffset);\n pageRange = arrayRange(middleStartPage, middleEndPage);\n const truncatedLeft = middleStartPage > 2 && pagesAmount > maxPagesShown;\n const truncatedRight =\n pagesAmount - middleEndPage > 1 && pagesAmount > maxPagesShown;\n\n if (truncatedLeft && truncatedRight) {\n pageRange = [1, truncator, ...pageRange, truncator, pagesAmount];\n } else if (truncatedLeft && !truncatedRight) {\n pageRange = [1, truncator, ...pageRange];\n } else if (!truncatedLeft && truncatedRight) {\n pageRange = [...pageRange, truncator, pagesAmount];\n }\n return [...pageRange];\n }\n\n return arrayRange(1, pagesAmount);\n}\n","import {\n type HTMLAttributes,\n type JSX,\n type Ref,\n useContext,\n useId,\n} from 'react';\nimport {\n type GroupBase,\n type OptionProps,\n default as ReactSelect,\n type Props as ReactSelectProps,\n type SelectInstance,\n type SingleValueProps,\n} from 'react-select';\n\nimport styles from './Select.module.css';\nimport { getCustomStyles, prefix } from './Select.styles';\nimport {\n CustomOption,\n CustomSingleValue,\n DDSClearIndicator,\n DDSControl,\n DDSDropdownIndicator,\n DDSInput,\n DDSMultiValueRemove,\n DDSNoOptionsMessage,\n DDSOption,\n} from './SelectComponents';\nimport { type WithRequiredIf } from '../../types';\nimport {\n cn,\n derivativeIdGenerator,\n searchFilter,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { readOnlyKeyDownHandler } from '../../utils/readonlyEventHandlers';\nimport { type InputSize, getInputWidth } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { type SvgIcon } from '../Icon/utils';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box, type ResponsiveProps } from '../layout';\nimport { ThemeContext } from '../ThemeProvider';\nimport { Label } from '../Typography';\n\nexport interface SelectOption<TValue = unknown> {\n label: string | number;\n value: TValue;\n}\n\ntype WrappedReactSelectProps<\n Option,\n IsMulti extends boolean,\n Group extends GroupBase<Option>,\n> = WithRequiredIf<\n Option extends SelectOption ? false : true,\n ReactSelectProps<Option, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<Option = unknown, IsMulti extends boolean = false> = {\n /**Ledetekst for nedtrekkslisten. */\n label?: string;\n /**Størrelsen på komponenten.\n * @default \"medium\"\n */\n componentSize?: InputSize;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n /**Nedtrekkslisten blir `readonly` og får readOnly styling. */\n readOnly?: boolean;\n /**Meldingen som vises ved valideringsfeil. */\n errorMessage?: string;\n /**Hjelpetekst. */\n tip?: string;\n /** CSS klassenavn. */\n className?: string;\n /** Inline styling. */\n style?: React.CSSProperties;\n /** Custom element som vises for det valgte elementet. */\n customOptionElement?: (\n props: OptionProps<Option, IsMulti, GroupBase<Option>>,\n ) => JSX.Element;\n /** Custom element som vises i listen over alternativer. */\n customSingleValueElement?: (\n props: SingleValueProps<Option, IsMulti, GroupBase<Option>>,\n ) => JSX.Element;\n /** Testid. Legges på control-div med suffiks \"control\". */\n 'data-testid'?: string;\n /**Ref til komponenten. */\n ref?: SelectForwardRefType<Option, IsMulti>;\n} & Pick<HTMLAttributes<HTMLInputElement>, 'aria-required'> &\n Pick<ResponsiveProps, 'width'> &\n WrappedReactSelectProps<Option, IsMulti, GroupBase<Option>>;\n\nexport type SelectForwardRefType<Option, IsMulti extends boolean> = Ref<\n SelectInstance<Option, IsMulti, GroupBase<Option>>\n>;\n\nexport function Select<Option = unknown, IsMulti extends boolean = false>({\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,\n closeMenuOnSelect,\n className,\n style,\n isDisabled,\n isClearable = true,\n placeholder,\n menuPortalTarget,\n customOptionElement,\n customSingleValueElement,\n 'data-testid': dataTestId,\n onKeyDown,\n openMenuOnClick,\n ref,\n ...rest\n}: SelectProps<Option, IsMulti>) {\n const themeContext = useContext(ThemeContext);\n\n if (!themeContext) {\n throw new Error('Select must be used within a ThemeProvider');\n }\n\n const portalTarget = menuPortalTarget ?? themeContext?.el;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-select`;\n\n const singleValueId = !isMulti ? `${uniqueId}-singleValue` : undefined;\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n const hasIcon = !!icon;\n const showRequiredStyling = !!(required || ariaRequired);\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const inputWidth = getInputWidth(\n width,\n componentSize === 'xsmall' && 'var(--dds-input-default-width-xsmall)',\n );\n\n const reactSelectProps: ReactSelectProps<\n Option,\n IsMulti,\n GroupBase<Option>\n > = {\n options,\n value,\n defaultValue,\n isDisabled: !!isDisabled,\n isClearable,\n placeholder: placeholder ? placeholder : '',\n closeMenuOnSelect: closeMenuOnSelect\n ? closeMenuOnSelect\n : isMulti\n ? false\n : true,\n isMulti,\n inputId: uniqueId,\n name: uniqueId,\n menuPortalTarget: portalTarget,\n classNamePrefix: prefix,\n styles: getCustomStyles<Option>(\n componentSize,\n hasErrorMessage,\n hasIcon,\n readOnly,\n ),\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 {\n ...props,\n readOnly,\n 'aria-required': ariaRequired,\n },\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 =>\n DDSControl(props, componentSize, readOnly, icon, dataTestId),\n },\n 'aria-invalid': hasErrorMessage ? true : undefined,\n required,\n onKeyDown: readOnlyKeyDownHandler('select', readOnly, onKeyDown),\n openMenuOnClick: readOnly\n ? false\n : openMenuOnClick\n ? openMenuOnClick\n : undefined,\n ...rest,\n };\n\n return (\n <Box\n width={inputWidth}\n position=\"relative\"\n margin=\"0\"\n className={cn(\n className,\n isDisabled && styles['container--disabled'],\n readOnly && styles['container--readonly'],\n )}\n style={style}\n >\n {hasLabel && (\n <Label\n htmlFor={uniqueId}\n showRequiredStyling={showRequiredStyling}\n className={inputStyles.label}\n readOnly={readOnly}\n >\n {label}\n </Label>\n )}\n <ReactSelect {...reactSelectProps} ref={ref} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Box>\n );\n}\n\nSelect.displayName = 'Select';\n",".container--disabled {\n cursor: not-allowed;\n}\n\n.container--readonly {\n cursor: default;\n}\n\n.inner-single-value {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n box-sizing: border-box;\n max-width: 100%;\n}\n\n.icon--medium {\n left: var(--dds-spacing-x0-75);\n}\n\n.icon--small {\n left: var(--dds-spacing-x0-75);\n}\n\n.icon--xsmall {\n left: var(--dds-spacing-x0-5);\n}\n\n.control {\n &:hover:not(.control--readonly) .dropdown-indicator,\n &:focus-within .dropdown-indicator {\n color: var(--dds-color-icon-action-hover);\n }\n}\n\n.control--readonly .dropdown-indicator {\n pointer-events: none;\n}\n\n.control--disabled .dropdown-indicator {\n pointer-events: none;\n}\n","import { type GroupBase, type StylesConfig } from 'react-select';\n\nimport {\n type InputSize,\n focusVisible,\n focusVisibleTransitionValue,\n} from '../helpers';\nimport { scrollbarStyling } from '../helpers';\n\ntype SelectTypography = Record<\n InputSize,\n { font: string; letterSpacing: string; fontStyle?: string }\n>;\n\nconst optionTypography: SelectTypography = {\n medium: {\n font: 'var(--dds-font-body-medium)',\n letterSpacing: 'var(--dds-font-body-medium-letter-spacing)',\n },\n small: {\n font: 'var(--dds-font-body-small)',\n letterSpacing: 'var(--dds-font-body-small-letter-spacing)',\n },\n xsmall: {\n font: 'var(--dds-font-body-xsmall)',\n letterSpacing: 'var(--dds-font-body-xsmall-letter-spacing)',\n },\n};\n\nconst multiValueLabelTypography: SelectTypography = {\n medium: {\n font: 'var(--dds-font-body-small)',\n letterSpacing: 'var(--dds-font-body-small-letter-spacing)',\n },\n small: {\n font: 'var(--dds-font-body-small)',\n letterSpacing: 'var(--dds-font-body-small-letter-spacing)',\n },\n xsmall: {\n font: 'var(--dds-font-body-xsmall)',\n letterSpacing: 'var(--dds-font-body-xsmall-letter-spacing)',\n },\n};\n\nconst groupHeadingTypography = {\n font: 'var(--dds-font-body-xsmall)',\n letterSpacing: 'var(--dds-font-body-xsmall-letter-spacing)',\n};\n\nconst typography = {\n option: optionTypography,\n multiValueLabel: multiValueLabelTypography,\n groupHeading: groupHeadingTypography,\n};\n\nexport const prefix = 'dds-select';\n\nconst control = {\n medium: {\n base: {\n paddingBlock: 'var(--dds-spacing-x0-75)',\n paddingLeft: 'var(--dds-spacing-x0-75)',\n ...optionTypography.medium,\n },\n hasIcon: {\n paddingLeft:\n 'calc(var(--dds-spacing-x0-75) + var(--dds-icon-size-medium) + var(--dds-spacing-x0-5))',\n },\n },\n small: {\n base: {\n paddingBlock: 'var(--dds-spacing-x0-5)',\n paddingLeft: 'var(--dds-spacing-x0-75)',\n ...optionTypography.small,\n },\n hasIcon: {\n paddingLeft:\n 'calc(var(--dds-spacing-x0-75) + var(--dds-icon-size-medium) + var(--dds-spacing-x0-5))',\n },\n },\n xsmall: {\n base: {\n paddingBlock: 'var(--dds-spacing-x0-25)',\n paddingLeft: 'var(--dds-spacing-x0-5)',\n ...optionTypography.xsmall,\n },\n hasIcon: {\n paddingLeft:\n 'calc(var(--dds-spacing-x0-5) + var(--dds-icon-size-small) + var(--dds-spacing-x0-5))',\n },\n },\n};\n\nexport const getCustomStyles = <TOption>(\n size: InputSize,\n hasError: boolean,\n hasIcon: boolean,\n isReadOnly?: boolean,\n): Partial<StylesConfig<TOption, boolean, GroupBase<TOption>>> => ({\n control: (provided, state) => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n cursor: 'pointer',\n borderRadius: 'var(--dds-border-radius-input)',\n border: '1px solid',\n borderColor: 'var(--dds-color-border-default)',\n backgroundColor: 'var(--dds-color-surface-default)',\n transition: `box-shadow 0.2s, border-color 0.2s, ${focusVisibleTransitionValue}`,\n paddingRight: 'var(--dds-spacing-x0-5)',\n ...control[size].base,\n ...(hasIcon && control[size].hasIcon),\n '&:hover': {\n ...(!isReadOnly && {\n borderColor: 'var(--dds-color-border-action-hover)',\n boxShadow: '0 0 0 1px var(--dds-color-border-action-hover)',\n }),\n },\n ...(hasError && {\n borderColor: 'var(--dds-color-border-danger)',\n boxShadow: '0 0 0 1px var(--dds-color-border-danger)',\n '&:hover': {\n borderColor: 'var(--dds-color-border-danger)',\n boxShadow: '0 0 0 1px var(--dds-color-border-danger)',\n },\n }),\n '&:focus-within': {\n ...focusVisible,\n },\n ...(state.selectProps.isDisabled && {\n borderColor: 'var(--dds-color-border-subtle)',\n backgroundColor: 'var(--dds-color-surface-field-disabled)',\n color: 'var(--dds-color-text-subtle)',\n pointerEvents: 'none',\n }),\n ...(isReadOnly && {\n borderColor: 'var(--dds-color-border-default)',\n backgroundColor: 'var(--dds-color-surface-field-disabled)',\n color: 'var(--dds-color-text-medium)',\n boxShadow: 'none',\n cursor: 'default',\n }),\n }),\n placeholder: provided => ({\n ...provided,\n color: 'var(--dds-color-text-subtle)',\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: 'var(--dds-color-icon-default)',\n ...(state.selectProps.isDisabled && {\n color: 'var(--dds-color-icon-subtle)',\n }),\n ...(isReadOnly && { color: 'var(--dds-color-icon-subtle)' }),\n }),\n\n valueContainer: (provided, state) => ({\n ...provided,\n ...(state.selectProps.isMulti && {\n gap: 'var(--dds-spacing-x0-25)',\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: 'var(--dds-border-radius-surface)',\n backgroundColor: 'var(--dds-color-surface-medium)',\n }),\n multiValueLabel: (provided, state) => ({\n ...provided,\n padding: '0 var(--dds-spacing-x0-25)',\n ...typography.multiValueLabel[size],\n color: 'var(--dds-color-text-default)',\n ...(state.selectProps.isDisabled && {\n color: 'var(--dds-color-text-subtle)',\n }),\n ...(isReadOnly && {\n color: 'var(--dds-color-text-medium)',\n }),\n }),\n multiValueRemove: (provided, state) =>\n state.selectProps.isDisabled || isReadOnly\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: 'var(--dds-color-icon-default)',\n\n padding: '0 var(--dds-spacing-x0-25)',\n },\n menu: () => ({\n boxSizing: 'border-box',\n position: 'absolute',\n width: '100%',\n boxShadow: 'var(--dds-shadow-2)',\n zIndex: 100,\n transition: '0.2s',\n border: '1px solid var(--dds-color-border-default)',\n backgroundColor: 'var(--dds-color-surface-default)',\n borderRadius: 'var(--dds-border-radius-surface)',\n marginBlock: 'var(--dds-spacing-x0-25)',\n }),\n menuPortal: provided => ({\n ...provided,\n zIndex: 99999,\n }),\n group: () => ({\n boxSizing: 'border-box',\n }),\n groupHeading: () => ({\n ...typography.groupHeading,\n color: 'var(--dds-color-text-medium)',\n paddingInline: 'var(--dds-spacing-x0-75)',\n paddingBlock: 'var(--dds-spacing-x0-5) var(--dds-spacing-x0-125)',\n }),\n menuList: () => ({\n maxHeight: '300px',\n overflowY: 'auto',\n position: 'relative',\n boxSizing: 'border-box',\n ...scrollbarStyling,\n }),\n option: (provided, state) => ({\n ...provided,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--dds-spacing-x0-5)',\n padding: 'var(--dds-spacing-x0-75)',\n backgroundColor: 'var(--dds-color-surface-default)',\n ...typography.option[size],\n color: 'var(--dds-color-text-default)',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s',\n },\n '&:hover': {\n color: 'var(--dds-color-text-default)',\n backgroundColor: 'var(--dds-color-surface-hover-default)',\n },\n // egen stil siden react-select bruker focus-state og hover-styling samtidig; ikke nødvendig hvis de kan skilles.\n ...(state.isFocused && {\n outline: 'var(--dds-color-border-action-hover) 2px solid',\n outlineOffset: 'calc(var(--dds-spacing-x0-125) * -1)',\n }),\n }),\n noOptionsMessage: () => ({\n ...typography.option[size],\n padding: 'var(--dds-spacing-x0-5) var(--dds-spacing-x1)',\n color: 'var(--dds-color-text-medium)',\n }),\n clearIndicator: () =>\n isReadOnly\n ? { display: 'none' }\n : {\n display: 'inline-flex',\n color: 'var(--dds-color-icon-default)',\n borderRadius: 'var(--dds-border-radius-button)',\n\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'background-color 0.2s',\n },\n '&:hover': {\n backgroundColor: 'var(--dds-color-surface-hover-default)',\n },\n },\n loadingIndicator: provided => ({\n ...provided,\n padding: 0,\n color: 'var(--dds-color-icon-default)',\n }),\n});\n","import type { JSX } from 'react';\nimport {\n type ClearIndicatorProps,\n type ControlProps,\n type DropdownIndicatorProps,\n type GroupBase,\n type InputProps,\n type MultiValueRemoveProps,\n type NoticeProps,\n type OptionProps,\n type SingleValueProps,\n components,\n} from 'react-select';\n\nimport styles from './Select.module.css';\nimport { cn, getFormInputIconSize } from '../../utils';\nimport { type InputSize } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { Icon, type IconSize, type SvgIcon } from '../Icon';\nimport { CheckIcon, ChevronDownIcon, CloseSmallIcon } from '../Icon/icons';\n\nconst {\n Option,\n NoOptionsMessage,\n Input,\n SingleValue,\n ClearIndicator,\n DropdownIndicator,\n MultiValueRemove,\n Control,\n} = components;\n\nexport const getIndicatorIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n case 'xsmall':\n return 'small';\n }\n};\n\nexport const DDSOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n componentSize: InputSize,\n) => (\n <Option {...props}>\n {props.isSelected && (\n <Icon icon={CheckIcon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Option>\n);\n\nexport const CustomOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n Element: (props: OptionProps<TValue, IsMulti>) => JSX.Element,\n) => (\n <Option {...props}>\n <Element {...props} />\n </Option>\n);\n\nexport const CustomSingleValue = <TOption, IsMulti extends boolean>(\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n id?: string,\n Element?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element,\n) => (\n <SingleValue {...props}>\n <div id={id} className={styles['inner-single-value']}>\n {Element ? <Element {...props} /> : props.children}\n </div>\n </SingleValue>\n);\n\nexport const DDSNoOptionsMessage = <TValue, IsMulti extends boolean>(\n props: NoticeProps<TValue, IsMulti>,\n) => <NoOptionsMessage {...props}>Ingen treff</NoOptionsMessage>;\n\nexport const DDSClearIndicator = <TValue, IsMulti extends boolean>(\n props: ClearIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <ClearIndicator {...props}>\n <Icon icon={CloseSmallIcon} iconSize={getIndicatorIconSize(size)} />\n </ClearIndicator>\n);\n\nexport const DDSMultiValueRemove = <TValue, IsMulti extends boolean>(\n props: MultiValueRemoveProps<TValue, IsMulti>,\n) => (\n <MultiValueRemove {...props}>\n <Icon icon={CloseSmallIcon} iconSize=\"small\" />\n </MultiValueRemove>\n);\n\nexport const DDSDropdownIndicator = <TValue, IsMulti extends boolean>(\n props: DropdownIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => {\n const { className, ...rest } = props;\n return (\n <DropdownIndicator\n {...rest}\n className={cn(className, styles['dropdown-indicator'])}\n >\n <Icon icon={ChevronDownIcon} iconSize={getIndicatorIconSize(size)} />\n </DropdownIndicator>\n );\n};\n\nexport const DDSInput = <TOption, IsMulti extends boolean>(\n props: InputProps<TOption, IsMulti>,\n ariaInvalid: boolean,\n ariaDescribedby?: string,\n) => (\n <Input\n {...props}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedby}\n />\n);\n\nexport const DDSControl = <TValue, IsMulti extends boolean>(\n props: ControlProps<TValue, IsMulti>,\n componentSize: InputSize,\n readOnly?: boolean,\n icon?: SvgIcon,\n dataTestId?: string,\n) => {\n const { className, ...rest } = props;\n\n return (\n <div data-testid={dataTestId ? dataTestId + '-control' : undefined}>\n <Control\n {...rest}\n className={cn(\n className,\n styles.control,\n rest.isDisabled && styles['control--disabled'],\n readOnly && styles['control--readonly'],\n )}\n >\n {icon && (\n <Icon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n className={cn(\n inputStyles['input-group__absolute-element'],\n styles[`icon--${componentSize}`],\n )}\n />\n )}\n {props.children}\n </Control>\n </div>\n );\n};\n","import { useId } from 'react';\nimport type { ComponentPropsWithRef } from 'react';\n\nimport styles from './NativeSelect.module.css';\nimport {\n cn,\n derivativeIdGenerator,\n readOnlyKeyDownHandler,\n readOnlyMouseDownHandler,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport {\n type CommonInputProps,\n type InputProps,\n getInputWidth,\n} from '../../helpers';\nimport inputStyles from '../../helpers/Input/Input.module.css';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport { scrollbar } from '../../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../../Icon';\nimport { ChevronDownIcon } from '../../Icon/icons';\nimport { renderInputMessage } from '../../InputMessage';\nimport { Box } from '../../layout';\nimport { Label } from '../../Typography';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\n\nexport type NativeSelectProps = CommonInputProps &\n Pick<InputProps, 'componentSize' | 'readOnly'> &\n ComponentPropsWithRef<'select'>;\n\nexport const NativeSelect = ({\n id,\n children,\n componentSize = 'medium',\n label,\n multiple,\n readOnly,\n errorMessage,\n tip,\n required,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n width,\n className,\n style,\n onKeyDown,\n onMouseDown,\n ...rest\n}: NativeSelectProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-native-select`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const showRequiredStyling = !!(required || ariaRequired);\n\n const inputWidth = getInputWidth(\n width,\n componentSize === 'xsmall' && 'var(--dds-input-default-width-xsmall)',\n );\n\n return (\n <div className={className} style={style}>\n {hasLabel && (\n <Label\n className={inputStyles.label}\n htmlFor={uniqueId}\n showRequiredStyling={showRequiredStyling}\n readOnly={readOnly}\n >\n {label}\n </Label>\n )}\n <Box position=\"relative\" width={inputWidth}>\n <select\n id={uniqueId}\n multiple={multiple}\n className={cn(\n styles.select,\n readOnly && styles['select--readonly'],\n inputStyles.input,\n inputStyles[`input--${componentSize}`],\n styles[`select--${componentSize}`],\n scrollbar,\n focusable,\n typographyStyles[`body-${componentSize}`],\n hasErrorMessage && inputStyles['input--stateful-danger'],\n multiple && styles['select--multiple'],\n )}\n aria-readonly={readOnly}\n aria-invalid={hasErrorMessage}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ])}\n required={required}\n onKeyDown={readOnlyKeyDownHandler('select', readOnly, onKeyDown)}\n onMouseDown={readOnlyMouseDownHandler(readOnly, onMouseDown)}\n {...rest}\n >\n {children}\n </select>\n {!multiple && (\n <Icon\n icon={ChevronDownIcon}\n iconSize={componentSize === 'xsmall' ? 'small' : 'medium'}\n className={styles.icon}\n />\n )}\n </Box>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </div>\n );\n};\n\nexport type NativeSelectPlaceholderProps = ComponentPropsWithRef<'option'>;\n\nexport const NativeSelectPlaceholder = ({\n children = '-- Velg fra listen --',\n value,\n ...rest\n}: NativeSelectPlaceholderProps) => (\n <option value={value ?? ''} selected {...rest}>\n {children}\n </option>\n);\n\nNativeSelectPlaceholder.displayName = 'NativeSelectPlaceholder';\n",".select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n text-overflow: ellipsis;\n width: 100%;\n\n &:hover:not(:disabled):not(.select--readonly) {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: 0 0 0 1px var(--dds-color-border-action-hover);\n\n & + svg {\n color: var(--dds-color-icon-action-hover);\n }\n }\n &:disabled {\n cursor: not-allowed;\n color: var(--dds-color-text-subtle);\n background-color: var(--dds-color-surface-field-disabled);\n border-color: var(--dds-color-border-subtle);\n\n + svg {\n color: var(--dds-color-icon-subtle);\n }\n }\n option {\n background-color: var(--dds-color-surface-default);\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n }\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n }\n optgroup {\n font-weight: normal;\n font-style: normal;\n }\n}\n\n.select--readonly {\n box-shadow: none;\n outline: none;\n cursor: default;\n color: var(--dds-color-text-subtle);\n background-color: var(--dds-color-surface-field-disabled);\n\n + svg {\n color: var(--dds-color-icon-subtle);\n }\n}\n\n.select--medium {\n padding-right: var(--dds-spacing-x2);\n}\n\n.select--small {\n padding-right: var(--dds-spacing-x2);\n}\n\n.select--xsmall {\n padding-right: var(--dds-spacing-x1-5);\n}\n\n.select--multiple {\n padding-right: 0;\n\n &.select--readonly option {\n background-color: var(--dds-color-surface-field-disabled);\n }\n}\n\n.icon {\n position: absolute;\n top: 50%;\n transform: translate(-150%, -50%);\n align-self: center;\n pointer-events: none;\n}\n","import type { SelectOption } from './Select';\n\nexport const createSelectOptions = <TValue extends string | number>(\n ...args: Array<TValue>\n): Array<SelectOption<TValue>> => args.map(v => ({ label: v, value: v }));\n","import { type Property } from 'csstype';\nimport {\n type ChangeEvent,\n type ForwardedRef,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { COUNTRIES, type Country, type ISOCountryCode } from './constants';\nimport styles from './PhoneInput.module.css';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { type InputProps, StatefulInput, getInputWidth } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box, type Breakpoint } from '../layout';\nimport { applyResponsiveStyle } from '../layout/common/utils';\nimport { NativeSelect } from '../Select';\nimport { Label } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport interface PhoneInputValue {\n // eslint-disable-next-line @typescript-eslint/ban-types\n countryCode: ISOCountryCode | (string & {});\n phoneNumber: string;\n}\n\ninterface PhoneInputCountryOption {\n countryCode: ISOCountryCode;\n label: string;\n}\n\nconst prioritizedCountries: Array<Country> = [\n COUNTRIES.NO,\n COUNTRIES.SE,\n COUNTRIES.DK,\n COUNTRIES.FI,\n];\n\nconst prioritizedCountryOptions: Array<PhoneInputCountryOption> =\n prioritizedCountries.map(country => {\n return {\n label: `${country.name} ${country.dialCode}`,\n countryCode: country.id,\n };\n });\n\nconst sortedCountryOptions: Array<PhoneInputCountryOption> = Object.values(\n COUNTRIES,\n)\n .sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n })\n .map(country => ({\n countryCode: country.id,\n label: `${country.name} ${country.dialCode}`,\n }))\n .filter(\n country =>\n !prioritizedCountryOptions.some(\n pCountry => pCountry.countryCode === country.countryCode,\n ),\n );\n\nexport const countryOptions: Array<PhoneInputCountryOption> = [\n ...prioritizedCountryOptions,\n ...sortedCountryOptions,\n];\n\nexport type PhoneInputProps = {\n /**\n * Custom id for gruppen ved behov. setter `${id}-country-code` som `id` for landskode og `${id}-phone-number` for telefonnummer.\n */\n id?: string;\n /**\n * Verdi bestående av landskode og telefonnummer.\n * */\n value?: PhoneInputValue;\n /** Default verdi bestående av landkode og telefonnummer. */\n defaultValue?: PhoneInputValue;\n /**\n * `onChange` funksjon.\n */\n onChange?: (value: PhoneInputValue) => void;\n /** `name` attributt; setter `${name}-country-code` som `name` for landskode og `${name}-phone-number` for telefonnummer. */\n name?: string;\n /**\n * Spesifiserer ved hvilket brekkpunkt og nedover versjonen for små skjermer skal vises; den stacker subkomponentene vertikalt.\n */\n smallScreenBreakpoint?: Breakpoint;\n /**\n * Usynlig ledetekst for nedtrekksliste med landkoder. Brukes hvis default ikke passer eller ikke er beskrivende nok.\n * @default \"Landskode\"\n */\n selectLabel?: string;\n /**\n * Ref for nedtrekksliste med landkoder.\n */\n selectRef?: ForwardedRef<HTMLSelectElement>;\n /**\n * Usynlig ledetekst for gruppen. Brukes hvis default ikke passer eller ikke er beskrivende nok.\n * @default \"Landskode og telefonnummer\"\n */\n groupLabel?: string;\n} & Pick<\n InputProps,\n | 'readOnly'\n | 'disabled'\n | 'width'\n | 'componentSize'\n | 'errorMessage'\n | 'label'\n | 'tip'\n | 'required'\n | 'className'\n | 'style'\n | 'aria-required'\n | 'aria-describedby'\n | 'ref'\n>;\n\nexport const PhoneInput = ({\n label,\n readOnly,\n errorMessage,\n tip,\n required,\n width,\n componentSize = 'medium',\n name,\n className,\n style,\n value,\n selectLabel = 'Landskode',\n selectRef,\n onChange,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n groupLabel = 'Landskode og telefonnummer',\n ref,\n ...props\n}: PhoneInputProps) => {\n const generatedId = useId();\n const uniqueId = props.id ?? generatedId;\n const phoneInputId = `${uniqueId}-phone-input`;\n const phoneNumberId = `${uniqueId}-phone-number`;\n const selectId = `${uniqueId}-country-code`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasMessage = hasErrorMessage || hasTip;\n\n const tipId = derivativeIdGenerator(phoneInputId, 'tip');\n const errorMessageId = derivativeIdGenerator(phoneInputId, 'errorMessage');\n\n const [callingCode, setCallingCode] = useState('');\n const [selectedCountryCodeText, setSelectedCountryCodeText] = useState('');\n const [internalValue, setInternalValue] = useState<PhoneInputValue>(\n defaultValue ?? {\n countryCode: '',\n phoneNumber: '',\n },\n );\n\n const isControlled = value !== undefined;\n\n const [callingCodeWidth, setCallingCodeWidth] = useState(0);\n\n const callingCodeRef = useRef<HTMLSpanElement>(null);\n\n useLayoutEffect(() => {\n if (callingCodeRef.current) {\n setCallingCodeWidth(callingCodeRef.current.offsetWidth);\n }\n }, [callingCode]);\n\n const callingCodeInlineStart: Property.PaddingInlineStart | undefined =\n callingCodeWidth\n ? `calc(var(--dds-spacing-x1) + ${callingCodeWidth}px)`\n : undefined;\n\n const internalSelectRef = useRef<HTMLSelectElement>(null);\n\n const combinedSelectRef = useCombinedRef(selectRef, internalSelectRef);\n\n const displayedValue = isControlled ? value : internalValue;\n\n useEffect(() => {\n const selectEl = internalSelectRef.current;\n if (selectEl && selectEl.value) {\n const { options, selectedIndex } = selectEl;\n const content = options[selectedIndex].innerHTML;\n setSelectedCountryCodeText(content);\n setCallingCode(getCallingCode(content));\n }\n }, [displayedValue?.countryCode]);\n\n const handleCountryCodeChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const newValue = {\n countryCode: e.target.value,\n phoneNumber: displayedValue?.phoneNumber ?? '',\n };\n\n const { options, selectedIndex } = e.target;\n const content = options[selectedIndex].innerHTML;\n setCallingCode(getCallingCode(content));\n\n if (isControlled && onChange) {\n onChange(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n const handlePhoneNumberChange = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = {\n countryCode: displayedValue?.countryCode ?? '',\n phoneNumber: e.target.value,\n };\n\n if (isControlled && onChange) {\n onChange(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n const commonProps = {\n required,\n 'aria-required': ariaRequired,\n disabled: props.disabled,\n readOnly,\n componentSize,\n };\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n const bp = props.smallScreenBreakpoint;\n\n const widthDefault =\n componentSize === 'xsmall' && 'var(--dds-input-default-width-xsmall)';\n\n return (\n <div className={cn(className, inputStyles.container)} style={style}>\n {hasLabel && (\n <Label\n htmlFor={phoneNumberId}\n showRequiredStyling={showRequiredStyling}\n className={inputStyles.label}\n readOnly={readOnly}\n >\n {label}\n </Label>\n )}\n <Box\n display=\"flex\"\n flexDirection={applyResponsiveStyle('column', bp, 'row')}\n className={cn(\n styles['inputs-container'],\n !!bp && styles[`inputs-container--small-screen-${bp}`],\n )}\n width={getInputWidth(width, widthDefault)}\n role=\"group\"\n aria-label={groupLabel}\n >\n <label className={utilStyles['visually-hidden']} htmlFor={selectId}>\n {selectLabel}\n </label>\n <NativeSelect\n width={applyResponsiveStyle(\n '100%',\n bp,\n componentSize === 'xsmall' ? '5rem' : '8rem',\n )}\n {...commonProps}\n ref={combinedSelectRef}\n id={selectId}\n className={cn(styles.select)}\n onChange={handleCountryCodeChange}\n defaultValue={defaultValue?.countryCode}\n value={displayedValue?.countryCode || ''}\n title={selectedCountryCodeText}\n name={`${name}-country-code`}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n ariaDescribedby,\n ])}\n >\n {countryOptions.map((item, index) => (\n <option value={item.countryCode} key={index}>\n {item.label}\n </option>\n ))}\n </NativeSelect>\n <Box width=\"100%\" className={inputStyles['input-group']}>\n <span\n className={cn(\n typographyStyles[`body-${componentSize}`],\n inputStyles['input-group__absolute-element'],\n styles['calling-code'],\n )}\n ref={callingCodeRef}\n >\n {callingCode}\n </span>\n\n <Box\n as={StatefulInput}\n ref={ref}\n type=\"tel\"\n {...commonProps}\n id={phoneNumberId}\n value={displayedValue?.phoneNumber || ''}\n defaultValue={defaultValue?.phoneNumber}\n name={`${name}-phone-number`}\n onChange={handlePhoneNumberChange}\n width=\"100%\"\n style={{\n paddingInlineStart: callingCodeInlineStart,\n }}\n className={styles.input}\n hasErrorMessage={hasErrorMessage}\n aria-invalid={hasErrorMessage ? true : undefined}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ])}\n />\n </Box>\n </Box>\n {hasMessage &&\n renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </div>\n );\n};\n\nPhoneInput.displayName = 'PhoneInput';\n\nconst getCallingCode = (s: string): string =>\n s.substring(s.indexOf('+'), s.length) ?? '';\n","export interface Country {\n name: string;\n id: ISOCountryCode;\n dialCode: string;\n}\n\nexport type ISOCountryCode =\n | 'AF'\n | 'AL'\n | 'DZ'\n | 'AS'\n | 'AD'\n | 'AO'\n | 'AI'\n | 'AG'\n | 'AR'\n | 'AM'\n | 'AW'\n | 'AU'\n | 'AT'\n | 'AZ'\n | 'BS'\n | 'BH'\n | 'BD'\n | 'BB'\n | 'BY'\n | 'BE'\n | 'BZ'\n | 'BJ'\n | 'BM'\n | 'BT'\n | 'BO'\n | 'BA'\n | 'BW'\n | 'BR'\n | 'IO'\n | 'VG'\n | 'BN'\n | 'BG'\n | 'BF'\n | 'BI'\n | 'KH'\n | 'CM'\n | 'CA'\n | 'CV'\n | 'KY'\n | 'CF'\n | 'TD'\n | 'CL'\n | 'CN'\n | 'CX'\n | 'CC'\n | 'CO'\n | 'EH'\n | 'KM'\n | 'CD'\n | 'CG'\n | 'CK'\n | 'CR'\n | 'CI'\n | 'HR'\n | 'CU'\n | 'CW'\n | 'CY'\n | 'CZ'\n | 'DK'\n | 'DJ'\n | 'DM'\n | 'DO'\n | 'EC'\n | 'EG'\n | 'SV'\n | 'GQ'\n | 'GS'\n | 'ER'\n | 'EE'\n | 'ET'\n | 'FK'\n | 'FO'\n | 'FJ'\n | 'FI'\n | 'FR'\n | 'GF'\n | 'PF'\n | 'GA'\n | 'GM'\n | 'GE'\n | 'DE'\n | 'GH'\n | 'GI'\n | 'GR'\n | 'GL'\n | 'GD'\n | 'GP'\n | 'GU'\n | 'GT'\n | 'GG'\n | 'GN'\n | 'GW'\n | 'GY'\n | 'HT'\n | 'HM'\n | 'HN'\n | 'HK'\n | 'HU'\n | 'IS'\n | 'IN'\n | 'ID'\n | 'IR'\n | 'IQ'\n | 'IE'\n | 'IM'\n | 'IL'\n | 'IT'\n | 'JM'\n | 'JP'\n | 'JE'\n | 'JO'\n | 'KZ'\n | 'KE'\n | 'KI'\n | 'XK'\n | 'KW'\n | 'KG'\n | 'LA'\n | 'LV'\n | 'LB'\n | 'LS'\n | 'LR'\n | 'LY'\n | 'LI'\n | 'LT'\n | 'LU'\n | 'MO'\n | 'MK'\n | 'MG'\n | 'MW'\n | 'MY'\n | 'MV'\n | 'ML'\n | 'MT'\n | 'MH'\n | 'MQ'\n | 'MR'\n | 'MU'\n | 'YT'\n | 'MX'\n | 'FM'\n | 'MD'\n | 'MC'\n | 'MN'\n | 'ME'\n | 'MS'\n | 'MA'\n | 'MZ'\n | 'MM'\n | 'NA'\n | 'NR'\n | 'NP'\n | 'NL'\n | 'NC'\n | 'NZ'\n | 'NI'\n | 'NE'\n | 'NG'\n | 'NU'\n | 'NF'\n | 'KP'\n | 'MP'\n | 'NO'\n | 'OM'\n | 'PK'\n | 'PW'\n | 'PS'\n | 'PA'\n | 'PG'\n | 'PY'\n | 'PE'\n | 'PH'\n | 'PL'\n | 'PT'\n | 'PR'\n | 'QA'\n | 'RE'\n | 'RO'\n | 'RU'\n | 'RW'\n | 'BL'\n | 'SH'\n | 'KN'\n | 'LC'\n | 'MF'\n | 'PM'\n | 'VC'\n | 'WS'\n | 'SM'\n | 'ST'\n | 'SA'\n | 'SN'\n | 'RS'\n | 'SC'\n | 'SL'\n | 'SG'\n | 'SX'\n | 'SK'\n | 'SI'\n | 'SB'\n | 'SO'\n | 'ZA'\n | 'KR'\n | 'SS'\n | 'ES'\n | 'LK'\n | 'SD'\n | 'SR'\n | 'SJ'\n | 'SZ'\n | 'SE'\n | 'CH'\n | 'SY'\n | 'TW'\n | 'TJ'\n | 'TZ'\n | 'TH'\n | 'TL'\n | 'TG'\n | 'TK'\n | 'TO'\n | 'TT'\n | 'TN'\n | 'TR'\n | 'TM'\n | 'TC'\n | 'TV'\n | 'VI'\n | 'UG'\n | 'UA'\n | 'AE'\n | 'GB'\n | 'US'\n | 'UY'\n | 'UZ'\n | 'VU'\n | 'VA'\n | 'VE'\n | 'VN'\n | 'WF'\n | 'YE'\n | 'ZM'\n | 'ZW'\n | 'AX';\n\ntype Countries = {\n [key in ISOCountryCode]: Country;\n};\n\n// Hentet fra [uber/baseweb](https://github.com/uber/baseweb/)\n// Modifisert til å passe våre behov: nummer som int\n\nexport const COUNTRIES: Countries = {\n AF: { name: 'Afghanistan (افغانستان)', id: 'AF', dialCode: '+93' },\n AL: { name: 'Albania (Shqipëri)', id: 'AL', dialCode: '+355' },\n DZ: { name: 'Algerie (الجزائر)', id: 'DZ', dialCode: '+213' },\n AS: {\n name: 'Amerikansk Samoa (American Samoa)',\n id: 'AS',\n dialCode: '+1684',\n },\n AD: { name: 'Andorra', id: 'AD', dialCode: '+376' },\n AO: { name: 'Angola', id: 'AO', dialCode: '+244' },\n AI: { name: 'Anguilla', id: 'AI', dialCode: '+1264' },\n AG: {\n name: 'Antigua og Barbuda (Antigua and Barbuda)',\n id: 'AG',\n dialCode: '+1268',\n },\n AR: { name: 'Argentina', id: 'AR', dialCode: '+54' },\n AM: { name: 'Armenia (Հայաստան)', id: 'AM', dialCode: '+374' },\n AW: { name: 'Aruba', id: 'AW', dialCode: '+297' },\n AU: { name: 'Australia', id: 'AU', dialCode: '+61' },\n AT: { name: 'Østerrike (Österreich)', id: 'AT', dialCode: '+43' },\n AZ: { name: 'Aserbajdsjan (Azərbaycan)', id: 'AZ', dialCode: '+994' },\n BS: { name: 'Bahamas', id: 'BS', dialCode: '+1242' },\n BH: { name: 'Bahrain (البحرين)', id: 'BH', dialCode: '+973' },\n BD: { name: 'Bangladesh (বাংলাদেশ)', id: 'BD', dialCode: '+880' },\n BB: { name: 'Barbados', id: 'BB', dialCode: '+1246' },\n BY: { name: 'Belarus (Беларусь)', id: 'BY', dialCode: '+375' },\n BE: { name: 'Belgium (België)', id: 'BE', dialCode: '+32' },\n BZ: { name: 'Belize', id: 'BZ', dialCode: '+501' },\n BJ: { name: 'Benin (Bénin)', id: 'BJ', dialCode: '+229' },\n BM: { name: 'Bermuda', id: 'BM', dialCode: '+1441' },\n BT: { name: 'Bhutan (འབྲུག)', id: 'BT', dialCode: '+975' },\n BO: { name: 'Bolivia', id: 'BO', dialCode: '+591' },\n BA: {\n name: 'Bosnia-Hercegovina (Босна и Херцеговина)',\n id: 'BA',\n dialCode: '+387',\n },\n BW: { name: 'Botswana', id: 'BW', dialCode: '+267' },\n BR: { name: 'Brasil', id: 'BR', dialCode: '+55' },\n IO: {\n name: 'Det britiske territoriet i Indiahavet (British Indian Ocean Territory)',\n id: 'IO',\n dialCode: '+246',\n },\n VG: {\n name: 'Britiske Jomfruøyer (British Virgin Islands)',\n id: 'VG',\n dialCode: '+1284',\n },\n BN: { name: 'Brunei', id: 'BN', dialCode: '+673' },\n BG: { name: 'Bulgaria (България)', id: 'BG', dialCode: '+359' },\n BF: { name: 'Burkina Faso', id: 'BF', dialCode: '+226' },\n BI: { name: 'Burundi (Uburundi)', id: 'BI', dialCode: '+257' },\n KH: { name: 'Kambodsja (កម្ពុជា)', id: 'KH', dialCode: '+855' },\n CM: { name: 'Kamerun (Cameroun)', id: 'CM', dialCode: '+237' },\n CA: { name: 'Canada', id: 'CA', dialCode: '+1' },\n CV: { name: 'Kapp Verde (Kabu Verdi)', id: 'CV', dialCode: '+238' },\n KY: { name: 'Caymanøyene (Cayman Islands)', id: 'KY', dialCode: '+1345' },\n CF: {\n name: 'Den sentralafrikanske republikk (République centrafricaine)',\n id: 'CF',\n dialCode: '+236',\n },\n TD: { name: 'Tsjad (Tchad)', id: 'TD', dialCode: '+235' },\n CL: { name: 'Chile', id: 'CL', dialCode: '+56' },\n CN: { name: 'Kina (中国)', id: 'CN', dialCode: '+86' },\n CX: { name: 'Christmasøya (Christmas Island)', id: 'CX', dialCode: '+61' },\n CC: {\n name: 'Kokosøyene (Cocos (Keeling) Islands)',\n id: 'CC',\n dialCode: '+61',\n },\n CO: { name: 'Colombia', id: 'CO', dialCode: '+57' },\n KM: { name: 'Komorene (جزر القمر)', id: 'KM', dialCode: '+269' },\n CD: {\n name: 'Kongo (DR) (Jamhuri ya Kisoemokrasia ya Kongo)',\n id: 'CD',\n dialCode: '+243',\n },\n CG: {\n name: 'Kongo (Republikken) (Congo-Brazzaville)',\n id: 'CG',\n dialCode: '+242',\n },\n CK: { name: 'Cookøyene (Cook Islands)', id: 'CK', dialCode: '+682' },\n CR: { name: 'Costa Rica', id: 'CR', dialCode: '+506' },\n CI: { name: 'Elfenbenskysten (Côte d’Ivoire)', id: 'CI', dialCode: '+225' },\n HR: { name: 'Kroatia (Hrvatska)', id: 'HR', dialCode: '+385' },\n CU: { name: 'Cuba', id: 'CU', dialCode: '+53' },\n CW: { name: 'Curaçao', id: 'CW', dialCode: '+599' },\n CY: { name: 'Kypros (Κύπρος)', id: 'CY', dialCode: '+357' },\n CZ: { name: 'Tsjekkia (Česká republika)', id: 'CZ', dialCode: '+420' },\n DK: { name: 'Danmark', id: 'DK', dialCode: '+45' },\n DJ: { name: 'Djibouti', id: 'DJ', dialCode: '+253' },\n DM: { name: 'Dominica', id: 'DM', dialCode: '+1767' },\n DO: {\n name: 'Den dominikanske republikk (República Dominicana)',\n id: 'DO',\n dialCode: '+1',\n },\n EC: { name: 'Ecuador', id: 'EC', dialCode: '+593' },\n EG: { name: 'Egypt (مصر)', id: 'EG', dialCode: '+20' },\n SV: { name: 'El Salvador', id: 'SV', dialCode: '+503' },\n GQ: {\n name: 'Ekvatorial-Guinea (Guinea Ecuatorial)',\n id: 'GQ',\n dialCode: '+240',\n },\n ER: { name: 'Eritrea', id: 'ER', dialCode: '+291' },\n EE: { name: 'Estland (Eesti)', id: 'EE', dialCode: '+372' },\n ET: { name: 'Etiopia (ኢትዮጵያ)', id: 'ET', dialCode: '+251' },\n FK: { name: 'Falklandsøyene (Islas Malvinas)', id: 'FK', dialCode: '+500' },\n FO: { name: 'Færøyene (Føroyar)', id: 'FO', dialCode: '+298' },\n FJ: { name: 'Fiji', id: 'FJ', dialCode: '+679' },\n FI: { name: 'Finland (Suomi)', id: 'FI', dialCode: '+358' },\n FR: { name: 'Frankrike (France)', id: 'FR', dialCode: '+33' },\n GF: { name: 'Fransk Guyana (Guyane française)', id: 'GF', dialCode: '+594' },\n PF: {\n name: 'Fransk Polynesia (Polynésie française)',\n id: 'PF',\n dialCode: '+689',\n },\n GA: { name: 'Gabon', id: 'GA', dialCode: '+241' },\n GM: { name: 'Gambia', id: 'GM', dialCode: '+220' },\n GE: { name: 'Georgia (საქართველო)', id: 'GE', dialCode: '+995' },\n DE: { name: 'Tyskland (Deutschland)', id: 'DE', dialCode: '+49' },\n GH: { name: 'Ghana (Gaana)', id: 'GH', dialCode: '+233' },\n GI: { name: 'Gibraltar', id: 'GI', dialCode: '+350' },\n GR: { name: 'Hellas (Ελλάδα)', id: 'GR', dialCode: '+30' },\n GL: { name: 'Grønland (Kalaallit Nunaat)', id: 'GL', dialCode: '+299' },\n GD: { name: 'Grenada', id: 'GD', dialCode: '+1473' },\n GP: { name: 'Guadeloupe', id: 'GP', dialCode: '+590' },\n GU: { name: 'Guam', id: 'GU', dialCode: '+1671' },\n GT: { name: 'Guatemala', id: 'GT', dialCode: '+502' },\n GG: { name: 'Guernsey', id: 'GG', dialCode: '+44' },\n GN: { name: 'Guinea (Guinée)', id: 'GN', dialCode: '+224' },\n GW: { name: 'Guinea-Bissau (Guiné-Bissau)', id: 'GW', dialCode: '+245' },\n GY: { name: 'Guyana', id: 'GY', dialCode: '+592' },\n HT: { name: 'Haiti', id: 'HT', dialCode: '+509' },\n HM: {\n name: 'Heard- og McDonaldøyene (Heard Island and McDonald Islands)',\n id: 'HM',\n dialCode: '+672',\n },\n VA: {\n name: 'Vatikanstaten (Città del Vaticano)',\n id: 'VA',\n dialCode: '+379',\n },\n HN: { name: 'Honduras', id: 'HN', dialCode: '+504' },\n HK: { name: 'Hongkong (香港)', id: 'HK', dialCode: '+852' },\n HU: { name: 'Ungarn (Magyarország)', id: 'HU', dialCode: '+36' },\n IS: { name: 'Island (Ísland)', id: 'IS', dialCode: '+354' },\n IN: { name: 'India (भारत)', id: 'IN', dialCode: '+91' },\n ID: { name: 'Indonesia', id: 'ID', dialCode: '+62' },\n IR: { name: 'Iran (ایران)', id: 'IR', dialCode: '+98' },\n IQ: { name: 'Irak (العراق)', id: 'IQ', dialCode: '+964' },\n IE: { name: 'Irland (Éire)', id: 'IE', dialCode: '+353' },\n IM: { name: 'Isle of Man', id: 'IM', dialCode: '+44' },\n IL: { name: 'Israel (ישראל)', id: 'IL', dialCode: '+972' },\n IT: { name: 'Italia', id: 'IT', dialCode: '+39' },\n JM: { name: 'Jamaica', id: 'JM', dialCode: '+1' },\n JP: { name: 'Japan (日本)', id: 'JP', dialCode: '+81' },\n JE: { name: 'Jersey', id: 'JE', dialCode: '+44' },\n JO: { name: 'Jordan (الأردن)', id: 'JO', dialCode: '+962' },\n KZ: { name: 'Kasakhstan (Қазақстан)', id: 'KZ', dialCode: '+7' },\n KE: { name: 'Kenya', id: 'KE', dialCode: '+254' },\n KI: { name: 'Kiribati', id: 'KI', dialCode: '+686' },\n XK: { name: 'Kosovo', id: 'XK', dialCode: '+383' },\n KW: { name: 'Kuwait (الكويت)', id: 'KW', dialCode: '+965' },\n KG: { name: 'Kirgisistan (Кыргызстан)', id: 'KG', dialCode: '+996' },\n LA: { name: 'Laos (ລາວ)', id: 'LA', dialCode: '+856' },\n LV: { name: 'Latvia (Latvija)', id: 'LV', dialCode: '+371' },\n LB: { name: 'Libanon (لبنان)', id: 'LB', dialCode: '+961' },\n LS: { name: 'Lesotho', id: 'LS', dialCode: '+266' },\n LR: { name: 'Liberia', id: 'LR', dialCode: '+231' },\n LY: { name: 'Libya (ليبيا)', id: 'LY', dialCode: '+218' },\n LI: { name: 'Liechtenstein', id: 'LI', dialCode: '+423' },\n LT: { name: 'Litauen (Lietuva)', id: 'LT', dialCode: '+370' },\n LU: { name: 'Luxembourg', id: 'LU', dialCode: '+352' },\n MO: { name: 'Macao (澳門)', id: 'MO', dialCode: '+853' },\n MK: {\n name: 'Nord-Makedonia (FYROM) (Македонија)',\n id: 'MK',\n dialCode: '+389',\n },\n MG: { name: 'Madagaskar (Madagasikara)', id: 'MG', dialCode: '+261' },\n MW: { name: 'Malawi', id: 'MW', dialCode: '+265' },\n MY: { name: 'Malaysia', id: 'MY', dialCode: '+60' },\n MV: {\n name: 'Maldivene (ދިވެހިރާއްޖޭގެ ޖުމްހޫރިއްޔާ)',\n id: 'MV',\n dialCode: '+960',\n },\n ML: { name: 'Mali', id: 'ML', dialCode: '+223' },\n MT: { name: 'Malta', id: 'MT', dialCode: '+356' },\n MH: { name: 'Marshalløyene (Marshall Islands)', id: 'MH', dialCode: '+692' },\n MQ: { name: 'Martinique', id: 'MQ', dialCode: '+596' },\n MR: { name: 'Mauritania (موريتانيا)', id: 'MR', dialCode: '+222' },\n MU: { name: 'Mauritius (Moris)', id: 'MU', dialCode: '+230' },\n YT: { name: 'Mayotte', id: 'YT', dialCode: '+262' },\n MX: { name: 'Mexico (México)', id: 'MX', dialCode: '+52' },\n FM: { name: 'Mikronesia (Micronesia)', id: 'FM', dialCode: '+691' },\n MD: { name: 'Moldova (Republica Moldova)', id: 'MD', dialCode: '+373' },\n MC: { name: 'Monaco', id: 'MC', dialCode: '+377' },\n MN: { name: 'Mongolia (Монгол)', id: 'MN', dialCode: '+976' },\n ME: { name: 'Montenegro (Crna Gora)', id: 'ME', dialCode: '+382' },\n MS: { name: 'Montserrat', id: 'MS', dialCode: '+1664' },\n MA: { name: 'Marokko (المغرب)', id: 'MA', dialCode: '+212' },\n MZ: { name: 'Mosambik (Moçambique)', id: 'MZ', dialCode: '+258' },\n MM: { name: 'Myanmar (မြန်မာ)', id: 'MM', dialCode: '+95' },\n NA: { name: 'Namibia', id: 'NA', dialCode: '+264' },\n NR: { name: 'Nauru', id: 'NR', dialCode: '+674' },\n NP: { name: 'Nepal (नेपाल)', id: 'NP', dialCode: '+977' },\n NL: { name: 'Nederland', id: 'NL', dialCode: '+31' },\n NC: { name: 'Ny-Caledonia (Nouvelle-Calédonie)', id: 'NC', dialCode: '+687' },\n NZ: { name: 'New Zealand', id: 'NZ', dialCode: '+64' },\n NI: { name: 'Nicaragua', id: 'NI', dialCode: '+505' },\n NE: { name: 'Niger (Nijar)', id: 'NE', dialCode: '+227' },\n NG: { name: 'Nigeria', id: 'NG', dialCode: '+234' },\n NU: { name: 'Niue', id: 'NU', dialCode: '+683' },\n NF: { name: 'Norfolk Island', id: 'NF', dialCode: '+672' },\n KP: {\n name: 'Nord-Korea (조선 민주주의 인민 공화국)',\n id: 'KP',\n dialCode: '+850',\n },\n MP: {\n name: 'Nord-Marianene (Northern Mariana Islands)',\n id: 'MP',\n dialCode: '+1670',\n },\n NO: { name: 'Norge', id: 'NO', dialCode: '+47' },\n OM: { name: 'Oman (عُمان)', id: 'OM', dialCode: '+968' },\n PK: { name: 'Pakistan (پاکستان)', id: 'PK', dialCode: '+92' },\n PW: { name: 'Palau', id: 'PW', dialCode: '+680' },\n PS: {\n name: 'Palestina (فلسطين)',\n id: 'PS',\n dialCode: '+970',\n },\n PA: { name: 'Panama (Panamá)', id: 'PA', dialCode: '+507' },\n PG: {\n name: 'Papua Ny-Guinea (Papua New Guinea)',\n id: 'PG',\n dialCode: '+675',\n },\n PY: { name: 'Paraguay', id: 'PY', dialCode: '+595' },\n PE: { name: 'Peru (Perú)', id: 'PE', dialCode: '+51' },\n PH: { name: 'Filippinene (Philippines)', id: 'PH', dialCode: '+63' },\n PL: { name: 'Polen (Polska)', id: 'PL', dialCode: '+48' },\n PT: { name: 'Portugal', id: 'PT', dialCode: '+351' },\n PR: { name: 'Puerto Rico', id: 'PR', dialCode: '+1' },\n QA: { name: 'Qatar (قطر)', id: 'QA', dialCode: '+974' },\n RE: { name: 'Réunion', id: 'RE', dialCode: '+262' },\n RO: { name: 'Romania (România)', id: 'RO', dialCode: '+40' },\n RU: { name: 'Russland (Россия)', id: 'RU', dialCode: '+7' },\n RW: { name: 'Rwanda', id: 'RW', dialCode: '+250' },\n BL: {\n name: 'Saint Barthélemy',\n id: 'BL',\n dialCode: '+590',\n },\n SH: { name: 'St. Helena (Saint Helena)', id: 'SH', dialCode: '+290' },\n KN: {\n name: 'Saint Kitts og Nevis (Saint Kitts and Nevis)',\n id: 'KN',\n dialCode: '+1869',\n },\n LC: { name: 'Saint Lucia', id: 'LC', dialCode: '+1758' },\n MF: {\n name: 'Saint Martin (Saint-Martin (partie française))',\n id: 'MF',\n dialCode: '+590',\n },\n PM: {\n name: 'Saint Pierre og Miquelon (Saint-Pierre-et-Miquelon)',\n id: 'PM',\n dialCode: '+508',\n },\n VC: {\n name: 'Saint Vincent og Grenadinene (Saint Vincent and the Grenadines)',\n id: 'VC',\n dialCode: '+1784',\n },\n WS: { name: 'Samoa', id: 'WS', dialCode: '+685' },\n SM: { name: 'San Marino', id: 'SM', dialCode: '+378' },\n ST: {\n name: 'São Tomé og Príncipe (São Tomé e Príncipe)',\n id: 'ST',\n dialCode: '+239',\n },\n SA: {\n name: 'Saudi-Arabia (المملكة العربية السعودية)',\n id: 'SA',\n dialCode: '+966',\n },\n SN: { name: 'Senegal (Sénégal)', id: 'SN', dialCode: '+221' },\n RS: { name: 'Serbia (Србија)', id: 'RS', dialCode: '+381' },\n SC: { name: 'Seychellene (Seychelles)', id: 'SC', dialCode: '+248' },\n SL: { name: 'Sierra Leone', id: 'SL', dialCode: '+232' },\n SG: { name: 'Singapore', id: 'SG', dialCode: '+65' },\n SX: { name: 'Sint Maarten', id: 'SX', dialCode: '+1721' },\n SK: { name: 'Slovakia (Slovensko)', id: 'SK', dialCode: '+421' },\n SI: { name: 'Slovenia (Slovenija)', id: 'SI', dialCode: '+386' },\n SB: { name: 'Salomonøyene (Solomon Islands)', id: 'SB', dialCode: '+677' },\n SO: { name: 'Somalia (Soomaaliya)', id: 'SO', dialCode: '+252' },\n ZA: { name: 'Sør-Afrika (South Africa)', id: 'ZA', dialCode: '+27' },\n GS: {\n name: 'Sør-Georgia og Sør-Sandwichøyene (South Georgia and the South Sandwich Islands)',\n id: 'GS',\n dialCode: '+500',\n },\n KR: {\n name: 'Sør-Korea (대한민국)',\n id: 'KR',\n dialCode: '+82',\n },\n SS: { name: 'Sør-Sudan (جنوب السودان)', id: 'SS', dialCode: '+211' },\n ES: { name: 'Spania (España)', id: 'ES', dialCode: '+34' },\n LK: { name: 'Sri Lanka (ශ්රී ලංකාව)', id: 'LK', dialCode: '+94' },\n SD: { name: 'Sudan (السودان)', id: 'SD', dialCode: '+249' },\n SR: { name: 'Surinam (Suriname)', id: 'SR', dialCode: '+597' },\n SJ: { name: 'Svalbard og Jan Mayen', id: 'SJ', dialCode: '+47' },\n SZ: { name: 'Eswatini', id: 'SZ', dialCode: '+268' },\n SE: { name: 'Sverige', id: 'SE', dialCode: '+46' },\n CH: { name: 'Sveits (Schweiz)', id: 'CH', dialCode: '+41' },\n SY: { name: 'Syria (سوريا)', id: 'SY', dialCode: '+963' },\n TW: { name: 'Taiwan (台灣)', id: 'TW', dialCode: '+886' },\n TJ: { name: 'Tadsjikistan (Таджикистан)', id: 'TJ', dialCode: '+992' },\n TZ: { name: 'Tanzania', id: 'TZ', dialCode: '+255' },\n TH: { name: 'Thailand (ไทย)', id: 'TH', dialCode: '+66' },\n TL: { name: 'Øst-Timor (Timor-Leste)', id: 'TL', dialCode: '+670' },\n TG: { name: 'Togo', id: 'TG', dialCode: '+228' },\n TK: { name: 'Tokelau', id: 'TK', dialCode: '+690' },\n TO: { name: 'Tonga', id: 'TO', dialCode: '+676' },\n TT: {\n name: 'Trinidad og Tobago (Trinidad and Tobago)',\n id: 'TT',\n dialCode: '+1868',\n },\n TN: { name: 'Tunisia (تونس)', id: 'TN', dialCode: '+216' },\n TR: { name: 'Tyrkia (Türkiye)', id: 'TR', dialCode: '+90' },\n TM: { name: 'Turkmenistan', id: 'TM', dialCode: '+993' },\n TC: {\n name: 'Turks- og Caicosøyene (Turks and Caicos Islands)',\n id: 'TC',\n dialCode: '+1649',\n },\n TV: { name: 'Tuvalu', id: 'TV', dialCode: '+688' },\n VI: {\n name: 'De amerikanske Jomfruøyer (U.S. Virgin Islands)',\n id: 'VI',\n dialCode: '+1340',\n },\n UG: { name: 'Uganda', id: 'UG', dialCode: '+256' },\n UA: { name: 'Ukraina (Україна)', id: 'UA', dialCode: '+380' },\n AE: {\n name: 'De forente arabiske emirater (الإمارات العربية المتحدة)',\n id: 'AE',\n dialCode: '+971',\n },\n GB: { name: 'Storbritannia (United Kingdom)', id: 'GB', dialCode: '+44' },\n US: { name: 'USA (United States)', id: 'US', dialCode: '+1' },\n UY: { name: 'Uruguay', id: 'UY', dialCode: '+598' },\n UZ: { name: 'Usbekistan (Ўзбекистон)', id: 'UZ', dialCode: '+998' },\n VU: { name: 'Vanuatu', id: 'VU', dialCode: '+678' },\n VE: { name: 'Venezuela', id: 'VE', dialCode: '+58' },\n VN: { name: 'Vietnam (Việt Nam)', id: 'VN', dialCode: '+84' },\n EH: { name: 'Vest-Sahara (Western Sahara)', id: 'EH', dialCode: '+212' },\n WF: {\n name: 'Wallis- og Futunaøyene (Wallis-et-Futuna)',\n id: 'WF',\n dialCode: '+681',\n },\n YE: { name: 'Yemen (اليمن)', id: 'YE', dialCode: '+967' },\n ZM: { name: 'Zambia', id: 'ZM', dialCode: '+260' },\n ZW: { name: 'Zimbabwe', id: 'ZW', dialCode: '+263' },\n AX: { name: 'Åland', id: 'AX', dialCode: '+358' },\n};\n",".inputs-container {\n .input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .select > div {\n margin-right: -1px;\n }\n}\n\n.inputs-container--small-screen-xs {\n @media only screen and (max-width: 600px) {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n }\n}\n\n.inputs-container--small-screen-sm {\n @media only screen and (max-width: 960px) {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n }\n}\n\n.inputs-container--small-screen-md {\n @media only screen and (max-width: 1280px) {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n }\n}\n\n.inputs-container--small-screen-lg {\n @media only screen and (max-width: 1920px) {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n }\n}\n\n.inputs-container--small-screen-xl {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n}\n\nselect:focus-visible,\nselect:hover {\n z-index: var(--dds-zindex-absolute-element);\n & ~ svg {\n z-index: var(--dds-zindex-absolute-element);\n }\n}\n\n.calling-code {\n left: var(--dds-spacing-x0-5);\n}\n","import {\n type ReactNode,\n type RefObject,\n useContext,\n useEffect,\n useId,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport styles from './Popover.module.css';\nimport {\n type Placement,\n useCombinedRef,\n useFloatPosition,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n useReturnFocusOnBlur,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn, isEmpty } from '../../utils';\nimport { Button } from '../Button';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { CloseIcon } from '../Icon/icons';\nimport { Paper, type ResponsiveProps } from '../layout';\nimport { Heading } from '../Typography';\nimport { usePopoverContext } from './Popover.context';\nimport { ThemeContext } from '../ThemeProvider';\n\nexport type PopoverSizeProps = Pick<\n ResponsiveProps,\n 'width' | 'height' | 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight'\n>;\n\nexport type PopoverProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Header. Bruker default semantisk heading hvis verdien er en `string`. */\n header?: string | ReactNode;\n /**Om lukkeknapp skal vises.\n * @default true\n */\n withCloseButton?: boolean;\n /**Spesifiserer hvor komponenten skal plasseres i forhold til anchor-elementet.\n * @default \"bottom\"\n */\n placement?: Placement;\n /**Angir rotnode hvor popover skal rendres.\n * @default themeProviderRef\n */\n parentElement?: HTMLElement;\n /**Angir om popover skal rendre i en portal eller ikke.\n * @default \"false\"\n */\n portal?: boolean;\n /**Avstand fra anchor-elementet i px.\n * @default 8\n */\n offset?: number;\n /** Ekstra logikk kjørt når popover mister fokus. */\n onBlur?: () => void;\n /**Custom størrelse. */\n sizeProps?: PopoverSizeProps;\n /** Om focus skal returneres ved `blur`\n * @default true\n */\n returnFocusOnBlur?: boolean;\n /**Anchor ref ved custom kontrollert bruk uten `<PopoverGroup>` Kun for corner cases. */\n anchorRef?: RefObject<HTMLElement | null>;\n /**Spesifiserer om popover er åpen ved custom kontrollert bruk uten `<PopoverGroup>` Kun for corner cases. */\n isOpen?: boolean;\n /**Callback for lukking ved custom kontrollert bruk uten `<PopoverGroup>` Kun for corner cases. */\n onClose?: () => void;\n }\n>;\n\nexport const Popover = ({\n id,\n header,\n withCloseButton = true,\n onBlur,\n children,\n placement = 'bottom',\n parentElement,\n portal = false,\n offset = 8,\n sizeProps = {},\n returnFocusOnBlur = true,\n className,\n htmlProps = {},\n anchorRef,\n isOpen: propIsOpen,\n onClose: propOnClose,\n ref,\n ...rest\n}: PopoverProps) => {\n const { refs, styles: positionStyles } = useFloatPosition(null, {\n offset,\n placement,\n });\n const { maxHeight, maxWidth, minHeight, minWidth, height, width } = sizeProps;\n\n const context = usePopoverContext();\n const themeContext = useContext(ThemeContext);\n const portalTarget = parentElement ?? themeContext?.el;\n\n const {\n floatStyling: contextFloatStyling,\n setFloatOptions,\n floatingRef: contextFloatingRef,\n popoverId: contextPopoverId,\n onClose: contextOnClose,\n isOpen: contextIsOpen,\n anchorEl: contextAnchorEl,\n } = context;\n\n const hasContext = !isEmpty(context);\n const generatedId = useId();\n const uniquePopoverId = id ?? `${generatedId}-popover`;\n\n const [\n popoverId,\n anchorEl,\n isOpen = false,\n floatingRef,\n floatStyling,\n onClose,\n ] = hasContext\n ? [\n contextPopoverId,\n contextAnchorEl,\n contextIsOpen,\n contextFloatingRef,\n contextFloatStyling,\n contextOnClose,\n ]\n : [\n uniquePopoverId,\n anchorRef?.current && anchorRef.current,\n propIsOpen,\n refs.setFloating,\n positionStyles.floating,\n propOnClose,\n ];\n\n if (!hasContext) {\n refs.setReference(anchorEl || null);\n }\n\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const popoverRef = useReturnFocusOnBlur(\n isOpen && hasTransitionedIn && returnFocusOnBlur,\n () => {\n onClose?.();\n onBlur?.();\n },\n anchorEl && anchorEl,\n );\n\n const multiRef = useCombinedRef(ref, popoverRef, floatingRef);\n\n useEffect(() => {\n setFloatOptions && setFloatOptions({ placement, offset });\n }, [placement, offset]);\n\n // hooks when without context\n useOnClickOutside([popoverRef.current, anchorEl], () => {\n if (isOpen && !hasContext) onClose?.();\n });\n\n useOnKeyDown('Escape', () => {\n if (isOpen && !hasContext) onClose?.();\n });\n\n const hasTitle = !!header;\n\n const openCn = hasTransitionedIn && isOpen ? 'open' : 'closed';\n\n const popover = (\n <Paper\n {...getBaseHTMLProps(\n popoverId,\n cn(\n className,\n styles.container,\n utilStyles['visibility-transition'],\n utilStyles[`visibility-transition--${openCn}`],\n focusStyles.focusable,\n ),\n htmlProps,\n rest,\n )}\n ref={multiRef}\n tabIndex={-1}\n height={height}\n maxHeight={maxHeight}\n minHeight={minHeight}\n width={width}\n maxWidth={maxWidth}\n minWidth={minWidth}\n style={{\n ...htmlProps.style,\n ...floatStyling,\n }}\n role=\"dialog\"\n elevation={3}\n border=\"border-subtle\"\n >\n {header && (\n <div className={styles.header}>\n {typeof header === 'string' ? (\n <Heading level={2} typographyType=\"headingMedium\">\n {header}\n </Heading>\n ) : (\n header\n )}\n </div>\n )}\n <div\n className={\n !hasTitle && withCloseButton\n ? styles['content--closable--no-header']\n : ''\n }\n >\n {children}\n </div>\n {withCloseButton && (\n <Button\n icon={CloseIcon}\n purpose=\"tertiary\"\n size=\"small\"\n onClick={onClose}\n aria-label=\"Lukk\"\n className={styles['close-button']}\n />\n )}\n </Paper>\n );\n\n return isOpen || hasTransitionedIn\n ? portal && portalTarget\n ? createPortal(popover, portalTarget)\n : popover\n : null;\n};\n\nPopover.displayName = 'Popover';\n",".container {\n position: absolute;\n width: -moz-fit-content;\n width: fit-content;\n z-index: var(--dds-zindex-popover);\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1)\n var(--dds-spacing-x1-5) var(--dds-spacing-x1);\n}\n\n.content--closable--no-header {\n margin-top: var(--dds-spacing-x2);\n}\n\n.header {\n margin-right: var(--dds-spacing-x2);\n}\n\n.close-button {\n position: absolute;\n top: var(--dds-spacing-x0-25);\n right: var(--dds-spacing-x0-25);\n}\n","import {\n type Dispatch,\n type SetStateAction,\n createContext,\n useContext,\n} from 'react';\n\nimport { type FloatingStyles, type UseFloatPositionOptions } from '../../hooks';\n\ninterface PopoverContextType {\n floatStyling: FloatingStyles;\n setFloatOptions: Dispatch<\n SetStateAction<UseFloatPositionOptions | undefined>\n >;\n floatingRef: (node: HTMLElement | null) => void;\n popoverId: string;\n anchorEl: HTMLElement;\n onClose: () => void;\n isOpen: boolean;\n}\n\nexport const PopoverContext = createContext<Partial<PopoverContextType>>({});\n\nexport const usePopoverContext = () => useContext(PopoverContext);\n","import {\n type DetailedHTMLProps,\n type Dispatch,\n type HTMLAttributes,\n Children as ReactChildren,\n type ReactNode,\n type SetStateAction,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { PopoverContext } from './Popover.context';\nimport {\n type UseFloatPositionOptions,\n useCombinedRef,\n useFloatPosition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../hooks';\n\nexport interface PopoverGroupProps {\n /** Barna til wrapperen: anchor-element som det første og `<Popover>` som det andre. */\n children: ReactNode;\n /**Forteller `<Popover>` om den skal være åpen på første render. */\n isInitiallyOpen?: boolean;\n /**Implementerer kontrollert tilstand: forteller `<Popover>` om den skal være åpen. */\n isOpen?: boolean;\n /**Implementerer kontrollert tilstand: funksjon for å kontrollere `isOpen`. */\n setIsOpen?: Dispatch<SetStateAction<boolean>>;\n /**Callback når <Popover> åpnes. */\n onOpen?: () => void;\n /**Callback når <Popover> lukkes. */\n onClose?: () => void;\n /** `id` til `<Popover>.` */\n popoverId?: string;\n}\n\nexport const PopoverGroup = ({\n isOpen: propIsOpen,\n setIsOpen: propSetIsOpen,\n onClose,\n onOpen,\n isInitiallyOpen = false,\n children,\n popoverId,\n}: PopoverGroupProps) => {\n const [internalIsOpen, internalSetIsOpen] = useState(isInitiallyOpen);\n\n const open = propIsOpen ?? internalIsOpen;\n const setOpen = propSetIsOpen ?? internalSetIsOpen;\n\n const generatedId = useId();\n const uniquePopoverId = popoverId ?? `${generatedId}-popover`;\n const [floatOptions, setFloatOptions] = useState<UseFloatPositionOptions>();\n const { refs, styles: positionStyles } = useFloatPosition(null, floatOptions);\n\n const handleClose = () => {\n setOpen(false);\n onClose && onClose();\n };\n\n const handleOpen = () => {\n setOpen(true);\n onOpen && onOpen();\n };\n\n const handleToggle = () => {\n if (open) {\n handleClose();\n } else {\n handleOpen();\n }\n };\n\n const buttonRef = useRef<HTMLElement>(null);\n const anchorRef = refs.setReference;\n const combinedAnchorRef = useCombinedRef(buttonRef, anchorRef);\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const floatingRef = refs.setFloating;\n const combinedPopoverRef = useCombinedRef(popoverRef, floatingRef);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (open) {\n handleClose();\n buttonRef.current?.focus();\n }\n });\n\n const elements: Array<HTMLElement | null> = [popoverRef.current!];\n if (buttonRef.current) elements.push(buttonRef.current);\n\n useOnClickOutside(elements, () => {\n if (open) handleClose();\n });\n\n const isAnchorChild = (i: number): boolean => i === 0;\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement<\n DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>\n >(child) &&\n (isAnchorChild(childIndex)\n ? cloneElement(child, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniquePopoverId,\n 'aria-expanded': open,\n onClick: handleToggle,\n ref: combinedAnchorRef,\n })\n : child)\n );\n });\n\n return (\n <PopoverContext\n value={{\n floatStyling: positionStyles.floating,\n setFloatOptions,\n floatingRef: combinedPopoverRef,\n popoverId: uniquePopoverId,\n onClose: handleClose,\n isOpen: open,\n anchorEl: buttonRef.current ?? undefined,\n }}\n >\n {Children}\n </PopoverContext>\n );\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n","import {\n Children,\n type ForwardRefExoticComponent,\n Fragment,\n type ReactElement,\n type ReactNode,\n cloneElement,\n isValidElement,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { ProgressTrackerContext } from './ProgressTracker.context';\nimport styles from './ProgressTracker.module.css';\nimport {\n ProgressTrackerItem,\n type ProgressTrackerItemProps,\n} from './ProgressTrackerItem';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\n\nexport type ProgressTrackerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til det aktive steget.\n * @default 0\n */\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 = ({\n id,\n activeStep = 0,\n onStepChange,\n children,\n className,\n htmlProps,\n ...rest\n }: ProgressTrackerProps) => {\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 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\n value={{\n activeStep: thisActiveStep,\n handleStepChange: handleChange,\n }}\n >\n <div\n role=\"group\"\n aria-label=\"progress\"\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <ol className={styles.list}>{steps}</ol>\n </div>\n </ProgressTrackerContext>\n );\n };\n\n (Res as ProgressTrackerComponent).Item = ProgressTrackerItem;\n (Res as ProgressTrackerComponent).displayName = 'ProgressTracker';\n return Res as ProgressTrackerComponent;\n})();\n\nfunction removeInvalidChildren<TProps extends object>(children: ReactNode) {\n return Children.toArray(children).filter(isValidElement<TProps>);\n}\n\nfunction passIndexPropToProgressTrackerItem<TProps extends object>(\n children: Array<ReactElement<TProps>>,\n) {\n return Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\n }),\n );\n}\n\nconst intersperseItemsWithConnector = (\n children: Array<ReactElement<ProgressTrackerItemProps>>,\n) =>\n Children.map(children, (child, index) => {\n if (index === 0) {\n return child;\n }\n return (\n <Fragment key={index}>\n <div aria-hidden className={styles.connector} />\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",".list {\n --dds-progress-tracker-connector-width: 1px;\n --dds-progress-tracker-item-number-size: 1.75rem;\n\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: var(--dds-spacing-x0-125);\n margin: 0;\n padding: 0;\n}\n\n.connector {\n border-right: var(--dds-progress-tracker-connector-width) solid\n var(--dds-color-border-default);\n width: 1px;\n height: 18px;\n margin-left: calc(\n (var(--dds-progress-tracker-item-number-size) / 2) -\n (var(--dds-progress-tracker-connector-width) / 2)\n );\n}\n\n.item {\n flex: 1;\n position: relative;\n display: flex;\n justify-content: center;\n}\n\n.item-button {\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: var(--dds-progress-tracker-item-number-size) 1fr;\n justify-content: flex-start;\n align-items: center;\n font-family: inherit;\n gap: var(--dds-spacing-x0-5);\n cursor: pointer;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: all 0.2s;\n }\n\n &:hover > .item-number--active-incomplete {\n background-color: var(--dds-color-surface-action-resting);\n border-color: var(--dds-color-border-action-default);\n color: var(--dds-color-text-on-action);\n }\n\n &:hover > .item-number--inactive-incomplete {\n background-color: var(--dds-color-surface-hover-default);\n border-color: var(--dds-color-border-action-hover);\n color: var(--dds-color-text-action-hover);\n }\n\n &:hover > .item-number--active-completed,\n &:hover > .item-number--inactive-completed {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-border-action-hover);\n color: var(--dds-color-icon-on-action);\n }\n\n &:hover > .item-text--active-completed,\n &:hover > .item-text--active-incomplete {\n color: var(--dds-color-text-action-resting);\n text-decoration-color: transparent;\n }\n\n &:hover > .item-text--inactive-completed,\n &:hover > .item-text--inactive-incomplete {\n color: var(--dds-color-text-action-hover);\n text-decoration-color: var(--dds-color-text-action-hover);\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n}\n\n.item-div {\n cursor: default;\n}\n\n.item-number {\n border-radius: var(--dds-border-radius-rounded);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: var(--dds-zindex-absolute-element);\n font-weight: 600;\n border: 2px solid;\n height: var(--dds-progress-tracker-item-number-size);\n width: var(--dds-progress-tracker-item-number-size);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n }\n}\n\n.item-number--disabled {\n background-color: var(--dds-color-surface-default);\n border-color: var(--dds-color-border-default);\n color: var(--dds-color-text-subtle);\n}\n\n.item-number--active-incomplete,\n.item-number--active-completed,\n.item-number--inactive-completed {\n background-color: var(--dds-color-surface-action-resting);\n border-color: var(--dds-color-border-action-default);\n color: var(--dds-color-text-on-action);\n}\n\n.item-number--inactive-incomplete {\n background-color: var(--dds-color-surface-default);\n border-color: var(--dds-color-border-action-default);\n color: var(--dds-color-text-action-resting);\n}\n\n.item-text {\n text-decoration: underline;\n text-align: start;\n transition: text-decoration-color 0.2s;\n}\n\n.item-text--disabled {\n color: var(--dds-color-text-subtle);\n text-decoration-color: transparent;\n}\n\n.item-text--active-completed,\n.item-text--active-incomplete {\n color: var(--dds-color-text-action-resting);\n text-decoration-color: transparent;\n}\n\n.item-text--inactive-completed,\n.item-text--inactive-incomplete {\n color: var(--dds-color-text-medium);\n text-decoration-color: var(--dds-color-text-medium);\n}\n","import { type ComponentPropsWithRef, useMemo } from 'react';\n\nimport { useProgressTrackerContext } from './ProgressTracker.context';\nimport styles from './ProgressTracker.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { Icon } from '../Icon';\nimport { CheckIcon } from '../Icon/icons';\nimport { type SvgIcon } from '../Icon/utils';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\ntype ItemState =\n | 'activeCompleted'\n | 'activeIncomplete'\n | 'inactiveCompleted'\n | 'inactiveIncomplete'\n | 'disabled';\n\nconst toItemState = (\n active: boolean,\n completed: boolean,\n disabled: boolean,\n): ItemState => {\n if (disabled) {\n return 'disabled';\n }\n\n if (active) {\n return completed ? 'activeCompleted' : 'activeIncomplete';\n } else {\n return completed ? 'inactiveCompleted' : 'inactiveIncomplete';\n }\n};\n\ntype StateHyphen =\n | 'disabled'\n | 'active-incomplete'\n | 'active-completed'\n | 'inactive-incomplete'\n | 'inactive-completed';\n\nconst itemStateCn: Record<ItemState, StateHyphen> = {\n disabled: 'disabled',\n activeCompleted: 'active-completed',\n activeIncomplete: 'active-incomplete',\n inactiveCompleted: 'inactive-completed',\n inactiveIncomplete: 'inactive-incomplete',\n};\n\nexport interface BaseItemProps {\n /** Om steget er valgt eller ikke. Settes av konsument. */\n active?: boolean;\n /** Om steget er ferdig eller ikke. Settes av konsument.\n * @default false\n */\n completed?: boolean;\n /** Om steget skal være disabled. Settes av konsument.\n * @default false\n */\n disabled?: boolean;\n /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */\n icon?: SvgIcon;\n /** Indeksen til steget. NB! Denne settes automatisk av forelder og skal ikke settes manuelt. */\n index?: number;\n}\n\nexport type ProgressTrackerItemProps =\n | BaseComponentPropsWithChildren<\n HTMLButtonElement,\n BaseItemProps & {\n /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */\n onClick?: (index: number) => void;\n }\n >\n | BaseComponentPropsWithChildren<\n HTMLDivElement,\n BaseItemProps & {\n onClick?: undefined;\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 id,\n className,\n htmlProps,\n index = 0,\n completed = false,\n disabled = false,\n onClick,\n icon,\n children,\n ...rest\n } = props;\n\n const { activeStep, handleStepChange } = useProgressTrackerContext();\n const active = activeStep === index;\n const itemState = toItemState(active, completed, disabled);\n\n const handleClick = () => {\n if (!disabled) {\n onClick && onClick(index);\n handleStepChange && handleStepChange(index);\n }\n };\n\n const stepNumberContent = useMemo(() => {\n if (completed) {\n return <Icon icon={CheckIcon} iconSize=\"small\" />;\n }\n\n if (icon !== undefined) {\n return <Icon icon={icon} iconSize=\"small\" />;\n }\n\n return index + 1;\n }, [completed, icon, index]);\n\n const stepContent = (\n <>\n <div\n aria-hidden\n className={cn(\n styles['item-number'],\n styles[`item-number--${itemStateCn[itemState]}`],\n typographyStyles['body-small'],\n )}\n >\n {stepNumberContent}\n </div>\n <div\n className={cn(\n styles['item-text'],\n styles[`item-text--${itemStateCn[itemState]}`],\n typographyStyles['body-medium'],\n )}\n >\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenText(active, completed, index)}\n </VisuallyHidden>\n {children}\n </div>\n </>\n );\n\n return (\n <li aria-current={active ? 'step' : undefined} className={styles.item}>\n {handleStepChange ? (\n <button\n {...getBaseHTMLProps(\n id,\n cn(className, styles['item-button'], focusable),\n htmlProps as ComponentPropsWithRef<'button'>,\n rest,\n )}\n onClick={() => handleClick()}\n disabled={disabled}\n >\n {stepContent}\n </button>\n ) : (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, cn(styles['item-button'], styles['item-div'])),\n htmlProps as ComponentPropsWithRef<'div'>,\n rest,\n )}\n >\n {stepContent}\n </div>\n )}\n </li>\n );\n};\n\nProgressTrackerItem.displayName = 'ProgressTracker.Item';\n","import { type ComponentPropsWithRef, useId } from 'react';\n\nimport { Label } from '../Typography';\nimport utilStyles from './../helpers/styling/utilStyles.module.css';\nimport styles from './ProgressBar.module.css';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { type CommonInputProps, getInputWidth } from '../helpers';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\n\nexport type ProgressBarSize = 'medium' | 'small';\n\nexport type ProgressBarProps = Pick<\n CommonInputProps,\n 'tip' | 'errorMessage' | 'label' | 'width'\n> & {\n /**\n * Størrelse.\n * @default \"medium\"\n */\n size?: ProgressBarSize;\n /**\n * Indikerer i hvor stor grad prosessen er fullført.\n * Den skal ha verdi over 0; mindre eller lik `max`, mindre eller lik 1 hvis `max` ikke er satt.\n * Hvis verdien er `undefined` eller ugyldig blir komponenten \"indeterminate\".\n */\n value?: number;\n /**\n * Verdi som indikerer at prosessen er fullført; maksimal verdi.\n * @default 1\n */\n max?: number;\n} & Omit<ComponentPropsWithRef<'progress'>, 'max' | 'value'>;\n\nexport const ProgressBar = ({\n label,\n tip,\n errorMessage,\n size = 'medium',\n 'aria-describedby': ariaDescribedby,\n value,\n width,\n max,\n id,\n className,\n style,\n ...rest\n}: ProgressBarProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-searchInput`;\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasValidMax = !!max && max > 0;\n\n /**\n * Verdi skal være mindre eller lik max når max finnes; og mindre eller lik 1 hvis ikke.\n * Komponenten er \"indeterminate\" hvis value ikke er gyldig.\n */\n const hasValidValue =\n !!value &&\n value > 0 &&\n ((max !== undefined && value <= max) || (max === undefined && value <= 1));\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const fillPrecentage = hasValidValue && (value / (max ?? 1)) * 100 + '%';\n const isIndeterminate = !hasValidValue && !hasErrorMessage;\n return (\n <Box width=\"100%\" className={className} style={style}>\n {hasLabel ? <Label htmlFor={uniqueId}>{label}</Label> : undefined}\n <progress\n id={uniqueId}\n className={utilStyles['visually-hidden']}\n value={hasValidValue ? value : undefined}\n max={hasValidMax ? max : undefined}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ])}\n {...rest}\n >\n {fillPrecentage}\n </progress>\n <Box\n width={getInputWidth(width)}\n height={size === 'small' ? 'x0.75' : 'x1.5'}\n className={cn(styles.progress)}\n >\n <Box\n height=\"100%\"\n width={isIndeterminate ? '25%' : fillPrecentage ? fillPrecentage : 0}\n className={cn(\n styles.fill,\n isIndeterminate && styles['fill--indeterminate'],\n fillPrecentage === '100%' && styles['fill--done'],\n errorMessage && styles['fill--error'],\n )}\n />\n </Box>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Box>\n );\n};\n\nProgressBar.displayName = 'ProgressBar';\n",".progress {\n background-color: var(--dds-color-surface-medium);\n border: 1px solid var(--dds-color-border-default);\n border-radius: var(--dds-border-radius-surface);\n}\n\n.fill {\n background-color: var(--dds-color-surface-action-resting);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n width 0.2s,\n background-color 0.2s;\n }\n}\n\n.fill--done {\n background-color: var(--dds-color-surface-success-strong);\n}\n\n.fill--error {\n background-color: var(--dds-color-surface-action-danger-resting);\n}\n\n.fill--indeterminate {\n animation: indeterminate 2s infinite linear;\n}\n\n@keyframes indeterminate {\n 0% {\n transform: translateX(0);\n }\n 50% {\n transform: translateX(300%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n","import {\n type ChangeEvent,\n type ComponentPropsWithRef,\n useId,\n useState,\n} from 'react';\n\nimport { useAutocompleteSearch } from './AutocompleteSearch.context';\nimport styles from './Search.module.css';\nimport { type SearchButtonProps, type SearchSize } from './Search.types';\nimport { createEmptyChangeEvent, typographyTypes } from './Search.utils';\nimport { SearchSuggestions } from './SearchSuggestions';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Button } from '../Button';\nimport { Input, type InputProps } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { Icon, type IconSize } from '../Icon';\nimport { CloseSmallIcon, SearchIcon } from '../Icon/icons';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport { Label, getTypographyCn } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\nimport { VisuallyHidden } from '../VisuallyHidden';\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\nexport type SearchProps = Pick<InputProps, 'tip' | 'label'> & {\n /**Størrelsen på komponenten. */\n componentSize?: SearchSize;\n /**Props for søkeknappen. */\n buttonProps?: SearchButtonProps;\n} & Pick<InputProps, 'width'> &\n Omit<ComponentPropsWithRef<'input'>, 'width'>;\n\nexport const Search = ({\n componentSize = 'medium',\n buttonProps,\n name,\n label,\n tip,\n id,\n value,\n width,\n onChange,\n className,\n style,\n 'aria-describedby': ariaDescribedby,\n ref,\n ...rest\n}: SearchProps) => {\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 <div className={styles.container}>\n {hasLabel && <Label htmlFor={uniqueId}>{label}</Label>}\n <div>\n <Box\n className={cn(\n className,\n showSearchButton && styles['with-button-container'],\n )}\n width={width}\n gap=\"x0.5\"\n style={style}\n >\n <div className={styles['input-group']}>\n <Icon\n icon={SearchIcon}\n iconSize={getIconSize(componentSize)}\n className={cn(\n inputStyles['input-group__absolute-element'],\n styles['search-icon'],\n )}\n />\n <Input\n {...rest}\n ref={combinedRef}\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 className={cn(\n styles.input,\n styles[`input--${componentSize}`],\n typographyStyles[\n getTypographyCn(typographyTypes[componentSize])\n ],\n )}\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 <Button\n icon={CloseSmallIcon}\n size={componentSize === 'large' ? 'medium' : 'small'}\n purpose=\"tertiary\"\n aria-label=\"Tøm\"\n onClick={clearInput}\n className={styles['clear-button']}\n />\n )}\n </div>\n {showSearchButton && (\n <Button\n size={componentSize}\n onClick={onClick}\n {...otherButtonProps}\n >\n {buttonLabel ?? 'Søk'}\n </Button>\n )}\n </Box>\n {renderInputMessage(tip, tipId)}\n </div>\n </div>\n );\n};\n\nSearch.displayName = 'Search';\n","import {\n type ChangeEvent,\n type MouseEvent,\n type RefObject,\n createContext,\n useContext,\n} from 'react';\n\nexport interface AutocompleteSearchContextType {\n onValueChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n onSugggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n suggestions?: Array<string>;\n showSuggestions?: boolean;\n inputValue?: string;\n inputRef?: RefObject<HTMLInputElement | null> | null;\n suggestionsRef?: RefObject<HTMLDivElement | null> | null;\n}\n\nexport const AutocompleteSearchContext =\n createContext<AutocompleteSearchContextType>({});\n\nexport const useAutocompleteSearch = () => {\n return useContext(AutocompleteSearchContext);\n};\n",".container {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x0-125);\n}\n\n.input-group {\n position: relative;\n display: flex;\n}\n\n.with-button-container {\n display: grid;\n grid-template-columns: 1fr auto;\n}\n\n.input {\n width: 100%;\n padding-right: calc(\n var(--dds-spacing-x1) + var(--dds-icon-size-medium) +\n var(--dds-spacing-x0-25)\n );\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}\n\n.input--small {\n padding-block: var(--dds-spacing-x0-5);\n padding-left: calc(\n var(--dds-spacing-x0-75) + var(--dds-icon-size-small) +\n var(--dds-spacing-x0-5)\n );\n}\n\n.input--medium {\n padding-block: var(--dds-spacing-x0-75);\n padding-left: calc(\n var(--dds-spacing-x0-75) + var(--dds-icon-size-medium) +\n var(--dds-spacing-x0-5)\n );\n}\n\n.input--large {\n padding-block: var(--dds-spacing-x1);\n padding-left: calc(\n var(--dds-spacing-x0-75) + var(--dds-icon-size-medium) +\n var(--dds-spacing-x0-5)\n );\n}\n\n.search-icon {\n left: var(--dds-spacing-x0-75);\n}\n\n.clear-button {\n position: absolute;\n top: 50%;\n transform: translate(0, -50%);\n right: var(--dds-spacing-x1);\n\n width: var(--dds-icon-size-medium);\n height: var(--dds-icon-size-medium);\n}\n\n.suggestions {\n position: absolute;\n top: 100%;\n width: 100%;\n max-height: 300px;\n z-index: var(--dds-zindex-dropdown);\n overflow-y: scroll;\n margin-top: var(--dds-spacing-x0-25);\n}\n\n.suggestions__header {\n padding-left: var(--dds-spacing-x1);\n}\n","import { type ChangeEvent } from 'react';\n\nimport { type SearchSize } from './Search.types';\nimport { type StaticTypographyType } from '../Typography';\n\nexport const typographyTypes: Record<SearchSize, StaticTypographyType> = {\n small: 'bodySmall',\n medium: 'bodyMedium',\n large: 'bodyLarge',\n};\n\n/**\n * Lager en change-event som kan resette verdien i et input-felt.\n * Dette vil resultere i en event som har: event.target.value = ''.\n *\n * @param inputElementId Id'en til et gitt input-felt\n * @returns En change-event som har en tom streng som target value\n */\nexport function createEmptyChangeEvent(\n inputElementId: string,\n): ChangeEvent<HTMLInputElement> {\n const inputElement = document.getElementById(\n inputElementId,\n ) as HTMLInputElement;\n\n inputElement.value = '';\n\n const emptyChangeEvent: ChangeEvent<HTMLInputElement> = {\n target: inputElement,\n currentTarget: inputElement,\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n preventDefault: () => null,\n stopPropagation: () => null,\n nativeEvent: new Event('input'),\n persist: () => null,\n type: 'change',\n timeStamp: Date.now(),\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n };\n\n return emptyChangeEvent;\n}\n","import { type ComponentPropsWithRef, useEffect, useRef } from 'react';\n\nimport { useCombinedRef } from '../../hooks';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport styles from '../OverflowMenu/OverflowMenu.module.css';\n\nexport type SearchSuggestionItemProps = {\n focus?: boolean;\n index?: number;\n} & ComponentPropsWithRef<'button'>;\n\nexport const SearchSuggestionItem = ({\n focus,\n className,\n ref,\n ...rest\n}: SearchSuggestionItemProps) => {\n const itemRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n }\n }, [focus]);\n\n return (\n <button\n ref={combinedRef}\n className={cn(\n className,\n styles.list__item,\n styles['list__item--link'],\n focusStyles['focusable--inset'],\n utilStyles['normalize-button'],\n )}\n {...rest}\n tabIndex={focus ? 0 : -1}\n />\n );\n};\n\nSearchSuggestionItem.displayName = 'SearchSuggestionItem';\n","import { type MouseEvent } from 'react';\n\nimport { type SearchProps } from './Search';\nimport styles from './Search.module.css';\nimport { typographyTypes } from './Search.utils';\nimport { SearchSuggestionItem } from './SearchSuggestionItem';\nimport { useRoveFocus } from '../../hooks';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn, derivativeIdGenerator } from '../../utils';\nimport { StylelessList } from '../helpers';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Paper } from '../layout';\nimport { getTypographyCn } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type SearchSuggestionsProps = BaseComponentProps<\n HTMLDivElement,\n Pick<SearchProps, 'componentSize'> & {\n /**Forslag som vises i listen. */\n suggestions?: Array<string>;\n /** Om listen skal vises. */\n showSuggestions?: boolean;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Maks antall forslag vist i listen. */\n maxSuggestions?: number;\n /**Id til `<Search>`. */\n searchId: string;\n }\n>;\n\nexport const SearchSuggestions = ({\n id,\n searchId,\n className,\n htmlProps,\n suggestions = [],\n showSuggestions,\n componentSize = 'medium',\n onSuggestionClick,\n maxSuggestions,\n ...rest\n}: SearchSuggestionsProps) => {\n const suggestionsHeaderId = derivativeIdGenerator(\n searchId,\n 'suggestions-header',\n );\n\n const [focus] = useRoveFocus(suggestions?.length, showSuggestions);\n\n const suggestionsToRender = maxSuggestions\n ? suggestions?.slice(maxSuggestions)\n : suggestions;\n\n return (\n <Paper\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.suggestions,\n utilStyles.scrollbar,\n utilStyles['visibility-transition'],\n showSuggestions\n ? utilStyles['visibility-transition--open']\n : utilStyles['visibility-transition--closed'],\n ),\n htmlProps,\n rest,\n )}\n aria-hidden={!showSuggestions}\n border=\"border-default\"\n >\n <span\n id={suggestionsHeaderId}\n className={cn(\n styles.suggestions__header,\n typographyStyles['body-xsmall'],\n )}\n >\n Søkeforslag\n </span>\n <StylelessList role=\"listbox\" aria-labelledby={suggestionsHeaderId}>\n {suggestionsToRender.map((suggestion, index) => {\n return (\n <li key={index} role=\"option\">\n <SearchSuggestionItem\n index={index}\n focus={focus === index && showSuggestions}\n aria-label={`søk på ${suggestion}`}\n onClick={onSuggestionClick}\n aria-setsize={suggestionsToRender.length}\n aria-posinset={index}\n className={\n typographyStyles[\n getTypographyCn(typographyTypes[componentSize])\n ]\n }\n >\n {suggestion}\n </SearchSuggestionItem>\n </li>\n );\n })}\n </StylelessList>\n </Paper>\n );\n};\n\nSearchSuggestions.displayName = 'SearchSuggestions';\n","import {\n type ChangeEvent,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {\n AutocompleteSearchContext,\n type AutocompleteSearchContextType,\n} from './AutocompleteSearch.context';\nimport { useOnClickOutside, useOnKeyDown } from '../../hooks';\nimport { searchFilter } from '../../utils';\n\ninterface WeightedValue {\n text: string;\n relevance: number;\n}\n\nexport interface WeightedSearchData {\n array: Array<WeightedValue>;\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: Array<string>;\n sortFunction?: (a: string, b: string) => number;\n}\n\nexport interface SearchAutocompleteWrapperProps {\n /**Array med data som kan søkes på og eventuelt tilhørende sorteringsfunksjon. Array kan bestå av elementer av typen `string` eller objekter med vekt og tekst.*/\n data?: SearchData | WeightedSearchData;\n /** Ekstra callback ved `onChange` i `<Search>`. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionSelection?: () => void;\n /** Custom filter for forslag. */\n filter?: (sugestion: string, query: string) => boolean;\n /**Minst lengde på query når forslag skal vises.\n * @default 2\n */\n queryLength?: number;\n /** Barnet til subkomponenten - `<Search>`. */\n children?: ReactNode;\n /**Initielle `value` i `<Search>`. */\n value?: string;\n}\n\nexport const SearchAutocompleteWrapper = (\n props: SearchAutocompleteWrapperProps,\n) => {\n const {\n value,\n data,\n filter,\n queryLength = 2,\n onChange,\n onSuggestionSelection,\n children,\n } = props;\n\n const [inputValue, setInputValue] = useState(value ?? '');\n const [suggestions, setSuggestions] = useState<Array<string>>([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const closeSuggestions = () =>\n showSuggestions === true && setShowSuggestions(false);\n\n const openSuggestions = () =>\n showSuggestions === false && setShowSuggestions(true);\n\n useEffect(() => {\n if (suggestions.length > 0) {\n openSuggestions();\n } else {\n closeSuggestions();\n }\n }, [suggestions]);\n\n const isWeightedValueData = (\n data: SearchData | WeightedSearchData,\n ): data is WeightedSearchData =>\n (data as WeightedSearchData).array[0].relevance !== undefined;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n handleSetInputValue(query);\n let finalSuggestions: Array<string> = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: Array<WeightedValue> = array.filter(\n suggestion =>\n filter\n ? filter(suggestion.text, query)\n : searchFilter(suggestion.text, query),\n );\n\n finalSuggestions = filteredSuggestions\n .sort(sortFunction ? (a, b) => sortFunction(a, b) : undefined)\n .map(item => item.text);\n } else {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: Array<string> = array.filter(suggestion =>\n filter\n ? filter(suggestion, query)\n : searchFilter(suggestion, query),\n );\n\n finalSuggestions = filteredSuggestions.sort(\n sortFunction ? (a, b) => sortFunction(a, b) : undefined,\n );\n }\n }\n setSuggestions(finalSuggestions);\n } else {\n setSuggestions([]);\n }\n onChange && onChange(e);\n };\n\n const handleSuggestionClick = (e: MouseEvent<HTMLButtonElement>) => {\n setSuggestions([]);\n handleSetInputValue((e.target as HTMLButtonElement).innerText);\n onSuggestionSelection && onSuggestionSelection();\n closeSuggestions();\n };\n\n const handleSetInputValue = (value: string | undefined) => {\n setInputValue(value ?? '');\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsRef = useRef<HTMLDivElement>(null);\n\n useOnClickOutside([inputRef.current, suggestionsRef.current], () => {\n closeSuggestions();\n });\n\n useOnKeyDown('Tab', () => closeSuggestions());\n\n const contextProps: AutocompleteSearchContextType = {\n showSuggestions,\n inputRef,\n suggestionsRef,\n suggestions,\n onValueChange: handleChange,\n inputValue,\n onSugggestionClick: handleSuggestionClick,\n };\n return (\n <AutocompleteSearchContext value={contextProps}>\n {children}\n </AutocompleteSearchContext>\n );\n};\n\nSearchAutocompleteWrapper.displayName = 'SearchAutocompleteWrapper';\n","import { Search as BaseSearch, type SearchProps } from './Search';\nimport {\n SearchAutocompleteWrapper,\n type SearchAutocompleteWrapperProps,\n type SearchData,\n type WeightedSearchData,\n} from './SearchAutocompleteWrapper';\nimport {\n SearchSuggestions,\n type SearchSuggestionsProps,\n} from './SearchSuggestions';\n\ntype SearchCompoundProps = typeof BaseSearch & {\n AutocompleteWrapper: typeof SearchAutocompleteWrapper;\n Suggestions: typeof SearchSuggestions;\n};\n\nconst Search = BaseSearch as SearchCompoundProps;\n\nSearch.AutocompleteWrapper = SearchAutocompleteWrapper;\nSearch.Suggestions = SearchSuggestions;\n\nexport { Search };\n\nexport type {\n SearchProps,\n SearchData,\n WeightedSearchData,\n SearchAutocompleteWrapperProps,\n SearchSuggestionsProps,\n};\n\nexport { SearchAutocompleteWrapper };\nexport { SearchSuggestions };\nexport * from './Search.types';\n","import { type ChangeEvent, useId } from 'react';\n\nimport { type RadioButtonProps, type RadioValue } from './RadioButton.types';\nimport {\n type RadioButtonGroupContextProps,\n useRadioButtonGroup,\n} from './RadioButtonGroupContext';\nimport { type Nullable, getBaseHTMLProps } from '../../../types';\nimport {\n cn,\n readOnlyChangeHandler,\n readOnlyClickHandler,\n readOnlyKeyDownHandler,\n} from '../../../utils';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { Typography } from '../../Typography';\nimport { Label, SelectionControl } from '../SelectionControl.styles';\nimport { selectionControlTypographyProps } from '../SelectionControl.utils';\n\nconst getIsChecked = ({\n value,\n group,\n checked,\n}: {\n value: RadioValue;\n group: Nullable<RadioButtonGroupContextProps>;\n checked: boolean | undefined;\n}): boolean => {\n if (checked !== undefined) return checked;\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 = ({\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}: RadioButtonProps) => {\n const { className: htmlPropsClassName, style, ...restHtmlProps } = htmlProps;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-radioButton`;\n const hasChildren = !!children;\n const hasLabel = !!label;\n\n const radioButtonGroup = useRadioButtonGroup();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n radioButtonGroup?.onChange(event, event.target.value);\n };\n\n const describedByIds = [];\n if (radioButtonGroup?.errorMessageId)\n describedByIds.push(radioButtonGroup?.errorMessageId);\n if (ariaDescribedby) describedByIds.push(ariaDescribedby);\n\n const isReadOnly = readOnly || radioButtonGroup?.readOnly;\n const isDisabled = disabled || radioButtonGroup?.disabled;\n const hasError = error || radioButtonGroup?.error;\n const isChecked = getIsChecked({ value, group: radioButtonGroup, checked });\n\n return (\n <Label\n hasError={hasError}\n disabled={isDisabled}\n readOnly={isReadOnly}\n style={style}\n className={cn(className, htmlPropsClassName)}\n hasText={hasLabel}\n htmlFor={uniqueId}\n controlType=\"radio\"\n >\n <input\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n type=\"radio\"\n name={name ?? radioButtonGroup?.name}\n disabled={isDisabled}\n required={required || !!radioButtonGroup?.required}\n checked={isChecked}\n onChange={readOnlyChangeHandler(isReadOnly, handleChange)}\n value={value}\n aria-describedby={\n describedByIds.length > 0 ? describedByIds.join(' ') : undefined\n }\n aria-invalid={hasError ? true : undefined}\n className={cn(\n utilStyles['hide-input'],\n focusStyles['focusable-sibling'],\n )}\n onKeyDown={readOnlyKeyDownHandler(\n 'selectionControl',\n isReadOnly,\n htmlProps.onKeyDown,\n )}\n onClick={readOnlyClickHandler(isReadOnly, htmlProps.onClick)}\n />\n <SelectionControl\n controlType=\"radio\"\n className={focusStyles['focus-styled-sibling']}\n />\n {hasChildren ? (\n children\n ) : hasLabel ? (\n <Typography {...selectionControlTypographyProps}>{label}</Typography>\n ) : null}\n </Label>\n );\n};\n\nRadioButton.displayName = 'RadioButton';\n","import { type ChangeEvent, createContext, useContext } from 'react';\n\nimport { type RadioValue } from './RadioButton.types';\nimport { type Nullable } from '../../../types';\n\nexport interface RadioButtonGroupContextProps {\n disabled: boolean;\n readOnly: boolean;\n name?: string;\n value?: RadioValue;\n defaultValue?: RadioValue;\n error: boolean;\n errorMessageId?: string;\n required: boolean;\n onChange: (event: ChangeEvent<HTMLInputElement>, v: RadioValue) => void;\n}\n\nexport const RadioButtonGroupContext =\n createContext<Nullable<RadioButtonGroupContextProps>>(null);\n\nexport const useRadioButtonGroup = () => {\n return useContext(RadioButtonGroupContext);\n};\n","import { type ChangeEvent, type HTMLAttributes, useId, useState } from 'react';\n\nimport {\n RadioButtonGroupContext,\n type RadioButtonGroupContextProps,\n} from './RadioButtonGroupContext';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { RequiredMarker, cn } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport { LockIcon } from '../../Icon/icons';\nimport { renderInputMessage } from '../../InputMessage';\nimport { Typography } from '../../Typography';\nimport labelStyles from '../../Typography/Label/Label.module.css';\nimport { type SelectionControlGroupCommonProps } from '../common/SelectionControl.types';\nimport styles from '../SelectionControl.module.css';\n\nexport type RadioButtonGroupProps<T extends string | number> =\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n SelectionControlGroupCommonProps & {\n /** Gir alle barna `name` prop.*/\n name?: string;\n /**Funksjonen for onChange-event for barna. */\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n value: T | undefined,\n ) => void;\n /** Gjør alle barna påkrevd ved å gi dem `required` prop. Legger en markør (*) bak ledeteksten. */\n required?: boolean;\n /**Verdi - en `<RadioButton>` med denne verdien blir valgt med controlled state. */\n value?: T | undefined;\n /**Default verdi - en `<RadioButton>` med denne verdien blir forhåndsvalgt med uncontrolled state. */\n defaultValue?: T | undefined;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n >;\n\nexport const RadioButtonGroup = <T extends string | number = string>({\n name,\n label,\n groupId,\n errorMessage,\n tip,\n disabled = false,\n readOnly = false,\n direction = 'row',\n value,\n defaultValue,\n children,\n required = false,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n}: RadioButtonGroupProps<T>) => {\n const { 'aria-required': ariaRequired = false } = htmlProps;\n\n const [uncontrolledValue, setUncontrolledValue] = useState<T | undefined>(\n defaultValue,\n );\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-radioButtonGroup`;\n\n const isControlled = value !== undefined;\n const groupValue = isControlled ? value : uncontrolledValue;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (!isControlled) {\n setUncontrolledValue(newValue as T);\n }\n if (onChange) {\n onChange(e, newValue as T);\n }\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: RadioButtonGroupContextProps = {\n name,\n disabled,\n defaultValue,\n error: hasErrorMessage,\n errorMessageId: errorMessageId,\n required,\n readOnly,\n value: groupValue,\n onChange: handleChange,\n };\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container),\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n <Typography\n as=\"span\"\n typographyType=\"labelMedium\"\n id={uniqueGroupId}\n className={readOnly ? labelStyles['read-only'] : undefined}\n >\n {readOnly && (\n <Icon icon={LockIcon} className={labelStyles['read-only__icon']} />\n )}\n {label} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n {renderInputMessage(tip, tipId)}\n <RadioButtonGroupContext value={{ ...contextProps }}>\n <div\n role=\"radiogroup\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tipId}\n aria-errormessage={errorMessageId}\n className={cn(styles.group, styles[`group--${direction}`])}\n >\n {children}\n </div>\n </RadioButtonGroupContext>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </div>\n );\n};\n\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n","@keyframes ddsSkeletonAnimation {\n 0% {\n opacity: 1;\n }\n to {\n opacity: 0.5;\n }\n}\n\n.container {\n animation: ddsSkeletonAnimation 0.75s ease-out infinite alternate;\n background-color: var(--dds-color-surface-skeleton);\n}\n","import { type Property } from 'csstype';\nimport { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Skeleton.module.css';\nimport { cn } from '../../utils';\nimport { Box, type ResponsiveProps } from '../layout';\n\nexport type SkeletonAppearance = 'circle' | 'rectangle';\n\nexport type SkeletonProps = {\n /**CSS border radius.\n * @default \"var(--dds-border-radius-surface)\"\n */\n borderRadius?: Property.BorderRadius;\n} & Pick<ResponsiveProps, 'width' | 'height'> &\n ComponentPropsWithRef<'div'>;\n\nexport const Skeleton = ({\n width,\n height,\n borderRadius = 'var(--dds-border-radius-surface)',\n className,\n style,\n ref,\n ...rest\n}: SkeletonProps) => {\n return (\n <Box\n width={width}\n height={height}\n ref={ref}\n className={cn(className, styles.container)}\n style={{ ...style, borderRadius }}\n {...rest}\n ></Box>\n );\n};\n\nSkeleton.displayName = 'Skeleton';\n",".wrapper {\n padding: var(--dds-spacing-x0-25);\n box-sizing: border-box;\n position: absolute;\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 opacity: 0;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n}\n\n.wrapper:focus-within {\n clip: auto;\n height: auto;\n overflow: auto;\n width: 100%;\n z-index: var(--dds-zindex-skiptocontent);\n opacity: 1;\n}\n","import { type Property } from 'csstype';\n\nimport styles from './SkipToContent.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Contrast } from '../Contrast';\nimport { Link } from '../Typography';\n\nexport type SkipToContentProps = BaseComponentProps<\n HTMLAnchorElement,\n {\n /** Teksten som vises i lenka.\n * @default \"Til hovedinnhold\"\n */\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 * @default 0\n */\n top?: Property.Top;\n }\n>;\n\nexport const SkipToContent = ({\n text = 'Til hovedinnhold',\n top = 0,\n id,\n className,\n htmlProps = {},\n ...rest\n}: SkipToContentProps) => {\n const { className: htmlPropsClassName, style, ...restHtmlProps } = htmlProps;\n\n return (\n <Contrast\n className={cn(className, htmlPropsClassName, styles.wrapper)}\n style={{ ...style, top }}\n >\n <Link {...getBaseHTMLProps(id, restHtmlProps, rest)}>{text}</Link>\n </Contrast>\n );\n};\n\nSkipToContent.displayName = 'SkipToContent';\n","import { type ComponentPropsWithRef, useState } from 'react';\n\nimport styles from './SplitButton.module.css';\nimport { type ExtractStrict } from '../../types';\nimport { cn } from '../../utils';\nimport { Button, type ButtonProps, type ButtonPurpose } from '../Button';\nimport { ChevronDownIcon, ChevronUpIcon } from '../Icon/icons';\nimport {\n OverflowMenu,\n OverflowMenuButton,\n type OverflowMenuButtonProps,\n OverflowMenuGroup,\n OverflowMenuList,\n} from '../OverflowMenu';\n\nexport type SplitButtonPurpose = ExtractStrict<\n ButtonPurpose,\n 'primary' | 'secondary'\n>;\n\nexport type SplitButtonPrimaryActionProps = Omit<\n ButtonProps,\n 'size' | 'purpose'\n>;\nexport type SplitButtonSecondaryActionsProps = Array<OverflowMenuButtonProps>;\n\nexport type SplitButtonProps = Pick<ButtonProps, 'size'> & {\n /**Props for primær handling. Samme props som for `<Button>` unntatt `size` og `purpose`. */\n primaryAction: SplitButtonPrimaryActionProps;\n /**Props for sekunære handlinger. */\n secondaryActions: SplitButtonSecondaryActionsProps;\n /**Formål med knappen.\n * @default \"primary\"\n */\n purpose?: SplitButtonPurpose;\n} & ComponentPropsWithRef<'div'>;\n\nexport const SplitButton = ({\n size,\n primaryAction,\n secondaryActions,\n purpose = 'primary',\n className,\n ...rest\n}: SplitButtonProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const buttonStyleProps: ButtonProps = {\n purpose,\n size,\n };\n\n return (\n <div className={cn(className, styles.container)} {...rest}>\n <Button\n {...buttonStyleProps}\n {...primaryAction}\n iconPosition=\"left\"\n className={styles.main}\n />\n <OverflowMenuGroup isOpen={isOpen} setIsOpen={setIsOpen}>\n <Button\n {...buttonStyleProps}\n icon={isOpen ? ChevronUpIcon : ChevronDownIcon}\n aria-label=\"Åpne liste med flere valg\"\n purpose={purpose}\n className={cn(\n styles.option,\n purpose === 'primary' && styles['option--primary'],\n )}\n />\n <OverflowMenu placement=\"bottom-end\">\n <OverflowMenuList>\n {secondaryActions.map((item, index) => (\n <OverflowMenuButton key={index} {...item}>\n {item.children}\n </OverflowMenuButton>\n ))}\n </OverflowMenuList>\n </OverflowMenu>\n </OverflowMenuGroup>\n </div>\n );\n};\n\nSplitButton.displayName = 'SplitButton';\n",".container {\n display: flex;\n}\n\n.main {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n margin-inline-end: -1px;\n}\n\n.main:focus {\n position: relative;\n z-index: 0;\n}\n\n.option {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.option:focus {\n position: relative;\n z-index: 0;\n}\n\n.option--primary,\n.option--primary:hover {\n border-left: 1px solid var(--dds-color-border-on-action);\n}\n","import {\n Children,\n Fragment,\n cloneElement,\n isValidElement,\n useEffect,\n useState,\n} from 'react';\n\nimport { useCollapsibleTableContext } from './Table.context';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport { DescriptionList, DescriptionListTerm } from '../../DescriptionList';\nimport { AnimatedChevronUpDown } from '../../helpers';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { VisuallyHidden } from '../../VisuallyHidden';\nimport { Table, type TableRowProps } from '../normal';\nimport { Cell, type TableCellProps } from '../normal/Cell';\nimport { useIsInTableHead } from '../normal/Head';\nimport { Row } from '../normal/Row';\nimport styles from '../normal/Table.module.css';\n\nexport const CollapsibleRow = ({\n type: _type,\n className,\n mode = 'normal',\n selected,\n hoverable,\n children,\n ref,\n ...rest\n}: TableRowProps) => {\n const isInHead = useIsInTableHead();\n const type = _type ?? (isInHead ? 'head' : 'body');\n const { isCollapsed, headerValues, definingColumnIndex } =\n useCollapsibleTableContext();\n const [childrenCollapsed, setChildrenCollapsed] = useState(true);\n\n useEffect(() => {\n !isCollapsed && setChildrenCollapsed(true);\n }, [isCollapsed]);\n\n const rowProps = (isOpenCollapsibleHeader?: boolean) => {\n return {\n mode,\n selected,\n hoverable,\n className: cn(\n className,\n isOpenCollapsibleHeader && styles['row--colapsible-header--open'],\n ),\n ...rest,\n };\n };\n\n const collapsedHeaderValues = headerValues.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const childrenArray = Children.toArray(children);\n const collapsedChildren = childrenArray.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const prefix = 'collapsibleRow';\n const collapsibleIds: Array<string> = [];\n\n const collapsedRenderedChildren =\n isCollapsed && collapsedHeaderValues.length > 0\n ? collapsedChildren.map(function (child, index) {\n const id = derivativeIdGenerator(prefix, index.toString());\n collapsibleIds.push(id);\n\n return (\n <Fragment key={`DL-${index}`}>\n <DescriptionListTerm>\n {collapsedHeaderValues[index].content}\n </DescriptionListTerm>\n {isValidElement<TableCellProps>(child) &&\n cloneElement(child, {\n collapsibleProps: { isCollapsibleChild: true },\n })}\n </Fragment>\n );\n })\n : null;\n\n const collapsedRows =\n collapsedRenderedChildren && collapsedRenderedChildren.length > 0 ? (\n <Row {...rowProps()}>\n <Cell colSpan={definingColumnIndex.length + 1}>\n <DescriptionList>{collapsedRenderedChildren}</DescriptionList>\n </Cell>\n </Row>\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 <Row ref={ref} {...rowProps()}>\n <>\n {definingColumnCells}\n <Table.Cell type=\"head\" layout=\"center\">\n Utvid\n <VisuallyHidden as=\"span\">raden</VisuallyHidden>\n </Table.Cell>\n </>\n </Row>\n );\n };\n\n const idList = spaceSeparatedIdListGenerator(collapsibleIds);\n\n const rowWithChevron = () => {\n if (type !== 'body' || !isCollapsed) return null;\n\n return (\n <Row ref={ref} {...rowProps(!childrenCollapsed && true)}>\n {definingColumnCells}\n <Table.Cell>\n <button\n onClick={() => setChildrenCollapsed(!childrenCollapsed)}\n aria-expanded={!childrenCollapsed}\n aria-controls={idList}\n className={cn(\n styles['collapse-button'],\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n focusable,\n )}\n >\n <AnimatedChevronUpDown\n isUp={childrenCollapsed ? false : true}\n height=\"8px\"\n width=\"12px\"\n />\n </button>\n </Table.Cell>\n </Row>\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 <Row ref={ref} {...rowProps()}>\n {children}\n </Row>\n );\n};\n\nCollapsibleRow.displayName = 'CollapsibleTable.Row';\n","import { createContext, useContext } from 'react';\n\nimport { type HeaderValues } from '../normal/Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: Array<number>;\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\n","import { type ComponentPropsWithRef } from 'react';\n\nexport type TableBodyProps = ComponentPropsWithRef<'tbody'>;\n\nexport const Body = (props: TableBodyProps) => <tbody {...props} />;\n\nBody.displayName = 'Table.Body';\n","import { type ComponentPropsWithRef, createContext, useContext } from 'react';\n\nexport type TableHeadProps = ComponentPropsWithRef<'thead'>;\n\nexport const Head = ({ children, ...rest }: TableHeadProps) => (\n <thead {...rest}>\n <HeadContext value={true}>{children}</HeadContext>\n </thead>\n);\n\nconst HeadContext = createContext(false);\n\nexport function useIsInTableHead(): boolean {\n const isInTableHead = useContext(HeadContext);\n return isInTableHead;\n}\n",".wrapper {\n width: 100%;\n}\n\n.wrapper--scrollable {\n overflow-x: auto;\n}\n\n.table {\n width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n}\n\n.table--with-dividers {\n .row--body {\n border-bottom: 1px solid var(--dds-color-border-default);\n }\n\n .row--colapsible-header--open {\n border-bottom: none;\n }\n}\n\n.table--sticky-header {\n tr th {\n position: sticky;\n top: 0;\n z-index: var(--dds-zindex-sticky);\n }\n}\n\n.table--small {\n font: var(--dds-font-body-small);\n letter-spacing: var(--dds-font-body-small-letter-spacing);\n td,\n th {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n }\n th {\n font: var(--dds-font-heading-xsmall);\n letter-spacing: var(--dds-font-heading-xsmall-letter-spacing);\n background-color: var(--dds-color-surface-default);\n }\n\n .row--body {\n &:nth-of-type(odd) {\n background-color: var(--dds-color-surface-subtle);\n }\n\n &:nth-of-type(even) {\n background-color: var(--dds-color-surface-default);\n }\n }\n}\n\n.table--medium {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n th {\n font: var(--dds-font-heading-small);\n }\n td,\n th {\n padding: var(--dds-spacing-x0-75);\n }\n}\n\n.table--large {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n th {\n font: var(--dds-font-heading-small);\n }\n td,\n th {\n padding: var(--dds-spacing-x1-5) var(--dds-spacing-x0-75);\n }\n}\n\n.row {\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\n.row--body {\n &:nth-of-type(even) {\n background-color: var(--dds-color-surface-subtle);\n }\n\n &:nth-of-type(odd) {\n background-color: var(--dds-color-surface-default);\n }\n &.row--sum,\n &.row--sum:nth-of-type(even),\n &.row--sum:nth-of-type(odd) {\n border-bottom: 1px solid var(--dds-color-border-default);\n border-top: 1px solid var(--dds-color-border-default);\n background: var(--dds-color-surface-default);\n }\n\n &.row--selected,\n &.row--selected:nth-of-type(even),\n &.row--selected:nth-of-type(odd) {\n background-color: var(--dds-color-surface-selected-default);\n }\n\n &.row--hoverable:hover {\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n\n.cell--head {\n background-color: var(--dds-color-brand-primary-subtle);\n}\n\n.cell--left {\n text-align: left;\n}\n\n.cell--right {\n text-align: right;\n}\n\n.cell--center {\n text-align: center;\n}\n\n.cell__inner {\n display: flex;\n align-items: center;\n gap: var(--dds-spacing-x0-75);\n}\n\n.sort-button {\n gap: var(--dds-spacing-x0-5);\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n display: flex;\n align-items: center;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: all 0.2s;\n }\n}\n\n.collapse-button {\n height: var(--dds-icon-size-medium);\n width: var(--dds-icon-size-medium);\n border-radius: var(--dds-border-radius-button);\n margin-left: auto;\n margin-right: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: all 0.2s;\n }\n\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { useIsInTableHead } from './Head';\nimport styles from './Table.module.css';\nimport { cn } from '../../../utils';\nimport { DescriptionListDesc } from '../../DescriptionList';\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport interface CollapsibleProps {\n isCollapsibleChild?: boolean;\n}\n\nexport type TableCellProps = {\n /**\n * Type celle. Returnerer enten `<td>` eller `<th>`.\n * @default \"data\" hvis den er brukt i `<Table.Body>` eller `<Table.Foot>`, 'head' hvis den er i `<Table.Head>`.\n */\n type?: TableCellType;\n /**Layout av innholdet i cellen; legger en flex `<div>` i cellen, unntatt 'none' som ikke legger inn noe. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen.\n * @default \"left\"\n */\n layout?: TableCellLayout;\n /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */\n collapsibleProps?: CollapsibleProps;\n} & (ComponentPropsWithRef<'td'> | ComponentPropsWithRef<'th'>);\n\nexport const Cell = ({\n children,\n type: _type,\n layout = 'left',\n collapsibleProps,\n className,\n ...rest\n}: TableCellProps) => {\n const isInHead = useIsInTableHead();\n const type = _type ?? (isInHead ? 'head' : 'data');\n\n const { isCollapsibleChild } = collapsibleProps ?? {};\n const isComplexLayout = layout === 'text and icon';\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : type === 'head' ? (\n <th\n {...rest}\n className={cn(\n className,\n !isComplexLayout && styles[`cell--${layout}`],\n styles['cell--head'],\n )}\n >\n {isComplexLayout ? (\n <div className={styles.cell__inner}>{children}</div>\n ) : (\n children\n )}\n </th>\n ) : (\n <td\n {...rest}\n className={cn(className, !isComplexLayout && styles[`cell--${layout}`])}\n >\n {isComplexLayout ? (\n <div className={styles.cell__inner}>{children}</div>\n ) : (\n children\n )}\n </td>\n );\n};\n\nCell.displayName = 'Table.Cell';\n","import { type ComponentPropsWithRef } from 'react';\n\nexport type TableFootProps = ComponentPropsWithRef<'tfoot'>;\n\nexport const Foot = (props: TableFootProps) => <tfoot {...props} />;\n\nFoot.displayName = 'Table.Foot';\n","import { useIsInTableHead } from './Head';\nimport styles from './Table.module.css';\nimport { type TableRowProps } from './Table.types';\nimport { cn } from '../../../utils';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\n\nexport const Row = ({\n type: _type,\n mode = 'normal',\n hoverable,\n selected,\n className,\n ...rest\n}: TableRowProps) => {\n const isInHeader = useIsInTableHead();\n const type = _type ?? (isInHeader ? 'head' : 'body');\n return (\n <tr\n className={cn(\n className,\n styles.row,\n type === 'body' && styles['row--body'],\n mode === 'sum' && styles['row--sum'],\n selected && styles['row--selected'],\n hoverable && styles['row--hoverable'],\n (type === 'head' || mode === 'sum') && typographyStyles.bold,\n focusable,\n )}\n {...rest}\n />\n );\n};\n\nRow.displayName = 'Table.Row';\n","import { type MouseEvent } from 'react';\n\nimport { Cell, type TableCellProps } from './Cell';\nimport styles from './Table.module.css';\nimport { cn } from '../../../utils';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../../Icon';\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n UnfoldMoreIcon,\n} from '../../Icon/icons';\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 = ({\n isSorted,\n sortOrder,\n onClick,\n children,\n ...rest\n}: TableSortCellProps) => (\n <Cell\n type=\"head\"\n aria-sort={isSorted && sortOrder ? sortOrder : undefined}\n {...rest}\n >\n <button\n onClick={onClick}\n aria-description=\"Aktiver for å endre sorteringsrekkefølge\"\n className={cn(\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n styles['sort-button'],\n focusable,\n )}\n >\n {children} {makeSortIcon(isSorted, sortOrder)}\n </button>\n </Cell>\n);\n\nSortCell.displayName = 'Table.SortCell';\n","import styles from './Table.module.css';\nimport { type TableProps } from './Table.types';\nimport { cn } from '../../../utils';\nimport { scrollbar } from '../../helpers/styling/utilStyles.module.css';\n\nexport const Table = ({\n size = 'medium',\n stickyHeader,\n withDividers,\n className,\n children,\n ...rest\n}: TableProps) => (\n <table\n {...rest}\n className={cn(\n className,\n styles.table,\n styles[`table--${size}`],\n withDividers && styles['table--with-dividers'],\n stickyHeader && styles['table--sticky-header'],\n scrollbar,\n )}\n >\n {children}\n </table>\n);\n\nTable.displayName = 'Table';\n","import {\n type HTMLAttributes,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './Table.module.css';\nimport { cn } from '../../../utils';\nimport { scrollbar } from '../../helpers/styling/utilStyles.module.css';\nimport { ThemeContext } from '../../ThemeProvider';\n\nexport type TableWrapperProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TableWrapper = ({ className, ...rest }: TableWrapperProps) => {\n const themeContext = useContext(ThemeContext);\n const container = themeContext?.el;\n const containerWidth = container ? container.clientWidth : 0;\n\n const [overflowX, setOverflowX] = useState(false);\n const [themeContainerWidth, setThemeContainerWidth] =\n useState(containerWidth);\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 }, [themeContainerWidth]);\n\n useEffect(() => {\n function handleResize() {\n setThemeContainerWidth(containerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n\n return (\n <div\n ref={wrapperRef}\n {...rest}\n className={cn(\n className,\n scrollbar,\n styles.wrapper,\n overflowX && styles['wrapper--scrollable'],\n )}\n />\n );\n};\n\nTableWrapper.displayName = 'Table.Wrapper';\n","import { Body, type TableBodyProps } from './Body';\nimport {\n Cell,\n type TableCellLayout,\n type TableCellProps,\n type TableCellType,\n} from './Cell';\nimport { Foot, type TableFootProps } from './Foot';\nimport { Head, type TableHeadProps } from './Head';\nimport { Row } from './Row';\nimport { SortCell, type SortOrder, type TableSortCellProps } from './SortCell';\nimport { Table as BaseTable } from './Table';\nimport {\n type TableProps,\n type TableRowProps,\n type TableRowType,\n type TableSize,\n} from './Table.types';\nimport { TableWrapper } from './TableWrapper';\n\ntype TableCompoundProps = typeof BaseTable & {\n Wrapper: typeof TableWrapper;\n Head: typeof Head;\n Body: typeof Body;\n Foot: typeof Foot;\n Row: typeof Row;\n Cell: typeof Cell;\n SortCell: typeof SortCell;\n};\n\nconst Table = BaseTable as TableCompoundProps;\n\nTable.Wrapper = TableWrapper;\nTable.Head = Head;\nTable.Body = Body;\nTable.Cell = Cell;\nTable.SortCell = SortCell;\nTable.Row = Row;\nTable.Foot = Foot;\n\nexport { Table };\n\nexport type {\n TableCellProps,\n TableSize,\n TableProps,\n TableRowProps,\n TableRowType,\n TableHeadProps,\n TableBodyProps,\n TableFootProps,\n TableSortCellProps,\n SortOrder,\n TableCellLayout,\n TableCellType,\n};\n\nexport { TableWrapper };\nexport { Head as TableHead };\nexport { Body as TableBody };\nexport { Cell as TableCell };\nexport { SortCell as TableSortCell };\nexport { Row as TableRow };\nexport { Foot as TableFoot };\n","import { type CollapsibleTableProps } from './CollapsibleTable.types';\nimport { CollapsibleTableContext } from './Table.context';\nimport { Table } from '../normal';\n\nexport const CollapsibleTable = ({\n isCollapsed,\n headerValues,\n definingColumnIndex = [0],\n ...rest\n}: CollapsibleTableProps) => {\n return (\n <CollapsibleTableContext\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <Table {...rest} />\n </CollapsibleTableContext>\n );\n};\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { CollapsibleRow } from './CollapsibleRow';\nimport { CollapsibleTable as BaseCollapsibleTable } from './CollapsibleTable';\nimport { type CollapsibleTableProps } from './CollapsibleTable.types';\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { CollapsibleTable, type CollapsibleTableProps };\nexport { CollapsibleRow as CollapsibleTableRow };\n","import type * as CSS from 'csstype';\nimport { type ComponentPropsWithRef, useRef } from 'react';\n\nimport { useTabsContext } from './Tabs.context';\nimport styles from './Tabs.module.css';\nimport { useSetTabWidth } from './TabWidthContext';\nimport { useCombinedRef } from '../../hooks';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport { Icon } from '../Icon';\nimport { PlusIcon } from '../Icon/icons';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type AddTabButtonProps = {\n /** Bredden. Her er det støtte for de samme enhetene som du kan bruke i `grid-template-columns`.\n * @default \"1fr\"\n */\n width?: CSS.Properties['width'];\n index?: number;\n} & ComponentPropsWithRef<'button'>;\n\nexport const AddTabButton = ({\n ref,\n children,\n index,\n className,\n width = '1fr',\n ...rest\n}: AddTabButtonProps) => {\n // Tell parent what my width should be\n // This is used for the grid layout\n useSetTabWidth(index!, width);\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, buttonRef);\n const { tabContentDirection, size } = useTabsContext();\n\n return (\n <button\n {...rest}\n ref={combinedRef}\n className={cn(\n className,\n styles.tab,\n styles[`tab--${tabContentDirection}`],\n typographyStyles[`body-${size}`],\n focusStyles['focusable--inset'],\n )}\n >\n <Icon icon={PlusIcon} iconSize=\"inherit\" />\n <span>{children}</span>\n </button>\n );\n};\n\nAddTabButton.displayName = 'AddTabButton';\n","import { type RefObject, createContext, useContext } from 'react';\n\nimport { type AddTabButtonProps } from './AddTabButton';\nimport { type TabSize } from './Tabs';\nimport { type Direction } from '../../types';\n\ninterface Tabs {\n activeTab: number;\n tabsId: string;\n size: TabSize;\n handleTabChange: (index: number) => void;\n tabListRef: RefObject<HTMLDivElement | null> | null;\n tabPanelsRef: RefObject<HTMLDivElement | null> | null;\n hasTabFocus: boolean;\n setHasTabFocus: (hasFocus: boolean) => void;\n tabContentDirection: Direction;\n addTabButtonProps?: Omit<AddTabButtonProps, 'index'>;\n}\n\nexport const TabsContext = createContext<Tabs>({\n activeTab: 0,\n tabsId: '',\n size: 'small',\n handleTabChange: () => null,\n tabListRef: null,\n tabPanelsRef: null,\n hasTabFocus: false,\n setHasTabFocus: () => null,\n tabContentDirection: 'row',\n addTabButtonProps: undefined,\n});\nexport const useTabsContext = () => useContext(TabsContext);\n",".tabs {\n width: var(--dds-tabs-width);\n}\n\n.tab-row {\n display: grid;\n overflow-x: auto;\n scroll-snap-type: x mandatory;\n border-bottom: 1px solid var(--dds-color-border-subtle);\n\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n transition: var(--dds-focus-transition);\n }\n\n &:focus-visible button {\n outline: none;\n }\n}\n\n.tab-row--standard-widths {\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n}\n\n.tab-row--custom-widths {\n grid-template-columns: var(--dds-tab-widths);\n}\n\n.tab {\n border: none;\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-bottom: 2px solid transparent;\n color: var(--dds-color-text-medium);\n background: var(--dds-color-surface-default);\n border-top-left-radius: var(--dds-border-radius-button);\n border-top-right-radius: var(--dds-border-radius-button);\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 background-color 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover {\n color: var(--dds-color-text-default);\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n\n.tab--medium--row {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1)\n var(--dds-spacing-x0-5);\n gap: var(--dds-spacing-x0-5);\n}\n\n.tab--small--row {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-75);\n gap: var(--dds-spacing-x0-125);\n}\n\n.tab--medium--column {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x1);\n gap: var(--dds-spacing-x0-25);\n}\n\n.tab--small--column {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-75);\n}\n\n.tab--row {\n flex-direction: row;\n}\n\n.tab--column {\n flex-direction: column;\n}\n\n.tab--active {\n color: var(--dds-color-text-default);\n border-color: var(--dds-color-surface-action-selected);\n box-shadow: inset 0px -2px 0px 0px var(--dds-color-surface-action-selected);\n}\n","import type * as CSS from 'csstype';\nimport {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n createContext,\n useContext,\n useLayoutEffect,\n} from 'react';\n\ntype Width = CSS.Properties['width'];\n\ninterface TabContextState {\n updateWidth: (index: number, width: Width) => void;\n removeTab: (index: number) => void;\n}\n\nconst TabContext = createContext<TabContextState | null>(null);\n\ninterface TabWidthContextProviderProps {\n children: ReactNode;\n onChangeWidths: Dispatch<SetStateAction<Array<Width>>>;\n}\n\nexport function TabWidthContextProvider({\n children,\n onChangeWidths,\n}: TabWidthContextProviderProps) {\n return (\n <TabContext\n value={{\n updateWidth: (index, newWidth) => {\n onChangeWidths(prev => {\n const newValue = [...prev];\n newValue[index] = newWidth;\n return newValue;\n });\n },\n removeTab: index => {\n onChangeWidths(prev => {\n const newValue = [...prev];\n newValue.splice(index, 1);\n return newValue;\n });\n },\n }}\n >\n {children}\n </TabContext>\n );\n}\n\nexport function useSetTabWidth(index: number, width: Width) {\n const context = useContext(TabContext);\n\n useLayoutEffect(() => {\n context?.updateWidth(index, width);\n return () => context?.removeTab(index);\n }, [index, width]);\n}\n","import { type HTMLAttributes, useEffect, useId, useRef, useState } from 'react';\n\nimport { type AddTabButtonProps } from './AddTabButton';\nimport { TabsContext } from './Tabs.context';\nimport styles from './Tabs.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n type Size,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Box, type ResponsiveProps } from '../layout';\n\nexport type TabSize = Extract<Size, 'small' | 'medium'>;\n\nexport type TabsProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelse på hver `<Tab>`. */\n size?: TabSize;\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 * @default \"row\"\n */\n tabContentDirection?: Direction;\n /** Props for \"Legg til fane\"-knapp. Støtter native HTML attributter og `width`. */\n addTabButtonProps?: Omit<AddTabButtonProps, 'index'>;\n } & Pick<ResponsiveProps, 'width'>,\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n>;\n\nexport const Tabs = ({\n id,\n activeTab,\n onChange,\n tabContentDirection = 'row',\n size = 'small',\n addTabButtonProps,\n width,\n children,\n className,\n htmlProps,\n ...rest\n}: TabsProps) => {\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 return (\n <TabsContext\n value={{\n tabsId: uniqueId,\n activeTab: thisActiveTab,\n size,\n handleTabChange,\n tabListRef,\n tabPanelsRef,\n hasTabFocus,\n setHasTabFocus,\n tabContentDirection,\n addTabButtonProps,\n }}\n >\n <Box\n {...getBaseHTMLProps(\n uniqueId,\n cn(className, styles.tabs),\n htmlProps,\n rest,\n )}\n width={width}\n >\n {children}\n </Box>\n </TabsContext>\n );\n};\n\nTabs.displayName = 'Tabs';\n","import type * as CSS from 'csstype';\nimport {\n type ButtonHTMLAttributes,\n type Dispatch,\n type KeyboardEvent,\n type MouseEvent,\n type SetStateAction,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\n\nimport { useTabsContext } from './Tabs.context';\nimport styles from './Tabs.module.css';\nimport { useSetTabWidth } from './TabWidthContext';\nimport { useCombinedRef } from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\ntype PickedAttributes = Pick<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'onClick' | 'onKeyDown'\n>;\n\nexport type TabProps = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Spesifiserer om fanen er aktiv.\n * @default false\n */\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 /** Bredden til `<Tab>`. Her er det støtte for de samme enhetene som du kan bruke i `grid-template-columns`.\n * @default \"1fr\"\n */\n width?: CSS.Properties['width'];\n } & PickedAttributes,\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof PickedAttributes>\n>;\n\nexport const Tab = ({\n active = false,\n icon,\n children,\n focus,\n setFocus,\n index,\n onClick,\n onKeyDown,\n id,\n className,\n htmlProps = {},\n width = '1fr',\n ref,\n ...rest\n}: TabProps) => {\n // Tell parent what my width should be\n // This is used for the grid layout\n useSetTabWidth(index!, width);\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n const { tabContentDirection, size } = useTabsContext();\n\n const { type = 'button', ...restHtmlProps } = htmlProps;\n const fixedHtmlProps = { type, ...restHtmlProps };\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 = (e: MouseEvent<HTMLButtonElement>) => {\n handleSelect();\n onClick?.(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown?.(e);\n };\n\n return (\n <button\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.tab,\n styles[`tab--${size}--${tabContentDirection}`],\n active && styles['tab--active'],\n styles[`tab--${tabContentDirection}`],\n typographyStyles[`body-${size}`],\n focusStyles['focusable--inset'],\n ),\n fixedHtmlProps,\n rest,\n )}\n ref={combinedRef}\n aria-selected={active}\n role=\"tab\"\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 type * as CSS from 'csstype';\nimport {\n Children,\n type ComponentPropsWithRef,\n type FocusEvent,\n cloneElement,\n isValidElement,\n useState,\n} from 'react';\n\nimport { AddTabButton } from './AddTabButton';\nimport { type TabProps } from './Tab';\nimport { useTabsContext } from './Tabs.context';\nimport styles from './Tabs.module.css';\nimport { TabWidthContextProvider } from './TabWidthContext';\nimport { useCombinedRef, useRoveFocus } from '../../hooks';\nimport { cn, combineHandlers } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { scrollbar } from '../helpers/styling/utilStyles.module.css';\n\nexport type TabListProps = ComponentPropsWithRef<'div'>;\n\nexport const TabList = ({\n children,\n id,\n style,\n onFocus,\n ref,\n ...rest\n}: TabListProps) => {\n const {\n activeTab,\n tabsId,\n handleTabChange,\n tabListRef,\n hasTabFocus,\n setHasTabFocus,\n addTabButtonProps,\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 hasButton = addTabButtonProps ? true : false;\n\n const tabListChildren = Children\n ? Children.map(children, (child, index) => {\n const handleThisTabChange = () => {\n handleTabChange(index);\n };\n return (\n isValidElement<TabProps>(child) &&\n cloneElement(child, {\n id: `${tabsId}-tab-${index}`,\n htmlProps: {\n ...child.props.htmlProps,\n 'aria-controls': `${tabsId}-panel-${index}`,\n },\n active: activeTab === index,\n index,\n focus: focus === index && hasTabFocus,\n setFocus,\n onClick: combineHandlers(handleThisTabChange, child.props.onClick),\n })\n );\n })\n : [];\n\n const [widths, setWidths] = useState<Array<CSS.Properties['width']>>([]);\n\n const handleOnFocus = (event: FocusEvent<HTMLDivElement, Element>) => {\n setHasTabFocus(true);\n onFocus && onFocus(event);\n };\n\n const handleOnBlur = (event: FocusEvent<HTMLDivElement, Element>) => {\n // Fjern tabIndex fra forrige tab med focus når focus flytter seg til `<TabList>`\n if (tabListRef?.current === event.relatedTarget) {\n setFocus(-1);\n }\n\n if (!tabListRef?.current?.contains(event.relatedTarget)) {\n setHasTabFocus(false);\n }\n };\n\n const customWidths: CSS.Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-tab-widths' as any]: widths.join(' '),\n };\n\n return (\n <TabWidthContextProvider onChangeWidths={setWidths}>\n <div\n {...rest}\n ref={combinedRef}\n role=\"tablist\"\n id={uniqueId}\n tabIndex={0}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n className={cn(\n styles['tab-row'],\n !widths && styles['tab-row--standard-widths'],\n styles['tab-row--custom-widths'],\n focusable,\n scrollbar,\n )}\n style={{ ...style, ...customWidths }}\n >\n {tabListChildren}\n {hasButton && (\n <AddTabButton\n index={tabListChildren ? tabListChildren.length : 0}\n {...addTabButtonProps}\n />\n )}\n </div>\n </TabWidthContextProvider>\n );\n};\n\nTabList.displayName = 'TabList';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { Box } from '../layout';\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 = ({\n active = false,\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: TabPanelProps) => (\n <Box\n padding=\"x0.25\"\n {...getBaseHTMLProps(id, cn(className, focusable), htmlProps, rest)}\n tabIndex={0}\n role=\"tabpanel\"\n hidden={!active}\n >\n {children}\n </Box>\n);\n\nTabPanel.displayName = 'TabPanel';\n","import {\n Children,\n type ComponentPropsWithRef,\n cloneElement,\n isValidElement,\n} from 'react';\n\nimport { type TabPanelProps } from './TabPanel';\nimport { useTabsContext } from './Tabs.context';\nimport { useCombinedRef } from '../../hooks';\n\nexport type TabPanelsProps = ComponentPropsWithRef<'div'>;\n\nexport const TabPanels = ({ children, ref, ...rest }: TabPanelsProps) => {\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<TabPanelProps>(child) &&\n cloneElement(child, {\n id: `${tabsId}-panel-${index}`,\n active,\n htmlProps: {\n 'aria-labelledby': `${tabsId}-tab-${index}`,\n 'aria-expanded': active,\n },\n })\n );\n });\n\n return (\n <div ref={combinedRef} {...rest}>\n {panelChildren}\n </div>\n );\n};\n\nTabPanels.displayName = 'TabPanels';\n",".container {\n border: 1px solid;\n display: inline-flex;\n align-items: center;\n border-radius: var(--dds-border-radius-chip);\n padding: var(--dds-spacing-x0-125) var(--dds-spacing-x0-5);\n}\n\n.container--with-icon {\n padding: var(--dds-spacing-x0-125) var(--dds-spacing-x0-5)\n var(--dds-spacing-x0-125) var(--dds-spacing-x0-25);\n gap: var(--dds-spacing-x0-25);\n}\n\n.container--default--default {\n background-color: var(--dds-color-surface-subtle);\n border-color: var(--dds-color-border-subtle);\n}\n\n.container--default--strong {\n background-color: var(--dds-color-surface-inverse-default);\n border-color: var(--dds-color-surface-inverse-default);\n color: var(--dds-color-text-on-inverse);\n}\n\n.container--success--default {\n background-color: var(--dds-color-surface-success-default);\n border-color: var(--dds-color-border-success);\n\n svg {\n color: var(--dds-color-icon-on-success-default);\n }\n}\n\n.container--success--strong {\n background-color: var(--dds-color-surface-success-strong);\n border-color: var(--dds-color-surface-success-strong);\n\n svg {\n color: var(--dds-color-icon-on-success-strong);\n }\n}\n\n.container--danger--default {\n background-color: var(--dds-color-surface-danger-default);\n border-color: var(--dds-color-border-danger);\n\n svg {\n color: var(--dds-color-icon-on-danger-default);\n }\n}\n\n.container--danger--strong {\n background-color: var(--dds-color-surface-danger-strong);\n border-color: var(--dds-color-surface-danger-strong);\n\n svg {\n color: var(--dds-color-icon-on-danger-strong);\n }\n}\n\n.container--warning--default {\n background-color: var(--dds-color-surface-warning-default);\n border-color: var(--dds-color-border-warning);\n\n svg {\n color: var(--dds-color-icon-on-warning-default);\n }\n}\n\n.container--warning--strong {\n background-color: var(--dds-color-surface-warning-strong);\n border-color: var(--dds-color-surface-warning-strong);\n\n svg {\n color: var(--dds-color-icon-on-warning-strong);\n }\n}\n\n.container--info--default {\n background-color: var(--dds-color-surface-info-default);\n border-color: var(--dds-color-border-info);\n\n svg {\n color: var(--dds-color-icon-on-info-default);\n }\n}\n\n.container--info--strong {\n background-color: var(--dds-color-surface-info-strong);\n border-color: var(--dds-color-surface-info-strong);\n\n svg {\n color: var(--dds-color-icon-on-info-strong);\n }\n}\n","import { type ReactNode } from 'react';\n\nimport styles from './Tag.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Icon, type SvgIcon } from '../Icon';\nimport {\n CheckCircledIcon,\n ErrorIcon,\n InfoIcon,\n WarningIcon,\n} from '../Icon/icons';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n} from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nconst icons: Record<TagPurpose, SvgIcon | undefined> = {\n info: InfoIcon,\n danger: ErrorIcon,\n warning: WarningIcon,\n success: CheckCircledIcon,\n default: undefined,\n};\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\nexport type TagAppearance = 'default' | 'strong';\n\nexport type TagProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**\n * Innholdet til `<Tag>.` Kan brukes istedenfor `text`.\n */\n children?: ReactNode;\n /**\n * Samme oppførsel som `children`. Er `children` brukt vil denne ignoreres. Tekst som vises i `<Tag>`.\n */\n text?: string;\n /**\n * Formål med status eller kategorisering. Påvirker styling.\n * @default \"default\"\n */\n purpose?: TagPurpose;\n /**\n * Det visuelle uttrykket til komponenten.\n * @default \"default\"\n */\n appearance?: TagAppearance;\n /**\n * Om `<Tag>` skal ha et ikon til venstre for teksten. Tags med `purpose=\"default\"` har aldri ikon.\n * @default false\n */\n withIcon?: boolean;\n }\n>;\n\nexport const Tag = ({\n text,\n purpose = 'default',\n appearance = 'default',\n id,\n className,\n children,\n htmlProps,\n withIcon,\n ...rest\n}: TagProps) => {\n const icon = icons[purpose];\n\n return (\n <TextOverflowEllipsisWrapper\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n typographyStyles['body-small'],\n styles.container,\n withIcon && icon && styles['container--with-icon'],\n styles[`container--${purpose}--${appearance}`],\n ),\n htmlProps,\n rest,\n )}\n >\n {withIcon && icon && <Icon icon={icon} iconSize=\"small\" />}\n <TextOverflowEllipsisInner>{children ?? text}</TextOverflowEllipsisInner>\n </TextOverflowEllipsisWrapper>\n );\n};\n\nTag.displayName = 'Tag';\n","import { type Property } from 'csstype';\nimport React, { useId, useLayoutEffect, useRef, useState } from 'react';\n\nimport styles from './TextInput.module.css';\nimport { type TextInputProps } from './TextInput.types';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport {\n StatefulInput,\n getDefaultText,\n getInputWidth,\n renderCharCounter,\n} from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { Icon } from '../Icon';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport { Label } from '../Typography';\n\nexport const TextInput = ({\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 ref,\n ...rest\n}: TextInputProps) => {\n const [text, setText] = useState<string>(getDefaultText(value, defaultValue));\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]);\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;\n const hasBottomContainer = 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 inputWidth = getInputWidth(\n width,\n componentSize === 'xsmall' && 'var(--dds-input-default-width-xsmall)',\n );\n\n const generalInputProps = {\n ref,\n type,\n onChange: onChangeHandler,\n componentSize,\n id: uniqueId,\n hasErrorMessage,\n required,\n disabled,\n readOnly,\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 // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n const preffixPaddingInlineStart: Property.PaddingInlineStart | undefined =\n prefixLength\n ? `calc(var(--dds-spacing-x1) + ${prefixLength}px)`\n : undefined;\n\n const suffixPaddingInlineEnd: Property.PaddingInlineEnd | undefined =\n suffixLength\n ? `calc(var(--dds-spacing-x1) + ${suffixLength}px)`\n : undefined;\n\n let extendedInput = null;\n\n if (hasIcon) {\n extendedInput = (\n <Box className={inputStyles['input-group']} width={inputWidth}>\n {\n <Icon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n className={cn(\n inputStyles['input-group__absolute-element'],\n styles[`icon--${componentSize}`],\n )}\n />\n }\n <StatefulInput\n className={cn(\n styles.input,\n styles[`with-icon--${componentSize}`],\n styles['input--extended'],\n )}\n {...generalInputProps}\n />\n </Box>\n );\n } else if (hasAffix) {\n extendedInput = (\n <Box\n position=\"relative\"\n display=\"flex\"\n alignItems=\"center\"\n width={inputWidth}\n >\n {prefix && (\n <span\n ref={prefixRef}\n aria-hidden\n className={cn(\n styles.affix,\n styles.prefix,\n disabled && styles['affix--disabled'],\n )}\n >\n {prefix}\n </span>\n )}\n <StatefulInput\n style={{\n paddingInlineStart: preffixPaddingInlineStart,\n paddingInlineEnd: suffixPaddingInlineEnd,\n }}\n className={styles['input--extended']}\n {...generalInputProps}\n />\n {suffix && (\n <span\n ref={suffixRef}\n aria-hidden\n className={cn(\n styles.affix,\n styles.suffix,\n disabled && styles['affix--disabled'],\n )}\n >\n {suffix}\n </span>\n )}\n </Box>\n );\n }\n\n return (\n <div\n className={cn(\n className,\n inputStyles.container,\n styles.container,\n readOnly && styles['container--readonly'],\n disabled && styles['container--disabled'],\n )}\n style={style}\n >\n {hasLabel && (\n <Box\n as={Label}\n display=\"block\"\n htmlFor={uniqueId}\n showRequiredStyling={showRequiredStyling}\n readOnly={readOnly}\n >\n {label}\n </Box>\n )}\n {extendedInput ? (\n extendedInput\n ) : (\n <Box as={StatefulInput} width={inputWidth} {...generalInputProps} />\n )}\n {hasBottomContainer && (\n <Box\n display=\"flex\"\n justifyContent={\n withCharacterCounter\n ? hasMessage\n ? 'space-between'\n : 'flex-end'\n : undefined\n }\n gap=\"x0.5\"\n width={withCharacterCounter ? inputWidth : undefined}\n >\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {renderCharCounter(\n characterCounterId,\n withCharacterCounter,\n text.length,\n maxLength,\n )}\n </Box>\n )}\n </div>\n );\n};\n\nTextInput.displayName = 'TextInput';\n",".container {\n color: var(--dds-color-text-default);\n}\n\n.container--readonly {\n color: var(--dds-color-text-medium);\n}\n\n.container--disabled {\n color: var(--dds-color-text-subtle);\n}\n\n.input-width {\n width: var(--dds-textinput-width);\n}\n\n.input {\n &.with-icon--medium {\n padding-left: calc(\n var(--dds-spacing-x0-75) + var(--dds-icon-size-medium) +\n var(--dds-spacing-x0-5)\n );\n }\n &.with-icon--small {\n padding-left: calc(\n var(--dds-spacing-x0-75) + var(--dds-icon-size-small) +\n var(--dds-spacing-x0-5)\n );\n }\n &.with-icon--xsmall {\n padding-left: calc(\n var(--dds-spacing-x0-5) + var(--dds-icon-size-medium) +\n var(--dds-spacing-x0-25)\n );\n }\n}\n\n.input--extended {\n width: 100%;\n}\n\n.icon--medium {\n left: var(--dds-spacing-x0-75);\n}\n\n.icon--small {\n left: var(--dds-spacing-x0-75);\n}\n\n.icon--xsmall {\n left: var(--dds-spacing-x0-5);\n}\n\n.affix {\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: var(--dds-zindex-absolute-element);\n}\n\n.prefix {\n left: 0;\n margin-left: var(--dds-spacing-x0-5);\n padding-right: var(--dds-spacing-x0-5);\n border-right: 1px solid var(--dds-color-border-default);\n}\n\n.suffix {\n right: 0;\n margin-right: var(--dds-spacing-x0-5);\n padding-left: var(--dds-spacing-x0-5);\n border-left: 1px solid var(--dds-color-border-default);\n}\n\n.affix--disabled {\n border-color: var(--dds-color-border-subtle);\n}\n","import { type InputHTMLAttributes, type ReactNode, useId } from 'react';\n\nimport styles from './Toggle.module.css';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport {\n type BaseComponentProps,\n type Size,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn, readOnlyClickHandler, readOnlyKeyDownHandler } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { CheckIcon, LockIcon } from '../Icon/icons';\nimport { Spinner } from '../Spinner';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\nexport type ToggleSize = Extract<Size, 'medium' | 'large'>;\n\nexport type ToggleProps = BaseComponentProps<\n HTMLElement,\n {\n /**Ledetekst; tillater bruk av f.eks. `<VisuallyHidden>` for usynlig tekst. */\n children?: ReactNode;\n /**\n * Callback som blir kalt når brukeren endrer toggle-verdien.\n */\n onChange?: (checked: boolean) => void;\n /**\n * Om toggle er av eller på.\n */\n checked?: boolean;\n /**\n * Den initielle verdien når komponenten brukes uncontrolled.\n * @default false\n */\n defaultChecked?: boolean;\n /**Spesifiserer om input er `disabled`. */\n disabled?: boolean;\n /**\n * Inputelementet blir `readonly` - den kan ikke interageres med. Brukes bl.a. til å presentere input brukeren har fylt ut andre steder.\n */\n readOnly?: boolean;\n /**\n * Indikerer at verdien prosesseres; viser loading-tilstand og setter `aria-disabled`.\n */\n isLoading?: boolean;\n /**\n * Størrelse.\n * @default \"medium\"\n */\n size?: ToggleSize;\n },\n Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'onChange' | 'checked' | 'defaultChecked'\n >\n>;\n\nexport const Toggle = ({\n id,\n children,\n size = 'medium',\n checked: checkedProp,\n defaultChecked,\n onChange,\n disabled,\n readOnly,\n isLoading,\n className,\n htmlProps = {},\n ...rest\n}: ToggleProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggle`;\n const iconSize = size === 'large' ? 'medium' : 'small';\n\n const [checked, setChecked] = useControllableState({\n value: checkedProp,\n defaultValue: defaultChecked ?? false,\n onChange,\n });\n\n return (\n <label\n htmlFor={uniqueId}\n className={cn(\n styles.label,\n styles[size],\n isLoading && styles['label--is-loading'],\n disabled && styles['label--disabled'],\n readOnly && styles['label--read-only'],\n )}\n >\n <input\n {...getBaseHTMLProps(\n uniqueId,\n cn(\n className,\n focusStyles['focusable-sibling'],\n utilStyles['hide-input'],\n ),\n htmlProps,\n rest,\n )}\n type=\"checkbox\"\n checked={checked}\n onChange={e => setChecked(e.target.checked)}\n disabled={disabled}\n aria-disabled={isLoading}\n aria-readonly={readOnly}\n onKeyDown={readOnlyKeyDownHandler(\n 'selectionControl',\n readOnly || isLoading,\n htmlProps.onKeyDown,\n )}\n onClick={readOnlyClickHandler(readOnly || isLoading, htmlProps.onClick)}\n />\n <span className={cn(styles.track, focusStyles['focus-styled-sibling'])}>\n <span className={styles.thumb}>\n {isLoading ? (\n <Spinner size={`var(--dds-icon-size-${size})`} />\n ) : (\n <Icon\n className={styles.checkmark}\n icon={CheckIcon}\n iconSize={iconSize}\n />\n )}\n </span>\n </span>\n <span className={cn(readOnly && styles['labeltext--readonly'])}>\n {readOnly && (\n <Icon\n icon={LockIcon}\n iconSize=\"small\"\n className={styles['icon--read-only']}\n />\n )}\n {children}{' '}\n {isLoading && (\n <VisuallyHidden as=\"span\">Innlastning pågår</VisuallyHidden>\n )}\n </span>\n </label>\n );\n};\n\nToggle.displayName = 'Toggle';\n",".label {\n display: flex;\n align-items: center;\n width: -moz-fit-content;\n width: fit-content;\n gap: var(--dds-spacing-x0-75);\n}\n\n.track {\n display: flex;\n align-items: center;\n background-color: var(--dds-color-surface-medium);\n border-radius: var(--dds-border-radius-rounded);\n border: 1px solid var(--dds-color-border-default);\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border 0.2s,\n var(--dds-focus-transition);\n }\n}\n\n.thumb {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dds-border-radius-rounded);\n background-color: var(--dds-color-surface-field-default);\n border: 1px solid var(--dds-color-border-default);\n @media (prefers-reduced-motion: no-preference) {\n transition:\n transform 0.2s,\n border 0.2s,\n width 0.2s;\n }\n}\n\n.thumb .checkmark {\n opacity: 0;\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n}\n\n.labeltext--readonly {\n display: flex;\n .icon--read-only {\n align-self: center;\n flex-shrink: 0;\n margin-inline-end: var(--dds-spacing-x0-125);\n }\n}\n\n.medium {\n .track {\n height: var(--dds-spacing-x1-5);\n width: 2.8125rem;\n }\n\n .thumb {\n margin-inline-start: var(--dds-spacing-x0-125);\n height: 1.25rem;\n width: 1.25rem;\n }\n\n input:checked ~ .track > .thumb {\n transform: translateX(1.25rem);\n }\n\n input:checked:enabled:active:not([aria-disabled]):not([aria-readonly])\n ~ .track\n > .thumb {\n transform: translateX(var(--dds-spacing-x1));\n }\n\n input:enabled:active:not([aria-disabled]):not([aria-readonly])\n ~ .track\n > .thumb {\n width: 1.5rem;\n }\n}\n\n.large {\n .track {\n height: 2.125rem;\n width: 3.25rem;\n }\n\n .thumb {\n margin-inline-start: var(--dds-spacing-x0-25);\n height: 1.75rem;\n width: 1.75rem;\n }\n\n input:checked ~ .track > .thumb {\n transform: translateX(var(--dds-spacing-x1));\n }\n\n input:checked:enabled:active:not([aria-disabled]):not([aria-readonly])\n ~ .track\n > .thumb {\n transform: translateX(var(--dds-spacing-x0-75));\n }\n\n input:enabled:active:not([aria-disabled]):not([aria-readonly])\n ~ .track\n > .thumb {\n width: var(--dds-spacing-x2);\n }\n}\n\n.label,\n.label--is-loading {\n input:checked:enabled:not([aria-readonly]) ~ .track {\n background-color: var(--dds-color-surface-action-selected);\n border-color: var(--dds-color-border-action-default);\n\n & > .thumb {\n border-color: var(--dds-color-border-action-default);\n .checkmark {\n color: var(--dds-color-icon-action-resting);\n opacity: 1;\n }\n }\n }\n}\n\n.label {\n cursor: pointer;\n\n &:hover\n input:enabled:checked:not([aria-disabled]):not([aria-readonly])\n ~ .track {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-border-action-hover);\n\n .thumb {\n border-color: var(--dds-color-border-action-hover);\n }\n }\n &:hover input:enabled:not([aria-disabled]):not([aria-readonly]) ~ .track {\n background-color: var(--dds-color-surface-hover-default);\n border-color: var(--dds-color-border-action-hover);\n\n .thumb {\n border-color: var(--dds-color-border-action-hover);\n\n .checkmark {\n color: var(--dds-color-icon-action-hover);\n }\n }\n }\n}\n\n.label--disabled {\n cursor: not-allowed;\n color: var(--dds-color-text-subtle);\n\n input:disabled ~ .track {\n background-color: var(--dds-color-surface-field-disabled);\n }\n\n input:checked:disabled ~ .track {\n background-color: var(--dds-color-surface-action-selected-disabled);\n border-color: var(--dds-color-surface-action-selected-disabled);\n }\n\n input:checked:disabled ~ .track > .thumb {\n border-color: var(--dds-color-surface-action-selected-disabled);\n\n .checkmark {\n color: var(--dds-color-icon-subtle);\n opacity: 1;\n }\n }\n}\n\n.label--read-only {\n cursor: default;\n color: var(--dds-color-text-medium);\n\n input ~ .track {\n background-color: var(--dds-color-surface-default);\n }\n\n input:checked ~ .track {\n background-color: var(--dds-color-surface-inverse-default);\n border-color: var(--dds-color-surface-inverse-default);\n }\n\n input:checked ~ .track > .thumb {\n border-color: var(--dds-color-surface-inverse-default);\n .checkmark {\n color: var(--dds-color-icon-medium);\n opacity: 1;\n }\n }\n}\n\n.label--is-loading {\n cursor: not-allowed;\n}\n","import { type ChangeEvent, useId, useState } from 'react';\n\nimport { ToggleBarContext } from './ToggleBar.context';\nimport styles from './ToggleBar.module.css';\nimport { type ToggleBarProps, type ToggleBarValue } from './ToggleBar.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { combineHandlers } from '../../utils';\nimport { VStack } from '../layout';\nimport { Typography } from '../Typography';\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\n value={{\n size: size,\n onChange: handleChange,\n name: name,\n value: groupValue,\n }}\n >\n <VStack\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n width={width}\n gap=\"x0.125\"\n role=\"radiogroup\"\n aria-labelledby={labelId ?? htmlProps?.['aria-labelledby']}\n >\n {label && (\n <Typography id={labelId} as=\"span\" typographyType=\"labelMedium\">\n {label}\n </Typography>\n )}\n <div className={styles.bar}>{children}</div>\n </VStack>\n </ToggleBarContext>\n );\n};\n\nToggleBar.displayName = 'ToggleBar';\n","import { type ChangeEvent, createContext, useContext } from 'react';\n\nimport { type ToggleBarSize, type ToggleBarValue } from './ToggleBar.types';\n\nexport interface ToggleBarContextType {\n size: ToggleBarSize;\n name?: string;\n value?: ToggleBarValue;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const ToggleBarContext = createContext<ToggleBarContextType>({\n size: 'medium',\n});\n\nexport const useToggleBarContext = () => useContext(ToggleBarContext);\n",".bar {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n}\n\n.content {\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 background-color: var(--dds-color-surface-default);\n border-right: 1px solid var(--dds-color-border-default);\n border-top: 1px solid var(--dds-color-border-default);\n border-bottom: 1px solid var(--dds-color-border-default);\n border-color: var(--dds-color-border-default);\n\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 var(--dds-focus-transition);\n }\n}\n\n.content--large--just-icon {\n padding: var(--dds-spacing-x1);\n\n svg {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.content--large--with-text {\n padding: var(--dds-spacing-x1) var(--dds-spacing-x2);\n gap: var(--dds-spacing-x0-5);\n}\n\n.content--medium--just-icon {\n padding: var(--dds-spacing-x0-75);\n\n svg {\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.content--medium--with-text {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1-5);\n gap: var(--dds-spacing-x0-75);\n}\n\n.content--small--just-icon {\n padding: var(--dds-spacing-x0-5);\n\n svg {\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.content--small--with-text {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x1);\n gap: var(--dds-spacing-x0-5);\n}\n\n.content--xsmall--just-icon {\n padding: var(--dds-spacing-x0-25);\n\n svg {\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.content--xsmall--with-text {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-75);\n gap: var(--dds-spacing-x0-5);\n}\n\n.label {\n &:hover .content {\n background-color: var(--dds-color-surface-hover-default);\n }\n\n &:first-child .content {\n border-left: 1px solid var(--dds-color-border-default);\n border-top-left-radius: var(--dds-border-radius-button);\n border-bottom-left-radius: var(--dds-border-radius-button);\n }\n &:last-child .content {\n border-top-right-radius: var(--dds-border-radius-button);\n border-bottom-right-radius: var(--dds-border-radius-button);\n }\n\n input:checked + .content {\n color: var(--dds-color-text-on-action);\n border-color: var(--dds-color-surface-action-selected);\n background-color: var(--dds-color-surface-action-selected);\n position: relative;\n z-index: 0;\n }\n\n input:focus-visible + .content {\n position: relative;\n z-index: 0;\n }\n}\n","import { type ChangeEvent, type InputHTMLAttributes, useId } from 'react';\n\nimport {\n type ToggleBarContextType,\n useToggleBarContext,\n} from './ToggleBar.context';\nimport styles from './ToggleBar.module.css';\nimport { type ToggleBarSize } from './ToggleBar.types';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\nimport { type StaticTypographyType, Typography } from '../Typography';\n\nexport const typographyTypes: Record<ToggleBarSize, StaticTypographyType> = {\n large: 'bodyLarge',\n medium: 'bodyMedium',\n small: 'bodySmall',\n xsmall: 'bodyXsmall',\n};\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 = ({\n value,\n name,\n onChange,\n checked,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n icon,\n label,\n htmlProps,\n className,\n id,\n ...rest\n}: ToggleRadioProps) => {\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 const contentTypeCn = label ? 'with-text' : 'just-icon';\n\n return (\n <label htmlFor={uniqueId} className={styles.label}>\n <input\n {...getBaseHTMLProps(\n uniqueId,\n cn(\n className,\n focusStyles['focusable-sibling'],\n utilStyles['hide-input'],\n ),\n htmlProps,\n rest,\n )}\n type=\"radio\"\n name={name ?? group.name}\n onChange={handleChange}\n value={value}\n checked={calculateChecked(value, group, checked)}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n />\n <Typography\n as=\"span\"\n typographyType={typographyTypes[group.size]}\n className={cn(\n styles.content,\n styles[`content--${group.size}--${contentTypeCn}`],\n focusStyles['focus-styled-sibling'],\n )}\n >\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n {label && <span>{label}</span>}\n </Typography>\n </label>\n );\n};\n\nToggleRadio.displayName = 'ToggleRadio';\n","import { useId } from 'react';\n\nimport styles from './ToggleButton.module.css';\nimport { type ToggleButtonProps } from './ToggleButton.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { Box } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const ToggleButton = ({\n id,\n label,\n icon,\n size = 'small',\n className,\n htmlProps,\n ...rest\n}: ToggleButtonProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggleButton`;\n const hasIcon = !!icon;\n\n return (\n <Box as=\"label\" htmlFor={uniqueId} width=\"fit-content\">\n <input\n {...getBaseHTMLProps(\n uniqueId,\n cn(\n className,\n focusStyles['focusable-sibling'],\n utilStyles['hide-input'],\n ),\n htmlProps,\n rest,\n )}\n type=\"checkbox\"\n />\n <span\n className={cn(\n styles.content,\n styles[size],\n hasIcon && styles['content--with-icon'],\n typographyStyles[`body-${size}`],\n focusStyles['focus-styled-sibling'],\n )}\n >\n {hasIcon && <Icon icon={icon} iconSize=\"inherit\" />} {label}\n </span>\n </Box>\n );\n};\n\nToggleButton.displayName = 'ToggleButton';\n",".content {\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n width: -moz-fit-content;\n width: fit-content;\n border: 1px solid var(--dds-color-border-default);\n border-radius: var(--dds-border-radius-rounded);\n background-color: var(--dds-color-surface-default);\n color: var(--dds-color-text-default);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover {\n border-color: var(--dds-color-border-action-hover);\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n\n.small {\n gap: var(--dds-spacing-x0-25);\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x1);\n}\n\n.xsmall {\n gap: var(--dds-spacing-x0-125);\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n}\n\n.content--with-icon {\n &.small {\n padding-inline-start: var(--dds-spacing-x0-75);\n }\n &.xsmall {\n padding-inline-start: var(--dds-spacing-x0-25);\n }\n}\n\ninput:checked + .content {\n color: var(--dds-color-text-on-action);\n background-color: var(--dds-color-surface-action-resting);\n border-color: var(--dds-color-surface-action-resting);\n}\n\ninput:checked + .content:hover {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-surface-action-hover);\n}\n","import { useId } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Box, VStack } from '../layout';\nimport { Typography } from '../Typography';\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 * @default \"row\"\n */\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\n return (\n <VStack\n gap=\"x0.5\"\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n role=\"group\"\n aria-labelledby={label ? uniqueLabelId : undefined}\n >\n {!!label && (\n <Typography as=\"span\" typographyType=\"labelMedium\" id={uniqueLabelId}>\n {label}\n </Typography>\n )}\n <Box display=\"flex\" flexWrap=\"wrap\" gap=\"x0.75\" flexDirection={direction}>\n {children}\n </Box>\n </VStack>\n );\n};\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n"],"mappings":"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","names":["contrast","a","a--margins","a--external","a--visited","body-xsmall","body-xsmall--margins","body-small","body-small--margins","body-medium","body-medium--margins","body-large","body-large--margins","lead-medium","lead-medium--margins","heading-xxsmall","heading-xxsmall--margins","heading-xsmall","heading-xsmall--margins","heading-small","heading-small--margins","heading-medium","heading-medium--margins","heading-large","heading-large--margins","heading-xlarge","heading-xlarge--margins","heading-xxlarge","heading-xxlarge--margins","label-medium","label-medium--margins","legend","caption--withMargins","bold","italic","underline","text-color--default","text-color--medium","text-color--subtle","text-color--on-inverse","scrollbar","invisible","remove-list-styling","remove-button-styling","normalize-button","hide-input","inherit-link-styling","scrollable-y","visibility-transition","visibility-transition--open","visibility-transition--closed","visually-hidden","center-absolute","center-absolute-y","center-absolute-x","container","backdrop","drawer","modal","backdrop--visible","backdrop--hidden","prefix","wrapper","jsx","svg","group","group--up","group--down","left","left--up","left--down","right","right--up","right--down","jsx","jsx","jsx","container","input-group","input","disabled","read-only","input--stateful","input--hover","input--stateful-danger","input--medium","input--small","input--xsmall","input--with-affix","label","char-counter","input-group__absolute-element","focusable","focused","focusable-within","has-focusable-input","focusable-sibling","focus-styled-sibling","focusable--inset","jsx","wrapper","inner","jsx","container","size","svg","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","read-only","read-only__icon","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","jsxs","arrow","useEffect","useEffect","useCallback","useEffect","useRef","useEffect","useState","useEffect","useEffect","useEffect","useRef","useRef","useEffect","useCallback","useEffect","useState","size","useEffect","useState","ScreenSize","screenSize","useEffect","jsx","dds-p","dds-p-i","dds-p-b","dds-m","dds-m-i","dds-m-b","dds-h","dds-max-h","dds-min-h","dds-w","dds-max-w","dds-min-w","dds-pos","dds-l","dds-r","dds-t","dds-b","dds-o","dds-o-x","dds-o-y","dds-display","dds-text-align","dds-flex-dir","dds-gap","dds-c-gap","dds-r-gap","dds-a-i","dds-a-c","dds-j-i","dds-j-c","dds-wrap","dds-basis","dds-flow","prefix","xs-hide-below","sm-hide-below","md-hide-below","lg-hide-below","xl-hide-below","xs-hide-above","sm-hide-above","md-hide-above","lg-hide-above","jsx","jsx","dds-grid-template-columns","dds-grid-column","dds-grid-row","dds-j-self","child--first-half","child--second-half","child-col-count","jsx","jsx","background","border","container","shadow--1","shadow--2","shadow--3","shadow--4","border-radius--button","border-radius--surface","border-radius--chip","border-radius--input","border-radius--rounded","border-radius--0","jsx","jsx","jsx","container","header-button","body","useCallback","useEffect","useId","useRef","useState","header-button","header-container","header__content","header__chevron","body","body--animated","body--hidden","useState","useId","useEffect","useCallback","useRef","jsx","jsx","jsx","jsxs","jsx","icon","jsx","jsxs","jsx","isValidElement","icon","button","button--is-loading","button--full-width","just-icon","just-text","with-text-and-icon","with-icon-left","button--xsmall","with-icon-right","no-content","icon","button--small","button--medium","button--large","spinner-wrapper--absolute","icon-wrapper","button--primary","button--secondary","button--tertiary","button--danger","createContext","useContext","useId","useRef","svg","rotate","circle","dash","jsx","jsxs","size","useRef","useId","jsx","jsxs","size","useEffect","createContext","useContext","useEffect","useState","jsx","createContext","useState","useEffect","useContext","container","list","list__item","default","danger","list__item--link","icon","button-loading","jsx","useEffect","useEffect","useRef","jsx","jsxs","useRef","useEffect","useEffect","useRef","jsx","jsxs","useRef","useEffect","divider","divider--default","divider--subtle","divider--on-inverse","jsx","jsx","jsx","jsx","jsxs","jsx","useId","useRef","useState","jsx","useState","useId","useRef","Children","Fragment","jsx","jsxs","isValidElement","group","group--column","group--row","jsx","container","container--filled","container--border","container--navigation","container--expandable","jsx","container","header-button","header-container","header-container__chevron","body","body__content","jsx","jsx","jsxs","jsx","useState","container","jsx","jsxs","useState","Children","jsx","Children","container","jsx","useId","createContext","useContext","container","group","group--row","group--column","label","selection-control","label--readonly","label--checkbox","label--radio","label--disabled","label--error","label--no-text","selection-control--radio","jsx","Label","jsx","jsxs","useId","Label","useId","container","container--error","icon","Fragment","jsx","jsxs","jsx","jsxs","useId","checkbox-label","jsx","jsxs","jsx","jsxs","useLocale","useContext","useContext","useRef","date-input","date-input--medium","date-input--small","date-input--xsmall","date-segment-container","segment","segment__placeholder","segment__placeholder--invisible","icon-wrapper","icon-wrapper--disabled","icon-wrapper--readonly","icon-wrapper--small","icon-wrapper--medium","popover-button","disabled","popover-button--readonly","popover","modal-close-button-wrapper","calendar","calendar__header","calendar__header__month","calendar__month-button","calendar__week-number","calendar__cell-button","calendar__cell-button--today","calendar__cell-button--default","calendar__cell-button--selected","calendar__cell-button--unavailable","calendar__cell-button--unavailable--today","jsx","useRef","jsx","createContext","useContext","useEffect","useRef","createContext","useContext","useEffect","useRef","useState","global-variables","global-styles","jsx","createContext","useRef","useState","useEffect","useContext","Fragment","jsx","jsxs","createContext","useRef","useContext","useEffect","jsx","jsxs","locale","useContext","jsx","jsxs","locale","useLocale","useContext","useRef","createCalendar","useLocale","useRef","useRef","jsx","useRef","size","useRef","jsx","jsxs","useRef","useContext","jsx","jsxs","useContext","jsx","locale","useLocale","createCalendar","useRef","useRef","jsx","jsxs","useRef","useRef","jsx","useRef","list","list--default","list--subtle","list--row","list--column","desc","group","jsx","jsx","jsx","jsxs","jsx","list","list--with-dividers","row","list--striped","list--striped-with-bp","list--small","cell","list--medium","list--large","column","term","createContext","useContext","jsx","size","jsx","Fragment","jsx","jsxs","jsx","useContext","useEffect","useRef","createPortal","container","container--left","container--left-opened","container--left-closed","container--right","container--right-opened","container--right-closed","content-container","drawer-header","button--close","createContext","useContext","jsx","jsxs","size","useContext","useEffect","useRef","createPortal","ReactChildren","cloneElement","isValidElement","useId","useRef","useState","jsx","useState","useId","useRef","Children","ReactChildren","isValidElement","cloneElement","message","jsx","jsxs","useId","container","icon","container--medium","container--large","icon--invisible","useState","useCallback","useEffect","useRef","useState","jsx","jsxs","size","useId","useEffect","useState","rating-container","rating-container--horizontal","rating-container--vertical","rating-submitted-title","button","button--horizontal","button--vertical","useEffect","useId","useRef","useState","textarea","jsx","jsxs","useId","useRef","useState","useEffect","jsx","jsx","jsxs","ReactChildren","cloneElement","useEffect","useId","useRef","useState","container","svg-arrow__border","svg-arrow__background","paper","jsx","jsxs","useId","useState","useRef","useEffect","ref","ReactChildren","cloneElement","jsx","jsxs","layout","jsx","useState","useEffect","container","jsx","jsx","useId","jsx","input-container","input-container--with-errors","input-container--drag-active","input-container--no-drag-zone","file--invalid","file__icon--invalid","file__icon--valid","file__name","jsx","jsxs","useCallback","useEffect","useRef","useRef","useEffect","useCallback","jsx","jsxs","useId","container","left","list","list-group","socials-group","socials-list","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","useState","container","container--info","icon","container--danger","container--warning","content","content--closable","jsx","jsxs","useState","button","jsx","useRef","createContext","useContext","useState","jsx","createContext","useContext","useState","useId","useRef","inline-input","inline-input--with-icon","inline-textarea","icon-wrapper","jsxs","jsx","jsxs","useId","useRef","jsx","useRef","useRef","useId","useRef","jsx","jsxs","useId","useRef","jsx","useRef","useState","bar","bar-separator","bar--with-nav","context-menu-group","nav-list","nav-list__item","nav-list__item__link","nav-list__item__link--active","context-menu","jsx","jsx","jsxs","useState","rest","list","list--inherit","list--unordered","list--ordered","li","jsx","List","jsx","useState","container","container--info","icon","container--warning","container--danger","container--success","container--tips","container--horisontal","container--horisontal--closable","container--vertical","container--vertical--closable","container__text","container__icon","container__button","Fragment","jsx","jsxs","icons","useState","useContext","useEffect","useId","useRef","createPortal","container","container-scrollable","header-container","close-button","content","body","jsx","jsxs","useId","useContext","useEffect","useRef","createPortal","jsx","jsx","useState","list","list__item","list__item--hidden","indicators","truncation-icon","useContext","useId","container--disabled","container--readonly","inner-single-value","icon--medium","icon--small","icon--xsmall","control","control--readonly","dropdown-indicator","control--disabled","size","jsx","jsxs","Input","size","jsx","jsxs","useContext","useId","label","useId","select","select--readonly","select--medium","select--small","select--xsmall","select--multiple","icon","jsx","jsxs","useId","jsx","jsxs","useState","useEffect","useId","useLayoutEffect","useRef","useState","inputs-container","input","select","inputs-container--small-screen-xs","inputs-container--small-screen-sm","inputs-container--small-screen-md","inputs-container--small-screen-lg","inputs-container--small-screen-xl","calling-code","jsx","jsxs","useId","useState","useRef","useLayoutEffect","useEffect","_a","useContext","useEffect","useId","createPortal","container","content--closable--no-header","header","close-button","createContext","useContext","jsx","jsxs","useContext","useId","useEffect","createPortal","ReactChildren","cloneElement","isValidElement","useId","useRef","useState","jsx","useState","useId","useRef","_a","Children","ReactChildren","isValidElement","cloneElement","Children","Fragment","cloneElement","isValidElement","useEffect","useMemo","useState","createContext","useContext","list","connector","item","item-button","item-number--active-incomplete","item-number--inactive-incomplete","item-number--active-completed","item-number--inactive-completed","item-text--active-completed","item-text--active-incomplete","item-text--inactive-completed","item-text--inactive-incomplete","item-div","item-number","item-number--disabled","item-text","item-text--disabled","useMemo","Fragment","jsx","jsxs","useMemo","jsx","jsxs","useState","useEffect","useMemo","Children","isValidElement","cloneElement","Fragment","useId","progress","fill","fill--done","fill--error","fill--indeterminate","indeterminate","jsx","jsxs","size","useId","useId","useState","createContext","useContext","container","input-group","with-button-container","input","input--small","input--medium","input--large","search-icon","clear-button","suggestions","suggestions__header","typographyTypes","useEffect","useRef","jsx","useRef","useEffect","jsx","jsxs","typographyTypes","Fragment","jsx","jsxs","getIconSize","size","useId","useState","typographyTypes","useEffect","useRef","useState","jsx","useState","useEffect","data","value","useRef","Search","useId","createContext","useContext","jsx","jsxs","useId","Label","useId","useState","jsx","jsxs","useState","useId","ddsSkeletonAnimation","container","jsx","wrapper","jsx","useState","container","main","option","option--primary","jsx","jsxs","size","useState","Children","Fragment","cloneElement","isValidElement","useEffect","useState","createContext","useContext","jsx","createContext","useContext","jsx","wrapper","wrapper--scrollable","table","table--with-dividers","row--body","row--colapsible-header--open","table--sticky-header","table--small","table--medium","table--large","row","row--sum","row--selected","row--hoverable","cell--head","cell--left","cell--right","cell--center","cell__inner","sort-button","collapse-button","jsx","jsx","jsx","jsx","jsxs","jsx","size","useContext","useEffect","useRef","useState","jsx","useContext","container","useState","useRef","useEffect","Table","Fragment","jsx","jsxs","useState","useEffect","Children","prefix","isValidElement","cloneElement","Table","jsx","Table","CollapsibleTable","useRef","createContext","useContext","tabs","tab-row","tab-row--standard-widths","tab-row--custom-widths","tab","tab--medium--row","tab--small--row","tab--medium--column","tab--small--column","tab--row","tab--column","tab--active","createContext","useContext","useLayoutEffect","jsx","jsx","jsxs","useRef","size","useEffect","useId","useRef","useState","jsx","size","useId","useState","useRef","useEffect","useCallback","useEffect","useRef","jsx","jsxs","useRef","size","useEffect","useCallback","Children","cloneElement","isValidElement","useState","jsx","jsxs","Children","isValidElement","cloneElement","useState","jsx","Children","cloneElement","isValidElement","jsx","Children","isValidElement","cloneElement","container","container--with-icon","container--default--default","container--default--strong","container--success--default","container--success--strong","container--danger--default","container--danger--strong","container--warning--default","container--warning--strong","container--info--default","container--info--strong","jsx","jsxs","icons","useId","useLayoutEffect","useRef","useState","container","container--readonly","container--disabled","input-width","input","with-icon--medium","with-icon--small","with-icon--xsmall","input--extended","icon--medium","icon--small","icon--xsmall","affix","prefix","suffix","affix--disabled","jsx","jsxs","prefix","useState","useRef","useLayoutEffect","useId","useId","label","track","thumb","checkmark","labeltext--readonly","icon--read-only","medium","large","label--is-loading","label--disabled","label--read-only","jsx","jsxs","size","useId","useId","useState","createContext","useContext","bar","content","content--large--just-icon","content--large--with-text","content--medium--just-icon","content--medium--with-text","content--small--just-icon","content--small--with-text","content--xsmall--just-icon","content--xsmall--with-text","label","jsx","jsxs","size","useId","useState","useId","jsx","jsxs","typographyTypes","useId","useId","content","small","xsmall","content--with-icon","jsx","jsxs","size","useId","useId","jsx","jsxs","useId"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Typography/typographyStyles.module.css","../src/components/helpers/styling/utilStyles.module.css","../src/components/helpers/Backdrop/Backdrop.utils.tsx","../src/components/helpers/Backdrop/Backdrop.module.css","../src/utils/color.tsx","../src/utils/combineHandlers.tsx","../src/utils/dom.ts","../src/utils/getFocusableElements.ts","../src/utils/icon.ts","../src/utils/idGenerator.tsx","../src/utils/object.tsx","../src/utils/readonlyEventHandlers.tsx","../src/utils/searchFilter.tsx","../src/utils/RequiredMarker/RequiredMarker.module.css","../src/utils/RequiredMarker/RequiredMarker.tsx","../src/utils/useElementHeight.ts","../src/components/helpers/Backdrop/Backdrop.tsx","../src/components/helpers/Chevron/Chevron.module.css","../src/components/helpers/Chevron/AnimatedChevronUpDown.tsx","../src/components/helpers/ElementAs/ElementAs.tsx","../src/components/helpers/HiddenInput/HiddenInput.tsx","../src/components/helpers/Input/Input.module.css","../src/components/helpers/styling/focus.module.css","../src/components/helpers/Input/Input.tsx","../src/components/helpers/Input/CharCounter.tsx","../src/types/BaseComponentProps.ts","../src/types/Surface.tsx","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.module.css","../src/components/Typography/Typography/TextOverflowEllipsis/TextOverflowEllipsis.tsx","../src/components/Typography/Typography/Typography.module.css","../src/components/Typography/Typography/Typography.utils.ts","../src/components/Icon/Icon.tsx","../src/components/Icon/Icon.module.css","../src/components/Icon/utils/SvgWrapper.tsx","../src/components/Icon/icons/index.ts","../src/components/Icon/icons/addressShielded.tsx","../src/components/Icon/icons/agreement.tsx","../src/components/Icon/icons/apps.tsx","../src/components/Icon/icons/archive.tsx","../src/components/Icon/icons/arrowDown.tsx","../src/components/Icon/icons/arrowLeft.tsx","../src/components/Icon/icons/arrowRight.tsx","../src/components/Icon/icons/arrowUp.tsx","../src/components/Icon/icons/attachment.tsx","../src/components/Icon/icons/block.tsx","../src/components/Icon/icons/book.tsx","../src/components/Icon/icons/build.tsx","../src/components/Icon/icons/buildCircled.tsx","../src/components/Icon/icons/calendar.tsx","../src/components/Icon/icons/calendarMonth.tsx","../src/components/Icon/icons/calendarViewDay.tsx","../src/components/Icon/icons/calendarViewMonth.tsx","../src/components/Icon/icons/calendarViewWeek.tsx","../src/components/Icon/icons/call.tsx","../src/components/Icon/icons/caring.tsx","../src/components/Icon/icons/chat.tsx","../src/components/Icon/icons/check.tsx","../src/components/Icon/icons/checkCircled.tsx","../src/components/Icon/icons/checklist.tsx","../src/components/Icon/icons/chevronDown.tsx","../src/components/Icon/icons/chevronFirst.tsx","../src/components/Icon/icons/chevronLargeLeft.tsx","../src/components/Icon/icons/chevronLargeRight.tsx","../src/components/Icon/icons/chevronLast.tsx","../src/components/Icon/icons/chevronLeft.tsx","../src/components/Icon/icons/chevronRight.tsx","../src/components/Icon/icons/chevronUp.tsx","../src/components/Icon/icons/close.tsx","../src/components/Icon/icons/closeSmall.tsx","../src/components/Icon/icons/closeCircled.tsx","../src/components/Icon/icons/cloud.tsx","../src/components/Icon/icons/collapse.tsx","../src/components/Icon/icons/comment.tsx","../src/components/Icon/icons/copy.tsx","../src/components/Icon/icons/court.tsx","../src/components/Icon/icons/dateRange.tsx","../src/components/Icon/icons/deaths.tsx","../src/components/Icon/icons/doubleChevronLeft.tsx","../src/components/Icon/icons/doubleChevronRight.tsx","../src/components/Icon/icons/download.tsx","../src/components/Icon/icons/downloadDone.tsx","../src/components/Icon/icons/dragHandle.tsx","../src/components/Icon/icons/edit.tsx","../src/components/Icon/icons/error.tsx","../src/components/Icon/icons/exclaim.tsx","../src/components/Icon/icons/expand.tsx","../src/components/Icon/icons/facebook.tsx","../src/components/Icon/icons/family.tsx","../src/components/Icon/icons/feedback.tsx","../src/components/Icon/icons/file.tsx","../src/components/Icon/icons/fileAdd.tsx","../src/components/Icon/icons/fileShielded.tsx","../src/components/Icon/icons/fileText.tsx","../src/components/Icon/icons/filter.tsx","../src/components/Icon/icons/filterList.tsx","../src/components/Icon/icons/filterListOff.tsx","../src/components/Icon/icons/filterOff.tsx","../src/components/Icon/icons/findInPage.tsx","../src/components/Icon/icons/flickr.tsx","../src/components/Icon/icons/folder.tsx","../src/components/Icon/icons/folderAdd.tsx","../src/components/Icon/icons/folderShielded.tsx","../src/components/Icon/icons/fullsceenExit.tsx","../src/components/Icon/icons/fullscreen.tsx","../src/components/Icon/icons/gavel.tsx","../src/components/Icon/icons/guardian.tsx","../src/components/Icon/icons/help.tsx","../src/components/Icon/icons/helpFilled.tsx","../src/components/Icon/icons/home.tsx","../src/components/Icon/icons/hourglassBottom.tsx","../src/components/Icon/icons/hourglassDisabled.tsx","../src/components/Icon/icons/hourglassEmpty.tsx","../src/components/Icon/icons/hourglassFull.tsx","../src/components/Icon/icons/hourglassTop.tsx","../src/components/Icon/icons/image.tsx","../src/components/Icon/icons/info.tsx","../src/components/Icon/icons/instagram.tsx","../src/components/Icon/icons/jordskifterett.tsx","../src/components/Icon/icons/jordskiftesak.tsx","../src/components/Icon/icons/key.tsx","../src/components/Icon/icons/lagmannsrett.tsx","../src/components/Icon/icons/language.tsx","../src/components/Icon/icons/link.tsx","../src/components/Icon/icons/linkedIn.tsx","../src/components/Icon/icons/linkOff.tsx","../src/components/Icon/icons/list.tsx","../src/components/Icon/icons/listAlt.tsx","../src/components/Icon/icons/location.tsx","../src/components/Icon/icons/lock.tsx","../src/components/Icon/icons/lockOpen.tsx","../src/components/Icon/icons/login.tsx","../src/components/Icon/icons/logout.tsx","../src/components/Icon/icons/mail.tsx","../src/components/Icon/icons/mailOpen.tsx","../src/components/Icon/icons/menu.tsx","../src/components/Icon/icons/minus.tsx","../src/components/Icon/icons/minusCircled.tsx","../src/components/Icon/icons/moreHorizontal.tsx","../src/components/Icon/icons/moreVertical.tsx","../src/components/Icon/icons/notarial.tsx","../src/components/Icon/icons/notifications.tsx","../src/components/Icon/icons/notificationsOff.tsx","../src/components/Icon/icons/onlineMeeting.tsx","../src/components/Icon/icons/openExternal.tsx","../src/components/Icon/icons/payout.tsx","../src/components/Icon/icons/pdf.tsx","../src/components/Icon/icons/person.tsx","../src/components/Icon/icons/personAdd.tsx","../src/components/Icon/icons/personShielded.tsx","../src/components/Icon/icons/pin.tsx","../src/components/Icon/icons/plus.tsx","../src/components/Icon/icons/plusCircled.tsx","../src/components/Icon/icons/powerOfAttorney.tsx","../src/components/Icon/icons/print.tsx","../src/components/Icon/icons/property.tsx","../src/components/Icon/icons/publish.tsx","../src/components/Icon/icons/questionAnswer.tsx","../src/components/Icon/icons/receipt.tsx","../src/components/Icon/icons/redo.tsx","../src/components/Icon/icons/refresh.tsx","../src/components/Icon/icons/replay.tsx","../src/components/Icon/icons/search.tsx","../src/components/Icon/icons/settings.tsx","../src/components/Icon/icons/sms.tsx","../src/components/Icon/icons/star.tsx","../src/components/Icon/icons/starFilled.tsx","../src/components/Icon/icons/starHalfFilled.tsx","../src/components/Icon/icons/sync.tsx","../src/components/Icon/icons/thumbdown.tsx","../src/components/Icon/icons/thumbdownFilled.tsx","../src/components/Icon/icons/thumbup.tsx","../src/components/Icon/icons/thumbupFilled.tsx","../src/components/Icon/icons/time.tsx","../src/components/Icon/icons/tingrett.tsx","../src/components/Icon/icons/tip.tsx","../src/components/Icon/icons/trash.tsx","../src/components/Icon/icons/undo.tsx","../src/components/Icon/icons/unfoldLess.tsx","../src/components/Icon/icons/unfoldMore.tsx","../src/components/Icon/icons/upload.tsx","../src/components/Icon/icons/visibilityOff.tsx","../src/components/Icon/icons/visibilityOn.tsx","../src/components/Icon/icons/warning.tsx","../src/components/Icon/icons/webex.tsx","../src/components/Icon/icons/x.tsx","../src/components/Icon/icons/zoomIn.tsx","../src/components/Icon/icons/zoomOut.tsx","../src/components/Icon/icons/barChart.tsx","../src/components/Icon/icons/barChartBoxed.tsx","../src/components/Icon/icons/lineChart.tsx","../src/components/Icon/icons/trendingUp.tsx","../src/components/Icon/icons/trendingDown.tsx","../src/components/Icon/icons/libraryAdd.tsx","../src/components/Icon/icons/helpSimple.tsx","../src/components/Typography/Typography/Typography.tsx","../src/components/Typography/Caption/Caption.tsx","../src/components/Typography/Heading/Heading.tsx","../src/components/Typography/Label/Label.module.css","../src/components/Typography/Label/Label.tsx","../src/components/Typography/Legend/Legend.tsx","../src/components/Typography/Link/Link.tsx","../src/components/Typography/Paragraph/Paragraph.tsx","../src/components/helpers/Input/Input.utils.tsx","../src/hooks/useCombinedRefs.tsx","../src/hooks/useFloatPosition.tsx","../src/hooks/useFocusTrap.tsx","../src/hooks/useIsMounted.ts","../src/hooks/useMountTransition.tsx","../src/hooks/useOnClickOutside.tsx","../src/hooks/useOnKeyDown.tsx","../src/hooks/useReturnFocusOnBlur.ts","../src/hooks/useRoveFocus.tsx","../src/hooks/useScreenSize.tsx","../src/hooks/useWindowResize.tsx","../src/components/helpers/ScreenSize/ScreenSize.utils.tsx","../src/components/helpers/StylelessList/StylelessList.tsx","../src/components/helpers/styling/utils.ts","../src/components/layout/common/layout.module.css","../src/components/layout/common/Responsive.types.tsx","../src/components/layout/common/utils.tsx","../src/components/layout/common/display.module.css","../src/components/layout/ShowHide/ShowHide.tsx","../src/components/layout/Box/Box.tsx","../src/components/layout/Grid/Grid.module.css","../src/components/layout/Grid/Grid.tsx","../src/components/layout/Grid/GridChild.tsx","../src/components/layout/Paper/Paper.module.css","../src/components/layout/Paper/Paper.tsx","../src/components/layout/Stack/VStack/VStack.tsx","../src/components/layout/Stack/HStack/HStack.tsx","../src/components/Accordion/Accordion.module.css","../src/components/helpers/AccordionBase/useAccordion.tsx","../src/components/helpers/AccordionBase/AccordionBase.module.css","../src/components/helpers/AccordionBase/AccordionContext.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Accordion/AccordionHeader.tsx","../src/components/Accordion/AccordionBody.tsx","../src/components/BackLink/BackLink.module.css","../src/components/BackLink/BackLink.tsx","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumbs.module.css","../src/components/Button/Button.module.css","../src/components/ButtonGroup/ButtonGroup.context.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Spinner/Spinner.module.css","../src/components/Button/Button.tsx","../src/components/OverflowMenu/OverflowMenu.tsx","../src/components/OverflowMenu/OverflowMenu.context.tsx","../src/components/OverflowMenu/OverflowMenu.module.css","../src/components/OverflowMenu/components/OverflowMenuButton.tsx","../src/components/OverflowMenu/components/OverflowMenuLink.tsx","../src/components/Divider/Divider.module.css","../src/components/Divider/Divider.tsx","../src/components/OverflowMenu/components/OverflowMenuDivider.tsx","../src/components/OverflowMenu/components/OverflowMenuList.tsx","../src/components/OverflowMenu/components/OverflowMenuSpan.tsx","../src/components/OverflowMenu/components/OverflowMenuListHeader.tsx","../src/components/OverflowMenu/OverflowMenuGroup.tsx","../src/components/ButtonGroup/ButtonGroup.module.css","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Card/Card.module.css","../src/components/Card/Card.tsx","../src/components/Card/CardExpandable/CardExpandable.module.css","../src/components/Card/CardExpandable/CardExpandable.tsx","../src/components/Card/CardExpandable/CardExpandableHeader.tsx","../src/components/Card/CardExpandable/CardExpandableBody.tsx","../src/components/Chip/Chip.tsx","../src/components/Chip/Chip.module.css","../src/components/Chip/ChipGroup.tsx","../src/components/Contrast/Contrast.module.css","../src/components/Contrast/Contrast.tsx","../src/components/SelectionControl/Checkbox/Checkbox.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroupContext.tsx","../src/components/SelectionControl/SelectionControl.module.css","../src/components/SelectionControl/SelectionControl.styles.tsx","../src/components/SelectionControl/SelectionControl.utils.tsx","../src/components/SelectionControl/Checkbox/CheckboxGroup.tsx","../src/types/Booleanish.ts","../src/components/InputMessage/InputMessage.module.css","../src/components/InputMessage/InputMessage.tsx","../src/components/CookieBanner/CookieBanner.module.css","../src/components/CookieBanner/CookieBannerCheckbox.tsx","../src/components/CookieBanner/CookieBanner.tsx","../src/components/date-inputs/DatePicker/Calendar/Calendar.tsx","../src/components/date-inputs/DatePicker/Calendar/CalendarGrid.tsx","../src/components/date-inputs/DatePicker/Calendar/CalendarCell.tsx","../src/components/date-inputs/common/DateInput.module.css","../src/components/date-inputs/DatePicker/constants.ts","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/date-inputs/utils/getWeekNumber.ts","../src/components/date-inputs/DatePicker/CalendarPopover.tsx","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/ThemeProvider/ThemeProvider.module.css","../src/components/date-inputs/DatePicker/DatePicker.tsx","../src/components/date-inputs/DatePicker/DateField/DateField.tsx","../src/components/date-inputs/DatePicker/DateField/CalendarButton.tsx","../src/components/date-inputs/DatePicker/DateField/DateSegment.tsx","../src/components/date-inputs/common/DateInput.tsx","../src/components/date-inputs/utils/useFocusManagerRef.ts","../src/components/date-inputs/TimePicker/TimePicker.tsx","../src/components/date-inputs/utils/transform.ts","../src/components/DescriptionList/DescriptionList.module.css","../src/components/DescriptionList/DescriptionList.tsx","../src/components/DescriptionList/DescriptionListTerm.tsx","../src/components/DescriptionList/DescriptionListDesc.tsx","../src/components/DescriptionList/DescriptionListGroup.tsx","../src/components/DetailList/DetailList.module.css","../src/components/DetailList/DetailList.context.tsx","../src/components/DetailList/DetailList.tsx","../src/components/DetailList/DetailListDesc.tsx","../src/components/DetailList/DetailListRow.tsx","../src/components/DetailList/DetailListTerm.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Drawer/Drawer.module.css","../src/components/Drawer/Drawer.context.tsx","../src/components/Drawer/DrawerGroup.tsx","../src/components/EmptyContent/EmptyContent.module.css","../src/components/EmptyContent/EmptyContent.tsx","../src/components/FavStar/FavStar.tsx","../src/components/FavStar/FavStar.module.css","../src/hooks/useControllableState.ts","../src/hooks/useCallbackRef.ts","../src/components/Feedback/Feedback.tsx","../src/components/Feedback/Feedback.module.css","../src/components/TextArea/TextArea.tsx","../src/components/TextArea/TextArea.module.css","../src/components/Feedback/utils.tsx","../src/components/Feedback/CommentComponent.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/Tooltip.module.css","../src/components/Feedback/RatingComponent.tsx","../src/components/Fieldset/Fieldset.module.css","../src/components/Fieldset/Fieldset.tsx","../src/components/Fieldset/FieldsetGroup.tsx","../src/components/FileUploader/FileUploader.tsx","../src/components/FileUploader/ErrorList.tsx","../src/components/FileUploader/FileUploader.module.css","../src/components/FileUploader/File.tsx","../src/components/FileUploader/useFileUploader.ts","../src/components/FileUploader/fileUploaderReducer.ts","../src/components/FileUploader/attr-accept.ts","../src/components/FileUploader/utils.ts","../src/components/Footer/Footer.module.css","../src/components/Footer/Footer.tsx","../src/components/Footer/FooterListHeader.tsx","../src/components/Footer/FooterLogo.tsx","../src/components/Footer/FooterList.tsx","../src/components/Footer/FooterSocialsList.tsx","../src/components/Footer/FooterSocialsGroup.tsx","../src/components/Footer/FooterListGroup.tsx","../src/components/Footer/FooterLeft.tsx","../src/components/GlobalMessage/GlobalMessage.tsx","../src/components/GlobalMessage/GlobalMessage.module.css","../src/components/InlineButton/InlineButton.module.css","../src/components/InlineButton/InlineButton.tsx","../src/components/InlineEdit/InlineEditTextArea.tsx","../src/components/InlineEdit/InlineEdit.context.tsx","../src/components/InlineEdit/InlineTextArea.tsx","../src/components/InlineEdit/InlineEdit.module.css","../src/components/InlineEdit/InlineEdit.utils.tsx","../src/components/InlineEdit/InlineEditInput.tsx","../src/components/InlineEdit/InlineInput.tsx","../src/components/InternalHeader/InternalHeader.tsx","../src/components/InternalHeader/InternalHeader.module.css","../src/components/InternalHeader/NavigationItem.tsx","../src/components/List/List.module.css","../src/components/List/List.tsx","../src/components/List/ListItem.tsx","../src/components/LocalMessage/LocalMessage.tsx","../src/components/LocalMessage/LocalMessage.module.css","../src/components/Modal/Modal.tsx","../src/components/Modal/Modal.module.css","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Pagination/Pagination.module.css","../src/components/Pagination/paginationGenerator.tsx","../src/components/Select/Select.tsx","../src/components/Select/Select.module.css","../src/components/Select/Select.styles.ts","../src/components/Select/SelectComponents.tsx","../src/components/Select/NativeSelect/NativeSelect.tsx","../src/components/Select/NativeSelect/NativeSelect.module.css","../src/components/Select/utils.ts","../src/components/PhoneInput/PhoneInput.tsx","../src/components/PhoneInput/constants.ts","../src/components/PhoneInput/PhoneInput.module.css","../src/components/Popover/Popover.tsx","../src/components/Popover/Popover.module.css","../src/components/Popover/Popover.context.tsx","../src/components/Popover/PopoverGroup.tsx","../src/components/ProgressTracker/ProgressTracker.tsx","../src/components/ProgressTracker/ProgressTracker.context.tsx","../src/components/ProgressTracker/ProgressTracker.module.css","../src/components/ProgressTracker/ProgressTrackerItem.tsx","../src/components/ProgressBar/ProgressBar.tsx","../src/components/ProgressBar/ProgressBar.module.css","../src/components/Search/Search.tsx","../src/components/Search/AutocompleteSearch.context.tsx","../src/components/Search/Search.module.css","../src/components/Search/Search.utils.ts","../src/components/Search/SearchSuggestionItem.tsx","../src/components/Search/SearchSuggestions.tsx","../src/components/Search/SearchAutocompleteWrapper.tsx","../src/components/Search/index.ts","../src/components/SelectionControl/RadioButton/RadioButton.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroupContext.tsx","../src/components/SelectionControl/RadioButton/RadioButtonGroup.tsx","../src/components/Skeleton/Skeleton.module.css","../src/components/Skeleton/Skeleton.tsx","../src/components/SkipToContent/SkipToContent.module.css","../src/components/SkipToContent/SkipToContent.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/SplitButton/SplitButton.module.css","../src/components/Table/collapsible/CollapsibleRow.tsx","../src/components/Table/collapsible/Table.context.tsx","../src/components/Table/normal/Body.tsx","../src/components/Table/normal/Head.tsx","../src/components/Table/normal/Table.module.css","../src/components/Table/normal/Cell.tsx","../src/components/Table/normal/Foot.tsx","../src/components/Table/normal/Row.tsx","../src/components/Table/normal/SortCell.tsx","../src/components/Table/normal/Table.tsx","../src/components/Table/normal/TableWrapper.tsx","../src/components/Table/normal/index.ts","../src/components/Table/collapsible/CollapsibleTable.tsx","../src/components/Table/collapsible/index.ts","../src/components/Tabs/AddTabButton.tsx","../src/components/Tabs/Tabs.context.tsx","../src/components/Tabs/Tabs.module.css","../src/components/Tabs/TabWidthContext.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tab.tsx","../src/components/Tabs/TabList.tsx","../src/components/Tabs/TabPanel.tsx","../src/components/Tabs/TabPanels.tsx","../src/components/Tag/Tag.module.css","../src/components/Tag/Tag.tsx","../src/components/TextInput/TextInput.tsx","../src/components/TextInput/TextInput.module.css","../src/components/Toggle/Toggle.tsx","../src/components/Toggle/Toggle.module.css","../src/components/ToggleBar/ToggleBar.tsx","../src/components/ToggleBar/ToggleBar.context.tsx","../src/components/ToggleBar/ToggleBar.module.css","../src/components/ToggleBar/ToggleRadio.tsx","../src/components/ToggleButton/ToggleButton.tsx","../src/components/ToggleButton/ToggleButton.module.css","../src/components/ToggleButton/ToggleButtonGroup.tsx"],"sourcesContent":[".contrast {\n --dds-color-text-body: var(--dds-color-text-on-inverse);\n --dds-color-text-body-subtle: var(--dds-color-text-on-inverse);\n --dds-color-text-link: var(--dds-color-text-on-inverse);\n --dds-color-text-link-visited: var(\n --dds-color-text-action-visited-on-inverse\n );\n --dds-color-text-label: var(--dds-color-text-on-inverse);\n --dds-color-text-helper: var(--dds-color-text-on-inverse);\n --dds-color-text-placeholder: var(--dds-color-text-subtle);\n --dds-color-icon-link: var(--dds-color-text-on-inverse);\n color: var(--dds-color-text-on-inverse);\n}\n\n:where(.a) {\n font: inherit;\n color: var(--dds-color-text-link);\n width: -moz-fit-content;\n width: fit-content;\n text-decoration: underline;\n text-decoration-thickness: max(1px, 0.0625rem);\n text-underline-offset: max(4px, 0.25rem);\n margin: 0;\n\n &:hover {\n text-decoration-color: transparent;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n color 0.2s,\n text-decoration-color 0.2s,\n var(--dds-focus-transition);\n }\n}\n\n:where(.a--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-medium-paragraph-spacing);\n}\n\n:where(.a--external) {\n & > svg {\n display: inline;\n margin: 0.1em 0.1em -0.1em;\n transform: translateY(0.05em);\n vertical-align: baseline;\n }\n}\n\n.a--visited:visited {\n color: var(--dds-color-text-action-visited);\n}\n\n:where(.body-xsmall) {\n margin: 0;\n font: var(--dds-font-body-xsmall);\n letter-spacing: var(--dds-font-body-xsmall-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.body-xsmall--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-xsmall-paragraph-spacing);\n}\n\n:where(.body-small) {\n margin: 0;\n font: var(--dds-font-body-small);\n letter-spacing: var(--dds-font-body-small-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.body-small--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-small-paragraph-spacing);\n}\n\n:where(.body-medium) {\n margin: 0;\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.body-medium--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-medium-paragraph-spacing);\n}\n\n:where(.body-large) {\n margin: 0;\n font: var(--dds-font-body-large);\n letter-spacing: var(--dds-font-body-large-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.body-large--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-body-large-paragraph-spacing);\n}\n\n:where(.lead-medium) {\n margin: 0;\n font: var(--dds-font-lead-medium);\n letter-spacing: var(--dds-font-lead-medium-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.lead-medium--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-lead-medium-paragraph-spacing);\n}\n\n:where(.heading-xxsmall) {\n margin: 0;\n font: var(--dds-font-heading-xxsmall);\n letter-spacing: var(--dds-font-heading-xxsmall-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-xxsmall--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-xxsmall-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-xsmall) {\n margin: 0;\n font: var(--dds-font-heading-xsmall);\n letter-spacing: var(--dds-font-heading-xsmall-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-xsmall--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-xsmall-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-small) {\n margin: 0;\n font: var(--dds-font-heading-small);\n letter-spacing: var(--dds-font-heading-small-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-small--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-small-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-medium) {\n margin: 0;\n font: var(--dds-font-heading-medium);\n letter-spacing: var(--dds-font-heading-medium-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-medium--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-medium-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-large) {\n margin: 0;\n font: var(--dds-font-heading-large);\n letter-spacing: var(--dds-font-heading-large-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-large--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-large-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-xlarge) {\n margin: 0;\n font: var(--dds-font-heading-xlarge);\n letter-spacing: var(--dds-font-heading-xlarge-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-xlarge--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-xlarge-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.heading-xxlarge) {\n margin: 0;\n font: var(--dds-font-heading-xxlarge);\n letter-spacing: var(--dds-font-heading-xxlarge-letter-spacing);\n color: var(--dds-color-text-body);\n}\n\n:where(.heading-xxlarge--margins) {\n display: block;\n margin-top: 0;\n margin-bottom: var(--dds-font-heading-xxlarge-paragraph-spacing);\n padding-top: var(--dds-spacing-padding-top-heading);\n}\n\n:where(.label-medium) {\n margin: 0;\n font: var(--dds-font-label-medium);\n letter-spacing: var(--dds-font-label-medium-letter-spacing);\n color: var(--dds-color-text-label);\n}\n\n:where(.label-medium--margins) {\n display: block;\n margin-top: var(--dds-font-label-medium-paragraph-spacing);\n margin-bottom: var(--dds-font-label-medium-paragraph-spacing);\n}\n\n:where(.legend) {\n padding-inline: 0;\n}\n\n:where(.caption--withMargins) {\n display: table-caption;\n}\n\n:where(.bold) {\n font-weight: 600;\n}\n\n:where(.italic) {\n font-style: italic;\n}\n\n:where(.underline) {\n text-decoration: underline;\n}\n\n.text-color--default {\n color: var(--dds-color-text-default);\n}\n\n.text-color--medium {\n color: var(--dds-color-text-medium);\n}\n\n.text-color--subtle {\n color: var(--dds-color-text-subtle);\n}\n\n.text-color--on-inverse {\n color: var(--dds-color-text-on-inverse);\n}\n",":where(.remove-list-styling) {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n:where(.remove-button-styling) {\n background: none;\n border: none;\n padding: 0;\n font: inherit;\n cursor: pointer;\n outline: inherit;\n}\n\n:where(.normalize-button) {\n margin: 0;\n text-transform: none;\n}\n\n.hide-input {\n clip-path: rect(0 0 0 0);\n position: absolute;\n height: 1px;\n width: 1px;\n margin: 0;\n}\n\n.inherit-link-styling {\n color: inherit;\n text-decoration: inherit;\n}\n\n.scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--dds-color-surface-scrollbar) transparent;\n\n /* Safari styling. TODO: fjernes når scrollbar styling blir standardisert */\n &::-webkit-scrollbar {\n width: var(--dds-spacing-x0-5);\n height: var(--dds-spacing-x0-5);\n }\n\n &::-webkit-scrollbar-track {\n background: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n background: var(--dds-color-surface-scrollbar);\n }\n}\n\n.scrollable-y {\n overflow-y: auto;\n}\n\n.visibility-transition {\n --dds-visiblity-transition: visibility 0.4s;\n --dds-opacity-transition: opacity 0.2s;\n\n opacity: 0;\n @media (prefers-reduced-motion: no-preference) {\n transition: var(--dds-visiblity-transition), var(--dds-opacity-transition);\n }\n}\n.visibility-transition--open {\n opacity: 1;\n visibility: visible;\n}\n.visibility-transition--closed {\n opacity: 0;\n visibility: hidden;\n}\n\n.visually-hidden {\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\n.invisible {\n visibility: hidden;\n}\n\n.center-absolute {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n}\n\n.center-absolute-y {\n position: absolute;\n\n top: 50%;\n transform: translate(0, -50%);\n}\n\n.center-absolute-x {\n position: absolute;\n left: 50%;\n transform: translate(-50%, 0);\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",".backdrop {\n position: fixed;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow-y: auto;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: var(--dds-color-surface-backdrop-default);\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n}\n\n.drawer {\n z-index: var(--dds-zindex-drawer-backdrop);\n}\n\n.modal {\n z-index: var(--dds-zindex-modal-backdrop);\n}\n\n.backdrop--visible {\n opacity: 1;\n}\n\n.backdrop--hidden {\n opacity: 0;\n}\n","import { type Property } from 'csstype';\n\nexport type ColorAlphaFormat = 'hex8' | 'decimal';\n\nexport const convertAlpha = (\n value: number | string,\n typeFrom: ColorAlphaFormat,\n typeTo: ColorAlphaFormat,\n) => {\n if (typeFrom === 'decimal' && typeTo === 'hex8') {\n const numberValue = Number(value);\n\n if (typeof numberValue !== 'number' || numberValue > 1 || numberValue < 0)\n return '';\n const hex8 = Math.round(\n 255 * (Math.round(numberValue * 100) / 100),\n ).toString(16);\n\n return hex8.length === 1 ? '0' + hex8 : hex8;\n }\n if (typeFrom === 'hex8' && typeTo === 'decimal') {\n const regexCheck = new RegExp(/^[0-9a-fA-F]+$/).test(value.toString());\n if (value.toString().length > 2 || regexCheck === false) return '';\n const decimal =\n Math.round((parseInt(value.toString(), 16) / 256) * 100) / 100;\n return decimal;\n }\n};\n\nexport const hexToRGBValues = (hex: string): string => {\n const r = parseInt(hex.slice(1, 3), 16),\n g = parseInt(hex.slice(3, 5), 16),\n b = parseInt(hex.slice(5, 7), 16);\n\n return [r, g, b].join(', ');\n};\n\nexport const hexToRGBA = (hex: string): string => {\n const alpha = hex.length === 9 ? hex.slice(7, 9) : 'ff';\n\n return `rgba(${hexToRGBValues(hex)}, ${convertAlpha(alpha, 'hex8', 'decimal')})`;\n};\n\nconst getRGBValues = (value: string) =>\n value.replace(/\\s/g, '').match(/^rgba?\\((\\d+),(\\d+),(\\d+),?([^,\\s)]+)?/i);\n\nexport const addAlphaToRGB = (rgb: string, alpha: number | string) => {\n const values = getRGBValues(rgb);\n\n return values\n ? `rgba(${values[1]}, ${values[2]}, ${values[3]}, ${alpha})`\n : '';\n};\n\nexport const RGBToHex = (value: string): string => {\n const rgb = getRGBValues(value);\n const alpha = (rgb?.[4] ?? '').trim();\n const hex = rgb\n ? '#' +\n (parseInt(rgb[1]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[2]) | (1 << 8)).toString(16).slice(1) +\n (parseInt(rgb[3]) | (1 << 8)).toString(16).slice(1) +\n convertAlpha(alpha, 'decimal', 'hex8')\n : '';\n\n return hex;\n};\n\nexport const changeRGBAAlpha = (value: string, alpha: number): string => {\n if (!value.startsWith('rgba(') || !value.endsWith(')')) {\n return '';\n }\n\n return value.replace(/[\\d.]+\\)$/g, alpha.toString() + ')');\n};\n\nexport const textColors = {\n textOnAction: 'var(--dds-color-text-on-action)',\n textOnInverse: 'var(--dds-color-text-on-inverse)',\n textOnStatusDefault: 'var(--dds-color-text-on-status-default)',\n textOnStatusStrong: 'var(--dds-color-text-on-status-strong)',\n textActionResting: 'var(--dds-color-text-action-resting)',\n textActionHover: 'var(--dds-color-text-action-hover)',\n textActionVisited: 'var(--dds-color-text-action-visited)',\n textDefault: 'var(--dds-color-text-default)',\n textRequiredfield: 'var(--dds-color-text-requiredfield)',\n textSubtle: 'var(--dds-color-text-subtle)',\n textMedium: 'var(--dds-color-text-medium)',\n textOnNotification: 'var(--dds-color-text-on-notification)',\n\n iconOnAction: 'var(--dds-color-icon-on-action)',\n iconOnInfoDefault: 'var(--dds-color-icon-on-info-default)',\n iconOnSuccessDefault: 'var(--dds-color-icon-on-success-default)',\n iconOnDangerDefault: 'var(--dds-color-icon-on-danger-default)',\n iconOnWarningDefault: 'var(--dds-color-icon-on-warning-default)',\n iconOnInfoStrong: 'var(--dds-color-icon-on-info-strong)',\n iconOnSuccessStrong: 'var(--dds-color-icon-on-success-strong)',\n iconOnDangerStrong: 'var(--dds-color-icon-on-danger-strong)',\n iconOnWarningStrong: 'var(--dds-color-icon-on-warning-strong)',\n iconOnInverse: 'var(--dds-color-icon-on-inverse)',\n iconActionResting: 'var(--dds-color-icon-action-resting)',\n iconActionHover: 'var(--dds-color-icon-action-hover)',\n iconDefault: 'var(--dds-color-icon-default)',\n iconSubtle: 'var(--dds-color-icon-subtle)',\n iconMedium: 'var(--dds-color-icon-medium)',\n};\n\nexport type DDSTextColor =\n | 'textOnAction'\n | 'textOnInverse'\n | 'textOnStatusDefault'\n | 'textOnStatusStrong'\n | 'textActionResting'\n | 'textActionHover'\n | 'textActionVisited'\n | 'textDefault'\n | 'textRequiredfield'\n | 'textSubtle'\n | 'textMedium'\n | 'textOnNotification'\n | 'iconOnAction'\n | 'iconOnInfoDefault'\n | 'iconOnSuccessDefault'\n | 'iconOnDangerDefault'\n | 'iconOnWarningDefault'\n | 'iconOnInfoStrong'\n | 'iconOnSuccessStrong'\n | 'iconOnDangerStrong'\n | 'iconOnWarningStrong'\n | 'iconOnInverse'\n | 'iconActionResting'\n | 'iconActionHover'\n | 'iconDefault'\n | 'iconSubtle'\n | 'iconMedium';\n\nexport const textColorsArray = [\n 'textOnAction',\n 'textOnInverse',\n 'textOnStatusDefault',\n 'textOnStatusStrong',\n 'textActionResting',\n 'textActionHover',\n 'textActionVisited',\n 'textDefault',\n 'textRequiredfield',\n 'textSubtle',\n 'textMedium',\n 'textOnNotification',\n\n 'iconOnAction',\n 'iconOnInfoDefault',\n 'iconOnSuccessDefault',\n 'iconOnDangerDefault',\n 'iconOnWarningDefault',\n 'iconOnInfoStrong',\n 'iconOnSuccessStrong',\n 'iconOnDangerStrong',\n 'iconOnWarningStrong',\n 'iconOnInverse',\n 'iconActionResting',\n 'iconActionHover',\n 'iconDefault',\n 'iconSubtle',\n 'iconMedium',\n];\n\nexport type TextColor = DDSTextColor | Property.Color;\n\nexport function isTextColor(color: string): color is DDSTextColor {\n return textColorsArray.indexOf(color) !== -1;\n}\n\nexport const getTextColor = (color: TextColor): TextColor => {\n if (isTextColor(color)) return textColors[color];\n return color;\n};\n","import { type Callback } from '../types';\n\nexport const combineHandlers = <T,>(\n handler1?: Callback<T>,\n handler2?: Callback<T>,\n): Callback<T> => {\n const callback: Callback<T> = event => {\n handler1 && handler1(event);\n handler2 && handler2(event);\n };\n return callback;\n};\n","/**\n * Join class names together.\n * Will filter out all falsy values.\n */\nexport function cn(...classNames: Array<unknown>) {\n return classNames.filter(Boolean).join(' ');\n}\n\nexport function convertCamelToHyphen(value: string) {\n return value\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/([a-z])([0-9])/g, '$1-$2')\n .toLowerCase();\n}\n\nexport const defaultPortalTarget = () =>\n document.getElementsByClassName('dds-themed')[0] as HTMLElement;\n","import { type RefObject } from 'react';\n\nexport function getFocusableElements<T extends HTMLElement>(\n elementRef: RefObject<T | null>,\n): NodeListOf<HTMLElement> | [] {\n return elementRef && elementRef.current\n ? elementRef.current.querySelectorAll(\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n )\n : [];\n}\n","import { type InputSize } from '../components/helpers';\nimport { type IconSize } from '../components/Icon';\n\nexport const getFormInputIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'medium';\n case 'xsmall':\n return 'small';\n }\n};\n","export const derivativeIdGenerator = (prefix: string, suffix: string): string =>\n `${prefix}-${suffix}`;\n\nexport const spaceSeparatedIdListGenerator = (\n values: Array<string | undefined>,\n): string | undefined => {\n const filtered = values.filter(Boolean);\n\n return filtered.length > 0 ? filtered.join(' ') : undefined;\n};\n","export const isEmpty = (obj: object) =>\n Object.keys(obj).length === 0 && obj.constructor === Object;\n","import {\n type ChangeEvent,\n type ChangeEventHandler,\n type KeyboardEvent,\n type KeyboardEventHandler,\n type MouseEvent,\n type MouseEventHandler,\n} from 'react';\n\n// Handlers ved readonly, da det ikke støttes ut av boksen for enkelte inputelementer (select, radio, checkbox)\n\nexport const readOnlyMouseDownHandler = <T,>(\n readOnly?: boolean,\n onMouseDown?: MouseEventHandler<T>,\n) => {\n return (evt: MouseEvent<T>) => {\n // NOTE: stopper ikke klikk\n if (readOnly) {\n evt.preventDefault();\n // gi fokus til elementet per standard readonly oppførsel\n (evt.target as HTMLElement).focus();\n } else onMouseDown && onMouseDown(evt);\n };\n};\n\ntype ReadOnlyKeyDownHandlerType = 'select' | 'selectionControl';\n\nexport const readOnlyKeyDownHandler = <T,>(\n type: ReadOnlyKeyDownHandlerType,\n readOnly?: boolean,\n onKeyDown?: KeyboardEventHandler<T>,\n) => {\n return (evt: KeyboardEvent<T>) => {\n // stopper relevant tastaturinput, unntatt Tab, per standard readonly oppførsel\n if (readOnly) {\n if (\n type === 'select' &&\n ['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft', ' '].includes(\n evt.key,\n )\n ) {\n evt.preventDefault();\n } else if (type === 'selectionControl' && evt.key === ' ') {\n evt.preventDefault();\n }\n } else onKeyDown && onKeyDown(evt);\n };\n};\n\nexport const readOnlyChangeHandler = <T,>(\n readOnly?: boolean,\n onChange?: ChangeEventHandler<T>,\n) => {\n return (evt: ChangeEvent<T>) => {\n if (readOnly) {\n return;\n }\n onChange && onChange(evt);\n };\n};\n\nexport const readOnlyClickHandler = <T,>(\n readOnly?: boolean,\n onClick?: MouseEventHandler<T>,\n) => {\n return (evt: MouseEvent<T>) => {\n if (readOnly) {\n evt.preventDefault();\n return;\n }\n onClick && onClick(evt);\n };\n};\n","export function escapeRegexCharacters(text: string) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport function searchFilter(text: string, query: string): boolean {\n // Søkeordet er enten først i teksten, eller så har det mellomrom, bindestrek eller start-parentes før seg.\n const searchFilterRegex = new RegExp(\n `(?:^|[\\\\s-(])${escapeRegexCharacters(query.toLowerCase())}`,\n );\n return searchFilterRegex.test(text.toLowerCase());\n}\n",".wrapper {\n color: var(--dds-color-text-requiredfield);\n}\n","import styles from './RequiredMarker.module.css';\n\nexport const RequiredMarker = () => <span className={styles.wrapper}>*</span>;\n","import { useEffect, useState } from 'react';\n\nimport { type Nullable } from '../types';\n\nexport function useElementHeight(\n element: HTMLDivElement | null,\n): number | null {\n const [height, setHeight] = useState<Nullable<number>>(null);\n\n useEffect(() => {\n if (!element) return;\n\n const resizeObserver = new ResizeObserver(() => {\n setHeight(element.offsetHeight);\n });\n\n resizeObserver.observe(element);\n\n return () => resizeObserver.disconnect();\n }, [element]);\n\n return height;\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Backdrop.module.css';\nimport { cn } from '../../../utils';\n\ntype BackdropProps = {\n isMounted?: boolean;\n zIndex: 'drawer' | 'modal';\n} & Pick<ComponentPropsWithRef<'div'>, 'children' | 'onClick' | 'ref'>;\n\nexport const Backdrop = ({ isMounted, zIndex, ...props }: BackdropProps) => {\n const isMountedCn = isMounted ? 'visible' : 'hidden';\n return (\n <div\n className={cn(\n styles.backdrop,\n styles[zIndex],\n styles[`backdrop--${isMountedCn}`],\n )}\n {...props}\n />\n );\n};\n\nBackdrop.displayName = 'Backdrop';\n",".svg {\n display: inline-block;\n flex-shrink: 0;\n position: relative;\n text-align: center;\n vertical-align: middle;\n --dds-chevron-transition: transform 0.2s linear;\n}\n\n.group {\n transition: var(--dds-chevron-transition);\n}\n\n.group--up {\n transform: translateY(3px);\n}\n\n.group--down {\n transform: translateY(0);\n}\n\n.left {\n transition: var(--dds-chevron-transition);\n transform-origin: 1px 1px;\n}\n\n.left--up {\n transform: rotate(-90deg) translateY(0);\n}\n.left--down {\n transform: rotate(0) translateY(0);\n}\n\n.right {\n transition: var(--dds-chevron-transition);\n transform-origin: 7px 1px;\n}\n\n.right--up {\n transform: rotate(90deg) translateY(0);\n}\n.right--down {\n transform: rotate(0) translateY(0);\n}\n","import { type Property } from 'csstype';\n\nimport styles from './Chevron.module.css';\nimport { cn } from '../../../utils';\n\nconst svgChevronLeftPath =\n 'M 1 0 L 5 4 C 5 4 5 4 5 4 L 4 5 C 4 5 4 5 4 5 C 4 5 4 5 4 5 L 0 1 C 0 1 0 1 0 1 L 1 0 C 1 0 1 0 1 0 C 1 0 1 0 1 0 L 1 0 Z';\nconst svgChevronRightPath =\n 'M 3 4 L 7 0 L 8 1 C 8 1 8 1 8 1 L 4 5 L 3 4 C 3 4 3 4 3 4 L 3 4 Z';\n\ninterface SvgChevronProps {\n isUp?: boolean;\n height?: Property.Height;\n width?: Property.Width;\n}\n\nexport const AnimatedChevronUpDown = ({\n isUp,\n height = '5px',\n width = '8px',\n}: SvgChevronProps) => {\n const stateCn = isUp ? 'up' : 'down';\n return (\n <svg\n viewBox=\"0 0 8 5\"\n fill=\"currentColor\"\n className={cn(styles.svg)}\n style={{ height, width }}\n >\n <g className={cn(styles.group, styles[`group--${stateCn}`])}>\n <path\n d={svgChevronLeftPath}\n className={cn(styles.left, styles[`left--${stateCn}`])}\n />\n <path\n d={svgChevronRightPath}\n className={cn(styles.right, styles[`right--${stateCn}`])}\n />\n </g>\n </svg>\n );\n};\n","import { type ElementType } from 'react';\n\nimport { type PropsOfWithRef } from '../../../types';\n\nexport type PolymorphicProps<T extends ElementType> = PropsOfWithRef<T>;\n\nexport const ElementAs = <T extends ElementType>({\n as = 'div',\n ref,\n children,\n ...props\n}: PolymorphicProps<T>) => {\n const Component = as;\n return (\n <Component ref={ref} {...props}>\n {children}\n </Component>\n );\n};\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../../utils';\nimport utilStyles from '../styling/utilStyles.module.css';\n\nexport const HiddenInput = ({\n className,\n ...rest\n}: ComponentPropsWithRef<'input'>) => (\n <input className={cn(className, utilStyles['hide-input'])} {...rest} />\n);\n",".container {\n position: relative;\n}\n\n.input-group {\n position: relative;\n}\n\n:where(.input) {\n position: relative;\n color: var(--dds-color-text-default);\n border: 1px solid var(--dds-color-border-default);\n background-color: var(--dds-color-surface-default);\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1)\n var(--dds-spacing-x0-75) var(--dds-spacing-x0-75);\n border-radius: var(--dds-border-radius-input);\n margin: 0;\n box-sizing: border-box;\n box-shadow: none;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s,\n background-color 0.2s,\n var(--dds-focus-transition);\n }\n &[type='text'],\n &[type='password'],\n &[type='number'],\n &[type='tel'],\n &[type='date'],\n &[type='url'],\n &[type='email'],\n &[type='search'],\n &[type='datetime-local'] {\n -webkit-appearance: none;\n }\n\n &:hover:enabled:-moz-read-write:not(:focus-visible):not(.disabled):not(\n .read-only\n ) {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: 0 0 0 1px var(--dds-color-border-action-hover);\n }\n\n &:hover:enabled:read-write:not(:focus-visible):not(.disabled):not(\n .read-only\n ) {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: 0 0 0 1px var(--dds-color-border-action-hover);\n }\n}\n\n:where(.input--stateful) {\n -webkit-appearance: textfield;\n\n &:enabled:-moz-read-only {\n box-shadow: none;\n border: 1px solid var(--dds-color-border-default);\n background-color: var(--dds-color-surface-field-disabled);\n color: var(--dds-color-text-medium);\n cursor: default;\n }\n\n &:not(.disabled).read-only,\n &:enabled:read-only {\n box-shadow: none;\n border: 1px solid var(--dds-color-border-default);\n background-color: var(--dds-color-surface-field-disabled);\n color: var(--dds-color-text-medium);\n cursor: default;\n }\n\n &.disabled,\n &:disabled {\n box-shadow: none;\n border: 1px solid var(--dds-color-border-subtle);\n background-color: var(--dds-color-surface-field-disabled);\n color: var(--dds-color-text-subtle);\n cursor: not-allowed;\n }\n}\n\n:where(.input--hover:hover) {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: 0 0 0 1px var(--dds-color-border-action-hover);\n}\n\n:where(.input--stateful-danger) {\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-color-border-danger);\n\n &:hover:enabled:-moz-read-write:not(:focus-within) {\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-color-border-danger);\n }\n\n &:not(.disabled):hover:not(:focus-within),\n &:hover:enabled:read-write:not(:focus-within) {\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-color-border-danger);\n }\n\n &:focus-within:enabled:-moz-read-write, &:hover:focus-within:enabled:-moz-read-write, &:active:enabled:-moz-read-write {\n border-color: 1px solid var(--dds-color-border-default);\n }\n\n &:not(.disabled):focus-within,\n &:focus-within:enabled:read-write,\n &:hover:focus-within:enabled:read-write,\n &:active:enabled:read-write {\n border-color: 1px solid var(--dds-color-border-default);\n }\n}\n\n:where(.input--medium) {\n padding: var(--dds-spacing-x0-75);\n}\n\n:where(.input--small) {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x0-75);\n}\n\n:where(.input--xsmall) {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n}\n\n:where(.input--with-affix) {\n gap: var(--dds-spacing-x1);\n}\n\n:where(.label) {\n display: block;\n}\n\n:where(.char-counter) {\n margin-left: auto;\n}\n\n:where(.input-group__absolute-element) {\n position: absolute;\n top: 50%;\n transform: translate(0, -50%);\n z-index: var(--dds-zindex-absolute-element);\n color: var(--dds-color-icon-default);\n}\n",".focused,\n.focusable:focus-visible,\n.focusable-within:focus-within,\n.has-focusable-input:has(input:focus-visible),\n.focusable-sibling:focus-visible + .focus-styled-sibling {\n outline: var(--dds-focus-outline);\n outline-offset: var(--dds-focus-outline-offset);\n box-shadow: var(--dds-focus-box-shadow);\n}\n\n.focusable--inset:focus-visible {\n outline: var(--dds-focus-outline);\n outline-offset: var(--dds-focus-outline-inset);\n box-shadow: var(--dds-focus-box-shadow);\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Input.module.css';\nimport { type StatefulInputProps } from './Input.types';\nimport { cn } from '../../../utils';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\nimport { focusable } from '../styling/focus.module.css';\n\nexport const Input = ({\n className,\n ...rest\n}: ComponentPropsWithRef<'input'>) => (\n <input className={cn(className, styles.input, focusable)} {...rest} />\n);\n\nInput.displayName = 'Input';\n\nexport const StatefulInput = ({\n className,\n componentSize = 'medium',\n hasErrorMessage,\n ...rest\n}: StatefulInputProps) => (\n <Input\n className={cn(\n className,\n styles['input--stateful'],\n styles[`input--${componentSize}`],\n typographyStyles[`body-${componentSize}`],\n hasErrorMessage && styles['input--stateful-danger'],\n )}\n {...rest}\n />\n);\n\nStatefulInput.displayName = 'StatefulInput';\n","import { useId } from 'react';\n\nimport styles from './Input.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../../types';\nimport { cn } from '../../../utils';\nimport { Typography } from '../../Typography';\n\ntype Props = BaseComponentProps<\n HTMLElement,\n {\n current: number;\n max: number;\n }\n>;\n\nexport function 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 <Typography\n {...getBaseHTMLProps(\n uniqueId,\n cn(className, styles['char-counter']),\n htmlProps,\n rest,\n )}\n as=\"div\"\n typographyType=\"bodyXsmall\"\n color=\"textSubtle\"\n aria-label={`${current} av ${max} tegn skrevet`}\n >\n {current}/{max}\n </Typography>\n );\n}\n\nexport const renderCharCounter = (\n id: string,\n isShown: boolean,\n textLength: number,\n maxLength?: number,\n) => {\n if (!!maxLength && Number.isInteger(maxLength) && maxLength > 0 && isShown)\n return <CharCounter id={id} max={maxLength} current={textLength} />;\n};\n","import {\n type CSSProperties,\n type ComponentPropsWithRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n} from 'react';\n\nimport { cn } from '../../../dds-components/src/utils/dom';\n\n/**\n * Basetype for props som eksponeres til konsumenter av designsystemet.\n * Lager en intersection-type med props som sendes inn og `id` og `htmlProps`\n * slik at man kan ha `HTMLAttributes`-props på komponenter som eksponeres\n * av designsystemet. Se også {@link BaseComponentPropsWithChildren} og\n * {@link getBaseHTMLProps}.\n *\n * @template TElement Element-type som genereres av komponenten.\n * @template TOtherProps Andre props komponenten skal eksponere til konsumenter.\n * @template THTMLAttributesProps Standard `HTMLAttributes<T>` men kan overstyres for f.eks knapper hvis man trenger en annen basetype for `htmlProps`.\n */\nexport type BaseComponentProps<\n TElement extends Element,\n TOtherProps extends object = object,\n THTMLAttributesProps extends\n HTMLAttributes<TElement> = HTMLAttributes<TElement>,\n> = Omit<THTMLAttributesProps, 'id' | 'className'> &\n TOtherProps & {\n /**Native HTML-attributter som vil settes på elementet som genereres. Untatt `id`, `className` (og eventuelle andre attributter spesifisert i dokumentasjonen) som settes på toppnivå. */\n htmlProps?: THTMLAttributesProps;\n /**Ref til komponenten. */\n ref?: Ref<TElement>;\n /**HTML id. */\n id?: string;\n /**Klassenavn. */\n className?: string;\n };\n\n/**\n * Basetype for polymorfe props som eksponeres til konsumenter av designsystemet.\n * Lager en intersection-type med props som sendes inn og `id` og `htmlProps`\n * slik at man kan ha `ComponentPropsWithRef`-props på komponenter som eksponeres\n * av designsystemet.\n *\n * @template E `ElemenType` komponenten returnerer.\n * @template TOtherProps Andre props komponenten skal eksponere til konsumenter.\n * @template TComponentProps Standard `ComponentPropsWithoutRef<E>` som kan overstyres hvis man trenger en annen basetype for `htmlProps`, f.eks. for å støtte ofte brukte attributter på roten.\n */\nexport type PolymorphicBaseComponentProps<\n E extends ElementType,\n TOtherProps extends object = object,\n TComponentProps extends object = ComponentPropsWithoutRef<E>,\n> = Omit<TComponentProps, 'id' | 'className' | 'style' | 'ref'> &\n TOtherProps & {\n /**HTML- eller React-element som returneres. */\n as?: E;\n /**Ref til komponenten. */\n ref?: ComponentPropsWithRef<E>['ref'];\n /**Native HTML-attributter som vil settes på elementet som genereres. Untatt `id`, `className` og `style` (og eventuelle andre attributter spesifisert i dokumentasjonen) som settes på toppnivå. */\n htmlProps?: TComponentProps;\n /**HTML id. */\n id?: string;\n /**Klassenavn. */\n className?: string;\n /**Inline style. */\n style?: CSSProperties;\n };\n\n/**\n * Utvidelese av {@link BaseComponentProps} med prop for `children`.\n *\n * {@link BaseComponentProps}\n */\nexport type BaseComponentPropsWithChildren<\n T extends Element,\n TProps extends object = object,\n THTMLProps extends HTMLAttributes<T> = HTMLAttributes<T>,\n> = BaseComponentProps<\n T,\n TProps & {\n /**Barn. */\n children?: ReactNode;\n },\n THTMLProps\n>;\n\ninterface GetBaseHTMLProps {\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n className: HTMLAttributes<T>['className'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlProps: HTMLAttributes<T> | undefined,\n unknownProps: object,\n ): HTMLAttributes<T> & object;\n}\n\n/**\n * Slår sammen id, className, htmlProps og unknownProps til ett objekt\n * som kan spreades som baseprops for en komponent. `unknownProps` er\n * med for å sikre at aria- og data- attributter blir spreadet, alle\n * komponenter må derfor ta hensyn til `...rest` når de leser props.\n *\n * Typisk bruk:\n * ```\n * const Props = BaseComponentProps<HTMLElement, {\n * propA: string,\n * propB: string,\n * }>\n *\n * const MyComponent = (props: Props) => {\n * const { propA, propB, id, className, htmlProps, ...rest } = props;\n *\n * const wrapperProps = getBaseHTMLProps(id, className, htmlProps, rest)\n *\n * return <div {...wrapperProps}>innhold</div>\n * }\n * ```\n * @param id id fra props til komponenten.\n * @param className className for komponenten.\n * @param htmlProps htmlProps fra komponenten.\n * @param unknownProps andre ukjente props som skal spreades, kommer typisk fra `...rest` når man leser props til komponenten.\n * @returns Objekt med alle argumentene som kan spreades.\n *\n * Kan også kalles uten `className`-parameteret. Oppførselen er lik.\n */\nexport const getBaseHTMLProps: GetBaseHTMLProps = <T extends Element>(\n id: HTMLAttributes<T>['id'],\n htmlPropsOrClassName:\n | HTMLAttributes<T>['className']\n | (HTMLAttributes<T> | undefined),\n htmlPropsOrUnknownProps: (HTMLAttributes<T> | undefined) | object,\n unknownPropsOrUndefined?: object,\n): HTMLAttributes<T> & object => {\n if (\n typeof htmlPropsOrClassName === 'string' ||\n unknownPropsOrUndefined != undefined\n ) {\n const {\n id: idFromHtmlProps,\n className: classNameFromHtmlProps,\n ...restHTMLProps\n } = (htmlPropsOrUnknownProps as HTMLAttributes<T> | undefined) ?? {};\n\n const propId = id ?? idFromHtmlProps;\n\n const propClassName = cn(\n htmlPropsOrClassName as string | undefined,\n classNameFromHtmlProps,\n );\n\n return {\n ...unknownPropsOrUndefined,\n ...restHTMLProps,\n ...(propClassName && { className: propClassName }),\n ...(propId && { id: propId }),\n };\n } else {\n const {\n id: htmlPropsId,\n className: htmlPropsClassName,\n ...restHTMLProps\n } = htmlPropsOrClassName ?? {};\n\n const propId = id ?? htmlPropsId;\n\n return {\n ...htmlPropsOrUnknownProps,\n ...restHTMLProps,\n ...(htmlPropsClassName && { className: htmlPropsClassName }),\n ...(propId && { id: propId }),\n };\n }\n};\n","export const BORDER_RADII = [\n 'button',\n 'input',\n 'surface',\n 'chip',\n 'rounded',\n '0',\n] as const;\n\nexport const ELEVATIONS = [1, 2, 3, 4] as const;\n\nexport const BORDER_COLORS = [\n 'border-default',\n 'border-subtle',\n 'border-inverse',\n 'border-action-default',\n 'border-action-hover',\n 'border-success',\n 'border-warning',\n 'border-danger',\n 'border-info',\n 'border-on-action',\n] as const;\n\nconst BACKGROUNDS = [\n 'surface-subtle',\n 'surface-medium',\n 'surface-inverse-default',\n 'surface-danger-default',\n 'surface-danger-strong',\n 'surface-success-default',\n 'surface-success-strong',\n 'surface-warning-default',\n 'surface-warning-strong',\n 'surface-info-default',\n 'surface-info-strong',\n 'surface-paper-default',\n 'surface-notification',\n 'brand-primary-default',\n 'brand-primary-subtle',\n 'brand-primary-medium',\n 'brand-primary-strong',\n 'brand-secondary-default',\n 'brand-secondary-subtle',\n 'brand-secondary-medium',\n 'brand-secondary-strong',\n 'brand-tertiary-default',\n 'brand-tertiary-subtle',\n 'brand-tertiary-medium',\n 'brand-tertiary-strong',\n] as const;\n\nexport type BorderRadius = (typeof BORDER_RADII)[number];\nexport type Elevation = (typeof ELEVATIONS)[number];\nexport type BorderColor = (typeof BORDER_COLORS)[number];\nexport type PaperBackground = (typeof BACKGROUNDS)[number];\n\nexport const isPaperBackground = (value: unknown): value is PaperBackground => {\n return (\n typeof value === 'string' && BACKGROUNDS.includes(value as PaperBackground)\n );\n};\n\nexport const isBorderColor = (value: unknown): value is BorderColor => {\n return (\n typeof value === 'string' && BORDER_COLORS.includes(value as BorderColor)\n );\n};\n\nexport const isBorderRadius = (value: unknown): value is BorderRadius => {\n return (\n typeof value === 'string' && BORDER_RADII.includes(value as BorderRadius)\n );\n};\n\nexport const isElevation = (value: unknown): value is Elevation => {\n return typeof value === 'number' && ELEVATIONS.includes(value as Elevation);\n};\n",".wrapper {\n max-width: 100%;\n}\n\n.inner {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n","import type { ComponentProps } from 'react';\n\nimport styles from './TextOverflowEllipsis.module.css';\nimport { cn } from '../../../../utils/dom';\n\nexport function TextOverflowEllipsisWrapper({\n className,\n ...rest\n}: ComponentProps<'span'>) {\n return <span {...rest} className={cn(className, styles.wrapper)} />;\n}\n\nexport function TextOverflowEllipsisInner({\n className,\n ...rest\n}: ComponentProps<'span'>) {\n return <span {...rest} className={cn(className, styles.inner)} />;\n}\n",".container {\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n}\n","import { type ElementType } from 'react';\n\nimport {\n type HyphenTypographyType,\n type InlineElement,\n type TypographyBodyType,\n type TypographyHeadingType,\n type TypographyType,\n} from './Typography.types';\nimport { convertCamelToHyphen } from '../../../utils';\n\nexport const defaultTypographyType: TypographyBodyType = 'bodyMedium';\nexport const defaultTypographyTypeClassName: HyphenTypographyType =\n 'body-medium';\n\nexport const getElementType = (element: TypographyType): ElementType => {\n switch (element) {\n case 'a':\n return 'a';\n case 'headingXxsmall':\n return 'h6';\n case 'headingXsmall':\n return 'h5';\n case 'headingSmall':\n return 'h4';\n case 'headingMedium':\n return 'h3';\n case 'headingLarge':\n return 'h2';\n case 'headingXlarge':\n case 'headingXxlarge':\n return 'h1';\n case 'labelMedium':\n return 'label';\n case 'bodyXsmall':\n case 'bodySmall':\n case 'bodyMedium':\n case 'bodyLarge':\n case 'leadMedium':\n default:\n return 'p';\n }\n};\n\nexport const isHeading = (\n type: TypographyType,\n): type is TypographyHeadingType => {\n return true;\n};\n\nexport const isLegend = (as: ElementType): boolean => {\n return as === 'legend';\n};\n\nexport const isCaption = (as: ElementType): boolean => {\n return as === 'caption';\n};\n\nexport const inlineElements: Array<ElementType> = [\n 'a',\n 'abbr',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'br',\n 'button',\n 'canvas',\n 'cite',\n 'code',\n 'data',\n 'datalist',\n 'del',\n 'dfn',\n 'em',\n 'embed',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'map',\n 'mark',\n 'meter',\n 'noscript',\n 'object',\n 'output',\n 'picture',\n 'progress',\n 'q',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'select',\n 'slot',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'svg',\n 'template',\n 'textarea',\n 'time',\n 'u',\n 'var',\n 'video',\n 'wbr',\n];\n\nexport const isInlineElement = (as: ElementType): as is InlineElement =>\n inlineElements.indexOf(as) !== -1;\n\nexport function getTypographyCn(value: TypographyType): HyphenTypographyType {\n return convertCamelToHyphen(value) as HyphenTypographyType;\n}\n","import { type SvgIcon } from './utils';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { type TextColor } from '../../utils';\n\nconst getSize = (iconSize: IconSize): string => {\n switch (iconSize) {\n case 'small':\n return 'var(--dds-icon-size-small)';\n case 'medium':\n return 'var(--dds-icon-size-medium)';\n case 'large':\n return 'var(--dds-icon-size-large)';\n case 'inherit':\n return '1em';\n default:\n return 'var(--dds-icon-size-medium)';\n }\n};\n\nexport type IconSize = 'small' | 'medium' | 'large' | 'inherit';\n\nexport type IconProps = BaseComponentProps<\n SVGSVGElement,\n {\n /**Ikonet importert fra `@norges-domstoler/dds-components`. */\n icon: SvgIcon;\n /**Størrelsen på ikonet.\n * @default \"medium\"\n */\n iconSize?: IconSize;\n /**Fargen på ikonet.\n * @default \"currentcolor\"\n */\n color?: TextColor;\n }\n>;\n\nexport function Icon(props: IconProps) {\n const {\n id,\n iconSize = 'medium',\n color = 'currentcolor',\n icon,\n className,\n htmlProps = {},\n ...rest\n } = props;\n const { title, 'aria-hidden': ariaHidden = true } = htmlProps;\n\n const size = getSize(iconSize);\n\n return icon({\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n title,\n height: size,\n width: size,\n fill: color,\n 'aria-hidden': ariaHidden,\n });\n}\n\nIcon.displayName = 'Icon';\n",".svg {\n display: inline-block;\n transition: fill 0.2s;\n flex-shrink: 0;\n}\n","import { type SvgProps } from './types';\nimport { cn, getTextColor } from '../../../utils';\nimport styles from '../Icon.module.css';\n\nconst size = 24;\nconst sizeCSS = 'var(--dds-icon-size-medium)';\n\nexport function SvgWrapper({\n height,\n width,\n fill = 'currentColor',\n className,\n title,\n children,\n ...props\n}: SvgProps) {\n return (\n <svg\n {...props}\n fill={getTextColor(fill)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${size} ${size}`}\n className={cn(className, styles.svg)}\n style={{\n height: height ? height : sizeCSS,\n width: width ? width : sizeCSS,\n }}\n >\n {title && <title>{title}</title>}\n {children}\n </svg>\n );\n}\n","export * from './addressShielded';\nexport * from './agreement';\nexport * from './apps';\nexport * from './archive';\nexport * from './arrowDown';\nexport * from './arrowLeft';\nexport * from './arrowRight';\nexport * from './arrowUp';\nexport * from './attachment';\nexport * from './block';\nexport * from './book';\nexport * from './build';\nexport * from './buildCircled';\nexport * from './calendar';\nexport * from './calendarMonth';\nexport * from './calendarViewDay';\nexport * from './calendarViewMonth';\nexport * from './calendarViewWeek';\nexport * from './call';\nexport * from './caring';\nexport * from './chat';\nexport * from './check';\nexport * from './checkCircled';\nexport * from './checklist';\nexport * from './chevronDown';\nexport * from './chevronFirst';\nexport * from './chevronLargeLeft';\nexport * from './chevronLargeRight';\nexport * from './chevronLast';\nexport * from './chevronLeft';\nexport * from './chevronRight';\nexport * from './chevronUp';\nexport * from './close';\nexport * from './closeSmall';\nexport * from './closeCircled';\nexport * from './cloud';\nexport * from './collapse';\nexport * from './comment';\nexport * from './copy';\nexport * from './court';\nexport * from './dateRange';\nexport * from './deaths';\nexport * from './doubleChevronLeft';\nexport * from './doubleChevronRight';\nexport * from './download';\nexport * from './downloadDone';\nexport * from './dragHandle';\nexport * from './edit';\nexport * from './error';\nexport * from './exclaim';\nexport * from './expand';\nexport * from './facebook';\nexport * from './family';\nexport * from './feedback';\nexport * from './file';\nexport * from './fileAdd';\nexport * from './fileShielded';\nexport * from './fileText';\nexport * from './filter';\nexport * from './filterList';\nexport * from './filterListOff';\nexport * from './filterOff';\nexport * from './findInPage';\nexport * from './flickr';\nexport * from './folder';\nexport * from './folderAdd';\nexport * from './folderShielded';\nexport * from './fullsceenExit';\nexport * from './fullscreen';\nexport * from './gavel';\nexport * from './guardian';\nexport * from './help';\nexport * from './helpFilled';\nexport * from './home';\nexport * from './hourglassBottom';\nexport * from './hourglassDisabled';\nexport * from './hourglassEmpty';\nexport * from './hourglassFull';\nexport * from './hourglassTop';\nexport * from './image';\nexport * from './info';\nexport * from './instagram';\nexport * from './jordskifterett';\nexport * from './jordskiftesak';\nexport * from './key';\nexport * from './lagmannsrett';\nexport * from './language';\nexport * from './link';\nexport * from './linkedIn';\nexport * from './linkOff';\nexport * from './list';\nexport * from './listAlt';\nexport * from './location';\nexport * from './lock';\nexport * from './lockOpen';\nexport * from './login';\nexport * from './logout';\nexport * from './mail';\nexport * from './mailOpen';\nexport * from './menu';\nexport * from './minus';\nexport * from './minusCircled';\nexport * from './moreHorizontal';\nexport * from './moreVertical';\nexport * from './notarial';\nexport * from './notifications';\nexport * from './notificationsOff';\nexport * from './onlineMeeting';\nexport * from './openExternal';\nexport * from './payout';\nexport * from './pdf';\nexport * from './person';\nexport * from './personAdd';\nexport * from './personShielded';\nexport * from './pin';\nexport * from './plus';\nexport * from './plusCircled';\nexport * from './powerOfAttorney';\nexport * from './print';\nexport * from './property';\nexport * from './publish';\nexport * from './questionAnswer';\nexport * from './receipt';\nexport * from './redo';\nexport * from './refresh';\nexport * from './replay';\nexport * from './search';\nexport * from './settings';\nexport * from './sms';\nexport * from './star';\nexport * from './starFilled';\nexport * from './starHalfFilled';\nexport * from './sync';\nexport * from './thumbdown';\nexport * from './thumbdownFilled';\nexport * from './thumbup';\nexport * from './thumbupFilled';\nexport * from './time';\nexport * from './tingrett';\nexport * from './tip';\nexport * from './trash';\nexport * from './undo';\nexport * from './unfoldLess';\nexport * from './unfoldMore';\nexport * from './upload';\nexport * from './visibilityOff';\nexport * from './visibilityOn';\nexport * from './warning';\nexport * from './webex';\nexport * from './x';\nexport * from './zoomIn';\nexport * from './zoomOut';\nexport * from './barChart';\nexport * from './barChartBoxed';\nexport * from './lineChart';\nexport * from './trendingUp';\nexport * from './trendingDown';\nexport * from './libraryAdd';\nexport * from './helpSimple';\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function AddressShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 4V10H16.7889L12 5.69L7 10.19V18H9V12H14V14H11V20H5V12H2L12 3L16 6.6V4H19Z\" />\n <path d=\"M10 10H14C14 8.9 13.1 8 12 8C10.9 8 10 8.9 10 10Z\" />\n <path d=\"M20 15V14C20 12.9 19.1 12 18 12C16.9 12 16 12.9 16 14V15C15.45 15 15 15.45 15 16V19C15 19.55 15.45 20 16 20H20C20.55 20 21 19.55 21 19V16C21 15.45 20.55 15 20 15ZM17 15V14C17 13.45 17.45 13 18 13C18.55 13 19 13.45 19 14V15H17Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function AgreementIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.22 19.85c-.18.18-.5.21-.71 0-.18-.18-.21-.5 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.19.2-.51.19-.71 0-.21-.21-.18-.53 0-.71l3.39-3.39-1.41-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.19-.19-.51 0-.71l3.39-3.39-1.42-1.41-3.39 3.39c-.18.18-.5.21-.71 0-.19-.2-.19-.51 0-.71L9.52 8.4l1.87 1.86c.95.95 2.59.94 3.54 0 .98-.98.98-2.56 0-3.54l-1.86-1.86.28-.28c.78-.78 2.05-.78 2.83 0l4.24 4.24c.78.78.78 2.05 0 2.83l-8.2 8.2zm9.61-6.78c1.56-1.56 1.56-4.09 0-5.66l-4.24-4.24c-1.56-1.56-4.09-1.56-5.66 0l-.28.28-.28-.28c-1.56-1.56-4.09-1.56-5.66 0L2.17 6.71C.75 8.13.62 10.34 1.77 11.9l1.45-1.45c-.39-.75-.26-1.7.37-2.33l3.54-3.54c.78-.78 2.05-.78 2.83 0l3.56 3.56c.18.18.21.5 0 .71-.21.21-.53.18-.71 0L9.52 5.57l-5.8 5.79c-.98.97-.98 2.56 0 3.54.39.39.89.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.52.3 1.02.7 1.42.4.4.9.63 1.42.7.07.54.31 1.03.7 1.42.47.47 1.1.73 1.77.73.67 0 1.3-.26 1.77-.73l8.21-8.19z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function AppsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ArchiveIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1 0-2 .9-2 2v3.01c0 .72.43 1.34 1 1.69V20c0 1.1 1.1 2 2 2h14c.9 0 2-.9 2-2V8.7c.57-.35 1-.97 1-1.69V4c0-1.1-1-2-2-2zm-1 18H5V9h14v11zm1-13H4V4h16v3z\" />\n <path d=\"M9 12h6v2H9v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function ArrowDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ArrowLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ArrowRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ArrowUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function AttachmentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5a2.5 2.5 0 115 0v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5a2.5 2.5 0 005 0V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function BlockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8 0 1.853-.63 3.55-1.682 4.904L7.096 5.682A7.965 7.965 0 0112 4zM5.682 7.096l11.222 11.222A7.965 7.965 0 0112 20c-4.43 0-8-3.57-8-8 0-1.853.63-3.55 1.682-4.904z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function BookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5-1.95 0-4.05.4-5.5 1.5v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z\" />\n <path d=\"M17.5 10.5c.88 0 1.73.09 2.5.26V9.24c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99zM13 12.49v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26V11.9c-.79-.15-1.64-.24-2.5-.24-1.7 0-3.24.3-4.5.83zm4.5 1.84c-1.7 0-3.24.29-4.5.83v1.66c1.13-.64 2.7-.99 4.5-.99.88 0 1.73.09 2.5.26v-1.52c-.79-.16-1.64-.24-2.5-.24z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function BuildIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.5 1c-.873 0-1.707.176-2.467.488l-1.388.57L7.585 6 6 7.586 2.059 3.645l-.57 1.388A6.474 6.474 0 001 7.5C1 11.078 3.922 14 7.5 14c.619 0 1.181-.183 1.748-.346l8.908 8.907a1.514 1.514 0 002.121 0l2.285-2.288a1.516 1.516 0 00-.002-2.119l-8.906-8.906c.162-.567.346-1.13.346-1.748C14 3.922 11.078 1 7.5 1zm0 2C9.998 3 12 5.002 12 7.5c0 .607-.122 1.182-.34 1.713l-.252.617 9.385 9.385-1.576 1.578-9.387-9.387-.617.254c-.53.219-1.105.34-1.713.34A4.484 4.484 0 013 7.5c0-.026.013-.047.014-.072L6 10.414 10.414 6 7.428 3.014c.025 0 .046-.014.072-.014z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function BuildCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.49 11.38c.43-1.22.17-2.64-.81-3.62a3.468 3.468 0 00-4.1-.59l2.35 2.35-1.41 1.41-2.35-2.35c-.71 1.32-.52 2.99.59 4.1.98.98 2.4 1.24 3.62.81l3.41 3.41c.2.2.51.2.71 0l1.4-1.4c.2-.2.2-.51 0-.71l-3.41-3.41z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V10h16v11zm0-13H4V5h16v3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.6 3.2h-1.1V1h-2.2v2.2H7.5V1H5.3v2.2H4.2a2.19 2.19 0 00-2.189 2.2L2 20.8A2.2 2.2 0 004.2 23h15.4c1.21 0 2.2-.99 2.2-2.2V5.4c0-1.21-.99-2.2-2.2-2.2zm0 17.6H4.2v-11h15.4v11zm0-13.2H4.2V5.4h15.4v2.2zm-11 6.6H6.4V12h2.2v2.2zm4.4 0h-2.2V12H13v2.2zm4.4 0h-2.2V12h2.2v2.2zm-8.8 4.4H6.4v-2.2h2.2v2.2zm4.4 0h-2.2v-2.2H13v2.2zm4.4 0h-2.2v-2.2h2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarViewDayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 17h18v2H3v-2zm16-5v1H5v-1h14zm2-2H3v5h18v-5zM3 6h18v2H3V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarViewMonthIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM8 11H4V6h4v5zm6 0h-4V6h4v5zm6 0h-4V6h4v5zM8 18H4v-5h4v5zm6 0h-4v-5h4v5zm6 0h-4v-5h4v5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CalendarViewWeekIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-7 2h2.5v12H13V6zm-2 12H8.5V6H11v12zM4 6h2.5v12H4V6zm16 12h-2.5V6H20v12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.54 5c.06.89.21 1.76.45 2.59l-1.2 1.2c-.41-1.2-.67-2.47-.76-3.79h1.51zm9.86 12.02c.85.24 1.72.39 2.6.45v1.49c-1.32-.09-2.59-.35-3.8-.75l1.2-1.19zM7.5 3H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.49c0-.55-.45-1-1-1-1.24 0-2.45-.2-3.57-.57a.84.84 0 00-.31-.05c-.26 0-.51.1-.71.29l-2.2 2.2a15.149 15.149 0 01-6.59-6.59l2.2-2.2c.28-.28.36-.67.25-1.02A11.36 11.36 0 018.5 4c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CaringIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 13c3.09-2.81 6-5.44 6-7.7C22 3.45 20.55 2 18.7 2c-1.04 0-2.05.49-2.7 1.25C15.34 2.49 14.34 2 13.3 2 11.45 2 10 3.45 10 5.3c0 2.26 2.91 4.89 6 7.7zm-2.7-9c.44 0 .89.21 1.18.55L16 6.34l1.52-1.79c.29-.34.74-.55 1.18-.55.74 0 1.3.56 1.3 1.3 0 1.12-2.04 3.17-4 4.99-1.96-1.82-4-3.88-4-4.99 0-.74.56-1.3 1.3-1.3zM19 16h-2c0-1.2-.75-2.28-1.87-2.7L8.97 11H1v11h6v-1.44l7 1.94 8-2.5v-1c0-1.66-1.34-3-3-3zM3 20v-7h2v7H3zm10.97.41L7 18.48V13h1.61l5.82 2.17c.34.13.57.46.57.83 0 0-1.99-.05-2.3-.15l-2.38-.79-.63 1.9 2.38.79c.51.17 1.04.26 1.58.26H19c.39 0 .74.23.9.56l-5.93 1.84z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChatIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H6l-2 2V4h16v12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CheckIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.293 5.293L9 16.586l-4.293-4.293-1.414 1.414L9 19.414 21.707 6.707l-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CheckCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm4.293 4.293L10 14.586l-2.293-2.293-1.414 1.414L10 17.414l7.707-7.707-1.414-1.414z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChecklistIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 7h-9v2h9V7zm0 8h-9v2h9v-2zM5.54 11L2 7.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 11zm0 8L2 15.46l1.41-1.41 2.12 2.12 4.24-4.24 1.41 1.41L5.54 19z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronFirstIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6 1.41-1.41zM6 6h2v12H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronLargeLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.51 3.87L15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronLargeRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.49 20.13l1.77 1.77 9.9-9.9-9.9-9.9-1.77 1.77L14.62 12l-8.13 8.13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronLastIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6-1.41 1.41zM16 6h2v12h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function ChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ChevronUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CloseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4.707 3.293L3.293 4.707 10.586 12l-7.293 7.293 1.414 1.414L12 13.414l7.293 7.293 1.414-1.414L13.414 12l7.293-7.293-1.414-1.414L12 10.586 4.707 3.293z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function CloseSmallIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.293 8.707l1.414-1.414L12 10.586l3.293-3.293 1.414 1.414L13.414 12l3.293 3.293-1.414 1.414L12 13.414l-3.293 3.293-1.414-1.414L10.586 12 7.293 8.707z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CloseCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zM8.707 7.293L7.293 8.707 10.586 12l-3.293 3.293 1.414 1.414L12 13.414l3.293 3.293 1.414-1.414L13.414 12l3.293-3.293-1.414-1.414L12 10.586 8.707 7.293z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CloudIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11A2.98 2.98 0 0122 15c0 1.65-1.35 3-3 3H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95A5.47 5.47 0 0112 6zm0-2C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96A7.49 7.49 0 0012 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CollapseIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 3.41L16.71 8.7 20 12h-8V4l3.29 3.29L20.59 2 22 3.41zM3.41 22l5.29-5.29L12 20v-8H4l3.29 3.29L2 20.59 3.41 22z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CommentIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4h16v12H5.17L4 17.17V4zm0-2c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H4zm2 10h8v2H6v-2zm0-3h12v2H6V9zm0-3h12v2H6V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CopyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function CourtIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.5 10h-2v7h2v-7zm6 0h-2v7h2v-7zm8.5 9H2v2h19v-2zm-2.5-9h-2v7h2v-7zm-7-6.74L16.71 6H6.29l5.21-2.74zm0-2.26L2 6v2h19V6l-9.5-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DateRangeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6.4 10.9h2.2v2.2H6.4v-2.2zm15.4-5.5v15.4c0 1.21-.99 2.2-2.2 2.2H4.2A2.2 2.2 0 012 20.8l.011-15.4c0-1.21.968-2.2 2.189-2.2h1.1V1h2.2v2.2h8.8V1h2.2v2.2h1.1c1.21 0 2.2.99 2.2 2.2zM4.2 7.6h15.4V5.4H4.2v2.2zm15.4 13.2v-11H4.2v11h15.4zm-4.4-7.7h2.2v-2.2h-2.2v2.2zm-4.4 0H13v-2.2h-2.2v2.2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DeathsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.5 3c-.96 0-1.9.25-2.73.69L12 9h3l-3 10 1-9h-3l1.54-5.39C10.47 3.61 9.01 3 7.5 3 4.42 3 2 5.42 2 8.5c0 4.13 4.16 7.18 10 12.5 5.47-4.94 10-8.26 10-12.5C22 5.42 19.58 3 16.5 3zm-6.26 13.73C6.45 13.34 4 11 4 8.5 4 6.54 5.54 5 7.5 5c.59 0 1.19.15 1.73.42L7.35 12h3.42l-.53 4.73zm4.89-1.2L17.69 7h-2.91l.61-1.82c.36-.12.74-.18 1.11-.18C18.46 5 20 6.54 20 8.5c0 2.21-2.02 4.43-4.87 7.03z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DoubleChevronLeftIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 18.414,7.41398L 17,6L 11,12L 17,18L 18.414,16.586L 13.828,12L 18.414,7.41398 Z M 12.414,7.41398L 11,6L 5.00001,12L 11,18L 12.414,16.586L 7.82801,12L 12.414,7.41398 Z \" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DoubleChevronRightIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M 5.586,7.41398L 7,6L 13,12L 7,18L 5.586,16.586L 10.172,12L 5.586,7.41398 Z M 11.586,7.41399L 13,6.00001L 19,12L 13,18L 11.586,16.586L 16.172,12L 11.586,7.41399 Z \" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DownloadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 5v6h1.17L12 13.17 9.83 11H11V5h2zm2-2H9v6H5l7 7 7-7h-4V3zm4 15H5v2h14v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DownloadDoneIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.13 5.41L18.72 4l-9.19 9.19-4.25-4.24-1.41 1.41 5.66 5.66 10.6-10.61zM5 18h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function DragHandleIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9H4v2h16V9zM4 15h16v-2H4v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function EditIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.06 9.02l.92.92L5.92 19H5v-.92l9.06-9.06zM17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83a.996.996 0 000-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29zm-3.6 3.19L3 17.25V21h3.75L17.81 9.94l-3.75-3.75z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ErrorIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99zM12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ExclaimIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 21a2 2 0 100-4 2 2 0 000 4zM10 3h4v12h-4V3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ExpandIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10L21 11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FacebookIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20.625 2.625H3.375a.75.75 0 00-.75.75v17.25c0 .415.335.75.75.75h17.25a.75.75 0 00.75-.75V3.375a.75.75 0 00-.75-.75zm-2.166 5.473h-1.497c-1.175 0-1.402.557-1.402 1.378v1.807h2.803l-.365 2.829H15.56v7.263h-2.923v-7.26h-2.444v-2.832h2.444V9.197c0-2.421 1.48-3.74 3.64-3.74 1.036 0 1.925.077 2.185.112v2.529h-.003z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FamilyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8.66 13.07c.15 0 .29-.01.43-.03A3.15 3.15 0 0012 15c1.31 0 2.44-.81 2.91-1.96a3.144 3.144 0 003.57-3.11c0-.71-.25-1.39-.67-1.93.43-.54.67-1.22.67-1.93a3.144 3.144 0 00-3.57-3.11A3.15 3.15 0 0012 1c-1.31 0-2.44.81-2.91 1.96a3.145 3.145 0 00-3.57 3.11c0 .71.25 1.39.67 1.93-.43.54-.68 1.22-.68 1.93 0 1.73 1.41 3.14 3.15 3.14zM12 13c-.62 0-1.12-.49-1.14-1.1l.12-1.09c.32.12.66.19 1.02.19s.71-.07 1.03-.19l.11 1.09c-.02.61-.52 1.1-1.14 1.1zm3.34-1.93c-.24 0-.46-.07-.64-.2l-.81-.57c.55-.45.94-1.09 1.06-1.83l.88.42c.4.19.66.59.66 1.03 0 .64-.52 1.15-1.15 1.15zm-.65-5.94c.2-.13.42-.2.65-.2.63 0 1.14.51 1.14 1.14 0 .44-.25.83-.66 1.03l-.88.42c-.12-.74-.51-1.38-1.07-1.83l.82-.56zM12 3c.62 0 1.12.49 1.14 1.1l-.11 1.09C12.71 5.07 12.36 5 12 5s-.7.07-1.02.19l-.12-1.09c.02-.61.52-1.1 1.14-1.1zM8.66 4.93c.24 0 .46.07.64.2l.81.56c-.55.45-.94 1.09-1.06 1.83l-.88-.42c-.4-.2-.66-.59-.66-1.03 0-.63.52-1.14 1.15-1.14zM8.17 8.9l.88-.42c.12.74.51 1.38 1.07 1.83l-.81.55c-.2.13-.42.2-.65.2-.63 0-1.14-.51-1.14-1.14-.01-.43.25-.82.65-1.02zM12 22a9 9 0 009-9 9 9 0 00-9 9zm2.44-2.44c.71-1.9 2.22-3.42 4.12-4.12a7.04 7.04 0 01-4.12 4.12zM3 13a9 9 0 009 9 9 9 0 00-9-9zm2.44 2.44c1.9.71 3.42 2.22 4.12 4.12a7.04 7.04 0 01-4.12-4.12z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FeedbackIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17l-.59.59-.58.58V4h16v12zm-9-4h2v2h-2v-2zm0-6h2v4h-2V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FileIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2c-1.094 0-2 .906-2 2v16c0 1.094.906 2 2 2h12c1.094 0 2-.906 2-2V8l-6-6H6zm0 2h7v5h5v11H6V4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FileAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 11h-2v3H8v2h3v3h2v-3h3v-2h-3v-3zm1-9H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FileShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13 2H5C3.9 2 3 2.9 3 4V20C3 21.1 3.89 22 4.99 22H13V20H5V4H12V9H17V12H19V8L13 2Z\" />\n <path d=\"M20 17V16C20 14.9 19.1 14 18 14C16.9 14 16 14.9 16 16V17C15.45 17 15 17.45 15 18V21C15 21.55 15.45 22 16 22H20C20.55 22 21 21.55 21 21V18C21 17.45 20.55 17 20 17ZM17 17V16C17 15.45 17.45 15 18 15C18.55 15 19 15.45 19 16V17H17Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FileTextIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 16h8v2H8v-2zm0-4h8v2H8v-2zm6-10H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FilterIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 6h10l-5.01 6.3L7 6zm-2.75-.39C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0018.95 4H5.04c-.83 0-1.3.95-.79 1.61z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FilterListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FilterListOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10.83 8H21V6H8.83l2 2zm5 5H18v-2h-4.17l2 2zM14 16.83V18h-4v-2h3.17l-3-3H6v-2h2.17l-3-3H3V6h.17L1.39 4.22 2.8 2.81l18.38 18.38-1.41 1.41L14 16.83z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FilterOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16.95 6l-3.57 4.55 1.43 1.43c1.03-1.31 4.98-6.37 4.98-6.37A.998.998 0 0019 4H6.83l2 2h8.12zM2.81 2.81L1.39 4.22 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.17l5.78 5.78 1.41-1.41L2.81 2.81z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FindInPageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 4h7l5 5v8.58l-1.84-1.84a4.992 4.992 0 00-.64-6.28A4.96 4.96 0 0012 8a5 5 0 00-4.612 3.077A4.98 4.98 0 008.47 16.51a4.982 4.982 0 006.28.63L17.6 20H6V4zm8.11 11.1c-.56.56-1.31.88-2.11.88-.8 0-1.55-.31-2.11-.88-.56-.56-.88-1.31-.88-2.11 0-.8.31-1.55.88-2.11.56-.57 1.31-.88 2.11-.88.8 0 1.55.31 2.11.88.56.56.88 1.31.88 2.11 0 .8-.31 1.55-.88 2.11z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FlickrIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.8571 2H4.14286C2.95982 2 2 2.95982 2 4.14286V19.8571C2 21.0402 2.95982 22 4.14286 22H19.8571C21.0402 22 22 21.0402 22 19.8571V4.14286C22 2.95982 21.0402 2 19.8571 2ZM8.45089 14.8125C6.88393 14.8125 5.61607 13.5446 5.61607 11.9777C5.61607 10.4107 6.88393 9.14286 8.45089 9.14286C10.0179 9.14286 11.2857 10.4107 11.2857 11.9777C11.2857 13.5446 10.0179 14.8125 8.45089 14.8125ZM15.5491 14.8125C13.9821 14.8125 12.7143 13.5446 12.7143 11.9777C12.7143 10.4107 13.9821 9.14286 15.5491 9.14286C17.1161 9.14286 18.3839 10.4107 18.3839 11.9777C18.3839 13.5446 17.1161 14.8125 15.5491 14.8125Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FolderIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4c-1.094 0-2 .906-2 2v12c0 1.094.906 2 2 2h16c1.094 0 2-.906 2-2V8c0-1.094-.906-2-2-2h-8l-2-2H4zm0 2h5.172l2 2H20v10H4V6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FolderAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm0 12H4V6h5.17l2 2H20v10zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function FolderShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M1 6C1 4.90575 1.90575 4 3 4H9L11 6H19C20.0943 6 21 6.90575 21 8V10H19V8H10.1719L8.17188 6H3V18H15V20H3C1.90575 20 1 19.0943 1 18V6Z\" />\n <path d=\"M22 15V14C22 12.9 21.1 12 20 12C18.9 12 18 12.9 18 14V15C17.45 15 17 15.45 17 16V19C17 19.55 17.45 20 18 20H22C22.55 20 23 19.55 23 19V16C23 15.45 22.55 15 22 15ZM19 15V14C19 13.45 19.45 13 20 13C20.55 13 21 13.45 21 14V15H19Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FullscreenExitIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function FullscreenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function GavelIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.112 15.528L3.302 9.86l1.393-1.43 5.81 5.669-1.393 1.429zM15.385 9.097L9.575 3.43 10.967 2l5.81 5.668-1.393 1.43zM21.606 21.44l-9.095-8.87 1.394-1.43L23 20.012l-1.394 1.429zM10.802 12.993L5.75 8.066l3.485-3.573 5.052 4.929-3.485 3.572zM3.998 18.686h8.984v1.996H3.998v-1.996z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3 20.183h10.98v1.997H3v-1.997z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function GuardianIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.225 14.275C15.7084 14.7583 16.3 15 17 15C17.7 15 18.2916 14.7583 18.775 14.275C19.2583 13.7917 19.5 13.2 19.5 12.5C19.5 11.8 19.2583 11.2083 18.775 10.725C18.2916 10.2417 17.7 10 17 10C16.3 10 15.7084 10.2417 15.225 10.725C14.7417 11.2083 14.5 11.8 14.5 12.5C14.5 13.2 14.7417 13.7917 15.225 14.275Z\" />\n <path d=\"M12 18.6V20H22V18.8371C21.1597 18.9446 20.2638 18.635 19.6233 18.0638C19.0679 17.5685 18.6862 16.8599 18.6017 16.1281C18.0706 16.0427 17.5366 16 17 16C16.3507 16.0007 15.705 16.0633 15.063 16.188C14.421 16.3127 13.8 16.5 13.2 16.75C12.8174 16.9007 12.5216 17.1467 12.313 17.488C12.1044 17.8293 12 18.2 12 18.6Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.17505 10.825C7.95837 11.6083 8.90002 12 10 12C11.1 12 12.0416 11.6083 12.825 10.825C13.6083 10.0417 14 9.10001 14 8C14 6.89999 13.6083 5.95834 12.825 5.17499C12.0416 4.39166 11.1 4 10 4C8.90002 4 7.95837 4.39166 7.17505 5.17499C6.39172 5.95834 6 6.89999 6 8C6 9.10001 6.39172 10.0417 7.17505 10.825ZM11.413 9.41299C11.021 9.80432 10.55 10 10 10C9.45068 10.0007 8.97998 9.80499 8.58801 9.41299C8.19604 9.021 8 8.54999 8 8C8.00061 7.45065 8.19666 6.98001 8.58801 6.58801C8.97937 6.19601 9.44995 6 10 6C10.5507 6.00067 11.0216 6.19666 11.413 6.58801C11.8043 6.97934 12 7.45001 12 8C12.0006 8.55066 11.8051 9.02167 11.413 9.41299Z\"\n />\n <path d=\"M2 17.2V20H10V18H4V17.2C4 17.0167 4.04163 16.85 4.125 16.7C4.20837 16.55 4.33337 16.4333 4.5 16.35C5.34937 15.9167 6.23669 15.5833 7.16199 15.35C8.08728 15.1167 9.03333 15 10 15C10.3 15.0007 10.6 15.0133 10.9 15.038C11.2 15.0627 11.5 15.1167 11.8 15.2L13.5 13.5C12.9166 13.3667 12.3334 13.25 11.75 13.15C11.1666 13.05 10.5834 13 10 13C8.88403 13 7.78833 13.1333 6.71301 13.4C5.6377 13.6667 4.59998 14.05 3.59998 14.55C3.09998 14.8007 2.70837 15.1633 2.42505 15.638C2.14172 16.1127 2 16.6333 2 17.2Z\" />\n <path d=\"M20.1512 17.1838C20.1947 17.2298 20.2406 17.2744 20.2889 17.3175C21.0617 18.0067 22.1565 18.0404 22.7341 17.3927C23.1146 16.9662 23.0624 16.4776 22.7617 15.9968C22.6629 15.8389 22.5373 15.6817 22.3913 15.5279C22.307 15.439 22.2159 15.3513 22.1193 15.2652C21.3465 14.5759 20.5132 14.249 19.9355 14.8967C19.4786 15.4091 19.4821 16.1943 19.886 16.8413C19.9608 16.9611 20.0493 17.0761 20.1512 17.1838Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HelpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 18h2v-2h-2v2zm1-16C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm0-14c-2.21 0-4 1.79-4 4h2c0-1.1.9-2 2-2s2 .9 2 2c0 2-3 1.75-3 5h2c0-2.25 3-2.5 3-5 0-2.21-1.79-4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HelpFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HomeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2.1L1 12h3v9h7v-6h2v6h7v-9h3L12 2.1zm0 2.691l6 5.4V19h-3v-6H9v6H6v-8.809l6-5.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassBottomIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m18 22-.01-6L14 12l3.99-4.01L18 2H6v6l4 4-4 3.99V22h12zM8 7.5V4h8v3.5l-4 4-4-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassDisabledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M8 4h8v3.5l-2.84 2.84 1.25 1.25L18 8.01 17.99 8H18V2H6v1.17l2 2zM2.1 2.1.69 3.51l8.9 8.9L6 16l.01.01H6V22h12v-1.17l2.49 2.49 1.41-1.41L2.1 2.1zM16 20H8v-3.5l2.84-2.84L16 18.83V20z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassEmptyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6zm10 14.5V20H8v-3.5l4-4 4 4zm-4-5-4-4V4h8v3.5l-4 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassFullIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M6 2v6h.01L6 8.01 10 12l-4 4 .01.01H6V22h12v-5.99h-.01L18 16l-4-4 4-3.99-.01-.01H18V2H6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HourglassTopIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m6 2 .01 6L10 12l-3.99 4.01L6 22h12v-6l-4-4 4-3.99V2H6zm10 14.5V20H8v-3.5l4-4 4 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function ImageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 5v14H5V5h14zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-4.86 8.86L11 16l-2-2.86L6 17h12l-3.86-5.14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function InfoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.489 2 2 6.489 2 12s4.489 10 10 10 10-4.489 10-10S17.511 2 12 2zm0 2c4.43 0 8 3.57 8 8s-3.57 8-8 8-8-3.57-8-8 3.57-8 8-8zm-1 3v2h2V7h-2zm0 4v6h2v-6h-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function InstagramIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 7.193A4.8 4.8 0 007.193 12 4.8 4.8 0 0012 16.807 4.8 4.8 0 0016.807 12 4.8 4.8 0 0012 7.193zm0 7.931A3.13 3.13 0 018.876 12 3.13 3.13 0 0112 8.876 3.13 3.13 0 0115.124 12 3.13 3.13 0 0112 15.124zm5.004-9.248a1.121 1.121 0 100 2.245A1.12 1.12 0 0018.04 6.57a1.122 1.122 0 00-1.037-.693zM21.37 12c0-1.294.012-2.576-.06-3.867-.073-1.5-.415-2.831-1.512-3.928-1.1-1.1-2.428-1.44-3.928-1.512-1.294-.073-2.576-.061-3.868-.061-1.293 0-2.575-.012-3.867.061-1.5.073-2.831.415-3.928 1.512-1.1 1.099-1.439 2.428-1.512 3.928-.072 1.294-.06 2.576-.06 3.867s-.012 2.576.06 3.867c.073 1.5.415 2.831 1.512 3.928 1.1 1.1 2.428 1.44 3.928 1.512 1.294.073 2.576.061 3.867.061 1.294 0 2.576.012 3.867-.061 1.5-.073 2.832-.415 3.929-1.512 1.099-1.099 1.439-2.428 1.511-3.928.075-1.291.061-2.573.061-3.867zm-2.062 5.527A2.978 2.978 0 0118.6 18.6c-.33.33-.647.537-1.073.708-1.233.49-4.16.38-5.527.38-1.366 0-4.296.11-5.529-.378a2.98 2.98 0 01-1.073-.708 2.999 2.999 0 01-.708-1.073c-.488-1.235-.378-4.163-.378-5.529 0-1.366-.11-4.296.378-5.529.17-.426.377-.745.708-1.073A3.03 3.03 0 016.47 4.69c1.233-.488 4.163-.377 5.529-.377 1.366 0 4.296-.11 5.529.377.427.17.745.377 1.073.708.33.33.537.647.708 1.073.488 1.233.378 4.163.378 5.529 0 1.366.11 4.294-.38 5.527z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function JordskifterettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"6\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function JordskiftesakIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M20.5257 1.14935C20.8205 1.33156 21 1.65342 21 2V10L19 9V3.61804L15 5.61803V10L13 11V5.61803L9 3.61804V14.4648L11.5 16.154V18.5L7.92816 16.154L2.44721 18.8944C2.13723 19.0494 1.76909 19.0329 1.47427 18.8507C1.17945 18.6684 1 18.3466 1 18V5C1 4.62123 1.214 4.27497 1.55279 4.10557L7.55279 1.10557C7.83431 0.96481 8.16569 0.96481 8.44721 1.10557L14 3.88197L19.5528 1.10557C19.8628 0.95058 20.2309 0.967144 20.5257 1.14935ZM7 14.382V3.61804L3 5.61804V16.382L7 14.382Z\"\n />\n <path d=\"M18.6667 17.8008C20.0261 17.3203 21 16.0239 21 14.5C21 12.567 19.433 11 17.5 11C15.567 11 14 12.567 14 14.5C14 16.0239 14.9739 17.3204 16.3333 17.8008V23H18.6667L18.6667 17.8008Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function KeyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21 10h-8.35A5.99 5.99 0 007 6c-3.31 0-6 2.69-6 6s2.69 6 6 6a5.99 5.99 0 005.65-4H13l2 2 2-2 2 2 4-4.04L21 10zM7 15c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LagmannsrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 10h15.65v3.913H4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function LanguageIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm6.93 6h-2.95a15.65 15.65 0 00-1.38-3.56A8.03 8.03 0 0118.92 8zM12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96zM4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2 0 .68.06 1.34.14 2H4.26zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56A7.987 7.987 0 015.08 16zm2.95-8H5.08a7.987 7.987 0 014.33-3.56A15.65 15.65 0 008.03 8zM12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96zM14.34 14H9.66c-.09-.66-.16-1.32-.16-2 0-.68.07-1.35.16-2h4.68c.09.65.16 1.32.16 2 0 .68-.07 1.34-.16 2zm.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95a8.03 8.03 0 01-4.33 3.56zM16.36 14c.08-.66.14-1.32.14-2 0-.68-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2h-3.38z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LinkIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 7h-4v2h4c1.65 0 3 1.35 3 3s-1.35 3-3 3h-4v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-6 8H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-2zm-3-4h8v2H8v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LinkedInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1 2.838A1.838 1.838 0 012.838 1H21.16A1.836 1.836 0 0123 2.838V21.16A1.838 1.838 0 0121.161 23H2.838A1.839 1.839 0 011 21.161V2.838zm8.708 6.55h2.979v1.496c.43-.86 1.53-1.634 3.183-1.634 3.169 0 3.92 1.713 3.92 4.856v5.822h-3.207v-5.106c0-1.79-.43-2.8-1.522-2.8-1.515 0-2.145 1.089-2.145 2.8v5.106H9.708V9.388zm-5.5 10.403h3.208V9.25H4.208V19.791zM7.875 5.812a2.063 2.063 0 11-4.125.09 2.063 2.063 0 014.125-.09z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LinkOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14.39 11L16 12.61V11h-1.61zM17 7h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1 0 1.27-.77 2.37-1.87 2.84l1.4 1.4A4.986 4.986 0 0022 12c0-2.76-2.24-5-5-5zM2 4.27l3.11 3.11A4.991 4.991 0 002 12c0 2.76 2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1 0-1.59 1.21-2.9 2.76-3.07L8.73 11H8v2h2.73L13 15.27V17h1.73l4.01 4.01 1.41-1.41L3.41 2.86 2 4.27z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ListIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7zm-4 6h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ListAltIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7h6v2h-6V7zm0 4h6v2h-6v-2zm0 4h6v2h-6v-2zM7 7h2v2H7V7zm0 4h2v2H7v-2zm0 4h2v2H7v-2zM20.1 3H3.9c-.5 0-.9.4-.9.9v16.2c0 .4.4.9.9.9h16.2c.4 0 .9-.5.9-.9V3.9c0-.5-.5-.9-.9-.9zM19 19H5V5h14v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LocationIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 12c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6-1.8C18 6.57 15.35 4 12 4s-6 2.57-6 6.2c0 2.34 1.95 5.44 6 9.14 4.05-3.7 6-6.8 6-9.14zM12 2c4.2 0 8 3.22 8 8.2 0 3.32-2.67 7.25-8 11.8-5.33-4.55-8-8.48-8-11.8C4 5.22 7.8 2 12 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LockIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 14C14 15.1046 13.1046 16 12 16C10.8954 16 10 15.1046 10 14C10 12.8954 10.8954 12 12 12C13.1046 12 14 12.8954 14 14Z\" />\n <path d=\"M11 15H13V18H11V15Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 10V20H18V10H6ZM5 8.00001C4.44772 8.00001 4 8.44772 4 9.00001V21C4 21.5523 4.44772 22 5 22H19C19.5523 22 20 21.5523 20 21V9.00001C20 8.44772 19.5523 8.00001 19 8.00001H5Z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.36753 4.80798C7.83895 5.96255 7.8442 7.49987 8.03406 8.8771L6.25092 9.12291C6.04866 7.6557 5.98267 5.69302 6.73089 4.0587C7.11485 3.22001 7.71599 2.46272 8.61205 1.92286C9.50288 1.38615 10.6256 1.10001 12 1.10001C13.3437 1.10001 14.4487 1.38826 15.331 1.92478C16.2165 2.46328 16.8195 3.21672 17.2117 4.05013C17.9784 5.67948 17.9537 7.6385 17.749 9.12292L15.9659 8.8771C16.1534 7.51707 16.1286 5.97609 15.583 4.81655C15.319 4.25552 14.9377 3.79229 14.3957 3.46273C13.8506 3.1312 13.0851 2.90001 12 2.90001C10.8744 2.90001 10.0909 3.1333 9.54096 3.46465C8.99622 3.79285 8.62196 4.25222 8.36753 4.80798Z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LockOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 14C14 15.1046 13.1046 16 12 16C10.8954 16 10 15.1046 10 14C10 12.8954 10.8954 12 12 12C13.1046 12 14 12.8954 14 14Z\" />\n <path d=\"M11 15H13V18H11V15Z\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6 10V20H18V10H6ZM5 8.00001C4.44772 8.00001 4 8.44772 4 9.00001V21C4 21.5523 4.44772 22 5 22H19C19.5523 22 20 21.5523 20 21V9.00001C20 8.44772 19.5523 8.00001 19 8.00001H5Z\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.41702 3.54352C8.86392 3.91502 8.49455 4.43767 8.25766 5.07353L6.57091 4.44514C6.91347 3.52561 7.49133 2.6686 8.4134 2.04928C9.33221 1.43216 10.5198 1.10001 12 1.10001C13.3437 1.10001 14.4487 1.38826 15.331 1.92478C16.2165 2.46328 16.8195 3.21672 17.2117 4.05013C17.9784 5.67948 17.9537 7.6385 17.749 9.12292L15.9659 8.8771C16.1534 7.51707 16.1286 5.97609 15.583 4.81655C15.319 4.25551 14.9377 3.79229 14.3957 3.46273C13.8506 3.1312 13.0851 2.90001 12 2.90001C10.789 2.90001 9.9734 3.16983 9.41702 3.54352Z\"\n />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LoginIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11 7L9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LogoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17 8l-1.41 1.41L17.17 11H9v2h8.17l-1.58 1.58L17 16l4-4-4-4zM5 5h7V3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h7v-2H5V5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MailIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MailOpenIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M21.99 8c0-.72-.37-1.35-.94-1.7L12 1 2.95 6.3C2.38 6.65 2 7.28 2 8v10c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2l-.01-10zm-2 0v.01L12 13 4 8l8-4.68L19.99 8zM4 18v-7.66l8 5.02 7.99-4.99L20 18H4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MenuIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MinusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998H5v-2h14v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MinusCirledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function MoreHorizontalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 12a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0zm-6 0a2 2 0 114 0 2 2 0 01-4 0z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function MoreVerticalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function NotarialIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 16v6h16v-6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2zm14 2H6v-2h12v2zM12 2C9.24 2 7 4.24 7 7l5 7 5-7c0-2.76-2.24-5-5-5zm0 9L9 7c0-1.66 1.34-3 3-3s3 1.34 3 3l-3 4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function NotificationsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm6-6v-5c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.64 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-2 1H8v-6c0-2.48 1.51-4.5 4-4.5s4 2.02 4 4.5v6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function NotificationsOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.9 2 2 2zm0-15.5c2.49 0 4 2.02 4 4.5v.1l2 2V11c0-3.07-1.63-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68c-.24.06-.47.15-.69.23l1.64 1.64c.18-.02.36-.05.55-.05zM5.41 3.35L4 4.76l2.81 2.81C6.29 8.57 6 9.74 6 11v5l-2 2v1h14.24l1.74 1.74 1.41-1.41L5.41 3.35zM16 17H8v-6c0-.68.12-1.32.34-1.9L16 16.76V17z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function OnlineMeetingIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zm-6-5.4l3 2.4V7l-3 2.4V7H7v6h7v-2.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function OpenExternalIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 19H5V5h7V3H5a2 2 0 00-2 2v14a2 2 0 002 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PayoutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v4h5v12H6zm5-1h2v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1h-3v-1h4v-2h-2V9h-2v1h-1c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3v1H9v2h2v1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function PdfIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm12 6V9c0-.55-.45-1-1-1h-2v5h2c.55 0 1-.45 1-1zm-2-3h1v3h-1V9zm4 2h1v-1h-1V9h1V8h-2v5h1v-2zm-8 0h1c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9v5h1v-2zm0-2h1v1h-1V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PersonIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9a2.1 2.1 0 110 4.199A2.1 2.1 0 0112 5.9zm0 9c2.97 0 6.1 1.46 6.1 2.1v1.1H5.9V17c0-.64 3.13-2.1 6.1-2.1zM12 4C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 9c-2.67 0-8 1.34-8 4v3h16v-3c0-2.66-5.33-4-8-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PersonAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 9V6h-2v3h-3v2h3v3h2v-3h3V9h-3zM9 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0-6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2zm6.39 8.56C13.71 13.7 11.53 13 9 13s-4.71.7-6.39 1.56A2.97 2.97 0 001 17.22V20h16v-2.78c0-1.12-.61-2.15-1.61-2.66zM15 18H3v-.78c0-.38.2-.72.52-.88C4.71 15.73 6.63 15 9 15c2.37 0 4.29.73 5.48 1.34.32.16.52.5.52.88V18z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function PersonShieldedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5.9C12.2758 5.9 12.5489 5.95432 12.8036 6.05985C13.0584 6.16539 13.2899 6.32007 13.4849 6.51508C13.6799 6.71008 13.8346 6.94158 13.9401 7.19636C14.0457 7.45115 14.1 7.72422 14.1 8C14.1 8.27578 14.0457 8.54885 13.9401 8.80364C13.8346 9.05842 13.6799 9.28992 13.4849 9.48492C13.2899 9.67993 13.0584 9.83461 12.8036 9.94015C12.5489 10.0457 12.2758 10.1 12 10.1C11.443 10.1 10.9089 9.87875 10.5151 9.48492C10.1212 9.0911 9.9 8.55695 9.9 8C9.9 7.44305 10.1212 6.9089 10.5151 6.51508C10.9089 6.12125 11.443 5.9 12 5.9ZM12 4C9.79 4 8 5.79 8 8C8 10.21 9.79 12 12 12C14.21 12 16 10.21 16 8C16 5.79 14.21 4 12 4Z\" />\n <path d=\"M5.9 18.1V17C5.9 16.36 9.03 14.9 12 14.9C12.3329 14.9 12.6677 14.9183 13 14.9518V13.0517C12.6402 13.0173 12.303 13 12 13C9.33 13 4 14.34 4 17V20H12V18.1H5.9Z\" />\n <path d=\"M19 15V14C19 12.9 18.1 12 17 12C15.9 12 15 12.9 15 14V15C14.45 15 14 15.45 14 16V19C14 19.55 14.45 20 15 20H19C19.55 20 20 19.55 20 19V16C20 15.45 19.55 15 19 15ZM16 15V14C16 13.45 16.45 13 17 13C17.55 13 18 13.45 18 14V15H16Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PinIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M14 4v5c0 1.12.37 2.16 1 3H9c.65-.86 1-1.9 1-3V4h4zm3-2H7c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3V4h1c.55 0 1-.45 1-1s-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PlusIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 12.998h-6v6h-2v-6H5v-2h6v-6h2v6h6v2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PlusCircledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 2C6.467 2 2 6.467 2 12s4.467 10 10 10 10-4.467 10-10S17.533 2 12 2zm0 2c4.467 0 8 3.533 8 8 0 4.467-3.533 8-8 8-4.467 0-8-3.533-8-8 0-4.467 3.533-8 8-8zm-1 3v4H7v2h4v4h2v-4h4v-2h-4V7h-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PowerOfAttorneyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 4C4 2.90575 4.90575 2 6 2H14L20 8V12H18V9H13V4H6V16H4V4Z\" />\n <path d=\"M5 19.5652V20.2609L10.7143 22L15.7143 20.6783V21.6522H20V14H14.2857L9.85714 15.6C9.14286 15.8783 8.57143 16.6435 8.57143 17.4783H7.14286C5.92857 17.4783 5 18.3826 5 19.5652ZM17.1429 20.2609V15.3913H18.5714V20.2609H17.1429ZM6.5 19.287C6.64286 19.0087 6.85714 18.8696 7.14286 18.8696H11C11.3571 18.8696 11.7857 18.8 12.1429 18.7304L13.7857 18.1739L13.3571 16.8522L11.6429 17.4087C11.4286 17.4087 10 17.4783 10 17.4783C10 17.2 10.1429 16.9913 10.4286 16.9217L14.5714 15.3913H15.7143V19.2174L10.7143 20.5391L6.5 19.287Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PrintIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 8h-1V3H6v5H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zM8 5h8v3H8V5zm8 12v2H8v-4h8v2zm2-2v-2H6v2H4v-4c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v4h-2z\" />\n <path d=\"M18 12.5a1 1 0 100-2 1 1 0 000 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PropertyIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 9.3V4h-3v2.6L12 3 2 12h3v8h6v-6h2v6h6v-8h3l-3-2.7zM17 18h-2v-6H9v6H7v-7.81l5-4.5 5 4.5V18z\" />\n <path d=\"M10 10h4c0-1.1-.9-2-2-2s-2 .9-2 2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function PublishIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M5 4h14v2H5V4zm0 10h4v6h6v-6h4l-7-7-7 7zm8-2v6h-2v-6H9.83L12 9.83 14.17 12H13z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function QuestionAnswerIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15 4v7H5.17l-.59.59-.58.58V4h11zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ReceiptIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19.5 3.5L18 2l-1.5 1.5L15 2l-1.5 1.5L12 2l-1.5 1.5L9 2 7.5 3.5 6 2 4.5 3.5 3 2v20l1.5-1.5L6 22l1.5-1.5L9 22l1.5-1.5L12 22l1.5-1.5L15 22l1.5-1.5L18 22l1.5-1.5L21 22V2l-1.5 1.5zM19 19.09H5V4.91h14v14.18zM6 15h12v2H6v-2zm0-4h12v2H6v-2zm0-4h12v2H6V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function RedoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M18.4 10.6C16.55 8.99 14.15 8 11.5 8c-4.65 0-8.58 3.03-9.96 7.22L3.9 16a8.002 8.002 0 017.6-5.5c1.95 0 3.73.72 5.12 1.88L13 16h9V7l-3.6 3.6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function RefreshIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.65 6.35A7.958 7.958 0 0012 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0112 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function ReplayIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function SearchIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 2C5.146 2 2 5.146 2 9s3.146 7 7 7a6.958 6.958 0 004.574-1.719l.426.426V16l6 6 2-2-6-6h-1.293l-.426-.426A6.958 6.958 0 0016 9c0-3.854-3.146-7-7-7zm0 2c2.773 0 5 2.227 5 5s-2.227 5-5 5-5-2.227-5-5 2.227-5 5-5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function SettingsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9.666 2l-.451 2.477.014-.006.128-.041c-.05.012-.093.033-.142.047-.918.26-1.639.741-2.256 1.255l-.033.03h-.002l-2.389-.758-2.297 3.982 1.873 1.762.008-.045.01-.045C3.99 11.21 4 11.7 4 12c0 .3-.001.796.12 1.396l-.013-.064-1.882 1.66 2.328 4.035 2.39-.869.02.02.082.054c.643.429 1.388.856 2.162 1.188l.004.002L9.658 22h4.676l.451-2.477-.014.006-.128.041c.05-.012.093-.033.142-.047.918-.26 1.639-.741 2.256-1.255l.033-.03h.002l2.4.764 2.29-4.12-1.873-1.652-.012.067-.01.045C20.01 12.79 20 12.3 20 12c0-.3.01-.79-.129-1.342l.006.026 1.898-1.676-2.328-4.035-2.39.869-.02-.02-.082-.054a13.73 13.73 0 00-2.162-1.188l-.004-.002L14.342 2H9.666zm1.668 2h1.324l.352 2.021 1.02.407-.024-.008c.605.26 1.234.62 1.78.978l.757.76 2.01-.732.672 1.166-1.502 1.326.197 1.186.01.039c.062.247.07.557.07.857 0 .3-.008.61-.07.857l-.006.024-.217 1.088 1.527 1.35-.71 1.28-2-.636-.778.777c-.543.451-.983.738-1.588.889l-.066.017-1.076.43-.35 1.924h-1.324l-.352-2.021-1.02-.407.024.008c-.605-.26-1.234-.62-1.78-.978l-.757-.76-2.01.732-.672-1.166 1.518-1.34-.213-1.064C6 12.604 6 12.3 6 12c0-.3.008-.61.07-.857l.006-.024.213-1.066-1.527-1.44.703-1.217 2.012.641.777-.777c.543-.451.983-.738 1.588-.889l.066-.017 1.076-.43.35-1.924zM12 8c-1.25 0-2.315.505-2.998 1.273C8.319 10.043 8 11.028 8 12s.319 1.958 1.002 2.727C9.685 15.495 10.75 16 12 16c1.25 0 2.315-.505 2.998-1.273C15.681 13.957 16 12.972 16 12s-.319-1.958-1.002-2.727C14.315 8.505 13.25 8 12 8zm0 2c.75 0 1.185.245 1.502.602.317.356.498.87.498 1.398 0 .528-.181 1.042-.498 1.398-.317.357-.752.602-1.502.602s-1.185-.245-1.502-.602C10.181 13.042 10 12.528 10 12c0-.528.181-1.042.498-1.398.317-.357.752-.602 1.502-.602z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function SmsIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12zM7 9h2v2H7V9zm8 0h2v2h-2V9zm-4 0h2v2h-2V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function StarIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function StarFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function StarHalfFilled(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4V6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function SyncIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 0L8 4l4 4V5c3.859 0 7 3.14 7 7 0 .88-.17 1.72-.469 2.496l1.516 1.514A8.931 8.931 0 0021 12c0-4.962-4.037-9-9-9V0zM3.953 7.99A8.931 8.931 0 003 12c0 4.962 4.037 9 9 9v3l4-4-4-4v3c-3.859 0-7-3.14-7-7 0-.88.17-1.72.469-2.496L3.953 7.99z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ThumbDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m10.89 18.28.57-2.89c.12-.59-.04-1.2-.42-1.66-.38-.46-.94-.73-1.54-.73H4v-1.08L6.57 6h8.09c.18 0 .34.16.34.34v7.84l-4.11 4.1M10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22zm10-7h2V4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ThumbDownFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M22 4h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h2V4zM2.17 11.12c-.11.25-.17.52-.17.8V13c0 1.1.9 2 2 2h5.5l-.92 4.65c-.05.22-.02.46.08.66.23.45.52.86.88 1.22L10 22l6.41-6.41c.38-.38.59-.89.59-1.42V6.34C17 5.05 15.95 4 14.66 4h-8.1c-.71 0-1.36.37-1.72.97l-2.67 6.15z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ThumbUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"m13.11 5.72-.57 2.89c-.12.59.04 1.2.42 1.66.38.46.94.73 1.54.73H20v1.08L17.43 18H9.34c-.18 0-.34-.16-.34-.34V9.82l4.11-4.1M14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.83C7 18.95 8.05 20 9.34 20h8.1c.71 0 1.36-.37 1.72-.97l2.67-6.15c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2zM4 9H2v11h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ThumbUpFilledIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M2 20h2c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1H2v11zm19.83-7.12c.11-.25.17-.52.17-.8V11c0-1.1-.9-2-2-2h-5.5l.92-4.65c.05-.22.02-.46-.08-.66-.23-.45-.52-.86-.88-1.22L14 2 7.59 8.41C7.21 8.79 7 9.3 7 9.83v7.84C7 18.95 8.05 20 9.34 20h8.11c.7 0 1.36-.37 1.72-.97l2.66-6.15z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function TimeIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function TingrettIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 16.615c4.418 0 8-3.857 8-8.615H4c0 4.758 3.582 8.615 8 8.615z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function TipIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 21c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H9v1zm3-19C8.14 2 5 5.14 5 9c0 2.38 1.19 4.47 3 5.74V17c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-2.26c1.81-1.27 3-3.36 3-5.74 0-3.86-3.14-7-7-7zm2.85 11.1l-.85.6V16h-4v-2.3l-.85-.6A4.997 4.997 0 017 9c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.63-.8 3.16-2.15 4.1z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function TrashIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 9v10H8V9h8zm-1.5-6h-5l-1 1H5v2h14V4h-3.5l-1-1zM18 7H6v12c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function UndoIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12.5 8c-2.65 0-5.05.99-6.9 2.6L2 7v9h9l-3.62-3.62c1.39-1.16 3.16-1.88 5.12-1.88 3.54 0 6.55 2.31 7.6 5.5l2.37-.78C21.08 11.03 17.15 8 12.5 8z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function UnfoldLessIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.41 18.59L8.83 20 12 16.83 15.17 20l1.41-1.41L12 14l-4.59 4.59zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10l4.59-4.59z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function UnfoldMoreIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M11.59 18.17L8.42 15l-1.41 1.41L11.59 21l4.59-4.59L14.76 15l-3.17 3.17zm0-12.34L14.76 9l1.41-1.41L11.59 3 7 7.59 8.42 9l3.17-3.17z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function UploadIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4v6zm2-2V8H9.828L12 5.828 14.172 8H13v6h-2zm-6 4h14v2H5v-2z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function VisibilityOffIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5 9.648 9.648 0 01-2.41 3.12l1.41 1.41c1.39-1.23 2.49-2.77 3.18-4.53C21.27 7.11 17 4 12 4c-1.27 0-2.49.2-3.64.57l1.65 1.65C10.66 6.09 11.32 6 12 6zm-1.07 1.14L13 9.21c.57.25 1.03.71 1.28 1.28l2.07 2.07c.08-.34.14-.7.14-1.07C16.5 9.01 14.48 7 12 7c-.37 0-.72.05-1.07.14zM2.01 3.87l2.68 2.68C3.04 7.841 1.766 9.55 1 11.5 2.73 15.89 7 19 12 19c1.52 0 2.98-.29 4.32-.82l3.42 3.42 1.41-1.41L3.42 2.45 2.01 3.87zm7.5 7.5l2.61 2.61c-.04.01-.08.02-.12.02a2.5 2.5 0 01-2.5-2.5c0-.05.01-.08.01-.13zm-3.4-3.4l1.75 1.75a4.6 4.6 0 00-.36 1.78 4.507 4.507 0 006.27 4.14l.98.98c-.88.24-1.8.38-2.75.38a9.77 9.77 0 01-8.82-5.5c.7-1.43 1.72-2.61 2.93-3.53z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function VisibilityOnIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M12 6a9.77 9.77 0 018.82 5.5A9.77 9.77 0 0112 17a9.77 9.77 0 01-8.82-5.5A9.77 9.77 0 0112 6zm0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4zm0 5a2.5 2.5 0 110 5 2.5 2.5 0 010-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function WarningIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.73 3H8.27L3 8.27v7.46L8.27 21h7.46L21 15.73V8.27L15.73 3zM19 14.9L14.9 19H9.1L5 14.9V9.1L9.1 5h5.8L19 9.1v5.8z\" />\n <path d=\"M12 17a1 1 0 100-2 1 1 0 000 2zM11 7h2v7h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function WebexIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M7.16445 3.02741C5.37251 3.2006 4.00929 4.54287 3.55167 5.19235C5.71934 5.89286 5.1413 9.08924 5.71934 10.6047C6.00836 9.73873 6.65866 7.71812 7.67024 7.71812C10.3525 7.71812 9.18761 21.2516 16.3409 20.9964C22.4104 20.7799 24 10.0274 24 8.00678C24 5.83103 21.8323 5.6975 21.8323 5.6975C21.8323 5.6975 23.2325 7.80594 22.5 9.73872C21.7039 11.8393 19.3034 11.615 18.9421 11.3985C18.5086 13.1305 17.5693 16.3057 16.3409 16.3057C14.5 16.3057 14.1251 8.65625 12.1501 5.6975C10.9458 3.89338 9.40437 2.81091 7.16445 3.02741Z\" />\n <path d=\"M16.2687 3.0274C14.1732 3.18241 12.9449 4.20609 12.3669 4.83152C14 6.5 14.679 10.6047 14.679 10.6047C14.8958 9.30573 15.4714 7.64595 16.2687 7.64595C17.0659 7.64595 17.3525 8.00677 18.0028 9.73872C18.5644 11.2344 22.6151 11.0722 21.9046 7.79027C21.3265 5.12018 18.6531 2.851 16.2687 3.0274Z\" />\n <path d=\"M8.03151 20.9243C9.91016 20.9243 11.4998 19.1923 11.4998 19.1923C9.98242 16.883 9.33212 13.6356 9.33212 13.6356C9.33212 13.6356 8.75685 16.3057 7.81475 16.3057C5.93611 16.3057 4.82819 10.4844 4.34648 7.35728C4.12972 6.41914 3.306 5.42327 1.74528 5.76966C0.184558 6.11605 -0.0611107 7.54972 0.0111449 8.22326C0.251997 10.6288 0.950471 15.0068 3.04588 18.2542C4.62908 20.7078 6.36963 20.9243 8.03151 20.9243Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function XIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M17.7508 3H20.8175L14.1175 10.6583L22 21.0775H15.8283L10.995 14.7575L5.46333 21.0775H2.395L9.56167 12.8858L2 3.00083H8.32833L12.6975 8.7775L17.7508 3ZM16.675 19.2425H18.3742L7.405 4.73917H5.58167L16.675 19.2425Z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ZoomInIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zm.5-7H9v2H7v1h2v2h1v-2h2V9h-2V7z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function ZoomOutIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27A6.47 6.47 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7V9z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function BarChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M10 20h4V4h-4v16zm-6 0h4v-8H4v8zM16 9v11h4V9h-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function BarChartBoxedIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14zM7 10h2v7H7v-7zm4-3h2v10h-2V7zm4 6h2v4h-2v-4z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function LineChartIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99l1.5 1.5z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function TrendingUpIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\n\nexport function TrendingDownIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M16 18l2.29-2.29-4.88-4.88-4 4L2 7.41 3.41 6l6 6 4-4 6.3 6.29L22 12v6h-6z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function LibraryAddIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12zm-7-2h2v-3h3V9h-3V6h-2v3h-3v2h3v3z\" />\n </SvgWrapper>\n );\n}\n","import { type SvgProps, SvgWrapper } from '../utils';\nexport function HelpSimpleIcon(props: SvgProps) {\n return (\n <SvgWrapper {...props}>\n <path d=\"M13.25 21H10.75V18.5714H13.25V21ZM15.8375 11.5893L14.7125 12.7064C13.8125 13.5929 13.25 14.3214 13.25 16.1429H10.75V15.5357C10.75 14.2 11.3125 12.9857 12.2125 12.0993L13.7625 10.5693C14.225 10.1321 14.5 9.525 14.5 8.85714C14.5 7.52143 13.375 6.42857 12 6.42857C10.625 6.42857 9.5 7.52143 9.5 8.85714H7C7 6.17357 9.2375 4 12 4C14.7625 4 17 6.17357 17 8.85714C17 9.92571 16.55 10.8971 15.8375 11.5893Z\" />\n </SvgWrapper>\n );\n}\n","import { type AnchorHTMLAttributes, type HTMLAttributes } from 'react';\n\nimport styles from './Typography.module.css';\nimport {\n type OtherTypographyType,\n type TypographyAnchorType,\n type TypographyComponentProps,\n type TypographyLabelType,\n} from './Typography.types';\nimport {\n getElementType,\n getTypographyCn,\n isCaption,\n isLegend,\n} from './Typography.utils';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../../types';\nimport { cn } from '../../../utils';\nimport { getTextColor } from '../../../utils/color';\nimport { ElementAs } from '../../helpers/ElementAs/ElementAs';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport { Icon } from '../../Icon';\nimport { OpenExternalIcon } from '../../Icon/icons';\nimport typographyStyles from '../typographyStyles.module.css';\n\ntype AnchorTypographyProps = BaseComponentProps<\n HTMLAnchorElement,\n TypographyComponentProps & {\n /**nativ `href`-prop ved `typographyType='a'`. */\n href?: string | undefined;\n\n /** Spesifiserer om lenka er ekstern ved `typographyType='a'` eller `as='a'`.*/\n externalLink?: boolean;\n\n /**nativ `target`-prop ved `typographyType='a'`. */\n target?: string;\n },\n AnchorHTMLAttributes<HTMLAnchorElement>\n>;\n\ntype LabelTypographyProps = BaseComponentProps<\n HTMLLabelElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLLabelElement>\n>;\n\ntype OtherTypographyProps = BaseComponentProps<\n HTMLElement,\n TypographyComponentProps,\n HTMLAttributes<HTMLElement>\n>;\n\nexport type TypographyProps =\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: TypographyAnchorType;\n } & AnchorTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: TypographyLabelType;\n } & LabelTypographyProps)\n | ({\n /**Styling basert på det typografiske utvalget definert i Figma. Returnerer default HTML tag for hver type. **OBS!** Ved bruk av `'a'` er det flere tilgjengelige props, se under. */\n typographyType?: OtherTypographyType;\n } & OtherTypographyProps);\n\nconst isAnchorProps = (\n props: TypographyProps,\n): props is AnchorTypographyProps => props.typographyType === 'a';\n\nexport const Typography = (props: TypographyProps) => {\n const {\n typographyType = 'bodyMedium',\n as: propAs,\n children,\n bold,\n underline,\n italic,\n style,\n id,\n withMargins,\n color,\n className,\n htmlProps = {},\n ...rest\n } = props;\n\n const { style: htmlPropsStyle, ...restHtmlProps } = htmlProps;\n\n const as = propAs ? propAs : getElementType(typographyType);\n const typographyCn = getTypographyCn(typographyType);\n\n let relProp;\n let targetProp;\n let externalLinkProp;\n if (isAnchorProps(props)) {\n const { externalLink, target } = props;\n relProp = as === 'a' ? 'noopener noreferer' : undefined;\n targetProp = as !== 'a' ? undefined : externalLink ? '_blank' : target;\n externalLinkProp = as === 'a' && externalLink ? externalLink : undefined;\n }\n\n return (\n <ElementAs\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.container,\n externalLinkProp && typographyStyles['a--external'],\n typographyStyles[typographyCn],\n withMargins && typographyStyles[`${typographyCn}--margins`],\n isLegend(as) && typographyStyles.legend,\n isCaption(as) &&\n withMargins &&\n typographyStyles['caption--withMargins'],\n bold && typographyStyles.bold,\n underline && typographyStyles.underline,\n italic && typographyStyles.italic,\n as === 'a' && focusable,\n ),\n restHtmlProps,\n rest,\n )}\n as={as}\n style={{\n ...htmlPropsStyle,\n ...style,\n color: color && getTextColor(color),\n }}\n rel={relProp}\n target={targetProp}\n >\n {children}\n {externalLinkProp && <Icon icon={OpenExternalIcon} iconSize=\"inherit\" />}\n </ElementAs>\n );\n};\n\nTypography.displayName = 'Typography';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { type BaseTypographyProps, Typography } from '../Typography';\n\nexport type CaptionProps = BaseComponentPropsWithChildren<\n HTMLTableCaptionElement,\n BaseTypographyProps\n>;\n\nexport const Caption = ({\n id,\n className,\n htmlProps,\n children,\n ...rest\n}: CaptionProps) => {\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n typographyType=\"headingLarge\"\n as=\"caption\"\n >\n {children}\n </Typography>\n );\n};\n\nCaption.displayName = 'Caption';\n","import { type ElementType } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n Typography,\n type TypographyHeadingType,\n} from '../Typography';\n\nconst getHeadingElement = (level: HeadingLevel): ElementType => `h${level}`;\n\nconst getDefaultTypographyType = (h: ElementType): TypographyHeadingType => {\n switch (h) {\n case 'h1':\n return 'headingXlarge';\n case 'h2':\n return 'headingLarge';\n case 'h3':\n return 'headingMedium';\n case 'h4':\n return 'headingSmall';\n case 'h5':\n return 'headingXsmall';\n case 'h6':\n return 'headingXxsmall';\n default:\n return 'headingXlarge';\n }\n};\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport type HeadingProps = BaseComponentPropsWithChildren<\n HTMLHeadingElement,\n {\n /**Nivå på overskriften. Komponenten returnerer HTML heading element med dette nivået med default styling. */\n level: HeadingLevel;\n /**Spesifiserer typografistil basert på utvalget for HTML heading elementer. */\n typographyType?: TypographyHeadingType;\n } & BaseTypographyProps\n>;\n\nexport const Heading = ({\n id,\n className,\n htmlProps,\n children,\n typographyType,\n level,\n ...rest\n}: HeadingProps) => {\n const headingElement: ElementType = getHeadingElement(level);\n\n const standardTypographyType =\n typographyType ?? getDefaultTypographyType(headingElement);\n\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n typographyType={standardTypographyType}\n as={headingElement}\n >\n {children}\n </Typography>\n );\n};\n\nHeading.displayName = 'Heading';\n",".read-only {\n display: flex;\n}\n\n.read-only__icon {\n align-self: center;\n flex-shrink: 0;\n margin-inline-end: var(--dds-spacing-x0-125);\n width: 1.25em;\n height: 1.25em;\n}\n","import { type LabelHTMLAttributes } from 'react';\n\nimport styles from './Label.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { RequiredMarker, cn } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport { LockIcon } from '../../Icon/icons';\nimport { type BaseTypographyProps, Typography } from '../Typography';\n\ntype PickedHTMLAttributes = Pick<\n LabelHTMLAttributes<HTMLLabelElement>,\n 'htmlFor'\n>;\n\nexport interface BaseLabelProps {\n /** Om input knyttet til ledeteksten er påkrevd; påvirker styling. */\n showRequiredStyling?: boolean;\n /** Om input knyttet til ledeteksten er `read-only`; påvirker styling. */\n readOnly?: boolean;\n}\n\nexport type LabelProps = BaseComponentPropsWithChildren<\n HTMLLabelElement,\n BaseLabelProps & BaseTypographyProps & PickedHTMLAttributes,\n Omit<LabelHTMLAttributes<HTMLLabelElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Label = ({\n showRequiredStyling,\n readOnly,\n id,\n className,\n htmlProps,\n children,\n ...rest\n}: LabelProps) => {\n return (\n <Typography\n {...getBaseHTMLProps(\n id,\n cn(className, readOnly && styles['read-only']),\n htmlProps,\n rest,\n )}\n typographyType=\"labelMedium\"\n >\n {readOnly && (\n <Icon\n icon={LockIcon}\n iconSize=\"small\"\n className={styles['read-only__icon']}\n />\n )}\n {children}\n {showRequiredStyling && <RequiredMarker />}\n </Typography>\n );\n};\n\nLabel.displayName = 'Label';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n Typography,\n type TypographyHeadingType,\n} from '../Typography';\n\nexport type LegendProps = BaseComponentPropsWithChildren<\n HTMLLegendElement,\n BaseTypographyProps & {\n /**Typografistil basert på utvalget for HTML heading elementer. */\n typographyType?: TypographyHeadingType;\n }\n>;\n\nexport const Legend = ({\n id,\n className,\n htmlProps,\n typographyType = 'headingLarge',\n ...rest\n}: LegendProps) => {\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n as=\"legend\"\n typographyType={typographyType}\n />\n );\n};\n\nLegend.displayName = 'Legend';\n","import { type AnchorHTMLAttributes } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport { Icon } from '../../Icon';\nimport { OpenExternalIcon } from '../../Icon/icons';\nimport {\n type BaseTypographyProps,\n type TypographyBodyType,\n getTypographyCn,\n} from '../Typography';\nimport typographyStyles from '../typographyStyles.module.css';\n\ntype PickedHTMLAttributes = Pick<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n 'onClick' | 'href' | 'target'\n>;\n\nexport type LinkProps = BaseComponentPropsWithChildren<\n HTMLAnchorElement,\n {\n /**Spesifiserer om lenken fører til et eksternt nettsted eller åpnes i nytt vindu. Påvirker styling og setter `target` prop. */\n external?: boolean;\n /**Om lenken kan få `:visited`-styling. */\n withVisited?: boolean;\n /**Spesifiserer typografistil basert på utvalget for brødtekst. Arver hvis ikke oppgitt. */\n typographyType?: TypographyBodyType;\n } & BaseTypographyProps &\n PickedHTMLAttributes,\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const Link = ({\n id,\n className,\n htmlProps,\n children,\n typographyType,\n withMargins,\n withVisited,\n external,\n target,\n ...rest\n}: LinkProps) => {\n return (\n <a\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n typographyStyles.a,\n external && typographyStyles['a--external'],\n withVisited && typographyStyles['a--visited'],\n typographyType && typographyStyles[getTypographyCn(typographyType)],\n typographyType &&\n withMargins &&\n typographyStyles[`${getTypographyCn(typographyType)}--margins`],\n focusable,\n ),\n htmlProps,\n rest,\n )}\n {...rest}\n rel=\"noopener noreferer\"\n target={external ? '_blank' : target}\n >\n {children}\n {external && <Icon iconSize=\"inherit\" icon={OpenExternalIcon} />}\n </a>\n );\n};\n\nLink.displayName = 'Link';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport {\n type BaseTypographyProps,\n Typography,\n type TypographyBodyType,\n type TypographyLeadType,\n} from '../Typography';\n\nexport type ParagraphProps = BaseComponentPropsWithChildren<\n HTMLParagraphElement,\n {\n /**Spesifiserer typografistil basert på utvalget for brødtekst og ingress. */\n typographyType?: TypographyBodyType | TypographyLeadType;\n } & BaseTypographyProps\n>;\n\nexport const Paragraph = ({\n id,\n className,\n htmlProps,\n children,\n typographyType = 'bodyMedium',\n ...rest\n}: ParagraphProps) => {\n return (\n <Typography\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n typographyType={typographyType}\n >\n {children}\n </Typography>\n );\n};\n\nParagraph.displayName = 'Paragraph';\n","import { type ResponsiveProps } from '../../layout';\n\nexport function getDefaultText(\n value?: string | number | ReadonlyArray<string>,\n defaultValue?: string | number | ReadonlyArray<string>,\n): string {\n if (typeof value === 'string') {\n return value;\n }\n\n if (typeof defaultValue === 'string') {\n return defaultValue;\n }\n\n return '';\n}\n\nexport function getInputWidth(\n width?: ResponsiveProps['width'],\n defaultW?: ResponsiveProps['width'] | false | null,\n): ResponsiveProps['width'] {\n return width ? width : defaultW ? defaultW : 'var(--dds-input-default-width)';\n}\n","import type { Ref, RefCallback, RefObject } from 'react';\nimport { useCallback } from 'react';\n\n/**\n * Kombinerer refs for et element.\n * Eksempel på bruk:\n * ```\n * const MyComponent = ({ref, ...props}) => {\n *\n * const itemRef = useRef<HTMLDivElement>(null);\n * const combinedRef = useCombinedRef(ref, itemRef);\n *\n * return <div ref={combinedRef} {...props}>innhold</div>\n * });\n * ```\n * @param refs array med refs.\n * @template T elementet som refereres til.\n * @returns callback med kombinerte refs.\n *\n * {@link useCombinedRef}\n */\n\nexport function useCombinedRef<T>(\n ...refs: Array<Ref<T> | undefined>\n): RefCallback<T> {\n return useCallback((element: T) => {\n refs.filter(Boolean).forEach(ref => {\n if (typeof ref === 'function') ref(element);\n else if (ref && typeof ref === 'object')\n (ref as RefObject<T>).current = element;\n });\n }, refs);\n}\n","import {\n type Coords,\n type Strategy,\n type UseFloatingReturn,\n arrow,\n autoUpdate,\n flip,\n offset as floatingOffset,\n shift,\n useFloating,\n} from '@floating-ui/react-dom';\n\nconst defaultOffset = 8;\n\nexport type Placement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n\nexport interface UseFloatPositionOptions {\n /**\n * Whether to update the position of the floating element on every animation frame if required.\n * This is optimized for performance but can still be costly.\n * @default true\n */\n animationFrame?: boolean;\n /**\n * `offset` is used to displace the floating element from its core placement.\n * The value passed is logical, meaning its effect on the\n * physical result is dependent on the writing direction (e.g. RTL).\n * @default 8\n */\n offset?: number;\n /**\n * Where to place the floating element relative to its reference element.\n * @default 'bottom'\n */\n placement?: Placement;\n}\n\nexport interface FloatingStyles {\n position: Strategy;\n top: number;\n left: number;\n}\n\ninterface UseFloatPosition {\n refs: UseFloatingReturn['refs'];\n styles: {\n floating: FloatingStyles;\n arrow:\n | {\n [x: string]: string | number;\n position: Strategy;\n top: string | number;\n left: string | number;\n transform: string;\n }\n | undefined;\n };\n}\n\nexport const useFloatPosition = (\n arrowRef: HTMLElement | null,\n options: UseFloatPositionOptions = {},\n): UseFloatPosition => {\n const {\n animationFrame = true,\n offset = defaultOffset,\n placement = 'bottom',\n } = options;\n\n const middleware = [\n floatingOffset(offset),\n flip(),\n shift(),\n\n // Only add arrow(...) if arrowRef is set\n ...(arrowRef ? [arrow({ element: arrowRef })] : []),\n ];\n\n const {\n x,\n y,\n strategy,\n middlewareData,\n placement: actualPlacement,\n refs,\n } = useFloating({\n placement,\n middleware,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, update, { animationFrame }),\n });\n\n return {\n refs,\n styles: {\n floating: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n arrow: middlewareData.arrow\n ? getArrowStyling(strategy, actualPlacement, middlewareData.arrow)\n : undefined,\n },\n };\n};\n\ntype Arrow = Partial<Coords> & { centerOffset: number };\n\nfunction getArrowStyling(\n strategy: Strategy,\n placement: Placement,\n arrow: Arrow,\n) {\n const arrowPlacement = placementToArrowPlacement(placement);\n\n const arrowPlacementOffset = {\n top: '-15px',\n bottom: '-15px',\n right: '-21px',\n left: '-21px',\n }[arrowPlacement];\n\n const rotateArrow = {\n top: 'rotate(180deg)',\n right: 'rotate(-90deg)',\n bottom: '',\n left: 'rotate(90deg)',\n }[arrowPlacement];\n\n return {\n position: strategy,\n top: arrow?.y ?? '',\n left: arrow?.x ?? '',\n [arrowPlacement]: arrowPlacementOffset,\n transform: rotateArrow,\n };\n}\n\ntype ArrowPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nfunction placementToArrowPlacement(placement: Placement): ArrowPlacement {\n switch (placement) {\n case 'top':\n case 'top-start':\n case 'top-end':\n return 'bottom';\n\n case 'bottom':\n case 'bottom-start':\n case 'bottom-end':\n return 'top';\n\n case 'left':\n case 'left-start':\n case 'left-end':\n return 'right';\n\n case 'right':\n case 'right-start':\n case 'right-end':\n return 'left';\n }\n}\n","import { type RefObject, useEffect, useRef } from 'react';\n\nimport { getFocusableElements } from '../../../dds-components/src/utils';\n\n/**\n * Fanger fokus i en loop inni et element. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const componentRef = useFocusTrap<HTMLDivElement>(props.isOpen);\n *\n * return props.isOpen ? <div ref={componentRef}><button>click</button></div> : null;\n *\n * }\n * ```\n * @param active om focus skal fanges, f.eks. når en modal åpnes.\n * @param initialFocusRef Ref som skal motta focus når focus trap er aktiv.\n * @returns ref til elementet som fanger fokus.\n */\n\nexport function useFocusTrap<T extends HTMLElement>(\n active: boolean,\n initialFocusRef: RefObject<HTMLElement | null> | undefined = undefined,\n): RefObject<T | null> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current) return;\n\n const focusableElements = getFocusableElements(elementRef);\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (!e.shiftKey && document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n\n if (e.shiftKey && document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n }\n\n const element = elementRef.current;\n\n if (element && active) {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false);\n\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return useCallback(() => isMounted.current, []);\n};\n","import { useEffect, useState } from 'react';\n\n/**\n * Tillater effekter og animasjoner å bli gjennomført like etter et element blir lagt til eller like før det blir fjernet fra DOM.\n * Typisk bruk:\n * ```\n * // CSS\n * .component {\n * transition: opacity 0.2s;\n * opacity: 0;\n * }\n *\n * .transitionedIn.mounted {\n * opacity: 1;\n * }\n *\n * const MyComponent = (props) => {\n *\n * const hasTransitionedIn = useMountTransition(props.isMounted, 500);\n *\n * return props.isMounted || hasTransitionedIn ? (\n * <div\n * className={`component ${hasTransitionedIn && 'transitionedIn'} ${props.isMounted && 'mounted'}`}\n * >\n * innhold\n * </div>)\n * : null;\n *\n * }\n * ```\n * @param isMounted om elementet er mounted.\n * @param unmountDelay hvor lenge transition skal vare før unmount.\n * @returns om transition er ferdig.\n */\n\nexport const useMountTransition = (\n isMounted: boolean,\n unmountDelay: number,\n) => {\n const [hasTransitionedIn, setHasTransitionedIn] = useState(false);\n\n useEffect(() => {\n let timeoutId: ReturnType<typeof setTimeout>;\n if (isMounted && !hasTransitionedIn) setHasTransitionedIn(true);\n else if (!isMounted && hasTransitionedIn) {\n timeoutId = setTimeout(() => setHasTransitionedIn(false), unmountDelay);\n }\n return () => {\n clearTimeout(timeoutId);\n };\n }, [unmountDelay, isMounted, hasTransitionedIn]);\n return hasTransitionedIn;\n};\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når brukeren klikker utenfor et element, f.eks at elementet fjernes fra DOM.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnClickOutside(ref.current, () => setOpen(false));\n *\n * return <div ref={ref}>innhold</div>\n * ```\n * @param element HTML elementet man klikker utenfor.\n * @param handler funksjonen som kjøres ved klikk utenfor.\n */\n\nexport function useOnClickOutside(\n element:\n | HTMLElement\n | null\n | undefined\n | Array<HTMLElement | null | undefined>,\n handler: (event: MouseEvent | TouchEvent) => void,\n) {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const elements = Array.isArray(element)\n ? element\n : [element].filter(Boolean);\n\n const hasClickedInside = elements.some(el =>\n el?.contains(event.target as HTMLElement),\n );\n\n // ClearIndicator in react-select removes itself from DOM before this handler goes off.\n // Therefore a click on it will always be counted as a click outside, for everything.\n // This is not a great solution, but it is a fair assumption that this will do more good than harm.\n const clickedOnSomethingInDocument = document.contains(\n event.target as Node,\n );\n if (hasClickedInside || !clickedOnSomethingInDocument) return;\n\n handler(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [element, handler]);\n}\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når en spesifisert tast blir trykt ned.\n * Typisk bruk:\n * ```\n * const [isOpen, setOpen] = useState(true);\n * const ref = useRef<HTMLElement>(null);\n * useOnKeyDown(['Escape', 'Esc'], () => setOpen(false));\n *\n * return isOpen ? <div>innhold</div> : null;\n * ```\n * @param key tasten som trykkes.\n * @param handler funksjonen som skal kjøres.\n */\n\nexport const useOnKeyDown = (\n key: string | Array<string>,\n handler: (event: KeyboardEvent) => void,\n) => {\n useEffect(() => {\n const listener = (event: KeyboardEvent) => {\n const keys = Array.isArray(key) ? key : [key];\n if (keys.indexOf(event.key) !== -1) {\n handler(event);\n }\n };\n\n document.addEventListener('keydown', listener, true);\n\n return () => {\n document.removeEventListener('keydown', listener, true);\n };\n }, [handler]);\n};\n","import { type RefObject, useEffect, useRef } from 'react';\n\nimport { getFocusableElements } from '../../../dds-components/src/utils';\n\n/**\n * Returnerer fokus til et element når første eller siste barn i en container mister fokus ved tastaturnavigasjon. Typisk bruk:\n * ```\n * const MyComponent = (props) => {\n *\n * const [isOpen, setOpen] = useState(true);\n * const close = () => setOpen(false);\n * const triggerRef = useRef<HTMLButtonElement>(null);\n * const containerRef = useReturnFocusOnBlur<HTMLDivElement>(\n * isOpen,\n * triggerRef.current,\n * () => close()\n * );\n *\n * return (\n * <div>\n * <button ref={triggerRef} >Åpne popover</button>\n * <div ref={containerRef}>\n * <button>gjør noe</button>\n * </div>\n * </div>\n * )\n * }\n * ```\n * @param active om container skal få fokus, f.eks. når en modal åpnes.\n * @param triggerElement elementet som skal få fokus når fokus forlater container.\n * @param onBlur ekstra logikk når fokus forlater container.\n * @returns ref til container som får fokus.\n */\n\nexport function useReturnFocusOnBlur<T extends HTMLElement>(\n active: boolean,\n onBlur: () => void,\n triggerElement?: HTMLElement | null,\n): RefObject<T | null> {\n const elementRef = useRef<T>(null);\n\n useEffect(() => {\n function handleFocus(e: KeyboardEvent) {\n if (e.key !== 'Tab' || !active || !elementRef.current || !triggerElement)\n return;\n\n const focusableElements = getFocusableElements(elementRef);\n const lastElement = focusableElements[focusableElements.length - 1];\n const firstElement = focusableElements[0];\n\n if (\n (!e.shiftKey && document.activeElement === lastElement) ||\n (e.shiftKey && document.activeElement === firstElement) ||\n (e.shiftKey && document.activeElement === element)\n ) {\n triggerElement.focus();\n e.preventDefault();\n onBlur();\n }\n }\n\n const element = elementRef.current;\n if (element && active) {\n element.focus();\n element.addEventListener('keydown', handleFocus);\n }\n\n return () => {\n element?.removeEventListener('keydown', handleFocus);\n };\n }, [active]);\n\n return elementRef;\n}\n","import {\n type Dispatch,\n type KeyboardEvent,\n type SetStateAction,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\nimport { type Direction } from '../types';\n\nexport const isKeyboardEvent = (\n e: Event | KeyboardEvent<Element>,\n): e is KeyboardEvent<Element> =>\n (e as KeyboardEvent<Element>).key !== undefined;\n\n/**\n * Bytter fokus mellom elementer i en gruppe med piltaster og ikke Tab, og looper fokus i gruppen. Typisk bruk:\n * ```\n * import elements from './elements';\n * import RoveItem from './RoveItem';\n *\n * const MyComponent = () => {\n * const [focus, setFocus] = useRoveFocus(elements.length);\n *\n * return (\n * <ul>\n * {elements.map((element, index) => (\n * <li key={element}>\n * <RoveItem index={index} focus={focus === index} setFocus={setFocus}>{element.name}</RoveItem>\n * </li>\n * ))}\n * </ul>)\n * }\n * ```\n * @param size antall elementer i gruppen.\n * @param active om fokus skal kontrolleres av hooken. Når status blir inaktiv vil fokusrekkefølge nullstilles.\n * @param direction retning elementene blas i.\n * @param noWrap om indeksen skal 'wrappe' rundt til 0 hvis den går over size - 1, eller til size - 1 hvis den går under 0.\n * @returns hook par: indeksen til fokuserte elemenentet og funksjonen som håndterer fokus.\n */\n\nexport function useRoveFocus(\n size?: number,\n active?: boolean,\n direction: Direction = 'column',\n noWrap?: boolean,\n): [number, Dispatch<SetStateAction<number>>] {\n const [currentFocusIndex, setCurrentFocusIndex] = useState(-1);\n\n const nextKey = direction === 'row' ? 'ArrowRight' : 'ArrowDown';\n const previousKey = direction === 'row' ? 'ArrowLeft' : 'ArrowUp';\n\n const handleKeyDown = useCallback(\n (e: Event) => {\n if (!size || !isKeyboardEvent(e)) return;\n if (e.key === nextKey) {\n // Down / Right arrow\n e.preventDefault();\n setCurrentFocusIndex(prev => {\n if (prev === size - 1) return noWrap ? prev : 0;\n return prev + 1;\n });\n } else if (e.key === previousKey) {\n // Up / Left arrow\n e.preventDefault();\n setCurrentFocusIndex(prev => {\n if (prev === -1 || prev === 0) return noWrap ? prev : size - 1;\n return prev - 1;\n });\n }\n },\n [size, setCurrentFocusIndex, direction, noWrap],\n );\n\n useEffect(() => {\n if (!active) {\n setCurrentFocusIndex(-1);\n return;\n }\n\n document.addEventListener('keydown', handleKeyDown, false);\n return () => {\n document.removeEventListener('keydown', handleKeyDown, false);\n };\n }, [handleKeyDown, active]);\n\n return [currentFocusIndex, setCurrentFocusIndex];\n}\n","import { useEffect, useState } from 'react';\n\nexport enum ScreenSize {\n XSmall = 0,\n Small,\n Medium,\n Large,\n XLarge,\n}\n\nconst screenSizesAndMediaQueries: Array<[ScreenSize, string]> = [\n [\n ScreenSize.XLarge,\n /** var(--dds-breakpoint-xl) */\n `only screen and (min-width: 1920px)`,\n ],\n [\n ScreenSize.Large,\n /** var(--dds-breakpoint-lg) */\n `only screen and (min-width: 1280px)`,\n ],\n [\n ScreenSize.Medium,\n /** var(--dds-breakpoint-md) */\n `only screen and (min-width: 960px)`,\n ],\n [\n ScreenSize.Small,\n /** var(--dds-breakpoint-sm) */\n `only screen and (min-width: 600px)`,\n ],\n [\n ScreenSize.XSmall,\n /** var(--dds-breakpoint-xs) */\n `only screen and (min-width: 1px)`,\n ],\n];\n\n/**\n * Sjekker skjermstørrelsen basert på brekkpunkter definerte i designsystemet. Eksempel på bruk:\n * ```\n * const MyComponent = () => {\n * const screenSize = useScreenSize();\n * const isSmallScreen = screenSize === ScreenSize.Small;\n *\n * return <div className={isSmallScreen && 'smallDiv'} >innhold</div>\n * }\n * ```\n * @returns den aktuelle skjermstørrelsen basert på {@link ScreenSize}.\n */\n\nexport const useScreenSize = function () {\n const [screenSize, setScreenSize] = useState(ScreenSize.Large);\n\n useEffect(() => {\n function listener() {\n for (const [screenSize, mediaQuery] of screenSizesAndMediaQueries) {\n if (window.matchMedia(mediaQuery).matches) {\n setScreenSize(screenSize);\n return;\n }\n }\n }\n listener();\n\n window.addEventListener('resize', listener);\n return () => window.removeEventListener('resize', listener);\n }, []);\n\n return screenSize;\n};\n","import { useEffect } from 'react';\n\n/**\n * Kjører logikk når vindusstørrelsen endrer seg.\n * Typisk bruk:\n * ```\n * const [width, setWidth] = useState<number>(window.innerWidth);\n * useResize(() => setWidth(window.innerWidth));\n *\n * return <div>vindusstørrelse: {width}px</div>;\n * ```\n * @param handler funksjonen som skal kjøres.\n */\n\nexport const useWindowResize = (handler: () => void) => {\n useEffect(() => {\n window.addEventListener('resize', handler);\n return () => window.removeEventListener('resize', handler);\n }, [handler]);\n};\n","import { ScreenSize } from '../../../hooks';\nimport { type Breakpoint } from '../../layout/common/Responsive.types';\n\nexport const getLiteralScreenSize = (screenSize: ScreenSize): Breakpoint => {\n switch (screenSize) {\n case ScreenSize.XLarge:\n return 'xl';\n case ScreenSize.Large:\n return 'lg';\n case ScreenSize.Medium:\n return 'md';\n case ScreenSize.Small:\n return 'sm';\n case ScreenSize.XSmall:\n return 'xs';\n }\n};\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../../utils';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\n\nexport type StylelessListProps<TProps extends object = object> = TProps &\n ComponentPropsWithRef<'ul'>;\n\nexport const StylelessList = ({ className, ...rest }: StylelessListProps) => (\n <ul {...rest} className={cn(className, utilStyles['remove-list-styling'])} />\n);\n\nexport type StylelessOListProps<TProps extends object = object> = TProps &\n ComponentPropsWithRef<'ol'>;\n\nexport const StylelessOList = ({ className, ...rest }: StylelessOListProps) => (\n <ol {...rest} className={cn(className, utilStyles['remove-list-styling'])} />\n);\n","import { type Property } from 'csstype';\n\n/**\n * Styling utils i TS (CSS-in-JS)\n */\n\n/**\n * DDS utils\n */\n\nexport const outlineOffset = 'var(--dds-spacing-x0-125)';\nexport const outlineInset = 'calc(var(--dds-spacing-x0-125) * -1)';\n\nexport const focusVisible = {\n outline: 'var(--dds-color-focus-outside) 2px solid',\n outlineOffset: outlineOffset,\n boxShadow: '0 0 0 2px var(--dds-color-focus-inside)',\n};\n\nexport const focusVisibleTransitionValue = 'outline-offset 0.2s';\n\nexport const focusVisibleInset = {\n outline: 'var(--dds-color-focus-outside) 2px solid',\n outlineOffset: outlineInset,\n};\n\nconst scrollbarWidth: Property.ScrollbarWidth = 'thin';\n\nexport const scrollbarStyling = {\n scrollbarColor: 'var(--dds-color-surface-scrollbar) transparent',\n scrollbarWidth: scrollbarWidth,\n\n /* Safari styling. TODO: fjernes når scrollbar styling blir standardisert */\n\n /* width */\n '&::-webkit-scrollbar': {\n width: 'var(--dds-spacing-x0-5)',\n height: 'var(--dds-spacing-x0-5)',\n },\n /* Track */\n '&::-webkit-scrollbar-track': {\n background: 'transparent',\n },\n /* Handle */\n '&::-webkit-scrollbar-thumb': {\n background: 'var(--dds-color-surface-scrollbar)',\n },\n};\n\nexport const visibilityTransition = (open: boolean) => {\n return `\n @media (prefers-reduced-motion: no-preference) {\n transition:\n visibility 0.4s,\n opacity 0.2s;\n }\n visibility: ${open ? 'visible' : 'hidden'};\n opacity: ${open ? 1 : 0};\n `;\n};\n\n/**\n * Generelle utils\n */\n\nexport const hideInput = {\n clip: 'rect(0 0 0 0)',\n position: 'absolute',\n height: '1px',\n width: '1px',\n margin: 0,\n};\n\nexport const inheritLinkStyling = {\n color: 'inherit',\n textDecoration: 'inherit',\n};\n\nexport const removeButtonStyling = {\n background: 'none',\n color: 'inherit',\n border: 'none',\n padding: 0,\n font: 'inherit',\n cursor: 'pointer',\n outline: 'inherit',\n};\n\nexport const removeListStyling = {\n listStyle: 'none',\n padding: 0,\n margin: 0,\n};\n\nexport const normalizeButton = {\n margin: 0,\n textTransform: 'none' as Property.TextTransform,\n};\n","/* Primitives */\n\n.dds-p {\n --dds-r-p: var(--dds-r-xs-p);\n padding: var(--dds-r-p, initial);\n}\n\n.dds-p-i {\n --dds-r-p-i: var(--dds-r-xs-p-i);\n padding-inline: var(--dds-r-p-i, initial);\n}\n\n.dds-p-b {\n --dds-r-p-b: var(--dds-r-xs-p-b);\n padding-block: var(--dds-r-p-b, initial);\n}\n\n.dds-m {\n --dds-r-m: var(--dds-r-xs-m);\n margin: var(--dds-r-m, initial);\n}\n\n.dds-m-i {\n --dds-r-m-i: var(--dds-r-xs-m-i);\n margin-inline: var(--dds-r-m-i, initial);\n}\n\n.dds-m-b {\n --dds-r-m-b: var(--dds-r-xs-m-b);\n margin-block: var(--dds-r-m-b, initial);\n}\n\n.dds-h {\n --dds-r-h: var(--dds-r-xs-h);\n height: var(--dds-r-h, initial);\n}\n\n.dds-max-h {\n --dds-r-max-h: var(--dds-r-xs-max-h);\n max-height: var(--dds-r-max-h, initial);\n}\n\n.dds-min-h {\n --dds-r-min-h: var(--dds-r-xs-min-h);\n min-height: var(--dds-r-min-h, initial);\n}\n\n.dds-w {\n --dds-r-w: var(--dds-r-xs-w);\n width: var(--dds-r-w, initial);\n}\n\n.dds-max-w {\n --dds-r-max-w: var(--dds-r-xs-max-w);\n max-width: var(--dds-r-max-w, initial);\n}\n\n.dds-min-w {\n --dds-r-min-w: var(--dds-r-xs-min-w);\n min-width: var(--dds-r-min-w, initial);\n}\n\n.dds-pos {\n --dds-r-pos: var(--dds-r-xs-pos);\n position: var(--dds-r-pos, initial);\n}\n\n.dds-l {\n --dds-r-l: var(--dds-r-xs-l);\n left: var(--dds-r-l, initial);\n}\n\n.dds-r {\n --dds-r-r: var(--dds-r-xs-r);\n right: var(--dds-r-r, initial);\n}\n\n.dds-t {\n --dds-r-t: var(--dds-r-xs-t);\n top: var(--dds-r-t, initial);\n}\n\n.dds-b {\n --dds-r-b: var(--dds-r-xs-b);\n bottom: var(--dds-r-b, initial);\n}\n\n.dds-o {\n --dds-r-o: var(--dds-r-xs-o);\n overflow: var(--dds-r-o, initial);\n}\n\n.dds-o-x {\n --dds-r-o-x: var(--dds-r-xs-o-x);\n overflow-x: var(--dds-r-o-x, initial);\n}\n\n.dds-o-y {\n --dds-r-o-y: var(--dds-r-xs-o-y);\n overflow-y: var(--dds-r-o-y, initial);\n}\n\n.dds-display {\n --dds-r-display: var(--dds-r-xs-display);\n display: var(--dds-r-display, initial);\n}\n\n.dds-text-align {\n --dds-r-text-align: var(--dds-r-xs-text-align);\n text-align: var(--dds-r-text-align, initial);\n}\n\n/* Flex */\n\n.dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-xs-flex-dir);\n flex-direction: var(--dds-r-flex-dir, initial);\n}\n\n.dds-gap {\n --dds-r-gap: var(--dds-r-xs-gap);\n gap: var(--dds-r-gap, initial);\n}\n\n.dds-c-gap {\n --dds-r-c-gap: var(--dds-r-xs-c-gap);\n -moz-column-gap: var(--dds-r-c-gap, initial);\n column-gap: var(--dds-r-c-gap, initial);\n}\n\n.dds-r-gap {\n --dds-r-r-gap: var(--dds-r-xs-r-gap);\n row-gap: var(--dds-r-r-gap, initial);\n}\n\n.dds-a-i {\n --dds-r-a-i: var(--dds-r-xs-a-i);\n align-items: var(--dds-r-a-i, initial);\n}\n\n.dds-a-c {\n --dds-r-a-c: var(--dds-r-xs-a-c);\n align-content: var(--dds-r-a-c, initial);\n}\n\n.dds-j-i {\n --dds-r-j-i: var(--dds-r-xs-j-i);\n justify-items: var(--dds-r-j-i, initial);\n}\n\n.dds-j-c {\n --dds-r-j-c: var(--dds-r-xs-j-c);\n justify-content: var(--dds-r-j-c, initial);\n}\n\n.dds-wrap {\n --dds-r-wrap: var(--dds-r-xs-wrap);\n flex-wrap: var(--dds-r-wrap, initial);\n}\n\n.dds-basis {\n --dds-r-basis: var(--dds-r-xs-basis);\n flex-basis: var(--dds-r-basis, initial);\n}\n\n.dds-flow {\n --dds-r-flow: var(--dds-r-xs-flow);\n flex-flow: var(--dds-r-flow, initial);\n}\n\n@media (max-width: 599px) {\n .dds-p {\n --dds-r-p: var(--dds-r-xs-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-xs-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-xs-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-xs-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-xs-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-xs-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-xs-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-xs-max-h);\n }\n .dds-min-h {\n --dds-r-max-h: var(--dds-r-xs-max-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-xs-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-xs-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-xs-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-xs-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-xs-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-xs-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-xs-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-xs-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-xs-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-xs-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-xs-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-xs-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-xs-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-xs-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-xs-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-xs-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-xs-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-xs-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-xs-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-xs-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-xs-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-xs-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-xs-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-xs-flow);\n }\n}\n\n@media (min-width: 600px) {\n .dds-p {\n --dds-r-p: var(--dds-r-sm-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-sm-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-sm-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-sm-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-sm-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-sm-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-sm-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-sm-max-h);\n }\n .dds-min-h {\n --dds-r-max-h: var(--dds-r-sm-max-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-sm-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-sm-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-sm-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-sm-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-sm-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-sm-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-sm-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-sm-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-sm-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-sm-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-sm-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-sm-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-sm-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-sm-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-sm-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-sm-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-sm-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-sm-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-sm-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-sm-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-sm-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-sm-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-sm-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-sm-flow);\n }\n}\n\n@media (min-width: 960px) {\n .dds-p {\n --dds-r-p: var(--dds-r-md-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-md-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-md-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-md-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-md-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-md-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-md-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-md-max-h);\n }\n .dds-min-h {\n --dds-r-max-h: var(--dds-r-md-max-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-md-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-md-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-md-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-md-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-md-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-md-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-md-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-md-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-md-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-md-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-md-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-md-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-md-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-md-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-md-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-md-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-md-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-md-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-md-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-md-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-md-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-md-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-md-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-md-flow);\n }\n}\n\n@media (min-width: 1280px) {\n .dds-p {\n --dds-r-p: var(--dds-r-lg-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-lg-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-lg-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-lg-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-lg-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-lg-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-lg-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-lg-max-h);\n }\n .dds-min-h {\n --dds-r-max-h: var(--dds-r-lg-max-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-lg-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-lg-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-lg-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-lg-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-lg-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-lg-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-lg-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-lg-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-lg-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-lg-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-lg-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-lg-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-lg-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-lg-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-lg-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-lg-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-lg-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-lg-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-lg-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-lg-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-lg-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-lg-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-lg-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-lg-flow);\n }\n}\n\n@media (min-width: 1920px) {\n .dds-p {\n --dds-r-p: var(--dds-r-xl-p);\n }\n .dds-p-i {\n --dds-r-p-i: var(--dds-r-xl-p-i);\n }\n .dds-p-b {\n --dds-r-p-b: var(--dds-r-xl-p-b);\n }\n .dds-m {\n --dds-r-m: var(--dds-r-xl-m);\n }\n .dds-m-i {\n --dds-r-m-i: var(--dds-r-xl-m-i);\n }\n .dds-m-b {\n --dds-r-m-b: var(--dds-r-xl-m-b);\n }\n .dds-h {\n --dds-r-h: var(--dds-r-xl-h);\n }\n .dds-max-h {\n --dds-r-max-h: var(--dds-r-xl-max-h);\n }\n .dds-min-h {\n --dds-r-min-h: var(--dds-r-xl-min-h);\n }\n .dds-w {\n --dds-r-w: var(--dds-r-xl-w);\n }\n .dds-max-w {\n --dds-r-max-w: var(--dds-r-xl-max-w);\n }\n .dds-min-w {\n --dds-r-min-w: var(--dds-r-xl-min-w);\n }\n .dds-pos {\n --dds-r-pos: var(--dds-r-xl-pos);\n }\n .dds-l {\n --dds-r-l: var(--dds-r-xl-l);\n }\n .dds-r {\n --dds-r-r: var(--dds-r-xl-r);\n }\n .dds-t {\n --dds-r-t: var(--dds-r-xl-t);\n }\n .dds-b {\n --dds-r-b: var(--dds-r-xl-b);\n }\n .dds-o {\n --dds-r-o: var(--dds-r-xl-o);\n }\n .dds-o-x {\n --dds-r-o-x: var(--dds-r-xl-o-x);\n }\n .dds-o-y {\n --dds-r-o-y: var(--dds-r-xl-o-y);\n }\n .dds-display {\n --dds-r-display: var(--dds-r-xl-display);\n }\n .dds-text-align {\n --dds-r-text-align: var(--dds-r-xl-text-align);\n }\n .dds-flex-dir {\n --dds-r-flex-dir: var(--dds-r-xl-flex-dir);\n }\n .dds-gap {\n --dds-r-gap: var(--dds-r-xl-gap);\n }\n .dds-c-gap {\n --dds-r-c-gap: var(--dds-r-xl-c-gap);\n }\n .dds-r-gap {\n --dds-r-r-gap: var(--dds-r-xl-r-gap);\n }\n .dds-a-i {\n --dds-r-a-i: var(--dds-r-xl-a-i);\n }\n .dds-a-c {\n --dds-r-a-c: var(--dds-r-xl-a-c);\n }\n .dds-j-i {\n --dds-r-j-i: var(--dds-r-xl-j-i);\n }\n .dds-j-c {\n --dds-r-j-c: var(--dds-r-xl-j-c);\n }\n .dds-wrap {\n --dds-r-wrap: var(--dds-r-xl-wrap);\n }\n .dds-basis {\n --dds-r-basis: var(--dds-r-xl-basis);\n }\n .dds-flow {\n --dds-r-flow: var(--dds-r-xl-flow);\n }\n}\n","import { type Property } from 'csstype';\n\nexport const BREAKPOINTS = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\nexport type Breakpoint = (typeof BREAKPOINTS)[number];\n\nexport const SPACING_SCALES = [\n 'x0',\n 'x0.125',\n 'x0.25',\n 'x0.5',\n 'x0.75',\n 'x1',\n 'x1.5',\n 'x2',\n 'x2.5',\n 'x3',\n 'x4',\n 'x6',\n 'x10',\n] as const;\n\nexport type SpacingScale = (typeof SPACING_SCALES)[number];\n\nexport type RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\n\nexport interface PrimitiveDisplayProps {\n /** Skjuler komponenten fra og med det angitte brekkpunktet og nedover. */\n hideBelow?: Breakpoint;\n /** Viser komponenten kun under det angitte brekkpunktet. */\n showBelow?: Breakpoint;\n}\n\nexport type BreakpointBasedProp<T> = {\n [k in Breakpoint]?: T;\n};\n\nexport type ResponsiveProp<T> = T | BreakpointBasedProp<T>;\n\ninterface PrimitiveLayoutProps {\n /** CSS `width`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n width?: ResponsiveProp<Property.Width>;\n /** CSS `max-width`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n maxWidth?: ResponsiveProp<Property.MaxWidth>;\n /** CSS `min-width`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n minWidth?: ResponsiveProp<Property.MinWidth>;\n /** CSS `height`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n height?: ResponsiveProp<Property.Height>;\n /** CSS `max-height`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n maxHeight?: ResponsiveProp<Property.MaxHeight>;\n /** CSS `min-height`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n minHeight?: ResponsiveProp<Property.MinHeight>;\n /** CSS `overflow`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n overflow?: ResponsiveProp<Property.Overflow>;\n /** CSS `overflow-y`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n overflowY?: ResponsiveProp<Property.OverflowY>;\n /** CSS `overflow-x`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n overflowX?: ResponsiveProp<Property.OverflowX>;\n /** CSS `position`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n position?: ResponsiveProp<Property.Position>;\n /** CSS `top`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n top?: ResponsiveProp<Property.Top | SpacingScale>;\n /** CSS `bottom`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n bottom?: ResponsiveProp<Property.Bottom | SpacingScale>;\n /** CSS `left`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n left?: ResponsiveProp<Property.Left | SpacingScale>;\n /** CSS `right`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n right?: ResponsiveProp<Property.Right | SpacingScale>;\n /** CSS `padding`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n padding?: ResponsiveProp<Property.Padding | SpacingScale>;\n /** CSS `padding-inline`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n paddingInline?: ResponsiveProp<Property.PaddingInline | SpacingScale>;\n /** CSS `padding-block`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n paddingBlock?: ResponsiveProp<Property.PaddingBlock | SpacingScale>;\n /** CSS `margin`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n margin?: ResponsiveProp<Property.Margin | SpacingScale>;\n /** CSS `margin-inline`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n marginInline?: ResponsiveProp<Property.MarginInline | SpacingScale>;\n /** CSS `margin-block`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n marginBlock?: ResponsiveProp<Property.MarginBlock | SpacingScale>;\n /** CSS `display`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n display?: ResponsiveProp<Property.Display>;\n /** CSS `flex-direction`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n flexDirection?: ResponsiveProp<Property.FlexDirection>;\n /** CSS `flex-basis`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n flexBasis?: ResponsiveProp<Property.FlexBasis>;\n /** CSS `flex-wrap`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n flexWrap?: ResponsiveProp<Property.FlexWrap>;\n /** CSS `flex-flow`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n flexFlow?: ResponsiveProp<Property.FlexFlow>;\n /** CSS `align-items`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n alignItems?: ResponsiveProp<Property.AlignItems>;\n /** CSS `justify-items`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n justifyItems?: ResponsiveProp<Property.JustifyItems>;\n /** CSS `align-content`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n alignContent?: ResponsiveProp<Property.AlignContent>;\n /** CSS `justify-content`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n justifyContent?: ResponsiveProp<Property.JustifyContent>;\n /** CSS `text-align`. Støtter standardverdier per brekkpunkt eller samme for alle skjermstørrelser. */\n textAlign?: ResponsiveProp<Property.TextAlign>;\n /** CSS `gap`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser.*/\n gap?: ResponsiveProp<Property.Gap | SpacingScale>;\n /** CSS `row-gap`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n rowGap?: ResponsiveProp<Property.RowGap | SpacingScale>;\n /** CSS `column-gap`. Støtter standardverdier og dds spacing tokens skala, per brekkpunkt eller samme for alle skjermstørrelser. */\n columnGap?: ResponsiveProp<Property.ColumnGap | SpacingScale>;\n}\n\nexport type ResponsiveProps = PrimitiveDisplayProps & PrimitiveLayoutProps;\n\nexport type ResponsiveStackProps = Omit<\n ResponsiveProps,\n 'display' | 'flexDirection'\n>;\n","import { type Properties } from 'csstype';\n\nimport {\n BREAKPOINTS,\n type Breakpoint,\n type RelativeColumnsOccupied,\n type ResponsiveProp,\n SPACING_SCALES,\n type SpacingScale,\n} from './Responsive.types';\nimport {\n type BorderColor,\n type PaperBackground,\n isBorderColor,\n isPaperBackground,\n} from '../../../types';\n\nexport function isBreakpointObject<T>(\n value: ResponsiveProp<T>,\n): value is { [k in Breakpoint]?: T } {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nexport const getBreakpointFromScreenWidth = (width: number) => {\n if (width > 1919) return 'xl';\n if (width >= 1280) return 'lg';\n if (width >= 960) return 'md';\n if (width >= 600) return 'sm';\n return 'xs';\n};\n\nexport const isSpacingScale = (value: unknown): value is SpacingScale => {\n return (\n typeof value === 'string' && SPACING_SCALES.includes(value as SpacingScale)\n );\n};\n\nexport const isRelativeGridColumn = (\n type: unknown,\n): type is RelativeColumnsOccupied => {\n return type === 'all' || type === 'firstHalf' || type === 'secondHalf';\n};\n\nexport function spacingPropToToken(value: string): string {\n return value.replace(/\\./g, '-');\n}\n\nconst getSpacingToken = (v: SpacingScale): string =>\n `var(--dds-spacing-${spacingPropToToken(v)})`;\n\nconst getColorToken = (v: PaperBackground | BorderColor): string =>\n `var(--dds-color-${v})`;\n\nconst relativeGridColumnToken = (\n v: RelativeColumnsOccupied,\n bp?: Breakpoint,\n): string => {\n if (v === 'all') return '1 / -1';\n if (!bp) return '';\n return v === 'firstHalf'\n ? `1 / calc(var(--dds-grid-${bp}-count) / 2 + 1)`\n : `calc(var(--dds-grid-${bp}-count) / 2 + 1) / -1`;\n};\n\nconst getValue = (v: string, bp?: Breakpoint): string => {\n if (isPaperBackground(v) || isBorderColor(v)) return getColorToken(v);\n if (isSpacingScale(v)) return getSpacingToken(v);\n if (isRelativeGridColumn(v)) return relativeGridColumnToken(v, bp);\n return v;\n};\n\nconst convertMultiValue = (value: string, bp?: Breakpoint) =>\n value\n .split(' ')\n .map(v => getValue(v, bp))\n .join(' ');\n\nexport function getResponsiveCSSProperties<T>(\n property?: ResponsiveProp<T>,\n prefix?: string,\n suffix?: string,\n): Properties | undefined {\n if (!property) return;\n\n const properties: Properties = {};\n const pPrefix = `--dds-${prefix}`;\n const pSuffix = suffix ? `-${suffix}` : '';\n\n if (isBreakpointObject(property)) {\n BREAKPOINTS.forEach(bp => {\n if (property[bp]) {\n (properties as Record<string, string>)[`${pPrefix}-${bp}${pSuffix}`] =\n convertMultiValue(property[bp].toString(), bp);\n }\n });\n } else {\n (properties as Record<string, string>)[`${pPrefix}${pSuffix}`] =\n convertMultiValue(property.toString());\n }\n\n return properties;\n}\n\nexport function applyResponsiveStyle<T>(\n p: T,\n bp?: Breakpoint,\n largeScreenP?: T,\n): ResponsiveProp<T> | undefined {\n if (!bp) return largeScreenP;\n const bpIndex = BREAKPOINTS.indexOf(bp);\n return BREAKPOINTS.reduce((acc, curr, index) => {\n return { ...acc, [curr]: index <= bpIndex ? p : largeScreenP };\n }, {});\n}\n",".xs-hide-below {\n @media only screen and (max-width: 599px) {\n display: none !important;\n }\n}\n\n.sm-hide-below {\n @media only screen and (max-width: 959px) {\n display: none !important;\n }\n}\n\n.md-hide-below {\n @media only screen and (max-width: 1279px) {\n display: none !important;\n }\n}\n\n.lg-hide-below {\n @media only screen and (max-width: 1919px) {\n display: none !important;\n }\n}\n\n.xl-hide-below {\n display: none !important;\n}\n\n.xs-hide-above {\n @media only screen and (min-width: 600px) {\n display: none !important;\n }\n}\n\n.sm-hide-above {\n @media only screen and (min-width: 960px) {\n display: none !important;\n }\n}\n\n.md-hide-above {\n @media only screen and (min-width: 1280px) {\n display: none !important;\n }\n}\n\n.lg-hide-above {\n @media only screen and (min-width: 1920px) {\n display: none !important;\n }\n}\n","import { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { ElementAs } from '../../helpers';\nimport styles from '../common/display.module.css';\nimport { type PrimitiveDisplayProps } from '../common/Responsive.types';\n\nexport type ShowHideProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<T, PrimitiveDisplayProps>;\n\nexport const ShowHide = <T extends ElementType = 'div'>({\n hideBelow,\n showBelow,\n className,\n htmlProps,\n id,\n ...rest\n}: ShowHideProps<T>) => (\n <ElementAs\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n hideBelow && styles[`${hideBelow}-hide-below`],\n showBelow && showBelow !== 'xl' && styles[`${showBelow}-hide-above`],\n ),\n htmlProps,\n rest,\n )}\n />\n);\n\nShowHide.displayName = 'ShowHide';\n","import { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport styles from '../common/layout.module.css';\nimport { type ResponsiveProps } from '../common/Responsive.types';\nimport { getResponsiveCSSProperties } from '../common/utils';\nimport { ShowHide } from '../ShowHide';\n\nexport type BoxProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<T, ResponsiveProps>;\n\nexport const Box = <T extends ElementType = 'div'>({\n id,\n className,\n style,\n padding,\n paddingInline,\n paddingBlock,\n margin,\n marginInline,\n marginBlock,\n height,\n maxHeight,\n minHeight,\n width,\n maxWidth,\n minWidth,\n position,\n left,\n right,\n bottom,\n top,\n overflow,\n overflowX,\n overflowY,\n display,\n textAlign,\n flexDirection,\n gap,\n columnGap,\n rowGap,\n alignItems,\n alignContent,\n justifyItems,\n justifyContent,\n flexWrap,\n flexBasis,\n flexFlow,\n htmlProps,\n ...rest\n}: BoxProps<T>) => {\n const responsiveStyles = {\n ...getResponsiveCSSProperties(padding, 'r', 'p'),\n ...getResponsiveCSSProperties(paddingInline, 'r', 'p-i'),\n ...getResponsiveCSSProperties(paddingBlock, 'r', 'p-b'),\n ...getResponsiveCSSProperties(margin, 'r', 'm'),\n ...getResponsiveCSSProperties(marginInline, 'r', 'm-i'),\n ...getResponsiveCSSProperties(marginBlock, 'r', 'm-b'),\n ...getResponsiveCSSProperties(height, 'r', 'h'),\n ...getResponsiveCSSProperties(maxHeight, 'r', 'max-h'),\n ...getResponsiveCSSProperties(minHeight, 'r', 'min-h'),\n ...getResponsiveCSSProperties(width, 'r', 'w'),\n ...getResponsiveCSSProperties(maxWidth, 'r', 'max-w'),\n ...getResponsiveCSSProperties(minWidth, 'r', 'min-w'),\n ...getResponsiveCSSProperties(position, 'r', 'pos'),\n ...getResponsiveCSSProperties(left, 'r', 'l'),\n ...getResponsiveCSSProperties(right, 'r', 'r'),\n ...getResponsiveCSSProperties(top, 'r', 't'),\n ...getResponsiveCSSProperties(bottom, 'r', 'b'),\n ...getResponsiveCSSProperties(overflow, 'r', 'o'),\n ...getResponsiveCSSProperties(overflowX, 'r', 'o-x'),\n ...getResponsiveCSSProperties(overflowY, 'r', 'o-y'),\n ...getResponsiveCSSProperties(display, 'r', 'display'),\n ...getResponsiveCSSProperties(textAlign, 'r', 'text-align'),\n ...getResponsiveCSSProperties(flexDirection, 'r', 'flex-dir'),\n ...getResponsiveCSSProperties(gap, 'r', 'gap'),\n ...getResponsiveCSSProperties(columnGap, 'r', 'c-gap'),\n ...getResponsiveCSSProperties(rowGap, 'r', 'r-gap'),\n ...getResponsiveCSSProperties(alignItems, 'r', 'a-i'),\n ...getResponsiveCSSProperties(alignContent, 'r', 'a-c'),\n ...getResponsiveCSSProperties(justifyItems, 'r', 'j-i'),\n ...getResponsiveCSSProperties(justifyContent, 'r', 'j-c'),\n ...getResponsiveCSSProperties(flexWrap, 'r', 'wrap'),\n ...getResponsiveCSSProperties(flexBasis, 'r', 'basis'),\n ...getResponsiveCSSProperties(flexFlow, 'r', 'flow'),\n };\n\n return (\n <ShowHide\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n padding && styles['dds-p'],\n paddingInline && styles['dds-p-i'],\n paddingBlock && styles['dds-p-b'],\n margin && styles['dds-m'],\n marginInline && styles['dds-m-i'],\n marginBlock && styles['dds-m-b'],\n height && styles['dds-h'],\n maxHeight && styles['dds-max-h'],\n minHeight && styles['dds-min-h'],\n width && styles['dds-w'],\n maxWidth && styles['dds-max-w'],\n minWidth && styles['dds-min-w'],\n position && styles['dds-pos'],\n left && styles['dds-l'],\n right && styles['dds-r'],\n top && styles['dds-t'],\n bottom && styles['dds-b'],\n overflow && styles['dds-o'],\n overflowX && styles['dds-o-x'],\n overflowY && styles['dds-o-y'],\n display && styles['dds-display'],\n textAlign && styles['dds-text-align'],\n flexDirection && styles['dds-flex-dir'],\n gap && styles['dds-gap'],\n columnGap && styles['dds-c-gap'],\n rowGap && styles['dds-r-gap'],\n alignContent && styles['dds-a-c'],\n alignItems && styles['dds-a-i'],\n justifyContent && styles['dds-j-c'],\n justifyItems && styles['dds-j-i'],\n flexWrap && styles['dds-wrap'],\n flexBasis && styles['dds-basis'],\n flexFlow && styles['dds-flow'],\n ),\n htmlProps,\n rest,\n )}\n style={{ ...style, ...responsiveStyles }}\n />\n );\n};\n\nBox.displayName = 'Box';\n","/*Grid*/\n.dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-xs-grid-template-columns);\n grid-template-columns: var(--dds-r-grid-template-columns);\n}\n\n/*GridChild*/\n\n.dds-grid-column {\n --dds-r-grid-column: var(--dds-r-xs-grid-column);\n grid-column: var(--dds-r-grid-column);\n}\n\n.dds-grid-row {\n --dds-r-grid-row: var(--dds-r-xs-grid-row);\n grid-row: var(--dds-r-grid-row);\n}\n\n.dds-j-self {\n --dds-r-j-self: var(--dds-r-xs-j-self);\n grid-row: var(--dds-r-j-self);\n}\n\n.child--first-half {\n grid-column: 1 / calc(var(--dds-grid-col-count) / 2 + 1);\n}\n\n.child--second-half {\n grid-column: calc(var(--dds-grid-col-count) / 2 + 1) / -1;\n}\n\n@media (max-width: 599px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-xs-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-xs-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-xs-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-xs-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-xs-j-self);\n }\n}\n\n@media (min-width: 600px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-sm-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-sm-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-sm-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-sm-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-sm-j-self);\n }\n}\n\n@media (min-width: 960px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-md-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-md-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-md-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-md-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-md-j-self);\n }\n}\n\n@media (min-width: 1280px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-lg-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-lg-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-lg-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-lg-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-lg-j-self);\n }\n}\n\n@media (min-width: 1920px) {\n .dds-grid-template-columns {\n --dds-r-grid-template-columns: var(--dds-r-xl-grid-template-columns);\n }\n .dds-grid-column {\n --dds-r-grid-column: var(--dds-r-xl-grid-column);\n }\n .child-col-count {\n --dds-grid-col-count: var(--dds-grid-xl-count);\n }\n .dds-grid-row {\n --dds-r-grid-row: var(--dds-r-xl-grid-row);\n }\n .dds-j-self {\n --dds-r-j-self: var(--dds-r-xl-j-self);\n }\n}\n","import { type Property } from 'csstype';\nimport { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { Box } from '../Box';\nimport styles from './Grid.module.css';\nimport {\n type ResponsiveProp,\n type ResponsiveProps,\n} from '../common/Responsive.types';\nimport { getResponsiveCSSProperties } from '../common/utils';\n\nexport type GridProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<\n T,\n Omit<\n {\n /** CSS `grid-template-columns`. Støtter standardverdier per brekkpunkt eller samme for alle skjermstørrelser.\n * @default {\n xs: 'repeat(var(--dds-grid-xs-count), minmax(0, 1fr))',\n sm: 'repeat(var(--dds-grid-sm-count), minmax(0, 1fr))',\n md: 'repeat(var(--dds-grid-md-count), minmax(0, 1fr))',\n lg: 'repeat(var(--dds-grid-lg-count), minmax(0, 1fr))',\n xl: 'repeat(var(--dds-grid-xl-count), minmax(0, 1fr))',\n }\n */\n gridTemplateColumns?: ResponsiveProp<Property.GridTemplateColumns>;\n } & ResponsiveProps,\n 'display'\n >\n >;\n\nexport const Grid = <T extends ElementType = 'div'>({\n id,\n className,\n htmlProps,\n gridTemplateColumns = {\n xs: 'repeat(var(--dds-grid-xs-count), minmax(0, 1fr))',\n sm: 'repeat(var(--dds-grid-sm-count), minmax(0, 1fr))',\n md: 'repeat(var(--dds-grid-md-count), minmax(0, 1fr))',\n lg: 'repeat(var(--dds-grid-lg-count), minmax(0, 1fr))',\n xl: 'repeat(var(--dds-grid-xl-count), minmax(0, 1fr))',\n },\n columnGap = {\n xs: 'var(--dds-grid-xs-gutter-size)',\n sm: 'var(--dds-grid-sm-gutter-size)',\n md: 'var(--dds-grid-md-gutter-size)',\n lg: 'var(--dds-grid-lg-gutter-size)',\n xl: 'var(--dds-grid-xl-gutter-size)',\n },\n rowGap = {\n xs: 'var(--dds-grid-xs-gutter-size)',\n sm: 'var(--dds-grid-sm-gutter-size)',\n md: 'var(--dds-grid-md-gutter-size)',\n lg: 'var(--dds-grid-lg-gutter-size)',\n xl: 'var(--dds-grid-xl-gutter-size)',\n },\n marginInline = { xs: 'x2', sm: 'x2', md: 'x4', lg: 'x6', xl: 'x10' },\n style,\n ...rest\n}: GridProps<T>) => {\n const styleVariables = {\n ...getResponsiveCSSProperties(\n gridTemplateColumns,\n 'r',\n 'grid-template-columns',\n ),\n };\n return (\n <Box\n display=\"grid\"\n {...getBaseHTMLProps(\n id,\n cn(className, styles['dds-grid-template-columns']),\n htmlProps,\n rest,\n )}\n marginInline={marginInline}\n columnGap={columnGap}\n rowGap={rowGap}\n style={{ ...style, ...styleVariables }}\n />\n );\n};\n\nGrid.displayName = 'Grid';\n","import {\n type Properties,\n type Property,\n type StandardProperties,\n} from 'csstype';\nimport { type ElementType } from 'react';\n\nimport { Box } from '../Box';\nimport styles from './Grid.module.css';\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport {\n type ResponsiveProp,\n type ResponsiveProps,\n} from '../common/Responsive.types';\nimport { getResponsiveCSSProperties } from '../common/utils';\n\ntype RelativeColumnsOccupied = 'all' | 'firstHalf' | 'secondHalf';\n\nexport type ColumnsOccupied = ResponsiveProp<\n StandardProperties['gridColumn'] | RelativeColumnsOccupied\n>;\n\nexport type GridChildProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<\n T,\n {\n /**Hvilke kolonner innholdet skal okkupere. Støtter standardverdier for CSS `grid-column` og relative verider `'all'`, `'firstHalf'` eller `'secondHalf'`, per brekkpunkt eller samme for alle skjermstørrelser. */\n columnsOccupied?: ColumnsOccupied;\n /**CSS `justify-self`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n justifySelf?: ResponsiveProp<Property.JustifySelf>;\n /**CSS `grid-row`. Støtter verdi per brekkpunkt eller samme for alle skjermstørrelser. */\n gridRow?: ResponsiveProp<Property.GridRow>;\n } & Omit<ResponsiveProps, 'display'>\n >;\n\nexport const GridChild = <T extends ElementType = 'div'>({\n id,\n className,\n htmlProps,\n style,\n gridRow,\n justifySelf,\n columnsOccupied,\n ...rest\n}: GridChildProps<T>) => {\n const styleVariables: Properties = {\n ...getResponsiveCSSProperties(gridRow, 'r', 'grid-row'),\n ...getResponsiveCSSProperties(justifySelf, 'r', 'j-self'),\n ...getResponsiveCSSProperties(columnsOccupied, 'r', 'grid-column'),\n };\n\n return (\n <Box\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles['child-col-count'],\n gridRow && styles['dds-grid-row'],\n justifySelf && styles['dds-j-self'],\n columnsOccupied && styles['dds-grid-column'],\n columnsOccupied === 'firstHalf' && styles['child--first-half'],\n columnsOccupied === 'secondHalf' && styles['child--second-half'],\n ),\n htmlProps,\n rest,\n )}\n style={{ ...style, ...styleVariables }}\n />\n );\n};\n\nGridChild.displayName = 'GridChild';\n",".background {\n background: var(--dds-paper-background);\n}\n.border {\n border: 1px solid var(--dds-paper-border);\n}\n\n:where(.container) {\n box-sizing: border-box;\n background-color: var(--dds-color-surface-default);\n border-radius: var(--dds-border-radius-surface);\n margin: 0;\n}\n\n:where(.shadow--1) {\n box-shadow: var(--dds-shadow-1);\n}\n:where(.shadow--2) {\n box-shadow: var(--dds-shadow-2);\n}\n:where(.shadow--3) {\n box-shadow: var(--dds-shadow-3);\n}\n:where(.shadow--4) {\n box-shadow: var(--dds-shadow-4);\n}\n\n:where(.border-radius--button) {\n border-radius: var(--dds-border-radius-button);\n}\n\n:where(.border-radius--surface) {\n border-radius: var(--dds-border-radius-surface);\n}\n\n:where(.border-radius--chip) {\n border-radius: var(--dds-border-radius-chip);\n}\n\n:where(.border-radius--input) {\n border-radius: var(--dds-border-radius-input);\n}\n\n:where(.border-radius--rounded) {\n border-radius: var(--dds-border-radius-rounded);\n}\n\n:where(.border-radius--0) {\n border-radius: 0;\n}\n","import { type ComponentProps, type ElementType } from 'react';\n\nimport styles from './Paper.module.css';\nimport {\n type BorderColor,\n type BorderRadius,\n type Elevation,\n type PaperBackground,\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { Box } from '../../layout/Box/Box';\nimport { type ResponsiveProps } from '../common';\nimport { getResponsiveCSSProperties } from '../common/utils';\n\nexport type PaperElevation = Elevation;\nexport type PaperBorder = BorderColor;\nexport type PaperBorderRadius = BorderRadius;\n\ntype PickedAttributes<T extends ElementType = 'div'> = Pick<\n ComponentProps<T>,\n 'tabIndex' | 'role'\n>;\n\nexport type PaperProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<\n T,\n {\n /**I hvor stor grad flaten skal framheves. Støtter dds tokens. */\n elevation?: PaperElevation;\n /**Farge på kantlinje. Støtter dds tokens. */\n border?: PaperBorder;\n /**Hvor runde hjørner skal være. Støtter dds tokens. */\n borderRadius?: PaperBorderRadius;\n /**Bakgrunn. Støtter dds tokens. */\n background?: PaperBackground;\n } & ResponsiveProps &\n PickedAttributes,\n Omit<ComponentProps<T>, keyof PickedAttributes>\n >;\n\nexport const Paper = <T extends ElementType = 'div'>({\n id,\n elevation,\n border,\n borderRadius = 'surface',\n background = 'surface-paper-default',\n className,\n htmlProps,\n style,\n ...rest\n}: PaperProps<T>) => {\n const styleVariables = {\n ...getResponsiveCSSProperties(background, 'paper-background'),\n ...getResponsiveCSSProperties(border, 'paper-border'),\n };\n\n return (\n <Box\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.container,\n elevation && styles[`shadow--${elevation}`],\n borderRadius && styles[`border-radius--${borderRadius}`],\n styles.background,\n border && styles.border,\n ),\n htmlProps,\n rest,\n )}\n style={{ ...style, ...styleVariables }}\n />\n );\n};\n","import { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../../types';\nimport { Box } from '../../Box';\nimport { type ResponsiveStackProps } from '../../common';\n\nexport type VStackProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<T, ResponsiveStackProps>;\n\nexport const VStack = <T extends ElementType = 'div'>({\n id,\n className,\n htmlProps,\n ...rest\n}: VStackProps<T>) => {\n return (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n );\n};\n\nVStack.displayName = 'VStack';\n","import { type ElementType } from 'react';\n\nimport {\n type PolymorphicBaseComponentProps,\n getBaseHTMLProps,\n} from '../../../../types';\nimport { Box } from '../../Box';\nimport { type ResponsiveStackProps } from '../../common';\n\nexport type HStackProps<T extends ElementType = 'div'> =\n PolymorphicBaseComponentProps<T, ResponsiveStackProps>;\n\nexport const HStack = <T extends ElementType = 'div'>({\n id,\n className,\n htmlProps,\n ...rest\n}: HStackProps<T>) => {\n return (\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n />\n );\n};\n\nHStack.displayName = 'HStack';\n",":where(.container) {\n border-bottom: 1px solid var(--dds-color-border-default);\n}\n\n:where(.container:first-child) {\n border-top: 1px solid var(--dds-color-border-default);\n}\n\n:where(.header-button) {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n color: var(--dds-color-text-action-hover);\n }\n}\n\n.body {\n height: var(--dds-card-accordion-body-height);\n}\n","import {\n type Dispatch,\n type RefObject,\n type SetStateAction,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './AccordionBase.module.css';\nimport { useIsMounted } from '../../../hooks';\nimport { type Nullable } from '../../../types';\nimport { cn, useElementHeight } from '../../../utils';\n\nexport interface AccordionConfig {\n /**\n * Om accordion skal være åpen ved innlasting.\n */\n initiallyExpanded: boolean;\n /**\n * Callback som blir kalt når brukeren trykker på header.\n */\n onChange?: (expanded: boolean) => void;\n /**\n * Custom id for accordion. Brukes til universell utforming.\n */\n id?: string;\n}\n\nexport interface AccordionHeaderProps {\n /**\n * `onClick` som kontrollerer lukking og åpning av accordion, og eventuelt `onChange` satt i config\n */\n onClick: () => void;\n /**\n * Nativ `aria-expanded`.\n */\n 'aria-expanded': boolean;\n /**\n * Nativ `aria-controls`.\n */\n 'aria-controls': string;\n /**\n * Id, settes for riktig bruk av aria-props.\n */\n id: string;\n}\n\nexport interface AccordionBodyProps {\n /**\n * Id, settes for riktig bruk av aria-props.\n */\n id: string;\n /**\n * Nativ `role`. Gir innholdet en rolle tilgjengelig for skjermlesere.\n */\n role: string;\n /**\n * Nativ `aria-labelledby`.\n */\n 'aria-labelledby': string;\n /**\n * Nativ `aria-hidden`.\n */\n 'aria-hidden': boolean;\n /**\n * Høyde som skal settes i CSS for animasjon.\n */\n height?: number;\n /**\n * Klassenavn for innhold-wrapper; håndterer animasjon og lukking.\n */\n className?: string;\n}\n\nexport interface AccordionState {\n /**\n * Id, settes for riktig bruk av aria-props.\n */\n id: string;\n /**\n * Om accordion er utvided.\n */\n isExpanded: boolean;\n /**\n * State funksjon som setter `isExpanded` ved behov.\n */\n setIsExpanded: Dispatch<SetStateAction<boolean>>;\n /**\n * Funksjon som åpner accordion. Brukes ved behov.\n */\n openAccordion: () => void;\n /**\n * Funksjon som lukker accordion. Brukes ved behov.\n */\n closeAccordion: () => void;\n /**\n * Funksjon som toggler accordion. Brukes ved behov.\n */\n toggleExpanded: () => void;\n /**\n * Props som settes på header-elementet.\n */\n headerProps: AccordionHeaderProps;\n /**\n * Props som settes på innholds-elementet.\n */\n bodyProps: AccordionBodyProps;\n /**\n * Ref som settes på wrapper inni innholds-elementet; Sørger for animasjon.\n */\n bodyContentRef: RefObject<HTMLDivElement | null>;\n}\n\nexport const useAccordion = ({\n initiallyExpanded = false,\n onChange,\n id,\n}: AccordionConfig): AccordionState => {\n const [isExpanded, setIsExpanded] = useState(initiallyExpanded);\n\n const generatedId = useId();\n const accordionId = id ?? `${generatedId}-accordion`;\n\n const openAccordion = () => {\n setIsExpanded(true);\n };\n\n const closeAccordion = () => {\n setIsExpanded(false);\n };\n\n useEffect(() => {\n setIsExpanded(isExpanded);\n }, [isExpanded]);\n\n const toggleExpanded = useCallback(() => {\n setIsExpanded(prevExpanded => {\n const newExpanded = !prevExpanded;\n\n if (onChange) {\n onChange(newExpanded);\n }\n\n return newExpanded;\n });\n }, [onChange]);\n\n const bodyContentRef = useRef<HTMLDivElement>(null);\n\n const [animate, setAnimate] = useState(false);\n\n const isMounted = useIsMounted();\n const height = useElementHeight(bodyContentRef.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 (bodyContentRef.current && isExpanded) {\n setIntialExpandedHeight(bodyContentRef.current.scrollHeight);\n }\n }, []);\n\n useEffect(() => {\n if (isMounted()) {\n setAnimate(true);\n }\n }, [isMounted]);\n\n const headerProps: AccordionHeaderProps = {\n id: `${accordionId}-header`,\n onClick: toggleExpanded,\n 'aria-expanded': isExpanded,\n 'aria-controls': `${accordionId}-body`,\n };\n\n const bodyProps: AccordionBodyProps = {\n id: `${accordionId}-body`,\n role: 'region',\n 'aria-labelledby': `${accordionId}-header`,\n 'aria-hidden': !isExpanded,\n className: cn(\n styles.body,\n !isExpanded && styles['body--hidden'],\n animate && styles['body--animated'],\n ),\n height: height ?? initialExpandedHeight ?? 0,\n };\n\n return {\n id: accordionId,\n isExpanded,\n setIsExpanded,\n openAccordion,\n closeAccordion,\n toggleExpanded,\n bodyContentRef,\n headerProps,\n bodyProps,\n };\n};\n",":where(.header-button) {\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n position: relative;\n cursor: pointer;\n display: block;\n width: 100%;\n border-radius: inherit;\n}\n\n.header-container {\n display: flex;\n align-items: center;\n}\n\n.header__content {\n text-align: left;\n}\n\n.header__chevron {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--dds-icon-size-medium);\n width: var(--dds-icon-size-medium);\n}\n\n.body {\n overflow: hidden;\n}\n\n.body--animated {\n @media (prefers-reduced-motion: no-preference) {\n transition: height 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n}\n\n.body--hidden {\n display: none;\n}\n","import {\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n} from 'react';\n\nimport {\n type AccordionBodyProps,\n type AccordionHeaderProps,\n} from './useAccordion';\nimport { isEmpty } from '../../../utils';\n\ninterface AccordionContext {\n headerProps: AccordionHeaderProps;\n bodyProps: AccordionBodyProps;\n isExpanded: boolean;\n toggleExpanded: () => void;\n bodyContentRef: RefObject<HTMLDivElement | null>;\n}\n\nconst AccordionContext = createContext<Partial<AccordionContext>>({});\n\nexport const AccordionContextProvider = ({\n children,\n ...values\n}: AccordionContext & { children: ReactNode }) => {\n return <AccordionContext value={values}>{children}</AccordionContext>;\n};\n\nexport const useAccordionContext = (): Partial<AccordionContext> => {\n const context = useContext(AccordionContext);\n if (isEmpty(context)) {\n throw new Error(\n 'useAccordionContext must be used within a AccordionContextProvider. Have you wrapped <AccordionHeader> and <AccordionBody> inside a <Accordion>, or <CardAccordionHeader> and <CardAccordionBody> inside a <CardAccordion>?',\n );\n }\n\n return context;\n};\n","import styles from './Accordion.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport {\n AccordionContextProvider,\n useAccordion,\n} from '../helpers/AccordionBase';\n\nexport type AccordionProps = 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 Accordion = ({\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n}: AccordionProps) => {\n const {\n id: accordionId,\n isExpanded: expanded,\n toggleExpanded,\n bodyContentRef,\n headerProps,\n bodyProps,\n } = useAccordion({ initiallyExpanded: isExpanded, onChange, id });\n\n return (\n <div\n {...getBaseHTMLProps(\n accordionId,\n cn(className, styles.container),\n htmlProps,\n rest,\n )}\n >\n <AccordionContextProvider\n headerProps={headerProps}\n bodyProps={bodyProps}\n isExpanded={expanded}\n toggleExpanded={toggleExpanded}\n bodyContentRef={bodyContentRef}\n >\n {children}\n </AccordionContextProvider>\n </div>\n );\n};\n\nAccordion.displayName = 'Accordion';\n","import { type ButtonHTMLAttributes } from 'react';\n\nimport styles from './Accordion.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { AnimatedChevronUpDown } from '../helpers';\nimport { useAccordionContext } from '../helpers/AccordionBase';\nimport baseStyles from '../helpers/AccordionBase/AccordionBase.module.css';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Box } from '../layout';\nimport { type StaticTypographyType, getTypographyCn } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type AccordionHeaderProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n >,\n 'id'\n>;\n\nexport const AccordionHeader = ({\n children,\n className,\n htmlProps,\n typographyType = 'headingMedium',\n bold,\n ...rest\n}: AccordionHeaderProps) => {\n const { isExpanded, headerProps } = useAccordionContext();\n const { id, ...restHeaderProps } = headerProps ?? {};\n\n return (\n <Box\n as=\"button\"\n padding=\"x1 x1.5 x1 x1\"\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles['header-button'],\n baseStyles['header-button'],\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n focusable,\n baseStyles['header-container'],\n ),\n htmlProps,\n rest,\n )}\n {...restHeaderProps}\n >\n <Box\n as=\"span\"\n marginInline=\"x0 x0.5\"\n className={baseStyles.header__chevron}\n >\n <AnimatedChevronUpDown\n width=\"var(--dds-icon-size-medium)\"\n height=\"var(--dds-spacing-x0-5)\"\n isUp={isExpanded}\n />\n </Box>\n <div\n className={cn(\n baseStyles.header__content,\n typographyStyles[getTypographyCn(typographyType)],\n bold && typographyStyles.bold,\n )}\n >\n {children}\n </div>\n </Box>\n );\n};\n\nAccordionHeader.displayName = 'AccordionHeader';\n","import { type Properties } from 'csstype';\n\nimport styles from './Accordion.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { useAccordionContext } from '../helpers/AccordionBase';\nimport { Box } from '../layout';\n\nexport type AccordionBodyProps = Omit<\n BaseComponentPropsWithChildren<HTMLDivElement>,\n 'id'\n>;\n\nexport const AccordionBody = ({\n children,\n className,\n htmlProps,\n ...rest\n}: AccordionBodyProps) => {\n const { bodyContentRef, bodyProps } = useAccordionContext();\n\n const {\n className: bodyContextCn,\n id,\n height,\n ...restBodyProps\n } = bodyProps ?? {};\n\n const styleVariables: Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-card-accordion-body-height' as any]: height + 'px',\n };\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.body, bodyContextCn),\n htmlProps,\n rest,\n )}\n {...restBodyProps}\n style={{ ...htmlProps?.style, ...styleVariables }}\n >\n <Box ref={bodyContentRef} padding=\"x0.5 x1.5 x2 x1\">\n {children}\n </Box>\n </div>\n );\n};\n\nAccordionBody.displayName = 'AccordionBody';\n",".icon {\n display: inline;\n margin: 0.1em 0.25em -0.1em 0.1em;\n transform: translateY(0.05em);\n vertical-align: baseline;\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './BackLink.module.css';\nimport { Icon } from '../Icon';\nimport { ArrowLeftIcon } from '../Icon/icons';\nimport { Link } from '../Typography';\n\nexport type BackLinkProps = {\n /**\n * Ledetekst.\n */\n label: string;\n} & Pick<ComponentPropsWithRef<'a'>, 'onClick' | 'href' | 'ref'>;\n\nexport const BackLink = ({ label, ref, ...rest }: BackLinkProps) => {\n return (\n <nav ref={ref} aria-label=\"Gå tilbake\">\n <Link {...rest}>\n <Icon icon={ArrowLeftIcon} iconSize=\"inherit\" className={styles.icon} />\n {label}\n </Link>\n </nav>\n );\n};\n\nBackLink.displayName = 'BackLink';\n","import { type ComponentPropsWithRef, type Ref } from 'react';\n\nimport { Link } from '../Typography';\n\nexport type BreadcrumbProps =\n | ComponentPropsWithRef<'a'>\n | ComponentPropsWithRef<'span'>;\n\nexport const isAnchorTypographyProps = (\n props: BreadcrumbProps,\n): props is ComponentPropsWithRef<'a'> => {\n return (props as ComponentPropsWithRef<'a'>).href != undefined;\n};\n\nexport const Breadcrumb = ({ children, ref, ...rest }: BreadcrumbProps) => {\n if (isAnchorTypographyProps(rest)) {\n return (\n <Link ref={ref as Ref<HTMLAnchorElement>} htmlProps={rest}>\n {children}\n </Link>\n );\n }\n return (\n <span ref={ref} {...rest}>\n {children}\n </span>\n );\n};\n\nBreadcrumb.displayName = 'Breadcrumb';\n","import { Children, isValidElement } from 'react';\n\nimport styles from './Breadcrumbs.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { StylelessList } from '../helpers';\nimport { Icon } from '../Icon';\nimport { ChevronRightIcon, MoreHorizontalIcon } from '../Icon/icons';\nimport {\n OverflowMenu,\n OverflowMenuGroup,\n OverflowMenuLink,\n OverflowMenuList,\n OverflowMenuSpan,\n} from '../OverflowMenu';\nimport { type BreadcrumbProps, isAnchorTypographyProps } from './Breadcrumb';\nimport { type Breakpoint, HStack, type HStackProps } from '../layout';\n\nexport type BreadcrumbsProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**\n * Spesifiserer ved hvilket brekkpunkt og nedover versjonen for små skjermer skal vises.\n * Trunkerer barn unntatt første og siste; trunkerte barn er tilgjengelige ved å trykke på trunkeringsknappen.\n */\n smallScreenBreakpoint?: Breakpoint;\n }\n>;\n\nexport const Breadcrumbs = ({\n children,\n smallScreenBreakpoint,\n id,\n className,\n htmlProps,\n ...rest\n}: BreadcrumbsProps) => {\n const chevronIcon = (\n <Icon\n className={cn(styles.icon)}\n iconSize=\"inherit\"\n icon={ChevronRightIcon}\n />\n );\n\n const childrenArray = Children.toArray(children);\n\n const responsiveLiProps: HStackProps<'li'> = {\n as: 'li',\n alignItems: 'center',\n gap: 'x0.5',\n padding: 'x0',\n };\n\n const breadcrumbChildren = childrenArray.map((item, index) => {\n return (\n <HStack\n key={`breadcrumb-${index}`}\n {...responsiveLiProps}\n padding=\"x0.125 0\"\n >\n {index !== 0 && chevronIcon}\n {item}\n </HStack>\n );\n });\n\n const breadcrumbChildrenTruncated =\n childrenArray.length > 2\n ? childrenArray.slice(1, childrenArray.length - 1).map((item, index) => {\n if (isValidElement<BreadcrumbProps>(item)) {\n if (isAnchorTypographyProps(item.props)) {\n return (\n <OverflowMenuLink key={index} href={item.props.href}>\n {item.props.children}\n </OverflowMenuLink>\n );\n } else\n return (\n <OverflowMenuSpan key={index}>\n {item.props.children}\n </OverflowMenuSpan>\n );\n }\n })\n : [];\n\n const breadcrumbChildrenSmallScreen = (\n <>\n <HStack {...responsiveLiProps}>{childrenArray[0]}</HStack>\n {breadcrumbChildrenTruncated.length > 0 && (\n <HStack {...responsiveLiProps}>\n {chevronIcon}\n <OverflowMenuGroup>\n <Button\n size=\"xsmall\"\n icon={MoreHorizontalIcon}\n purpose=\"tertiary\"\n aria-label={`Vis brødsmulesti brødsmule 2 ${breadcrumbChildrenTruncated.length > 1 && `til ${breadcrumbChildren.length - 1}`}`}\n />\n <OverflowMenu>\n <OverflowMenuList>{breadcrumbChildrenTruncated}</OverflowMenuList>\n </OverflowMenu>\n </OverflowMenuGroup>\n </HStack>\n )}\n <HStack {...responsiveLiProps}>\n {chevronIcon}\n {childrenArray[childrenArray.length - 1]}\n </HStack>\n </>\n );\n\n const hasSmallScreenBreakpoint = !!smallScreenBreakpoint;\n\n const responsiveListProps: HStackProps<typeof StylelessList> = {\n as: StylelessList,\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: 'x0.5',\n };\n return (\n <nav\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n aria-label=\"brødsmulesti\"\n >\n <HStack\n {...responsiveListProps}\n hideBelow={hasSmallScreenBreakpoint ? smallScreenBreakpoint : undefined}\n >\n {breadcrumbChildren}\n </HStack>\n {hasSmallScreenBreakpoint && (\n <HStack {...responsiveListProps} showBelow={smallScreenBreakpoint}>\n {breadcrumbChildrenSmallScreen}\n </HStack>\n )}\n </nav>\n );\n};\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n",".icon {\n color: var(--dds-color-icon-link);\n}\n",":where(.button) {\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: -moz-fit-content;\n height: fit-content;\n width: -moz-fit-content;\n width: fit-content;\n cursor: pointer;\n box-shadow: none;\n text-decoration: none;\n border-radius: var(--dds-border-radius-button);\n border: 1px solid;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: all 0.2s;\n }\n\n &:active:not([aria-disabled='true']) {\n scale: 0.95;\n }\n}\n\n.button--is-loading {\n cursor: not-allowed;\n}\n\n.button--full-width {\n width: 100%;\n justify-content: space-between;\n\n &.button--is-loading,\n &.just-icon,\n &.just-text {\n justify-content: center;\n }\n\n &.with-text-and-icon.with-icon-left {\n justify-content: left;\n }\n}\n\n.button--xsmall {\n &.just-text {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n }\n\n &.with-text-and-icon {\n gap: var(--dds-spacing-x0-125);\n\n &.with-icon-left {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5)\n var(--dds-spacing-x0-25) var(--dds-spacing-x0-25);\n }\n &.with-icon-right {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-25)\n var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n }\n }\n\n &.just-icon,\n &.button--is-loading.no-content {\n padding: var(--dds-spacing-x0-25);\n }\n\n .icon {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.button--small {\n &.just-text {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x0-75);\n }\n\n &.with-text-and-icon {\n gap: var(--dds-spacing-x0-25);\n\n &.with-icon-left {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x0-75)\n var(--dds-spacing-x0-5) var(--dds-spacing-x0-5);\n }\n &.with-icon-right {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x0-5)\n var(--dds-spacing-x0-5) var(--dds-spacing-x0-75);\n }\n }\n\n &.just-icon,\n &.button--is-loading.no-content {\n padding: var(--dds-spacing-x0-5);\n }\n\n .icon {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.button--medium {\n &.just-text {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1);\n }\n\n &.with-text-and-icon {\n gap: var(--dds-spacing-x0-5);\n\n &.with-icon-left {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1)\n var(--dds-spacing-x0-75) var(--dds-spacing-x0-75);\n }\n &.with-icon-right {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x0-75)\n var(--dds-spacing-x0-75) var(--dds-spacing-x1);\n }\n }\n\n &.just-icon,\n &.button--is-loading.no-content {\n padding: var(--dds-spacing-x0-75);\n }\n\n .icon {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.button--large {\n &.just-text {\n padding: var(--dds-spacing-x1) var(--dds-spacing-x1-5);\n }\n\n &.with-text-and-icon {\n gap: var(--dds-spacing-x0-75);\n\n &.with-icon-left {\n padding: var(--dds-spacing-x1) var(--dds-spacing-x1-5)\n var(--dds-spacing-x1) var(--dds-spacing-x1);\n }\n &.with-icon-right {\n padding: var(--dds-spacing-x1) var(--dds-spacing-x1) var(--dds-spacing-x1)\n var(--dds-spacing-x1-5);\n }\n }\n\n &.just-icon,\n &.button--is-loading.no-content {\n padding: var(--dds-spacing-x1);\n }\n\n .icon {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.spinner-wrapper--absolute {\n position: absolute;\n}\n\n.icon-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.button--primary {\n background-color: var(--dds-color-surface-action-resting);\n border-color: var(--dds-color-surface-action-resting);\n color: var(--dds-color-text-on-action);\n &:hover:not(.button--is-loading) {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-surface-action-hover);\n color: var(--dds-color-text-on-action);\n }\n}\n\n.button--secondary {\n background-color: var(--dds-color-surface-default);\n border-color: var(--dds-color-border-default);\n color: var(--dds-color-text-default);\n\n &:hover:not(.button--is-loading) {\n background-color: var(--dds-color-surface-hover-default);\n border-color: var(--dds-color-border-action-hover);\n color: var(--dds-color-text-default);\n }\n}\n\n.button--tertiary {\n background-color: transparent;\n border-color: transparent;\n color: var(--dds-color-text-default);\n\n &:hover:not(.button--is-loading) {\n background-color: var(--dds-color-surface-hover-default);\n border-color: transparent;\n color: var(--dds-color-text-default);\n }\n}\n\n.button--danger {\n background-color: var(--dds-color-surface-action-danger-resting);\n border-color: var(--dds-color-surface-action-danger-resting);\n color: var(--dds-color-text-on-action);\n &:hover:not(.button--is-loading) {\n background-color: var(--dds-color-surface-action-danger-hover);\n border-color: var(--dds-color-surface-action-danger-hover);\n color: var(--dds-color-text-on-action);\n }\n}\n","import { createContext, useContext } from 'react';\n\nimport { type ButtonSize } from '../Button/Button.types';\n\ninterface ButtonGroupContextType {\n size?: ButtonSize;\n purpose: 'secondary';\n}\n\nexport const ButtonGroupContext = createContext<\n Partial<ButtonGroupContextType>\n>({});\n\nexport const useButtonGroupContext = () => useContext(ButtonGroupContext);\n","import { type Property } from 'csstype';\nimport { useId, useRef } from 'react';\n\nimport styles from './Spinner.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { type TextColor, cn, getTextColor } from '../../utils';\n\nexport type SpinnerProps = BaseComponentProps<\n SVGElement,\n {\n /**Farge på spinneren.\n * @default \"iconActionResting\"\n */\n color?: TextColor;\n /**Størrelse; Setter høyde og bredde på spinneren.\n * @default \"var(--dds-icon-size-medium)\"\n */\n size?: Property.Width;\n /**Tekst som vises ved hover.\n * @default \"Innlasting pågår\"\n */\n tooltip?: string;\n }\n>;\n\nexport function Spinner(props: SpinnerProps) {\n const {\n size = 'var(--dds-icon-size-medium)',\n color = 'iconActionResting',\n tooltip = 'Innlasting pågår',\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const mountTime = useRef(Date.now());\n const outerAnimationDelay = -(mountTime.current % 2000);\n const innerAnimationDelay = -(mountTime.current % 1500);\n\n const generatedId = useId();\n const uniqueId = `${generatedId}-spinnerTitle`;\n\n return (\n <svg\n viewBox=\"0 0 50 50\"\n role=\"progressbar\"\n aria-labelledby={uniqueId}\n {...getBaseHTMLProps(id, cn(className, styles.svg), htmlProps, rest)}\n style={{\n ...htmlProps?.style,\n animationDelay: outerAnimationDelay + 'ms',\n width: size,\n height: size,\n }}\n >\n <title id={uniqueId}>{tooltip}</title>\n <circle\n className={cn(styles.circle)}\n style={{\n animationDelay: innerAnimationDelay + 'ms',\n }}\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke={getTextColor(color)}\n strokeWidth=\"4\"\n />\n </svg>\n );\n}\n\nSpinner.displayName = 'Spinner';\n",".svg {\n display: block;\n stroke-dasharray: 90, 150;\n animation: rotate 1.5s linear infinite;\n @media (prefers-reduced-motion: no-preference) {\n animation: rotate 2s linear infinite;\n }\n}\n\n.circle {\n stroke-linecap: round;\n @media (prefers-reduced-motion: no-preference) {\n animation: dash 1.5s ease-in-out infinite;\n }\n}\n\n@keyframes rotate {\n 100% {\n transform: rotate(360deg);\n }\n}\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","import {\n type FocusEventHandler,\n type HTMLAttributes,\n type MouseEventHandler,\n type RefObject,\n} from 'react';\n\nimport styles from './Button.module.css';\nimport { type ButtonProps } from './Button.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { useButtonGroupContext } from '../ButtonGroup/ButtonGroup.context';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { invisible } from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { Spinner } from '../Spinner';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const Button = ({\n children,\n purpose = 'primary',\n size = 'medium',\n iconPosition = 'left',\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 ref,\n className,\n htmlProps = {},\n ...rest\n}: ButtonProps) => {\n const { purpose: groupPurpose, size: groupSize } = useButtonGroupContext();\n\n const hasLabel = !!children;\n const hasIcon = !!icon;\n const hasLabelAndIcon = hasIcon && hasLabel;\n const isIconButton = !hasLabel && hasIcon;\n const isTextButton = hasLabel && !hasIcon;\n const noContent = !hasLabel && !hasIcon;\n\n const buttonCn = cn(\n className,\n styles.button,\n styles[`button--${groupPurpose ? groupPurpose : purpose}`],\n styles[`button--${groupSize ? groupSize : size}`],\n isTextButton && styles['just-text'],\n ...(hasLabelAndIcon\n ? [styles['with-text-and-icon'], styles[`with-icon-${iconPosition}`]]\n : []),\n isIconButton && styles['just-icon'],\n noContent && styles['no-content'],\n fullWidth && styles['button--full-width'],\n loading && styles['button--is-loading'],\n typographyStyles[`body-${size}`],\n focusable,\n );\n\n const iconElement = hasIcon && (\n <Icon\n icon={icon}\n iconSize=\"inherit\"\n className={cn(styles.icon, loading && invisible)}\n />\n );\n\n const content = (\n <>\n {hasLabel && (\n <>\n {iconPosition === 'left' && iconElement}\n <span aria-hidden={loading} className={cn(loading && invisible)}>\n {children}\n </span>\n {iconPosition === 'right' && iconElement}\n </>\n )}\n {isIconButton && iconElement}\n {loading && (\n <span className={cn(!noContent && styles['spinner-wrapper--absolute'])}>\n <Spinner\n /*TODO: bytte til icon size token for button når den er på plass*/\n size=\"calc(var(--dds-font-lineheight-x1) * 1em)\"\n color={\n purpose === 'primary' || purpose === 'danger'\n ? 'iconOnAction'\n : 'iconDefault'\n }\n tooltip={loadingTooltip}\n className={styles.icon}\n />\n </span>\n )}\n </>\n );\n\n if (!href)\n return (\n <button\n ref={ref}\n {...getBaseHTMLProps(id, buttonCn, htmlProps, rest)}\n onClick={loading ? undefined : onClick}\n onFocus={onFocus}\n onBlur={onBlur}\n aria-disabled={loading}\n >\n {content}\n </button>\n );\n else if (href)\n return (\n <a\n ref={ref as RefObject<HTMLAnchorElement | null>}\n {...getBaseHTMLProps(\n id,\n buttonCn,\n //TODO: fikse types ordentlig\n htmlProps as HTMLAttributes<HTMLAnchorElement>,\n rest,\n )}\n onClick={\n loading\n ? undefined\n : //TODO: fikse types ordentlig\n (onClick as unknown as MouseEventHandler<HTMLAnchorElement>)\n }\n //TODO: fikse types ordentlig\n onFocus={onFocus as unknown as FocusEventHandler<HTMLAnchorElement>}\n onBlur={onBlur as unknown as FocusEventHandler<HTMLAnchorElement>}\n href={href}\n rel=\"noreferrer noopener\"\n target={target}\n >\n {content}\n </a>\n );\n};\n\nButton.displayName = 'Button';\n","import { useEffect } from 'react';\n\nimport { useOverflowMenuContext } from './OverflowMenu.context';\nimport styles from './OverflowMenu.module.css';\nimport { useCombinedRef } from '../../hooks';\nimport { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Paper } from '../layout';\n\nimport { type OverflowMenuProps } from '.';\n\nexport const OverflowMenu = ({\n placement = 'bottom-end',\n offset = 2,\n className,\n htmlProps = {},\n ref,\n ...rest\n}: OverflowMenuProps) => {\n const { isOpen, floatStyling, setFloatOptions, menuRef, menuId } =\n useOverflowMenuContext();\n\n useEffect(() => {\n setFloatOptions?.({ placement, offset });\n }, [placement, offset]);\n\n const { style = {}, ...restHTMLProps } = htmlProps;\n const openCn = isOpen ? 'open' : 'closed';\n\n return (\n <Paper\n overflowY=\"auto\"\n minWidth=\"180px\"\n maxWidth=\"300px\"\n ref={useCombinedRef(menuRef, ref)}\n {...getBaseHTMLProps(\n menuId,\n cn(\n className,\n styles.container,\n utilStyles.scrollbar,\n utilStyles['visibility-transition'],\n utilStyles[`visibility-transition--${openCn}`],\n ),\n restHTMLProps,\n rest,\n )}\n role=\"menu\"\n aria-hidden={!isOpen}\n elevation={1}\n border=\"border-default\"\n style={{ ...style, ...floatStyling }}\n />\n );\n};\n\nOverflowMenu.displayName = 'OverflowMenu';\n","import {\n type Dispatch,\n type ReactNode,\n type RefObject,\n type SetStateAction,\n createContext,\n useContext,\n useEffect,\n useState,\n} from 'react';\n\nimport {\n type FloatingStyles,\n type UseFloatPositionOptions,\n useRoveFocus,\n} from '../../hooks';\n\ntype FocusableElement = HTMLButtonElement | HTMLAnchorElement;\n\ninterface CommonContextProps {\n isOpen: boolean;\n onClose?: () => void;\n menuRef?: (node: HTMLElement | null) => void;\n menuId?: string;\n floatStyling?: FloatingStyles;\n setFloatOptions?: Dispatch<\n SetStateAction<UseFloatPositionOptions | undefined>\n >;\n}\ntype OverflowMenuContextProps = CommonContextProps & {\n registerItem: (ref: RefObject<FocusableElement | null>) => void;\n unregisterItem: (ref: RefObject<FocusableElement | null>) => void;\n focusedRef?: RefObject<FocusableElement | null>;\n};\n\nexport type OverflowMenuContextProviderProps = CommonContextProps & {\n children: ReactNode;\n};\n\nconst OverflowMenuContext = createContext<OverflowMenuContextProps>({\n isOpen: false,\n registerItem: () => null,\n unregisterItem: () => null,\n});\n\nexport function OverflowMenuContextProvider({\n children,\n ...rest\n}: OverflowMenuContextProviderProps) {\n const [items, setItems] = useState<Array<RefObject<FocusableElement | null>>>(\n [],\n );\n const [focusIndex] = useRoveFocus(items.length, rest.isOpen);\n\n useEffect(() => {\n items[focusIndex]?.current?.focus();\n }, [focusIndex]);\n\n return (\n <OverflowMenuContext\n value={{\n ...rest,\n registerItem: ref => setItems(prev => [...prev, ref]),\n unregisterItem: ref =>\n setItems(prev => prev.filter(item => item !== ref)),\n focusedRef: items[focusIndex],\n }}\n >\n {children}\n </OverflowMenuContext>\n );\n}\n\nexport const useOverflowMenuContext = () => {\n return useContext(OverflowMenuContext);\n};\n",".container {\n box-sizing: border-box;\n z-index: var(--dds-zindex-overflowmenu);\n}\n\n.list {\n display: flex;\n flex-direction: column;\n}\n\n.list__item {\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--dds-color-surface-default);\n text-decoration: none;\n padding: var(--dds-spacing-x0-75);\n gap: var(--dds-spacing-x0-25);\n\n &.default {\n color: var(--dds-color-text-default);\n }\n\n &.danger {\n color: var(--dds-color-text-danger);\n }\n}\n\n.list__item--link {\n text-align: left;\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n border: none;\n cursor: pointer;\n outline: inherit;\n width: 100%;\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n\n &:hover,\n &:active {\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n\n.icon {\n display: flex;\n align-items: center;\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n}\n\n.button-loading {\n cursor: not-allowed;\n position: relative;\n}\n","import { useEffect, useRef } from 'react';\n\nimport { useCombinedRef } from '../../../hooks';\nimport { cn } from '../../../utils';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport utilStyles, {\n invisible,\n} from '../../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../../Icon';\nimport { Spinner } from '../../Spinner';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\nimport { useOverflowMenuContext } from '../OverflowMenu.context';\nimport styles from '../OverflowMenu.module.css';\nimport { type OverflowMenuButtonProps } from '../OverflowMenu.types';\n\nexport const OverflowMenuButton = ({\n id,\n icon,\n children,\n className,\n onClick,\n purpose = 'default',\n loading,\n loadingTooltip,\n 'aria-disabled': ariaDisabled,\n ref,\n ...rest\n}: OverflowMenuButtonProps) => {\n const itemRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n const { onClose, registerItem, unregisterItem, focusedRef } =\n useOverflowMenuContext();\n\n useEffect(() => {\n registerItem(itemRef);\n return () => unregisterItem(itemRef);\n }, []);\n\n return (\n <li>\n <button\n ref={combinedRef}\n role=\"menuitem\"\n id={id}\n className={cn(\n className,\n styles.list__item,\n styles[purpose],\n typographyStyles['body-small'],\n styles['list__item--link'],\n focusStyles['focusable--inset'],\n loading && styles['button-loading'],\n )}\n onClick={\n loading\n ? undefined\n : e => {\n onClick?.(e);\n onClose?.();\n }\n }\n aria-disabled={loading ? true : ariaDisabled ? ariaDisabled : undefined}\n {...rest}\n tabIndex={focusedRef === itemRef ? 0 : -1}\n >\n {loading && (\n <span className={cn(utilStyles['center-absolute'])}>\n <Spinner\n size=\"var(--dds-icon-size-medium)\"\n tooltip={loadingTooltip}\n />\n </span>\n )}\n\n {icon && (\n <Icon\n className={cn(loading && invisible)}\n iconSize=\"inherit\"\n icon={icon}\n />\n )}\n <span className={cn(loading && invisible)}>{children}</span>\n </button>\n </li>\n );\n};\n\nOverflowMenuButton.displayName = 'OverflowMenuButton';\n","import { useEffect, useRef } from 'react';\n\nimport { useCombinedRef } from '../../../hooks';\nimport { cn } from '../../../utils';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport { Icon } from '../../Icon';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\nimport { useOverflowMenuContext } from '../OverflowMenu.context';\nimport styles from '../OverflowMenu.module.css';\nimport { type OverflowMenuLinkProps } from '../OverflowMenu.types';\n\nexport const OverflowMenuLink = ({\n id,\n href,\n icon,\n className,\n onClick,\n children,\n ref,\n purpose = 'default',\n ...rest\n}: OverflowMenuLinkProps) => {\n const itemRef = useRef<HTMLAnchorElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n const { onClose, registerItem, unregisterItem, focusedRef } =\n useOverflowMenuContext();\n\n useEffect(() => {\n registerItem(itemRef);\n return () => unregisterItem(itemRef);\n }, []);\n\n return (\n <li>\n <a\n ref={combinedRef}\n role=\"menuitem\"\n id={id}\n className={cn(\n className,\n styles.list__item,\n styles[purpose],\n typographyStyles['body-small'],\n styles['list__item--link'],\n focusStyles['focusable--inset'],\n )}\n href={href}\n onClick={e => {\n onClick?.(e);\n onClose?.();\n }}\n {...rest}\n tabIndex={focusedRef === itemRef ? 0 : -1}\n >\n {icon && <Icon iconSize=\"inherit\" icon={icon} />}\n {children}\n </a>\n </li>\n );\n};\n\nOverflowMenuLink.displayName = 'OverflowMenuLink';\n",":where(.divider) {\n border: 0;\n background-color: transparent;\n border-top: 1px solid;\n margin-top: var(--dds-spacing-x1);\n margin-bottom: var(--dds-spacing-x1);\n}\n\n.divider--default {\n color: var(--dds-color-border-default);\n}\n\n.divider--subtle {\n color: var(--dds-color-border-subtle);\n}\n\n.divider--on-inverse {\n color: var(--dds-color-border-inverse);\n}\n","import styles from './Divider.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\n\nexport type DividerColor = 'default' | 'subtle' | 'on-inverse';\n\nexport type DividerProps = BaseComponentProps<\n HTMLHRElement,\n {\n /** Farge på horisontal linje.\n * @default \"default\"\n */\n color?: DividerColor;\n }\n>;\n\nexport const Divider = ({\n color = 'default',\n id,\n className,\n htmlProps,\n ...rest\n}: DividerProps) => {\n return (\n <hr\n {...getBaseHTMLProps(\n id,\n cn(className, styles.divider, styles[`divider--${color}`]),\n htmlProps,\n rest,\n )}\n />\n );\n};\n","import { getBaseHTMLProps } from '../../../types';\nimport { Divider, type DividerProps } from '../../Divider';\nimport { Box } from '../../layout';\n\ntype OverflowMenuDividerProps = Omit<DividerProps, 'color'>;\n\nexport const OverflowMenuDivider = ({\n id,\n className,\n htmlProps,\n ...rest\n}: OverflowMenuDividerProps) => {\n return (\n <Box\n as={Divider}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n marginInline=\"x0.5\"\n marginBlock=\"x0\"\n color=\"subtle\"\n />\n );\n};\n\nOverflowMenuDivider.displayName = 'OverflowMenuDivider';\n","import { StylelessList, type StylelessListProps } from '../../helpers';\n\ntype OverflowMenuListProps = StylelessListProps;\n\nexport const OverflowMenuList = (props: OverflowMenuListProps) => (\n <StylelessList {...props} />\n);\n","import { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\nimport styles from '../OverflowMenu.module.css';\nimport { type OverflowMenuSpanProps } from '../OverflowMenu.types';\n\nexport const OverflowMenuSpan = ({\n icon,\n children,\n className,\n purpose = 'default',\n ...rest\n}: OverflowMenuSpanProps) => (\n <li>\n <span\n className={cn(\n className,\n styles.list__item,\n styles[purpose],\n typographyStyles['body-small'],\n )}\n {...rest}\n >\n {icon && <Icon iconSize=\"inherit\" icon={icon} />}\n {children}\n </span>\n </li>\n);\n\nOverflowMenuSpan.displayName = 'OverflowMenuSpan';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Box } from '../../layout';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\n\ntype OverflowMenuListHeaderProps = ComponentPropsWithRef<'h2'>;\n\nexport const OverflowMenuListHeader = ({\n className,\n ...rest\n}: OverflowMenuListHeaderProps) => (\n <Box\n as=\"h2\"\n paddingInline=\"x0.75\"\n paddingBlock=\"x0.75 0\"\n {...rest}\n className={cn(className, typographyStyles['heading-xxsmall'])}\n />\n);\n\nOverflowMenuListHeader.displayName = 'OverflowMenuListHeader';\n","import {\n type DetailedHTMLProps,\n type Dispatch,\n type HTMLAttributes,\n Children as ReactChildren,\n type ReactNode,\n type SetStateAction,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { OverflowMenuContextProvider } from './OverflowMenu.context';\nimport {\n type UseFloatPositionOptions,\n useCombinedRef,\n useFloatPosition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../hooks';\n\nexport interface OverflowMenuGroupProps {\n /**Om `<OverflowMenu>` er åpen ved første render.\n * @default false\n */\n isInitiallyOpen?: boolean;\n /**Implementerer kontrollert tilstand: forteller `<OverflowMenu>` om den skal være åpen. */\n isOpen?: boolean;\n /**Implementerer kontrollert tilstand: funksjon for å kontrollere `isOpen`. */\n setIsOpen?: Dispatch<SetStateAction<boolean>>;\n /**Callback når `<OverflowMenu>` åpnes. */\n onOpen?: () => void;\n /**Callback 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 onOpen,\n setIsOpen: propSetIsOpen,\n isOpen: propIsOpen,\n isInitiallyOpen = false,\n overflowMenuId,\n}: OverflowMenuGroupProps) => {\n const [internalIsOpen, internalSetIsOpen] = useState(isInitiallyOpen);\n\n const [isOpen, setIsOpen] = [\n propIsOpen ?? internalIsOpen,\n propSetIsOpen ?? internalSetIsOpen,\n ];\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n\n const generatedId = useId();\n const uniqueOverflowMenuId = overflowMenuId ?? `${generatedId}-overflowMenu`;\n\n const [floatOptions, setFloatOptions] = useState<UseFloatPositionOptions>();\n const { refs, styles: positionStyles } = useFloatPosition(null, floatOptions);\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const anchorRef = refs.setReference;\n const combinedAnchorRef = useCombinedRef(buttonRef, anchorRef);\n const menuRef = useRef<HTMLDivElement>(null);\n const floatingRef = refs.setFloating;\n const combinedMenuRef = useCombinedRef(menuRef, floatingRef);\n\n const handleClose = () => {\n if (isOpen) {\n onClose && onClose();\n close();\n }\n };\n\n const handleToggle = () => {\n !isOpen && onOpen?.();\n isOpen && onClose?.();\n toggle();\n };\n\n useOnClickOutside([menuRef.current, buttonRef.current], () => {\n handleClose();\n });\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n onClose && onClose();\n close();\n buttonRef.current?.focus();\n }\n });\n\n useOnKeyDown(['Tab'], () => {\n handleClose();\n });\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement<\n DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>\n >(child) &&\n (childIndex === 0\n ? cloneElement(child, {\n 'aria-haspopup': 'menu',\n 'aria-controls': uniqueOverflowMenuId,\n 'aria-expanded': isOpen,\n onClick: handleToggle,\n ref: combinedAnchorRef,\n })\n : child)\n );\n });\n\n return (\n <OverflowMenuContextProvider\n isOpen={isOpen}\n onClose={handleClose}\n menuRef={combinedMenuRef}\n setFloatOptions={setFloatOptions}\n floatStyling={positionStyles.floating}\n menuId={uniqueOverflowMenuId}\n >\n {Children}\n </OverflowMenuContextProvider>\n );\n};\n\nOverflowMenuGroup.displayName = 'OverflowMenuGroup';\n",".group > *:focus-visible {\n position: relative;\n z-index: var(--dds-zindex-absolute-element);\n}\n\n.group--column {\n display: flex;\n flex-direction: column;\n\n > * {\n width: 100%;\n }\n}\n\n.group--column > *:first-child {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-block-end: -1px;\n}\n\n.group--column > *:last-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.group--column > *:not(:first-child):not(:last-child) {\n border-radius: 0;\n margin-block-end: -1px;\n}\n\n.group--row > *:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n margin-inline-end: -1px;\n}\n\n.group--row > *:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.group--row > *:not(:first-child):not(:last-child) {\n border-radius: 0;\n margin-inline-end: -1px;\n}\n","import {\n type AriaRole,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n} from 'react';\n\nimport { ButtonGroupContext } from './ButtonGroup.context';\nimport styles from './ButtonGroup.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { type ButtonSize } from '../Button/Button.types';\n\ntype PickedHTMLAttributes = Pick<\n HTMLAttributes<HTMLDivElement>,\n 'role' | 'aria-label' | 'aria-labelledby'\n>;\n\nexport type ButtonGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Retning for gruppen.\n * @default \"row\"\n */\n direction?: Direction;\n /**Størrelse på knappene.\n * @default \"medium\"\n */\n buttonSize?: ButtonSize;\n /**Nativ `aria-label` ved behov. */\n 'aria-label'?: string;\n /**Nativ `aria-labelledby` ved behov. */\n 'aria-labelledby'?: string;\n /**Nativ `role` ved behov.\n * @default \"group\"\n */\n role?: AriaRole;\n } & Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof PickedHTMLAttributes>\n>;\n\nexport const ButtonGroup = ({\n children,\n id,\n className,\n htmlProps,\n direction = 'row',\n buttonSize = 'medium',\n role = 'group',\n ...rest\n}: ButtonGroupProps) => (\n <ButtonGroupContext value={{ size: buttonSize, purpose: 'secondary' }}>\n <div\n role={role}\n {...getBaseHTMLProps(\n id,\n cn(className, styles.group, styles[`group--${direction}`]),\n htmlProps,\n rest,\n )}\n >\n {children}\n </div>\n </ButtonGroupContext>\n);\nButtonGroup.displayName = 'ButtonGroup';\n",".container {\n border: 1px solid;\n border-radius: var(--dds-border-radius-surface);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n border-color 0.2s;\n }\n}\n\n.container--filled {\n background-color: var(--dds-color-brand-primary-subtle);\n border-color: var(--dds-color-brand-primary-subtle);\n}\n\n.container--border {\n background-color: var(--dds-color-surface-default);\n border-color: var(--dds-color-border-subtle);\n}\n\n.container--navigation {\n text-decoration: none;\n display: block;\n &:hover {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: inset 0 0 0 1px var(--dds-color-border-action-hover);\n }\n}\n\n.container--expandable {\n width: 100%;\n box-sizing: border-box;\n & + .container--expandable {\n border-top: none;\n }\n}\n","import { type AnchorHTMLAttributes, type RefObject } from 'react';\n\nimport styles from './Card.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\n\nexport type CardAppearance = 'filled' | 'border';\n\nexport type CardType = 'info' | 'navigation' | 'expandable';\n\ntype BaseCardProps<T extends HTMLElement> = BaseComponentPropsWithChildren<\n T,\n {\n /** Utseende på komponenten.\n * @default \"filled\"\n */\n appearance?: CardAppearance;\n\n /** Referanse til komponenten. */\n cardRef?: RefObject<T | null>;\n }\n>;\n\nexport type InfoCardProps = BaseCardProps<HTMLDivElement> & {\n /** Spesifiserer funksjonalitet og formål med komponenten. **OBS!** ved `'navigation'` må `href` oppgis. */\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 appearance = 'filled',\n cardType,\n cardRef,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const classNames = cn(\n className,\n styles.container,\n styles[`container--${appearance}`],\n cardType !== 'info' && styles[`container--${cardType}`],\n );\n\n if (cardType === 'navigation') {\n const { href, target } = props;\n\n return (\n <a\n {...getBaseHTMLProps(\n id,\n cn(classNames, focusStyles.focusable),\n htmlProps,\n rest,\n )}\n ref={cardRef}\n href={href}\n target={target}\n />\n );\n }\n\n return (\n <div {...getBaseHTMLProps(id, classNames, htmlProps, rest)} ref={cardRef} />\n );\n};\n\nCard.displayName = 'Card';\n",".container {\n border-radius: inherit;\n}\n\n.header-button {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover {\n box-shadow: 0 0 0 2px var(--dds-color-border-action-hover);\n }\n}\n\n.header-container {\n padding: var(--dds-card-accordion-header-container-padding);\n justify-content: space-between;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: box-shadow 0.2s;\n }\n}\n\n.header-container__chevron {\n margin-left: var(--dds-spacing-x0-5);\n}\n\n.body {\n height: var(--dds-card-accordion-body-height);\n}\n\n.body__content {\n padding: var(--dds-card-accordion-body-content-padding);\n}\n","import styles from './CardExpandable.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport {\n AccordionContextProvider,\n useAccordion,\n} from '../../helpers/AccordionBase';\n\nexport type CardExpandableProps = 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 CardExpandable = ({\n isExpanded = false,\n onChange,\n id,\n children,\n className,\n htmlProps,\n ...rest\n}: CardExpandableProps) => {\n const {\n id: accordionId,\n isExpanded: expanded,\n toggleExpanded,\n bodyContentRef,\n headerProps,\n bodyProps,\n } = useAccordion({ initiallyExpanded: isExpanded, onChange, id });\n\n return (\n <div\n {...getBaseHTMLProps(\n accordionId,\n cn(className, styles['container']),\n htmlProps,\n rest,\n )}\n >\n <AccordionContextProvider\n headerProps={headerProps}\n bodyProps={bodyProps}\n isExpanded={expanded}\n toggleExpanded={toggleExpanded}\n bodyContentRef={bodyContentRef}\n >\n {children}\n </AccordionContextProvider>\n </div>\n );\n};\n\nCardExpandable.displayName = 'CardExpandable';\n","import { type Properties, type Property } from 'csstype';\nimport { type ButtonHTMLAttributes } from 'react';\n\nimport styles from './CardExpandable.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { AnimatedChevronUpDown } from '../../helpers';\nimport { useAccordionContext } from '../../helpers/AccordionBase';\nimport baseStyles from '../../helpers/AccordionBase/AccordionBase.module.css';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { type StaticTypographyType, getTypographyCn } from '../../Typography';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\n\nexport type CardExpandableHeaderProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n /**Overskriver default teksttype. */\n typographyType?: StaticTypographyType;\n /**Angir om teksten skal være i \"bold\"-format. */\n bold?: boolean;\n },\n ButtonHTMLAttributes<HTMLButtonElement>\n >,\n 'id'\n>;\n\nexport const CardExpandableHeader = ({\n children,\n className,\n htmlProps,\n padding,\n typographyType = 'headingLarge',\n bold,\n ...rest\n}: CardExpandableHeaderProps) => {\n const { isExpanded, headerProps } = useAccordionContext();\n\n const containerStyleVariables: Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-card-accordion-header-container-padding' as any]:\n padding ??\n 'var(--dds-spacing-x1) var(--dds-spacing-x0-75) var(--dds-spacing-x1) var(--dds-spacing-x1-5)',\n };\n\n const { id, ...restHeaderProps } = headerProps ?? {};\n\n return (\n <button\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles['header-button'],\n baseStyles['header-button'],\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n focusable,\n ),\n htmlProps,\n rest,\n )}\n {...restHeaderProps}\n type=\"button\"\n >\n <div\n style={containerStyleVariables}\n className={cn(\n baseStyles['header-container'],\n styles['header-container'],\n typographyStyles[getTypographyCn(typographyType)],\n bold && typographyStyles.bold,\n )}\n >\n <div className={baseStyles.header__content}>{children}</div>\n <span\n className={cn(\n baseStyles.header__chevron,\n styles['header-container__chevron'],\n )}\n >\n <AnimatedChevronUpDown\n width=\"var(--dds-icon-size-medium)\"\n height=\"var(--dds-spacing-x0-5)\"\n isUp={isExpanded}\n />\n </span>\n </div>\n </button>\n );\n};\n\nCardExpandableHeader.displayName = 'CardExpandableHeader';\n","import { type Properties, type Property } from 'csstype';\n\nimport styles from './CardExpandable.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { cn } from '../../../utils';\nimport { useAccordionContext } from '../../helpers/AccordionBase';\nimport baseStyles from '../../helpers/AccordionBase/AccordionBase.module.css';\n\nexport type CardExpandableBodyProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Overskriver default padding. */\n padding?: Property.Padding<string>;\n }\n >,\n 'id'\n>;\n\nexport const CardExpandableBody = ({\n children,\n className,\n htmlProps,\n padding,\n ...rest\n}: CardExpandableBodyProps) => {\n const { bodyContentRef, bodyProps } = useAccordionContext();\n\n const {\n className: bodyContextCn,\n id,\n height,\n ...restBodyProps\n } = bodyProps ?? {};\n\n const styleVariables: Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-card-accordion-body-height' as any]: height + 'px',\n };\n\n const contentStyleVariables: Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-card-accordion-body-content-padding' as any]:\n padding ??\n 'var(--dds-spacing-x1) calc(var(--dds-spacing-x2) + var(--dds-spacing-x0-75)) var(--dds-spacing-x2) var(--dds-spacing-x1-5)',\n };\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, baseStyles.body, styles.body, bodyContextCn),\n htmlProps,\n rest,\n )}\n {...restBodyProps}\n style={{ ...htmlProps?.style, ...styleVariables }}\n >\n <div\n ref={bodyContentRef}\n className={styles.body__content}\n style={contentStyleVariables}\n >\n {children}\n </div>\n </div>\n );\n};\n\nCardExpandableBody.displayName = 'CardExpandableBody';\n","import { useState } from 'react';\n\nimport styles from './Chip.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils/dom';\nimport { Button } from '../Button';\nimport { CloseSmallIcon } from '../Icon/icons';\nimport { TextOverflowEllipsisInner } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\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 = ({\n text,\n onClose,\n id,\n className,\n htmlProps = {},\n ...rest\n}: ChipProps) => {\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 <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container),\n restHTMLprops,\n rest,\n )}\n >\n <TextOverflowEllipsisInner className={cn(typographyStyles['body-small'])}>\n {text}\n </TextOverflowEllipsisInner>\n <Button\n size=\"xsmall\"\n icon={CloseSmallIcon}\n purpose=\"tertiary\"\n onClick={onClick}\n aria-label={ariaLabel ?? `Fjern ${text ? `chip ${text}` : 'chip'}`}\n />\n </div>\n ) : null;\n};\n\nChip.displayName = 'Chip';\n",".container {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n gap: var(--dds-spacing-x0-25);\n padding: var(--dds-spacing-x0-125) var(--dds-spacing-x0-25)\n var(--dds-spacing-x0-125) var(--dds-spacing-x0-5);\n border: 1px solid var(--dds-color-border-subtle);\n border-radius: var(--dds-border-radius-chip);\n background-color: var(--dds-color-surface-subtle);\n}\n","import { Children, type ComponentPropsWithRef } from 'react';\n\nimport { StylelessList } from '../helpers';\nimport { HStack } from '../layout';\n\nexport type ChipGroupProps = ComponentPropsWithRef<'ul'>;\n\nexport const ChipGroup = ({ children, ...rest }: ChipGroupProps) => {\n const childrenArray = Children.toArray(children);\n\n return (\n <HStack as={StylelessList} {...rest} gap=\"x0.75\">\n {childrenArray.map((item, index) => (\n <li key={`chip-${index}`}>{item}</li>\n ))}\n </HStack>\n );\n};\n\nChipGroup.displayName = 'ChipGroup';\n",":where(.container) {\n background-color: var(--dds-color-surface-inverse-default);\n}\n","import styles from './Contrast.module.css';\nimport { cn } from '../../utils';\nimport { ElementAs, type PolymorphicProps } from '../helpers/ElementAs';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type ContrastProps<T extends React.ElementType> = PolymorphicProps<T>;\n\nexport const Contrast = <T extends React.ElementType>({\n className,\n as = 'div',\n ...rest\n}: ContrastProps<T>) => {\n return (\n <ElementAs\n as={as}\n className={cn(className, typographyStyles.contrast, styles.container)}\n {...rest}\n />\n );\n};\n","import { useId } from 'react';\n\nimport { type CheckboxProps } from './Checkbox.types';\nimport { useCheckboxGroup } from './CheckboxGroupContext';\nimport { getBaseHTMLProps } from '../../../types';\nimport {\n cn,\n readOnlyClickHandler,\n readOnlyKeyDownHandler,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { Typography } from '../../Typography';\nimport { Label, SelectionControl } from '../SelectionControl.styles';\nimport { selectionControlTypographyProps } from '../SelectionControl.utils';\n\nexport const Checkbox = ({\n id,\n name,\n label,\n error = false,\n disabled,\n readOnly,\n indeterminate,\n 'aria-describedby': ariaDescribedby,\n className,\n htmlProps = {},\n children,\n ...rest\n}: CheckboxProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-checkbox`;\n const checkboxGroup = useCheckboxGroup();\n\n const hasLabel = !!label;\n const hasChildren = !!children;\n\n const { style, className: htmlPropsClassName, ...restHtmlProps } = htmlProps;\n\n const isReadOnly = readOnly || checkboxGroup?.readOnly;\n const hasError = error || checkboxGroup?.error;\n const isDisabled = disabled || checkboxGroup?.disabled;\n\n return (\n <Label\n hasError={hasError}\n disabled={isDisabled}\n readOnly={isReadOnly}\n htmlFor={uniqueId}\n hasText={hasLabel}\n controlType=\"checkbox\"\n className={cn(className, htmlPropsClassName)}\n style={style}\n >\n <input\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n name={name}\n disabled={isDisabled}\n aria-describedby={spaceSeparatedIdListGenerator([\n checkboxGroup?.tipId,\n checkboxGroup?.errorMessageId,\n ariaDescribedby,\n ])}\n aria-invalid={hasError ? true : undefined}\n aria-labelledby={checkboxGroup?.uniqueGroupId}\n aria-checked={indeterminate ? 'mixed' : undefined}\n aria-readonly={isReadOnly}\n type=\"checkbox\"\n data-indeterminate={indeterminate}\n className={cn(\n utilStyles['hide-input'],\n focusStyles['focusable-sibling'],\n )}\n onKeyDown={readOnlyKeyDownHandler(\n 'selectionControl',\n isReadOnly,\n htmlProps.onKeyDown,\n )}\n onClick={readOnlyClickHandler(isReadOnly, htmlProps.onClick)}\n />\n <SelectionControl\n controlType=\"checkbox\"\n className={focusStyles['focus-styled-sibling']}\n />\n {hasChildren ? (\n children\n ) : hasLabel ? (\n <Typography {...selectionControlTypographyProps}>{label}</Typography>\n ) : null}\n </Label>\n );\n};\n\nCheckbox.displayName = 'Checkbox';\n","import { createContext, useContext } from 'react';\n\nimport { type Nullable } from '../../../types';\n\nexport interface CheckboxGroupContextProps {\n error?: boolean;\n errorMessageId?: string;\n uniqueGroupId?: string;\n tipId?: string;\n disabled?: boolean;\n readOnly?: boolean;\n}\n\nexport const CheckboxGroupContext =\n createContext<Nullable<CheckboxGroupContextProps>>(null);\n\nexport const useCheckboxGroup = () => {\n return useContext(CheckboxGroupContext);\n};\n",".container {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x0-125);\n}\n\n.group {\n display: flex;\n}\n\n.group--row {\n flex-direction: row;\n gap: var(--dds-spacing-x0-75);\n}\n\n.group--column {\n flex-direction: column;\n gap: var(--dds-spacing-x0-5);\n}\n\n.label {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n\n input ~ .selection-control {\n @media (prefers-reduced-motion: no-preference) {\n transition:\n box-shadow 0.2s,\n background-color 0.2s,\n border 0.2s,\n var(--dds-focus-transition);\n }\n }\n\n &:hover:not(.label--readonly)\n input:enabled:not(:checked)\n ~ .selection-control {\n background-color: var(--dds-color-surface-hover-default);\n box-shadow: inset 0 0 0 1px var(--dds-color-border-action-hover);\n border-color: var(--dds-color-border-action-hover);\n }\n\n input:checked:enabled ~ .selection-control,\n input:enabled[data-indeterminate='true'] ~ .selection-control {\n border-color: var(--dds-color-surface-action-selected);\n background-color: var(--dds-color-surface-action-selected);\n }\n\n &.label--readonly input:checked:enabled ~ .selection-control,\n &.label--readonly\n input:enabled[data-indeterminate='true']\n ~ .selection-control {\n border-color: var(--dds-color-surface-action-selected-disabled);\n background-color: var(--dds-color-surface-action-selected-disabled);\n }\n\n &:hover:not(.label--readonly)\n input:checked:enabled[type='checkbox']\n ~ .selection-control,\n &:hover:not(.label--readonly)\n input:enabled[data-indeterminate='true']\n ~ .selection-control {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-surface-action-hover);\n }\n\n input:checked ~ .selection-control:after,\n input[data-indeterminate='true'] ~ .selection-control:after {\n display: block;\n }\n}\n\n.label--checkbox {\n .selection-control:after {\n border: solid var(--dds-color-icon-on-action);\n border-width: 0 1px 1px 0;\n left: 6px;\n top: 1px;\n width: 5px;\n height: 10px;\n transform: rotate(45deg);\n }\n\n input[data-indeterminate='true'] ~ .selection-control: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\n.label--radio {\n .selection-control:after {\n border-radius: var(--dds-border-radius-rounded);\n background-color: var(--dds-color-icon-on-action);\n height: 8px;\n width: 8px;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n}\n\n.label--disabled {\n cursor: not-allowed;\n input:disabled ~ .selection-control {\n border-color: var(--dds-color-border-default);\n }\n input:checked:disabled ~ .selection-control,\n input:disabled[data-indeterminate='true'] ~ .selection-control {\n border-color: var(--dds-color-surface-action-selected-disabled);\n background-color: var(--dds-color-surface-action-selected-disabled);\n }\n}\n\n.label--readonly {\n cursor: default;\n color: var(--dds-color-text-medium);\n input ~ .selection-control {\n border-color: var(--dds-color-border-default);\n background-color: var(--dds-color-surface-field-disabled);\n }\n input:checked ~ .selection-control,\n input[data-indeterminate='true'] ~ .selection-control {\n border-color: var(--dds-color-surface-action-selected-disabled);\n background-color: var(--dds-color-surface-action-selected-disabled);\n }\n}\n\n.label--error {\n &:hover input:enabled:not(:focus-visible):not(:checked) ~ .selection-control {\n background-color: var(--dds-color-surface-danger-default);\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-c-tic-border-danger);\n }\n\n input:not(:focus-visible) ~ .selection-control,\n input:checked:enabled:not(:focus-visible)\n .selection-control\n &:hover\n input:checked:enabled:not(:focus-visible)\n .selection-control {\n border-color: var(--dds-color-border-danger);\n box-shadow: 0 0 0 1px var(--dds-color-border-danger);\n }\n}\n\n.label--no-text {\n padding: 9px;\n}\n\n.selection-control {\n position: absolute;\n left: 0;\n box-sizing: border-box;\n border: 1px solid;\n border-color: var(--dds-color-border-default);\n background-color: var(--dds-color-surface-field-default);\n border-radius: var(--dds-border-radius-input);\n height: 18px;\n width: 18px;\n &:after {\n content: '';\n position: absolute;\n display: none;\n box-sizing: border-box;\n }\n}\n\n.selection-control--radio {\n border-radius: var(--dds-border-radius-rounded);\n}\n","import { type HTMLAttributes, type LabelHTMLAttributes } from 'react';\n\nimport styles from './SelectionControl.module.css';\nimport { RequiredMarker, cn } from '../../utils';\nimport { Icon } from '../Icon';\nimport { LockIcon } from '../Icon/icons';\nimport { Box } from '../layout';\nimport { Typography } from '../Typography';\nimport labelStyles from '../Typography/Label/Label.module.css';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\ntype SelectionControlType = 'radio' | 'checkbox';\n\ntype SelectionControlProps = {\n controlType: SelectionControlType;\n} & HTMLAttributes<HTMLSpanElement>;\n\nexport const SelectionControl = ({\n controlType,\n className,\n ...rest\n}: SelectionControlProps) => (\n <span\n className={cn(\n className,\n styles['selection-control'],\n controlType === 'radio' && styles['selection-control--radio'],\n )}\n {...rest}\n />\n);\n\ntype SelectionControlLabelProps = {\n disabled?: boolean;\n readOnly?: boolean;\n hasError?: boolean;\n hasText?: boolean;\n controlType: SelectionControlType;\n} & LabelHTMLAttributes<HTMLLabelElement>;\n\nexport const Label = ({\n disabled,\n readOnly,\n hasError,\n hasText,\n controlType,\n className,\n ...rest\n}: SelectionControlLabelProps) => {\n return (\n <Box\n as=\"label\"\n position=\"relative\"\n display=\"flex\"\n alignItems=\"center\"\n width=\"fit-content\"\n paddingInline=\"calc(18px + var(--dds-spacing-x0-5)) 0\"\n className={cn(\n className,\n styles.label,\n styles[`label--${controlType}`],\n !hasText && styles['label--no-text'],\n typographyStyles['text-color--default'],\n disabled && styles['label--disabled'],\n disabled && typographyStyles['text-color--subtle'],\n readOnly && styles['label--readonly'],\n hasError && styles['label--error'],\n )}\n {...rest}\n />\n );\n};\n\ninterface SelectionControlGroupLabelProps {\n id?: string;\n showRequiredMarker?: boolean;\n readOnly?: boolean;\n children?: string;\n}\n\nexport const GroupLabel = ({\n id,\n showRequiredMarker,\n readOnly,\n children,\n}: SelectionControlGroupLabelProps) => {\n return (\n <Typography\n as=\"span\"\n typographyType=\"labelMedium\"\n id={id}\n className={readOnly ? labelStyles['read-only'] : undefined}\n >\n {readOnly && (\n <Icon\n icon={LockIcon}\n className={labelStyles['read-only__icon']}\n iconSize=\"small\"\n />\n )}\n {children} {showRequiredMarker && <RequiredMarker />}\n </Typography>\n );\n};\n","import { type TypographyProps } from '../Typography';\n\nexport const selectionControlSizeNumberPx = 18;\nexport const selectionControlSize = `${selectionControlSizeNumberPx}px`;\n\nexport const selectionControlTypographyProps: TypographyProps = {\n color: 'inherit',\n typographyType: 'bodyMedium',\n as: 'span',\n};\n","import { useId } from 'react';\n\nimport {\n CheckboxGroupContext,\n type CheckboxGroupContextProps,\n} from './CheckboxGroupContext';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { convertBooleanishToBoolean } from '../../../types/Booleanish';\nimport { cn, derivativeIdGenerator } from '../../../utils';\nimport { renderInputMessage } from '../../InputMessage';\nimport { type SelectionControlGroupCommonProps } from '../common/SelectionControl.types';\nimport styles from '../SelectionControl.module.css';\nimport { GroupLabel } from '../SelectionControl.styles';\n\nexport type CheckboxGroupProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n SelectionControlGroupCommonProps & {\n /**Indikerer at det er påkrevd å velge minst ett alternativ. Legger en markør bak ledeteksten. **OBS!** `required` må i tillegg gis til `<Checkbox>`-barna 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 disabled = false,\n readOnly = 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 =\n required || convertBooleanishToBoolean(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 disabled,\n readOnly,\n };\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container),\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n {label !== undefined ? (\n <GroupLabel\n id={uniqueGroupId}\n readOnly={readOnly}\n showRequiredMarker={showRequiredMarker}\n >\n {label}\n </GroupLabel>\n ) : null}\n {renderInputMessage(tip, tipId)}\n <CheckboxGroupContext value={{ ...contextProps }}>\n <div\n role=\"group\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tip ? tipId : undefined}\n className={cn(styles.group, styles[`group--${direction}`])}\n >\n {children}\n </div>\n </CheckboxGroupContext>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </div>\n );\n};\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n","export type Booleanish = boolean | 'true' | 'false';\n\nexport function convertBooleanishToBoolean(\n value?: Booleanish,\n): boolean | undefined {\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n } else {\n return value;\n }\n}\n",".container {\n display: flex;\n width: -moz-fit-content;\n width: fit-content;\n word-break: break-word;\n max-width: 100%;\n}\n\n.container--error {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n background-color: var(--dds-color-surface-danger-default);\n border-bottom-left-radius: var(--dds-border-radius-surface);\n border-bottom-right-radius: var(--dds-border-radius-surface);\n gap: var(--dds-spacing-x0-25);\n\n .icon {\n color: var(--dds-color-icon-on-danger-default);\n }\n}\n\n/* Plasserer ikonet sentrert i forhold til første linja av teksten.\n* Trekker fra 1px slik at det ser ut som i Figma; CSS håndterer linjehøyde annerledes.\n*/\n.icon {\n margin-top: calc(\n (var(--dds-font-lineheight-x1) * 1em - var(--dds-icon-size-small)) / 2 - 1px\n );\n}\n","import styles from './InputMessage.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\nimport { ErrorIcon } from '../Icon/icons';\nimport { Typography } from '../Typography/Typography/Typography';\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 * @default \"error\"\n */\n messageType: InputMessageType;\n }\n>;\n\nexport const InputMessage = ({\n message,\n messageType,\n id,\n className,\n htmlProps,\n ...rest\n}: InputMessageProps) => {\n const isError = messageType === 'error';\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container, isError && styles['container--error']),\n htmlProps,\n rest,\n )}\n >\n {isError && (\n <Icon icon={ErrorIcon} iconSize=\"small\" className={styles.icon} />\n )}\n <Typography\n typographyType={isError ? 'bodySmall' : 'bodyXsmall'}\n color={isError ? 'textDefault' : 'textSubtle'}\n as=\"span\"\n >\n {message}\n </Typography>\n </div>\n );\n};\n\nInputMessage.displayName = '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",".checkbox-label {\n padding: 0 0 0 calc(18px + var(--dds-spacing-x0-5));\n align-items: flex-start;\n /* Plasserer ikonet sentrert i forhold til første linja av teksten.\n * Trekker fra 1px slik at det ser ut som i Figma; CSS håndterer linjehøyde annerledes.\n */\n & > span {\n top: calc(\n (var(--dds-font-lineheight-x1) * 1em - var(--dds-icon-size-small)) / 2 -\n 1px\n );\n }\n}\n","import { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { VStack } from '../layout';\nimport { Checkbox, type CheckboxProps } from '../SelectionControl/Checkbox';\nimport { Typography } from '../Typography';\nimport styles from './CookieBanner.module.css';\n\nexport type CookieBannerCheckboxProps = Omit<\n CheckboxProps,\n 'label' | 'children'\n> & {\n /**Header - kort oppsummering av den spesifikke typen informasjonskapsel. */\n headerText?: string;\n /**Detaljer rundt den spesifikke typen informasjonskapsel. */\n description: string;\n};\n\nexport function CookieBannerCheckbox({\n headerText,\n description,\n id,\n className,\n htmlProps,\n ...rest\n}: CookieBannerCheckboxProps) {\n return (\n <Checkbox\n {...getBaseHTMLProps(\n id,\n cn(className, styles['checkbox-label']),\n htmlProps,\n rest,\n )}\n >\n <VStack gap=\"x0.5\">\n <Typography as=\"span\" typographyType=\"headingSmall\">\n {headerText}\n </Typography>\n <Typography as=\"span\"> {description} </Typography>\n </VStack>\n </Checkbox>\n );\n}\n\nCookieBannerCheckbox.displayName = 'CookieBannerCheckbox';\n","import { type ReactNode } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button, type ButtonProps } from '../Button';\nimport { HStack, Paper, type ResponsiveProps, VStack } from '../layout';\nimport { Heading } from '../Typography';\nimport {\n CookieBannerCheckbox,\n type CookieBannerCheckboxProps,\n} from './CookieBannerCheckbox';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { applyResponsiveStyle } from '../layout/common/utils';\n\nexport type CookieBannerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Header - kort oppsummering. */\n headerText?: string;\n /**Hovedinnholdet med info rundt informasjonkapsler bruk på siden. Kan inneholde lenker og andre interaktive elementer. */\n description?: ReactNode;\n /**Knapper for ulike nivåer av godkjenning av informasjonskaplser. Layout for knappene håndteres ut av boksen. */\n buttons?: Array<Omit<ButtonProps, 'purpose' | 'size'>>;\n /**Checkboxes for hver type informasjonskapsel som brukes på siden. Layout håndteres ut av boksen. */\n checkboxes?: Array<CookieBannerCheckboxProps>;\n } & Pick<\n ResponsiveProps,\n 'position' | 'top' | 'bottom' | 'left' | 'right' | 'width' | 'maxHeight'\n >\n>;\n\nexport function CookieBanner({\n headerText,\n description,\n buttons,\n checkboxes,\n id,\n className,\n htmlProps,\n 'aria-label': ariaLabel = 'Samtykke for bruk av informasjonskapsler',\n maxHeight = 'calc(100vh - 100px)',\n width = 'fit-content',\n children,\n ...rest\n}: CookieBannerProps) {\n return (\n <Paper\n {...getBaseHTMLProps(\n id,\n cn(className, utilStyles.scrollbar, utilStyles['scrollable-y']),\n htmlProps,\n rest,\n )}\n role=\"region\"\n aria-label={ariaLabel}\n padding={applyResponsiveStyle('x1', 'sm', 'x1.5')}\n width={width}\n maxHeight={maxHeight}\n border=\"border-default\"\n background=\"brand-tertiary-medium\"\n >\n <VStack maxWidth=\"70ch\" gap=\"x1\">\n {headerText && (\n <Heading level={2} typographyType=\"headingMedium\">\n {headerText}\n </Heading>\n )}\n {children}\n {description && <div>{description}</div>}\n {checkboxes && (\n <VStack gap=\"x1\">\n {checkboxes.map(props => (\n <CookieBannerCheckbox {...props} />\n ))}\n </VStack>\n )}\n {buttons && (\n <HStack\n gap={applyResponsiveStyle('x1', 'sm', 'x1.5')}\n flexWrap=\"wrap\"\n paddingBlock=\"x0.25 0\"\n >\n {buttons.map(props => (\n <Button {...props} size=\"medium\" purpose=\"secondary\" />\n ))}\n </HStack>\n )}\n </VStack>\n </Paper>\n );\n}\n\nCookieBanner.displayName = 'CookieBanner';\n","import { GregorianCalendar } from '@internationalized/date';\nimport {\n type AriaCalendarProps,\n type DateValue,\n useCalendar,\n} from '@react-aria/calendar';\nimport { useLocale } from '@react-aria/i18n';\nimport { useCalendarState } from '@react-stately/calendar';\nimport {\n type KeyboardEvent,\n type KeyboardEventHandler,\n useContext,\n} from 'react';\n\nimport { CalendarGrid } from './CalendarGrid';\nimport { Button } from '../../../Button';\nimport { ArrowLeftIcon, ArrowRightIcon } from '../../../Icon/icons';\nimport { Heading } from '../../../Typography';\nimport styles from '../../common/DateInput.module.css';\nimport { CalendarPopoverContext } from '../CalendarPopover';\n\nfunction createCalendar(identifier: string) {\n switch (identifier) {\n case 'gregory':\n return new GregorianCalendar();\n default:\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n}\n\nexport type CalendarProps<T extends DateValue> = AriaCalendarProps<T>;\n\nexport function Calendar<T extends DateValue>(props: CalendarProps<T>) {\n const { locale } = useLocale();\n const state = useCalendarState({\n ...props,\n createCalendar,\n locale,\n });\n const {\n calendarProps,\n prevButtonProps: { onPress: onPrev, 'aria-label': prevAriaLabel },\n nextButtonProps: { onPress: onNext, 'aria-label': nextAriaLabel },\n title,\n } = useCalendar(props, state);\n\n const { onClose, closeButtonRef } = useContext(CalendarPopoverContext);\n\n const closeOnKeyboardBlurBack: KeyboardEventHandler<HTMLButtonElement> = (\n event: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (event.key === 'Tab' && event.shiftKey === true) {\n if (!closeButtonRef?.current?.checkVisibility()) {\n onClose();\n }\n }\n };\n\n return (\n <div {...calendarProps} className={styles.calendar}>\n <div className={styles.calendar__header}>\n <Button\n type=\"button\"\n aria-label={prevAriaLabel}\n onClick={e => onPrev?.(e as never)}\n size=\"small\"\n purpose=\"tertiary\"\n icon={ArrowLeftIcon}\n htmlProps={{ onKeyDown: closeOnKeyboardBlurBack }}\n className={styles['calendar__month-button']}\n />\n <Heading\n level={2}\n typographyType=\"headingXsmall\"\n className={styles.calendar__header__month}\n >\n {title}\n </Heading>\n <Button\n type=\"button\"\n aria-label={nextAriaLabel}\n onClick={e => onNext?.(e as never)}\n size=\"small\"\n purpose=\"tertiary\"\n icon={ArrowRightIcon}\n className={styles['calendar__month-button']}\n />\n </div>\n <CalendarGrid state={state} />\n </div>\n );\n}\n\nCalendar.displayName = 'Calendar';\n","import { getWeeksInMonth } from '@internationalized/date';\nimport {\n type AriaCalendarGridProps,\n useCalendarGrid,\n} from '@react-aria/calendar';\nimport { useLocale } from '@react-aria/i18n';\nimport {\n type CalendarState,\n type RangeCalendarState,\n} from '@react-stately/calendar';\nimport { useContext } from 'react';\n\nimport { CalendarCell } from './CalendarCell';\nimport { cn } from '../../../../utils';\nimport typographyStyles from '../../../Typography/typographyStyles.module.css';\nimport { VisuallyHidden } from '../../../VisuallyHidden';\nimport styles from '../../common/DateInput.module.css';\nimport { getWeekNumber } from '../../utils/getWeekNumber';\nimport { CalendarPopoverContext } from '../CalendarPopover';\n\ninterface CalendarGridProps extends AriaCalendarGridProps {\n state: CalendarState | RangeCalendarState;\n}\n\nexport function CalendarGrid({ state, ...props }: CalendarGridProps) {\n const { locale } = useLocale();\n const {\n gridProps: { onKeyDown, ...gridProps },\n headerProps,\n } = useCalendarGrid(props, state);\n\n // Get the number of weeks in the month so we can render the proper number of rows.\n const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);\n const weekDays = ['Ma', 'Ti', 'On', 'To', 'Fr', 'Lø', 'Sø'];\n\n const { showWeekNumbers, onClose } = useContext(CalendarPopoverContext);\n\n const typographyCn = [\n typographyStyles['body-xsmall'],\n typographyStyles['text-color--subtle'],\n ];\n return (\n <table\n {...gridProps}\n onKeyDown={e => {\n if (\n (e.key === 'Enter' || e.key === ' ') &&\n state.isCellUnavailable(state.focusedDate)\n ) {\n return;\n }\n\n onKeyDown?.(e);\n }}\n cellPadding=\"0\"\n >\n <thead {...headerProps}>\n <tr>\n {showWeekNumbers && (\n <th className={cn(...typographyCn)}>\n # <VisuallyHidden as=\"span\">Ukenummer</VisuallyHidden>\n </th>\n )}\n {weekDays.map((day, index) => (\n <th key={index} className={cn(...typographyCn)}>\n {day}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {[...new Array(weeksInMonth).keys()].map(weekIndex => {\n const datesInWeek = state.getDatesInWeek(weekIndex);\n const firstExistingDay = datesInWeek.find(Boolean);\n const weekNumber = firstExistingDay\n ? getWeekNumber(firstExistingDay)\n : '';\n return (\n <tr key={weekIndex}>\n {showWeekNumbers && (\n <td\n className={cn(\n styles['calendar__week-number'],\n ...typographyCn,\n )}\n >\n {weekNumber}\n </td>\n )}\n {datesInWeek.map((date, i) =>\n date ? (\n <CalendarCell\n key={i}\n state={state}\n date={date}\n onClose={onClose}\n />\n ) : (\n <td key={i} />\n ),\n )}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n}\n\nCalendarGrid.displayName = 'CalendarGrid';\n","import { isToday } from '@internationalized/date';\nimport {\n type AriaCalendarCellProps,\n useCalendarCell,\n} from '@react-aria/calendar';\nimport {\n type CalendarState,\n type RangeCalendarState,\n} from '@react-stately/calendar';\nimport { type KeyboardEvent, useRef } from 'react';\n\nimport { cn } from '../../../../utils';\nimport { focusable } from '../../../helpers/styling/focus.module.css';\nimport typographyStyles from '../../../Typography/typographyStyles.module.css';\nimport styles from '../../common/DateInput.module.css';\nimport { timezone } from '../constants';\n\nexport type CellVariant = 'default' | 'selected' | 'unavailable';\n\ninterface CalendarCellProps extends AriaCalendarCellProps {\n state: CalendarState | RangeCalendarState;\n onClose: () => void;\n}\n\nexport function CalendarCell({ date, state, onClose }: CalendarCellProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const {\n buttonProps,\n cellProps,\n isOutsideVisibleRange,\n formattedDate,\n isSelected,\n isDisabled,\n isUnavailable,\n } = useCalendarCell({ date }, state, ref);\n if (isDisabled) {\n return <td {...cellProps} />;\n }\n\n const variant: CellVariant = isSelected\n ? 'selected'\n : isUnavailable || isDisabled\n ? 'unavailable'\n : 'default';\n\n const closeOnKeyboardBlurForward = (event: KeyboardEvent) => {\n if (event.key === 'Tab' && event.shiftKey === false) {\n onClose();\n }\n };\n\n return (\n <td {...cellProps}>\n <button\n {...buttonProps}\n type=\"button\"\n ref={ref}\n hidden={isOutsideVisibleRange}\n onKeyDown={closeOnKeyboardBlurForward}\n className={cn(\n styles['calendar__cell-button'],\n isToday(date, timezone) && styles['calendar__cell-button--today'],\n styles[`calendar__cell-button--${variant}`],\n typographyStyles['body-small'],\n focusable,\n )}\n >\n {formattedDate}\n </button>\n </td>\n );\n}\n\nCalendarCell.displayName = 'CalendarCell';\n",".date-input {\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n gap: var(--dds-spacing-x0-25);\n width: var(--dds-date-input-width);\n}\n\n.date-input--medium {\n padding-inline-start: var(--dds-spacing-x0-5);\n padding-inline-end: var(--dds-spacing-x1);\n}\n\n.date-input--small {\n padding-inline-start: var(--dds-spacing-x0-5);\n padding-inline-end: var(--dds-spacing-x0-75);\n}\n\n.date-input--xsmall {\n padding-inline-start: var(--dds-spacing-x0-25);\n padding-inline-end: var(--dds-spacing-x0-5);\n}\n\n.date-segment-container {\n display: flex;\n flex-direction: row;\n}\n\n.segment {\n padding: 0 0.05rem;\n display: block;\n width: -moz-max-content;\n width: max-content;\n font-variant-numeric: tabular-nums;\n outline: none;\n\n &:focus {\n background-color: var(--dds-color-surface-action-selected);\n color: var(--dds-color-text-on-action);\n }\n}\n\n.segment__placeholder {\n display: block;\n width: 100%;\n font-variant-numeric: tabular-nums;\n pointer-events: none;\n\n .segment:focus & {\n color: var(--dds-color-text-on-action);\n }\n}\n\n.segment__placeholder--invisible {\n visibility: hidden;\n height: 0;\n width: 0;\n}\n\n/**------------------------------------------------------------------------\n * Ikon-wrapper ved siden av input\n * Gjelder både dato og tid\n *------------------------------------------------------------------------*/\n\n.icon-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--dds-spacing-x0-25);\n color: var(--dds-color-icon-default);\n}\n\n.icon-wrapper--disabled {\n color: var(--dds-color-icon-subtle);\n}\n\n.icon-wrapper--readonly {\n color: var(--dds-color-icon-medium);\n}\n\n.icon-wrapper--small {\n margin-block: calc(0px - var(--dds-icon-size-medium));\n}\n\n.icon-wrapper--medium {\n margin-block: calc(0px - var(--dds-icon-size-small));\n}\n\n/**------------------------------------------------------------------------\n * Klasser relaterte til kalender-popover\n *------------------------------------------------------------------------*/\n\n.popover-button {\n cursor: pointer;\n border: 0;\n transition: 0.2s;\n background: transparent;\n border-radius: var(--dds-border-radius-button);\n color: var(--dds-color-icon-default);\n\n &:not(:disabled):not(.disabled):hover,\n &:not(:disabled):not(.disabled):active {\n background-color: var(--dds-color-surface-hover-default);\n color: var(--dds-color-icon-action-hover);\n }\n\n &:disabled,\n &.disabled {\n cursor: not-allowed;\n outline: none;\n color: var(--dds-color-text-subtle);\n }\n}\n\n.popover-button--readonly:disabled {\n color: var(--dds-color-text-medium);\n}\n\n.popover {\n z-index: var(--dds-zindex-popover);\n}\n\n.modal-close-button-wrapper {\n display: flex;\n justify-content: right;\n}\n\n.calendar {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n height: 327px;\n}\n\n.calendar__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.calendar__header__month {\n text-transform: capitalize;\n}\n\n.calendar__month-button {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.calendar__week-number {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.calendar__cell-button {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: 1px solid;\n border-color: transparent;\n border-radius: var(--dds-border-radius-button);\n transition: 0.2s;\n}\n\n.calendar__cell-button--today {\n text-decoration: underline;\n border-color: var(--dds-color-border-default);\n}\n\n.calendar__cell-button--default {\n background-color: transparent;\n color: var(--dds-color-text-default);\n\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n border-color: var(--dds-color-border-action-hover);\n color: var(--dds-color-text-default);\n }\n}\n\n.calendar__cell-button--selected {\n background-color: var(--dds-color-surface-action-selected);\n border-color: var(--dds-color-surface-action-selected);\n color: var(--dds-color-text-on-action);\n}\n\n.calendar__cell-button--unavailable {\n background-color: var(--dds-color-surface-field-disabled);\n border-color: var(--dds-color-surface-field-disabled);\n color: var(--dds-color-text-subtle);\n cursor: not-allowed;\n text-decoration: line-through;\n}\n\n.calendar__cell-button--unavailable--today {\n border-color: var(--dds-color-surface-field-disabled);\n text-decoration: underline line-through;\n}\n","export const locale = 'no-NO' as const;\nexport const timezone = 'Europe/Oslo' as const;\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\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 { id, className, htmlProps, as, ...rest } = props;\n\n const cl = cn(className, utilStyles['visually-hidden']);\n\n if (as === 'div') {\n return <div {...getBaseHTMLProps(id, cl, htmlProps, rest)} />;\n }\n return <span {...getBaseHTMLProps(id, cl, htmlProps, rest)} />;\n};\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n type CalendarDate,\n type CalendarDateTime,\n type ZonedDateTime,\n endOfYear,\n startOfWeek,\n startOfYear,\n} from '@internationalized/date';\n\n/**\n * Calculates the week number following the ISO-8601 format.\n * @returns week number, 1 indexed\n */\nexport function getWeekNumber(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const dayOfWeek = getDayOfWeek(date);\n const dayOfYear = getDayOfYear(date);\n const jan1DayOfWeek = getDayOfWeek(startOfYear(date));\n\n const isPartOfLastWeekOfPreviousYear =\n dayOfYear <= 8 - jan1DayOfWeek && jan1DayOfWeek > 4;\n\n if (isPartOfLastWeekOfPreviousYear) {\n if (\n jan1DayOfWeek === 5 ||\n (jan1DayOfWeek === 6 && isLeapYear(date.subtract({ years: 1 })))\n ) {\n return 53;\n }\n return 52;\n }\n\n const daysInYear = getDayOfYear(endOfYear(date));\n if (daysInYear - dayOfYear < 4 - dayOfWeek) {\n return 1;\n }\n\n const weekNum = (dayOfYear + (7 - dayOfWeek) + (jan1DayOfWeek - 1)) / 7;\n if (jan1DayOfWeek > 4) {\n return weekNum - 1;\n }\n\n return weekNum;\n}\n\n/**\n * Mon = 1\n * Tue = 2\n * Wed = 3\n * Thu = 4\n * Fri = 5\n * Sat = 6\n * Sun = 7\n * @returns day of week, 1 indexed\n */\nexport function getDayOfWeek(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const weekStart = startOfWeek(date, 'no-NO');\n return (\n date.calendar.toJulianDay(date) -\n weekStart.calendar.toJulianDay(weekStart) +\n 1\n );\n}\n\n/**\n * @returns day of year, 1 indexed\n */\nexport function getDayOfYear(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n const yearStart = startOfYear(date);\n return (\n date.calendar.toJulianDay(date) -\n yearStart.calendar.toJulianDay(yearStart) +\n 1\n );\n}\n\nexport function isLeapYear(\n date: CalendarDate | ZonedDateTime | CalendarDateTime,\n) {\n return (\n (date.year % 4 === 0 && date.year % 100 !== 0) || date.year % 400 === 0\n );\n}\n","import {\n type KeyboardEvent,\n type KeyboardEventHandler,\n type ReactElement,\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useCombinedRef,\n useFloatPosition,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../../hooks';\nimport { cn } from '../../../utils';\nimport { Button } from '../../Button';\nimport {\n Backdrop,\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n} from '../../helpers';\nimport { CloseIcon } from '../../Icon/icons';\nimport { ThemeContext } from '../../ThemeProvider';\nimport styles from '../common/DateInput.module.css';\nimport { type DateField } from './DateField/DateField';\nimport { type Breakpoint, ShowHide } from '../../layout';\nimport { Paper } from '../../layout';\n\n/**------------------------------------------------------------------------\n * CalendarPopover\n *------------------------------------------------------------------------*/\n\ninterface CalendarPopoverContextValue {\n anchorRef: RefObject<HTMLDivElement | null> | null;\n closeButtonRef: RefObject<HTMLButtonElement | null> | null;\n isOpen: boolean;\n onClose: () => void;\n showWeekNumbers: boolean;\n}\n\nexport const CalendarPopoverContext =\n createContext<CalendarPopoverContextValue>({\n anchorRef: null,\n closeButtonRef: null,\n isOpen: false,\n onClose: () => null,\n showWeekNumbers: true,\n });\n\ninterface CalendarPopoverProps {\n children: ReactNode;\n isOpen: boolean;\n onClose: () => void;\n showWeekNumbers: boolean;\n}\n\nexport const CalendarPopover = ({\n children,\n onClose,\n ...props\n}: CalendarPopoverProps) => {\n const anchorRef = useRef<HTMLDivElement>(null);\n const closeButtonRef = useRef<HTMLButtonElement>(null);\n useOnKeyDown('Escape', onClose);\n return (\n <CalendarPopoverContext\n value={{ anchorRef, closeButtonRef, onClose, ...props }}\n >\n {children}\n </CalendarPopoverContext>\n );\n};\n\n/**------------------------------------------------------------------------\n * CalendarPopoverAnchor\n *------------------------------------------------------------------------*/\n\ninterface CalendarPopoverAnchorProps {\n children: ReactElement<typeof DateField>;\n}\n\nexport const CalendarPopoverAnchor = ({\n children,\n}: CalendarPopoverAnchorProps) => {\n const { anchorRef } = useContext(CalendarPopoverContext);\n return <div ref={anchorRef ?? undefined}>{children}</div>;\n};\n\n/**------------------------------------------------------------------------\n * CalendarPopoverContent\n *------------------------------------------------------------------------*/\n\ninterface CalendarPopoverContentProps {\n children: ReactNode;\n className?: string;\n smallScreenBreakpoint?: Breakpoint;\n}\n\nexport const CalendarPopoverContent = ({\n children,\n className,\n smallScreenBreakpoint,\n}: CalendarPopoverContentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const modalRef = useRef<HTMLDivElement>(null);\n const { refs, styles: floatingStyles } = useFloatPosition(null, {\n placement: 'bottom-start',\n });\n\n const themeContext = useContext(ThemeContext);\n\n if (!themeContext) {\n throw new Error('DatePicker must be used within a ThemeProvider');\n }\n\n const portalTarget = themeContext.el;\n const { isOpen, onClose, anchorRef, closeButtonRef } = useContext(\n CalendarPopoverContext,\n );\n const hasTransitionedIn = useMountTransition(isOpen, 500);\n const isMounted = isOpen && hasTransitionedIn;\n const combinedRef = useCombinedRef(refs.setFloating, ref);\n\n useOnClickOutside([ref.current, modalRef.current], onClose);\n\n useEffect(() => {\n refs.setReference(anchorRef?.current ?? null);\n }, []);\n\n const hasBreakpoint = !!smallScreenBreakpoint;\n\n useEffect(() => {\n if (hasBreakpoint && modalRef.current?.checkVisibility()) {\n if (isOpen) {\n handleElementWithBackdropMount(document.body);\n } else {\n handleElementWithBackdropUnmount(document.body);\n }\n\n return () => handleElementWithBackdropUnmount(document.body);\n }\n }, [isOpen, hasBreakpoint]);\n\n const closeOnKeyboardBlurBack: KeyboardEventHandler<HTMLButtonElement> = (\n event: KeyboardEvent<HTMLButtonElement>,\n ) => {\n if (event.key === 'Tab' && event.shiftKey === true) {\n onClose();\n }\n };\n\n if (!isOpen) return null;\n\n return (\n <>\n {portalTarget &&\n hasBreakpoint &&\n createPortal(\n <ShowHide showBelow={smallScreenBreakpoint}>\n <Backdrop zIndex=\"modal\" isMounted={isMounted}>\n <Paper\n ref={modalRef}\n className={cn(styles.popover, className)}\n elevation={2}\n border=\"border-default\"\n padding=\"x0.5\"\n >\n <div className={styles['modal-close-button-wrapper']}>\n <Button\n ref={closeButtonRef}\n icon={CloseIcon}\n size=\"small\"\n purpose=\"tertiary\"\n aria-label=\"Lukk\"\n onClick={onClose}\n htmlProps={{ onKeyDown: closeOnKeyboardBlurBack }}\n />\n </div>\n {children}\n </Paper>\n </Backdrop>\n </ShowHide>,\n portalTarget,\n )}\n <Paper\n ref={combinedRef}\n hideBelow={hasBreakpoint ? smallScreenBreakpoint : undefined}\n className={cn(styles.popover, className)}\n style={floatingStyles.floating}\n elevation={2}\n border=\"border-default\"\n >\n {children}\n </Paper>\n </>\n );\n};\n","import { ddsTokens } from '@norges-domstoler/dds-design-tokens';\nimport {\n type ReactNode,\n createContext,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './ThemeProvider.module.css';\nimport { cn } from '../../utils';\n\nexport type DdsTheme = keyof typeof ddsTokens;\nconst defaultTheme = 'core';\n\ninterface ThemeContextProps {\n theme: DdsTheme;\n el: HTMLDivElement | null;\n}\n\nexport const ThemeContext = createContext<ThemeContextProps | undefined>(\n undefined,\n);\n\nexport interface ThemeProviderProps {\n /**\n * Elsa tema for applikasjonen.\n * @default \"core\"\n */\n theme?: DdsTheme;\n /**\n * Selve applikasjonen.\n */\n children?: ReactNode;\n}\n\nexport function ThemeProvider({\n theme = defaultTheme,\n children,\n}: ThemeProviderProps) {\n const themeRef = useRef<HTMLDivElement>(null);\n\n const [element, setElement] = useState<HTMLDivElement | null>(null);\n useEffect(() => {\n setElement(themeRef.current);\n }, []);\n\n return (\n <div\n ref={themeRef}\n className={cn(\n `dds-${theme}`,\n styles['global-variables'],\n styles['global-styles'],\n 'dds-themed',\n )}\n >\n <ThemeContext value={{ theme, el: element }}>{children}</ThemeContext>\n </div>\n );\n}\n\n/**\n * Hook for å hente gjeldende tema og temanavn. Brukes inni ThemeProvider.\n *\n * @returns tema med JS-konstanter og navnet på temaet.\n */\n\nexport function useTheme() {\n const themeName = useContext(ThemeContext)?.theme;\n\n if (!themeName) {\n throw new Error('useTheme must be used inside a ThemeProvider');\n }\n\n const theme = ddsTokens[themeName];\n\n return { theme, themeName };\n}\n",".global-variables {\n /*Default text colors*/\n --dds-color-text-body: var(--dds-color-text-default);\n --dds-color-text-body-subtle: var(--dds-color-text-subtle);\n --dds-color-text-link: var(--dds-color-text-action-resting);\n --dds-color-text-link-visited: var(--dds-color-text-action-visited);\n --dds-color-text-label: var(--dds-color-text-medium);\n --dds-color-text-placeholder: var(--dds-color-text-subtle);\n --dds-color-text-helper: var(--dds-color-text-subtle);\n --dds-color-icon-link: var(--dds-color-text-action-resting);\n\n /*Focus*/\n --dds-focus-outline: var(--dds-color-focus-outside) 2px solid;\n --dds-focus-outline-offset: var(--dds-spacing-x0-125);\n --dds-focus-outline-inset: calc(0px - var(--dds-spacing-x0-25));\n --dds-focus-box-shadow: 0 0 0 2px var(--dds-color-focus-inside);\n --dds-focus-transition: outline-offset 0.2s;\n\n /*Other*/\n --dds-input-default-width: 320px;\n --dds-input-default-width-xsmall: 210px;\n --dds-transition-duration-surface-move: 0.5s;\n}\n\n.global-styles {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n color: var(--dds-color-text-default);\n}\n","import { type CalendarDate } from '@internationalized/date';\nimport { useDatePicker } from '@react-aria/datepicker';\nimport { I18nProvider } from '@react-aria/i18n';\nimport { useDatePickerState } from '@react-stately/datepicker';\nimport type { AriaDatePickerProps } from '@react-types/datepicker';\nimport { type Ref, useRef } from 'react';\n\nimport { Calendar } from './Calendar/Calendar';\nimport {\n CalendarPopover,\n CalendarPopoverAnchor,\n CalendarPopoverContent,\n} from './CalendarPopover';\nimport { locale } from './constants';\nimport { DateField, type DateFieldProps } from './DateField/DateField';\nimport { useCombinedRef } from '../../../hooks';\nimport { type Breakpoint } from '../../layout';\nimport { type ResponsiveProps } from '../../layout/common/Responsive.types';\nimport {\n type FocusableRef,\n useFocusManagerRef,\n} from '../utils/useFocusManagerRef';\n\nexport interface DatePickerProps\n extends Omit<AriaDatePickerProps<CalendarDate>, 'granularity'>,\n Pick<DateFieldProps<CalendarDate>, 'componentSize' | 'tip' | 'style'>,\n Pick<ResponsiveProps, 'width'> {\n ref?: Ref<HTMLElement>;\n /**\n * Ledetekst.\n */\n label?: string;\n /**\n * Feilmelding.\n */\n errorMessage?: string;\n /**Om ukenummer skal vises.\n * @default true\n */\n showWeekNumbers?: boolean;\n /**\n * Brekkpunkt for å vise versjon for liten skjerm.\n */\n smallScreenBreakpoint?: Breakpoint;\n}\n\nconst refIsFocusable = (ref: Ref<unknown>): ref is FocusableRef => {\n return typeof ref === 'object' && ref !== null && 'focus' in ref;\n};\n\nexport function DatePicker({\n errorMessage,\n componentSize,\n tip,\n style,\n width,\n smallScreenBreakpoint,\n showWeekNumbers = true,\n ref,\n ...props\n}: DatePickerProps) {\n const state = useDatePickerState(props);\n const domRef = useFocusManagerRef(ref && refIsFocusable(ref) ? ref : null);\n const internalRef = useRef<HTMLElement>(null);\n const combinedRef = useCombinedRef(internalRef, domRef);\n const { buttonProps, calendarProps, fieldProps, groupProps } = useDatePicker(\n { ...props, granularity: 'day' },\n state,\n internalRef,\n );\n\n return (\n <I18nProvider locale={locale}>\n <CalendarPopover\n isOpen={state.isOpen}\n onClose={state.close}\n showWeekNumbers={showWeekNumbers}\n >\n <CalendarPopoverAnchor>\n <DateField\n {...fieldProps}\n groupProps={groupProps}\n ref={combinedRef}\n componentSize={componentSize}\n tip={tip}\n label={props.label}\n errorMessage={errorMessage}\n buttonProps={buttonProps}\n style={style}\n width={width}\n />\n </CalendarPopoverAnchor>\n <CalendarPopoverContent smallScreenBreakpoint={smallScreenBreakpoint}>\n <Calendar {...calendarProps} />\n </CalendarPopoverContent>\n </CalendarPopover>\n </I18nProvider>\n );\n}\n\nDatePicker.displayName = 'DatePicker';\n","import {\n type CalendarDate,\n type DateValue,\n createCalendar,\n} from '@internationalized/date';\nimport {\n type AriaDateFieldOptions,\n useDateField,\n type useDatePicker,\n} from '@react-aria/datepicker';\nimport { useLocale } from '@react-aria/i18n';\nimport { useDateFieldState } from '@react-stately/datepicker';\nimport { type Ref, useRef } from 'react';\n\nimport { CalendarButton } from './CalendarButton';\nimport { DateSegment } from './DateSegment';\nimport { type InputProps } from '../../../helpers';\nimport { DateInput } from '../../common/DateInput';\n\nexport type DateFieldProps<T extends DateValue = CalendarDate> =\n AriaDateFieldOptions<T> & {\n buttonProps?: ReturnType<typeof useDatePicker>['buttonProps'];\n buttonOnClick?: () => void;\n groupProps?: ReturnType<typeof useDatePicker>['groupProps'];\n } & Pick<\n InputProps,\n | 'componentSize'\n | 'errorMessage'\n | 'tip'\n | 'disabled'\n | 'style'\n | 'width'\n | 'className'\n > & {\n ref?: Ref<HTMLDivElement>;\n };\n\nexport function DateField({\n componentSize = 'medium',\n buttonProps,\n groupProps,\n ref,\n ...props\n}: DateFieldProps) {\n const { locale } = useLocale();\n const state = useDateFieldState({\n ...props,\n locale,\n createCalendar,\n });\n\n const internalRef = useRef<HTMLInputElement>(null);\n const { labelProps, fieldProps } = useDateField(props, state, internalRef);\n\n const disabled = props.isDisabled || !!fieldProps['aria-disabled'];\n\n return (\n <DateInput\n {...props}\n groupProps={groupProps}\n componentSize={componentSize}\n label={props.label}\n disabled={disabled}\n required={props.isRequired}\n ref={ref}\n internalRef={internalRef}\n readOnly={props.isReadOnly}\n prefix={\n <CalendarButton\n componentSize={componentSize}\n {...buttonProps}\n isReadOnly={props.isReadOnly}\n isDisabled={disabled || props.isReadOnly}\n />\n }\n labelProps={labelProps}\n fieldProps={fieldProps}\n >\n {state.segments.map((segment, i) => (\n <DateSegment\n aria-readonly={props.isReadOnly}\n componentSize={componentSize}\n key={i}\n segment={segment}\n state={state}\n />\n ))}\n </DateInput>\n );\n}\n\nDateField.displayName = 'DateField';\n","import { type AriaButtonProps, useButton } from '@react-aria/button';\nimport { useRef } from 'react';\n\nimport type { DateFieldProps } from './DateField';\nimport { cn } from '../../../../utils';\nimport { focusable } from '../../../helpers/styling/focus.module.css';\nimport { Icon } from '../../../Icon';\nimport { CalendarIcon } from '../../../Icon/icons';\nimport styles from '../../common/DateInput.module.css';\n\ninterface CalendarButtonProps extends AriaButtonProps {\n componentSize: DateFieldProps['componentSize'];\n isReadOnly?: DateFieldProps['isReadOnly'];\n}\n\nexport function CalendarButton({\n componentSize,\n isReadOnly,\n ...props\n}: CalendarButtonProps) {\n const ref = useRef<HTMLButtonElement>(null);\n const { buttonProps } = useButton(props, ref);\n\n const size = componentSize === 'xsmall' ? 'small' : 'medium';\n\n return (\n <button\n {...buttonProps}\n ref={ref}\n type=\"button\"\n className={cn(\n buttonProps.className,\n styles['icon-wrapper'],\n styles[`icon-wrapper--${size}`],\n styles['popover-button'],\n isReadOnly && styles['popover-button--readonly'],\n !props.isDisabled && focusable,\n props.isDisabled && 'disabled',\n )}\n >\n <Icon icon={CalendarIcon} iconSize={size} />\n </button>\n );\n}\n","import { useDateSegment } from '@react-aria/datepicker';\nimport type {\n DateFieldState,\n DateSegment as DateSegmentType,\n} from '@react-stately/datepicker';\nimport { useRef } from 'react';\n\nimport { cn } from '../../../../utils';\nimport { type InputSize } from '../../../helpers';\nimport {\n type StaticTypographyType,\n getTypographyCn,\n} from '../../../Typography';\nimport typographyStyles from '../../../Typography/typographyStyles.module.css';\nimport styles from '../../common/DateInput.module.css';\nimport { type DatePickerProps } from '../DatePicker';\n\nexport const typographyTypes: Record<InputSize, StaticTypographyType> = {\n medium: 'bodyMedium',\n small: 'bodySmall',\n xsmall: 'bodyXsmall',\n};\n\ninterface DateSegmentProps\n extends Pick<Required<DatePickerProps>, 'componentSize'> {\n segment: DateSegmentType;\n state: DateFieldState;\n}\n\nexport function DateSegment({\n segment,\n state,\n componentSize,\n}: DateSegmentProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n return (\n <div\n {...segmentProps}\n ref={ref}\n className={cn(\n segmentProps.className,\n styles.segment,\n typographyStyles[getTypographyCn(typographyTypes[componentSize])],\n )}\n style={{\n ...segmentProps.style,\n minWidth:\n segment.maxValue != null\n ? String(segment.maxValue).length + 'ch'\n : undefined,\n }}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n styles.segment__placeholder,\n !segment.isPlaceholder && styles['segment__placeholder--invisible'],\n typographyStyles[getTypographyCn(typographyTypes[componentSize])],\n )}\n >\n {segment.placeholder}\n </span>\n {segment.isPlaceholder\n ? ''\n : segment.text.padStart(String(segment.maxValue ?? '').length, '0')}\n </div>\n );\n}\n\nDateSegment.displayName = 'DateSegment';\n","import { type useDateField, type useDatePicker } from '@react-aria/datepicker';\nimport { type ReactNode, type Ref, useContext } from 'react';\n\nimport styles from './DateInput.module.css';\nimport { cn } from '../../../utils';\nimport { type InputProps, getInputWidth } from '../../helpers';\nimport inputStyles from '../../helpers/Input/Input.module.css';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport { InputMessage } from '../../InputMessage';\nimport { Box } from '../../layout';\nimport { Label } from '../../Typography';\nimport { CalendarPopoverContext } from '../DatePicker/CalendarPopover';\n\nexport type DateInputProps = {\n className?: string;\n active?: boolean;\n children: ReactNode;\n prefix?: ReactNode;\n label?: ReactNode;\n internalRef: Ref<HTMLDivElement>;\n groupProps?: ReturnType<typeof useDatePicker>['groupProps'];\n} & Pick<ReturnType<typeof useDateField>, 'fieldProps' | 'labelProps'> &\n Pick<\n InputProps,\n | 'componentSize'\n | 'errorMessage'\n | 'tip'\n | 'disabled'\n | 'style'\n | 'required'\n | 'readOnly'\n | 'width'\n > & {\n ref?: Ref<HTMLDivElement>;\n };\n\nexport function DateInput({\n errorMessage,\n tip,\n componentSize = 'medium',\n style,\n className,\n disabled,\n active,\n internalRef,\n readOnly,\n required,\n children,\n prefix: button,\n labelProps,\n fieldProps,\n groupProps,\n width,\n ref,\n ...props\n}: DateInputProps) {\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = props.label != null;\n const hasMessage = hasErrorMessage || hasTip;\n\n const { isOpen } = useContext(CalendarPopoverContext);\n\n return (\n <div\n {...groupProps}\n className={cn(className, inputStyles.container)}\n ref={ref}\n >\n {hasLabel && (\n <Label\n {...labelProps}\n showRequiredStyling={required}\n className={inputStyles.label}\n readOnly={readOnly}\n >\n {props.label}\n </Label>\n )}\n <Box\n {...fieldProps}\n style={style}\n ref={internalRef}\n width={getInputWidth(width, 'fit-content')}\n className={cn(\n inputStyles.input,\n inputStyles['input--stateful'],\n inputStyles['input--hover'],\n inputStyles[`input--${componentSize}`],\n hasErrorMessage && inputStyles['input--stateful-danger'],\n styles['date-input'],\n styles[`date-input--${componentSize}`],\n focusStyles['focusable-within'],\n isOpen && focusStyles.focused,\n disabled && 'disabled',\n disabled && inputStyles.disabled,\n active && 'active',\n readOnly && 'read-only',\n readOnly && inputStyles['read-only'],\n )}\n >\n {button}\n <div className={styles['date-segment-container']}>{children}</div>\n </Box>\n {hasMessage && (\n <InputMessage\n messageType={hasErrorMessage ? 'error' : 'tip'}\n message={errorMessage ?? tip ?? ''}\n />\n )}\n </div>\n );\n}\n\nDateInput.displayName = 'DateInput';\n","import { createFocusManager } from '@react-aria/focus';\nimport { type Ref, type RefObject, useImperativeHandle, useRef } from 'react';\n\ninterface DOMRefValue<T extends HTMLElement = HTMLElement> {\n UNSAFE_getDOMNode(): T | null;\n}\n\nexport interface FocusableRefValue<\n T extends HTMLElement = HTMLElement,\n D extends HTMLElement = T,\n> extends DOMRefValue<D> {\n focus(): void;\n}\n\nexport type DOMRef<T extends HTMLElement = HTMLElement> = Ref<DOMRefValue<T>>;\nexport type FocusableRef<T extends HTMLElement = HTMLElement> = Ref<\n FocusableRefValue<T>\n>;\n\nexport function useFocusManagerRef<T extends HTMLElement = HTMLElement>(\n ref: Ref<unknown>,\n) {\n const domRef = useRef<T>(null);\n useImperativeHandle(ref, () => ({\n ...createDOMRef(domRef),\n focus() {\n createFocusManager(domRef).focusFirst({ tabbable: true });\n },\n }));\n return domRef;\n}\n\nfunction createDOMRef<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T | null>,\n): DOMRefValue<T> {\n return {\n UNSAFE_getDOMNode() {\n return ref.current;\n },\n };\n}\n","import { type Time } from '@internationalized/date';\nimport { type AriaTimeFieldProps, useTimeField } from '@react-aria/datepicker';\nimport { useTimeFieldState } from '@react-stately/datepicker';\nimport { type Ref, useRef } from 'react';\n\nimport { cn } from '../../../utils';\nimport { type InputProps } from '../../helpers/Input/Input.types';\nimport { Icon } from '../../Icon';\nimport { TimeIcon } from '../../Icon/icons';\nimport { DateInput } from '../common/DateInput';\nimport styles from '../common/DateInput.module.css';\nimport { locale } from '../DatePicker/constants';\nimport { DateSegment } from '../DatePicker/DateField/DateSegment';\n\nexport type TimePickerProps = Omit<AriaTimeFieldProps<Time>, 'hideTimeZone'> &\n Pick<\n InputProps,\n 'componentSize' | 'errorMessage' | 'tip' | 'style' | 'width' | 'className'\n > & {\n ref?: Ref<HTMLDivElement>;\n };\n\nexport function TimePicker({\n componentSize = 'medium',\n width,\n ref,\n ...props\n}: TimePickerProps) {\n const internalRef = useRef<HTMLInputElement>(null);\n const state = useTimeFieldState({\n ...props,\n locale,\n });\n const { labelProps, fieldProps } = useTimeField(\n { ...props, hideTimeZone: true, granularity: 'hour' },\n state,\n internalRef,\n );\n\n const iconSize = componentSize === 'xsmall' ? 'small' : 'medium';\n const disabled = props.isDisabled || !!fieldProps['aria-disabled'];\n\n return (\n <DateInput\n {...props}\n width={width}\n disabled={disabled}\n required={props.isRequired}\n componentSize={componentSize}\n ref={ref}\n internalRef={internalRef}\n readOnly={props.isReadOnly}\n labelProps={labelProps}\n fieldProps={fieldProps}\n prefix={\n <span\n className={cn(\n styles['icon-wrapper'],\n disabled && styles['icon-wrapper--disabled'],\n props.isReadOnly && styles['icon-wrapper--readonly'],\n styles[`icon-wrapper--${iconSize}`],\n )}\n >\n <Icon icon={TimeIcon} iconSize={iconSize} />\n </span>\n }\n >\n {state.segments.map((segment, i) => (\n <DateSegment\n componentSize={componentSize}\n key={i}\n segment={segment}\n state={state}\n />\n ))}\n </DateInput>\n );\n}\n\nTimePicker.displayName = 'TimePicker';\n","import {\n CalendarDate,\n type DateValue,\n Time,\n fromDate,\n} from '@internationalized/date';\n\nexport function nativeDateToDateValue(\n date: Date,\n timeZone: string | undefined = 'Europe/Oslo',\n): DateValue {\n return fromDate(date, timeZone);\n}\n\nexport function dateValueToNativeDate(\n date: DateValue,\n timeZone: string | undefined = 'Europe/Oslo',\n): Date {\n return date.toDate(timeZone);\n}\n\nexport function nativeDateToCalendarDate(date: Date): CalendarDate {\n return new CalendarDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n}\n\nexport function nativeDateToTime(date: Date): Time {\n return new Time(date.getHours(), date.getMinutes(), date.getSeconds());\n}\n\nexport function calendarDateToNativeDate(\n date: CalendarDate,\n time: Time = new Time(12, 0, 0, 0),\n): Date {\n return new Date(\n date.year,\n date.month - 1,\n date.day,\n time.hour,\n time.minute,\n time.second,\n );\n}\n",".list {\n & > dt:first-of-type {\n margin-top: var(--dds-spacing-x1);\n }\n & > dd:last-child {\n margin-bottom: var(--dds-spacing-x1);\n }\n dd + dt {\n margin-top: var(--dds-spacing-x2);\n }\n}\n\n.list--default {\n dt {\n color: var(--dds-color-text-body);\n font-weight: 600;\n }\n}\n\n.list--subtle {\n dt {\n color: var(--dds-color-text-body-subtle);\n }\n}\n\n.list--row {\n &:not(:has(> dt):has(> dd)) {\n flex-direction: row;\n }\n}\n\n.list--column {\n &:not(:has(> dt):has(> dd)) {\n flex-direction: column;\n }\n}\n\n.desc {\n margin-inline-start: 0;\n align-items: center;\n display: flex;\n gap: var(--dds-spacing-x0-25);\n color: var(--dds-color-text-body);\n}\n\n.group {\n margin: var(--dds-spacing-x2);\n}\n","import styles from './DescriptionList.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { VStack } from '../layout';\n\nexport type DescriptionListAppearance = 'default' | 'subtle';\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?: Direction;\n }\n>;\n\nexport const DescriptionList = ({\n appearance = 'default',\n direction = 'column',\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: DescriptionListProps) => (\n <VStack\n as=\"dl\"\n margin=\"x0\"\n flexWrap=\"wrap\"\n rowGap=\"x0\"\n columnGap=\"x2\"\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.list,\n styles[`list--${appearance}`],\n styles[`list--${direction}`],\n ),\n htmlProps,\n rest,\n )}\n >\n {children}\n </VStack>\n);\n\nDescriptionList.displayName = 'DescriptionList';\n","import { type ComponentPropsWithRef } from 'react';\n\nexport type DescriptionListTermProps = ComponentPropsWithRef<'dt'>;\n\nexport const DescriptionListTerm = (props: DescriptionListTermProps) => {\n return <dt {...props} />;\n};\n\nDescriptionListTerm.displayName = 'DescriptionListTerm';\n","import styles from './DescriptionList.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\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 = ({\n children,\n icon,\n id,\n className,\n htmlProps,\n ...rest\n}: DescriptionListDescProps) => (\n <dd {...getBaseHTMLProps(id, cn(className, styles.desc), htmlProps, rest)}>\n {icon && <Icon icon={icon} />} {children}\n </dd>\n);\n\nDescriptionListDesc.displayName = 'DescriptionListDesc';\n","import { type Property } from 'csstype';\n\nimport styles from './DescriptionList.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\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 = ({\n children,\n margin,\n minWidth,\n maxWidth,\n id,\n className,\n htmlProps,\n ...rest\n}: DescriptionListGroupProps) => (\n <div\n {...getBaseHTMLProps(id, cn(className, styles.group), htmlProps, rest)}\n style={{ ...htmlProps?.style, maxWidth, minWidth, margin }}\n >\n {children}\n </div>\n);\n\nDescriptionListGroup.displayName = 'DescriptionListGroup';\n",".list {\n display: table;\n width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n}\n\n.list--with-dividers {\n .row {\n border-bottom: 1px solid var(--dds-color-border-default);\n }\n}\n\n.list--striped {\n .row {\n &:nth-of-type(even) {\n background-color: var(--dds-color-surface-default);\n }\n\n &:nth-of-type(odd) {\n background-color: var(--dds-color-surface-subtle);\n }\n }\n}\n\n.list--striped-with-bp {\n .row {\n &:nth-of-type(4n-1),\n &:nth-of-type(4n) {\n background-color: var(--dds-color-surface-default);\n }\n\n &:nth-of-type(4n-3),\n &:nth-of-type(4n-2) {\n background-color: var(--dds-color-surface-subtle);\n }\n }\n}\n\n.list--small {\n font: var(--dds-font-body-small);\n letter-spacing: var(--dds-font-body-small-letter-spacing);\n .cell {\n padding: var(--dds-spacing-x0-5);\n }\n}\n\n.list--medium {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n .cell {\n padding: var(--dds-spacing-x0-75);\n }\n}\n\n.list--large {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n .cell {\n padding-block: var(--dds-spacing-x1-5);\n padding-inline: var(--dds-spacing-x0-75);\n }\n}\n\n.column {\n dt,\n dd {\n margin-inline-start: 0;\n text-align: left;\n }\n}\n\n.cell {\n display: table-cell;\n}\n\n.term {\n font-weight: var(--dds-font-weight-bold);\n}\n","import { createContext, useContext } from 'react';\n\nimport { type Breakpoint } from '../layout';\n\ninterface DetailListContextProps {\n smallScreenBreakpoint?: Breakpoint;\n}\n\nexport const DetailListContext = createContext<DetailListContextProps>({});\nexport const useDetailListContext = () => useContext(DetailListContext);\n","import styles from './DetailList.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n type Size,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { type Breakpoint } from '../layout';\nimport { DetailListContext } from './DetailList.context';\n\nexport type DetailListSize = Extract<Size, 'large' | 'medium' | 'small'>;\n\nexport type DetailListProps = BaseComponentPropsWithChildren<\n HTMLDListElement,\n {\n /**\n * Størrelse på tabellen. Påvirker tetthet i cellene og font.\n * @default \"medium\"\n */\n size?: DetailListSize;\n /**\n * Om rader skal ha skillelinje.\n * @default true\n */\n withDividers?: boolean;\n /**\n * Om rader skal ha sebrastriper.\n * @default true\n */\n striped?: boolean;\n /**Brekkpunkt og nedover versjonen for små skjermer skal vises; den gjør om rader til kolonner. */\n smallScreenBreakpoint?: Breakpoint;\n }\n>;\n\nexport const DetailList = ({\n id,\n className,\n htmlProps,\n withDividers = true,\n striped = true,\n size = 'medium',\n smallScreenBreakpoint,\n ...rest\n}: DetailListProps) => (\n <DetailListContext value={{ smallScreenBreakpoint }}>\n <dl\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.list,\n styles[`list--${size}`],\n withDividers && styles['list--with-dividers'],\n striped && !smallScreenBreakpoint && styles['list--striped'],\n striped && smallScreenBreakpoint && styles['list--striped-with-bp'],\n ),\n htmlProps,\n rest,\n )}\n />\n </DetailListContext>\n);\n\nDetailList.displayName = 'DetailList';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './DetailList.module.css';\nimport { cn } from '../../utils';\n\nexport type DetailListDescProps = ComponentPropsWithRef<'dd'>;\n\nexport const DetailListDesc = ({ className, ...rest }: DetailListDescProps) => (\n <dd className={cn(className, styles.cell)} {...rest} />\n);\n\nDetailListDesc.displayName = 'DetailListDesc';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './DetailList.module.css';\nimport { cn } from '../../utils';\nimport { Box } from '../layout';\nimport { useDetailListContext } from './DetailList.context';\n\nexport type DetailListRowProps = ComponentPropsWithRef<'div'>;\n\nexport const DetailListRow = ({ className, ...rest }: DetailListRowProps) => {\n const { smallScreenBreakpoint: bp } = useDetailListContext();\n const hasBp = !!bp;\n\n return (\n <>\n <Box\n display=\"table-row\"\n hideBelow={hasBp ? bp : undefined}\n className={cn(className, styles.row)}\n {...rest}\n />\n {hasBp && (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n showBelow={bp}\n className={cn(className, styles.row, styles.column)}\n {...rest}\n />\n )}\n </>\n );\n};\n\nDetailListRow.displayName = 'DetailListRow';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './DetailList.module.css';\nimport { cn } from '../../utils';\n\nexport type DetailListTermProps = ComponentPropsWithRef<'dt'>;\n\nexport const DetailListTerm = ({ className, ...rest }: DetailListTermProps) => (\n <dt className={cn(className, styles.cell, styles.term)} {...rest} />\n);\n\nDetailListTerm.displayName = 'DetailListTerm';\n","import {\n type MouseEvent,\n type ReactNode,\n useContext,\n useEffect,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport styles from './Drawer.module.css';\nimport {\n useCombinedRef,\n useFocusTrap,\n useMountTransition,\n useOnClickOutside,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n type Size,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport {\n Backdrop,\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n} from '../helpers';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { CloseIcon } from '../Icon/icons';\nimport { ThemeContext } from '../ThemeProvider';\nimport { Heading } from '../Typography';\nimport { useDrawerContext } from './Drawer.context';\nimport { HStack, Paper, type ResponsiveProps, VStack } from '../layout';\n\nexport type DrawerSize = Extract<Size, 'small' | 'medium' | 'large'>;\nexport type DrawerPlacement = 'left' | 'right';\nexport type WidthProps = Pick<\n ResponsiveProps,\n 'minWidth' | 'maxWidth' | 'width'\n>;\n\nexport type DrawerProps = Omit<\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelsen på `<Drawer>`.\n * @default \"small\"\n */\n size?: DrawerSize;\n /** Plasseringen til `<Drawer>`.\n * @default \"right\"\n */\n placement?: DrawerPlacement;\n /**Header for `<Drawer>`. Returnerer default `<Heading>` hvis verdien er en `string`. */\n header?: string | ReactNode;\n /**Spesifiserer hvilken DOM node `<Drawer>` skal ha som forelder via React portal.\n * Brukes med f.eks `document.getElementById(\"id\")` eller ref (skaper ikke ny DOM node).\n * @default themeProviderRef\n */\n parentElement?: HTMLElement;\n /**Custom props for breddehåndtering ved behov. Kan settes per brekkpunkt eller samme verdi for alle. */\n widthProps?: WidthProps;\n /**\n * Om `<Drawer>` skal vises med backdrop som gråer ut bakgrunnen.\n */\n withBackdrop?: boolean;\n }\n >,\n 'id'\n>;\n\nexport const Drawer = ({\n children,\n header,\n placement = 'right',\n parentElement,\n size = 'small',\n className,\n htmlProps,\n widthProps = {},\n withBackdrop,\n ref,\n ...rest\n}: DrawerProps) => {\n const themeContext = useContext(ThemeContext);\n\n if (!themeContext) {\n throw new Error('Drawer must be used within a ThemeProvider');\n }\n\n const portalTarget = parentElement ?? themeContext?.el;\n\n const { isOpen = false, onClose, drawerId, triggerEl } = useDrawerContext();\n const { minWidth, maxWidth, width } = widthProps;\n\n const hasHeader = !!header;\n const headerId = hasHeader ? `${drawerId}-header` : undefined;\n\n const drawerRef = useFocusTrap<HTMLDivElement>(isOpen);\n const combinedRef = useCombinedRef(ref, drawerRef);\n\n useEffect(() => {\n if (withBackdrop) {\n if (isOpen) {\n handleElementWithBackdropMount(document.body);\n } else {\n handleElementWithBackdropUnmount(document.body);\n }\n\n return () => handleElementWithBackdropUnmount(document.body);\n }\n }, [isOpen]);\n\n const elements: Array<HTMLElement | null> = [drawerRef.current];\n if (triggerEl) elements.push(triggerEl);\n\n useOnClickOutside(elements, () => {\n if (isOpen && !withBackdrop) {\n onClose?.();\n }\n });\n\n const backdropRef = useRef<HTMLDivElement>(null);\n const onBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (event.target === backdropRef.current && isOpen && withBackdrop) {\n onClose?.();\n }\n };\n\n const hasTransitionedIn = useMountTransition(isOpen, 500);\n const isMounted = hasTransitionedIn && isOpen;\n\n const isOpenCn = isMounted ? 'opened' : 'closed';\n\n const getMaxWidth = (size: DrawerSize): string => {\n switch (size) {\n case 'small':\n return '400px';\n case 'medium':\n return '600px';\n case 'large':\n return '800px';\n }\n };\n\n const drawer = (\n <Paper\n ref={combinedRef}\n role=\"dialog\"\n tabIndex={-1}\n position=\"fixed\"\n top=\"0\"\n height=\"100%\"\n minWidth={minWidth ? minWidth : '300px'}\n maxWidth={maxWidth ? maxWidth : getMaxWidth(size)}\n width={width}\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"flex-start\"\n padding=\"var(--dds-drawer-container-padding)\"\n borderRadius=\"0\"\n {...getBaseHTMLProps(\n drawerId,\n cn(\n className,\n styles.container,\n styles[`container--${placement}`],\n styles[`container--${placement}-${isOpenCn}`],\n focusStyles['focusable--inset'],\n ),\n htmlProps,\n rest,\n )}\n elevation={4}\n aria-labelledby={headerId}\n >\n <HStack\n position=\"sticky\"\n top=\"0\"\n left=\"0\"\n width=\"100%\"\n paddingInline=\"var(--dds-drawer-content-container-padding)\"\n className={styles['drawer-header']}\n >\n {hasHeader && (\n <div id={headerId}>\n {typeof header === 'string' ? (\n <Heading level={2} typographyType=\"headingLarge\">\n {header}\n </Heading>\n ) : (\n header\n )}\n </div>\n )}\n <Button\n className={cn(styles['button--close'])}\n data-testid=\"drawer-close-btn\"\n size=\"small\"\n purpose=\"tertiary\"\n onClick={onClose}\n aria-label=\"Lukk\"\n icon={CloseIcon}\n />\n </HStack>\n <VStack\n gap=\"x1\"\n overflowY=\"auto\"\n className={cn(styles['content-container'], utilStyles.scrollbar)}\n >\n {children}\n </VStack>\n </Paper>\n );\n\n const component = withBackdrop ? (\n <Backdrop\n zIndex=\"drawer\"\n isMounted={isMounted}\n ref={backdropRef}\n onClick={onBackdropClick}\n >\n {drawer}\n </Backdrop>\n ) : (\n drawer\n );\n\n return (isOpen || hasTransitionedIn) && portalTarget\n ? createPortal(component, portalTarget)\n : null;\n};\n\nDrawer.displayName = 'Drawer';\n",".container {\n --dds-transition-duration-drawer-move: 0.2s;\n /* Justering på spacing slik at fokusmarkering osv. ikke skjules ved overflow */\n --dds-drawer-content-container-padding: var(--dds-spacing-x0-25);\n --dds-drawer-container-padding: var(--dds-spacing-x1)\n calc(var(--dds-spacing-x1) - var(--dds-drawer-content-container-padding))\n calc(var(--dds-spacing-x1) - var(--dds-drawer-content-container-padding))\n calc(var(--dds-spacing-x1-5) - var(--dds-drawer-content-container-padding));\n\n z-index: var(--dds-zindex-drawer);\n\n @media (prefers-reduced-motion: no-preference) {\n transition: transform var(--dds-transition-duration-drawer-move);\n }\n}\n\n.container--left {\n left: 0;\n}\n\n.container--left-opened {\n transform: translate(0px);\n}\n\n.container--left-closed {\n transform: translate(-100%);\n}\n\n.container--right {\n right: 0;\n}\n\n.container--right-opened {\n transform: translate(0px);\n}\n\n.container--right-closed {\n transform: translate(100%);\n}\n\n.content-container {\n /* Spacing slik at fokusmarkering osv. ikke skjules ved overflow */\n padding: var(--dds-drawer-content-container-padding);\n}\n\n.drawer-header {\n padding-bottom: calc(\n var(--dds-spacing-x0-75) - var(--dds-drawer-content-container-padding)\n );\n background-color: var(--dds-color-surface-default);\n z-index: 1;\n}\n\n.button--close {\n margin-left: auto;\n margin-top: calc(-1 * var(--dds-spacing-x0-125));\n}\n","import { createContext, useContext } from 'react';\n\ninterface DrawerContextType {\n drawerId: string;\n triggerEl: HTMLElement | null;\n onClose: () => void;\n isOpen: boolean;\n}\n\nexport const DrawerContext = createContext<Partial<DrawerContextType>>({});\n\nexport const useDrawerContext = () => useContext(DrawerContext);\n","import {\n type DetailedHTMLProps,\n type Dispatch,\n type HTMLAttributes,\n Children as ReactChildren,\n type ReactNode,\n type SetStateAction,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { DrawerContext } from './Drawer.context';\nimport { useOnKeyDown } from '../../hooks';\n\nexport interface DrawerGroupProps {\n /**Barna til komponenten: trigger-element og `<Drawer>`. */\n children: ReactNode;\n /**\n * Om `<Drawer>` er åpen ved første render.\n */\n isInitiallyOpen?: boolean;\n /**\n * Implementerer kontrollert tilstand: om `<Drawer>` er åpen.\n */\n isOpen?: boolean;\n /**\n * Implementerer kontrollert tilstand: funksjon som kontrollerer `isOpen`.\n */\n setIsOpen?: Dispatch<SetStateAction<boolean>>;\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 isInitiallyOpen,\n isOpen: propIsOpen,\n setIsOpen: propSetIsOpen,\n drawerId,\n onOpen,\n onClose,\n}: DrawerGroupProps) => {\n const [internalIsOpen, internalSetIsOpen] = useState(isInitiallyOpen);\n const [isOpen, setIsOpen] = [\n propIsOpen ?? internalIsOpen,\n propSetIsOpen ?? internalSetIsOpen,\n ];\n\n const generatedId = useId();\n const uniqueDrawerId = drawerId ?? `${generatedId}-drawer`;\n\n const triggerRef = useRef<HTMLElement>(null);\n\n const open = () => setIsOpen(true);\n const close = () => setIsOpen(false);\n\n const handleOpen = () => {\n open();\n onOpen?.();\n };\n\n const handleClose = () => {\n close();\n onClose?.();\n };\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (isOpen) {\n triggerRef?.current?.focus();\n handleClose();\n }\n });\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement<\n DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>\n >(child) &&\n (childIndex === 0\n ? cloneElement(child, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniqueDrawerId,\n 'aria-expanded': isOpen,\n ref: triggerRef,\n onClick: handleOpen,\n })\n : child)\n );\n });\n return (\n <DrawerContext\n value={{\n drawerId: uniqueDrawerId,\n isOpen,\n onClose: handleClose,\n triggerEl: triggerRef.current,\n }}\n >\n {Children}\n </DrawerContext>\n );\n};\n\nDrawerGroup.displayName = 'DrawerGroup';\n",".message {\n color: var(--dds-text-color--subtle);\n}\n","import { type HTMLAttributes, type ReactNode } from 'react';\n\nimport styles from './EmptyContent.module.css';\nimport { Paper, VStack } from '../layout';\nimport { Heading, type HeadingLevel, Paragraph } from '../Typography';\n\nexport type EmptyContentProps = {\n /**Tittel - kort oppsummering. */\n headerText?: string;\n /**Nivå på overskriften. Sørg for at den følger hierarkiet på siden.\n * @default 2\n */\n headerHeadingLevel?: HeadingLevel;\n /**Melding - beskrivelse og forklaring på hvordan brukeren kan få innhold. Kan inneholde lenker og andre interaktive elementer. */\n message: ReactNode;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport function EmptyContent({\n headerText,\n message,\n headerHeadingLevel = 2,\n\n ...rest\n}: EmptyContentProps) {\n return (\n <Paper\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n minHeight=\"var(--dds-spacing-x10)\"\n height=\"100%\"\n width=\"100%\"\n padding=\"x1.5\"\n background=\"surface-subtle\"\n borderRadius=\"0\"\n {...rest}\n >\n <VStack maxWidth=\"70ch\" gap=\"x1\" textAlign=\"center\">\n {headerText && (\n <Heading level={headerHeadingLevel} typographyType=\"headingMedium\">\n {headerText}\n </Heading>\n )}\n <Paragraph className={styles.message}>{message}</Paragraph>\n </VStack>\n </Paper>\n );\n}\n\nEmptyContent.displayName = 'EmptyContent';\n","import { type HTMLAttributes, useId } from 'react';\n\nimport styles from './FavStar.module.css';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { StarFilledIcon, StarIcon } from '../Icon/icons';\n\ntype ComponentSize = 'medium' | 'large';\n\nexport type FavStarProps = BaseComponentPropsWithChildren<\n HTMLElement,\n {\n /**\n * Status på favorisering. `true` betyr at den er favorisert.\n */\n checked?: boolean;\n /**\n * Hvis du skal bruke `<FavStar>` uncontrolled så kan denne brukes til å sette den initielle \"favoritt\"-statusen.\n * @default false\n */\n defaultChecked?: boolean;\n /**\n * Callback som blir kalt når brukeren endrer status på favorisering.\n */\n onChange?: (checked: boolean) => void;\n /**\n * Størrelse på `<FavStar>`. `'medium'` er den mest vanlige størrelsen.\n * @default \"medium\"\n */\n size?: ComponentSize;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const FavStar = ({\n id,\n className,\n onChange,\n checked: checkedProp,\n defaultChecked,\n size = 'medium',\n htmlProps,\n ...rest\n}: FavStarProps) => {\n const { style, ...props } = getBaseHTMLProps(\n id,\n cn(className),\n htmlProps,\n rest,\n );\n const generatedId = useId();\n const [checked, setChecked] = useControllableState({\n value: checkedProp,\n defaultValue: defaultChecked ?? false,\n onChange,\n });\n return (\n <label\n className={cn(\n className,\n styles.container,\n styles[`container--${size}`],\n focusStyles['has-focusable-input'],\n )}\n style={style}\n htmlFor={id ?? generatedId}\n >\n <input\n {...props}\n id={id ?? generatedId}\n checked={checked}\n onChange={e => setChecked(e.target.checked)}\n type=\"checkbox\"\n aria-label={props['aria-label'] ?? 'Favoriser'}\n className={utilStyles['hide-input']}\n />\n <Icon iconSize={size} icon={StarIcon} className={styles.icon} />\n <Icon\n iconSize={size}\n icon={StarFilledIcon}\n className={cn(styles.icon, !checked && styles['icon--invisible'])}\n />\n </label>\n );\n};\n\nFavStar.displayName = 'FavStar';\n",".container {\n position: relative;\n cursor: pointer;\n display: inline-block;\n color: var(--dds-color-icon-medium);\n background-color: transparent;\n border-radius: var(--dds-border-radius-button);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n 0.2s color,\n 0.2s background-color,\n 0.2s transform,\n var(--dds-focus-transition);\n }\n\n &:hover {\n color: var(--dds-color-icon-action-hover);\n background-color: var(--dds-color-surface-hover-default);\n }\n\n &:has(input:checked) {\n color: var(--dds-color-icon-action-resting);\n }\n\n &:hover:has(input:checked) {\n color: var(--dds-color-icon-action-hover);\n }\n\n &:active {\n .icon {\n transform: scale(0.75);\n }\n }\n}\n\n.container--medium {\n width: var(--dds-icon-size-medium);\n height: var(--dds-icon-size-medium);\n}\n\n.container--large {\n width: var(--dds-icon-size-large);\n height: var(--dds-icon-size-large);\n}\n\n.icon {\n color: currentColor;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 1;\n @media (prefers-reduced-motion: no-preference) {\n transition:\n opacity 0.2s,\n transform 0.2s;\n }\n}\n\n.icon--invisible {\n opacity: 0;\n}\n","import { type Dispatch, type SetStateAction, useState } from 'react';\n\nimport { useCallbackRef } from './useCallbackRef';\n\nexport interface UseControllableStateProps<T> {\n value?: T;\n defaultValue?: T | (() => T);\n onChange?: (value: T) => void;\n}\n\n/**\n * The `useControllableState` hook returns the state and function that updates the state, just like React.useState does.\n */\nexport function useControllableState<T>(props: UseControllableStateProps<T>) {\n const { value: valueProp, defaultValue, onChange } = props;\n\n const onChangeProp = useCallbackRef(onChange);\n\n const [uncontrolledState, setUncontrolledState] = useState(defaultValue as T);\n const controlled = valueProp !== undefined;\n const value = controlled ? valueProp : uncontrolledState;\n\n const setValue = useCallbackRef(\n (next: SetStateAction<T>) => {\n const setter = next as (prevState?: T) => T;\n const nextValue = typeof next === 'function' ? setter(value) : next;\n\n if (!controlled) {\n setUncontrolledState(nextValue);\n }\n\n onChangeProp(nextValue);\n },\n [controlled, onChangeProp, value],\n );\n\n return [value, setValue] as [T, Dispatch<SetStateAction<T>>];\n}\n","import { type DependencyList, useCallback, useEffect, useRef } from 'react';\n\nexport function useCallbackRef<T extends (...args: Array<never>) => unknown>(\n callback: T | undefined,\n deps: DependencyList = [],\n) {\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n });\n\n return useCallback(((...args) => callbackRef.current?.(...args)) as T, deps);\n}\n","import { useEffect, useState } from 'react';\n\nimport { CommentComponent } from './CommentComponent';\nimport { type FeedbackProps, type Rating } from './Feedback.types';\nimport { RatingComponent } from './RatingComponent';\nimport { Paragraph } from '../Typography';\n\nexport const Feedback = ({\n layout = 'vertical',\n ratingLabel = 'Hva syns du om tjenesten?',\n positiveFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n negativeFeedbackLabel = 'Hva kan vi forbedre? (valgfritt)',\n ratingSubmittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n submittedTitle = 'Tusen takk! Tilbakemeldingen din hjelper oss å forbedre løsningen',\n textAreaTip = 'Ikke send inn personopplysninger eller annen sensitiv informasjon',\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 layout={layout}\n rating={rating}\n feedbackText={feedbackText}\n positiveFeedbackLabel={positiveFeedbackLabel}\n negativeFeedbackLabel={negativeFeedbackLabel}\n ratingSubmittedTitle={ratingSubmittedTitle}\n textAreaTip={textAreaTip}\n loading={loading}\n handleSubmit={handleSubmit}\n handleFeedbackTextChange={handleFeedbackTextChange}\n />\n );\n }\n\n return <Paragraph>{submittedTitle}</Paragraph>;\n};\n",".rating-container {\n display: flex;\n gap: var(--dds-spacing-x1);\n}\n\n.rating-container--horizontal {\n flex-direction: row;\n align-items: center;\n}\n\n.rating-container--vertical {\n flex-direction: column;\n align-items: start;\n}\n\n.rating-submitted-title {\n display: inline-flex;\n align-items: center;\n gap: var(--dds-spacing-x0-5);\n}\n\n.button {\n border-radius: var(--dds-border-radius-button);\n color: var(--dds-color-icon-medium);\n\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n color: var(--dds-color-icon-action-hover);\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n color 0.2s,\n var(--dds-focus-transition);\n }\n}\n\n.button--horizontal {\n width: var(--dds-icon-size-medium);\n height: var(--dds-icon-size-medium);\n}\n\n.button--vertical {\n width: var(--dds-icon-size-large);\n height: var(--dds-icon-size-large);\n}\n","import {\n type ComponentPropsWithRef,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './TextArea.module.css';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { getDefaultText, getInputWidth, renderCharCounter } from '../helpers';\nimport { type CommonInputProps } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { scrollbar } from '../helpers/styling/utilStyles.module.css';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport { Label } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type TextAreaProps = CommonInputProps & {\n /** Spesifiserer om tegntelleren skal vises ved bruk av `maxLength` attributt.\n * @default true\n */\n withCharacterCounter?: boolean;\n} & ComponentPropsWithRef<'textarea'>;\n\nexport const TextArea = ({\n id,\n value,\n defaultValue,\n onChange,\n errorMessage,\n required = false,\n tip,\n label,\n readOnly,\n 'aria-required': ariaRequired = false,\n 'aria-describedby': ariaDescribedby,\n maxLength,\n withCharacterCounter = true,\n className,\n style,\n width,\n ref,\n ...rest\n}: TextAreaProps) => {\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>(getDefaultText(value, defaultValue));\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 hasMessage = hasErrorMessage || !!tip;\n const hasLabel = !!label;\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const characterCounterId = derivativeIdGenerator(\n uniqueId,\n 'characterCounter',\n );\n\n const showRequiredStyling = required || !!ariaRequired;\n const inputWidth = getInputWidth(width);\n\n return (\n <div className={cn(className, inputStyles.container)} style={{ ...style }}>\n {hasLabel && (\n <Label\n showRequiredStyling={showRequiredStyling}\n htmlFor={uniqueId}\n className={inputStyles.label}\n readOnly={readOnly}\n >\n {label}\n </Label>\n )}\n <Box\n as=\"textarea\"\n width={inputWidth}\n ref={multiRef}\n id={uniqueId}\n onChange={onChangeHandler}\n value={value}\n defaultValue={defaultValue}\n maxLength={maxLength}\n required={required}\n readOnly={readOnly}\n aria-required={ariaRequired}\n aria-describedby={spaceSeparatedIdListGenerator([\n tip ? tipId : undefined,\n errorMessage ? errorMessageId : undefined,\n maxLength && withCharacterCounter ? characterCounterId : undefined,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorMessage ? true : undefined}\n className={cn(\n inputStyles.input,\n inputStyles['input--stateful'],\n hasErrorMessage && inputStyles['input--stateful-danger'],\n styles.textarea,\n scrollbar,\n typographyStyles['body-medium'],\n focusable,\n )}\n {...rest}\n />\n <Box\n display=\"flex\"\n justifyContent={\n withCharacterCounter\n ? hasMessage\n ? 'space-between'\n : 'flex-end'\n : undefined\n }\n width={withCharacterCounter ? inputWidth : undefined}\n >\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {renderCharCounter(\n characterCounterId,\n withCharacterCounter,\n text.length,\n maxLength,\n )}\n </Box>\n </div>\n );\n};\n\nTextArea.displayName = 'TextArea';\n",".textarea {\n height: auto;\n resize: vertical;\n vertical-align: bottom;\n padding-bottom: var(--dds-spacing-x0-5);\n}\n","import { Icon } from '../Icon';\nimport { type Layout, type ThumbIconProps } from './Feedback.types';\nimport {\n ThumbDownFilledIcon,\n ThumbDownIcon,\n ThumbUpFilledIcon,\n ThumbUpIcon,\n} from '../Icon/icons';\n\nconst getIconSize = (layout: Layout) =>\n layout === 'vertical' ? 'large' : 'medium';\n\nexport const ThumbIcon = ({ rating, layout, type }: ThumbIconProps) =>\n type === 'comment' ? (\n <Icon\n icon={rating === 'positive' ? ThumbUpFilledIcon : ThumbDownFilledIcon}\n color=\"iconActionResting\"\n iconSize={getIconSize(layout)}\n />\n ) : (\n <Icon\n icon={rating === 'positive' ? ThumbUpIcon : ThumbDownIcon}\n color=\"iconMedium\"\n iconSize={getIconSize(layout)}\n />\n );\n","import styles from './Feedback.module.css';\nimport { type Layout, type Rating } from './Feedback.types';\nimport { Button } from '../Button';\nimport { VStack } from '../layout';\nimport { TextArea } from '../TextArea';\nimport { Paragraph } from '../Typography';\nimport { ThumbIcon } from './utils';\n\ninterface CommentComponentType {\n layout: Layout;\n rating: Rating | null;\n feedbackText: string | undefined;\n positiveFeedbackLabel: string;\n negativeFeedbackLabel: string;\n ratingSubmittedTitle: string;\n textAreaTip: string;\n loading: boolean;\n handleSubmit: () => void;\n handleFeedbackTextChange: (newText: string) => void;\n}\n\nexport const CommentComponent = ({\n layout,\n rating,\n feedbackText,\n positiveFeedbackLabel,\n negativeFeedbackLabel,\n ratingSubmittedTitle,\n textAreaTip,\n loading,\n handleSubmit,\n handleFeedbackTextChange,\n}: CommentComponentType) => {\n return (\n <VStack gap=\"x1\">\n <span className={styles['rating-submitted-title']}>\n {ThumbIcon({ rating, layout, type: 'comment' })}\n <Paragraph>{ratingSubmittedTitle} </Paragraph>\n </span>\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={textAreaTip}\n />\n\n <Button\n purpose=\"secondary\"\n size=\"small\"\n onClick={handleSubmit}\n loading={loading}\n >\n Send inn\n </Button>\n </VStack>\n );\n};\n","import { type Placement } from '@floating-ui/react-dom';\nimport {\n type HTMLAttributes,\n Children as ReactChildren,\n type ReactElement,\n type Ref,\n cloneElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './Tooltip.module.css';\nimport { useCombinedRef, useFloatPosition, useOnKeyDown } from '../../hooks';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn, combineHandlers } from '../../utils';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Paper } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\ntype AnchorElement = ReactElement<\n HTMLAttributes<HTMLElement> & {\n ref: Ref<HTMLElement>;\n }\n>;\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 * @default \"bottom\"\n */\n placement?: Placement;\n /**Anchor-elementet. */\n children: AnchorElement;\n /**Forsinkelse for når tooltip skal dukke opp. Oppgis i millisekunder.\n * @default 100\n */\n delay?: number;\n /**`id` for tooltip. */\n tooltipId?: string;\n } & PickedHTMLAttributes,\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | keyof PickedHTMLAttributes>\n>;\n\nexport const Tooltip = ({\n text,\n placement = 'bottom',\n children,\n tooltipId,\n delay = 100,\n style,\n onMouseLeave,\n onMouseOver,\n id,\n ref,\n className,\n htmlProps,\n ...rest\n}: TooltipProps) => {\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: positionStyles } = useFloatPosition(arrowElement, {\n placement,\n });\n const tooltipRef = useRef<HTMLDivElement>(null);\n const combinedRef = useCombinedRef(ref, refs.setFloating, tooltipRef);\n\n const closeWhenNotInView: IntersectionObserverCallback = entries => {\n const [entry] = entries;\n entry.isIntersecting ? setInView(true) : setInView(false);\n };\n\n useEffect(() => {\n const options = {\n root: null,\n rootMargin: '0px',\n };\n const ref = tooltipRef.current;\n const observer = new IntersectionObserver(closeWhenNotInView, options);\n\n if (ref) observer.observe(ref);\n\n return () => {\n if (ref) observer.unobserve(ref);\n };\n }, [tooltipRef]);\n\n useEffect(() => {\n if (tooltipRef.current) {\n window.addEventListener('scroll', () => {\n closeTooltip();\n });\n }\n return () => {\n if (tooltipRef.current) {\n window.removeEventListener('scroll', () => null);\n }\n };\n }, []);\n\n let timer: ReturnType<typeof setTimeout>;\n\n useEffect(() => {\n return () => {\n clearTimeout(timer);\n };\n }, []);\n\n useOnKeyDown(['Escape', 'Esc'], () => {\n if (open) setOpen(false);\n });\n\n const closeTooltip = () => {\n clearTimeout(timer);\n setOpen(false);\n };\n const openTooltip = () => {\n if (!open) {\n clearTimeout(timer);\n timer = setTimeout(() => setOpen(true), delay);\n }\n };\n\n const anchorElement = ReactChildren.only(\n cloneElement(children, {\n ref: refs.setReference,\n onFocus: combineHandlers(openTooltip, children.props.onFocus),\n onBlur: combineHandlers(closeTooltip, children.props.onBlur),\n 'aria-describedby': uniqueTooltipId,\n }),\n );\n\n const openCn = open && inView ? 'open' : 'closed';\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container),\n htmlProps,\n rest,\n )}\n style={style}\n onMouseLeave={combineHandlers(closeTooltip, onMouseLeave)}\n onMouseOver={combineHandlers(openTooltip, onMouseOver)}\n >\n {anchorElement}\n <Paper\n id={uniqueTooltipId}\n ref={combinedRef}\n role=\"tooltip\"\n aria-hidden={!open}\n style={{ ...positionStyles.floating }}\n elevation={1}\n border=\"border-subtle\"\n className={cn(\n styles.paper,\n typographyStyles['body-medium'],\n utilStyles['visibility-transition'],\n utilStyles[`visibility-transition--${openCn}`],\n )}\n >\n {text}\n <div ref={setArrowElement} style={positionStyles.arrow}>\n <svg width=\"36\" height=\"9\">\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 className={styles['svg-arrow__background']}\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 className={styles['svg-arrow__border']}\n />\n </svg>\n </div>\n </Paper>\n </div>\n );\n};\n\nTooltip.displayName = 'Tooltip';\n",".container {\n width: -moz-fit-content;\n width: fit-content;\n}\n\n.svg-arrow__border {\n fill: var(--dds-color-border-subtle);\n}\n\n.svg-arrow__background {\n fill: var(--dds-color-surface-default);\n}\n\n.paper {\n width: -moz-fit-content;\n width: fit-content;\n position: absolute;\n z-index: var(--dds-zindex-tooltip);\n text-align: center;\n padding: var(--dds-spacing-x0-75);\n}\n","import styles from './Feedback.module.css';\nimport { type Layout, type Rating } from './Feedback.types';\nimport { ThumbIcon } from './utils';\nimport { cn } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { HStack } from '../layout';\nimport { Spinner } from '../Spinner';\nimport { Tooltip } from '../Tooltip';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\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 const button = (rating: Rating, layout: Layout, tooltip: string) => (\n <button\n aria-label={tooltip}\n onClick={() => handleRatingChange(rating)}\n className={cn(\n utilStyles['remove-button-styling'],\n styles.button,\n styles[`button--${layout}`],\n focusable,\n )}\n >\n {ThumbIcon({ rating, layout, type: 'rating' })}\n </button>\n );\n\n return (\n <div\n className={cn(\n styles['rating-container'],\n styles[`rating-container--${layout}`],\n )}\n >\n <h2 className={typographyStyles['label-medium']}>{ratingLabel}</h2>\n {loading ? (\n <Spinner tooltip=\"Laster opp tilbakemelding ...\" />\n ) : (\n <HStack gap=\"x1\">\n <Tooltip text={thumbUpTooltip}>\n {button('positive', layout, thumbUpTooltip)}\n </Tooltip>\n <Tooltip text={thumbDownTooltip}>\n <div>{button('negative', layout, thumbDownTooltip)}</div>\n </Tooltip>\n </HStack>\n )}\n </div>\n );\n};\n",".container {\n padding-block: 0;\n padding-inline: 0;\n margin-inline: 0;\n border: none;\n}\n","import { container } from './Fieldset.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\n\nexport type FieldsetProps = BaseComponentPropsWithChildren<\n HTMLFieldSetElement,\n {\n /** Om alle inputfelt skal bli `disabled`. */\n disabled?: boolean;\n }\n>;\n\nexport const Fieldset = ({\n id,\n className,\n htmlProps,\n ...rest\n}: FieldsetProps) => (\n <fieldset\n {...getBaseHTMLProps(id, cn(className, container), htmlProps, rest)}\n />\n);\n\nFieldset.displayName = 'Fieldset';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { VStack } from '../layout';\n\nexport type FieldsetGroupProps = BaseComponentPropsWithChildren<HTMLDivElement>;\n\nexport const FieldsetGroup = ({\n id,\n className,\n htmlProps,\n ...rest\n}: FieldsetGroupProps) => (\n <VStack gap=\"x1.5\" {...getBaseHTMLProps(id, className, htmlProps, rest)} />\n);\n\nFieldsetGroup.displayName = 'FieldsetGroup';\n","import { type ComponentPropsWithRef, useId } from 'react';\n\nimport { ErrorList } from './ErrorList';\nimport { File } from './File';\nimport styles from './FileUploader.module.css';\nimport { type FileList } from './types';\nimport { type FileUploaderHookProps, useFileUploader } from './useFileUploader';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Button } from '../Button';\nimport { StylelessList } from '../helpers';\nimport { UploadIcon } from '../Icon/icons';\nimport { InputMessage } from '../InputMessage';\nimport { Box, type ResponsiveProps, VStack } from '../layout';\nimport { Label } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\nexport type FileUploaderProps = {\n /**Id til filopplasteren. */\n id?: string;\n /**Ledetekst for filopplaster. */\n label?: string;\n /**Ledetekst for slippsonen. Denne teksten skal, av UU-hensyn, henge sammen med den usynlige teksten: \"velg fil med påfølgende knapp\"\n * @default Dra og slipp filer her eller\n */\n dropAreaLabel?: string;\n /**Ledetekst for opplastingsknappen.\n * @default Velg fil\n */\n btnLabel?: string;\n /**Hjelpetekst. */\n tip?: string;\n /**Om det er påkrevd med minst én fil. */\n required?: boolean;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Om drag-and-drop zone skal vises.\n * @default true\n */\n withDragAndDrop?: boolean;\n /**Om listen med opplastede filer skal skjules. Brukes kun hvis listen blir vist på egen måte. */\n hideFileList?: boolean;\n} & Pick<ResponsiveProps, 'width'> &\n Partial<FileUploaderHookProps> &\n Omit<ComponentPropsWithRef<'div'>, 'onChange' | 'id'>;\n\nexport const FileUploader = (props: FileUploaderProps) => {\n const {\n id,\n label,\n dropAreaLabel = 'Dra og slipp filer her eller',\n btnLabel = 'Velg fil',\n tip,\n required = false,\n withDragAndDrop = true,\n initialFiles,\n value,\n accept,\n maxFiles,\n disabled,\n onChange,\n width = 'var(--dds-input-default-width)',\n errorMessage,\n hideFileList,\n className,\n ...rest\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 labelId = derivativeIdGenerator(uniqueId, 'label');\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const buttonId = derivativeIdGenerator(uniqueId, 'button');\n const inputId = derivativeIdGenerator(uniqueId, 'input');\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 const button = (\n <Button\n {...getButtonProps()}\n id={buttonId}\n size=\"medium\"\n type=\"button\"\n purpose=\"secondary\"\n icon={UploadIcon}\n htmlProps={{\n 'aria-invalid': hasRootErrors ? true : undefined,\n 'aria-describedby': spaceSeparatedIdListGenerator([\n hasLabel ? labelId : undefined,\n hasTip ? tipId : undefined,\n ...rootErrorsList.map(e => e.id),\n ]),\n }}\n >\n {btnLabel}\n </Button>\n );\n\n return (\n <Box\n id={uniqueId}\n className={cn(className, typographyStyles['body-medium'])}\n width={width}\n {...rest}\n >\n {hasLabel && (\n <Label\n id={labelId}\n showRequiredStyling={showRequiredMarker}\n htmlFor={inputId}\n >\n {label}\n </Label>\n )}\n {hasTip && <InputMessage id={tipId} message={tip} messageType=\"tip\" />}\n {withDragAndDrop ? (\n <VStack\n gap=\"x1\"\n padding=\"x1.5 x1.5 x2 x1.5\"\n {...getRootProps()}\n className={cn(\n styles['input-container'],\n hasRootErrors && styles['input-container--with-errors'],\n isDragActive && styles['input-container--drag-active'],\n )}\n >\n <input\n {...getInputProps()}\n id={inputId}\n data-testid=\"file-uploader-input\"\n />\n {dropAreaLabel}\n <VisuallyHidden as=\"span\">\n velg fil med påfølgende knapp\n </VisuallyHidden>\n {button}\n </VStack>\n ) : (\n <div className={styles['input-container--no-drag-zone']}>\n <input {...getInputProps()} id={inputId} />\n {button}\n </div>\n )}\n <ErrorList errors={rootErrorsList} />\n {!hideFileList && <StylelessList>{fileListElements}</StylelessList>}\n </Box>\n );\n};\n\nFileUploader.displayName = 'FileUploader';\n","import { StylelessList } from '../helpers';\nimport { InputMessage } from '../InputMessage';\n\ninterface ErrorListProps {\n errors: Array<{\n id: string | undefined;\n message: string;\n }>;\n}\n\nexport const ErrorList = (props: ErrorListProps) => {\n const { errors } = props;\n\n if (errors.length < 1) {\n return null;\n }\n\n if (errors.length === 1) {\n return (\n <InputMessage\n id={errors[0].id}\n message={errors[0].message}\n messageType=\"error\"\n />\n );\n }\n\n return (\n <StylelessList>\n {errors.map(({ id, message }) => {\n return (\n <li>\n <InputMessage\n key={id}\n id={id}\n message={message}\n messageType=\"error\"\n />\n </li>\n );\n })}\n </StylelessList>\n );\n};\n",".input-container {\n box-sizing: border-box;\n border: 2px dashed;\n border-color: var(--dds-color-border-default);\n background-color: var(--dds-color-surface-default);\n border-radius: var(--dds-border-radius-surface);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s;\n }\n}\n\n.input-container--with-errors {\n border-color: var(--dds-color-border-danger);\n}\n\n.input-container--drag-active {\n border-color: var(--dds-color-border-action-hover);\n background-color: var(--dds-color-surface-hover-default);\n}\n\n.input-container--no-drag-zone {\n padding: var(--dds-spacing-x0-5) 0;\n}\n\n.file--invalid {\n box-shadow: inset 0 0 0 1px var(--dds-color-border-danger);\n}\n\n.file__icon--invalid {\n color: var(--dds-color-icon-on-danger-default);\n}\n\n.file__icon--valid {\n color: var(--dds-color-icon-on-success-default);\n}\n\n.file__name {\n word-break: break-all;\n width: 100%;\n}\n","import { ErrorList } from './ErrorList';\nimport styles from './FileUploader.module.css';\nimport { type FileUploaderFile } from './fileUploaderReducer';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { CheckCircledIcon, CloseIcon, ErrorIcon } from '../Icon/icons';\nimport { Paper } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\ninterface FileProps {\n parentId: string;\n index: number;\n isValid: boolean;\n file: FileUploaderFile;\n removeFile: () => void;\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 <li>\n <Paper\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap=\"x0.75\"\n marginBlock=\"x0.5 0\"\n padding=\"x0.5 x1\"\n border={isValid ? 'border-default' : 'border-danger'}\n background=\"surface-subtle\"\n className={cn(!isValid && styles['file--invalid'])}\n >\n <span\n className={cn(styles.file__name, typographyStyles['body-medium'])}\n >\n {stateFile.file.name}\n </span>\n <Icon\n icon={isValid ? CheckCircledIcon : ErrorIcon}\n className={styles[`file__icon--${isValid ? 'valid' : 'invalid'}`]}\n />\n <Button\n size=\"small\"\n purpose=\"tertiary\"\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 </Paper>\n <ErrorList errors={errorsList} />\n </li>\n );\n};\n","import {\n type FileWithPath,\n fromEvent as getFilesFromEvent,\n} from 'file-selector';\nimport type React from 'react';\nimport {\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type Ref,\n} from 'react';\nimport { useCallback, useEffect, useMemo, useReducer, useRef } from 'react';\n\nimport {\n type FileUploaderFile,\n type RootErrorList,\n fileUploaderReducer,\n} from './fileUploaderReducer';\nimport { type FileList, type FileUploaderAccept } from './types';\nimport {\n getInvalidFileTypeErrorMessage,\n getTooManyFilesErrorMessage,\n isEventWithFiles,\n isFileAccepted,\n preventDefaults,\n} from './utils';\n\nexport interface FileUploaderHookProps {\n id: string | undefined;\n /**Dersom komponenten skal styres internt. Utgangspunktet for filene som har blitt lastet opp. */\n initialFiles: FileList | undefined;\n /**Dersom komponenten styres utenfra. Filene som har blitt lastet opp. */\n value: FileList | undefined;\n /**Callback for når fil-listen endres. */\n onChange: (newFiles: FileList) => void;\n /**Hvilke filendelser eller mime-typer som filopplasteren skal akseptere. */\n accept: Array<FileUploaderAccept> | undefined;\n /**Om filopplasteren er avslått eller ikke */\n disabled: boolean | undefined;\n /**Maks antall filer som tillates. */\n maxFiles: number | undefined;\n /**Feilmelding. Setter også error state. */\n errorMessage: string | undefined;\n}\n\nconst calcRootErrors = (\n files: Array<FileUploaderFile>,\n maxFiles: number | undefined,\n errorMessage: string | undefined,\n): RootErrorList => {\n const errors: RootErrorList = [];\n\n if (maxFiles && maxFiles >= 1 && files.length > maxFiles) {\n errors.push(getTooManyFilesErrorMessage(maxFiles));\n }\n\n if (errorMessage) {\n errors.push(errorMessage);\n }\n\n return errors;\n};\n\nexport const useFileUploader = <TRootElement extends HTMLElement>(\n props: FileUploaderHookProps,\n) => {\n const {\n initialFiles,\n value,\n onChange,\n accept,\n maxFiles,\n disabled,\n errorMessage,\n } = props;\n\n const rootRef = useRef<TRootElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const isControlled = !!value;\n\n const initialFileUploaderFiles = useMemo(\n () =>\n (initialFiles ?? []).map<FileUploaderFile>(f => ({\n file: f,\n errors: [],\n })),\n [initialFiles],\n );\n\n const [state, dispatch] = useReducer(fileUploaderReducer, {\n files: initialFileUploaderFiles,\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n rootErrors: calcRootErrors(\n initialFileUploaderFiles,\n maxFiles,\n errorMessage,\n ),\n });\n\n const { files: stateFiles } = state;\n\n useEffect(() => {\n if (isControlled) {\n const files = value.map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n });\n\n dispatch({\n type: 'onSetFiles',\n payload: files,\n });\n }\n }, [value, isControlled, accept, dispatch]);\n\n useEffect(() => {\n dispatch({\n type: 'setRootErrors',\n payload: calcRootErrors(stateFiles, maxFiles, errorMessage),\n });\n }, [dispatch, stateFiles, maxFiles, errorMessage]);\n\n const onRootFocus = useCallback(\n () => dispatch({ type: 'focus' }),\n [dispatch],\n );\n\n const onRootBlur = useCallback(() => dispatch({ type: 'blur' }), [dispatch]);\n\n const onRootDragEnter = useCallback(\n async (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (isEventWithFiles(evt)) {\n const files = await getFilesFromEvent(evt);\n const fileCount = files.length;\n\n if (fileCount === 0) return;\n\n dispatch({ type: 'dragEnter' });\n }\n },\n [dispatch, accept, maxFiles],\n );\n\n const onRootDragOver = useCallback((evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n const hasFiles = isEventWithFiles(evt);\n if (hasFiles && evt.dataTransfer) {\n try {\n evt.dataTransfer.dropEffect = 'copy';\n } catch {} /* eslint-disable-line no-empty */\n }\n }, []);\n\n const onRootDragLeave = useCallback(\n (evt: React.DragEvent<TRootElement>) => {\n preventDefaults(evt);\n\n if (evt.currentTarget.contains(evt.relatedTarget as HTMLElement)) return;\n\n dispatch({ type: 'dragLeave' });\n },\n [dispatch],\n );\n\n const setFiles = useCallback(\n async (\n evt: React.DragEvent<TRootElement> | React.ChangeEvent<HTMLInputElement>,\n ) => {\n evt.preventDefault();\n if (isEventWithFiles(evt)) {\n const existingFileNames = stateFiles.map(f => f.file.name);\n\n // TODO: Fiks cast her.\n const filesFromEvent = (await getFilesFromEvent(\n evt,\n )) as Array<FileWithPath>;\n\n const newFiles = filesFromEvent\n .filter(f => !existingFileNames.includes(f.name))\n .map<FileUploaderFile>(file => {\n const accepted = isFileAccepted(file, accept);\n\n return {\n file,\n errors: accepted ? [] : [getInvalidFileTypeErrorMessage()],\n };\n })\n .concat(stateFiles);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onSetFiles',\n payload: newFiles,\n });\n }\n }\n },\n [\n stateFiles,\n isControlled,\n accept,\n errorMessage,\n maxFiles,\n onChange,\n dispatch,\n ],\n );\n\n const openFileDialog = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.value = '';\n inputRef.current.click();\n }\n }, [inputRef]);\n\n const removeFile = useCallback(\n (file: FileUploaderFile) => {\n const newFiles = [...stateFiles];\n newFiles.splice(stateFiles.indexOf(file), 1);\n\n onChange(newFiles.map(f => f.file));\n\n if (!isControlled) {\n dispatch({\n type: 'onRemoveFile',\n payload: newFiles,\n });\n }\n },\n [stateFiles, isControlled, maxFiles, errorMessage, onChange, dispatch],\n );\n\n const getRootProps = useCallback(\n (): HTMLAttributes<TRootElement> & {\n ref: Ref<TRootElement>;\n } => ({\n onBlur: onRootBlur,\n onFocus: onRootFocus,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDragEnter: onRootDragEnter,\n onDragOver: onRootDragOver,\n onDragLeave: onRootDragLeave,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onDrop: setFiles,\n ref: rootRef,\n }),\n [\n onRootBlur,\n onRootFocus,\n onRootDragEnter,\n onRootDragOver,\n setFiles,\n rootRef,\n disabled,\n ],\n );\n\n const getButtonProps = useCallback(\n (): ButtonHTMLAttributes<HTMLButtonElement> & {\n ref: Ref<HTMLButtonElement>;\n } => ({\n onClick: openFileDialog,\n ref: buttonRef,\n }),\n [openFileDialog, buttonRef],\n );\n\n const getInputProps = useCallback(\n (): InputHTMLAttributes<HTMLInputElement> & {\n ref: Ref<HTMLInputElement>;\n } => ({\n type: 'file',\n style: { display: 'none' },\n tabIndex: -1,\n ref: inputRef,\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n onChange: setFiles,\n multiple: !maxFiles || maxFiles > 1,\n ...(accept ? { accept: accept.join(',') } : {}),\n }),\n [inputRef, setFiles, maxFiles, accept],\n );\n\n return {\n state,\n getRootProps,\n getInputProps,\n getButtonProps,\n removeFile,\n };\n};\n","import { type FileWithPath } from 'file-selector';\nimport { type Reducer } from 'react';\n\nexport interface FileUploaderFile {\n file: FileWithPath;\n errors: Array<string>;\n}\n\nexport type RootErrorList = Array<string>;\n\nexport type FileUploaderAction =\n | { type: 'focus' }\n | { type: 'blur' }\n | { type: 'dragEnter' }\n | { type: 'dragLeave' }\n | {\n type: 'onSetFiles';\n payload: Array<FileUploaderFile>;\n }\n | {\n type: 'onRemoveFile';\n payload: Array<FileUploaderFile>;\n }\n | {\n type: 'setRootErrors';\n payload: RootErrorList;\n };\n\nexport interface FileUploaderState {\n files: Array<FileUploaderFile>;\n isFocused: boolean;\n isFileDialogActive: boolean;\n isDragActive: boolean;\n rootErrors: Array<string>;\n}\n\nexport const fileUploaderReducer: Reducer<\n FileUploaderState,\n FileUploaderAction\n> = (state, action) => {\n switch (action.type) {\n case 'focus':\n return { ...state, isFocused: true };\n case 'blur':\n return { ...state, isFocused: false };\n case 'dragEnter':\n return {\n ...state,\n isDragActive: true,\n };\n case 'dragLeave':\n return { ...state, isDragActive: false };\n case 'onSetFiles':\n return {\n ...state,\n isDragActive: false,\n files: action.payload,\n };\n case 'onRemoveFile':\n return {\n ...state,\n files: action.payload,\n };\n case 'setRootErrors':\n return {\n ...state,\n rootErrors: action.payload,\n };\n default:\n return state;\n }\n};\n","/* Kopiert fra https://github.com/react-dropzone/attr-accept.\n * attr-accept har problemer med ESM output, så vi tar heller bare inn koden direkte.\n * Dette er all kode som ligger i pakken, og den har ikke vært endret på fire år, så\n * det skal nok gå fint å \"vedlikeholde\" dette selv.\n */\n\n/**\n * Check if the provided file type should be accepted by the input with accept attribute.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#attr-accept\n *\n * Inspired by https://github.com/enyo/dropzone\n *\n * @param file {File} https://developer.mozilla.org/en-US/docs/Web/API/File\n * @param acceptedFiles {string}\n * @returns {boolean}\n */\nexport function isAccepted(\n file: File,\n acceptedFiles: Array<string> | string | undefined,\n): boolean {\n if (file && acceptedFiles) {\n const acceptedFilesArray = Array.isArray(acceptedFiles)\n ? acceptedFiles\n : acceptedFiles.split(',');\n const fileName = file.name || '';\n const mimeType = (file.type || '').toLowerCase();\n const baseMimeType = mimeType.split('/')[0] || '';\n\n return acceptedFilesArray.some(type => {\n const validType = type.trim().toLowerCase();\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.slice(0, -2);\n }\n return mimeType === validType;\n });\n }\n return true;\n}\n","import { isAccepted } from './attr-accept';\n\nexport const preventDefaults = (event: React.BaseSyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n};\n\nexport const isDragEvent = (\n event: unknown,\n): event is React.DragEvent<unknown> => {\n const asDragEvent = event as React.DragEvent<unknown>;\n\n return asDragEvent.dataTransfer !== undefined;\n};\n\nexport const isEventWithFiles = (\n event: React.DragEvent<unknown> | React.ChangeEvent<HTMLInputElement>,\n): boolean => {\n if (!isDragEvent(event)) {\n return event.target.files !== null && event.target.files !== undefined;\n }\n\n return (\n event.dataTransfer.types.includes('Files') ||\n event.dataTransfer.types.includes('application/x-moz-file')\n );\n};\n\nexport const isFileAccepted = (\n file: File,\n accept: Array<string> | undefined,\n): boolean => {\n return accept !== undefined ? isAccepted(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",".container {\n padding-block-start: var(--dds-spacing-x3);\n padding-block-end: var(--dds-spacing-x6);\n\n @media only screen and (min-width: 960px) {\n padding-block: var(--dds-spacing-x4);\n }\n}\n\n.left {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x4);\n}\n\n.list {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x1-5);\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x1-5);\n}\n\n.socials-group {\n display: flex;\n flex-direction: column;\n gap: var(--dds-spacing-x1);\n}\n\n.socials-list {\n display: flex;\n gap: var(--dds-spacing-x1-5);\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\nimport { Contrast } from '../Contrast';\n\nexport type FooterProps = ComponentPropsWithRef<'footer'>;\n\nexport const Footer = ({ className, ...rest }: FooterProps) => (\n <Contrast as=\"footer\" className={cn(className, styles.container)} {...rest} />\n);\n","import { Heading, type HeadingProps } from '../Typography';\n\nexport type FooterListHeaderProps = Omit<HeadingProps, 'level' | 'withMargins'>;\n\nexport const FooterListHeader = (props: FooterListHeaderProps) => (\n <Heading level={2} typographyType=\"headingSmall\" {...props} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport Logo from './norges_domstoler_logo.svg';\nimport { Box } from '../layout/Box/Box';\n\ntype HideBreakpoint = 'xs' | 'sm' | 'md';\n\nexport type FooterLogoProps = ComponentPropsWithRef<'img'> & {\n /**Brekkepunkt når logoen skal skjules på mindre skjerm. */\n hideBreakpoint?: HideBreakpoint;\n};\n\nexport const FooterLogo = ({ hideBreakpoint, ...rest }: FooterLogoProps) => {\n return (\n <Box\n hideBelow={hideBreakpoint ? hideBreakpoint : undefined}\n width=\"fit-content\"\n >\n <img\n height={80}\n width={151}\n alt=\"norges domstoler\"\n src={Logo}\n {...rest}\n />\n </Box>\n );\n};\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\nimport { StylelessList } from '../helpers';\n\nexport type FooterListProps = ComponentPropsWithRef<'ul'>;\n\nexport const FooterList = ({ className, ...rest }: FooterListProps) => (\n <StylelessList className={cn(className, styles.list)} {...rest} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\nimport { StylelessList } from '../helpers';\n\nexport type FooterSocialsListProps = ComponentPropsWithRef<'ul'>;\n\nexport const FooterSocialsList = ({\n className,\n ...rest\n}: FooterSocialsListProps) => (\n <StylelessList className={cn(className, styles['socials-list'])} {...rest} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\n\nexport type FooterSocialsGroupProps = ComponentPropsWithRef<'div'>;\n\nexport const FooterSocialsGroup = ({\n className,\n ...rest\n}: FooterSocialsGroupProps) => (\n <div className={cn(className, styles['socials-group'])} {...rest} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\n\nexport type FooterListGroupProps = ComponentPropsWithRef<'div'>;\n\nexport const FooterListGroup = ({\n className,\n ...rest\n}: FooterListGroupProps) => (\n <div className={cn(className, styles['list-group'])} {...rest} />\n);\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Footer.module.css';\nimport { cn } from '../../utils';\n\nexport type FooterLeftProps = ComponentPropsWithRef<'div'>;\n\nexport const FooterLeft = ({ className, ...rest }: FooterLeftProps) => (\n <div className={cn(className, styles['left'])} {...rest} />\n);\n","import { useState } from 'react';\n\nimport styles from './GlobalMessage.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Icon, type SvgIcon } from '../Icon';\nimport { CloseIcon, ErrorIcon, InfoIcon, WarningIcon } from '../Icon/icons';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const icons: Record<GlobalMessagePurpose, SvgIcon> = {\n info: InfoIcon,\n danger: ErrorIcon,\n warning: WarningIcon,\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 * @default \"info\"\n */\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 = ({\n message,\n purpose = 'info',\n closable,\n onClose,\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: GlobalMessageProps) => {\n const [isClosed, setClosed] = useState(false);\n\n return !isClosed ? (\n <div\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.container,\n styles[`container--${purpose}`],\n typographyStyles['body-medium'],\n ),\n htmlProps,\n rest,\n )}\n >\n <div\n className={cn(styles.content, closable && styles['content--closable'])}\n >\n <Icon icon={icons[purpose]} className={styles.icon} />\n {children ?? <span>{message}</span>}\n </div>\n\n {closable && (\n <Button\n icon={CloseIcon}\n purpose=\"tertiary\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"small\"\n aria-label=\"Lukk melding\"\n />\n )}\n </div>\n ) : null;\n};\n\nGlobalMessage.displayName = 'GlobalMessage';\n",".container {\n border-bottom: 2px solid;\n display: flex;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n padding: 0 var(--dds-spacing-x1);\n}\n\n.container--info {\n border-color: var(--dds-color-border-info);\n background-color: var(--dds-color-surface-info-default);\n\n .icon {\n color: var(--dds-color-icon-on-info-default);\n }\n}\n\n.container--danger {\n border-color: var(--dds-color-border-danger);\n background-color: var(--dds-color-surface-danger-default);\n\n .icon {\n color: var(--dds-color-icon-on-danger-default);\n }\n}\n\n.container--warning {\n border-color: var(--dds-color-border-warning);\n background-color: var(--dds-color-surface-warning-default);\n\n .icon {\n color: var(--dds-color-icon-on-warning-default);\n }\n}\n\n.content {\n display: flex;\n align-items: center;\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1-5)\n var(--dds-spacing-x0-75) 0;\n}\n\n.content--closable {\n padding-right: var(--dds-spacing-x0-75);\n}\n\n.icon {\n margin-right: var(--dds-spacing-x0-75);\n}\n",".button {\n display: inline;\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './InlineButton.module.css';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type InlineButtonProps = ComponentPropsWithRef<'button'>;\n\nexport const InlineButton = ({ className, ...rest }: InlineButtonProps) => (\n <button\n className={cn(\n className,\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n focusStyles.focusable,\n typographyStyles.a,\n styles.button,\n )}\n {...rest}\n />\n);\n","import { useRef } from 'react';\n\nimport { InlineEditContextProvider } from './InlineEdit.context';\nimport { type InlineEditTextAreaProps } from './InlineEdit.types';\nimport { InlineTextArea } from './InlineTextArea';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditTextArea = ({\n onSetValue,\n emptiable,\n value,\n onFocus,\n onChange,\n onBlur,\n ref,\n ...rest\n}: InlineEditTextAreaProps) => {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, textareaRef);\n return (\n <InlineEditContextProvider\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 </InlineEditContextProvider>\n );\n};\n","import {\n type ChangeEvent,\n type FocusEvent,\n type FocusEventHandler,\n type ReactNode,\n type RefObject,\n createContext,\n useContext,\n useState,\n} from 'react';\n\nimport { type EditElement } from './InlineEdit.types';\nimport { useOnClickOutside, useOnKeyDown } from '../../hooks';\n\ninterface InlineEditContextType {\n onChange: (e: ChangeEvent<EditElement>) => void;\n onBlur: (e: FocusEvent<EditElement>) => void;\n onFocus: (e: FocusEvent<EditElement>) => void;\n isEditing: boolean;\n value: string | number | ReadonlyArray<string> | undefined;\n emptiable: boolean;\n}\n\ntype InlineEditContextProviderType = Partial<\n InlineEditContextType & {\n children: ReactNode;\n onSetValue?: (value: string) => void;\n inputRef: RefObject<HTMLElement | null>;\n }\n>;\n\nexport const InlineEditContext = createContext<Partial<InlineEditContextType>>(\n {},\n);\n\nexport const useInlineEditContext = () => useContext(InlineEditContext);\n\nexport const InlineEditContextProvider = (\n props: InlineEditContextProviderType,\n) => {\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?.(e);\n };\n\n const onFocusHandler: FocusEventHandler<EditElement> = (\n e: FocusEvent<EditElement>,\n ) => {\n setIsEditing(true);\n onFocus?.(e);\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?.(e.target.value);\n }\n setIsEditing(false);\n onBlur?.(e);\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 return (\n <InlineEditContext\n value={{\n onChange: onChangeHandler,\n onBlur: onBlurHandler,\n onFocus: onFocusHandler,\n isEditing,\n value: editingValue,\n emptiable,\n }}\n >\n {children}\n </InlineEditContext>\n );\n};\n\nInlineEditContextProvider.displayName = 'InlineEditContextProvider';\n","import { useId, useRef } from 'react';\n\nimport { useInlineEditContext } from './InlineEdit.context';\nimport styles from './InlineEdit.module.css';\nimport { type InlineTextAreaProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const InlineTextArea = ({\n id,\n error,\n errorMessage,\n width = '140px',\n 'aria-describedby': ariaDescribedby,\n hideIcon,\n ref,\n ...rest\n}: InlineTextAreaProps) => {\n const { onBlur, onChange, onFocus, isEditing, value, emptiable } =\n useInlineEditContext();\n\n const genereatedId = useId();\n const uniqueId = id ?? `${genereatedId}-InlineTextArea`;\n const hasErrorMessage = !!errorMessage;\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n const hasError = !!error;\n const hasErrorState = hasError || hasErrorMessage;\n\n const descId = derivativeIdGenerator(uniqueId, 'desc');\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n\n return (\n <Box position=\"relative\" width={width}>\n <div className={inputStyles['input-group']}>\n {!isEditing && !hideIcon && (\n <span\n onClick={() => {\n inputRef.current?.focus();\n }}\n className={styles['icon-wrapper']}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </span>\n )}\n <textarea\n {...rest}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n id={uniqueId}\n ref={combinedRef}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n className={cn(\n styles['inline-input'],\n !hideIcon && !isEditing && styles['inline-input--with-icon'],\n styles['inline-textarea'],\n inputStyles['input--stateful'],\n hasErrorState && inputStyles['input--stateful-danger'],\n typographyStyles['body-medium'],\n utilStyles.scrollbar,\n focusable,\n )}\n />\n </div>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </Box>\n );\n};\n\nInlineTextArea.displayName = 'InlineTextArea';\n",".inline-input {\n width: 100%;\n padding: var(--dds-spacing-x0-25);\n border-color: transparent;\n background-color: transparent;\n border-radius: var(--dds-border-radius-input);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover:enabled:-moz-read-write:not(:focus) {\n border-color: transparent;\n box-shadow: none;\n background-color: var(--dds-color-surface-hover-default);\n }\n\n &:hover:enabled:read-write:not(:focus) {\n border-color: transparent;\n box-shadow: none;\n background-color: var(--dds-color-surface-hover-default);\n }\n\n &:focus {\n background-color: var(--dds-color-surface-default);\n }\n}\n\n.inline-input--with-icon {\n padding-left: var(--dds-spacing-x2);\n}\n\n.inline-textarea {\n resize: vertical;\n}\n\n.icon-wrapper {\n position: absolute;\n top: var(--dds-spacing-x0-5);\n left: var(--dds-spacing-x0-5);\n z-index: var(--dds-zindex-absolute-element);\n\n &:hover {\n cursor: text;\n }\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 { useRef } from 'react';\n\nimport { InlineEditContextProvider } from './InlineEdit.context';\nimport { type InlineEditInputProps } from './InlineEdit.types';\nimport { InlineInput } from './InlineInput';\nimport { useCombinedRef } from '../../hooks';\n\nexport const InlineEditInput = ({\n onSetValue,\n emptiable,\n value,\n onFocus,\n onChange,\n onBlur,\n ref,\n ...rest\n}: InlineEditInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useCombinedRef(ref, inputRef);\n return (\n <InlineEditContextProvider\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 </InlineEditContextProvider>\n );\n};\n","import { useId, useRef } from 'react';\n\nimport { useInlineEditContext } from './InlineEdit.context';\nimport styles from './InlineEdit.module.css';\nimport { type InlineInputProps } from './InlineEdit.types';\nimport { inlineEditVisuallyHidden } from './InlineEdit.utils';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { Icon } from '../Icon';\nimport { EditIcon } from '../Icon/icons';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const InlineInput = ({\n id,\n error,\n errorMessage,\n width = '140px',\n 'aria-describedby': ariaDescribedby,\n hideIcon,\n ref,\n ...rest\n}: InlineInputProps) => {\n const { onBlur, onChange, onFocus, isEditing, value, emptiable } =\n useInlineEditContext();\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 <Box position=\"relative\" width={width}>\n <div className={inputStyles['input-group']}>\n {!isEditing && !hideIcon && (\n <span\n onClick={() => {\n inputRef.current?.focus();\n }}\n className={styles['icon-wrapper']}\n >\n <Icon icon={EditIcon} iconSize=\"small\" />\n </span>\n )}\n <input\n {...rest}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n id={uniqueId}\n ref={combinedRef}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasErrorMessage ? errorMessageId : undefined,\n descId,\n ariaDescribedby,\n ])}\n aria-invalid={hasErrorState}\n className={cn(\n styles['inline-input'],\n !hideIcon && !isEditing && styles['inline-input--with-icon'],\n typographyStyles['body-medium'],\n hasErrorState && inputStyles['input--stateful-danger'],\n focusable,\n )}\n />\n </div>\n {inlineEditVisuallyHidden(descId, emptiable)}\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </Box>\n );\n};\n\nInlineInput.displayName = 'InlineInput';\n","import { useState } from 'react';\n\nimport styles from './InternalHeader.module.css';\nimport { type InternalHeaderProps } from './InternalHeader.types';\nimport { NavigationItem } from './NavigationItem';\nimport { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { StylelessList } from '../helpers';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { MenuIcon, MoreVerticalIcon, PersonIcon } from '../Icon/icons';\nimport { Box } from '../layout';\nimport { applyResponsiveStyle } from '../layout/common/utils';\nimport { ShowHide } from '../layout/ShowHide';\nimport {\n OverflowMenu,\n OverflowMenuButton,\n type OverflowMenuButtonProps,\n OverflowMenuDivider,\n OverflowMenuGroup,\n OverflowMenuLink,\n type OverflowMenuLinkProps,\n OverflowMenuList,\n OverflowMenuSpan,\n} from '../OverflowMenu';\nimport { Typography } from '../Typography';\n\nexport const InternalHeader = (props: InternalHeaderProps) => {\n const {\n applicationDesc,\n applicationName,\n applicationHref,\n smallScreenBreakpoint,\n navItems,\n contextMenuItems,\n currentPageHref,\n user,\n onCurrentPageChange,\n id,\n className,\n htmlProps,\n ...rest\n } = props;\n\n const [currentPage, setCurrentPage] = useState<string | undefined>(\n currentPageHref,\n );\n\n const handleCurrentPageChange = (href: string) => {\n setCurrentPage(href);\n onCurrentPageChange?.();\n };\n\n const hasNavigationElements = !!navItems && navItems.length > 0;\n const hasContextMenuElements =\n !!contextMenuItems && contextMenuItems.length > 0;\n const hasSmallScreenBreakpoint = !!smallScreenBreakpoint;\n const hasNavInContextMenu = hasSmallScreenBreakpoint && hasNavigationElements;\n\n const navigation = hasNavigationElements ? (\n <nav aria-label=\"sidenavigasjon\">\n <ShowHide\n as={StylelessList}\n hideBelow={hasSmallScreenBreakpoint ? smallScreenBreakpoint : undefined}\n className={cn(styles['nav-list'])}\n >\n {navItems.map((item, index) => {\n const { href, ...rest } = item;\n const isCurrent = href === currentPage;\n return (\n <li key={index} className={styles['nav-list__item']}>\n <NavigationItem\n href={href}\n {...rest}\n isCurrent={isCurrent}\n onClick={() => handleCurrentPageChange(href)}\n />\n </li>\n );\n })}\n </ShowHide>\n </nav>\n ) : null;\n\n const hasContextMenu =\n hasContextMenuElements || !!user || hasNavInContextMenu;\n const hasContextMenuLargeScreen = hasContextMenuElements || !!user;\n\n return (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n gap={applyResponsiveStyle('x1.5', smallScreenBreakpoint, 'x1')}\n paddingInline={applyResponsiveStyle(\n 'x1.5',\n smallScreenBreakpoint,\n 'x1 x0.5',\n )}\n {...getBaseHTMLProps(\n id,\n cn(className, styles.bar, !!navigation && styles['bar--with-nav']),\n htmlProps,\n rest,\n )}\n >\n <Typography typographyType=\"headingSmall\" bold as=\"span\">\n {applicationHref ? (\n <a\n href={applicationHref}\n rel=\"noopener noreferrer\"\n className={cn(utilStyles['inherit-link-styling'], focusable)}\n >\n {applicationName}\n </a>\n ) : (\n applicationName\n )}\n </Typography>\n <Typography typographyType=\"bodyMedium\" as=\"span\">\n {applicationDesc}\n </Typography>\n {(hasContextMenu || navigation !== null) && (\n <div className={styles['bar-separator']} />\n )}\n {navigation}\n {hasContextMenu && (\n <ShowHide\n showBelow={\n !hasContextMenuLargeScreen && hasSmallScreenBreakpoint\n ? smallScreenBreakpoint\n : undefined\n }\n className={cn(styles['context-menu-group'])}\n >\n <OverflowMenuGroup>\n <Button\n icon={hasNavInContextMenu ? MenuIcon : MoreVerticalIcon}\n purpose=\"tertiary\"\n aria-label=\"åpne meny\"\n />\n <OverflowMenu className={styles['context-menu']}>\n {user && (\n <OverflowMenuList>\n {user.href ? (\n <OverflowMenuLink icon={PersonIcon} {...user} />\n ) : (\n <OverflowMenuSpan icon={PersonIcon} {...user} />\n )}\n </OverflowMenuList>\n )}\n {hasNavInContextMenu && (\n <ShowHide\n as=\"nav\"\n aria-label=\"sidenavigasjon\"\n showBelow={smallScreenBreakpoint}\n >\n <OverflowMenuList>\n {navItems.map(item => (\n <OverflowMenuLink {...item} />\n ))}\n </OverflowMenuList>\n </ShowHide>\n )}\n {hasNavInContextMenu && hasContextMenuElements && (\n <ShowHide\n as={OverflowMenuDivider}\n showBelow={smallScreenBreakpoint}\n />\n )}\n {hasContextMenuElements && (\n <OverflowMenuList>\n {contextMenuItems.map(item => {\n return item.href ? (\n <OverflowMenuLink {...(item as OverflowMenuLinkProps)} />\n ) : (\n <OverflowMenuButton\n {...(item as OverflowMenuButtonProps)}\n />\n );\n })}\n </OverflowMenuList>\n )}\n </OverflowMenu>\n </OverflowMenuGroup>\n </ShowHide>\n )}\n </Box>\n );\n};\n\nInternalHeader.displayName = 'InternalHeader';\n",".bar {\n background-color: var(--dds-color-surface-default);\n border-bottom: 1px solid var(--dds-color-border-default);\n min-height: 58px;\n .bar-separator {\n margin-left: auto;\n }\n}\n\n.bar--with-nav {\n .bar-separator {\n margin-left: 0;\n }\n\n .context-menu-group {\n margin-left: auto;\n }\n}\n\n.bar-separator {\n align-self: stretch;\n border-left: 1px solid var(--dds-color-border-default);\n}\n\n.nav-list {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n width: 100%;\n gap: var(--dds-spacing-x1-5);\n}\n\n.nav-list__item {\n display: flex;\n}\n\n.nav-list__item__link {\n text-decoration: none;\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1);\n border-radius: var(--dds-border-radius-surface);\n background-color: transparent;\n color: var(--dds-color-text-subtle);\n\n &:hover {\n background-color: var(--dds-color-surface-hover-subtle);\n color: var(--dds-color-text-default);\n }\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n color 0.2s,\n var(--dds-focus-transition);\n }\n}\n\n.nav-list__item__link--active {\n background-color: var(--dds-color-surface-selected-default);\n color: var(--dds-color-text-default);\n\n &:hover {\n background-color: var(--dds-color-surface-selected-default);\n color: var(--dds-color-text-default);\n }\n}\n\n.context-menu {\n max-height: calc(100vh - 110px);\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './InternalHeader.module.css';\nimport { cn } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type NavigationItemProps = {\n isCurrent?: boolean;\n} & ComponentPropsWithRef<'a'>;\n\nexport const NavigationItem = ({ isCurrent, ...rest }: NavigationItemProps) => (\n <a\n {...rest}\n aria-current={isCurrent ? 'page' : undefined}\n className={cn(\n styles['nav-list__item__link'],\n isCurrent && styles['nav-list__item__link--active'],\n typographyStyles['body-medium'],\n focusable,\n )}\n />\n);\n",".list {\n color: var(--dds-color-text-body);\n margin: var(--dds-spacing-x1) 0;\n ul,\n ol {\n margin: 0;\n }\n}\n\n.list--inherit {\n font: inherit;\n}\n\n.list--unordered {\n --dds-list-ul-li-padding-left: 1em + var(--dds-spacing-x0-25);\n list-style: none;\n padding-left: calc(\n var(--dds-spacing-x2) - (var(--dds-list-ul-li-padding-left))\n );\n\n li {\n position: relative;\n\n padding-left: calc(var(--dds-list-ul-li-padding-left));\n\n &:before {\n content: '';\n display: inline-block;\n height: 1em;\n width: 1em;\n position: absolute;\n top: calc((2.5em / 2) - 0.5em);\n left: 0;\n background: var(--dds-color-text-body);\n -webkit-mask-size: 100%;\n mask-size: 100%;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-image: url('./bullets/jordskifterett_bullet1.svg');\n mask-image: url('./bullets/jordskifterett_bullet1.svg');\n }\n ul > li:before {\n -webkit-mask-image: url('./bullets/lagmannsrett_bullet2.svg');\n mask-image: url('./bullets/lagmannsrett_bullet2.svg');\n }\n ul > li > ul > li:before {\n -webkit-mask-image: url('./bullets/tingrett_bullet3.svg');\n mask-image: url('./bullets/tingrett_bullet3.svg');\n }\n }\n}\n\n.list--ordered {\n padding-left: var(--dds-spacing-x2);\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.li {\n line-height: var(--dds-font-lineheight-list);\n}\n","import { type ElementType } from 'react';\n\nimport styles from './List.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { type TypographyBodyType, getTypographyCn } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\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 * @default \"unordered\"\n */\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 * @default \"inherit\"\n */\n typographyType?: ListTypographyType;\n }\n>;\n\nexport const List = ({\n listType = 'unordered',\n typographyType = 'inherit',\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: ListProps) => {\n const List: ElementType = listType === 'ordered' ? 'ol' : 'ul';\n\n return (\n <List\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n className={cn(\n styles.list,\n styles[`list--${listType}`],\n typographyType === 'inherit'\n ? styles['list--inherit']\n : typographyStyles[getTypographyCn(typographyType)],\n )}\n >\n {children}\n </List>\n );\n};\n\nList.displayName = 'List';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport styles from './List.module.css';\nimport { cn } from '../../utils';\n\nexport type ListItemProps = ComponentPropsWithRef<'li'>;\n\nexport const ListItem = ({ className, ...rest }: ListItemProps) => (\n <li {...rest} className={cn(className, styles.li)} />\n);\n\nListItem.displayName = 'ListItem';\n","import { useState } from 'react';\n\nimport styles from './LocalMessage.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Icon, type SvgIcon } from '../Icon';\nimport {\n CheckCircledIcon,\n CloseIcon,\n ErrorIcon,\n InfoIcon,\n TipIcon,\n WarningIcon,\n} from '../Icon/icons';\nimport { Box, type ResponsiveProps } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nconst icons: Record<LocalMessagePurpose, SvgIcon> = {\n info: InfoIcon,\n danger: ErrorIcon,\n warning: WarningIcon,\n success: CheckCircledIcon,\n tips: TipIcon,\n};\n\nexport type LocalMessagePurpose =\n | 'info'\n | 'warning'\n | 'danger'\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 * @default \"info\"\n */\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 * @default \"horisontal\"\n */\n layout?: LocalMessageLayout;\n } & Pick<ResponsiveProps, 'width'>\n>;\n\nexport const LocalMessage = ({\n message,\n purpose = 'info',\n closable,\n onClose,\n width,\n layout = 'horisontal',\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: LocalMessageProps) => {\n const [isClosed, setClosed] = useState(false);\n\n if (isClosed) {\n return <></>;\n }\n\n return (\n <Box\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n typographyStyles['body-medium'],\n styles.container,\n styles[`container--${layout}`],\n closable && styles[`container--${layout}--closable`],\n styles[`container--${purpose}`],\n ),\n htmlProps,\n rest,\n )}\n width={width}\n display=\"grid\"\n padding=\"x0.75 x0.75 x0.75 x0.5\"\n gap=\"x0.5\"\n >\n <Icon\n icon={icons[purpose]}\n className={cn(styles.icon, styles.container__icon)}\n />\n <div className={styles.container__text}>\n {children ?? <span>{message}</span>}\n </div>\n {closable && (\n <Button\n icon={CloseIcon}\n purpose=\"tertiary\"\n onClick={() => {\n setClosed(true);\n onClose && onClose();\n }}\n size=\"xsmall\"\n aria-label=\"Lukk melding\"\n className={styles.container__button}\n />\n )}\n </Box>\n );\n};\n\nLocalMessage.displayName = 'LocalMessage';\n",".container {\n border: 1px solid;\n box-sizing: border-box;\n border-radius: var(--dds-border-radius-surface);\n}\n\n.container--info {\n border-color: var(--dds-color-border-info);\n background-color: var(--dds-color-surface-info-default);\n\n .icon {\n color: var(--dds-color-icon-on-info-default);\n }\n}\n.container--warning {\n border-color: var(--dds-color-border-warning);\n background-color: var(--dds-color-surface-warning-default);\n\n .icon {\n color: var(--dds-color-icon-on-warning-default);\n }\n}\n.container--danger {\n border-color: var(--dds-color-border-danger);\n background-color: var(--dds-color-surface-danger-default);\n\n .icon {\n color: var(--dds-color-icon-on-danger-default);\n }\n}\n.container--success {\n border-color: var(--dds-color-border-success);\n background-color: var(--dds-color-surface-success-default);\n\n .icon {\n color: var(--dds-color-icon-on-success-default);\n }\n}\n\n.container--tips {\n border-color: var(--dds-color-border-info);\n background-color: var(--dds-color-surface-info-default);\n\n .icon {\n color: var(--dds-color-icon-on-info-default);\n }\n}\n\n.container--horisontal {\n grid-template-areas: 'icon text';\n grid-template-columns: min-content 1fr;\n}\n\n.container--horisontal--closable {\n grid-template-areas: 'icon text closeButton';\n grid-template-columns: min-content 1fr min-content;\n}\n\n.container--vertical {\n grid-template-areas: 'icon icon' 'text text';\n grid-template-columns: 1fr min-content;\n}\n\n.container--vertical--closable {\n grid-template-areas: 'icon closeButton' 'text text';\n grid-template-columns: 1fr;\n}\n\n.container__text {\n grid-area: text;\n}\n\n.container__icon {\n grid-area: icon;\n}\n\n.container__button {\n grid-area: closeButton;\n}\n","import {\n type ReactNode,\n type RefObject,\n useContext,\n useEffect,\n useId,\n useRef,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport styles from './Modal.module.css';\nimport {\n useCombinedRef,\n useFocusTrap,\n useMountTransition,\n useOnKeyDown,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport {\n Backdrop,\n handleElementWithBackdropMount,\n handleElementWithBackdropUnmount,\n} from '../helpers';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { CloseIcon } from '../Icon/icons';\nimport { Box, HStack, Paper } from '../layout';\nimport { ThemeContext } from '../ThemeProvider';\nimport { Heading } from '../Typography';\n\nexport type ModalProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Spesifiserer om `<Modal>` skal åpnes. */\n isOpen?: boolean;\n /**Funksjon kjørt ved lukking; gjør at `<Modal>` blir lukkbar via: Esc-tast, klikk utenfor, klikk på dedikert lukkeknapp. */\n onClose?: () => void;\n /**Fordeler DOM node for `<Modal>` via React portal. Brukes med f.eks `document.getElementById(\"id\")` eller `ref` (skaper ikke ny DOM node).\n * @default themeProviderRef\n */\n parentElement?: HTMLElement;\n /**Header i `<Modal>`. Returnerer default `<Heading>` ved `string`. Setter også `aria-labelledby`. */\n header?: string | ReactNode;\n /**Ref som brukes til returnering av fokus. */\n triggerRef?: RefObject<HTMLElement | null>;\n /**Ref som skal motta fokus når `<Modal>` åpnes. Hvis utelatt blir `<Modal>` fokusert. */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /** Gjør at innholdet kan scrolles */\n scrollable?: boolean;\n }\n>;\n\nexport const Modal = ({\n isOpen = false,\n parentElement,\n children,\n header,\n onClose,\n id,\n triggerRef,\n initialFocusRef,\n scrollable,\n className,\n htmlProps,\n ref,\n ...rest\n}: ModalProps) => {\n const generatedId = useId();\n const modalId = id ?? `${generatedId}-modal`;\n const headerId = `${modalId}-header`;\n\n const modalRef = useFocusTrap<HTMLDivElement>(isOpen, initialFocusRef);\n const combinedRef = useCombinedRef(ref, modalRef);\n const handleClose = () => {\n if (onClose && isOpen) {\n triggerRef?.current?.focus();\n onClose();\n }\n };\n\n const themeContext = useContext(ThemeContext);\n\n if (!themeContext) {\n throw new Error('Modal must be used within a ThemeProvider');\n }\n\n const portalTarget = parentElement ?? themeContext?.el;\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 const backdropRef = useRef<HTMLDivElement>(null);\n const onBackdropClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.target === backdropRef.current && isOpen) {\n handleClose();\n }\n };\n\n useOnKeyDown(['Escape', 'Esc'], () => handleClose());\n\n const hasTransitionedIn = useMountTransition(isOpen, 200);\n\n return (isOpen || hasTransitionedIn) && portalTarget\n ? createPortal(\n <Backdrop\n zIndex=\"modal\"\n isMounted={isOpen && hasTransitionedIn}\n ref={backdropRef}\n onClick={onBackdropClick}\n >\n <Paper\n display=\"flex\"\n flexDirection=\"column\"\n minWidth=\"200px\"\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.container,\n focusable,\n scrollable && styles['container-scrollable'],\n utilStyles.scrollbar,\n ),\n htmlProps,\n rest,\n )}\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 <HStack\n paddingBlock=\"0 x0.75\"\n position=\"sticky\"\n top=\"0\"\n left=\"0\"\n width=\"100%\"\n className={styles['header-container']}\n >\n {!!header && (\n <div id={headerId}>\n {typeof header === 'string' ? (\n <Heading level={2} typographyType=\"headingLarge\">\n {header}\n </Heading>\n ) : (\n header\n )}\n </div>\n )}\n {onClose && (\n <Button\n size=\"small\"\n purpose=\"tertiary\"\n icon={CloseIcon}\n onClick={handleClose}\n aria-label=\"Lukk dialog\"\n className={styles['close-button']}\n />\n )}\n </HStack>\n <Box display=\"grid\" gap=\"x1\">\n {children}\n </Box>\n </Paper>\n </Backdrop>,\n portalTarget,\n )\n : null;\n};\n\nModal.displayName = 'Modal';\n",".container {\n /* Justering på spacing slik at fokusmarkering osv. ikke skjules ved overflow */\n --dds-modal-content-padding: var(--dds-spacing-x0-25);\n --dds-modal-container-padding: var(--dds-spacing-x1)\n calc(var(--dds-spacing-x1) - var(--dds-modal-content-padding))\n calc(var(--dds-spacing-x1-5) - var(--dds-modal-content-padding))\n calc(var(--dds-spacing-x1-5) - var(--dds-modal-content-padding));\n\n padding: var(--dds-modal-container-padding);\n}\n\n.container-scrollable {\n max-height: calc(100vh - var(--dds-spacing-x1));\n overflow: auto;\n}\n\n.header-container {\n background-color: var(--dds-color-surface-default);\n padding-bottom: calc(\n var(--dds-spacing-x0-75) - var(--dds-modal-content-padding)\n );\n z-index: 1;\n}\n\n.close-button {\n margin-left: auto;\n margin-top: calc(-1 * var(--dds-spacing-x0-125));\n}\n\n.content {\n padding-right: calc(var(--dds-spacing-x1) - var(--dds-modal-content-padding));\n}\n\n/* Spacing slik at fokusmarkering osv. ikke skjules ved overflow */\n.body {\n padding: var(--dds-modal-content-padding);\n}\n","import { type Property } from 'csstype';\n\nimport styles from './Modal.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\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. Kan resultere i scrolling. */\n height?: Property.Height;\n }\n>;\n\nexport const ModalBody = ({\n children,\n id,\n className,\n scrollable,\n htmlProps,\n height,\n ...rest\n}: ModalBodyProps) => {\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n utilStyles.scrollbar,\n scrollable && utilStyles['scrollable-y'],\n styles.body,\n ),\n htmlProps,\n rest,\n )}\n style={{ ...htmlProps?.style, height: height }}\n >\n {children}\n </div>\n );\n};\n\nModalBody.displayName = 'ModalBody';\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { Box } from '../layout';\n\nexport type ModalActionsProps = ComponentPropsWithRef<'div'>;\n\nexport const ModalActions = (props: ModalActionsProps) => (\n <Box display=\"flex\" flexWrap=\"wrap\" gap=\"x1\" {...props} />\n);\n\nModalActions.displayName = 'ModalActions';\n","import { type HTMLAttributes, useState } from 'react';\n\nimport styles from './Pagination.module.css';\nimport { PaginationGenerator } from './paginationGenerator';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport {\n ChevronFirstIcon,\n ChevronLastIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from '../Icon/icons';\nimport { Box, type Breakpoint, ShowHide } from '../layout';\nimport { applyResponsiveStyle } from '../layout/common/utils';\nimport { Select } from '../Select';\nimport { Paragraph } from '../Typography';\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 * @default 10\n */\n defaultItemsPerPage?: number;\n /**Den aktive siden ved innlastning av komponenten.\n * @default 1\n */\n defaultActivePage?: number;\n /**Spesifiserer om selve pagineringen skal vises.\n * @default true\n */\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 * @default [\n { label: '10', value: 10 },\n { label: '25', value: 25 },\n { label: '50', value: 50 },\n { label: 'Alle', value: itemsAmount },\n ]\n */\n selectOptions?: Array<PaginationOption>;\n /**Brukes til å hente side og eventuelt annen logikk ved endring av side. */\n onChange?: (\n event: React.MouseEvent<HTMLButtonElement, MouseEvent>,\n page: number,\n ) => void;\n /**Brukes til å hente `selectedOption` og eventuelt kjøre annen logikk når `withSelect=true` ved endring av alternativ. */\n onSelectOptionChange?: (option: PaginationOption | null) => void;\n /**Spesifiserer ved hvilket brekkpunkt og nedover versjonen for små skjermer skal vises; den viser færre sideknapper og stacker subkomponentene. */\n smallScreenBreakpoint?: Breakpoint;\n },\n Omit<HTMLAttributes<HTMLElement>, 'onChange'>\n>;\n\nexport const Pagination = ({\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 smallScreenBreakpoint,\n onChange,\n onSelectOptionChange,\n id,\n className,\n htmlProps,\n ref,\n ...rest\n}: PaginationProps) => {\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 <li key={`pagination-item-${i}`} className={styles.list__item}>\n {item !== 'truncator' && typeof item === 'number' ? (\n <Button\n purpose={isActive ? 'primary' : 'secondary'}\n size=\"small\"\n onClick={event => {\n onPageChange(event, item);\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 className={styles['truncation-icon']}\n />\n )}\n </li>\n );\n })\n : undefined;\n\n const previousPageButton = (\n <Button\n purpose=\"secondary\"\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 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 isOnFirstPage = activePage === 1;\n const isOnLastPage = activePage === pagesLength;\n\n const navigation = withPagination ? (\n <Box\n as=\"nav\"\n ref={ref}\n aria-label=\"paginering\"\n display=\"flex\"\n alignItems=\"center\"\n {...(!withSelect &&\n !withCounter && {\n ...getBaseHTMLProps(id, className, htmlProps, rest),\n })}\n >\n <ShowHide\n as=\"ol\"\n hideBelow={smallScreenBreakpoint}\n className={styles.list}\n >\n <li\n className={cn(\n styles.list__item,\n isOnFirstPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnFirstPage}\n >\n {previousPageButton}\n </li>\n {listItems}\n <li\n className={cn(\n styles.list__item,\n isOnLastPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnLastPage}\n >\n {nextPageButton}\n </li>\n </ShowHide>\n {!!smallScreenBreakpoint && (\n <ShowHide\n as=\"ol\"\n showBelow={smallScreenBreakpoint}\n className={styles.list}\n >\n <li\n className={cn(\n styles.list__item,\n isOnFirstPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnFirstPage}\n >\n <Button\n purpose=\"secondary\"\n size=\"small\"\n icon={ChevronFirstIcon}\n onClick={event => {\n onPageChange(event, 1);\n }}\n aria-label=\"Gå til første siden\"\n />\n </li>\n <li\n className={cn(\n styles.list__item,\n isOnFirstPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnFirstPage}\n >\n {previousPageButton}\n </li>\n <li className={styles.list__item}>\n <Button\n size=\"small\"\n onClick={event => {\n onPageChange(event, activePage);\n }}\n >\n {activePage}\n </Button>\n </li>\n <li\n className={cn(\n styles.list__item,\n isOnLastPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnLastPage}\n >\n {nextPageButton}\n </li>\n <li\n className={cn(\n styles.list__item,\n isOnLastPage && styles['list__item--hidden'],\n )}\n aria-hidden={isOnLastPage}\n >\n <Button\n purpose=\"secondary\"\n size=\"small\"\n icon={ChevronLastIcon}\n onClick={event => {\n onPageChange(event, pagesLength);\n }}\n aria-label=\"Gå til siste siden\"\n />\n </li>\n </ShowHide>\n )}\n </Box>\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 return !withCounter && !withSelect ? (\n navigation\n ) : (\n <Box\n display=\"flex\"\n gap=\"x0.75\"\n justifyContent=\"space-between\"\n flexWrap=\"wrap\"\n flexDirection={applyResponsiveStyle('column', smallScreenBreakpoint)}\n alignItems={applyResponsiveStyle('center', smallScreenBreakpoint)}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <div className={styles.indicators}>\n {withSelect && (\n <Select\n options={selectOptions}\n isSearchable={false}\n width=\"74px\"\n defaultValue={{\n label: itemsPerPage.toString(),\n value: itemsPerPage,\n }}\n isClearable={false}\n onChange={handleSelectChange}\n componentSize=\"small\"\n aria-label=\"Antall elementer per side\"\n />\n )}\n {withCounter && (\n <Paragraph>\n Viser {activePageFirstItem}-{activePageLastItem} av {itemsAmount}\n </Paragraph>\n )}\n </div>\n {navigation}\n </Box>\n );\n};\n\nPagination.displayName = 'Pagination';\n",".list {\n display: grid;\n grid-auto-flow: column;\n margin: 0;\n padding: 0;\n gap: var(--dds-spacing-x0-75);\n}\n\n.list__item {\n display: inline-grid;\n align-content: center;\n}\n\n.list__item--hidden {\n visibility: hidden;\n}\n\n.indicators {\n display: grid;\n grid-auto-flow: column;\n align-items: center;\n gap: var(--dds-spacing-x0-75);\n}\n\n.truncation-icon {\n color: var(--dds-color-icon-medium);\n min-width: calc(1ch + (2 * var(--dds-spacing-x0-75)));\n}\n","const arrayRange = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport function PaginationGenerator(\n pagesAmount: number,\n activePage: number,\n): Array<string | number> {\n const siblingsCount = 1;\n const maxPagesShown = 7;\n const pagesBeforeTruncator = 5;\n const truncator = 'truncator';\n\n let pageRange: Array<string | number>;\n\n if (pagesAmount > 4) {\n const middleStartPage = Math.max(\n 1,\n activePage < pagesBeforeTruncator || pagesAmount <= maxPagesShown\n ? 1\n : activePage + siblingsCount + 1 >= pagesAmount\n ? pagesAmount - 4 // - 4 to fit total columns /\n : activePage > 4 && pagesAmount > maxPagesShown\n ? activePage - siblingsCount\n : 1,\n );\n\n const middleEndOffset =\n activePage < pagesBeforeTruncator && pagesAmount > maxPagesShown\n ? pagesBeforeTruncator\n : activePage < pagesBeforeTruncator && pagesAmount <= maxPagesShown\n ? pagesAmount\n : activePage + siblingsCount + 1 < pagesAmount - 1\n ? activePage + siblingsCount\n : activePage + siblingsCount + 1 === pagesAmount - 1\n ? pagesAmount\n : pagesAmount;\n\n const middleEndPage = Math.min(pagesAmount, middleEndOffset);\n pageRange = arrayRange(middleStartPage, middleEndPage);\n const truncatedLeft = middleStartPage > 2 && pagesAmount > maxPagesShown;\n const truncatedRight =\n pagesAmount - middleEndPage > 1 && pagesAmount > maxPagesShown;\n\n if (truncatedLeft && truncatedRight) {\n pageRange = [1, truncator, ...pageRange, truncator, pagesAmount];\n } else if (truncatedLeft && !truncatedRight) {\n pageRange = [1, truncator, ...pageRange];\n } else if (!truncatedLeft && truncatedRight) {\n pageRange = [...pageRange, truncator, pagesAmount];\n }\n return [...pageRange];\n }\n\n return arrayRange(1, pagesAmount);\n}\n","import {\n type HTMLAttributes,\n type JSX,\n type Ref,\n useContext,\n useId,\n} from 'react';\nimport {\n type GroupBase,\n type OptionProps,\n default as ReactSelect,\n type Props as ReactSelectProps,\n type SelectInstance,\n type SingleValueProps,\n} from 'react-select';\n\nimport styles from './Select.module.css';\nimport { getCustomStyles, prefix } from './Select.styles';\nimport {\n CustomOption,\n CustomSingleValue,\n DDSClearIndicator,\n DDSControl,\n DDSDropdownIndicator,\n DDSInput,\n DDSMultiValueRemove,\n DDSNoOptionsMessage,\n DDSOption,\n} from './SelectComponents';\nimport { type WithRequiredIf } from '../../types';\nimport {\n cn,\n derivativeIdGenerator,\n searchFilter,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { readOnlyKeyDownHandler } from '../../utils/readonlyEventHandlers';\nimport { type InputSize, getInputWidth } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { type SvgIcon } from '../Icon/utils';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box, type ResponsiveProps } from '../layout';\nimport { ThemeContext } from '../ThemeProvider';\nimport { Label } from '../Typography';\n\nexport interface SelectOption<TValue = unknown> {\n label: string | number;\n value: TValue;\n}\n\ntype WrappedReactSelectProps<\n Option,\n IsMulti extends boolean,\n Group extends GroupBase<Option>,\n> = WithRequiredIf<\n Option extends SelectOption ? false : true,\n ReactSelectProps<Option, IsMulti, Group>,\n 'getOptionLabel' | 'getOptionValue'\n>;\n\nexport type SelectProps<Option = unknown, IsMulti extends boolean = false> = {\n /**Ledetekst for nedtrekkslisten. */\n label?: string;\n /**Størrelsen på komponenten.\n * @default \"medium\"\n */\n componentSize?: InputSize;\n /**Ikonet som vises i komponenten. */\n icon?: SvgIcon;\n /**Nedtrekkslisten blir `readonly` og får readOnly styling. */\n readOnly?: boolean;\n /**Meldingen som vises ved valideringsfeil. */\n errorMessage?: string;\n /**Hjelpetekst. */\n tip?: string;\n /** CSS klassenavn. */\n className?: string;\n /** Inline styling. */\n style?: React.CSSProperties;\n /** Custom element som vises for det valgte elementet. */\n customOptionElement?: (\n props: OptionProps<Option, IsMulti, GroupBase<Option>>,\n ) => JSX.Element;\n /** Custom element som vises i listen over alternativer. */\n customSingleValueElement?: (\n props: SingleValueProps<Option, IsMulti, GroupBase<Option>>,\n ) => JSX.Element;\n /** Testid. Legges på control-div med suffiks \"control\". */\n 'data-testid'?: string;\n /**Ref til komponenten. */\n ref?: SelectForwardRefType<Option, IsMulti>;\n} & Pick<HTMLAttributes<HTMLInputElement>, 'aria-required'> &\n Pick<ResponsiveProps, 'width'> &\n WrappedReactSelectProps<Option, IsMulti, GroupBase<Option>>;\n\nexport type SelectForwardRefType<Option, IsMulti extends boolean> = Ref<\n SelectInstance<Option, IsMulti, GroupBase<Option>>\n>;\n\nexport function Select<Option = unknown, IsMulti extends boolean = false>({\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,\n closeMenuOnSelect,\n className,\n style,\n isDisabled,\n isClearable = true,\n placeholder,\n menuPortalTarget,\n customOptionElement,\n customSingleValueElement,\n 'data-testid': dataTestId,\n onKeyDown,\n openMenuOnClick,\n ref,\n ...rest\n}: SelectProps<Option, IsMulti>) {\n const themeContext = useContext(ThemeContext);\n\n if (!themeContext) {\n throw new Error('Select must be used within a ThemeProvider');\n }\n\n const portalTarget = menuPortalTarget ?? themeContext?.el;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-select`;\n\n const singleValueId = !isMulti ? `${uniqueId}-singleValue` : undefined;\n const hasLabel = !!label;\n const hasErrorMessage = !!errorMessage;\n const hasIcon = !!icon;\n const showRequiredStyling = !!(required || ariaRequired);\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const inputWidth = getInputWidth(\n width,\n componentSize === 'xsmall' && 'var(--dds-input-default-width-xsmall)',\n );\n\n const reactSelectProps: ReactSelectProps<\n Option,\n IsMulti,\n GroupBase<Option>\n > = {\n options,\n value,\n defaultValue,\n isDisabled: !!isDisabled,\n isClearable,\n placeholder: placeholder ? placeholder : '',\n closeMenuOnSelect: closeMenuOnSelect\n ? closeMenuOnSelect\n : isMulti\n ? false\n : true,\n isMulti,\n inputId: uniqueId,\n name: uniqueId,\n menuPortalTarget: portalTarget,\n classNamePrefix: prefix,\n styles: getCustomStyles<Option>(\n componentSize,\n hasErrorMessage,\n hasIcon,\n readOnly,\n ),\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 {\n ...props,\n readOnly,\n 'aria-required': ariaRequired,\n },\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 =>\n DDSControl(props, componentSize, readOnly, icon, dataTestId),\n },\n 'aria-invalid': hasErrorMessage ? true : undefined,\n required,\n onKeyDown: readOnlyKeyDownHandler('select', readOnly, onKeyDown),\n openMenuOnClick: readOnly\n ? false\n : openMenuOnClick\n ? openMenuOnClick\n : undefined,\n ...rest,\n };\n\n return (\n <Box\n width={inputWidth}\n position=\"relative\"\n margin=\"0\"\n className={cn(\n className,\n isDisabled && styles['container--disabled'],\n readOnly && styles['container--readonly'],\n )}\n style={style}\n >\n {hasLabel && (\n <Label\n htmlFor={uniqueId}\n showRequiredStyling={showRequiredStyling}\n className={inputStyles.label}\n readOnly={readOnly}\n >\n {label}\n </Label>\n )}\n <ReactSelect {...reactSelectProps} ref={ref} />\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Box>\n );\n}\n\nSelect.displayName = 'Select';\n",".container--disabled {\n cursor: not-allowed;\n}\n\n.container--readonly {\n cursor: default;\n}\n\n.inner-single-value {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n box-sizing: border-box;\n max-width: 100%;\n}\n\n.icon--medium {\n left: var(--dds-spacing-x0-75);\n}\n\n.icon--small {\n left: var(--dds-spacing-x0-75);\n}\n\n.icon--xsmall {\n left: var(--dds-spacing-x0-5);\n}\n\n.control {\n &:hover:not(.control--readonly) .dropdown-indicator,\n &:focus-within .dropdown-indicator {\n color: var(--dds-color-icon-action-hover);\n }\n}\n\n.control--readonly .dropdown-indicator {\n pointer-events: none;\n}\n\n.control--disabled .dropdown-indicator {\n pointer-events: none;\n}\n","import { type GroupBase, type StylesConfig } from 'react-select';\n\nimport {\n type InputSize,\n focusVisible,\n focusVisibleTransitionValue,\n} from '../helpers';\nimport { scrollbarStyling } from '../helpers';\n\ntype SelectTypography = Record<\n InputSize,\n { font: string; letterSpacing: string; fontStyle?: string }\n>;\n\nconst optionTypography: SelectTypography = {\n medium: {\n font: 'var(--dds-font-body-medium)',\n letterSpacing: 'var(--dds-font-body-medium-letter-spacing)',\n },\n small: {\n font: 'var(--dds-font-body-small)',\n letterSpacing: 'var(--dds-font-body-small-letter-spacing)',\n },\n xsmall: {\n font: 'var(--dds-font-body-xsmall)',\n letterSpacing: 'var(--dds-font-body-xsmall-letter-spacing)',\n },\n};\n\nconst multiValueLabelTypography: SelectTypography = {\n medium: {\n font: 'var(--dds-font-body-small)',\n letterSpacing: 'var(--dds-font-body-small-letter-spacing)',\n },\n small: {\n font: 'var(--dds-font-body-small)',\n letterSpacing: 'var(--dds-font-body-small-letter-spacing)',\n },\n xsmall: {\n font: 'var(--dds-font-body-xsmall)',\n letterSpacing: 'var(--dds-font-body-xsmall-letter-spacing)',\n },\n};\n\nconst groupHeadingTypography = {\n font: 'var(--dds-font-body-xsmall)',\n letterSpacing: 'var(--dds-font-body-xsmall-letter-spacing)',\n};\n\nconst typography = {\n option: optionTypography,\n multiValueLabel: multiValueLabelTypography,\n groupHeading: groupHeadingTypography,\n};\n\nexport const prefix = 'dds-select';\n\nconst control = {\n medium: {\n base: {\n paddingBlock: 'var(--dds-spacing-x0-75)',\n paddingLeft: 'var(--dds-spacing-x0-75)',\n ...optionTypography.medium,\n },\n hasIcon: {\n paddingLeft:\n 'calc(var(--dds-spacing-x0-75) + var(--dds-icon-size-medium) + var(--dds-spacing-x0-5))',\n },\n },\n small: {\n base: {\n paddingBlock: 'var(--dds-spacing-x0-5)',\n paddingLeft: 'var(--dds-spacing-x0-75)',\n ...optionTypography.small,\n },\n hasIcon: {\n paddingLeft:\n 'calc(var(--dds-spacing-x0-75) + var(--dds-icon-size-medium) + var(--dds-spacing-x0-5))',\n },\n },\n xsmall: {\n base: {\n paddingBlock: 'var(--dds-spacing-x0-25)',\n paddingLeft: 'var(--dds-spacing-x0-5)',\n ...optionTypography.xsmall,\n },\n hasIcon: {\n paddingLeft:\n 'calc(var(--dds-spacing-x0-5) + var(--dds-icon-size-small) + var(--dds-spacing-x0-5))',\n },\n },\n};\n\nexport const getCustomStyles = <TOption>(\n size: InputSize,\n hasError: boolean,\n hasIcon: boolean,\n isReadOnly?: boolean,\n): Partial<StylesConfig<TOption, boolean, GroupBase<TOption>>> => ({\n control: (provided, state) => ({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n cursor: 'pointer',\n borderRadius: 'var(--dds-border-radius-input)',\n border: '1px solid',\n borderColor: 'var(--dds-color-border-default)',\n backgroundColor: 'var(--dds-color-surface-default)',\n transition: `box-shadow 0.2s, border-color 0.2s, ${focusVisibleTransitionValue}`,\n paddingRight: 'var(--dds-spacing-x0-5)',\n ...control[size].base,\n ...(hasIcon && control[size].hasIcon),\n '&:hover': {\n ...(!isReadOnly && {\n borderColor: 'var(--dds-color-border-action-hover)',\n boxShadow: '0 0 0 1px var(--dds-color-border-action-hover)',\n }),\n },\n ...(hasError && {\n borderColor: 'var(--dds-color-border-danger)',\n boxShadow: '0 0 0 1px var(--dds-color-border-danger)',\n '&:hover': {\n borderColor: 'var(--dds-color-border-danger)',\n boxShadow: '0 0 0 1px var(--dds-color-border-danger)',\n },\n }),\n '&:focus-within': {\n ...focusVisible,\n },\n ...(state.selectProps.isDisabled && {\n borderColor: 'var(--dds-color-border-subtle)',\n backgroundColor: 'var(--dds-color-surface-field-disabled)',\n color: 'var(--dds-color-text-subtle)',\n pointerEvents: 'none',\n }),\n ...(isReadOnly && {\n borderColor: 'var(--dds-color-border-default)',\n backgroundColor: 'var(--dds-color-surface-field-disabled)',\n color: 'var(--dds-color-text-medium)',\n boxShadow: 'none',\n cursor: 'default',\n }),\n }),\n placeholder: provided => ({\n ...provided,\n color: 'var(--dds-color-text-subtle)',\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: 'var(--dds-color-icon-default)',\n ...(state.selectProps.isDisabled && {\n color: 'var(--dds-color-icon-subtle)',\n }),\n ...(isReadOnly && { color: 'var(--dds-color-icon-subtle)' }),\n }),\n\n valueContainer: (provided, state) => ({\n ...provided,\n ...(state.selectProps.isMulti && {\n gap: 'var(--dds-spacing-x0-25)',\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: 'var(--dds-border-radius-surface)',\n backgroundColor: 'var(--dds-color-surface-medium)',\n }),\n multiValueLabel: (provided, state) => ({\n ...provided,\n padding: '0 var(--dds-spacing-x0-25)',\n ...typography.multiValueLabel[size],\n color: 'var(--dds-color-text-default)',\n ...(state.selectProps.isDisabled && {\n color: 'var(--dds-color-text-subtle)',\n }),\n ...(isReadOnly && {\n color: 'var(--dds-color-text-medium)',\n }),\n }),\n multiValueRemove: (provided, state) =>\n state.selectProps.isDisabled || isReadOnly\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: 'var(--dds-color-icon-default)',\n\n padding: '0 var(--dds-spacing-x0-25)',\n },\n menu: () => ({\n boxSizing: 'border-box',\n position: 'absolute',\n width: '100%',\n boxShadow: 'var(--dds-shadow-2)',\n zIndex: 100,\n transition: '0.2s',\n border: '1px solid var(--dds-color-border-default)',\n backgroundColor: 'var(--dds-color-surface-default)',\n borderRadius: 'var(--dds-border-radius-surface)',\n marginBlock: 'var(--dds-spacing-x0-25)',\n }),\n menuPortal: provided => ({\n ...provided,\n zIndex: 99999,\n }),\n group: () => ({\n boxSizing: 'border-box',\n }),\n groupHeading: () => ({\n ...typography.groupHeading,\n color: 'var(--dds-color-text-medium)',\n paddingInline: 'var(--dds-spacing-x0-75)',\n paddingBlock: 'var(--dds-spacing-x0-5) var(--dds-spacing-x0-125)',\n }),\n menuList: () => ({\n maxHeight: '300px',\n overflowY: 'auto',\n position: 'relative',\n boxSizing: 'border-box',\n ...scrollbarStyling,\n }),\n option: (provided, state) => ({\n ...provided,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--dds-spacing-x0-5)',\n padding: 'var(--dds-spacing-x0-75)',\n backgroundColor: 'var(--dds-color-surface-default)',\n ...typography.option[size],\n color: 'var(--dds-color-text-default)',\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'color 0.2s, background-color 0.2s',\n },\n '&:hover': {\n color: 'var(--dds-color-text-default)',\n backgroundColor: 'var(--dds-color-surface-hover-default)',\n },\n // egen stil siden react-select bruker focus-state og hover-styling samtidig; ikke nødvendig hvis de kan skilles.\n ...(state.isFocused && {\n outline: 'var(--dds-color-border-action-hover) 2px solid',\n outlineOffset: 'calc(var(--dds-spacing-x0-125) * -1)',\n }),\n }),\n noOptionsMessage: () => ({\n ...typography.option[size],\n padding: 'var(--dds-spacing-x0-5) var(--dds-spacing-x1)',\n color: 'var(--dds-color-text-medium)',\n }),\n clearIndicator: () =>\n isReadOnly\n ? { display: 'none' }\n : {\n display: 'inline-flex',\n color: 'var(--dds-color-icon-default)',\n borderRadius: 'var(--dds-border-radius-button)',\n\n '@media (prefers-reduced-motion: no-preference)': {\n transition: 'background-color 0.2s',\n },\n '&:hover': {\n backgroundColor: 'var(--dds-color-surface-hover-default)',\n },\n },\n loadingIndicator: provided => ({\n ...provided,\n padding: 0,\n color: 'var(--dds-color-icon-default)',\n }),\n});\n","import type { JSX } from 'react';\nimport {\n type ClearIndicatorProps,\n type ControlProps,\n type DropdownIndicatorProps,\n type GroupBase,\n type InputProps,\n type MultiValueRemoveProps,\n type NoticeProps,\n type OptionProps,\n type SingleValueProps,\n components,\n} from 'react-select';\n\nimport styles from './Select.module.css';\nimport { cn, getFormInputIconSize } from '../../utils';\nimport { type InputSize } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { Icon, type IconSize, type SvgIcon } from '../Icon';\nimport { CheckIcon, ChevronDownIcon, CloseSmallIcon } from '../Icon/icons';\n\nconst {\n Option,\n NoOptionsMessage,\n Input,\n SingleValue,\n ClearIndicator,\n DropdownIndicator,\n MultiValueRemove,\n Control,\n} = components;\n\nexport const getIndicatorIconSize = (componentSize: InputSize): IconSize => {\n switch (componentSize) {\n case 'medium':\n return 'medium';\n case 'small':\n return 'small';\n case 'xsmall':\n return 'small';\n }\n};\n\nexport const DDSOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n componentSize: InputSize,\n) => (\n <Option {...props}>\n {props.isSelected && (\n <Icon icon={CheckIcon} iconSize={getFormInputIconSize(componentSize)} />\n )}\n {props.children}\n </Option>\n);\n\nexport const CustomOption = <TValue, IsMulti extends boolean>(\n props: OptionProps<TValue, IsMulti>,\n Element: (props: OptionProps<TValue, IsMulti>) => JSX.Element,\n) => (\n <Option {...props}>\n <Element {...props} />\n </Option>\n);\n\nexport const CustomSingleValue = <TOption, IsMulti extends boolean>(\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n id?: string,\n Element?: (\n props: SingleValueProps<TOption, IsMulti, GroupBase<TOption>>,\n ) => JSX.Element,\n) => (\n <SingleValue {...props}>\n <div id={id} className={styles['inner-single-value']}>\n {Element ? <Element {...props} /> : props.children}\n </div>\n </SingleValue>\n);\n\nexport const DDSNoOptionsMessage = <TValue, IsMulti extends boolean>(\n props: NoticeProps<TValue, IsMulti>,\n) => <NoOptionsMessage {...props}>Ingen treff</NoOptionsMessage>;\n\nexport const DDSClearIndicator = <TValue, IsMulti extends boolean>(\n props: ClearIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => (\n <ClearIndicator {...props}>\n <Icon icon={CloseSmallIcon} iconSize={getIndicatorIconSize(size)} />\n </ClearIndicator>\n);\n\nexport const DDSMultiValueRemove = <TValue, IsMulti extends boolean>(\n props: MultiValueRemoveProps<TValue, IsMulti>,\n) => (\n <MultiValueRemove {...props}>\n <Icon icon={CloseSmallIcon} iconSize=\"small\" />\n </MultiValueRemove>\n);\n\nexport const DDSDropdownIndicator = <TValue, IsMulti extends boolean>(\n props: DropdownIndicatorProps<TValue, IsMulti>,\n size: InputSize,\n) => {\n const { className, ...rest } = props;\n return (\n <DropdownIndicator\n {...rest}\n className={cn(className, styles['dropdown-indicator'])}\n >\n <Icon icon={ChevronDownIcon} iconSize={getIndicatorIconSize(size)} />\n </DropdownIndicator>\n );\n};\n\nexport const DDSInput = <TOption, IsMulti extends boolean>(\n props: InputProps<TOption, IsMulti>,\n ariaInvalid: boolean,\n ariaDescribedby?: string,\n) => (\n <Input\n {...props}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedby}\n />\n);\n\nexport const DDSControl = <TValue, IsMulti extends boolean>(\n props: ControlProps<TValue, IsMulti>,\n componentSize: InputSize,\n readOnly?: boolean,\n icon?: SvgIcon,\n dataTestId?: string,\n) => {\n const { className, ...rest } = props;\n\n return (\n <div data-testid={dataTestId ? dataTestId + '-control' : undefined}>\n <Control\n {...rest}\n className={cn(\n className,\n styles.control,\n rest.isDisabled && styles['control--disabled'],\n readOnly && styles['control--readonly'],\n )}\n >\n {icon && (\n <Icon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n className={cn(\n inputStyles['input-group__absolute-element'],\n styles[`icon--${componentSize}`],\n )}\n />\n )}\n {props.children}\n </Control>\n </div>\n );\n};\n","import { useId } from 'react';\nimport type { ComponentPropsWithRef } from 'react';\n\nimport styles from './NativeSelect.module.css';\nimport {\n cn,\n derivativeIdGenerator,\n readOnlyKeyDownHandler,\n readOnlyMouseDownHandler,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport {\n type CommonInputProps,\n type InputProps,\n getInputWidth,\n} from '../../helpers';\nimport inputStyles from '../../helpers/Input/Input.module.css';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport { scrollbar } from '../../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../../Icon';\nimport { ChevronDownIcon } from '../../Icon/icons';\nimport { renderInputMessage } from '../../InputMessage';\nimport { Box } from '../../layout';\nimport { Label } from '../../Typography';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\n\nexport type NativeSelectProps = CommonInputProps &\n Pick<InputProps, 'componentSize' | 'readOnly'> &\n ComponentPropsWithRef<'select'>;\n\nexport const NativeSelect = ({\n id,\n children,\n componentSize = 'medium',\n label,\n multiple,\n readOnly,\n errorMessage,\n tip,\n required,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n width,\n className,\n style,\n onKeyDown,\n onMouseDown,\n ...rest\n}: NativeSelectProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-native-select`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const showRequiredStyling = !!(required || ariaRequired);\n\n const inputWidth = getInputWidth(\n width,\n componentSize === 'xsmall' && 'var(--dds-input-default-width-xsmall)',\n );\n\n return (\n <div className={className} style={style}>\n {hasLabel && (\n <Label\n className={inputStyles.label}\n htmlFor={uniqueId}\n showRequiredStyling={showRequiredStyling}\n readOnly={readOnly}\n >\n {label}\n </Label>\n )}\n <Box position=\"relative\" width={inputWidth}>\n <select\n id={uniqueId}\n multiple={multiple}\n className={cn(\n styles.select,\n readOnly && styles['select--readonly'],\n inputStyles.input,\n inputStyles[`input--${componentSize}`],\n styles[`select--${componentSize}`],\n scrollbar,\n focusable,\n typographyStyles[`body-${componentSize}`],\n hasErrorMessage && inputStyles['input--stateful-danger'],\n multiple && styles['select--multiple'],\n )}\n aria-readonly={readOnly}\n aria-invalid={hasErrorMessage}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ])}\n required={required}\n onKeyDown={readOnlyKeyDownHandler('select', readOnly, onKeyDown)}\n onMouseDown={readOnlyMouseDownHandler(readOnly, onMouseDown)}\n {...rest}\n >\n {children}\n </select>\n {!multiple && (\n <Icon\n icon={ChevronDownIcon}\n iconSize={componentSize === 'xsmall' ? 'small' : 'medium'}\n className={styles.icon}\n />\n )}\n </Box>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </div>\n );\n};\n\nexport type NativeSelectPlaceholderProps = ComponentPropsWithRef<'option'>;\n\nexport const NativeSelectPlaceholder = ({\n children = '-- Velg fra listen --',\n value,\n ...rest\n}: NativeSelectPlaceholderProps) => (\n <option value={value ?? ''} selected {...rest}>\n {children}\n </option>\n);\n\nNativeSelectPlaceholder.displayName = 'NativeSelectPlaceholder';\n",".select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n text-overflow: ellipsis;\n width: 100%;\n\n &:hover:not(:disabled):not(.select--readonly) {\n border-color: var(--dds-color-border-action-hover);\n box-shadow: 0 0 0 1px var(--dds-color-border-action-hover);\n\n & + svg {\n color: var(--dds-color-icon-action-hover);\n }\n }\n &:disabled {\n cursor: not-allowed;\n color: var(--dds-color-text-subtle);\n background-color: var(--dds-color-surface-field-disabled);\n border-color: var(--dds-color-border-subtle);\n\n + svg {\n color: var(--dds-color-icon-subtle);\n }\n }\n option {\n background-color: var(--dds-color-surface-default);\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n }\n @media (prefers-reduced-motion: no-preference) {\n transition: background-color 0.2s;\n }\n }\n optgroup {\n font-weight: normal;\n font-style: normal;\n }\n}\n\n.select--readonly {\n box-shadow: none;\n outline: none;\n cursor: default;\n color: var(--dds-color-text-subtle);\n background-color: var(--dds-color-surface-field-disabled);\n\n + svg {\n color: var(--dds-color-icon-subtle);\n }\n}\n\n.select--medium {\n padding-right: var(--dds-spacing-x2);\n}\n\n.select--small {\n padding-right: var(--dds-spacing-x2);\n}\n\n.select--xsmall {\n padding-right: var(--dds-spacing-x1-5);\n}\n\n.select--multiple {\n padding-right: 0;\n\n &.select--readonly option {\n background-color: var(--dds-color-surface-field-disabled);\n }\n}\n\n.icon {\n position: absolute;\n top: 50%;\n transform: translate(-150%, -50%);\n align-self: center;\n pointer-events: none;\n}\n","import type { SelectOption } from './Select';\n\nexport const createSelectOptions = <TValue extends string | number>(\n ...args: Array<TValue>\n): Array<SelectOption<TValue>> => args.map(v => ({ label: v, value: v }));\n","import { type Property } from 'csstype';\nimport {\n type ChangeEvent,\n type ForwardedRef,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { COUNTRIES, type Country, type ISOCountryCode } from './constants';\nimport styles from './PhoneInput.module.css';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { type InputProps, StatefulInput, getInputWidth } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box, type Breakpoint } from '../layout';\nimport { applyResponsiveStyle } from '../layout/common/utils';\nimport { NativeSelect } from '../Select';\nimport { Label } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport interface PhoneInputValue {\n // eslint-disable-next-line @typescript-eslint/ban-types\n countryCode: ISOCountryCode | (string & {});\n phoneNumber: string;\n}\n\ninterface PhoneInputCountryOption {\n countryCode: ISOCountryCode;\n label: string;\n}\n\nconst prioritizedCountries: Array<Country> = [\n COUNTRIES.NO,\n COUNTRIES.SE,\n COUNTRIES.DK,\n COUNTRIES.FI,\n];\n\nconst prioritizedCountryOptions: Array<PhoneInputCountryOption> =\n prioritizedCountries.map(country => {\n return {\n label: `${country.name} ${country.dialCode}`,\n countryCode: country.id,\n };\n });\n\nconst sortedCountryOptions: Array<PhoneInputCountryOption> = Object.values(\n COUNTRIES,\n)\n .sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n })\n .map(country => ({\n countryCode: country.id,\n label: `${country.name} ${country.dialCode}`,\n }))\n .filter(\n country =>\n !prioritizedCountryOptions.some(\n pCountry => pCountry.countryCode === country.countryCode,\n ),\n );\n\nexport const countryOptions: Array<PhoneInputCountryOption> = [\n ...prioritizedCountryOptions,\n ...sortedCountryOptions,\n];\n\nexport type PhoneInputProps = {\n /**\n * Custom id for gruppen ved behov. setter `${id}-country-code` som `id` for landskode og `${id}-phone-number` for telefonnummer.\n */\n id?: string;\n /**\n * Verdi bestående av landskode og telefonnummer.\n * */\n value?: PhoneInputValue;\n /** Default verdi bestående av landkode og telefonnummer. */\n defaultValue?: PhoneInputValue;\n /**\n * `onChange` funksjon.\n */\n onChange?: (value: PhoneInputValue) => void;\n /** `name` attributt; setter `${name}-country-code` som `name` for landskode og `${name}-phone-number` for telefonnummer. */\n name?: string;\n /**\n * Spesifiserer ved hvilket brekkpunkt og nedover versjonen for små skjermer skal vises; den stacker subkomponentene vertikalt.\n */\n smallScreenBreakpoint?: Breakpoint;\n /**\n * Usynlig ledetekst for nedtrekksliste med landkoder. Brukes hvis default ikke passer eller ikke er beskrivende nok.\n * @default \"Landskode\"\n */\n selectLabel?: string;\n /**\n * Ref for nedtrekksliste med landkoder.\n */\n selectRef?: ForwardedRef<HTMLSelectElement>;\n /**\n * Usynlig ledetekst for gruppen. Brukes hvis default ikke passer eller ikke er beskrivende nok.\n * @default \"Landskode og telefonnummer\"\n */\n groupLabel?: string;\n} & Pick<\n InputProps,\n | 'readOnly'\n | 'disabled'\n | 'width'\n | 'componentSize'\n | 'errorMessage'\n | 'label'\n | 'tip'\n | 'required'\n | 'className'\n | 'style'\n | 'aria-required'\n | 'aria-describedby'\n | 'ref'\n>;\n\nexport const PhoneInput = ({\n label,\n readOnly,\n errorMessage,\n tip,\n required,\n width,\n componentSize = 'medium',\n name,\n className,\n style,\n value,\n selectLabel = 'Landskode',\n selectRef,\n onChange,\n defaultValue,\n 'aria-required': ariaRequired,\n 'aria-describedby': ariaDescribedby,\n groupLabel = 'Landskode og telefonnummer',\n ref,\n ...props\n}: PhoneInputProps) => {\n const generatedId = useId();\n const uniqueId = props.id ?? generatedId;\n const phoneInputId = `${uniqueId}-phone-input`;\n const phoneNumberId = `${uniqueId}-phone-number`;\n const selectId = `${uniqueId}-country-code`;\n\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasMessage = hasErrorMessage || hasTip;\n\n const tipId = derivativeIdGenerator(phoneInputId, 'tip');\n const errorMessageId = derivativeIdGenerator(phoneInputId, 'errorMessage');\n\n const [callingCode, setCallingCode] = useState('');\n const [selectedCountryCodeText, setSelectedCountryCodeText] = useState('');\n const [internalValue, setInternalValue] = useState<PhoneInputValue>(\n defaultValue ?? {\n countryCode: '',\n phoneNumber: '',\n },\n );\n\n const isControlled = value !== undefined;\n\n const [callingCodeWidth, setCallingCodeWidth] = useState(0);\n\n const callingCodeRef = useRef<HTMLSpanElement>(null);\n\n useLayoutEffect(() => {\n if (callingCodeRef.current) {\n setCallingCodeWidth(callingCodeRef.current.offsetWidth);\n }\n }, [callingCode]);\n\n const callingCodeInlineStart: Property.PaddingInlineStart | undefined =\n callingCodeWidth\n ? `calc(var(--dds-spacing-x1) + ${callingCodeWidth}px)`\n : undefined;\n\n const internalSelectRef = useRef<HTMLSelectElement>(null);\n\n const combinedSelectRef = useCombinedRef(selectRef, internalSelectRef);\n\n const displayedValue = isControlled ? value : internalValue;\n\n useEffect(() => {\n const selectEl = internalSelectRef.current;\n if (selectEl && selectEl.value) {\n const { options, selectedIndex } = selectEl;\n const content = options[selectedIndex].innerHTML;\n setSelectedCountryCodeText(content);\n setCallingCode(getCallingCode(content));\n }\n }, [displayedValue?.countryCode]);\n\n const handleCountryCodeChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const newValue = {\n countryCode: e.target.value,\n phoneNumber: displayedValue?.phoneNumber ?? '',\n };\n\n const { options, selectedIndex } = e.target;\n const content = options[selectedIndex].innerHTML;\n setCallingCode(getCallingCode(content));\n\n if (isControlled && onChange) {\n onChange(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n const handlePhoneNumberChange = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = {\n countryCode: displayedValue?.countryCode ?? '',\n phoneNumber: e.target.value,\n };\n\n if (isControlled && onChange) {\n onChange(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n const commonProps = {\n required,\n 'aria-required': ariaRequired,\n disabled: props.disabled,\n readOnly,\n componentSize,\n };\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n const bp = props.smallScreenBreakpoint;\n\n const widthDefault =\n componentSize === 'xsmall' && 'var(--dds-input-default-width-xsmall)';\n\n return (\n <div className={cn(className, inputStyles.container)} style={style}>\n {hasLabel && (\n <Label\n htmlFor={phoneNumberId}\n showRequiredStyling={showRequiredStyling}\n className={inputStyles.label}\n readOnly={readOnly}\n >\n {label}\n </Label>\n )}\n <Box\n display=\"flex\"\n flexDirection={applyResponsiveStyle('column', bp, 'row')}\n className={cn(\n styles['inputs-container'],\n !!bp && styles[`inputs-container--small-screen-${bp}`],\n )}\n width={getInputWidth(width, widthDefault)}\n role=\"group\"\n aria-label={groupLabel}\n >\n <label className={utilStyles['visually-hidden']} htmlFor={selectId}>\n {selectLabel}\n </label>\n <NativeSelect\n width={applyResponsiveStyle(\n '100%',\n bp,\n componentSize === 'xsmall' ? '5rem' : '8rem',\n )}\n {...commonProps}\n ref={combinedSelectRef}\n id={selectId}\n className={cn(styles.select)}\n onChange={handleCountryCodeChange}\n defaultValue={defaultValue?.countryCode}\n value={displayedValue?.countryCode || ''}\n title={selectedCountryCodeText}\n name={`${name}-country-code`}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n ariaDescribedby,\n ])}\n >\n {countryOptions.map((item, index) => (\n <option value={item.countryCode} key={index}>\n {item.label}\n </option>\n ))}\n </NativeSelect>\n <Box width=\"100%\" className={inputStyles['input-group']}>\n <span\n className={cn(\n typographyStyles[`body-${componentSize}`],\n inputStyles['input-group__absolute-element'],\n styles['calling-code'],\n )}\n ref={callingCodeRef}\n >\n {callingCode}\n </span>\n\n <Box\n as={StatefulInput}\n ref={ref}\n type=\"tel\"\n {...commonProps}\n id={phoneNumberId}\n value={displayedValue?.phoneNumber || ''}\n defaultValue={defaultValue?.phoneNumber}\n name={`${name}-phone-number`}\n onChange={handlePhoneNumberChange}\n width=\"100%\"\n style={{\n paddingInlineStart: callingCodeInlineStart,\n }}\n className={styles.input}\n hasErrorMessage={hasErrorMessage}\n aria-invalid={hasErrorMessage ? true : undefined}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ])}\n />\n </Box>\n </Box>\n {hasMessage &&\n renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </div>\n );\n};\n\nPhoneInput.displayName = 'PhoneInput';\n\nconst getCallingCode = (s: string): string =>\n s.substring(s.indexOf('+'), s.length) ?? '';\n","export interface Country {\n name: string;\n id: ISOCountryCode;\n dialCode: string;\n}\n\nexport type ISOCountryCode =\n | 'AF'\n | 'AL'\n | 'DZ'\n | 'AS'\n | 'AD'\n | 'AO'\n | 'AI'\n | 'AG'\n | 'AR'\n | 'AM'\n | 'AW'\n | 'AU'\n | 'AT'\n | 'AZ'\n | 'BS'\n | 'BH'\n | 'BD'\n | 'BB'\n | 'BY'\n | 'BE'\n | 'BZ'\n | 'BJ'\n | 'BM'\n | 'BT'\n | 'BO'\n | 'BA'\n | 'BW'\n | 'BR'\n | 'IO'\n | 'VG'\n | 'BN'\n | 'BG'\n | 'BF'\n | 'BI'\n | 'KH'\n | 'CM'\n | 'CA'\n | 'CV'\n | 'KY'\n | 'CF'\n | 'TD'\n | 'CL'\n | 'CN'\n | 'CX'\n | 'CC'\n | 'CO'\n | 'EH'\n | 'KM'\n | 'CD'\n | 'CG'\n | 'CK'\n | 'CR'\n | 'CI'\n | 'HR'\n | 'CU'\n | 'CW'\n | 'CY'\n | 'CZ'\n | 'DK'\n | 'DJ'\n | 'DM'\n | 'DO'\n | 'EC'\n | 'EG'\n | 'SV'\n | 'GQ'\n | 'GS'\n | 'ER'\n | 'EE'\n | 'ET'\n | 'FK'\n | 'FO'\n | 'FJ'\n | 'FI'\n | 'FR'\n | 'GF'\n | 'PF'\n | 'GA'\n | 'GM'\n | 'GE'\n | 'DE'\n | 'GH'\n | 'GI'\n | 'GR'\n | 'GL'\n | 'GD'\n | 'GP'\n | 'GU'\n | 'GT'\n | 'GG'\n | 'GN'\n | 'GW'\n | 'GY'\n | 'HT'\n | 'HM'\n | 'HN'\n | 'HK'\n | 'HU'\n | 'IS'\n | 'IN'\n | 'ID'\n | 'IR'\n | 'IQ'\n | 'IE'\n | 'IM'\n | 'IL'\n | 'IT'\n | 'JM'\n | 'JP'\n | 'JE'\n | 'JO'\n | 'KZ'\n | 'KE'\n | 'KI'\n | 'XK'\n | 'KW'\n | 'KG'\n | 'LA'\n | 'LV'\n | 'LB'\n | 'LS'\n | 'LR'\n | 'LY'\n | 'LI'\n | 'LT'\n | 'LU'\n | 'MO'\n | 'MK'\n | 'MG'\n | 'MW'\n | 'MY'\n | 'MV'\n | 'ML'\n | 'MT'\n | 'MH'\n | 'MQ'\n | 'MR'\n | 'MU'\n | 'YT'\n | 'MX'\n | 'FM'\n | 'MD'\n | 'MC'\n | 'MN'\n | 'ME'\n | 'MS'\n | 'MA'\n | 'MZ'\n | 'MM'\n | 'NA'\n | 'NR'\n | 'NP'\n | 'NL'\n | 'NC'\n | 'NZ'\n | 'NI'\n | 'NE'\n | 'NG'\n | 'NU'\n | 'NF'\n | 'KP'\n | 'MP'\n | 'NO'\n | 'OM'\n | 'PK'\n | 'PW'\n | 'PS'\n | 'PA'\n | 'PG'\n | 'PY'\n | 'PE'\n | 'PH'\n | 'PL'\n | 'PT'\n | 'PR'\n | 'QA'\n | 'RE'\n | 'RO'\n | 'RU'\n | 'RW'\n | 'BL'\n | 'SH'\n | 'KN'\n | 'LC'\n | 'MF'\n | 'PM'\n | 'VC'\n | 'WS'\n | 'SM'\n | 'ST'\n | 'SA'\n | 'SN'\n | 'RS'\n | 'SC'\n | 'SL'\n | 'SG'\n | 'SX'\n | 'SK'\n | 'SI'\n | 'SB'\n | 'SO'\n | 'ZA'\n | 'KR'\n | 'SS'\n | 'ES'\n | 'LK'\n | 'SD'\n | 'SR'\n | 'SJ'\n | 'SZ'\n | 'SE'\n | 'CH'\n | 'SY'\n | 'TW'\n | 'TJ'\n | 'TZ'\n | 'TH'\n | 'TL'\n | 'TG'\n | 'TK'\n | 'TO'\n | 'TT'\n | 'TN'\n | 'TR'\n | 'TM'\n | 'TC'\n | 'TV'\n | 'VI'\n | 'UG'\n | 'UA'\n | 'AE'\n | 'GB'\n | 'US'\n | 'UY'\n | 'UZ'\n | 'VU'\n | 'VA'\n | 'VE'\n | 'VN'\n | 'WF'\n | 'YE'\n | 'ZM'\n | 'ZW'\n | 'AX';\n\ntype Countries = {\n [key in ISOCountryCode]: Country;\n};\n\n// Hentet fra [uber/baseweb](https://github.com/uber/baseweb/)\n// Modifisert til å passe våre behov: nummer som int\n\nexport const COUNTRIES: Countries = {\n AF: { name: 'Afghanistan (افغانستان)', id: 'AF', dialCode: '+93' },\n AL: { name: 'Albania (Shqipëri)', id: 'AL', dialCode: '+355' },\n DZ: { name: 'Algerie (الجزائر)', id: 'DZ', dialCode: '+213' },\n AS: {\n name: 'Amerikansk Samoa (American Samoa)',\n id: 'AS',\n dialCode: '+1684',\n },\n AD: { name: 'Andorra', id: 'AD', dialCode: '+376' },\n AO: { name: 'Angola', id: 'AO', dialCode: '+244' },\n AI: { name: 'Anguilla', id: 'AI', dialCode: '+1264' },\n AG: {\n name: 'Antigua og Barbuda (Antigua and Barbuda)',\n id: 'AG',\n dialCode: '+1268',\n },\n AR: { name: 'Argentina', id: 'AR', dialCode: '+54' },\n AM: { name: 'Armenia (Հայաստան)', id: 'AM', dialCode: '+374' },\n AW: { name: 'Aruba', id: 'AW', dialCode: '+297' },\n AU: { name: 'Australia', id: 'AU', dialCode: '+61' },\n AT: { name: 'Østerrike (Österreich)', id: 'AT', dialCode: '+43' },\n AZ: { name: 'Aserbajdsjan (Azərbaycan)', id: 'AZ', dialCode: '+994' },\n BS: { name: 'Bahamas', id: 'BS', dialCode: '+1242' },\n BH: { name: 'Bahrain (البحرين)', id: 'BH', dialCode: '+973' },\n BD: { name: 'Bangladesh (বাংলাদেশ)', id: 'BD', dialCode: '+880' },\n BB: { name: 'Barbados', id: 'BB', dialCode: '+1246' },\n BY: { name: 'Belarus (Беларусь)', id: 'BY', dialCode: '+375' },\n BE: { name: 'Belgium (België)', id: 'BE', dialCode: '+32' },\n BZ: { name: 'Belize', id: 'BZ', dialCode: '+501' },\n BJ: { name: 'Benin (Bénin)', id: 'BJ', dialCode: '+229' },\n BM: { name: 'Bermuda', id: 'BM', dialCode: '+1441' },\n BT: { name: 'Bhutan (འབྲུག)', id: 'BT', dialCode: '+975' },\n BO: { name: 'Bolivia', id: 'BO', dialCode: '+591' },\n BA: {\n name: 'Bosnia-Hercegovina (Босна и Херцеговина)',\n id: 'BA',\n dialCode: '+387',\n },\n BW: { name: 'Botswana', id: 'BW', dialCode: '+267' },\n BR: { name: 'Brasil', id: 'BR', dialCode: '+55' },\n IO: {\n name: 'Det britiske territoriet i Indiahavet (British Indian Ocean Territory)',\n id: 'IO',\n dialCode: '+246',\n },\n VG: {\n name: 'Britiske Jomfruøyer (British Virgin Islands)',\n id: 'VG',\n dialCode: '+1284',\n },\n BN: { name: 'Brunei', id: 'BN', dialCode: '+673' },\n BG: { name: 'Bulgaria (България)', id: 'BG', dialCode: '+359' },\n BF: { name: 'Burkina Faso', id: 'BF', dialCode: '+226' },\n BI: { name: 'Burundi (Uburundi)', id: 'BI', dialCode: '+257' },\n KH: { name: 'Kambodsja (កម្ពុជា)', id: 'KH', dialCode: '+855' },\n CM: { name: 'Kamerun (Cameroun)', id: 'CM', dialCode: '+237' },\n CA: { name: 'Canada', id: 'CA', dialCode: '+1' },\n CV: { name: 'Kapp Verde (Kabu Verdi)', id: 'CV', dialCode: '+238' },\n KY: { name: 'Caymanøyene (Cayman Islands)', id: 'KY', dialCode: '+1345' },\n CF: {\n name: 'Den sentralafrikanske republikk (République centrafricaine)',\n id: 'CF',\n dialCode: '+236',\n },\n TD: { name: 'Tsjad (Tchad)', id: 'TD', dialCode: '+235' },\n CL: { name: 'Chile', id: 'CL', dialCode: '+56' },\n CN: { name: 'Kina (中国)', id: 'CN', dialCode: '+86' },\n CX: { name: 'Christmasøya (Christmas Island)', id: 'CX', dialCode: '+61' },\n CC: {\n name: 'Kokosøyene (Cocos (Keeling) Islands)',\n id: 'CC',\n dialCode: '+61',\n },\n CO: { name: 'Colombia', id: 'CO', dialCode: '+57' },\n KM: { name: 'Komorene (جزر القمر)', id: 'KM', dialCode: '+269' },\n CD: {\n name: 'Kongo (DR) (Jamhuri ya Kisoemokrasia ya Kongo)',\n id: 'CD',\n dialCode: '+243',\n },\n CG: {\n name: 'Kongo (Republikken) (Congo-Brazzaville)',\n id: 'CG',\n dialCode: '+242',\n },\n CK: { name: 'Cookøyene (Cook Islands)', id: 'CK', dialCode: '+682' },\n CR: { name: 'Costa Rica', id: 'CR', dialCode: '+506' },\n CI: { name: 'Elfenbenskysten (Côte d’Ivoire)', id: 'CI', dialCode: '+225' },\n HR: { name: 'Kroatia (Hrvatska)', id: 'HR', dialCode: '+385' },\n CU: { name: 'Cuba', id: 'CU', dialCode: '+53' },\n CW: { name: 'Curaçao', id: 'CW', dialCode: '+599' },\n CY: { name: 'Kypros (Κύπρος)', id: 'CY', dialCode: '+357' },\n CZ: { name: 'Tsjekkia (Česká republika)', id: 'CZ', dialCode: '+420' },\n DK: { name: 'Danmark', id: 'DK', dialCode: '+45' },\n DJ: { name: 'Djibouti', id: 'DJ', dialCode: '+253' },\n DM: { name: 'Dominica', id: 'DM', dialCode: '+1767' },\n DO: {\n name: 'Den dominikanske republikk (República Dominicana)',\n id: 'DO',\n dialCode: '+1',\n },\n EC: { name: 'Ecuador', id: 'EC', dialCode: '+593' },\n EG: { name: 'Egypt (مصر)', id: 'EG', dialCode: '+20' },\n SV: { name: 'El Salvador', id: 'SV', dialCode: '+503' },\n GQ: {\n name: 'Ekvatorial-Guinea (Guinea Ecuatorial)',\n id: 'GQ',\n dialCode: '+240',\n },\n ER: { name: 'Eritrea', id: 'ER', dialCode: '+291' },\n EE: { name: 'Estland (Eesti)', id: 'EE', dialCode: '+372' },\n ET: { name: 'Etiopia (ኢትዮጵያ)', id: 'ET', dialCode: '+251' },\n FK: { name: 'Falklandsøyene (Islas Malvinas)', id: 'FK', dialCode: '+500' },\n FO: { name: 'Færøyene (Føroyar)', id: 'FO', dialCode: '+298' },\n FJ: { name: 'Fiji', id: 'FJ', dialCode: '+679' },\n FI: { name: 'Finland (Suomi)', id: 'FI', dialCode: '+358' },\n FR: { name: 'Frankrike (France)', id: 'FR', dialCode: '+33' },\n GF: { name: 'Fransk Guyana (Guyane française)', id: 'GF', dialCode: '+594' },\n PF: {\n name: 'Fransk Polynesia (Polynésie française)',\n id: 'PF',\n dialCode: '+689',\n },\n GA: { name: 'Gabon', id: 'GA', dialCode: '+241' },\n GM: { name: 'Gambia', id: 'GM', dialCode: '+220' },\n GE: { name: 'Georgia (საქართველო)', id: 'GE', dialCode: '+995' },\n DE: { name: 'Tyskland (Deutschland)', id: 'DE', dialCode: '+49' },\n GH: { name: 'Ghana (Gaana)', id: 'GH', dialCode: '+233' },\n GI: { name: 'Gibraltar', id: 'GI', dialCode: '+350' },\n GR: { name: 'Hellas (Ελλάδα)', id: 'GR', dialCode: '+30' },\n GL: { name: 'Grønland (Kalaallit Nunaat)', id: 'GL', dialCode: '+299' },\n GD: { name: 'Grenada', id: 'GD', dialCode: '+1473' },\n GP: { name: 'Guadeloupe', id: 'GP', dialCode: '+590' },\n GU: { name: 'Guam', id: 'GU', dialCode: '+1671' },\n GT: { name: 'Guatemala', id: 'GT', dialCode: '+502' },\n GG: { name: 'Guernsey', id: 'GG', dialCode: '+44' },\n GN: { name: 'Guinea (Guinée)', id: 'GN', dialCode: '+224' },\n GW: { name: 'Guinea-Bissau (Guiné-Bissau)', id: 'GW', dialCode: '+245' },\n GY: { name: 'Guyana', id: 'GY', dialCode: '+592' },\n HT: { name: 'Haiti', id: 'HT', dialCode: '+509' },\n HM: {\n name: 'Heard- og McDonaldøyene (Heard Island and McDonald Islands)',\n id: 'HM',\n dialCode: '+672',\n },\n VA: {\n name: 'Vatikanstaten (Città del Vaticano)',\n id: 'VA',\n dialCode: '+379',\n },\n HN: { name: 'Honduras', id: 'HN', dialCode: '+504' },\n HK: { name: 'Hongkong (香港)', id: 'HK', dialCode: '+852' },\n HU: { name: 'Ungarn (Magyarország)', id: 'HU', dialCode: '+36' },\n IS: { name: 'Island (Ísland)', id: 'IS', dialCode: '+354' },\n IN: { name: 'India (भारत)', id: 'IN', dialCode: '+91' },\n ID: { name: 'Indonesia', id: 'ID', dialCode: '+62' },\n IR: { name: 'Iran (ایران)', id: 'IR', dialCode: '+98' },\n IQ: { name: 'Irak (العراق)', id: 'IQ', dialCode: '+964' },\n IE: { name: 'Irland (Éire)', id: 'IE', dialCode: '+353' },\n IM: { name: 'Isle of Man', id: 'IM', dialCode: '+44' },\n IL: { name: 'Israel (ישראל)', id: 'IL', dialCode: '+972' },\n IT: { name: 'Italia', id: 'IT', dialCode: '+39' },\n JM: { name: 'Jamaica', id: 'JM', dialCode: '+1' },\n JP: { name: 'Japan (日本)', id: 'JP', dialCode: '+81' },\n JE: { name: 'Jersey', id: 'JE', dialCode: '+44' },\n JO: { name: 'Jordan (الأردن)', id: 'JO', dialCode: '+962' },\n KZ: { name: 'Kasakhstan (Қазақстан)', id: 'KZ', dialCode: '+7' },\n KE: { name: 'Kenya', id: 'KE', dialCode: '+254' },\n KI: { name: 'Kiribati', id: 'KI', dialCode: '+686' },\n XK: { name: 'Kosovo', id: 'XK', dialCode: '+383' },\n KW: { name: 'Kuwait (الكويت)', id: 'KW', dialCode: '+965' },\n KG: { name: 'Kirgisistan (Кыргызстан)', id: 'KG', dialCode: '+996' },\n LA: { name: 'Laos (ລາວ)', id: 'LA', dialCode: '+856' },\n LV: { name: 'Latvia (Latvija)', id: 'LV', dialCode: '+371' },\n LB: { name: 'Libanon (لبنان)', id: 'LB', dialCode: '+961' },\n LS: { name: 'Lesotho', id: 'LS', dialCode: '+266' },\n LR: { name: 'Liberia', id: 'LR', dialCode: '+231' },\n LY: { name: 'Libya (ليبيا)', id: 'LY', dialCode: '+218' },\n LI: { name: 'Liechtenstein', id: 'LI', dialCode: '+423' },\n LT: { name: 'Litauen (Lietuva)', id: 'LT', dialCode: '+370' },\n LU: { name: 'Luxembourg', id: 'LU', dialCode: '+352' },\n MO: { name: 'Macao (澳門)', id: 'MO', dialCode: '+853' },\n MK: {\n name: 'Nord-Makedonia (FYROM) (Македонија)',\n id: 'MK',\n dialCode: '+389',\n },\n MG: { name: 'Madagaskar (Madagasikara)', id: 'MG', dialCode: '+261' },\n MW: { name: 'Malawi', id: 'MW', dialCode: '+265' },\n MY: { name: 'Malaysia', id: 'MY', dialCode: '+60' },\n MV: {\n name: 'Maldivene (ދިވެހިރާއްޖޭގެ ޖުމްހޫރިއްޔާ)',\n id: 'MV',\n dialCode: '+960',\n },\n ML: { name: 'Mali', id: 'ML', dialCode: '+223' },\n MT: { name: 'Malta', id: 'MT', dialCode: '+356' },\n MH: { name: 'Marshalløyene (Marshall Islands)', id: 'MH', dialCode: '+692' },\n MQ: { name: 'Martinique', id: 'MQ', dialCode: '+596' },\n MR: { name: 'Mauritania (موريتانيا)', id: 'MR', dialCode: '+222' },\n MU: { name: 'Mauritius (Moris)', id: 'MU', dialCode: '+230' },\n YT: { name: 'Mayotte', id: 'YT', dialCode: '+262' },\n MX: { name: 'Mexico (México)', id: 'MX', dialCode: '+52' },\n FM: { name: 'Mikronesia (Micronesia)', id: 'FM', dialCode: '+691' },\n MD: { name: 'Moldova (Republica Moldova)', id: 'MD', dialCode: '+373' },\n MC: { name: 'Monaco', id: 'MC', dialCode: '+377' },\n MN: { name: 'Mongolia (Монгол)', id: 'MN', dialCode: '+976' },\n ME: { name: 'Montenegro (Crna Gora)', id: 'ME', dialCode: '+382' },\n MS: { name: 'Montserrat', id: 'MS', dialCode: '+1664' },\n MA: { name: 'Marokko (المغرب)', id: 'MA', dialCode: '+212' },\n MZ: { name: 'Mosambik (Moçambique)', id: 'MZ', dialCode: '+258' },\n MM: { name: 'Myanmar (မြန်မာ)', id: 'MM', dialCode: '+95' },\n NA: { name: 'Namibia', id: 'NA', dialCode: '+264' },\n NR: { name: 'Nauru', id: 'NR', dialCode: '+674' },\n NP: { name: 'Nepal (नेपाल)', id: 'NP', dialCode: '+977' },\n NL: { name: 'Nederland', id: 'NL', dialCode: '+31' },\n NC: { name: 'Ny-Caledonia (Nouvelle-Calédonie)', id: 'NC', dialCode: '+687' },\n NZ: { name: 'New Zealand', id: 'NZ', dialCode: '+64' },\n NI: { name: 'Nicaragua', id: 'NI', dialCode: '+505' },\n NE: { name: 'Niger (Nijar)', id: 'NE', dialCode: '+227' },\n NG: { name: 'Nigeria', id: 'NG', dialCode: '+234' },\n NU: { name: 'Niue', id: 'NU', dialCode: '+683' },\n NF: { name: 'Norfolk Island', id: 'NF', dialCode: '+672' },\n KP: {\n name: 'Nord-Korea (조선 민주주의 인민 공화국)',\n id: 'KP',\n dialCode: '+850',\n },\n MP: {\n name: 'Nord-Marianene (Northern Mariana Islands)',\n id: 'MP',\n dialCode: '+1670',\n },\n NO: { name: 'Norge', id: 'NO', dialCode: '+47' },\n OM: { name: 'Oman (عُمان)', id: 'OM', dialCode: '+968' },\n PK: { name: 'Pakistan (پاکستان)', id: 'PK', dialCode: '+92' },\n PW: { name: 'Palau', id: 'PW', dialCode: '+680' },\n PS: {\n name: 'Palestina (فلسطين)',\n id: 'PS',\n dialCode: '+970',\n },\n PA: { name: 'Panama (Panamá)', id: 'PA', dialCode: '+507' },\n PG: {\n name: 'Papua Ny-Guinea (Papua New Guinea)',\n id: 'PG',\n dialCode: '+675',\n },\n PY: { name: 'Paraguay', id: 'PY', dialCode: '+595' },\n PE: { name: 'Peru (Perú)', id: 'PE', dialCode: '+51' },\n PH: { name: 'Filippinene (Philippines)', id: 'PH', dialCode: '+63' },\n PL: { name: 'Polen (Polska)', id: 'PL', dialCode: '+48' },\n PT: { name: 'Portugal', id: 'PT', dialCode: '+351' },\n PR: { name: 'Puerto Rico', id: 'PR', dialCode: '+1' },\n QA: { name: 'Qatar (قطر)', id: 'QA', dialCode: '+974' },\n RE: { name: 'Réunion', id: 'RE', dialCode: '+262' },\n RO: { name: 'Romania (România)', id: 'RO', dialCode: '+40' },\n RU: { name: 'Russland (Россия)', id: 'RU', dialCode: '+7' },\n RW: { name: 'Rwanda', id: 'RW', dialCode: '+250' },\n BL: {\n name: 'Saint Barthélemy',\n id: 'BL',\n dialCode: '+590',\n },\n SH: { name: 'St. Helena (Saint Helena)', id: 'SH', dialCode: '+290' },\n KN: {\n name: 'Saint Kitts og Nevis (Saint Kitts and Nevis)',\n id: 'KN',\n dialCode: '+1869',\n },\n LC: { name: 'Saint Lucia', id: 'LC', dialCode: '+1758' },\n MF: {\n name: 'Saint Martin (Saint-Martin (partie française))',\n id: 'MF',\n dialCode: '+590',\n },\n PM: {\n name: 'Saint Pierre og Miquelon (Saint-Pierre-et-Miquelon)',\n id: 'PM',\n dialCode: '+508',\n },\n VC: {\n name: 'Saint Vincent og Grenadinene (Saint Vincent and the Grenadines)',\n id: 'VC',\n dialCode: '+1784',\n },\n WS: { name: 'Samoa', id: 'WS', dialCode: '+685' },\n SM: { name: 'San Marino', id: 'SM', dialCode: '+378' },\n ST: {\n name: 'São Tomé og Príncipe (São Tomé e Príncipe)',\n id: 'ST',\n dialCode: '+239',\n },\n SA: {\n name: 'Saudi-Arabia (المملكة العربية السعودية)',\n id: 'SA',\n dialCode: '+966',\n },\n SN: { name: 'Senegal (Sénégal)', id: 'SN', dialCode: '+221' },\n RS: { name: 'Serbia (Србија)', id: 'RS', dialCode: '+381' },\n SC: { name: 'Seychellene (Seychelles)', id: 'SC', dialCode: '+248' },\n SL: { name: 'Sierra Leone', id: 'SL', dialCode: '+232' },\n SG: { name: 'Singapore', id: 'SG', dialCode: '+65' },\n SX: { name: 'Sint Maarten', id: 'SX', dialCode: '+1721' },\n SK: { name: 'Slovakia (Slovensko)', id: 'SK', dialCode: '+421' },\n SI: { name: 'Slovenia (Slovenija)', id: 'SI', dialCode: '+386' },\n SB: { name: 'Salomonøyene (Solomon Islands)', id: 'SB', dialCode: '+677' },\n SO: { name: 'Somalia (Soomaaliya)', id: 'SO', dialCode: '+252' },\n ZA: { name: 'Sør-Afrika (South Africa)', id: 'ZA', dialCode: '+27' },\n GS: {\n name: 'Sør-Georgia og Sør-Sandwichøyene (South Georgia and the South Sandwich Islands)',\n id: 'GS',\n dialCode: '+500',\n },\n KR: {\n name: 'Sør-Korea (대한민국)',\n id: 'KR',\n dialCode: '+82',\n },\n SS: { name: 'Sør-Sudan (جنوب السودان)', id: 'SS', dialCode: '+211' },\n ES: { name: 'Spania (España)', id: 'ES', dialCode: '+34' },\n LK: { name: 'Sri Lanka (ශ්රී ලංකාව)', id: 'LK', dialCode: '+94' },\n SD: { name: 'Sudan (السودان)', id: 'SD', dialCode: '+249' },\n SR: { name: 'Surinam (Suriname)', id: 'SR', dialCode: '+597' },\n SJ: { name: 'Svalbard og Jan Mayen', id: 'SJ', dialCode: '+47' },\n SZ: { name: 'Eswatini', id: 'SZ', dialCode: '+268' },\n SE: { name: 'Sverige', id: 'SE', dialCode: '+46' },\n CH: { name: 'Sveits (Schweiz)', id: 'CH', dialCode: '+41' },\n SY: { name: 'Syria (سوريا)', id: 'SY', dialCode: '+963' },\n TW: { name: 'Taiwan (台灣)', id: 'TW', dialCode: '+886' },\n TJ: { name: 'Tadsjikistan (Таджикистан)', id: 'TJ', dialCode: '+992' },\n TZ: { name: 'Tanzania', id: 'TZ', dialCode: '+255' },\n TH: { name: 'Thailand (ไทย)', id: 'TH', dialCode: '+66' },\n TL: { name: 'Øst-Timor (Timor-Leste)', id: 'TL', dialCode: '+670' },\n TG: { name: 'Togo', id: 'TG', dialCode: '+228' },\n TK: { name: 'Tokelau', id: 'TK', dialCode: '+690' },\n TO: { name: 'Tonga', id: 'TO', dialCode: '+676' },\n TT: {\n name: 'Trinidad og Tobago (Trinidad and Tobago)',\n id: 'TT',\n dialCode: '+1868',\n },\n TN: { name: 'Tunisia (تونس)', id: 'TN', dialCode: '+216' },\n TR: { name: 'Tyrkia (Türkiye)', id: 'TR', dialCode: '+90' },\n TM: { name: 'Turkmenistan', id: 'TM', dialCode: '+993' },\n TC: {\n name: 'Turks- og Caicosøyene (Turks and Caicos Islands)',\n id: 'TC',\n dialCode: '+1649',\n },\n TV: { name: 'Tuvalu', id: 'TV', dialCode: '+688' },\n VI: {\n name: 'De amerikanske Jomfruøyer (U.S. Virgin Islands)',\n id: 'VI',\n dialCode: '+1340',\n },\n UG: { name: 'Uganda', id: 'UG', dialCode: '+256' },\n UA: { name: 'Ukraina (Україна)', id: 'UA', dialCode: '+380' },\n AE: {\n name: 'De forente arabiske emirater (الإمارات العربية المتحدة)',\n id: 'AE',\n dialCode: '+971',\n },\n GB: { name: 'Storbritannia (United Kingdom)', id: 'GB', dialCode: '+44' },\n US: { name: 'USA (United States)', id: 'US', dialCode: '+1' },\n UY: { name: 'Uruguay', id: 'UY', dialCode: '+598' },\n UZ: { name: 'Usbekistan (Ўзбекистон)', id: 'UZ', dialCode: '+998' },\n VU: { name: 'Vanuatu', id: 'VU', dialCode: '+678' },\n VE: { name: 'Venezuela', id: 'VE', dialCode: '+58' },\n VN: { name: 'Vietnam (Việt Nam)', id: 'VN', dialCode: '+84' },\n EH: { name: 'Vest-Sahara (Western Sahara)', id: 'EH', dialCode: '+212' },\n WF: {\n name: 'Wallis- og Futunaøyene (Wallis-et-Futuna)',\n id: 'WF',\n dialCode: '+681',\n },\n YE: { name: 'Yemen (اليمن)', id: 'YE', dialCode: '+967' },\n ZM: { name: 'Zambia', id: 'ZM', dialCode: '+260' },\n ZW: { name: 'Zimbabwe', id: 'ZW', dialCode: '+263' },\n AX: { name: 'Åland', id: 'AX', dialCode: '+358' },\n};\n",".inputs-container {\n .input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n select {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .select > div {\n margin-right: -1px;\n }\n}\n\n.inputs-container--small-screen-xs {\n @media only screen and (max-width: 600px) {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n }\n}\n\n.inputs-container--small-screen-sm {\n @media only screen and (max-width: 960px) {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n }\n}\n\n.inputs-container--small-screen-md {\n @media only screen and (max-width: 1280px) {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n }\n}\n\n.inputs-container--small-screen-lg {\n @media only screen and (max-width: 1920px) {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n }\n}\n\n.inputs-container--small-screen-xl {\n .input {\n border-top-right-radius: 0;\n }\n\n select {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n margin-bottom: -1px;\n }\n}\n\nselect:focus-visible,\nselect:hover {\n z-index: var(--dds-zindex-absolute-element);\n & ~ svg {\n z-index: var(--dds-zindex-absolute-element);\n }\n}\n\n.calling-code {\n left: var(--dds-spacing-x0-5);\n}\n","import {\n type ReactNode,\n type RefObject,\n useContext,\n useEffect,\n useId,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport styles from './Popover.module.css';\nimport {\n type Placement,\n useCombinedRef,\n useFloatPosition,\n useMountTransition,\n useOnClickOutside,\n useOnKeyDown,\n useReturnFocusOnBlur,\n} from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn, isEmpty } from '../../utils';\nimport { Button } from '../Button';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { CloseIcon } from '../Icon/icons';\nimport { Paper, type ResponsiveProps } from '../layout';\nimport { Heading } from '../Typography';\nimport { usePopoverContext } from './Popover.context';\nimport { ThemeContext } from '../ThemeProvider';\n\nexport type PopoverSizeProps = Pick<\n ResponsiveProps,\n 'width' | 'height' | 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight'\n>;\n\nexport type PopoverProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Header. Bruker default semantisk heading hvis verdien er en `string`. */\n header?: string | ReactNode;\n /**Om lukkeknapp skal vises.\n * @default true\n */\n withCloseButton?: boolean;\n /**Spesifiserer hvor komponenten skal plasseres i forhold til anchor-elementet.\n * @default \"bottom\"\n */\n placement?: Placement;\n /**Angir rotnode hvor popover skal rendres.\n * @default themeProviderRef\n */\n parentElement?: HTMLElement;\n /**Angir om popover skal rendre i en portal eller ikke.\n * @default \"false\"\n */\n portal?: boolean;\n /**Avstand fra anchor-elementet i px.\n * @default 8\n */\n offset?: number;\n /** Ekstra logikk kjørt når popover mister fokus. */\n onBlur?: () => void;\n /**Custom størrelse. */\n sizeProps?: PopoverSizeProps;\n /** Om focus skal returneres ved `blur`\n * @default true\n */\n returnFocusOnBlur?: boolean;\n /**Anchor ref ved custom kontrollert bruk uten `<PopoverGroup>` Kun for corner cases. */\n anchorRef?: RefObject<HTMLElement | null>;\n /**Spesifiserer om popover er åpen ved custom kontrollert bruk uten `<PopoverGroup>` Kun for corner cases. */\n isOpen?: boolean;\n /**Callback for lukking ved custom kontrollert bruk uten `<PopoverGroup>` Kun for corner cases. */\n onClose?: () => void;\n }\n>;\n\nexport const Popover = ({\n id,\n header,\n withCloseButton = true,\n onBlur,\n children,\n placement = 'bottom',\n parentElement,\n portal = false,\n offset = 8,\n sizeProps = {},\n returnFocusOnBlur = true,\n className,\n htmlProps = {},\n anchorRef,\n isOpen: propIsOpen,\n onClose: propOnClose,\n ref,\n ...rest\n}: PopoverProps) => {\n const { refs, styles: positionStyles } = useFloatPosition(null, {\n offset,\n placement,\n });\n const { maxHeight, maxWidth, minHeight, minWidth, height, width } = sizeProps;\n\n const context = usePopoverContext();\n const themeContext = useContext(ThemeContext);\n const portalTarget = parentElement ?? themeContext?.el;\n\n const {\n floatStyling: contextFloatStyling,\n setFloatOptions,\n floatingRef: contextFloatingRef,\n popoverId: contextPopoverId,\n onClose: contextOnClose,\n isOpen: contextIsOpen,\n anchorEl: contextAnchorEl,\n } = context;\n\n const hasContext = !isEmpty(context);\n const generatedId = useId();\n const uniquePopoverId = id ?? `${generatedId}-popover`;\n\n const [\n popoverId,\n anchorEl,\n isOpen = false,\n floatingRef,\n floatStyling,\n onClose,\n ] = hasContext\n ? [\n contextPopoverId,\n contextAnchorEl,\n contextIsOpen,\n contextFloatingRef,\n contextFloatStyling,\n contextOnClose,\n ]\n : [\n uniquePopoverId,\n anchorRef?.current && anchorRef.current,\n propIsOpen,\n refs.setFloating,\n positionStyles.floating,\n propOnClose,\n ];\n\n if (!hasContext) {\n refs.setReference(anchorEl || null);\n }\n\n const hasTransitionedIn = useMountTransition(isOpen, 400);\n\n const popoverRef = useReturnFocusOnBlur(\n isOpen && hasTransitionedIn && returnFocusOnBlur,\n () => {\n onClose?.();\n onBlur?.();\n },\n anchorEl && anchorEl,\n );\n\n const multiRef = useCombinedRef(ref, popoverRef, floatingRef);\n\n useEffect(() => {\n setFloatOptions && setFloatOptions({ placement, offset });\n }, [placement, offset]);\n\n // hooks when without context\n useOnClickOutside([popoverRef.current, anchorEl], () => {\n if (isOpen && !hasContext) onClose?.();\n });\n\n useOnKeyDown('Escape', () => {\n if (isOpen && !hasContext) onClose?.();\n });\n\n const hasTitle = !!header;\n\n const openCn = hasTransitionedIn && isOpen ? 'open' : 'closed';\n\n const popover = (\n <Paper\n {...getBaseHTMLProps(\n popoverId,\n cn(\n className,\n styles.container,\n utilStyles['visibility-transition'],\n utilStyles[`visibility-transition--${openCn}`],\n focusStyles.focusable,\n ),\n htmlProps,\n rest,\n )}\n ref={multiRef}\n tabIndex={-1}\n height={height}\n maxHeight={maxHeight}\n minHeight={minHeight}\n width={width}\n maxWidth={maxWidth}\n minWidth={minWidth}\n style={{\n ...htmlProps.style,\n ...floatStyling,\n }}\n role=\"dialog\"\n elevation={3}\n border=\"border-subtle\"\n >\n {header && (\n <div className={styles.header}>\n {typeof header === 'string' ? (\n <Heading level={2} typographyType=\"headingMedium\">\n {header}\n </Heading>\n ) : (\n header\n )}\n </div>\n )}\n <div\n className={\n !hasTitle && withCloseButton\n ? styles['content--closable--no-header']\n : ''\n }\n >\n {children}\n </div>\n {withCloseButton && (\n <Button\n icon={CloseIcon}\n purpose=\"tertiary\"\n size=\"small\"\n onClick={onClose}\n aria-label=\"Lukk\"\n className={styles['close-button']}\n />\n )}\n </Paper>\n );\n\n return isOpen || hasTransitionedIn\n ? portal && portalTarget\n ? createPortal(popover, portalTarget)\n : popover\n : null;\n};\n\nPopover.displayName = 'Popover';\n",".container {\n position: absolute;\n width: -moz-fit-content;\n width: fit-content;\n z-index: var(--dds-zindex-popover);\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1)\n var(--dds-spacing-x1-5) var(--dds-spacing-x1);\n}\n\n.content--closable--no-header {\n margin-top: var(--dds-spacing-x2);\n}\n\n.header {\n margin-right: var(--dds-spacing-x2);\n}\n\n.close-button {\n position: absolute;\n top: var(--dds-spacing-x0-25);\n right: var(--dds-spacing-x0-25);\n}\n","import {\n type Dispatch,\n type SetStateAction,\n createContext,\n useContext,\n} from 'react';\n\nimport { type FloatingStyles, type UseFloatPositionOptions } from '../../hooks';\n\ninterface PopoverContextType {\n floatStyling: FloatingStyles;\n setFloatOptions: Dispatch<\n SetStateAction<UseFloatPositionOptions | undefined>\n >;\n floatingRef: (node: HTMLElement | null) => void;\n popoverId: string;\n anchorEl: HTMLElement;\n onClose: () => void;\n isOpen: boolean;\n}\n\nexport const PopoverContext = createContext<Partial<PopoverContextType>>({});\n\nexport const usePopoverContext = () => useContext(PopoverContext);\n","import {\n type DetailedHTMLProps,\n type Dispatch,\n type HTMLAttributes,\n Children as ReactChildren,\n type ReactNode,\n type SetStateAction,\n cloneElement,\n isValidElement,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { PopoverContext } from './Popover.context';\nimport {\n type UseFloatPositionOptions,\n useCombinedRef,\n useFloatPosition,\n useOnClickOutside,\n useOnKeyDown,\n} from '../../hooks';\n\nexport interface PopoverGroupProps {\n /** Barna til wrapperen: anchor-element som det første og `<Popover>` som det andre. */\n children: ReactNode;\n /**Forteller `<Popover>` om den skal være åpen på første render. */\n isInitiallyOpen?: boolean;\n /**Implementerer kontrollert tilstand: forteller `<Popover>` om den skal være åpen. */\n isOpen?: boolean;\n /**Implementerer kontrollert tilstand: funksjon for å kontrollere `isOpen`. */\n setIsOpen?: Dispatch<SetStateAction<boolean>>;\n /**Callback når <Popover> åpnes. */\n onOpen?: () => void;\n /**Callback når <Popover> lukkes. */\n onClose?: () => void;\n /** `id` til `<Popover>.` */\n popoverId?: string;\n}\n\nexport const PopoverGroup = ({\n isOpen: propIsOpen,\n setIsOpen: propSetIsOpen,\n onClose,\n onOpen,\n isInitiallyOpen = false,\n children,\n popoverId,\n}: PopoverGroupProps) => {\n const [internalIsOpen, internalSetIsOpen] = useState(isInitiallyOpen);\n\n const open = propIsOpen ?? internalIsOpen;\n const setOpen = propSetIsOpen ?? internalSetIsOpen;\n\n const generatedId = useId();\n const uniquePopoverId = popoverId ?? `${generatedId}-popover`;\n const [floatOptions, setFloatOptions] = useState<UseFloatPositionOptions>();\n const { refs, styles: positionStyles } = useFloatPosition(null, floatOptions);\n\n const handleClose = () => {\n setOpen(false);\n onClose && onClose();\n };\n\n const handleOpen = () => {\n setOpen(true);\n onOpen && onOpen();\n };\n\n const handleToggle = () => {\n if (open) {\n handleClose();\n } else {\n handleOpen();\n }\n };\n\n const buttonRef = useRef<HTMLElement>(null);\n const anchorRef = refs.setReference;\n const combinedAnchorRef = useCombinedRef(buttonRef, anchorRef);\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const floatingRef = refs.setFloating;\n const combinedPopoverRef = useCombinedRef(popoverRef, floatingRef);\n\n useOnKeyDown(['Esc', 'Escape'], () => {\n if (open) {\n handleClose();\n buttonRef.current?.focus();\n }\n });\n\n const elements: Array<HTMLElement | null> = [popoverRef.current!];\n if (buttonRef.current) elements.push(buttonRef.current);\n\n useOnClickOutside(elements, () => {\n if (open) handleClose();\n });\n\n const isAnchorChild = (i: number): boolean => i === 0;\n\n const Children = ReactChildren.map(children, (child, childIndex) => {\n return (\n isValidElement<\n DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>\n >(child) &&\n (isAnchorChild(childIndex)\n ? cloneElement(child, {\n 'aria-haspopup': 'dialog',\n 'aria-controls': uniquePopoverId,\n 'aria-expanded': open,\n onClick: handleToggle,\n ref: combinedAnchorRef,\n })\n : child)\n );\n });\n\n return (\n <PopoverContext\n value={{\n floatStyling: positionStyles.floating,\n setFloatOptions,\n floatingRef: combinedPopoverRef,\n popoverId: uniquePopoverId,\n onClose: handleClose,\n isOpen: open,\n anchorEl: buttonRef.current ?? undefined,\n }}\n >\n {Children}\n </PopoverContext>\n );\n};\n\nPopoverGroup.displayName = 'PopoverGroup';\n","import {\n Children,\n type ForwardRefExoticComponent,\n type ReactElement,\n type ReactNode,\n cloneElement,\n isValidElement,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { ProgressTrackerContext } from './ProgressTracker.context';\nimport styles from './ProgressTracker.module.css';\nimport { ProgressTrackerItem } from './ProgressTrackerItem';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { StylelessOList } from '../helpers';\nimport { scrollbar } from '../helpers/styling/utilStyles.module.css';\nimport { Box } from '../layout';\n\nexport type ProgressTrackerProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /** Indeksen til det aktive steget.\n * @default 0\n */\n activeStep?: number;\n /** Ekstra logikk ved klikking på et steg. */\n onStepChange?: (step: number) => void;\n /**Retning stegene gjengis i. OBS! Ikke tilpasset mindre skjermer. */\n direction?: Direction;\n }\n>;\n\ntype ProgressTrackerComponent =\n ForwardRefExoticComponent<ProgressTrackerProps> & {\n Item: typeof ProgressTrackerItem;\n };\n\nexport const ProgressTracker: ProgressTrackerComponent = (() => {\n const Res = ({\n id,\n activeStep = 0,\n onStepChange,\n direction = 'column',\n children,\n className,\n htmlProps = {},\n ...rest\n }: ProgressTrackerProps) => {\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 steps = useMemo(() => {\n const validChildren = removeInvalidChildren(children);\n const itemsWithIndex = passIndexPropToProgressTrackerItem(validChildren);\n return itemsWithIndex;\n }, [children]);\n\n const isRow = direction === 'row';\n\n const { 'aria-label': ariaLabel } = htmlProps;\n\n return (\n <ProgressTrackerContext\n value={{\n activeStep: thisActiveStep,\n handleStepChange: handleChange,\n direction,\n }}\n >\n <nav\n aria-label={ariaLabel ?? 'stegprogresjon'}\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n >\n <Box\n as={StylelessOList}\n display=\"flex\"\n flexDirection={direction}\n alignItems=\"start\"\n gap={isRow ? 'x0.5' : 'x0.125'}\n overflowX={isRow ? 'auto' : undefined}\n margin=\"0\"\n padding={isRow ? 'x0.25' : '0'}\n className={cn(styles.list, scrollbar)}\n >\n {steps}\n </Box>\n </nav>\n </ProgressTrackerContext>\n );\n };\n\n (Res as ProgressTrackerComponent).Item = ProgressTrackerItem;\n (Res as ProgressTrackerComponent).displayName = 'ProgressTracker';\n return Res as ProgressTrackerComponent;\n})();\n\nfunction removeInvalidChildren<TProps extends object>(children: ReactNode) {\n return Children.toArray(children).filter(isValidElement<TProps>);\n}\n\nfunction passIndexPropToProgressTrackerItem<TProps extends object>(\n children: Array<ReactElement<TProps>>,\n) {\n return Children.map(children, (item, index) =>\n cloneElement(item, {\n ...item.props,\n index,\n }),\n );\n}\n","import { createContext, useContext } from 'react';\n\nimport { type Direction } from '../../types';\n\ninterface ProgressTrackerContextType {\n activeStep: number;\n handleStepChange?: (index: number) => void;\n direction: Direction;\n}\n\nexport const ProgressTrackerContext = createContext<ProgressTrackerContextType>(\n {\n activeStep: 0,\n direction: 'column',\n },\n);\n\nexport const useProgressTrackerContext = () =>\n useContext(ProgressTrackerContext);\n",".list {\n --dds-progress-tracker-connector-width: 1px;\n --dds-progress-tracker-item-number-size: 1.75rem;\n}\n\n.list-item:not(:first-child)::before {\n content: '';\n display: block;\n}\n\n.list-item--column:not(:first-child)::before {\n border-right: var(--dds-progress-tracker-connector-width) solid\n var(--dds-color-border-default);\n width: var(--dds-progress-tracker-connector-width);\n height: 1.125rem;\n margin-left: calc(\n (var(--dds-progress-tracker-item-number-size) / 2) -\n (var(--dds-progress-tracker-connector-width) / 2)\n );\n margin-bottom: var(--dds-spacing-x0-125);\n}\n\n.list-item--row:not(:first-child)::before {\n border-top: var(--dds-progress-tracker-connector-width) solid\n var(--dds-color-border-default);\n height: var(--dds-progress-tracker-connector-width);\n width: 1.875rem;\n margin-top: calc(\n (var(--dds-progress-tracker-item-number-size) / 2) -\n (var(--dds-progress-tracker-connector-width) / 2)\n );\n margin-right: var(--dds-spacing-x0-5);\n}\n\n.item-button {\n background: none;\n border: none;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template-columns: var(--dds-progress-tracker-item-number-size) 1fr;\n justify-content: flex-start;\n align-items: center;\n font-family: inherit;\n gap: var(--dds-spacing-x0-5);\n cursor: pointer;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: all 0.2s;\n }\n\n &:hover > .item-number--active-incomplete {\n background-color: var(--dds-color-surface-action-resting);\n border-color: var(--dds-color-border-action-default);\n color: var(--dds-color-text-on-action);\n }\n\n &:hover > .item-number--inactive-incomplete {\n background-color: var(--dds-color-surface-hover-default);\n border-color: var(--dds-color-border-action-hover);\n color: var(--dds-color-text-action-hover);\n }\n\n &:hover > .item-number--active-completed,\n &:hover > .item-number--inactive-completed {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-border-action-hover);\n color: var(--dds-color-icon-on-action);\n }\n\n &:hover > .item-text--active-completed,\n &:hover > .item-text--active-incomplete {\n color: var(--dds-color-text-action-resting);\n text-decoration-color: transparent;\n }\n\n &:hover > .item-text--inactive-completed,\n &:hover > .item-text--inactive-incomplete {\n color: var(--dds-color-text-action-hover);\n text-decoration-color: var(--dds-color-text-action-hover);\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n}\n\n.item-div {\n cursor: default;\n}\n\n.item-number {\n border-radius: var(--dds-border-radius-rounded);\n z-index: var(--dds-zindex-absolute-element);\n font-weight: var(--dds-font-weight-bold);\n border: 2px solid;\n height: var(--dds-progress-tracker-item-number-size);\n width: var(--dds-progress-tracker-item-number-size);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border-color 0.2s,\n color 0.2s;\n }\n}\n\n.item-number--disabled {\n background-color: var(--dds-color-surface-default);\n border-color: var(--dds-color-border-default);\n color: var(--dds-color-text-subtle);\n}\n\n.item-number--active-incomplete,\n.item-number--active-completed,\n.item-number--inactive-completed {\n background-color: var(--dds-color-surface-action-resting);\n border-color: var(--dds-color-border-action-default);\n color: var(--dds-color-text-on-action);\n}\n\n.item-number--inactive-incomplete {\n background-color: var(--dds-color-surface-default);\n border-color: var(--dds-color-border-action-default);\n color: var(--dds-color-text-action-resting);\n}\n\n.item-text {\n text-decoration: underline;\n text-align: start;\n transition: text-decoration-color 0.2s;\n}\n\n.item-text--disabled {\n color: var(--dds-color-text-subtle);\n text-decoration-color: transparent;\n}\n\n.item-text--active-completed,\n.item-text--active-incomplete {\n color: var(--dds-color-text-action-resting);\n text-decoration-color: transparent;\n}\n\n.item-text--inactive-completed,\n.item-text--inactive-incomplete {\n color: var(--dds-color-text-medium);\n text-decoration-color: var(--dds-color-text-medium);\n}\n","import { type ComponentPropsWithRef, useMemo } from 'react';\n\nimport { useProgressTrackerContext } from './ProgressTracker.context';\nimport styles from './ProgressTracker.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { Icon } from '../Icon';\nimport { CheckIcon } from '../Icon/icons';\nimport { type SvgIcon } from '../Icon/utils';\nimport { Box } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\ntype ItemState =\n | 'activeCompleted'\n | 'activeIncomplete'\n | 'inactiveCompleted'\n | 'inactiveIncomplete'\n | 'disabled';\n\nconst toItemState = (\n active: boolean,\n completed: boolean,\n disabled: boolean,\n): ItemState => {\n if (disabled) {\n return 'disabled';\n }\n\n if (active) {\n return completed ? 'activeCompleted' : 'activeIncomplete';\n } else {\n return completed ? 'inactiveCompleted' : 'inactiveIncomplete';\n }\n};\n\ntype StateHyphen =\n | 'disabled'\n | 'active-incomplete'\n | 'active-completed'\n | 'inactive-incomplete'\n | 'inactive-completed';\n\nconst itemStateCn: Record<ItemState, StateHyphen> = {\n disabled: 'disabled',\n activeCompleted: 'active-completed',\n activeIncomplete: 'active-incomplete',\n inactiveCompleted: 'inactive-completed',\n inactiveIncomplete: 'inactive-incomplete',\n};\n\nexport interface BaseItemProps {\n /** Om steget er valgt eller ikke. Settes av konsument. */\n active?: boolean;\n /** Om steget er ferdig eller ikke. Settes av konsument.\n * @default false\n */\n completed?: boolean;\n /** Om steget skal være disabled. Settes av konsument.\n * @default false\n */\n disabled?: boolean;\n /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */\n icon?: SvgIcon;\n /** Indeksen til steget. NB! Denne settes automatisk av forelder og skal ikke settes manuelt. */\n index?: number;\n}\n\nexport type ProgressTrackerItemProps =\n | BaseComponentPropsWithChildren<\n HTMLButtonElement,\n BaseItemProps & {\n /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */\n onClick?: (index: number) => void;\n }\n >\n | BaseComponentPropsWithChildren<\n HTMLDivElement,\n BaseItemProps & {\n onClick?: undefined;\n }\n >;\n\nconst getVisuallyHiddenTextBefore = (index: number) => `${index + 1}. trinn, `;\n\nconst getVisuallyHiddenTextAfter = (completed: boolean) =>\n `, ${completed ? 'ferdig' : 'ikke ferdig'}`;\n\nexport const ProgressTrackerItem = (props: ProgressTrackerItemProps) => {\n const {\n id,\n className,\n htmlProps,\n index = 0,\n completed = false,\n disabled = false,\n onClick,\n icon,\n children,\n ...rest\n } = props;\n\n const { activeStep, handleStepChange, direction } =\n useProgressTrackerContext();\n const active = activeStep === index;\n const itemState = toItemState(active, completed, disabled);\n\n const handleClick = () => {\n if (!disabled) {\n onClick && onClick(index);\n handleStepChange && handleStepChange(index);\n }\n };\n\n const stepNumberContent = useMemo(() => {\n if (completed) {\n return <Icon icon={CheckIcon} iconSize=\"small\" />;\n }\n\n if (icon !== undefined) {\n return <Icon icon={icon} iconSize=\"small\" />;\n }\n\n return index + 1;\n }, [completed, icon, index]);\n\n const stepContent = (\n <>\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n aria-hidden\n className={cn(\n styles['item-number'],\n styles[`item-number--${itemStateCn[itemState]}`],\n typographyStyles['body-small'],\n )}\n >\n {stepNumberContent}\n </Box>\n <div\n className={cn(\n styles['item-text'],\n styles[`item-text--${itemStateCn[itemState]}`],\n typographyStyles['body-medium'],\n )}\n >\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenTextBefore(index)}\n </VisuallyHidden>\n {children}\n <VisuallyHidden as=\"span\">\n {getVisuallyHiddenTextAfter(completed)}\n </VisuallyHidden>\n </div>\n </>\n );\n\n return (\n <Box\n as=\"li\"\n display={direction === 'row' ? 'flex' : undefined}\n aria-current={active ? 'step' : undefined}\n className={cn(styles['list-item'], styles[`list-item--${direction}`])}\n >\n {handleStepChange ? (\n <button\n {...getBaseHTMLProps(\n id,\n cn(className, styles['item-button'], focusable),\n htmlProps as ComponentPropsWithRef<'button'>,\n rest,\n )}\n onClick={() => handleClick()}\n disabled={disabled}\n >\n {stepContent}\n </button>\n ) : (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, cn(styles['item-button'], styles['item-div'])),\n htmlProps as ComponentPropsWithRef<'div'>,\n rest,\n )}\n >\n {stepContent}\n </div>\n )}\n </Box>\n );\n};\n\nProgressTrackerItem.displayName = 'ProgressTracker.Item';\n","import { type ComponentPropsWithRef, useId } from 'react';\n\nimport { Label } from '../Typography';\nimport utilStyles from './../helpers/styling/utilStyles.module.css';\nimport styles from './ProgressBar.module.css';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { type CommonInputProps, getInputWidth } from '../helpers';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\n\nexport type ProgressBarSize = 'medium' | 'small';\n\nexport type ProgressBarProps = Pick<\n CommonInputProps,\n 'tip' | 'errorMessage' | 'label' | 'width'\n> & {\n /**\n * Størrelse.\n * @default \"medium\"\n */\n size?: ProgressBarSize;\n /**\n * Indikerer i hvor stor grad prosessen er fullført.\n * Den skal ha verdi over 0; mindre eller lik `max`, mindre eller lik 1 hvis `max` ikke er satt.\n * Hvis verdien er `undefined` eller ugyldig blir komponenten \"indeterminate\".\n */\n value?: number;\n /**\n * Verdi som indikerer at prosessen er fullført; maksimal verdi.\n * @default 1\n */\n max?: number;\n} & Omit<ComponentPropsWithRef<'progress'>, 'max' | 'value'>;\n\nexport const ProgressBar = ({\n label,\n tip,\n errorMessage,\n size = 'medium',\n 'aria-describedby': ariaDescribedby,\n value,\n width,\n max,\n id,\n className,\n style,\n ...rest\n}: ProgressBarProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-searchInput`;\n const hasErrorMessage = !!errorMessage;\n const hasTip = !!tip;\n const hasLabel = !!label;\n const hasValidMax = !!max && max > 0;\n\n /**\n * Verdi skal være mindre eller lik max når max finnes; og mindre eller lik 1 hvis ikke.\n * Komponenten er \"indeterminate\" hvis value ikke er gyldig.\n */\n const hasValidValue =\n !!value &&\n value > 0 &&\n ((max !== undefined && value <= max) || (max === undefined && value <= 1));\n\n const tipId = derivativeIdGenerator(uniqueId, 'tip');\n const errorMessageId = derivativeIdGenerator(uniqueId, 'errorMessage');\n\n const fillPrecentage = hasValidValue && (value / (max ?? 1)) * 100 + '%';\n const isIndeterminate = !hasValidValue && !hasErrorMessage;\n return (\n <Box width=\"100%\" className={className} style={style}>\n {hasLabel ? <Label htmlFor={uniqueId}>{label}</Label> : undefined}\n <progress\n id={uniqueId}\n className={utilStyles['visually-hidden']}\n value={hasValidValue ? value : undefined}\n max={hasValidMax ? max : undefined}\n aria-describedby={spaceSeparatedIdListGenerator([\n hasTip ? tipId : undefined,\n hasErrorMessage ? errorMessageId : undefined,\n ariaDescribedby,\n ])}\n {...rest}\n >\n {fillPrecentage}\n </progress>\n <Box\n width={getInputWidth(width)}\n height={size === 'small' ? 'x0.75' : 'x1.5'}\n className={cn(styles.progress)}\n >\n <Box\n height=\"100%\"\n width={isIndeterminate ? '25%' : fillPrecentage ? fillPrecentage : 0}\n className={cn(\n styles.fill,\n isIndeterminate && styles['fill--indeterminate'],\n fillPrecentage === '100%' && styles['fill--done'],\n errorMessage && styles['fill--error'],\n )}\n />\n </Box>\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n </Box>\n );\n};\n\nProgressBar.displayName = 'ProgressBar';\n",".progress {\n background-color: var(--dds-color-surface-medium);\n border: 1px solid var(--dds-color-border-default);\n border-radius: var(--dds-border-radius-surface);\n}\n\n.fill {\n background-color: var(--dds-color-surface-action-resting);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n width 0.2s,\n background-color 0.2s;\n }\n}\n\n.fill--done {\n background-color: var(--dds-color-surface-success-strong);\n}\n\n.fill--error {\n background-color: var(--dds-color-surface-action-danger-resting);\n}\n\n.fill--indeterminate {\n animation: indeterminate 2s infinite linear;\n}\n\n@keyframes indeterminate {\n 0% {\n transform: translateX(0);\n }\n 50% {\n transform: translateX(300%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n","import {\n type ChangeEvent,\n type ComponentPropsWithRef,\n useId,\n useState,\n} from 'react';\n\nimport { useAutocompleteSearch } from './AutocompleteSearch.context';\nimport styles from './Search.module.css';\nimport { type SearchButtonProps, type SearchSize } from './Search.types';\nimport { createEmptyChangeEvent, typographyTypes } from './Search.utils';\nimport { SearchSuggestions } from './SearchSuggestions';\nimport { useCombinedRef } from '../../hooks';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { Button } from '../Button';\nimport { Input, type InputProps } from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { Icon, type IconSize } from '../Icon';\nimport { CloseSmallIcon, SearchIcon } from '../Icon/icons';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box, Grid, HStack, type ResponsiveProps, VStack } from '../layout';\nimport { Label, getTypographyCn } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\nimport { VisuallyHidden } from '../VisuallyHidden';\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 getPadding = (\n size: SearchSize,\n showIcon: boolean,\n): ResponsiveProps['padding'] => {\n /**Avhengig av størrelse på tømmeknapp */\n const paddingRight = (textSize: string) => `calc(\n var(--dds-spacing-x1) + ${textSize} * 1.5 + var(--dds-spacing-x0-5)\n )`;\n /**Avhengig av størrelse på søkeikonet */\n const paddingLeft = (iconSize: string) => `calc(\n var(--dds-spacing-x0-75) + ${iconSize} + var(--dds-spacing-x0-5)\n )`;\n\n const pRSmallButton = paddingRight('0.875rem');\n const pRMediumButton = paddingRight('1rem');\n const pLSmallIcon = paddingLeft('var(--dds-icon-size-small)');\n const pLMediumIcon = paddingLeft('var(--dds-icon-size-medium)');\n\n const paddingMap = {\n large: `x1 ${pRMediumButton} x1 ${showIcon ? pLMediumIcon : 'x0.75'}`,\n medium: `x0.75 ${pRSmallButton} x0.75 ${showIcon ? pLMediumIcon : 'x0.75'}`,\n small: `x0.5 ${pRSmallButton} x0.5 ${showIcon ? pLSmallIcon : 'x0.75'}`,\n };\n\n return paddingMap[size];\n};\n\nexport type SearchProps = Pick<InputProps, 'tip' | 'label'> & {\n /**Størrelsen på komponenten. */\n componentSize?: SearchSize;\n /**Props for søkeknappen. */\n buttonProps?: SearchButtonProps;\n /**Om søkeikonet skal vises. */\n showIcon?: boolean;\n} & Pick<InputProps, 'width'> &\n Omit<ComponentPropsWithRef<'input'>, 'width'>;\n\nexport const Search = ({\n componentSize = 'medium',\n buttonProps,\n showIcon = true,\n name,\n label,\n tip,\n id,\n value,\n width,\n onChange,\n className,\n style,\n 'aria-describedby': ariaDescribedby,\n ref,\n ...rest\n}: SearchProps) => {\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 const inputGroup = (\n <HStack\n position=\"relative\"\n width={!showSearchButton ? width : undefined}\n className={!showSearchButton ? className : undefined}\n >\n {showIcon && (\n <Icon\n icon={SearchIcon}\n iconSize={getIconSize(componentSize)}\n className={cn(\n inputStyles['input-group__absolute-element'],\n styles['search-icon'],\n )}\n />\n )}\n <Box\n as={Input}\n {...rest}\n ref={combinedRef}\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 width=\"100%\"\n padding={getPadding(componentSize, showIcon)}\n className={cn(\n styles.input,\n typographyStyles[getTypographyCn(typographyTypes[componentSize])],\n )}\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 <Button\n icon={CloseSmallIcon}\n size={componentSize === 'large' ? 'medium' : 'small'}\n purpose=\"tertiary\"\n aria-label=\"Tøm\"\n onClick={clearInput}\n className={styles['clear-button']}\n />\n )}\n </HStack>\n );\n return (\n <VStack gap=\"x0.125\">\n {hasLabel && <Label htmlFor={uniqueId}>{label}</Label>}\n <div>\n {showSearchButton ? (\n <Grid\n className={className}\n width={width}\n columnGap=\"x0.5\"\n rowGap=\"0\"\n marginInline=\"0\"\n gridTemplateColumns=\"1fr auto\"\n style={style}\n >\n {inputGroup}\n <Button\n size={componentSize}\n onClick={onClick}\n {...otherButtonProps}\n >\n {buttonLabel ?? 'Søk'}\n </Button>\n </Grid>\n ) : (\n inputGroup\n )}\n {renderInputMessage(tip, tipId)}\n </div>\n </VStack>\n );\n};\n\nSearch.displayName = 'Search';\n","import {\n type ChangeEvent,\n type MouseEvent,\n type RefObject,\n createContext,\n useContext,\n} from 'react';\n\nexport interface AutocompleteSearchContextType {\n onValueChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n onSugggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n suggestions?: Array<string>;\n showSuggestions?: boolean;\n inputValue?: string;\n inputRef?: RefObject<HTMLInputElement | null> | null;\n suggestionsRef?: RefObject<HTMLDivElement | null> | null;\n}\n\nexport const AutocompleteSearchContext =\n createContext<AutocompleteSearchContextType>({});\n\nexport const useAutocompleteSearch = () => {\n return useContext(AutocompleteSearchContext);\n};\n",".with-button-container {\n display: grid;\n grid-template-columns: 1fr auto;\n}\n\n.input {\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}\n\n.search-icon {\n left: var(--dds-spacing-x0-75);\n}\n\n.clear-button {\n position: absolute;\n top: 50%;\n transform: translate(0, -50%);\n right: var(--dds-spacing-x1);\n\n width: var(--dds-icon-size-medium);\n height: var(--dds-icon-size-medium);\n}\n\n.suggestions {\n z-index: var(--dds-zindex-dropdown);\n}\n","import { type ChangeEvent } from 'react';\n\nimport { type SearchSize } from './Search.types';\nimport { type StaticTypographyType } from '../Typography';\n\nexport const typographyTypes: Record<SearchSize, StaticTypographyType> = {\n small: 'bodySmall',\n medium: 'bodyMedium',\n large: 'bodyLarge',\n};\n\n/**\n * Lager en change-event som kan resette verdien i et input-felt.\n * Dette vil resultere i en event som har: event.target.value = ''.\n *\n * @param inputElementId Id'en til et gitt input-felt\n * @returns En change-event som har en tom streng som target value\n */\nexport function createEmptyChangeEvent(\n inputElementId: string,\n): ChangeEvent<HTMLInputElement> {\n const inputElement = document.getElementById(\n inputElementId,\n ) as HTMLInputElement;\n\n inputElement.value = '';\n\n const emptyChangeEvent: ChangeEvent<HTMLInputElement> = {\n target: inputElement,\n currentTarget: inputElement,\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isTrusted: false,\n preventDefault: () => null,\n stopPropagation: () => null,\n nativeEvent: new Event('input'),\n persist: () => null,\n type: 'change',\n timeStamp: Date.now(),\n isDefaultPrevented: () => false,\n isPropagationStopped: () => false,\n };\n\n return emptyChangeEvent;\n}\n","import { type ComponentPropsWithRef, useEffect, useRef } from 'react';\n\nimport { useCombinedRef } from '../../hooks';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport styles from '../OverflowMenu/OverflowMenu.module.css';\n\nexport type SearchSuggestionItemProps = {\n focus?: boolean;\n index?: number;\n} & ComponentPropsWithRef<'button'>;\n\nexport const SearchSuggestionItem = ({\n focus,\n className,\n ref,\n ...rest\n}: SearchSuggestionItemProps) => {\n const itemRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n\n useEffect(() => {\n if (focus) {\n itemRef.current?.focus();\n }\n }, [focus]);\n\n return (\n <button\n ref={combinedRef}\n className={cn(\n className,\n styles.list__item,\n styles['list__item--link'],\n focusStyles['focusable--inset'],\n utilStyles['normalize-button'],\n )}\n {...rest}\n tabIndex={focus ? 0 : -1}\n />\n );\n};\n\nSearchSuggestionItem.displayName = 'SearchSuggestionItem';\n","import { type MouseEvent } from 'react';\n\nimport { type SearchProps } from './Search';\nimport styles from './Search.module.css';\nimport { typographyTypes } from './Search.utils';\nimport { SearchSuggestionItem } from './SearchSuggestionItem';\nimport { useRoveFocus } from '../../hooks';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn, derivativeIdGenerator } from '../../utils';\nimport { StylelessList } from '../helpers';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Box, Paper } from '../layout';\nimport { getTypographyCn } from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type SearchSuggestionsProps = BaseComponentProps<\n HTMLDivElement,\n Pick<SearchProps, 'componentSize'> & {\n /**Forslag som vises i listen. */\n suggestions?: Array<string>;\n /** Om listen skal vises. */\n showSuggestions?: boolean;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionClick?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Maks antall forslag vist i listen. */\n maxSuggestions?: number;\n /**Id til `<Search>`. */\n searchId: string;\n }\n>;\n\nexport const SearchSuggestions = ({\n id,\n searchId,\n className,\n htmlProps,\n suggestions = [],\n showSuggestions,\n componentSize = 'medium',\n onSuggestionClick,\n maxSuggestions,\n ...rest\n}: SearchSuggestionsProps) => {\n const suggestionsHeaderId = derivativeIdGenerator(\n searchId,\n 'suggestions-header',\n );\n\n const [focus] = useRoveFocus(suggestions?.length, showSuggestions);\n\n const suggestionsToRender = maxSuggestions\n ? suggestions?.slice(maxSuggestions)\n : suggestions;\n\n return (\n <Paper\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.suggestions,\n utilStyles.scrollbar,\n utilStyles['visibility-transition'],\n showSuggestions\n ? utilStyles['visibility-transition--open']\n : utilStyles['visibility-transition--closed'],\n ),\n htmlProps,\n rest,\n )}\n aria-hidden={!showSuggestions}\n border=\"border-default\"\n position=\"absolute\"\n top=\"100%\"\n width=\"100%\"\n maxHeight=\"300px\"\n overflowY=\"scroll\"\n marginBlock=\"x0.25 0\"\n >\n <Box\n as=\"h2\"\n paddingInline=\"0 x1\"\n id={suggestionsHeaderId}\n className={typographyStyles['body-xsmall']}\n >\n Søkeforslag\n </Box>\n <StylelessList role=\"listbox\" aria-labelledby={suggestionsHeaderId}>\n {suggestionsToRender.map((suggestion, index) => {\n return (\n <li key={index} role=\"option\">\n <SearchSuggestionItem\n index={index}\n focus={focus === index && showSuggestions}\n aria-label={`søk på ${suggestion}`}\n onClick={onSuggestionClick}\n aria-setsize={suggestionsToRender.length}\n aria-posinset={index}\n className={\n typographyStyles[\n getTypographyCn(typographyTypes[componentSize])\n ]\n }\n >\n {suggestion}\n </SearchSuggestionItem>\n </li>\n );\n })}\n </StylelessList>\n </Paper>\n );\n};\n\nSearchSuggestions.displayName = 'SearchSuggestions';\n","import {\n type ChangeEvent,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport {\n AutocompleteSearchContext,\n type AutocompleteSearchContextType,\n} from './AutocompleteSearch.context';\nimport { useOnClickOutside, useOnKeyDown } from '../../hooks';\nimport { searchFilter } from '../../utils';\n\ninterface WeightedValue {\n text: string;\n relevance: number;\n}\n\nexport interface WeightedSearchData {\n array: Array<WeightedValue>;\n sortFunction?: (a: WeightedValue, b: WeightedValue) => number;\n}\n\nexport interface SearchData {\n array: Array<string>;\n sortFunction?: (a: string, b: string) => number;\n}\n\nexport interface SearchAutocompleteWrapperProps {\n /**Array med data som kan søkes på og eventuelt tilhørende sorteringsfunksjon. Array kan bestå av elementer av typen `string` eller objekter med vekt og tekst.*/\n data?: SearchData | WeightedSearchData;\n /** Ekstra callback ved `onChange` i `<Search>`. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /**Callback når et forslag blir valgt, inkludert søkefunksjon. */\n onSuggestionSelection?: () => void;\n /** Custom filter for forslag. */\n filter?: (sugestion: string, query: string) => boolean;\n /**Minst lengde på query når forslag skal vises.\n * @default 2\n */\n queryLength?: number;\n /** Barnet til subkomponenten - `<Search>`. */\n children?: ReactNode;\n /**Initielle `value` i `<Search>`. */\n value?: string;\n}\n\nexport const SearchAutocompleteWrapper = (\n props: SearchAutocompleteWrapperProps,\n) => {\n const {\n value,\n data,\n filter,\n queryLength = 2,\n onChange,\n onSuggestionSelection,\n children,\n } = props;\n\n const [inputValue, setInputValue] = useState(value ?? '');\n const [suggestions, setSuggestions] = useState<Array<string>>([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n\n const closeSuggestions = () =>\n showSuggestions === true && setShowSuggestions(false);\n\n const openSuggestions = () =>\n showSuggestions === false && setShowSuggestions(true);\n\n useEffect(() => {\n if (suggestions.length > 0) {\n openSuggestions();\n } else {\n closeSuggestions();\n }\n }, [suggestions]);\n\n const isWeightedValueData = (\n data: SearchData | WeightedSearchData,\n ): data is WeightedSearchData =>\n (data as WeightedSearchData).array[0].relevance !== undefined;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const query = e.target.value;\n handleSetInputValue(query);\n let finalSuggestions: Array<string> = [];\n\n if (query.length >= queryLength) {\n if (data) {\n if (isWeightedValueData(data)) {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: Array<WeightedValue> = array.filter(\n suggestion =>\n filter\n ? filter(suggestion.text, query)\n : searchFilter(suggestion.text, query),\n );\n\n finalSuggestions = filteredSuggestions\n .sort(sortFunction ? (a, b) => sortFunction(a, b) : undefined)\n .map(item => item.text);\n } else {\n const { sortFunction, array } = data;\n\n const filteredSuggestions: Array<string> = array.filter(suggestion =>\n filter\n ? filter(suggestion, query)\n : searchFilter(suggestion, query),\n );\n\n finalSuggestions = filteredSuggestions.sort(\n sortFunction ? (a, b) => sortFunction(a, b) : undefined,\n );\n }\n }\n setSuggestions(finalSuggestions);\n } else {\n setSuggestions([]);\n }\n onChange && onChange(e);\n };\n\n const handleSuggestionClick = (e: MouseEvent<HTMLButtonElement>) => {\n setSuggestions([]);\n handleSetInputValue((e.target as HTMLButtonElement).innerText);\n onSuggestionSelection && onSuggestionSelection();\n closeSuggestions();\n };\n\n const handleSetInputValue = (value: string | undefined) => {\n setInputValue(value ?? '');\n };\n\n const inputRef = useRef<HTMLInputElement>(null);\n const suggestionsRef = useRef<HTMLDivElement>(null);\n\n useOnClickOutside([inputRef.current, suggestionsRef.current], () => {\n closeSuggestions();\n });\n\n useOnKeyDown('Tab', () => closeSuggestions());\n\n const contextProps: AutocompleteSearchContextType = {\n showSuggestions,\n inputRef,\n suggestionsRef,\n suggestions,\n onValueChange: handleChange,\n inputValue,\n onSugggestionClick: handleSuggestionClick,\n };\n return (\n <AutocompleteSearchContext value={contextProps}>\n {children}\n </AutocompleteSearchContext>\n );\n};\n\nSearchAutocompleteWrapper.displayName = 'SearchAutocompleteWrapper';\n","import { Search as BaseSearch, type SearchProps } from './Search';\nimport {\n SearchAutocompleteWrapper,\n type SearchAutocompleteWrapperProps,\n type SearchData,\n type WeightedSearchData,\n} from './SearchAutocompleteWrapper';\nimport {\n SearchSuggestions,\n type SearchSuggestionsProps,\n} from './SearchSuggestions';\n\ntype SearchCompoundProps = typeof BaseSearch & {\n AutocompleteWrapper: typeof SearchAutocompleteWrapper;\n Suggestions: typeof SearchSuggestions;\n};\n\nconst Search = BaseSearch as SearchCompoundProps;\n\nSearch.AutocompleteWrapper = SearchAutocompleteWrapper;\nSearch.Suggestions = SearchSuggestions;\n\nexport { Search };\n\nexport type {\n SearchProps,\n SearchData,\n WeightedSearchData,\n SearchAutocompleteWrapperProps,\n SearchSuggestionsProps,\n};\n\nexport { SearchAutocompleteWrapper };\nexport { SearchSuggestions };\nexport * from './Search.types';\n","import { type ChangeEvent, useId } from 'react';\n\nimport { type RadioButtonProps, type RadioValue } from './RadioButton.types';\nimport {\n type RadioButtonGroupContextProps,\n useRadioButtonGroup,\n} from './RadioButtonGroupContext';\nimport { type Nullable, getBaseHTMLProps } from '../../../types';\nimport {\n cn,\n readOnlyChangeHandler,\n readOnlyClickHandler,\n readOnlyKeyDownHandler,\n} from '../../../utils';\nimport focusStyles from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { Typography } from '../../Typography';\nimport { Label, SelectionControl } from '../SelectionControl.styles';\nimport { selectionControlTypographyProps } from '../SelectionControl.utils';\n\nconst getIsChecked = ({\n value,\n group,\n checked,\n}: {\n value: RadioValue;\n group: Nullable<RadioButtonGroupContextProps>;\n checked: boolean | undefined;\n}): boolean => {\n if (checked !== undefined) return checked;\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 = ({\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}: RadioButtonProps) => {\n const { className: htmlPropsClassName, style, ...restHtmlProps } = htmlProps;\n\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-radioButton`;\n const hasChildren = !!children;\n const hasLabel = !!label;\n\n const radioButtonGroup = useRadioButtonGroup();\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange && onChange(event);\n radioButtonGroup?.onChange(event, event.target.value);\n };\n\n const describedByIds = [];\n if (radioButtonGroup?.errorMessageId)\n describedByIds.push(radioButtonGroup?.errorMessageId);\n if (ariaDescribedby) describedByIds.push(ariaDescribedby);\n\n const isReadOnly = readOnly || radioButtonGroup?.readOnly;\n const isDisabled = disabled || radioButtonGroup?.disabled;\n const hasError = error || radioButtonGroup?.error;\n const isChecked = getIsChecked({ value, group: radioButtonGroup, checked });\n\n return (\n <Label\n hasError={hasError}\n disabled={isDisabled}\n readOnly={isReadOnly}\n style={style}\n className={cn(className, htmlPropsClassName)}\n hasText={hasLabel}\n htmlFor={uniqueId}\n controlType=\"radio\"\n >\n <input\n {...getBaseHTMLProps(uniqueId, restHtmlProps, rest)}\n type=\"radio\"\n name={name ?? radioButtonGroup?.name}\n disabled={isDisabled}\n required={required || !!radioButtonGroup?.required}\n checked={isChecked}\n onChange={readOnlyChangeHandler(isReadOnly, handleChange)}\n value={value}\n aria-describedby={\n describedByIds.length > 0 ? describedByIds.join(' ') : undefined\n }\n aria-invalid={hasError ? true : undefined}\n className={cn(\n utilStyles['hide-input'],\n focusStyles['focusable-sibling'],\n )}\n onKeyDown={readOnlyKeyDownHandler(\n 'selectionControl',\n isReadOnly,\n htmlProps.onKeyDown,\n )}\n onClick={readOnlyClickHandler(isReadOnly, htmlProps.onClick)}\n />\n <SelectionControl\n controlType=\"radio\"\n className={focusStyles['focus-styled-sibling']}\n />\n {hasChildren ? (\n children\n ) : hasLabel ? (\n <Typography {...selectionControlTypographyProps}>{label}</Typography>\n ) : null}\n </Label>\n );\n};\n\nRadioButton.displayName = 'RadioButton';\n","import { type ChangeEvent, createContext, useContext } from 'react';\n\nimport { type RadioValue } from './RadioButton.types';\nimport { type Nullable } from '../../../types';\n\nexport interface RadioButtonGroupContextProps {\n disabled: boolean;\n readOnly: boolean;\n name?: string;\n value?: RadioValue;\n defaultValue?: RadioValue;\n error: boolean;\n errorMessageId?: string;\n required: boolean;\n onChange: (event: ChangeEvent<HTMLInputElement>, v: RadioValue) => void;\n}\n\nexport const RadioButtonGroupContext =\n createContext<Nullable<RadioButtonGroupContextProps>>(null);\n\nexport const useRadioButtonGroup = () => {\n return useContext(RadioButtonGroupContext);\n};\n","import { type ChangeEvent, type HTMLAttributes, useId, useState } from 'react';\n\nimport {\n RadioButtonGroupContext,\n type RadioButtonGroupContextProps,\n} from './RadioButtonGroupContext';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../../types';\nimport { convertBooleanishToBoolean } from '../../../types/Booleanish';\nimport { cn } from '../../../utils';\nimport { renderInputMessage } from '../../InputMessage';\nimport { type SelectionControlGroupCommonProps } from '../common/SelectionControl.types';\nimport styles from '../SelectionControl.module.css';\nimport { GroupLabel } from '../SelectionControl.styles';\n\nexport type RadioButtonGroupProps<T extends string | number> =\n BaseComponentPropsWithChildren<\n HTMLDivElement,\n SelectionControlGroupCommonProps & {\n /** Gir alle barna `name` prop.*/\n name?: string;\n /**Funksjonen for onChange-event for barna. */\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n value: T | undefined,\n ) => void;\n /** Gjør alle barna påkrevd ved å gi dem `required` prop. Legger en markør (*) bak ledeteksten. */\n required?: boolean;\n /**Verdi - en `<RadioButton>` med denne verdien blir valgt med controlled state. */\n value?: T | undefined;\n /**Default verdi - en `<RadioButton>` med denne verdien blir forhåndsvalgt med uncontrolled state. */\n defaultValue?: T | undefined;\n },\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n >;\n\nexport const RadioButtonGroup = <T extends string | number = string>({\n name,\n label,\n groupId,\n errorMessage,\n tip,\n disabled = false,\n readOnly = false,\n direction = 'row',\n value,\n defaultValue,\n children,\n required = false,\n onChange,\n id,\n className,\n htmlProps = {},\n ...rest\n}: RadioButtonGroupProps<T>) => {\n const { 'aria-required': ariaRequired = false } = htmlProps;\n\n const [uncontrolledValue, setUncontrolledValue] = useState<T | undefined>(\n defaultValue,\n );\n\n const generatedId = useId();\n const uniqueGroupId = groupId ?? `${generatedId}-radioButtonGroup`;\n\n const isControlled = value !== undefined;\n const groupValue = isControlled ? value : uncontrolledValue;\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (!isControlled) {\n setUncontrolledValue(newValue as T);\n }\n if (onChange) {\n onChange(e, newValue as T);\n }\n };\n\n const hasErrorMessage = !!errorMessage;\n const showRequiredMarker =\n required || convertBooleanishToBoolean(ariaRequired);\n\n const tipId = tip && `${uniqueGroupId}-tip`;\n const errorMessageId = errorMessage && `${uniqueGroupId}-errorMessage`;\n\n const contextProps: RadioButtonGroupContextProps = {\n name,\n disabled,\n defaultValue,\n error: hasErrorMessage,\n errorMessageId: errorMessageId,\n required,\n readOnly,\n value: groupValue,\n onChange: handleChange,\n };\n\n return (\n <div\n {...getBaseHTMLProps(\n id,\n cn(className, styles.container),\n { ...htmlProps, 'aria-required': ariaRequired },\n rest,\n )}\n >\n {label !== undefined ? (\n <GroupLabel\n id={uniqueGroupId}\n readOnly={readOnly}\n showRequiredMarker={showRequiredMarker}\n >\n {label}\n </GroupLabel>\n ) : null}\n {renderInputMessage(tip, tipId)}\n <RadioButtonGroupContext value={{ ...contextProps }}>\n <div\n role=\"radiogroup\"\n aria-labelledby={uniqueGroupId}\n aria-describedby={tipId}\n aria-errormessage={errorMessageId}\n className={cn(styles.group, styles[`group--${direction}`])}\n >\n {children}\n </div>\n </RadioButtonGroupContext>\n {renderInputMessage(undefined, undefined, errorMessage, errorMessageId)}\n </div>\n );\n};\n\nRadioButtonGroup.displayName = 'RadioButtonGroup';\n","@keyframes ddsSkeletonAnimation {\n 0% {\n opacity: 1;\n }\n to {\n opacity: 0.5;\n }\n}\n\n.container {\n animation: ddsSkeletonAnimation 0.75s ease-out infinite alternate;\n background-color: var(--dds-color-surface-skeleton);\n}\n","import { type Property } from 'csstype';\nimport { type ComponentPropsWithRef } from 'react';\n\nimport styles from './Skeleton.module.css';\nimport { cn } from '../../utils';\nimport { Box, type ResponsiveProps } from '../layout';\n\nexport type SkeletonAppearance = 'circle' | 'rectangle';\n\nexport type SkeletonProps = {\n /**CSS border radius.\n * @default \"var(--dds-border-radius-surface)\"\n */\n borderRadius?: Property.BorderRadius;\n} & Pick<ResponsiveProps, 'width' | 'height'> &\n ComponentPropsWithRef<'div'>;\n\nexport const Skeleton = ({\n width,\n height,\n borderRadius = 'var(--dds-border-radius-surface)',\n className,\n style,\n ref,\n ...rest\n}: SkeletonProps) => {\n return (\n <Box\n width={width}\n height={height}\n ref={ref}\n className={cn(className, styles.container)}\n style={{ ...style, borderRadius }}\n {...rest}\n ></Box>\n );\n};\n\nSkeleton.displayName = 'Skeleton';\n",".wrapper {\n padding: var(--dds-spacing-x0-25);\n box-sizing: border-box;\n position: absolute;\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 opacity: 0;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n}\n\n.wrapper:focus-within {\n clip: auto;\n height: auto;\n overflow: auto;\n width: 100%;\n z-index: var(--dds-zindex-skiptocontent);\n opacity: 1;\n}\n","import { type Property } from 'csstype';\n\nimport styles from './SkipToContent.module.css';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport { Contrast } from '../Contrast';\nimport { Link } from '../Typography';\n\nexport type SkipToContentProps = BaseComponentProps<\n HTMLAnchorElement,\n {\n /** Teksten som vises i lenka.\n * @default \"Til hovedinnhold\"\n */\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 * @default 0\n */\n top?: Property.Top;\n }\n>;\n\nexport const SkipToContent = ({\n text = 'Til hovedinnhold',\n top = 0,\n id,\n className,\n htmlProps = {},\n ...rest\n}: SkipToContentProps) => {\n const { className: htmlPropsClassName, style, ...restHtmlProps } = htmlProps;\n\n return (\n <Contrast\n className={cn(className, htmlPropsClassName, styles.wrapper)}\n style={{ ...style, top }}\n >\n <Link {...getBaseHTMLProps(id, restHtmlProps, rest)}>{text}</Link>\n </Contrast>\n );\n};\n\nSkipToContent.displayName = 'SkipToContent';\n","import { type ComponentPropsWithRef, useState } from 'react';\n\nimport styles from './SplitButton.module.css';\nimport { type ExtractStrict } from '../../types';\nimport { cn } from '../../utils';\nimport { Button, type ButtonProps, type ButtonPurpose } from '../Button';\nimport { ChevronDownIcon, ChevronUpIcon } from '../Icon/icons';\nimport {\n OverflowMenu,\n OverflowMenuButton,\n type OverflowMenuButtonProps,\n OverflowMenuGroup,\n OverflowMenuList,\n} from '../OverflowMenu';\n\nexport type SplitButtonPurpose = ExtractStrict<\n ButtonPurpose,\n 'primary' | 'secondary'\n>;\n\nexport type SplitButtonPrimaryActionProps = Omit<\n ButtonProps,\n 'size' | 'purpose'\n>;\nexport type SplitButtonSecondaryActionsProps = Array<OverflowMenuButtonProps>;\n\nexport type SplitButtonProps = Pick<ButtonProps, 'size'> & {\n /**Props for primær handling. Samme props som for `<Button>` unntatt `size` og `purpose`. */\n primaryAction: SplitButtonPrimaryActionProps;\n /**Props for sekunære handlinger. */\n secondaryActions: SplitButtonSecondaryActionsProps;\n /**Formål med knappen.\n * @default \"primary\"\n */\n purpose?: SplitButtonPurpose;\n} & ComponentPropsWithRef<'div'>;\n\nexport const SplitButton = ({\n size,\n primaryAction,\n secondaryActions,\n purpose = 'primary',\n className,\n ...rest\n}: SplitButtonProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const buttonStyleProps: ButtonProps = {\n purpose,\n size,\n };\n\n return (\n <div className={cn(className, styles.container)} {...rest}>\n <Button\n {...buttonStyleProps}\n {...primaryAction}\n iconPosition=\"left\"\n className={styles.main}\n />\n <OverflowMenuGroup isOpen={isOpen} setIsOpen={setIsOpen}>\n <Button\n {...buttonStyleProps}\n icon={isOpen ? ChevronUpIcon : ChevronDownIcon}\n aria-label=\"Åpne liste med flere valg\"\n purpose={purpose}\n className={cn(\n styles.option,\n purpose === 'primary' && styles['option--primary'],\n )}\n />\n <OverflowMenu placement=\"bottom-end\">\n <OverflowMenuList>\n {secondaryActions.map((item, index) => (\n <OverflowMenuButton key={index} {...item}>\n {item.children}\n </OverflowMenuButton>\n ))}\n </OverflowMenuList>\n </OverflowMenu>\n </OverflowMenuGroup>\n </div>\n );\n};\n\nSplitButton.displayName = 'SplitButton';\n",".container {\n display: flex;\n}\n\n.main {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n margin-inline-end: -1px;\n}\n\n.main:focus {\n position: relative;\n z-index: 0;\n}\n\n.option {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.option:focus {\n position: relative;\n z-index: 0;\n}\n\n.option--primary,\n.option--primary:hover {\n border-left: 1px solid var(--dds-color-border-on-action);\n}\n","import {\n Children,\n Fragment,\n cloneElement,\n isValidElement,\n useEffect,\n useState,\n} from 'react';\n\nimport { useCollapsibleTableContext } from './Table.context';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../../utils';\nimport { DescriptionList, DescriptionListTerm } from '../../DescriptionList';\nimport { AnimatedChevronUpDown } from '../../helpers';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { VisuallyHidden } from '../../VisuallyHidden';\nimport { Table, type TableRowProps } from '../normal';\nimport { Cell, type TableCellProps } from '../normal/Cell';\nimport { useIsInTableHead } from '../normal/Head';\nimport { Row } from '../normal/Row';\nimport styles from '../normal/Table.module.css';\n\nexport const CollapsibleRow = ({\n type: _type,\n className,\n mode = 'normal',\n selected,\n hoverable,\n children,\n ref,\n ...rest\n}: TableRowProps) => {\n const isInHead = useIsInTableHead();\n const type = _type ?? (isInHead ? 'head' : 'body');\n const { isCollapsed, headerValues, definingColumnIndex } =\n useCollapsibleTableContext();\n const [childrenCollapsed, setChildrenCollapsed] = useState(true);\n\n useEffect(() => {\n !isCollapsed && setChildrenCollapsed(true);\n }, [isCollapsed]);\n\n const rowProps = (isOpenCollapsibleHeader?: boolean) => {\n return {\n mode,\n selected,\n hoverable,\n className: cn(\n className,\n isOpenCollapsibleHeader && styles['row--colapsible-header--open'],\n ),\n ...rest,\n };\n };\n\n const collapsedHeaderValues = headerValues.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const childrenArray = Children.toArray(children);\n const collapsedChildren = childrenArray.filter(\n (column, index) => definingColumnIndex.indexOf(index) === -1,\n );\n\n const prefix = 'collapsibleRow';\n const collapsibleIds: Array<string> = [];\n\n const collapsedRenderedChildren =\n isCollapsed && collapsedHeaderValues.length > 0\n ? collapsedChildren.map(function (child, index) {\n const id = derivativeIdGenerator(prefix, index.toString());\n collapsibleIds.push(id);\n\n return (\n <Fragment key={`DL-${index}`}>\n <DescriptionListTerm>\n {collapsedHeaderValues[index].content}\n </DescriptionListTerm>\n {isValidElement<TableCellProps>(child) &&\n cloneElement(child, {\n collapsibleProps: { isCollapsibleChild: true },\n })}\n </Fragment>\n );\n })\n : null;\n\n const collapsedRows =\n collapsedRenderedChildren && collapsedRenderedChildren.length > 0 ? (\n <Row {...rowProps()}>\n <Cell colSpan={definingColumnIndex.length + 1}>\n <DescriptionList>{collapsedRenderedChildren}</DescriptionList>\n </Cell>\n </Row>\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 <Row ref={ref} {...rowProps()}>\n <>\n {definingColumnCells}\n <Table.Cell type=\"head\" layout=\"center\">\n Utvid\n <VisuallyHidden as=\"span\">raden</VisuallyHidden>\n </Table.Cell>\n </>\n </Row>\n );\n };\n\n const idList = spaceSeparatedIdListGenerator(collapsibleIds);\n\n const rowWithChevron = () => {\n if (type !== 'body' || !isCollapsed) return null;\n\n return (\n <Row ref={ref} {...rowProps(!childrenCollapsed && true)}>\n {definingColumnCells}\n <Table.Cell>\n <button\n onClick={() => setChildrenCollapsed(!childrenCollapsed)}\n aria-expanded={!childrenCollapsed}\n aria-controls={idList}\n className={cn(\n styles['collapse-button'],\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n focusable,\n )}\n >\n <AnimatedChevronUpDown\n isUp={childrenCollapsed ? false : true}\n height=\"8px\"\n width=\"12px\"\n />\n </button>\n </Table.Cell>\n </Row>\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 <Row ref={ref} {...rowProps()}>\n {children}\n </Row>\n );\n};\n\nCollapsibleRow.displayName = 'CollapsibleTable.Row';\n","import { createContext, useContext } from 'react';\n\nimport { type HeaderValues } from '../normal/Table.types';\n\ninterface CollapsibleTableContextProps {\n isCollapsed?: boolean;\n headerValues: HeaderValues;\n definingColumnIndex: Array<number>;\n}\n\nexport const CollapsibleTableContext =\n createContext<CollapsibleTableContextProps>({\n headerValues: [],\n definingColumnIndex: [0],\n });\nexport const useCollapsibleTableContext = () =>\n useContext(CollapsibleTableContext);\n","import { type ComponentPropsWithRef } from 'react';\n\nexport type TableBodyProps = ComponentPropsWithRef<'tbody'>;\n\nexport const Body = (props: TableBodyProps) => <tbody {...props} />;\n\nBody.displayName = 'Table.Body';\n","import { type ComponentPropsWithRef, createContext, useContext } from 'react';\n\nexport type TableHeadProps = ComponentPropsWithRef<'thead'>;\n\nexport const Head = ({ children, ...rest }: TableHeadProps) => (\n <thead {...rest}>\n <HeadContext value={true}>{children}</HeadContext>\n </thead>\n);\n\nconst HeadContext = createContext(false);\n\nexport function useIsInTableHead(): boolean {\n const isInTableHead = useContext(HeadContext);\n return isInTableHead;\n}\n",".wrapper {\n width: 100%;\n}\n\n.wrapper--scrollable {\n overflow-x: auto;\n}\n\n.table {\n width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n}\n\n.table--with-dividers {\n .row--body {\n border-bottom: 1px solid var(--dds-color-border-default);\n }\n\n .row--colapsible-header--open {\n border-bottom: none;\n }\n}\n\n.table--sticky-header {\n tr th {\n position: sticky;\n top: 0;\n z-index: var(--dds-zindex-sticky);\n }\n}\n\n.table--small {\n font: var(--dds-font-body-small);\n letter-spacing: var(--dds-font-body-small-letter-spacing);\n td,\n th {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n }\n th {\n font: var(--dds-font-heading-xsmall);\n letter-spacing: var(--dds-font-heading-xsmall-letter-spacing);\n background-color: var(--dds-color-surface-default);\n }\n\n .row--body {\n &:nth-of-type(odd) {\n background-color: var(--dds-color-surface-subtle);\n }\n\n &:nth-of-type(even) {\n background-color: var(--dds-color-surface-default);\n }\n }\n}\n\n.table--medium {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n th {\n font: var(--dds-font-heading-small);\n }\n td,\n th {\n padding: var(--dds-spacing-x0-75);\n }\n}\n\n.table--large {\n font: var(--dds-font-body-medium);\n letter-spacing: var(--dds-font-body-medium-letter-spacing);\n th {\n font: var(--dds-font-heading-small);\n }\n td,\n th {\n padding: var(--dds-spacing-x1-5) var(--dds-spacing-x0-75);\n }\n}\n\n.row {\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\n.row--body {\n &:nth-of-type(even) {\n background-color: var(--dds-color-surface-subtle);\n }\n\n &:nth-of-type(odd) {\n background-color: var(--dds-color-surface-default);\n }\n &.row--sum,\n &.row--sum:nth-of-type(even),\n &.row--sum:nth-of-type(odd) {\n border-bottom: 1px solid var(--dds-color-border-default);\n border-top: 1px solid var(--dds-color-border-default);\n background: var(--dds-color-surface-default);\n }\n\n &.row--selected,\n &.row--selected:nth-of-type(even),\n &.row--selected:nth-of-type(odd) {\n background-color: var(--dds-color-surface-selected-default);\n }\n\n &.row--hoverable:hover {\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n\n.cell--head {\n background-color: var(--dds-color-brand-primary-subtle);\n}\n\n.cell--left {\n text-align: left;\n}\n\n.cell--right {\n text-align: right;\n}\n\n.cell--center {\n text-align: center;\n}\n\n.cell__inner {\n display: flex;\n align-items: center;\n gap: var(--dds-spacing-x0-75);\n}\n\n.sort-button {\n gap: var(--dds-spacing-x0-5);\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n display: flex;\n align-items: center;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: all 0.2s;\n }\n}\n\n.collapse-button {\n height: var(--dds-icon-size-medium);\n width: var(--dds-icon-size-medium);\n border-radius: var(--dds-border-radius-button);\n margin-left: auto;\n margin-right: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n\n @media (prefers-reduced-motion: no-preference) {\n transition: all 0.2s;\n }\n\n &:hover {\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n","import { type ComponentPropsWithRef } from 'react';\n\nimport { useIsInTableHead } from './Head';\nimport styles from './Table.module.css';\nimport { cn } from '../../../utils';\nimport { DescriptionListDesc } from '../../DescriptionList';\n\nexport type TableCellType = 'data' | 'head';\nexport type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';\nexport interface CollapsibleProps {\n isCollapsibleChild?: boolean;\n}\n\nexport type TableCellProps = {\n /**\n * Type celle. Returnerer enten `<td>` eller `<th>`.\n * @default \"data\" hvis den er brukt i `<Table.Body>` eller `<Table.Foot>`, 'head' hvis den er i `<Table.Head>`.\n */\n type?: TableCellType;\n /**Layout av innholdet i cellen; legger en flex `<div>` i cellen, unntatt 'none' som ikke legger inn noe. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen.\n * @default \"left\"\n */\n layout?: TableCellLayout;\n /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */\n collapsibleProps?: CollapsibleProps;\n} & (ComponentPropsWithRef<'td'> | ComponentPropsWithRef<'th'>);\n\nexport const Cell = ({\n children,\n type: _type,\n layout = 'left',\n collapsibleProps,\n className,\n ...rest\n}: TableCellProps) => {\n const isInHead = useIsInTableHead();\n const type = _type ?? (isInHead ? 'head' : 'data');\n\n const { isCollapsibleChild } = collapsibleProps ?? {};\n const isComplexLayout = layout === 'text and icon';\n\n return isCollapsibleChild ? (\n <DescriptionListDesc>{children}</DescriptionListDesc>\n ) : type === 'head' ? (\n <th\n {...rest}\n className={cn(\n className,\n !isComplexLayout && styles[`cell--${layout}`],\n styles['cell--head'],\n )}\n >\n {isComplexLayout ? (\n <div className={styles.cell__inner}>{children}</div>\n ) : (\n children\n )}\n </th>\n ) : (\n <td\n {...rest}\n className={cn(className, !isComplexLayout && styles[`cell--${layout}`])}\n >\n {isComplexLayout ? (\n <div className={styles.cell__inner}>{children}</div>\n ) : (\n children\n )}\n </td>\n );\n};\n\nCell.displayName = 'Table.Cell';\n","import { type ComponentPropsWithRef } from 'react';\n\nexport type TableFootProps = ComponentPropsWithRef<'tfoot'>;\n\nexport const Foot = (props: TableFootProps) => <tfoot {...props} />;\n\nFoot.displayName = 'Table.Foot';\n","import { useIsInTableHead } from './Head';\nimport styles from './Table.module.css';\nimport { type TableRowProps } from './Table.types';\nimport { cn } from '../../../utils';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport typographyStyles from '../../Typography/typographyStyles.module.css';\n\nexport const Row = ({\n type: _type,\n mode = 'normal',\n hoverable,\n selected,\n className,\n ...rest\n}: TableRowProps) => {\n const isInHeader = useIsInTableHead();\n const type = _type ?? (isInHeader ? 'head' : 'body');\n return (\n <tr\n className={cn(\n className,\n styles.row,\n type === 'body' && styles['row--body'],\n mode === 'sum' && styles['row--sum'],\n selected && styles['row--selected'],\n hoverable && styles['row--hoverable'],\n (type === 'head' || mode === 'sum') && typographyStyles.bold,\n focusable,\n )}\n {...rest}\n />\n );\n};\n\nRow.displayName = 'Table.Row';\n","import { type MouseEvent } from 'react';\n\nimport { Cell, type TableCellProps } from './Cell';\nimport styles from './Table.module.css';\nimport { cn } from '../../../utils';\nimport { focusable } from '../../helpers/styling/focus.module.css';\nimport utilStyles from '../../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../../Icon';\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n UnfoldMoreIcon,\n} from '../../Icon/icons';\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 = ({\n isSorted,\n sortOrder,\n onClick,\n children,\n ...rest\n}: TableSortCellProps) => (\n <Cell\n type=\"head\"\n aria-sort={isSorted && sortOrder ? sortOrder : undefined}\n {...rest}\n >\n <button\n onClick={onClick}\n aria-description=\"Aktiver for å endre sorteringsrekkefølge\"\n className={cn(\n utilStyles['normalize-button'],\n utilStyles['remove-button-styling'],\n styles['sort-button'],\n focusable,\n )}\n >\n {children} {makeSortIcon(isSorted, sortOrder)}\n </button>\n </Cell>\n);\n\nSortCell.displayName = 'Table.SortCell';\n","import styles from './Table.module.css';\nimport { type TableProps } from './Table.types';\nimport { cn } from '../../../utils';\nimport { scrollbar } from '../../helpers/styling/utilStyles.module.css';\n\nexport const Table = ({\n size = 'medium',\n stickyHeader,\n withDividers,\n className,\n children,\n ...rest\n}: TableProps) => (\n <table\n {...rest}\n className={cn(\n className,\n styles.table,\n styles[`table--${size}`],\n withDividers && styles['table--with-dividers'],\n stickyHeader && styles['table--sticky-header'],\n scrollbar,\n )}\n >\n {children}\n </table>\n);\n\nTable.displayName = 'Table';\n","import {\n type HTMLAttributes,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport styles from './Table.module.css';\nimport { cn } from '../../../utils';\nimport { scrollbar } from '../../helpers/styling/utilStyles.module.css';\nimport { ThemeContext } from '../../ThemeProvider';\n\nexport type TableWrapperProps = HTMLAttributes<HTMLDivElement>;\n\nexport const TableWrapper = ({ className, ...rest }: TableWrapperProps) => {\n const themeContext = useContext(ThemeContext);\n const container = themeContext?.el;\n const containerWidth = container ? container.clientWidth : 0;\n\n const [overflowX, setOverflowX] = useState(false);\n const [themeContainerWidth, setThemeContainerWidth] =\n useState(containerWidth);\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 }, [themeContainerWidth]);\n\n useEffect(() => {\n function handleResize() {\n setThemeContainerWidth(containerWidth);\n }\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n });\n\n return (\n <div\n ref={wrapperRef}\n {...rest}\n className={cn(\n className,\n scrollbar,\n styles.wrapper,\n overflowX && styles['wrapper--scrollable'],\n )}\n />\n );\n};\n\nTableWrapper.displayName = 'Table.Wrapper';\n","import { Body, type TableBodyProps } from './Body';\nimport {\n Cell,\n type TableCellLayout,\n type TableCellProps,\n type TableCellType,\n} from './Cell';\nimport { Foot, type TableFootProps } from './Foot';\nimport { Head, type TableHeadProps } from './Head';\nimport { Row } from './Row';\nimport { SortCell, type SortOrder, type TableSortCellProps } from './SortCell';\nimport { Table as BaseTable } from './Table';\nimport {\n type TableProps,\n type TableRowProps,\n type TableRowType,\n type TableSize,\n} from './Table.types';\nimport { TableWrapper } from './TableWrapper';\n\ntype TableCompoundProps = typeof BaseTable & {\n Wrapper: typeof TableWrapper;\n Head: typeof Head;\n Body: typeof Body;\n Foot: typeof Foot;\n Row: typeof Row;\n Cell: typeof Cell;\n SortCell: typeof SortCell;\n};\n\nconst Table = BaseTable as TableCompoundProps;\n\nTable.Wrapper = TableWrapper;\nTable.Head = Head;\nTable.Body = Body;\nTable.Cell = Cell;\nTable.SortCell = SortCell;\nTable.Row = Row;\nTable.Foot = Foot;\n\nexport { Table };\n\nexport type {\n TableCellProps,\n TableSize,\n TableProps,\n TableRowProps,\n TableRowType,\n TableHeadProps,\n TableBodyProps,\n TableFootProps,\n TableSortCellProps,\n SortOrder,\n TableCellLayout,\n TableCellType,\n};\n\nexport { TableWrapper };\nexport { Head as TableHead };\nexport { Body as TableBody };\nexport { Cell as TableCell };\nexport { SortCell as TableSortCell };\nexport { Row as TableRow };\nexport { Foot as TableFoot };\n","import { type CollapsibleTableProps } from './CollapsibleTable.types';\nimport { CollapsibleTableContext } from './Table.context';\nimport { Table } from '../normal';\n\nexport const CollapsibleTable = ({\n isCollapsed,\n headerValues,\n definingColumnIndex = [0],\n ...rest\n}: CollapsibleTableProps) => {\n return (\n <CollapsibleTableContext\n value={{\n isCollapsed,\n headerValues,\n definingColumnIndex,\n }}\n >\n <Table {...rest} />\n </CollapsibleTableContext>\n );\n};\n\nCollapsibleTable.displayName = 'CollapsibleTable';\n","import { CollapsibleRow } from './CollapsibleRow';\nimport { CollapsibleTable as BaseCollapsibleTable } from './CollapsibleTable';\nimport { type CollapsibleTableProps } from './CollapsibleTable.types';\n\ntype CollapsibleTableCompoundProps = typeof BaseCollapsibleTable & {\n Row: typeof CollapsibleRow;\n};\n\nconst CollapsibleTable = BaseCollapsibleTable as CollapsibleTableCompoundProps;\n\nCollapsibleTable.Row = CollapsibleRow;\n\nexport { CollapsibleTable, type CollapsibleTableProps };\nexport { CollapsibleRow as CollapsibleTableRow };\n","import type * as CSS from 'csstype';\nimport { type ComponentPropsWithRef, useRef } from 'react';\n\nimport { useTabsContext } from './Tabs.context';\nimport styles from './Tabs.module.css';\nimport { useSetTabWidth } from './TabWidthContext';\nimport { useCombinedRef } from '../../hooks';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport { Icon } from '../Icon';\nimport { PlusIcon } from '../Icon/icons';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport type AddTabButtonProps = {\n /** Bredden. Her er det støtte for de samme enhetene som du kan bruke i `grid-template-columns`.\n * @default \"1fr\"\n */\n width?: CSS.Properties['width'];\n index?: number;\n} & ComponentPropsWithRef<'button'>;\n\nexport const AddTabButton = ({\n ref,\n children,\n index,\n className,\n width = '1fr',\n ...rest\n}: AddTabButtonProps) => {\n // Tell parent what my width should be\n // This is used for the grid layout\n useSetTabWidth(index!, width);\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, buttonRef);\n const { tabContentDirection, size } = useTabsContext();\n\n return (\n <button\n {...rest}\n ref={combinedRef}\n className={cn(\n className,\n styles.tab,\n styles[`tab--${tabContentDirection}`],\n typographyStyles[`body-${size}`],\n focusStyles['focusable--inset'],\n )}\n >\n <Icon icon={PlusIcon} iconSize=\"inherit\" />\n <span>{children}</span>\n </button>\n );\n};\n\nAddTabButton.displayName = 'AddTabButton';\n","import { type RefObject, createContext, useContext } from 'react';\n\nimport { type AddTabButtonProps } from './AddTabButton';\nimport { type TabSize } from './Tabs';\nimport { type Direction } from '../../types';\n\ninterface Tabs {\n activeTab: number;\n tabsId: string;\n size: TabSize;\n handleTabChange: (index: number) => void;\n tabListRef: RefObject<HTMLDivElement | null> | null;\n tabPanelsRef: RefObject<HTMLDivElement | null> | null;\n hasTabFocus: boolean;\n setHasTabFocus: (hasFocus: boolean) => void;\n tabContentDirection: Direction;\n addTabButtonProps?: Omit<AddTabButtonProps, 'index'>;\n}\n\nexport const TabsContext = createContext<Tabs>({\n activeTab: 0,\n tabsId: '',\n size: 'small',\n handleTabChange: () => null,\n tabListRef: null,\n tabPanelsRef: null,\n hasTabFocus: false,\n setHasTabFocus: () => null,\n tabContentDirection: 'row',\n addTabButtonProps: undefined,\n});\nexport const useTabsContext = () => useContext(TabsContext);\n",".tabs {\n width: var(--dds-tabs-width);\n}\n\n.tab-row {\n display: grid;\n overflow-x: auto;\n scroll-snap-type: x mandatory;\n border-bottom: 1px solid var(--dds-color-border-subtle);\n\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n transition: var(--dds-focus-transition);\n }\n\n &:focus-visible button {\n outline: none;\n }\n}\n\n.tab-row--standard-widths {\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n}\n\n.tab-row--custom-widths {\n grid-template-columns: var(--dds-tab-widths);\n}\n\n.tab {\n border: none;\n -webkit-user-select: text;\n -moz-user-select: text;\n user-select: text;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-bottom: 2px solid transparent;\n color: var(--dds-color-text-medium);\n background: var(--dds-color-surface-default);\n border-top-left-radius: var(--dds-border-radius-button);\n border-top-right-radius: var(--dds-border-radius-button);\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 background-color 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover {\n color: var(--dds-color-text-default);\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n\n.tab--medium--row {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1)\n var(--dds-spacing-x0-5);\n gap: var(--dds-spacing-x0-5);\n}\n\n.tab--small--row {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-75);\n gap: var(--dds-spacing-x0-125);\n}\n\n.tab--medium--column {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x1);\n gap: var(--dds-spacing-x0-25);\n}\n\n.tab--small--column {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-75);\n}\n\n.tab--row {\n flex-direction: row;\n}\n\n.tab--column {\n flex-direction: column;\n}\n\n.tab--active {\n color: var(--dds-color-text-default);\n border-color: var(--dds-color-surface-action-selected);\n box-shadow: inset 0px -2px 0px 0px var(--dds-color-surface-action-selected);\n}\n","import type * as CSS from 'csstype';\nimport {\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n createContext,\n useContext,\n useLayoutEffect,\n} from 'react';\n\ntype Width = CSS.Properties['width'];\n\ninterface TabContextState {\n updateWidth: (index: number, width: Width) => void;\n removeTab: (index: number) => void;\n}\n\nconst TabContext = createContext<TabContextState | null>(null);\n\ninterface TabWidthContextProviderProps {\n children: ReactNode;\n onChangeWidths: Dispatch<SetStateAction<Array<Width>>>;\n}\n\nexport function TabWidthContextProvider({\n children,\n onChangeWidths,\n}: TabWidthContextProviderProps) {\n return (\n <TabContext\n value={{\n updateWidth: (index, newWidth) => {\n onChangeWidths(prev => {\n const newValue = [...prev];\n newValue[index] = newWidth;\n return newValue;\n });\n },\n removeTab: index => {\n onChangeWidths(prev => {\n const newValue = [...prev];\n newValue.splice(index, 1);\n return newValue;\n });\n },\n }}\n >\n {children}\n </TabContext>\n );\n}\n\nexport function useSetTabWidth(index: number, width: Width) {\n const context = useContext(TabContext);\n\n useLayoutEffect(() => {\n context?.updateWidth(index, width);\n return () => context?.removeTab(index);\n }, [index, width]);\n}\n","import { type HTMLAttributes, useEffect, useId, useRef, useState } from 'react';\n\nimport { type AddTabButtonProps } from './AddTabButton';\nimport { TabsContext } from './Tabs.context';\nimport styles from './Tabs.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n type Direction,\n type Size,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Box, type ResponsiveProps } from '../layout';\n\nexport type TabSize = Extract<Size, 'small' | 'medium'>;\n\nexport type TabsProps = BaseComponentPropsWithChildren<\n HTMLDivElement,\n {\n /**Størrelse på hver `<Tab>`. */\n size?: TabSize;\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 * @default \"row\"\n */\n tabContentDirection?: Direction;\n /** Props for \"Legg til fane\"-knapp. Støtter native HTML attributter og `width`. */\n addTabButtonProps?: Omit<AddTabButtonProps, 'index'>;\n } & Pick<ResponsiveProps, 'width'>,\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>\n>;\n\nexport const Tabs = ({\n id,\n activeTab,\n onChange,\n tabContentDirection = 'row',\n size = 'small',\n addTabButtonProps,\n width,\n children,\n className,\n htmlProps,\n ...rest\n}: TabsProps) => {\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 return (\n <TabsContext\n value={{\n tabsId: uniqueId,\n activeTab: thisActiveTab,\n size,\n handleTabChange,\n tabListRef,\n tabPanelsRef,\n hasTabFocus,\n setHasTabFocus,\n tabContentDirection,\n addTabButtonProps,\n }}\n >\n <Box\n {...getBaseHTMLProps(\n uniqueId,\n cn(className, styles.tabs),\n htmlProps,\n rest,\n )}\n width={width}\n >\n {children}\n </Box>\n </TabsContext>\n );\n};\n\nTabs.displayName = 'Tabs';\n","import type * as CSS from 'csstype';\nimport {\n type ButtonHTMLAttributes,\n type Dispatch,\n type KeyboardEvent,\n type MouseEvent,\n type SetStateAction,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\n\nimport { useTabsContext } from './Tabs.context';\nimport styles from './Tabs.module.css';\nimport { useSetTabWidth } from './TabWidthContext';\nimport { useCombinedRef } from '../../hooks';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\ntype PickedAttributes = Pick<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'onClick' | 'onKeyDown'\n>;\n\nexport type TabProps = BaseComponentPropsWithChildren<\n HTMLButtonElement,\n {\n /**Spesifiserer om fanen er aktiv.\n * @default false\n */\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 /** Bredden til `<Tab>`. Her er det støtte for de samme enhetene som du kan bruke i `grid-template-columns`.\n * @default \"1fr\"\n */\n width?: CSS.Properties['width'];\n } & PickedAttributes,\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof PickedAttributes>\n>;\n\nexport const Tab = ({\n active = false,\n icon,\n children,\n focus,\n setFocus,\n index,\n onClick,\n onKeyDown,\n id,\n className,\n htmlProps = {},\n width = '1fr',\n ref,\n ...rest\n}: TabProps) => {\n // Tell parent what my width should be\n // This is used for the grid layout\n useSetTabWidth(index!, width);\n\n const itemRef = useRef<HTMLAnchorElement | HTMLButtonElement>(null);\n const combinedRef = useCombinedRef(ref, itemRef);\n const { tabContentDirection, size } = useTabsContext();\n\n const { type = 'button', ...restHtmlProps } = htmlProps;\n const fixedHtmlProps = { type, ...restHtmlProps };\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 = (e: MouseEvent<HTMLButtonElement>) => {\n handleSelect();\n onClick?.(e);\n };\n\n const handleOnKeyDown = (\n e: KeyboardEvent<HTMLAnchorElement> & KeyboardEvent<HTMLButtonElement>,\n ) => {\n handleSelect();\n onKeyDown?.(e);\n };\n\n return (\n <button\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n styles.tab,\n styles[`tab--${size}--${tabContentDirection}`],\n active && styles['tab--active'],\n styles[`tab--${tabContentDirection}`],\n typographyStyles[`body-${size}`],\n focusStyles['focusable--inset'],\n ),\n fixedHtmlProps,\n rest,\n )}\n ref={combinedRef}\n aria-selected={active}\n role=\"tab\"\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 type * as CSS from 'csstype';\nimport {\n Children,\n type ComponentPropsWithRef,\n type FocusEvent,\n cloneElement,\n isValidElement,\n useState,\n} from 'react';\n\nimport { AddTabButton } from './AddTabButton';\nimport { type TabProps } from './Tab';\nimport { useTabsContext } from './Tabs.context';\nimport styles from './Tabs.module.css';\nimport { TabWidthContextProvider } from './TabWidthContext';\nimport { useCombinedRef, useRoveFocus } from '../../hooks';\nimport { cn, combineHandlers } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { scrollbar } from '../helpers/styling/utilStyles.module.css';\n\nexport type TabListProps = ComponentPropsWithRef<'div'>;\n\nexport const TabList = ({\n children,\n id,\n style,\n onFocus,\n ref,\n ...rest\n}: TabListProps) => {\n const {\n activeTab,\n tabsId,\n handleTabChange,\n tabListRef,\n hasTabFocus,\n setHasTabFocus,\n addTabButtonProps,\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 hasButton = addTabButtonProps ? true : false;\n\n const tabListChildren = Children\n ? Children.map(children, (child, index) => {\n const handleThisTabChange = () => {\n handleTabChange(index);\n };\n return (\n isValidElement<TabProps>(child) &&\n cloneElement(child, {\n id: `${tabsId}-tab-${index}`,\n htmlProps: {\n ...child.props.htmlProps,\n 'aria-controls': `${tabsId}-panel-${index}`,\n },\n active: activeTab === index,\n index,\n focus: focus === index && hasTabFocus,\n setFocus,\n onClick: combineHandlers(handleThisTabChange, child.props.onClick),\n })\n );\n })\n : [];\n\n const [widths, setWidths] = useState<Array<CSS.Properties['width']>>([]);\n\n const handleOnFocus = (event: FocusEvent<HTMLDivElement, Element>) => {\n setHasTabFocus(true);\n onFocus && onFocus(event);\n };\n\n const handleOnBlur = (event: FocusEvent<HTMLDivElement, Element>) => {\n // Fjern tabIndex fra forrige tab med focus når focus flytter seg til `<TabList>`\n if (tabListRef?.current === event.relatedTarget) {\n setFocus(-1);\n }\n\n if (!tabListRef?.current?.contains(event.relatedTarget)) {\n setHasTabFocus(false);\n }\n };\n\n const customWidths: CSS.Properties = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ['--dds-tab-widths' as any]: widths.join(' '),\n };\n\n return (\n <TabWidthContextProvider onChangeWidths={setWidths}>\n <div\n {...rest}\n ref={combinedRef}\n role=\"tablist\"\n id={uniqueId}\n tabIndex={0}\n onFocus={handleOnFocus}\n onBlur={handleOnBlur}\n className={cn(\n styles['tab-row'],\n !widths && styles['tab-row--standard-widths'],\n styles['tab-row--custom-widths'],\n focusable,\n scrollbar,\n )}\n style={{ ...style, ...customWidths }}\n >\n {tabListChildren}\n {hasButton && (\n <AddTabButton\n index={tabListChildren ? tabListChildren.length : 0}\n {...addTabButtonProps}\n />\n )}\n </div>\n </TabWidthContextProvider>\n );\n};\n\nTabList.displayName = 'TabList';\n","import {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { focusable } from '../helpers/styling/focus.module.css';\nimport { Box } from '../layout';\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 = ({\n active = false,\n children,\n id,\n className,\n htmlProps,\n ...rest\n}: TabPanelProps) => (\n <Box\n padding=\"x0.25\"\n {...getBaseHTMLProps(id, cn(className, focusable), htmlProps, rest)}\n tabIndex={0}\n role=\"tabpanel\"\n hidden={!active}\n >\n {children}\n </Box>\n);\n\nTabPanel.displayName = 'TabPanel';\n","import {\n Children,\n type ComponentPropsWithRef,\n cloneElement,\n isValidElement,\n} from 'react';\n\nimport { type TabPanelProps } from './TabPanel';\nimport { useTabsContext } from './Tabs.context';\nimport { useCombinedRef } from '../../hooks';\n\nexport type TabPanelsProps = ComponentPropsWithRef<'div'>;\n\nexport const TabPanels = ({ children, ref, ...rest }: TabPanelsProps) => {\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<TabPanelProps>(child) &&\n cloneElement(child, {\n id: `${tabsId}-panel-${index}`,\n active,\n htmlProps: {\n 'aria-labelledby': `${tabsId}-tab-${index}`,\n 'aria-expanded': active,\n },\n })\n );\n });\n\n return (\n <div ref={combinedRef} {...rest}>\n {panelChildren}\n </div>\n );\n};\n\nTabPanels.displayName = 'TabPanels';\n",".container {\n border: 1px solid;\n display: inline-flex;\n align-items: center;\n border-radius: var(--dds-border-radius-chip);\n padding: var(--dds-spacing-x0-125) var(--dds-spacing-x0-5);\n}\n\n.container--with-icon {\n padding: var(--dds-spacing-x0-125) var(--dds-spacing-x0-5)\n var(--dds-spacing-x0-125) var(--dds-spacing-x0-25);\n gap: var(--dds-spacing-x0-25);\n}\n\n.container--default--default {\n background-color: var(--dds-color-surface-subtle);\n border-color: var(--dds-color-border-subtle);\n}\n\n.container--default--strong {\n background-color: var(--dds-color-surface-inverse-default);\n border-color: var(--dds-color-surface-inverse-default);\n color: var(--dds-color-text-on-inverse);\n}\n\n.container--success--default {\n background-color: var(--dds-color-surface-success-default);\n border-color: var(--dds-color-border-success);\n\n svg {\n color: var(--dds-color-icon-on-success-default);\n }\n}\n\n.container--success--strong {\n background-color: var(--dds-color-surface-success-strong);\n border-color: var(--dds-color-surface-success-strong);\n\n svg {\n color: var(--dds-color-icon-on-success-strong);\n }\n}\n\n.container--danger--default {\n background-color: var(--dds-color-surface-danger-default);\n border-color: var(--dds-color-border-danger);\n\n svg {\n color: var(--dds-color-icon-on-danger-default);\n }\n}\n\n.container--danger--strong {\n background-color: var(--dds-color-surface-danger-strong);\n border-color: var(--dds-color-surface-danger-strong);\n\n svg {\n color: var(--dds-color-icon-on-danger-strong);\n }\n}\n\n.container--warning--default {\n background-color: var(--dds-color-surface-warning-default);\n border-color: var(--dds-color-border-warning);\n\n svg {\n color: var(--dds-color-icon-on-warning-default);\n }\n}\n\n.container--warning--strong {\n background-color: var(--dds-color-surface-warning-strong);\n border-color: var(--dds-color-surface-warning-strong);\n\n svg {\n color: var(--dds-color-icon-on-warning-strong);\n }\n}\n\n.container--info--default {\n background-color: var(--dds-color-surface-info-default);\n border-color: var(--dds-color-border-info);\n\n svg {\n color: var(--dds-color-icon-on-info-default);\n }\n}\n\n.container--info--strong {\n background-color: var(--dds-color-surface-info-strong);\n border-color: var(--dds-color-surface-info-strong);\n\n svg {\n color: var(--dds-color-icon-on-info-strong);\n }\n}\n","import { type ReactNode } from 'react';\n\nimport styles from './Tag.module.css';\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn } from '../../utils';\nimport { Icon, type SvgIcon } from '../Icon';\nimport {\n CheckCircledIcon,\n ErrorIcon,\n InfoIcon,\n WarningIcon,\n} from '../Icon/icons';\nimport {\n TextOverflowEllipsisInner,\n TextOverflowEllipsisWrapper,\n} from '../Typography';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nconst icons: Record<TagPurpose, SvgIcon | undefined> = {\n info: InfoIcon,\n danger: ErrorIcon,\n warning: WarningIcon,\n success: CheckCircledIcon,\n default: undefined,\n};\n\nexport type TagPurpose = 'success' | 'info' | 'danger' | 'warning' | 'default';\nexport type TagAppearance = 'default' | 'strong';\n\nexport type TagProps = BaseComponentPropsWithChildren<\n HTMLSpanElement,\n {\n /**\n * Innholdet til `<Tag>.` Kan brukes istedenfor `text`.\n */\n children?: ReactNode;\n /**\n * Samme oppførsel som `children`. Er `children` brukt vil denne ignoreres. Tekst som vises i `<Tag>`.\n */\n text?: string;\n /**\n * Formål med status eller kategorisering. Påvirker styling.\n * @default \"default\"\n */\n purpose?: TagPurpose;\n /**\n * Det visuelle uttrykket til komponenten.\n * @default \"default\"\n */\n appearance?: TagAppearance;\n /**\n * Om `<Tag>` skal ha et ikon til venstre for teksten. Tags med `purpose=\"default\"` har aldri ikon.\n * @default false\n */\n withIcon?: boolean;\n }\n>;\n\nexport const Tag = ({\n text,\n purpose = 'default',\n appearance = 'default',\n id,\n className,\n children,\n htmlProps,\n withIcon,\n ...rest\n}: TagProps) => {\n const icon = icons[purpose];\n\n return (\n <TextOverflowEllipsisWrapper\n {...getBaseHTMLProps(\n id,\n cn(\n className,\n typographyStyles['body-small'],\n styles.container,\n withIcon && icon && styles['container--with-icon'],\n styles[`container--${purpose}--${appearance}`],\n ),\n htmlProps,\n rest,\n )}\n >\n {withIcon && icon && <Icon icon={icon} iconSize=\"small\" />}\n <TextOverflowEllipsisInner>{children ?? text}</TextOverflowEllipsisInner>\n </TextOverflowEllipsisWrapper>\n );\n};\n\nTag.displayName = 'Tag';\n","import { type Property } from 'csstype';\nimport React, { useId, useLayoutEffect, useRef, useState } from 'react';\n\nimport styles from './TextInput.module.css';\nimport { type TextInputProps } from './TextInput.types';\nimport {\n cn,\n derivativeIdGenerator,\n spaceSeparatedIdListGenerator,\n} from '../../utils';\nimport { getFormInputIconSize } from '../../utils/icon';\nimport {\n StatefulInput,\n getDefaultText,\n getInputWidth,\n renderCharCounter,\n} from '../helpers';\nimport inputStyles from '../helpers/Input/Input.module.css';\nimport { Icon } from '../Icon';\nimport { renderInputMessage } from '../InputMessage';\nimport { Box } from '../layout';\nimport { Label } from '../Typography';\n\nexport const TextInput = ({\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 ref,\n ...rest\n}: TextInputProps) => {\n const [text, setText] = useState<string>(getDefaultText(value, defaultValue));\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]);\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;\n const hasBottomContainer = 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 inputWidth = getInputWidth(\n width,\n componentSize === 'xsmall' && 'var(--dds-input-default-width-xsmall)',\n );\n\n const generalInputProps = {\n ref,\n type,\n onChange: onChangeHandler,\n componentSize,\n id: uniqueId,\n hasErrorMessage,\n required,\n disabled,\n readOnly,\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 // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const showRequiredStyling = !!(required || ariaRequired);\n\n const preffixPaddingInlineStart: Property.PaddingInlineStart | undefined =\n prefixLength\n ? `calc(var(--dds-spacing-x1) + ${prefixLength}px)`\n : undefined;\n\n const suffixPaddingInlineEnd: Property.PaddingInlineEnd | undefined =\n suffixLength\n ? `calc(var(--dds-spacing-x1) + ${suffixLength}px)`\n : undefined;\n\n let extendedInput = null;\n\n if (hasIcon) {\n extendedInput = (\n <Box className={inputStyles['input-group']} width={inputWidth}>\n {\n <Icon\n icon={icon}\n iconSize={getFormInputIconSize(componentSize)}\n className={cn(\n inputStyles['input-group__absolute-element'],\n styles[`icon--${componentSize}`],\n )}\n />\n }\n <StatefulInput\n className={cn(\n styles.input,\n styles[`with-icon--${componentSize}`],\n styles['input--extended'],\n )}\n {...generalInputProps}\n />\n </Box>\n );\n } else if (hasAffix) {\n extendedInput = (\n <Box\n position=\"relative\"\n display=\"flex\"\n alignItems=\"center\"\n width={inputWidth}\n >\n {prefix && (\n <span\n ref={prefixRef}\n aria-hidden\n className={cn(\n styles.affix,\n styles.prefix,\n disabled && styles['affix--disabled'],\n )}\n >\n {prefix}\n </span>\n )}\n <StatefulInput\n style={{\n paddingInlineStart: preffixPaddingInlineStart,\n paddingInlineEnd: suffixPaddingInlineEnd,\n }}\n className={styles['input--extended']}\n {...generalInputProps}\n />\n {suffix && (\n <span\n ref={suffixRef}\n aria-hidden\n className={cn(\n styles.affix,\n styles.suffix,\n disabled && styles['affix--disabled'],\n )}\n >\n {suffix}\n </span>\n )}\n </Box>\n );\n }\n\n return (\n <div\n className={cn(\n className,\n inputStyles.container,\n styles.container,\n readOnly && styles['container--readonly'],\n disabled && styles['container--disabled'],\n )}\n style={style}\n >\n {hasLabel && (\n <Box\n as={Label}\n display=\"block\"\n htmlFor={uniqueId}\n showRequiredStyling={showRequiredStyling}\n readOnly={readOnly}\n >\n {label}\n </Box>\n )}\n {extendedInput ? (\n extendedInput\n ) : (\n <Box as={StatefulInput} width={inputWidth} {...generalInputProps} />\n )}\n {hasBottomContainer && (\n <Box\n display=\"flex\"\n justifyContent={\n withCharacterCounter\n ? hasMessage\n ? 'space-between'\n : 'flex-end'\n : undefined\n }\n gap=\"x0.5\"\n width={withCharacterCounter ? inputWidth : undefined}\n >\n {renderInputMessage(tip, tipId, errorMessage, errorMessageId)}\n {renderCharCounter(\n characterCounterId,\n withCharacterCounter,\n text.length,\n maxLength,\n )}\n </Box>\n )}\n </div>\n );\n};\n\nTextInput.displayName = 'TextInput';\n",".container {\n color: var(--dds-color-text-default);\n}\n\n.container--readonly {\n color: var(--dds-color-text-medium);\n}\n\n.container--disabled {\n color: var(--dds-color-text-subtle);\n}\n\n.input-width {\n width: var(--dds-textinput-width);\n}\n\n.input {\n &.with-icon--medium {\n padding-left: calc(\n var(--dds-spacing-x0-75) + var(--dds-icon-size-medium) +\n var(--dds-spacing-x0-5)\n );\n }\n &.with-icon--small {\n padding-left: calc(\n var(--dds-spacing-x0-75) + var(--dds-icon-size-small) +\n var(--dds-spacing-x0-5)\n );\n }\n &.with-icon--xsmall {\n padding-left: calc(\n var(--dds-spacing-x0-5) + var(--dds-icon-size-medium) +\n var(--dds-spacing-x0-25)\n );\n }\n}\n\n.input--extended {\n width: 100%;\n}\n\n.icon--medium {\n left: var(--dds-spacing-x0-75);\n}\n\n.icon--small {\n left: var(--dds-spacing-x0-75);\n}\n\n.icon--xsmall {\n left: var(--dds-spacing-x0-5);\n}\n\n.affix {\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: var(--dds-zindex-absolute-element);\n}\n\n.prefix {\n left: 0;\n margin-left: var(--dds-spacing-x0-5);\n padding-right: var(--dds-spacing-x0-5);\n border-right: 1px solid var(--dds-color-border-default);\n}\n\n.suffix {\n right: 0;\n margin-right: var(--dds-spacing-x0-5);\n padding-left: var(--dds-spacing-x0-5);\n border-left: 1px solid var(--dds-color-border-default);\n}\n\n.affix--disabled {\n border-color: var(--dds-color-border-subtle);\n}\n","import { type InputHTMLAttributes, type ReactNode, useId } from 'react';\n\nimport styles from './Toggle.module.css';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport {\n type BaseComponentProps,\n type Size,\n getBaseHTMLProps,\n} from '../../types';\nimport { cn, readOnlyClickHandler, readOnlyKeyDownHandler } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { CheckIcon, LockIcon } from '../Icon/icons';\nimport { Spinner } from '../Spinner';\nimport { VisuallyHidden } from '../VisuallyHidden';\n\nexport type ToggleSize = Extract<Size, 'medium' | 'large'>;\n\nexport type ToggleProps = BaseComponentProps<\n HTMLElement,\n {\n /**Ledetekst; tillater bruk av f.eks. `<VisuallyHidden>` for usynlig tekst. */\n children?: ReactNode;\n /**\n * Callback som blir kalt når brukeren endrer toggle-verdien.\n */\n onChange?: (checked: boolean) => void;\n /**\n * Om toggle er av eller på.\n */\n checked?: boolean;\n /**\n * Den initielle verdien når komponenten brukes uncontrolled.\n * @default false\n */\n defaultChecked?: boolean;\n /**Spesifiserer om input er `disabled`. */\n disabled?: boolean;\n /**\n * Inputelementet blir `readonly` - den kan ikke interageres med. Brukes bl.a. til å presentere input brukeren har fylt ut andre steder.\n */\n readOnly?: boolean;\n /**\n * Indikerer at verdien prosesseres; viser loading-tilstand og setter `aria-disabled`.\n */\n isLoading?: boolean;\n /**\n * Størrelse.\n * @default \"medium\"\n */\n size?: ToggleSize;\n },\n Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'onChange' | 'checked' | 'defaultChecked'\n >\n>;\n\nexport const Toggle = ({\n id,\n children,\n size = 'medium',\n checked: checkedProp,\n defaultChecked,\n onChange,\n disabled,\n readOnly,\n isLoading,\n className,\n htmlProps = {},\n ...rest\n}: ToggleProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggle`;\n const iconSize = size === 'large' ? 'medium' : 'small';\n\n const [checked, setChecked] = useControllableState({\n value: checkedProp,\n defaultValue: defaultChecked ?? false,\n onChange,\n });\n\n return (\n <label\n htmlFor={uniqueId}\n className={cn(\n styles.label,\n styles[size],\n isLoading && styles['label--is-loading'],\n disabled && styles['label--disabled'],\n readOnly && styles['label--read-only'],\n )}\n >\n <input\n {...getBaseHTMLProps(\n uniqueId,\n cn(\n className,\n focusStyles['focusable-sibling'],\n utilStyles['hide-input'],\n ),\n htmlProps,\n rest,\n )}\n type=\"checkbox\"\n checked={checked}\n onChange={e => setChecked(e.target.checked)}\n disabled={disabled}\n aria-disabled={isLoading}\n aria-readonly={readOnly}\n onKeyDown={readOnlyKeyDownHandler(\n 'selectionControl',\n readOnly || isLoading,\n htmlProps.onKeyDown,\n )}\n onClick={readOnlyClickHandler(readOnly || isLoading, htmlProps.onClick)}\n />\n <span className={cn(styles.track, focusStyles['focus-styled-sibling'])}>\n <span className={styles.thumb}>\n {isLoading ? (\n <Spinner size={`var(--dds-icon-size-${size})`} />\n ) : (\n <Icon\n className={styles.checkmark}\n icon={CheckIcon}\n iconSize={iconSize}\n />\n )}\n </span>\n </span>\n <span className={cn(readOnly && styles['labeltext--readonly'])}>\n {readOnly && (\n <Icon\n icon={LockIcon}\n iconSize=\"small\"\n className={styles['icon--read-only']}\n />\n )}\n {children}{' '}\n {isLoading && (\n <VisuallyHidden as=\"span\">Innlastning pågår</VisuallyHidden>\n )}\n </span>\n </label>\n );\n};\n\nToggle.displayName = 'Toggle';\n",".label {\n display: flex;\n align-items: center;\n width: -moz-fit-content;\n width: fit-content;\n gap: var(--dds-spacing-x0-75);\n}\n\n.track {\n display: flex;\n align-items: center;\n background-color: var(--dds-color-surface-medium);\n border-radius: var(--dds-border-radius-rounded);\n border: 1px solid var(--dds-color-border-default);\n @media (prefers-reduced-motion: no-preference) {\n transition:\n background-color 0.2s,\n border 0.2s,\n var(--dds-focus-transition);\n }\n}\n\n.thumb {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dds-border-radius-rounded);\n background-color: var(--dds-color-surface-field-default);\n border: 1px solid var(--dds-color-border-default);\n @media (prefers-reduced-motion: no-preference) {\n transition:\n transform 0.2s,\n border 0.2s,\n width 0.2s;\n }\n}\n\n.thumb .checkmark {\n opacity: 0;\n @media (prefers-reduced-motion: no-preference) {\n transition: opacity 0.2s;\n }\n}\n\n.labeltext--readonly {\n display: flex;\n .icon--read-only {\n align-self: center;\n flex-shrink: 0;\n margin-inline-end: var(--dds-spacing-x0-125);\n }\n}\n\n.medium {\n .track {\n height: var(--dds-spacing-x1-5);\n width: 2.8125rem;\n }\n\n .thumb {\n margin-inline-start: var(--dds-spacing-x0-125);\n height: 1.25rem;\n width: 1.25rem;\n }\n\n input:checked ~ .track > .thumb {\n transform: translateX(1.25rem);\n }\n\n input:checked:enabled:active:not([aria-disabled]):not([aria-readonly])\n ~ .track\n > .thumb {\n transform: translateX(var(--dds-spacing-x1));\n }\n\n input:enabled:active:not([aria-disabled]):not([aria-readonly])\n ~ .track\n > .thumb {\n width: 1.5rem;\n }\n}\n\n.large {\n .track {\n height: 2.125rem;\n width: 3.25rem;\n }\n\n .thumb {\n margin-inline-start: var(--dds-spacing-x0-25);\n height: 1.75rem;\n width: 1.75rem;\n }\n\n input:checked ~ .track > .thumb {\n transform: translateX(var(--dds-spacing-x1));\n }\n\n input:checked:enabled:active:not([aria-disabled]):not([aria-readonly])\n ~ .track\n > .thumb {\n transform: translateX(var(--dds-spacing-x0-75));\n }\n\n input:enabled:active:not([aria-disabled]):not([aria-readonly])\n ~ .track\n > .thumb {\n width: var(--dds-spacing-x2);\n }\n}\n\n.label,\n.label--is-loading {\n input:checked:enabled:not([aria-readonly]) ~ .track {\n background-color: var(--dds-color-surface-action-selected);\n border-color: var(--dds-color-border-action-default);\n\n & > .thumb {\n border-color: var(--dds-color-border-action-default);\n .checkmark {\n color: var(--dds-color-icon-action-resting);\n opacity: 1;\n }\n }\n }\n}\n\n.label {\n cursor: pointer;\n\n &:hover\n input:enabled:checked:not([aria-disabled]):not([aria-readonly])\n ~ .track {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-border-action-hover);\n\n .thumb {\n border-color: var(--dds-color-border-action-hover);\n }\n }\n &:hover input:enabled:not([aria-disabled]):not([aria-readonly]) ~ .track {\n background-color: var(--dds-color-surface-hover-default);\n border-color: var(--dds-color-border-action-hover);\n\n .thumb {\n border-color: var(--dds-color-border-action-hover);\n\n .checkmark {\n color: var(--dds-color-icon-action-hover);\n }\n }\n }\n}\n\n.label--disabled {\n cursor: not-allowed;\n color: var(--dds-color-text-subtle);\n\n input:disabled ~ .track {\n background-color: var(--dds-color-surface-field-disabled);\n }\n\n input:checked:disabled ~ .track {\n background-color: var(--dds-color-surface-action-selected-disabled);\n border-color: var(--dds-color-surface-action-selected-disabled);\n }\n\n input:checked:disabled ~ .track > .thumb {\n border-color: var(--dds-color-surface-action-selected-disabled);\n\n .checkmark {\n color: var(--dds-color-icon-subtle);\n opacity: 1;\n }\n }\n}\n\n.label--read-only {\n cursor: default;\n color: var(--dds-color-text-medium);\n\n input ~ .track {\n background-color: var(--dds-color-surface-default);\n }\n\n input:checked ~ .track {\n background-color: var(--dds-color-surface-inverse-default);\n border-color: var(--dds-color-surface-inverse-default);\n }\n\n input:checked ~ .track > .thumb {\n border-color: var(--dds-color-surface-inverse-default);\n .checkmark {\n color: var(--dds-color-icon-medium);\n opacity: 1;\n }\n }\n}\n\n.label--is-loading {\n cursor: not-allowed;\n}\n","import { type ChangeEvent, useId, useState } from 'react';\n\nimport { ToggleBarContext } from './ToggleBar.context';\nimport styles from './ToggleBar.module.css';\nimport { type ToggleBarProps, type ToggleBarValue } from './ToggleBar.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { combineHandlers } from '../../utils';\nimport { VStack } from '../layout';\nimport { Typography } from '../Typography';\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\n value={{\n size: size,\n onChange: handleChange,\n name: name,\n value: groupValue,\n }}\n >\n <VStack\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n width={width}\n gap=\"x0.125\"\n role=\"radiogroup\"\n aria-labelledby={labelId ?? htmlProps?.['aria-labelledby']}\n >\n {label && (\n <Typography id={labelId} as=\"span\" typographyType=\"labelMedium\">\n {label}\n </Typography>\n )}\n <div className={styles.bar}>{children}</div>\n </VStack>\n </ToggleBarContext>\n );\n};\n\nToggleBar.displayName = 'ToggleBar';\n","import { type ChangeEvent, createContext, useContext } from 'react';\n\nimport { type ToggleBarSize, type ToggleBarValue } from './ToggleBar.types';\n\nexport interface ToggleBarContextType {\n size: ToggleBarSize;\n name?: string;\n value?: ToggleBarValue;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const ToggleBarContext = createContext<ToggleBarContextType>({\n size: 'medium',\n});\n\nexport const useToggleBarContext = () => useContext(ToggleBarContext);\n",".bar {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: 1fr;\n}\n\n.content {\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 background-color: var(--dds-color-surface-default);\n border-right: 1px solid var(--dds-color-border-default);\n border-top: 1px solid var(--dds-color-border-default);\n border-bottom: 1px solid var(--dds-color-border-default);\n border-color: var(--dds-color-border-default);\n\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 var(--dds-focus-transition);\n }\n}\n\n.content--large--just-icon {\n padding: var(--dds-spacing-x1);\n\n svg {\n /*TODO: bytte til icon size token for button når den er på plass*/\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.content--large--with-text {\n padding: var(--dds-spacing-x1) var(--dds-spacing-x2);\n gap: var(--dds-spacing-x0-5);\n}\n\n.content--medium--just-icon {\n padding: var(--dds-spacing-x0-75);\n\n svg {\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.content--medium--with-text {\n padding: var(--dds-spacing-x0-75) var(--dds-spacing-x1-5);\n gap: var(--dds-spacing-x0-75);\n}\n\n.content--small--just-icon {\n padding: var(--dds-spacing-x0-5);\n\n svg {\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.content--small--with-text {\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x1);\n gap: var(--dds-spacing-x0-5);\n}\n\n.content--xsmall--just-icon {\n padding: var(--dds-spacing-x0-25);\n\n svg {\n font-size: calc(var(--dds-font-lineheight-x1) * 1em);\n }\n}\n\n.content--xsmall--with-text {\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-75);\n gap: var(--dds-spacing-x0-5);\n}\n\n.label {\n &:hover .content {\n background-color: var(--dds-color-surface-hover-default);\n }\n\n &:first-child .content {\n border-left: 1px solid var(--dds-color-border-default);\n border-top-left-radius: var(--dds-border-radius-button);\n border-bottom-left-radius: var(--dds-border-radius-button);\n }\n &:last-child .content {\n border-top-right-radius: var(--dds-border-radius-button);\n border-bottom-right-radius: var(--dds-border-radius-button);\n }\n\n input:checked + .content {\n color: var(--dds-color-text-on-action);\n border-color: var(--dds-color-surface-action-selected);\n background-color: var(--dds-color-surface-action-selected);\n position: relative;\n z-index: 0;\n }\n\n input:focus-visible + .content {\n position: relative;\n z-index: 0;\n }\n}\n","import { type ChangeEvent, type InputHTMLAttributes, useId } from 'react';\n\nimport {\n type ToggleBarContextType,\n useToggleBarContext,\n} from './ToggleBar.context';\nimport styles from './ToggleBar.module.css';\nimport { type ToggleBarSize } from './ToggleBar.types';\nimport { type BaseComponentProps, getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { type SvgIcon } from '../Icon/utils';\nimport { type StaticTypographyType, Typography } from '../Typography';\n\nexport const typographyTypes: Record<ToggleBarSize, StaticTypographyType> = {\n large: 'bodyLarge',\n medium: 'bodyMedium',\n small: 'bodySmall',\n xsmall: 'bodyXsmall',\n};\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 = ({\n value,\n name,\n onChange,\n checked,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n icon,\n label,\n htmlProps,\n className,\n id,\n ...rest\n}: ToggleRadioProps) => {\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 const contentTypeCn = label ? 'with-text' : 'just-icon';\n\n return (\n <label htmlFor={uniqueId} className={styles.label}>\n <input\n {...getBaseHTMLProps(\n uniqueId,\n cn(\n className,\n focusStyles['focusable-sibling'],\n utilStyles['hide-input'],\n ),\n htmlProps,\n rest,\n )}\n type=\"radio\"\n name={name ?? group.name}\n onChange={handleChange}\n value={value}\n checked={calculateChecked(value, group, checked)}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n />\n <Typography\n as=\"span\"\n typographyType={typographyTypes[group.size]}\n className={cn(\n styles.content,\n styles[`content--${group.size}--${contentTypeCn}`],\n focusStyles['focus-styled-sibling'],\n )}\n >\n {icon && <Icon icon={icon} iconSize=\"inherit\" />}\n {label && <span>{label}</span>}\n </Typography>\n </label>\n );\n};\n\nToggleRadio.displayName = 'ToggleRadio';\n","import { useId } from 'react';\n\nimport styles from './ToggleButton.module.css';\nimport { type ToggleButtonProps } from './ToggleButton.types';\nimport { getBaseHTMLProps } from '../../types';\nimport { cn } from '../../utils';\nimport focusStyles from '../helpers/styling/focus.module.css';\nimport utilStyles from '../helpers/styling/utilStyles.module.css';\nimport { Icon } from '../Icon';\nimport { Box } from '../layout';\nimport typographyStyles from '../Typography/typographyStyles.module.css';\n\nexport const ToggleButton = ({\n id,\n label,\n icon,\n size = 'small',\n className,\n htmlProps,\n ...rest\n}: ToggleButtonProps) => {\n const generatedId = useId();\n const uniqueId = id ?? `${generatedId}-toggleButton`;\n const hasIcon = !!icon;\n\n return (\n <Box as=\"label\" htmlFor={uniqueId} width=\"fit-content\">\n <input\n {...getBaseHTMLProps(\n uniqueId,\n cn(\n className,\n focusStyles['focusable-sibling'],\n utilStyles['hide-input'],\n ),\n htmlProps,\n rest,\n )}\n type=\"checkbox\"\n />\n <span\n className={cn(\n styles.content,\n styles[size],\n hasIcon && styles['content--with-icon'],\n typographyStyles[`body-${size}`],\n focusStyles['focus-styled-sibling'],\n )}\n >\n {hasIcon && <Icon icon={icon} iconSize=\"inherit\" />} {label}\n </span>\n </Box>\n );\n};\n\nToggleButton.displayName = 'ToggleButton';\n",".content {\n display: flex;\n align-items: center;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n cursor: pointer;\n width: -moz-fit-content;\n width: fit-content;\n border: 1px solid var(--dds-color-border-default);\n border-radius: var(--dds-border-radius-rounded);\n background-color: var(--dds-color-surface-default);\n color: var(--dds-color-text-default);\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 0.2s,\n background-color 0.2s,\n var(--dds-focus-transition);\n }\n\n &:hover {\n border-color: var(--dds-color-border-action-hover);\n background-color: var(--dds-color-surface-hover-default);\n }\n}\n\n.small {\n gap: var(--dds-spacing-x0-25);\n padding: var(--dds-spacing-x0-5) var(--dds-spacing-x1);\n}\n\n.xsmall {\n gap: var(--dds-spacing-x0-125);\n padding: var(--dds-spacing-x0-25) var(--dds-spacing-x0-5);\n}\n\n.content--with-icon {\n &.small {\n padding-inline-start: var(--dds-spacing-x0-75);\n }\n &.xsmall {\n padding-inline-start: var(--dds-spacing-x0-25);\n }\n}\n\ninput:checked + .content {\n color: var(--dds-color-text-on-action);\n background-color: var(--dds-color-surface-action-resting);\n border-color: var(--dds-color-surface-action-resting);\n}\n\ninput:checked + .content:hover {\n background-color: var(--dds-color-surface-action-hover);\n border-color: var(--dds-color-surface-action-hover);\n}\n","import { useId } from 'react';\n\nimport {\n type BaseComponentPropsWithChildren,\n getBaseHTMLProps,\n} from '../../types';\nimport { Box, VStack } from '../layout';\nimport { Typography } from '../Typography';\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 * @default \"row\"\n */\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\n return (\n <VStack\n gap=\"x0.5\"\n {...getBaseHTMLProps(id, className, htmlProps, rest)}\n role=\"group\"\n aria-labelledby={label ? uniqueLabelId : undefined}\n >\n {!!label && (\n <Typography as=\"span\" typographyType=\"labelMedium\" id={uniqueLabelId}>\n {label}\n </Typography>\n )}\n <Box display=\"flex\" flexWrap=\"wrap\" gap=\"x0.75\" flexDirection={direction}>\n {children}\n </Box>\n </VStack>\n );\n};\n\nToggleButtonGroup.displayName = 'ToggleButtonGroup';\n"],"mappings":";;;;;;;;AAAA;AAAA,EAAC,UAAAA;AAAA,EAcO,GAAAC;AAAA,EAsBA,cAAAC;AAAA,EAMA,eAAAC;AAAA,EASP,cAAAC;AAAA,EAIO,eAAAC;AAAA,EAOA,wBAAAC;AAAA,EAMA,cAAAC;AAAA,EAOA,uBAAAC;AAAA,EAMA,eAAAC;AAAA,EAOA,wBAAAC;AAAA,EAMA,cAAAC;AAAA,EAOA,uBAAAC;AAAA,EAMA,eAAAC;AAAA,EAOA,wBAAAC;AAAA,EAMA,mBAAAC;AAAA,EAOA,4BAAAC;AAAA,EAOA,kBAAAC;AAAA,EAOA,2BAAAC;AAAA,EAOA,iBAAAC;AAAA,EAOA,0BAAAC;AAAA,EAOA,kBAAAC;AAAA,EAOA,2BAAAC;AAAA,EAOA,iBAAAC;AAAA,EAOA,0BAAAC;AAAA,EAOA,kBAAAC;AAAA,EAOA,2BAAAC;AAAA,EAOA,mBAAAC;AAAA,EAOA,4BAAAC;AAAA,EAOA,gBAAAC;AAAA,EAOA,yBAAAC;AAAA,EAMA,QAAAC;AAAA,EAIA,wBAAAC;AAAA,EAIA,MAAAC;AAAA,EAIA,QAAAC;AAAA,EAIA,WAAAC;AAAA,EAIP,uBAAAC;AAAA,EAIA,sBAAAC;AAAA,EAIA,sBAAAC;AAAA,EAIA,0BAAAC;AAAA;;;ACtOA,gBAAAC;AAuDA,gBAAAC;AAxFD;AAAA,EAAQ,uBAAAC;AAAA,EAMA,yBAAAC;AAAA,EASA,oBAAAC;AAAA,EAKP,cAAAC;AAAA,EAQA,wBAAAC;AAAA,EAKA;AAAA,EAmBA,gBAAAC;AAAA,EAIA,yBAAAC;AAAA,EASA,+BAAAC;AAAA,EAIA,iCAAAC;AAAA,EAKA,mBAAAC;AAAA,EAcA;AAAA,EAIA,mBAAAC;AAAA,EAOA,qBAAAC;AAAA,EAOA,qBAAAC;AAAA;;;AC1GD,IAAM,+BAA+B,CAACC,eACpCA,WAAU,eAAe,OAAO;AAE3B,SAAS,+BAA+BA,YAAwB;AACrE,MAAI,6BAA6BA,UAAS,GAAG;AAC3C,UAAM,UAAU,KAAK,MAAM,OAAO,OAAO;AAEzC,IAAAA,WAAU,MAAM,YAAY;AAC5B,IAAAA,WAAU,MAAM,WAAW;AAC3B,IAAAA,WAAU,MAAM,MAAM,IAAI,OAAO;AAAA,EACnC;AACF;AAEO,SAAS,iCAAiCA,YAAwB;AACvE,QAAM,UAAU,SAAS,SAAS,KAAK,MAAM,GAAG;AAEhD,EAAAA,WAAU,MAAM,eAAe,YAAY;AAC3C,EAAAA,WAAU,MAAM,eAAe,UAAU;AACzC,EAAAA,WAAU,MAAM,eAAe,KAAK;AAEpC,MAAI,MAAM,OAAO,GAAG;AAClB;AAAA,EACF;AAEA,SAAO,SAAS,GAAG,UAAU,EAAE;AACjC;;;ACzBA;AAAA,EAAC,UAAAC;AAAA,EAiBA,QAAAC;AAAA,EAIA,OAAAC;AAAA,EAIA,qBAAAC;AAAA,EAIA,oBAAAC;AAAA;;;AC+CM,IAAM,aAAa;AAAA,EACxB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,oBAAoB;AAAA,EAEpB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AACd;AA+BO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;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;AAAA,EACA;AACF;AAIO,SAAS,YAAY,OAAsC;AAChE,SAAO,gBAAgB,QAAQ,KAAK,MAAM;AAC5C;AAEO,IAAM,eAAe,CAAC,UAAgC;AAC3D,MAAI,YAAY,KAAK,EAAG,QAAO,WAAW,KAAK;AAC/C,SAAO;AACT;;;AC9KO,IAAM,kBAAkB,CAC7B,UACA,aACgB;AAChB,QAAM,WAAwB,WAAS;AACrC,gBAAY,SAAS,KAAK;AAC1B,gBAAY,SAAS,KAAK;AAAA,EAC5B;AACA,SAAO;AACT;;;ACPO,SAAS,MAAM,YAA4B;AAChD,SAAO,WAAW,OAAO,OAAO,EAAE,KAAK,GAAG;AAC5C;AAEO,SAAS,qBAAqB,OAAe;AAClD,SAAO,MACJ,QAAQ,mBAAmB,OAAO,EAClC,QAAQ,mBAAmB,OAAO,EAClC,YAAY;AACjB;;;ACXO,SAAS,qBACd,YAC8B;AAC9B,SAAO,cAAc,WAAW,UAC5B,WAAW,QAAQ;AAAA,IACjB;AAAA,EACF,IACA,CAAC;AACP;;;ACPO,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;;;ACZO,IAAM,wBAAwB,CAACC,SAAgB,WACpD,GAAGA,OAAM,IAAI,MAAM;AAEd,IAAM,gCAAgC,CAC3C,WACuB;AACvB,QAAM,WAAW,OAAO,OAAO,OAAO;AAEtC,SAAO,SAAS,SAAS,IAAI,SAAS,KAAK,GAAG,IAAI;AACpD;;;ACTO,IAAM,UAAU,CAAC,QACtB,OAAO,KAAK,GAAG,EAAE,WAAW,KAAK,IAAI,gBAAgB;;;ACUhD,IAAM,2BAA2B,CACtC,UACA,gBACG;AACH,SAAO,CAAC,QAAuB;AAE7B,QAAI,UAAU;AACZ,UAAI,eAAe;AAEnB,MAAC,IAAI,OAAuB,MAAM;AAAA,IACpC,MAAO,gBAAe,YAAY,GAAG;AAAA,EACvC;AACF;AAIO,IAAM,yBAAyB,CACpC,MACA,UACA,cACG;AACH,SAAO,CAAC,QAA0B;AAEhC,QAAI,UAAU;AACZ,UACE,SAAS,YACT,CAAC,aAAa,WAAW,cAAc,aAAa,GAAG,EAAE;AAAA,QACvD,IAAI;AAAA,MACN,GACA;AACA,YAAI,eAAe;AAAA,MACrB,WAAW,SAAS,sBAAsB,IAAI,QAAQ,KAAK;AACzD,YAAI,eAAe;AAAA,MACrB;AAAA,IACF,MAAO,cAAa,UAAU,GAAG;AAAA,EACnC;AACF;AAEO,IAAM,wBAAwB,CACnC,UACA,aACG;AACH,SAAO,CAAC,QAAwB;AAC9B,QAAI,UAAU;AACZ;AAAA,IACF;AACA,gBAAY,SAAS,GAAG;AAAA,EAC1B;AACF;AAEO,IAAM,uBAAuB,CAClC,UACA,YACG;AACH,SAAO,CAAC,QAAuB;AAC7B,QAAI,UAAU;AACZ,UAAI,eAAe;AACnB;AAAA,IACF;AACA,eAAW,QAAQ,GAAG;AAAA,EACxB;AACF;;;ACxEO,SAAS,sBAAsB,MAAc;AAClD,SAAO,KAAK,QAAQ,4BAA4B,MAAM;AACxD;AAEO,SAAS,aAAa,MAAc,OAAwB;AAEjE,QAAM,oBAAoB,IAAI;AAAA,IAC5B,gBAAgB,sBAAsB,MAAM,YAAY,CAAC,CAAC;AAAA,EAC5D;AACA,SAAO,kBAAkB,KAAK,KAAK,YAAY,CAAC;AAClD;;;ACVA;AAAA,EAAC,SAAAC;AAAA;;;ACEmC;AAA7B,IAAM,iBAAiB,MAAM,oBAAC,UAAK,WAAW,uBAAO,SAAS,eAAC;;;ACFtE,SAAS,WAAW,gBAAgB;AAI7B,SAAS,iBACd,SACe;AACf,QAAM,CAAC,QAAQ,SAAS,IAAI,SAA2B,IAAI;AAE3D,YAAU,MAAM;AACd,QAAI,CAAC,QAAS;AAEd,UAAM,iBAAiB,IAAI,eAAe,MAAM;AAC9C,gBAAU,QAAQ,YAAY;AAAA,IAChC,CAAC;AAED,mBAAe,QAAQ,OAAO;AAE9B,WAAO,MAAM,eAAe,WAAW;AAAA,EACzC,GAAG,CAAC,OAAO,CAAC;AAEZ,SAAO;AACT;;;ACTI,gBAAAC,YAAA;AAHG,IAAM,WAAW,CAAC,EAAE,WAAW,QAAQ,GAAG,MAAM,MAAqB;AAC1E,QAAM,cAAc,YAAY,YAAY;AAC5C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,iBAAO;AAAA,QACP,iBAAO,MAAM;AAAA,QACb,iBAAO,aAAa,WAAW,EAAE;AAAA,MACnC;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;;;ACxBvB;AAAA,EAAC,KAAAC;AAAA,EASA,OAAAC;AAAA,EAIA,aAAAC;AAAA,EAIA,eAAAC;AAAA,EAIA,MAAAC;AAAA,EAKA,YAAAC;AAAA,EAGA,cAAAC;AAAA,EAIA,OAAAC;AAAA,EAKA,aAAAC;AAAA,EAGA,eAAAC;AAAA;;;ACZK,SACE,OAAAC,MADF;AAxBN,IAAM,qBACJ;AACF,IAAM,sBACJ;AAQK,IAAM,wBAAwB,CAAC;AAAA,EACpC;AAAA,EACA,SAAS;AAAA,EACT,QAAQ;AACV,MAAuB;AACrB,QAAM,UAAU,OAAO,OAAO;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAW,GAAG,gBAAO,GAAG;AAAA,MACxB,OAAO,EAAE,QAAQ,MAAM;AAAA,MAEvB,+BAAC,OAAE,WAAW,GAAG,gBAAO,OAAO,gBAAO,UAAU,OAAO,EAAE,CAAC,GACxD;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAG;AAAA,YACH,WAAW,GAAG,gBAAO,MAAM,gBAAO,SAAS,OAAO,EAAE,CAAC;AAAA;AAAA,QACvD;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,GAAG;AAAA,YACH,WAAW,GAAG,gBAAO,OAAO,gBAAO,UAAU,OAAO,EAAE,CAAC;AAAA;AAAA,QACzD;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;;;AC3BI,gBAAAC,YAAA;AARG,IAAM,YAAY,CAAwB;AAAA,EAC/C,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA2B;AACzB,QAAM,YAAY;AAClB,SACE,gBAAAA,KAAC,aAAU,KAAW,GAAG,OACtB,UACH;AAEJ;;;ACTE,gBAAAC,YAAA;AAJK,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA,GAAG;AACL,MACE,gBAAAA,KAAC,WAAM,WAAW,GAAG,WAAW,mBAAW,YAAY,CAAC,GAAI,GAAG,MAAM;;;ACTvE;AAAA,EAAC,WAAAC;AAAA,EAIA,eAAAC;AAAA,EAIO,OAAAC;AAAA,EA8BmD,UAAAC;AAAA,EACpD,aAAAC;AAAA,EAcC,mBAAAC;AAAA,EA8BA,gBAAAC;AAAA,EAKA,0BAAAC;AAAA,EA2BA,iBAAAC;AAAA,EAIA,gBAAAC;AAAA,EAIA,iBAAAC;AAAA,EAIA,qBAAAC;AAAA,EAIA,OAAAC;AAAA,EAIA,gBAAAC;AAAA,EAIA,iCAAAC;AAAA;;;AC1IP,gBAAAC;AADD;AAAA,EAAC,SAAAC;AAAA,EACA;AAAA,EACA,oBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,qBAAAC;AAAA,EAAmC,wBAAAC;AAAA,EAMnC,oBAAAC;AAAA;;;ACEC,gBAAAC,YAAA;AAJK,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA,GAAG;AACL,MACE,gBAAAA,KAAC,WAAM,WAAW,GAAG,WAAW,cAAO,OAAO,SAAS,GAAI,GAAG,MAAM;AAGtE,MAAM,cAAc;AAEb,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA,cAAO,iBAAiB;AAAA,MACxB,cAAO,UAAU,aAAa,EAAE;AAAA,MAChC,yBAAiB,QAAQ,aAAa,EAAE;AAAA,MACxC,mBAAmB,cAAO,wBAAwB;AAAA,IACpD;AAAA,IACC,GAAG;AAAA;AACN;AAGF,cAAc,cAAc;;;ACnC5B,SAAS,aAAa;;;ACmIf,IAAM,mBAAqC,CAChD,IACA,sBAGA,yBACA,4BAC+B;AAC/B,MACE,OAAO,yBAAyB,YAChC,2BAA2B,QAC3B;AACA,UAAM;AAAA,MACJ,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,GAAG;AAAA,IACL,IAAK,4DAA6D,CAAC;AAEnE,UAAM,SAAS,kBAAM;AAErB,UAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAEA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAI,iBAAiB,EAAE,WAAW,cAAc;AAAA,MAChD,GAAI,UAAU,EAAE,IAAI,OAAO;AAAA,IAC7B;AAAA,EACF,OAAO;AACL,UAAM;AAAA,MACJ,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,GAAG;AAAA,IACL,IAAI,sDAAwB,CAAC;AAE7B,UAAM,SAAS,kBAAM;AAErB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAI,sBAAsB,EAAE,WAAW,mBAAmB;AAAA,MAC1D,GAAI,UAAU,EAAE,IAAI,OAAO;AAAA,IAC7B;AAAA,EACF;AACF;;;AClLO,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC;AAE9B,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,cAAc;AAAA,EAClB;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;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,IAAM,oBAAoB,CAAC,UAA6C;AAC7E,SACE,OAAO,UAAU,YAAY,YAAY,SAAS,KAAwB;AAE9E;AAEO,IAAM,gBAAgB,CAAC,UAAyC;AACrE,SACE,OAAO,UAAU,YAAY,cAAc,SAAS,KAAoB;AAE5E;AAEO,IAAM,iBAAiB,CAAC,UAA0C;AACvE,SACE,OAAO,UAAU,YAAY,aAAa,SAAS,KAAqB;AAE5E;AAEO,IAAM,cAAc,CAAC,UAAuC;AACjE,SAAO,OAAO,UAAU,YAAY,WAAW,SAAS,KAAkB;AAC5E;;;AC7EA;AAAA,EAAC,SAAAC;AAAA,EAIA,OAAAC;AAAA;;;ACKQ,gBAAAC,YAAA;AAJF,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,GAAG;AACL,GAA2B;AACzB,SAAO,gBAAAA,KAAC,UAAM,GAAG,MAAM,WAAW,GAAG,WAAW,6BAAO,OAAO,GAAG;AACnE;AAEO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA,GAAG;AACL,GAA2B;AACzB,SAAO,gBAAAA,KAAC,UAAM,GAAG,MAAM,WAAW,GAAG,WAAW,6BAAO,KAAK,GAAG;AACjE;;;ACjBA;AAAA,EAAC,WAAAC;AAAA;;;ACWM,IAAM,wBAA4C;AAClD,IAAM,iCACX;AAEK,IAAM,iBAAiB,CAAC,YAAyC;AACtE,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,YAAY,CACvB,SACkC;AAClC,SAAO;AACT;AAEO,IAAM,WAAW,CAAC,OAA6B;AACpD,SAAO,OAAO;AAChB;AAEO,IAAM,YAAY,CAAC,OAA6B;AACrD,SAAO,OAAO;AAChB;AAEO,IAAM,iBAAqC;AAAA,EAChD;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;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;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;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;AACF;AAEO,IAAM,kBAAkB,CAAC,OAC9B,eAAe,QAAQ,EAAE,MAAM;AAE1B,SAAS,gBAAgB,OAA6C;AAC3E,SAAO,qBAAqB,KAAK;AACnC;;;ACnHA,IAAM,UAAU,CAAC,aAA+B;AAC9C,UAAQ,UAAU;AAAA,IAChB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAoBO,SAAS,KAAK,OAAkB;AACrC,QAAM;AAAA,IACJ;AAAA,IACA,WAAW;AAAA,IACX,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,YAAY,CAAC;AAAA,IACb,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,EAAE,OAAO,eAAe,aAAa,KAAK,IAAI;AAEpD,QAAMC,QAAO,QAAQ,QAAQ;AAE7B,SAAO,KAAK;AAAA,IACV,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,IAClD;AAAA,IACA,QAAQA;AAAA,IACR,OAAOA;AAAA,IACP,MAAM;AAAA,IACN,eAAe;AAAA,EACjB,CAAC;AACH;AAEA,KAAK,cAAc;;;AC7DnB;AAAA,EAAC,KAAAC;AAAA;;;ACiBG,SAWY,OAAAC,MAXZ,QAAAC,aAAA;AAbJ,IAAM,OAAO;AACb,IAAM,UAAU;AAET,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAa;AACX,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAM,aAAa,IAAI;AAAA,MACvB,OAAM;AAAA,MACN,SAAS,OAAO,IAAI,IAAI,IAAI;AAAA,MAC5B,WAAW,GAAG,WAAW,aAAO,GAAG;AAAA,MACnC,OAAO;AAAA,QACL,QAAQ,SAAS,SAAS;AAAA,QAC1B,OAAO,QAAQ,QAAQ;AAAA,MACzB;AAAA,MAEC;AAAA,iBAAS,gBAAAD,KAAC,WAAO,iBAAM;AAAA,QACvB;AAAA;AAAA;AAAA,EACH;AAEJ;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACII,SACE,OAAAE,MADF,QAAAC,aAAA;AAFG,SAAS,oBAAoB,OAAiB;AACnD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,KAAC,UAAK,GAAE,iFAAgF;AAAA,IACxF,gBAAAA,KAAC,UAAK,GAAE,qDAAoD;AAAA,IAC5D,gBAAAA,KAAC,UAAK,GAAE,sOAAqO;AAAA,KAC/O;AAEJ;;;ACNM,gBAAAE,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,y4BAAw4B,GACl5B;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,yIAAwI,GAClJ;AAEJ;;;ACJI,SACE,OAAAC,OADF,QAAAC,aAAA;AAFG,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,MAAC,UAAK,GAAE,iKAAgK;AAAA,IACxK,gBAAAA,MAAC,UAAK,GAAE,mBAAkB;AAAA,KAC5B;AAEJ;;;ACHM,gBAAAE,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kEAAiE,GAC3E;AAEJ;;;ACJM,gBAAAC,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,gEAA+D,GACzE;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,iEAAgE,GAC1E;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,+DAA8D,GACxE;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,8MAA6M,GACvN;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,gQAA+P,GACzQ;AAEJ;;;ACJI,SACE,OAAAC,OADF,QAAAC,aAAA;AAFG,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,MAAC,UAAK,GAAE,kZAAiZ;AAAA,IACzZ,gBAAAA,MAAC,UAAK,GAAE,uVAAsV;AAAA,KAChW;AAEJ;;;ACJM,gBAAAE,aAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,oiBAAmiB,GAC7iB;AAEJ;;;ACJI,SACE,OAAAC,OADF,QAAAC,aAAA;AAFG,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,KACF;AAEJ;;;ACZM,gBAAAE,aAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kIAAiI,GAC3I;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,4VAA2V,GACrW;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,oBAAoB,OAAiB;AACnD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,iEAAgE,GAC1E;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,sBAAsB,OAAiB;AACrD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,uKAAsK,GAChL;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,qBAAqB,OAAiB;AACpD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,yJAAwJ,GAClK;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,uZAAsZ,GACha;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,+jBAA8jB,GACxkB;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,2FAA0F,GACpG;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,uFAAsF,GAChG;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kPAAiP,GAC3P;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,+JAA8J,GACxK;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,gBAAgB,OAAiB;AAC/C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,2DAA0D,GACpE;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,0EAAyE,GACnF;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,qBAAqB,OAAiB;AACpD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,sEAAqE,GAC/E;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,sBAAsB,OAAiB;AACrD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,wEAAuE,GACjF;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,gBAAgB,OAAiB;AAC/C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,0EAAyE,GACnF;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,gBAAgB,OAAiB;AAC/C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,4DAA2D,GACrE;AAEJ;;;ACFM,gBAAAC,aAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,0DAAyD,GACnE;AAEJ;;;ACJM,gBAAAC,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,4DAA2D,GACrE;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,0JAAyJ,GACnK;AAEJ;;;ACFM,gBAAAC,aAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,0JAAyJ,GACnK;AAEJ;;;ACJM,gBAAAC,aAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,sTAAqT,GAC/T;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,qTAAoT,GAC9T;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,oHAAmH,GAC7H;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,iJAAgJ,GAC1J;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,mIAAkI,GAC5I;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kIAAiI,GAC3I;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,+RAA8R,GACxS;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,qYAAoY,GAC9Y;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,sBAAsB,OAAiB;AACrD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,4KAA2K,GACrL;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,uBAAuB,OAAiB;AACtD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,uKAAsK,GAChL;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,iFAAgF,GAC1F;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,4FAA2F,GACrG;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,mCAAkC,GAC5C;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kNAAiN,GAC3N;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,qFAAoF,GAC9F;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,mDAAkD,GAC5D;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,gEAA+D,GACzE;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,2TAA0T,GACpU;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,qsCAAosC,GAC9sC;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,6IAA4I,GACtJ;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,mGAAkG,GAC5G;AAEJ;;;ACFM,gBAAAC,aAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,gIAA+H,GACzI;AAEJ;;;ACJI,SACE,OAAAC,OADF,QAAAC,aAAA;AAFG,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,MAAC,UAAK,GAAE,qFAAoF;AAAA,IAC5F,gBAAAA,MAAC,UAAK,GAAE,sOAAqO;AAAA,KAC/O;AAEJ;;;ACLM,gBAAAE,aAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,0HAAyH,GACnI;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,oKAAmK,GAC7K;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kDAAiD,GAC3D;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,sJAAqJ,GAC/J;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kMAAiM,GAC3M;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,8aAA6a,GACvb;AAEJ;;;ACFM,gBAAAC,aAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,+kBAA8kB,GACxlB;AAEJ;;;ACJM,gBAAAC,aAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,gIAA+H,GACzI;AAEJ;;;ACFM,gBAAAC,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,oKAAmK,GAC7K;AAEJ;;;ACJI,SACE,OAAAC,OADF,QAAAC,aAAA;AAFG,SAAS,mBAAmB,OAAiB;AAClD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,MAAC,UAAK,GAAE,wIAAuI;AAAA,IAC/I,gBAAAA,MAAC,UAAK,GAAE,sOAAqO;AAAA,KAC/O;AAEJ;;;ACLM,gBAAAE,aAAA;AAHC,SAAS,mBAAmB,OAAiB;AAClD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,iFAAgF,GAC1F;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kFAAiF,GAC3F;AAEJ;;;ACJI,SACE,OAAAC,OADF,QAAAC,aAAA;AAFG,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,KACF;AAEJ;;;ACZI,SACE,OAAAE,OADF,QAAAC,cAAA;AAFG,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,MAAC,UAAK,GAAE,mTAAkT;AAAA,IAC1T,gBAAAA,MAAC,UAAK,GAAE,0TAAyT;AAAA,IACjU,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,IACA,gBAAAA,MAAC,UAAK,GAAE,sfAAqf;AAAA,IAC7f,gBAAAA,MAAC,UAAK,GAAE,iZAAgZ;AAAA,KAC1Z;AAEJ;;;ACZM,gBAAAE,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,uPAAsP,GAChQ;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,gRAA+Q,GACzR;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,uFAAsF,GAChG;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,oBAAoB,OAAiB;AACnD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,mFAAkF,GAC5F;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,sBAAsB,OAAiB;AACrD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,uLAAsL,GAChM;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,mBAAmB,OAAiB;AAClD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,8IAA6I,GACvJ;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,4FAA2F,GACrG;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,sFAAqF,GAC/F;AAEJ;;;ACFM,gBAAAC,aAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,4IAA2I,GACrJ;AAEJ;;;ACJM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kKAAiK,GAC3K;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,8tCAA6tC,GACvuC;AAEJ;;;ACFM,gBAAAC,aAAA;AAHC,SAAS,mBAAmB,OAAiB;AAClD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,KAAI,GAChC;AAEJ;;;ACJI,SACE,OAAAC,OADF,QAAAC,cAAA;AAFG,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,aAAU;AAAA,QACV,aAAU;AAAA,QACV,GAAE;AAAA;AAAA,IACJ;AAAA,IACA,gBAAAA,MAAC,UAAK,GAAE,sLAAqL;AAAA,KAC/L;AAEJ;;;ACRM,gBAAAE,aAAA;AAHC,SAAS,QAAQ,OAAiB;AACvC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,4KAA2K,GACrL;AAEJ;;;ACJM,gBAAAC,aAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,wBAAuB,GACjC;AAEJ;;;ACFM,gBAAAC,aAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,qxBAAoxB,GAC9xB;AAEJ;;;ACJM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,kLAAiL,GAC3L;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,UAAS;AAAA,MACT,UAAS;AAAA,MACT,GAAE;AAAA;AAAA,EACJ,GACF;AAEJ;;;ACPM,gBAAAC,aAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,6UAA4U,GACtV;AAEJ;;;ACHM,gBAAAC,aAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,MAAC,cAAY,GAAG,OACd,0BAAAA,MAAC,UAAK,GAAE,gLAA+K,GACzL;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,mMAAkM,GAC5M;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,yOAAwO,GAClP;AAEJ;;;ACJI,SACE,OAAAC,QADF,QAAAC,cAAA;AAFG,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,OAAC,UAAK,GAAE,2HAA0H;AAAA,IAClI,gBAAAA,OAAC,UAAK,GAAE,uBAAsB;AAAA,IAC9B,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,KACF;AAEJ;;;ACfI,SACE,OAAAE,QADF,QAAAC,cAAA;AAFG,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,OAAC,UAAK,GAAE,2HAA0H;AAAA,IAClI,gBAAAA,OAAC,UAAK,GAAE,uBAAsB;AAAA,IAC9B,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA;AAAA,IACJ;AAAA,KACF;AAEJ;;;ACdM,gBAAAE,cAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,iHAAgH,GAC1H;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,qHAAoH,GAC9H;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,uHAAsH,GAChI;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,0LAAyL,GACnM;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,iDAAgD,GAC1D;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,yBAAwB,GAClC;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,gBAAgB,OAAiB;AAC/C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,+IAA8I,GACxJ;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,mBAAmB,OAAiB;AAClD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,kGAAiG,GAC3G;AAEJ;;;ACFM,gBAAAC,cAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,qJAAoJ,GAC9J;AAEJ;;;ACJM,gBAAAC,cAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,gKAA+J,GACzK;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,mNAAkN,GAC5N;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,qBAAqB,OAAiB;AACpD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,yVAAwV,GAClW;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,4IAA2I,GACrJ;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,+HAA8H,GACxI;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,8MAA6M,GACvN;AAEJ;;;ACFM,gBAAAC,cAAA;AAHC,SAAS,QAAQ,OAAiB;AACvC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,8RAA6R,GACvS;AAEJ;;;ACJM,gBAAAC,cAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,6NAA4N,GACtO;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,wWAAuW,GACjX;AAEJ;;;ACHI,SACE,OAAAC,QADF,QAAAC,cAAA;AAFG,SAAS,mBAAmB,OAAiB;AAClD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,OAAC,UAAK,GAAE,kmBAAimB;AAAA,IACzmB,gBAAAA,OAAC,UAAK,GAAE,iKAAgK;AAAA,IACxK,gBAAAA,OAAC,UAAK,GAAE,sOAAqO;AAAA,KAC/O;AAEJ;;;ACNM,gBAAAE,cAAA;AAHC,SAAS,QAAQ,OAAiB;AACvC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,2LAA0L,GACpM;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,4CAA2C,GACrD;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,gBAAgB,OAAiB;AAC/C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,kMAAiM,GAC3M;AAEJ;;;ACJI,SACE,OAAAC,QADF,QAAAC,cAAA;AAFG,SAAS,oBAAoB,OAAiB;AACnD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,OAAC,UAAK,GAAE,+DAA8D;AAAA,IACtE,gBAAAA,OAAC,UAAK,GAAE,ugBAAsgB;AAAA,KAChhB;AAEJ;;;ACLI,SACE,OAAAE,QADF,QAAAC,cAAA;AAFG,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,OAAC,UAAK,GAAE,iKAAgK;AAAA,IACxK,gBAAAA,OAAC,UAAK,GAAE,qCAAoC;AAAA,KAC9C;AAEJ;;;ACLI,SACE,OAAAE,QADF,QAAAC,cAAA;AAFG,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,OAAC,UAAK,GAAE,kGAAiG;AAAA,IACzG,gBAAAA,OAAC,UAAK,GAAE,sCAAqC;AAAA,KAC/C;AAEJ;;;ACJM,gBAAAE,cAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,kFAAiF,GAC3F;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,mBAAmB,OAAiB;AAClD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,+JAA8J,GACxK;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,2PAA0P,GACpQ;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,gJAA+I,GACzJ;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,0MAAyM,GACnN;AAEJ;;;ACFM,gBAAAC,cAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,yGAAwG,GAClH;AAEJ;;;ACJM,gBAAAC,cAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,sNAAqN,GAC/N;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,onDAAmnD,GAC7nD;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,QAAQ,OAAiB;AACvC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,2IAA0I,GACpJ;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,oMAAmM,GAC7M;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,qGAAoG,GAC9G;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,2JAA0J,GACpK;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,iPAAgP,GAC1P;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,8XAA6X,GACvY;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,oBAAoB,OAAiB;AACnD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,uQAAsQ,GAChR;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,iYAAgY,GAC1Y;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,8QAA6Q,GACvR;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,4LAA2L,GACrM;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,qEAAoE,GAC9E;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,QAAQ,OAAiB;AACvC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,oSAAmS,GAC7S;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,kGAAiG,GAC3G;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,SAAS,OAAiB;AACxC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,kJAAiJ,GAC3J;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,kIAAiI,GAC3I;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,sIAAqI,GAC/I;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,qFAAoF,GAC9F;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,6pBAA4pB,GACtqB;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,qSAAoS,GAC9S;AAEJ;;;ACJI,SACE,OAAAC,QADF,QAAAC,cAAA;AAFG,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,OAAC,UAAK,GAAE,sHAAqH;AAAA,IAC7H,gBAAAA,OAAC,UAAK,GAAE,kDAAiD;AAAA,KAC3D;AAEJ;;;ACLI,SACE,OAAAE,QADF,QAAAC,cAAA;AAFG,SAAS,UAAU,OAAiB;AACzC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd;AAAA,oBAAAD,OAAC,UAAK,GAAE,ygBAAwgB;AAAA,IAChhB,gBAAAA,OAAC,UAAK,GAAE,sSAAqS;AAAA,IAC7S,gBAAAA,OAAC,UAAK,GAAE,0ZAAyZ;AAAA,KACna;AAEJ;;;ACLM,gBAAAE,cAAA;AAHC,SAAS,MAAM,OAAiB;AACrC,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,uNAAsN,GAChO;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,WAAW,OAAiB;AAC1C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,wOAAuO,GACjP;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,YAAY,OAAiB;AAC3C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,qNAAoN,GAC9N;AAEJ;;;ACFM,gBAAAC,cAAA;AAHC,SAAS,aAAa,OAAiB;AAC5C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,oDAAmD,GAC7D;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,kBAAkB,OAAiB;AACjD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,6IAA4I,GACtJ;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,cAAc,OAAiB;AAC7C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,2EAA0E,GACpF;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,8EAA6E,GACvF;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,iBAAiB,OAAiB;AAChD,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,6EAA4E,GACtF;AAEJ;;;ACJM,gBAAAC,cAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,oKAAmK,GAC7K;AAEJ;;;ACHM,gBAAAC,cAAA;AAHC,SAAS,eAAe,OAAiB;AAC9C,SACE,gBAAAA,OAAC,cAAY,GAAG,OACd,0BAAAA,OAAC,UAAK,GAAE,mZAAkZ,GAC5Z;AAEJ;;;AC+FI,SA+BuB,OAAAC,QA/BvB,QAAAC,cAAA;AArCJ,IAAM,gBAAgB,CACpB,UACmC,MAAM,mBAAmB;AAEvD,IAAM,aAAa,CAAC,UAA2B;AACpD,QAAM;AAAA,IACJ,iBAAiB;AAAA,IACjB,IAAI;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,CAAC;AAAA,IACb,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,EAAE,OAAO,gBAAgB,GAAG,cAAc,IAAI;AAEpD,QAAM,KAAK,SAAS,SAAS,eAAe,cAAc;AAC1D,QAAM,eAAe,gBAAgB,cAAc;AAEnD,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,cAAc,KAAK,GAAG;AACxB,UAAM,EAAE,cAAc,OAAO,IAAI;AACjC,cAAU,OAAO,MAAM,uBAAuB;AAC9C,iBAAa,OAAO,MAAM,SAAY,eAAe,WAAW;AAChE,uBAAmB,OAAO,OAAO,eAAe,eAAe;AAAA,EACjE;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,mBAAO;AAAA,UACP,oBAAoB,yBAAiB,aAAa;AAAA,UAClD,yBAAiB,YAAY;AAAA,UAC7B,eAAe,yBAAiB,GAAG,YAAY,WAAW;AAAA,UAC1D,SAAS,EAAE,KAAK,yBAAiB;AAAA,UACjC,UAAU,EAAE,KACV,eACA,yBAAiB,sBAAsB;AAAA,UACzC,QAAQ,yBAAiB;AAAA,UACzB,aAAa,yBAAiB;AAAA,UAC9B,UAAU,yBAAiB;AAAA,UAC3B,OAAO,OAAO;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,QACH,OAAO,SAAS,aAAa,KAAK;AAAA,MACpC;AAAA,MACA,KAAK;AAAA,MACL,QAAQ;AAAA,MAEP;AAAA;AAAA,QACA,oBAAoB,gBAAAD,OAAC,QAAK,MAAM,kBAAkB,UAAS,WAAU;AAAA;AAAA;AAAA,EACxE;AAEJ;AAEA,WAAW,cAAc;;;ACvHrB,gBAAAE,cAAA;AARG,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAoB;AAClB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD,gBAAe;AAAA,MACf,IAAG;AAAA,MAEF;AAAA;AAAA,EACH;AAEJ;AAEA,QAAQ,cAAc;;;AC+BlB,gBAAAC,cAAA;AAhDJ,IAAM,oBAAoB,CAAC,UAAqC,IAAI,KAAK;AAEzE,IAAM,2BAA2B,CAAC,MAA0C;AAC1E,UAAQ,GAAG;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAcO,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAoB;AAClB,QAAM,iBAA8B,kBAAkB,KAAK;AAE3D,QAAM,yBACJ,0CAAkB,yBAAyB,cAAc;AAE3D,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD,gBAAgB;AAAA,MAChB,IAAI;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;AAEA,QAAQ,cAAc;;;ACtEtB;AAAA,EAAC,aAAAC;AAAA,EAIA,mBAAAC;AAAA;;;ACoCG,SAUI,OAAAC,QAVJ,QAAAC,cAAA;AAVG,IAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAkB;AAChB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,YAAY,cAAO,WAAW,CAAC;AAAA,QAC7C;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAe;AAAA,MAEd;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,UAAS;AAAA,YACT,WAAW,cAAO,iBAAiB;AAAA;AAAA,QACrC;AAAA,QAED;AAAA,QACA,uBAAuB,gBAAAA,OAAC,kBAAe;AAAA;AAAA;AAAA,EAC1C;AAEJ;AAEA,MAAM,cAAc;;;ACpChB,gBAAAE,cAAA;AARG,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,GAAG;AACL,MAAmB;AACjB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD,IAAG;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,OAAO,cAAc;;;ACejB,SAsBe,OAAAC,QAtBf,QAAAC,cAAA;AAbG,IAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAiB;AACf,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,yBAAiB;AAAA,UACjB,YAAY,yBAAiB,aAAa;AAAA,UAC1C,eAAe,yBAAiB,YAAY;AAAA,UAC5C,kBAAkB,yBAAiB,gBAAgB,cAAc,CAAC;AAAA,UAClE,kBACE,eACA,yBAAiB,GAAG,gBAAgB,cAAc,CAAC,WAAW;AAAA,UAChE;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MACJ,KAAI;AAAA,MACJ,QAAQ,WAAW,WAAW;AAAA,MAE7B;AAAA;AAAA,QACA,YAAY,gBAAAD,OAAC,QAAK,UAAS,WAAU,MAAM,kBAAkB;AAAA;AAAA;AAAA,EAChE;AAEJ;AAEA,KAAK,cAAc;;;AChDf,gBAAAE,cAAA;AATG,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,GAAG;AACL,MAAsB;AACpB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEA,UAAU,cAAc;;;AjLfpB,SAwBO,OAAAC,QAxBP,QAAAC,cAAA;AAPG,SAAS,YAAY,OAAc;AACxC,QAAM,EAAE,SAAS,KAAK,IAAI,WAAW,WAAW,GAAG,KAAK,IAAI;AAE5D,QAAM,cAAc,MAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,cAAO,cAAc,CAAC;AAAA,QACpC;AAAA,QACA;AAAA,MACF;AAAA,MACA,IAAG;AAAA,MACH,gBAAe;AAAA,MACf,OAAM;AAAA,MACN,cAAY,GAAG,OAAO,OAAO,GAAG;AAAA,MAE/B;AAAA;AAAA,QAAQ;AAAA,QAAE;AAAA;AAAA;AAAA,EACb;AAEJ;AAEO,IAAM,oBAAoB,CAC/B,IACA,SACA,YACA,cACG;AACH,MAAI,CAAC,CAAC,aAAa,OAAO,UAAU,SAAS,KAAK,YAAY,KAAK;AACjE,WAAO,gBAAAD,OAAC,eAAY,IAAQ,KAAK,WAAW,SAAS,YAAY;AACrE;;;AkL7CO,SAAS,eACd,OACA,cACQ;AACR,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,iBAAiB,UAAU;AACpC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,cACd,OACA,UAC0B;AAC1B,SAAO,QAAQ,QAAQ,WAAW,WAAW;AAC/C;;;ACrBA,SAAS,mBAAmB;AAqBrB,SAAS,kBACX,MACa;AAChB,SAAO,YAAY,CAAC,YAAe;AACjC,SAAK,OAAO,OAAO,EAAE,QAAQ,SAAO;AAClC,UAAI,OAAO,QAAQ,WAAY,KAAI,OAAO;AAAA,eACjC,OAAO,OAAO,QAAQ;AAC7B,QAAC,IAAqB,UAAU;AAAA,IACpC,CAAC;AAAA,EACH,GAAG,IAAI;AACT;;;AChCA;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,OACK;AAEP,IAAM,gBAAgB;AA2Df,IAAM,mBAAmB,CAC9B,UACA,UAAmC,CAAC,MACf;AACrB,QAAM;AAAA,IACJ,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT,YAAY;AAAA,EACd,IAAI;AAEJ,QAAM,aAAa;AAAA,IACjB,eAAe,MAAM;AAAA,IACrB,KAAK;AAAA,IACL,MAAM;AAAA;AAAA,IAGN,GAAI,WAAW,CAAC,MAAM,EAAE,SAAS,SAAS,CAAC,CAAC,IAAI,CAAC;AAAA,EACnD;AAEA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACF,IAAI,YAAY;AAAA,IACd;AAAA,IACA;AAAA,IACA,sBAAsB,CAAC,WAAW,UAAU,WAC1C,WAAW,WAAW,UAAU,QAAQ,EAAE,eAAe,CAAC;AAAA,EAC9D,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA,QAAQ;AAAA,MACN,UAAU;AAAA,QACR,UAAU;AAAA,QACV,KAAK,gBAAK;AAAA,QACV,MAAM,gBAAK;AAAA,MACb;AAAA,MACA,OAAO,eAAe,QAClB,gBAAgB,UAAU,iBAAiB,eAAe,KAAK,IAC/D;AAAA,IACN;AAAA,EACF;AACF;AAIA,SAAS,gBACP,UACA,WACAE,QACA;AA7HF;AA8HE,QAAM,iBAAiB,0BAA0B,SAAS;AAE1D,QAAM,uBAAuB;AAAA,IAC3B,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACR,EAAE,cAAc;AAEhB,QAAM,cAAc;AAAA,IAClB,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACR,EAAE,cAAc;AAEhB,SAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAK,KAAAA,UAAA,gBAAAA,OAAO,MAAP,YAAY;AAAA,IACjB,OAAM,KAAAA,UAAA,gBAAAA,OAAO,MAAP,YAAY;AAAA,IAClB,CAAC,cAAc,GAAG;AAAA,IAClB,WAAW;AAAA,EACb;AACF;AAIA,SAAS,0BAA0B,WAAsC;AACvE,UAAQ,WAAW;AAAA,IACjB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,EACX;AACF;;;AC/KA,SAAyB,aAAAC,YAAW,cAAc;AAoB3C,SAAS,aACd,QACA,kBAA6D,QACxC;AACrB,QAAM,aAAa,OAAU,IAAI;AAEjC,EAAAC,WAAU,MAAM;AACd,aAAS,YAAY,GAAkB;AACrC,UAAI,EAAE,QAAQ,SAAS,CAAC,UAAU,CAAC,WAAW,QAAS;AAEvD,YAAM,oBAAoB,qBAAqB,UAAU;AACzD,YAAM,eAAe,kBAAkB,CAAC;AACxC,YAAM,cAAc,kBAAkB,kBAAkB,SAAS,CAAC;AAElE,UAAI,CAAC,EAAE,YAAY,SAAS,kBAAkB,aAAa;AACzD,qBAAa,MAAM;AACnB,UAAE,eAAe;AAAA,MACnB;AAEA,UAAI,EAAE,YAAY,SAAS,kBAAkB,cAAc;AACzD,oBAAY,MAAM;AAClB,UAAE,eAAe;AAAA,MACnB;AAAA,IACF;AAEA,UAAM,UAAU,WAAW;AAE3B,QAAI,WAAW,QAAQ;AACrB,UAAI,mDAAiB,SAAS;AAC5B,wBAAgB,QAAQ,MAAM;AAAA,MAChC,OAAO;AACL,gBAAQ,MAAM;AACd,gBAAQ,iBAAiB,WAAW,WAAW;AAAA,MACjD;AAAA,IACF;AAEA,WAAO,MAAM;AACX,yCAAS,oBAAoB,WAAW;AAAA,IAC1C;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AACT;;;AC9DA,SAAS,eAAAC,cAAa,aAAAC,YAAW,UAAAC,eAAc;AAExC,IAAM,eAAe,MAAM;AAChC,QAAM,YAAYA,QAAO,KAAK;AAE9B,EAAAD,WAAU,MAAM;AACd,cAAU,UAAU;AACpB,WAAO,MAAM;AACX,gBAAU,UAAU;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAOD,aAAY,MAAM,UAAU,SAAS,CAAC,CAAC;AAChD;;;ACbA,SAAS,aAAAG,YAAW,YAAAC,iBAAgB;AAmC7B,IAAM,qBAAqB,CAChC,WACA,iBACG;AACH,QAAM,CAAC,mBAAmB,oBAAoB,IAAIA,UAAS,KAAK;AAEhE,EAAAD,WAAU,MAAM;AACd,QAAI;AACJ,QAAI,aAAa,CAAC,kBAAmB,sBAAqB,IAAI;AAAA,aACrD,CAAC,aAAa,mBAAmB;AACxC,kBAAY,WAAW,MAAM,qBAAqB,KAAK,GAAG,YAAY;AAAA,IACxE;AACA,WAAO,MAAM;AACX,mBAAa,SAAS;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,cAAc,WAAW,iBAAiB,CAAC;AAC/C,SAAO;AACT;;;ACpDA,SAAS,aAAAE,kBAAiB;AAgBnB,SAAS,kBACd,SAKA,SACA;AACA,EAAAA,WAAU,MAAM;AACd,UAAM,WAAW,CAAC,UAAmC;AACnD,YAAM,WAAW,MAAM,QAAQ,OAAO,IAClC,UACA,CAAC,OAAO,EAAE,OAAO,OAAO;AAE5B,YAAM,mBAAmB,SAAS;AAAA,QAAK,QACrC,yBAAI,SAAS,MAAM;AAAA,MACrB;AAKA,YAAM,+BAA+B,SAAS;AAAA,QAC5C,MAAM;AAAA,MACR;AACA,UAAI,oBAAoB,CAAC,6BAA8B;AAEvD,cAAQ,KAAK;AAAA,IACf;AACA,aAAS,iBAAiB,aAAa,QAAQ;AAC/C,aAAS,iBAAiB,cAAc,QAAQ;AAChD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,QAAQ;AAClD,eAAS,oBAAoB,cAAc,QAAQ;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,SAAS,OAAO,CAAC;AACvB;;;ACnDA,SAAS,aAAAC,kBAAiB;AAgBnB,IAAM,eAAe,CAC1B,KACA,YACG;AACH,EAAAA,WAAU,MAAM;AACd,UAAM,WAAW,CAAC,UAAyB;AACzC,YAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAC5C,UAAI,KAAK,QAAQ,MAAM,GAAG,MAAM,IAAI;AAClC,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAEA,aAAS,iBAAiB,WAAW,UAAU,IAAI;AAEnD,WAAO,MAAM;AACX,eAAS,oBAAoB,WAAW,UAAU,IAAI;AAAA,IACxD;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AACd;;;AClCA,SAAyB,aAAAC,YAAW,UAAAC,eAAc;AAkC3C,SAAS,qBACd,QACA,QACA,gBACqB;AACrB,QAAM,aAAaC,QAAU,IAAI;AAEjC,EAAAC,WAAU,MAAM;AACd,aAAS,YAAY,GAAkB;AACrC,UAAI,EAAE,QAAQ,SAAS,CAAC,UAAU,CAAC,WAAW,WAAW,CAAC;AACxD;AAEF,YAAM,oBAAoB,qBAAqB,UAAU;AACzD,YAAM,cAAc,kBAAkB,kBAAkB,SAAS,CAAC;AAClE,YAAM,eAAe,kBAAkB,CAAC;AAExC,UACG,CAAC,EAAE,YAAY,SAAS,kBAAkB,eAC1C,EAAE,YAAY,SAAS,kBAAkB,gBACzC,EAAE,YAAY,SAAS,kBAAkB,SAC1C;AACA,uBAAe,MAAM;AACrB,UAAE,eAAe;AACjB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,UAAM,UAAU,WAAW;AAC3B,QAAI,WAAW,QAAQ;AACrB,cAAQ,MAAM;AACd,cAAQ,iBAAiB,WAAW,WAAW;AAAA,IACjD;AAEA,WAAO,MAAM;AACX,yCAAS,oBAAoB,WAAW;AAAA,IAC1C;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SAAO;AACT;;;ACzEA;AAAA,EAIE,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AAIA,IAAM,kBAAkB,CAC7B,MAEC,EAA6B,QAAQ;AA4BjC,SAAS,aACdC,OACA,QACA,YAAuB,UACvB,QAC4C;AAC5C,QAAM,CAAC,mBAAmB,oBAAoB,IAAID,UAAS,EAAE;AAE7D,QAAM,UAAU,cAAc,QAAQ,eAAe;AACrD,QAAM,cAAc,cAAc,QAAQ,cAAc;AAExD,QAAM,gBAAgBF;AAAA,IACpB,CAAC,MAAa;AACZ,UAAI,CAACG,SAAQ,CAAC,gBAAgB,CAAC,EAAG;AAClC,UAAI,EAAE,QAAQ,SAAS;AAErB,UAAE,eAAe;AACjB,6BAAqB,UAAQ;AAC3B,cAAI,SAASA,QAAO,EAAG,QAAO,SAAS,OAAO;AAC9C,iBAAO,OAAO;AAAA,QAChB,CAAC;AAAA,MACH,WAAW,EAAE,QAAQ,aAAa;AAEhC,UAAE,eAAe;AACjB,6BAAqB,UAAQ;AAC3B,cAAI,SAAS,MAAM,SAAS,EAAG,QAAO,SAAS,OAAOA,QAAO;AAC7D,iBAAO,OAAO;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAACA,OAAM,sBAAsB,WAAW,MAAM;AAAA,EAChD;AAEA,EAAAF,WAAU,MAAM;AACd,QAAI,CAAC,QAAQ;AACX,2BAAqB,EAAE;AACvB;AAAA,IACF;AAEA,aAAS,iBAAiB,WAAW,eAAe,KAAK;AACzD,WAAO,MAAM;AACX,eAAS,oBAAoB,WAAW,eAAe,KAAK;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,eAAe,MAAM,CAAC;AAE1B,SAAO,CAAC,mBAAmB,oBAAoB;AACjD;;;ACxFA,SAAS,aAAAG,YAAW,YAAAC,iBAAgB;AAE7B,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,wBAAA,YAAS,KAAT;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AALU,SAAAA;AAAA,GAAA;AAQZ,IAAM,6BAA0D;AAAA,EAC9D;AAAA,IACE;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA;AAAA,IAEA;AAAA,EACF;AAAA,EACA;AAAA,IACE;AAAA;AAAA,IAEA;AAAA,EACF;AACF;AAeO,IAAM,gBAAgB,WAAY;AACvC,QAAM,CAAC,YAAY,aAAa,IAAID,UAAS,aAAgB;AAE7D,EAAAD,WAAU,MAAM;AACd,aAAS,WAAW;AAClB,iBAAW,CAACG,aAAY,UAAU,KAAK,4BAA4B;AACjE,YAAI,OAAO,WAAW,UAAU,EAAE,SAAS;AACzC,wBAAcA,WAAU;AACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,aAAS;AAET,WAAO,iBAAiB,UAAU,QAAQ;AAC1C,WAAO,MAAM,OAAO,oBAAoB,UAAU,QAAQ;AAAA,EAC5D,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;;;ACtEA,SAAS,aAAAC,mBAAiB;AAcnB,IAAM,kBAAkB,CAAC,YAAwB;AACtD,EAAAA,YAAU,MAAM;AACd,WAAO,iBAAiB,UAAU,OAAO;AACzC,WAAO,MAAM,OAAO,oBAAoB,UAAU,OAAO;AAAA,EAC3D,GAAG,CAAC,OAAO,CAAC;AACd;;;AChBO,IAAM,uBAAuB,CAAC,eAAuC;AAC1E,UAAQ,YAAY;AAAA,IAClB;AACE,aAAO;AAAA,IACT;AACE,aAAO;AAAA,IACT;AACE,aAAO;AAAA,IACT;AACE,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;ACPE,gBAAAC,cAAA;AADK,IAAM,gBAAgB,CAAC,EAAE,WAAW,GAAG,KAAK,MACjD,gBAAAA,OAAC,QAAI,GAAG,MAAM,WAAW,GAAG,WAAW,mBAAW,qBAAqB,CAAC,GAAG;AAMtE,IAAM,iBAAiB,CAAC,EAAE,WAAW,GAAG,KAAK,MAClD,gBAAAA,OAAC,QAAI,GAAG,MAAM,WAAW,GAAG,WAAW,mBAAW,qBAAqB,CAAC,GAAG;;;ACNtE,IAAM,gBAAgB;AACtB,IAAM,eAAe;AAErB,IAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT;AAAA,EACA,WAAW;AACb;AAEO,IAAM,8BAA8B;AAEpC,IAAM,oBAAoB;AAAA,EAC/B,SAAS;AAAA,EACT,eAAe;AACjB;AAEA,IAAM,iBAA0C;AAEzC,IAAM,mBAAmB;AAAA,EAC9B,gBAAgB;AAAA,EAChB;AAAA;AAAA;AAAA,EAKA,wBAAwB;AAAA,IACtB,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA;AAAA,EAEA,8BAA8B;AAAA,IAC5B,YAAY;AAAA,EACd;AAAA;AAAA,EAEA,8BAA8B;AAAA,IAC5B,YAAY;AAAA,EACd;AACF;AAEO,IAAM,uBAAuB,CAAC,SAAkB;AACrD,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMW,OAAO,YAAY,QAAQ;AAAA,iBAC9B,OAAO,IAAI,CAAC;AAAA;AAE7B;AAMO,IAAM,YAAY;AAAA,EACvB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,IAAM,qBAAqB;AAAA,EAChC,OAAO;AAAA,EACP,gBAAgB;AAClB;AAEO,IAAM,sBAAsB;AAAA,EACjC,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,IAAM,oBAAoB;AAAA,EAC/B,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AACV;AAEO,IAAM,kBAAkB;AAAA,EAC7B,QAAQ;AAAA,EACR,eAAe;AACjB;;;ACjGA;AAAA,EAEC,SAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,aAAAC;AAAA,EAKA,aAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,aAAAC;AAAA,EAKA,aAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,eAAAC;AAAA,EAKA,kBAAAC;AAAA,EAOA,gBAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,aAAAC;AAAA,EAMA,aAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,WAAAC;AAAA,EAKA,YAAAC;AAAA,EAKA,aAAAC;AAAA,EAKA,YAAAC;AAAA;;;ACnKM,IAAM,cAAc,CAAC,MAAM,MAAM,MAAM,MAAM,IAAI;AAGjD,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACFO,SAAS,mBACd,OACoC;AACpC,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAUO,IAAM,iBAAiB,CAAC,UAA0C;AACvE,SACE,OAAO,UAAU,YAAY,eAAe,SAAS,KAAqB;AAE9E;AAEO,IAAM,uBAAuB,CAClC,SACoC;AACpC,SAAO,SAAS,SAAS,SAAS,eAAe,SAAS;AAC5D;AAEO,SAAS,mBAAmB,OAAuB;AACxD,SAAO,MAAM,QAAQ,OAAO,GAAG;AACjC;AAEA,IAAM,kBAAkB,CAAC,MACvB,qBAAqB,mBAAmB,CAAC,CAAC;AAE5C,IAAM,gBAAgB,CAAC,MACrB,mBAAmB,CAAC;AAEtB,IAAM,0BAA0B,CAC9B,GACA,OACW;AACX,MAAI,MAAM,MAAO,QAAO;AACxB,MAAI,CAAC,GAAI,QAAO;AAChB,SAAO,MAAM,cACT,2BAA2B,EAAE,qBAC7B,uBAAuB,EAAE;AAC/B;AAEA,IAAM,WAAW,CAAC,GAAW,OAA4B;AACvD,MAAI,kBAAkB,CAAC,KAAK,cAAc,CAAC,EAAG,QAAO,cAAc,CAAC;AACpE,MAAI,eAAe,CAAC,EAAG,QAAO,gBAAgB,CAAC;AAC/C,MAAI,qBAAqB,CAAC,EAAG,QAAO,wBAAwB,GAAG,EAAE;AACjE,SAAO;AACT;AAEA,IAAM,oBAAoB,CAAC,OAAe,OACxC,MACG,MAAM,GAAG,EACT,IAAI,OAAK,SAAS,GAAG,EAAE,CAAC,EACxB,KAAK,GAAG;AAEN,SAAS,2BACd,UACAC,SACA,QACwB;AACxB,MAAI,CAAC,SAAU;AAEf,QAAM,aAAyB,CAAC;AAChC,QAAM,UAAU,SAASA,OAAM;AAC/B,QAAM,UAAU,SAAS,IAAI,MAAM,KAAK;AAExC,MAAI,mBAAmB,QAAQ,GAAG;AAChC,gBAAY,QAAQ,QAAM;AACxB,UAAI,SAAS,EAAE,GAAG;AAChB,QAAC,WAAsC,GAAG,OAAO,IAAI,EAAE,GAAG,OAAO,EAAE,IACjE,kBAAkB,SAAS,EAAE,EAAE,SAAS,GAAG,EAAE;AAAA,MACjD;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,IAAC,WAAsC,GAAG,OAAO,GAAG,OAAO,EAAE,IAC3D,kBAAkB,SAAS,SAAS,CAAC;AAAA,EACzC;AAEA,SAAO;AACT;AAEO,SAAS,qBACd,GACA,IACA,cAC+B;AAC/B,MAAI,CAAC,GAAI,QAAO;AAChB,QAAM,UAAU,YAAY,QAAQ,EAAE;AACtC,SAAO,YAAY,OAAO,CAAC,KAAK,MAAM,UAAU;AAC9C,WAAO,EAAE,GAAG,KAAK,CAAC,IAAI,GAAG,SAAS,UAAU,IAAI,aAAa;AAAA,EAC/D,GAAG,CAAC,CAAC;AACP;;;ACjHA;AAAA,EAAC,iBAAAC;AAAA,EAMA,iBAAAC;AAAA,EAMA,iBAAAC;AAAA,EAMA,iBAAAC;AAAA,EAMA,iBAAAC;AAAA,EAIA,iBAAAC;AAAA,EAMA,iBAAAC;AAAA,EAMA,iBAAAC;AAAA,EAMA,iBAAAC;AAAA;;;ACxBC,gBAAAC,cAAA;AARK,IAAM,WAAW,CAAgC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA,aAAa,gBAAO,GAAG,SAAS,aAAa;AAAA,QAC7C,aAAa,cAAc,QAAQ,gBAAO,GAAG,SAAS,aAAa;AAAA,MACrE;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA;AACF;AAGF,SAAS,cAAc;;;ACwDnB,gBAAAC,cAAA;AA7EG,IAAM,MAAM,CAAgC;AAAA,EACjD;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;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;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAmB;AACjB,QAAM,mBAAmB;AAAA,IACvB,GAAG,2BAA2B,SAAS,KAAK,GAAG;AAAA,IAC/C,GAAG,2BAA2B,eAAe,KAAK,KAAK;AAAA,IACvD,GAAG,2BAA2B,cAAc,KAAK,KAAK;AAAA,IACtD,GAAG,2BAA2B,QAAQ,KAAK,GAAG;AAAA,IAC9C,GAAG,2BAA2B,cAAc,KAAK,KAAK;AAAA,IACtD,GAAG,2BAA2B,aAAa,KAAK,KAAK;AAAA,IACrD,GAAG,2BAA2B,QAAQ,KAAK,GAAG;AAAA,IAC9C,GAAG,2BAA2B,WAAW,KAAK,OAAO;AAAA,IACrD,GAAG,2BAA2B,WAAW,KAAK,OAAO;AAAA,IACrD,GAAG,2BAA2B,OAAO,KAAK,GAAG;AAAA,IAC7C,GAAG,2BAA2B,UAAU,KAAK,OAAO;AAAA,IACpD,GAAG,2BAA2B,UAAU,KAAK,OAAO;AAAA,IACpD,GAAG,2BAA2B,UAAU,KAAK,KAAK;AAAA,IAClD,GAAG,2BAA2B,MAAM,KAAK,GAAG;AAAA,IAC5C,GAAG,2BAA2B,OAAO,KAAK,GAAG;AAAA,IAC7C,GAAG,2BAA2B,KAAK,KAAK,GAAG;AAAA,IAC3C,GAAG,2BAA2B,QAAQ,KAAK,GAAG;AAAA,IAC9C,GAAG,2BAA2B,UAAU,KAAK,GAAG;AAAA,IAChD,GAAG,2BAA2B,WAAW,KAAK,KAAK;AAAA,IACnD,GAAG,2BAA2B,WAAW,KAAK,KAAK;AAAA,IACnD,GAAG,2BAA2B,SAAS,KAAK,SAAS;AAAA,IACrD,GAAG,2BAA2B,WAAW,KAAK,YAAY;AAAA,IAC1D,GAAG,2BAA2B,eAAe,KAAK,UAAU;AAAA,IAC5D,GAAG,2BAA2B,KAAK,KAAK,KAAK;AAAA,IAC7C,GAAG,2BAA2B,WAAW,KAAK,OAAO;AAAA,IACrD,GAAG,2BAA2B,QAAQ,KAAK,OAAO;AAAA,IAClD,GAAG,2BAA2B,YAAY,KAAK,KAAK;AAAA,IACpD,GAAG,2BAA2B,cAAc,KAAK,KAAK;AAAA,IACtD,GAAG,2BAA2B,cAAc,KAAK,KAAK;AAAA,IACtD,GAAG,2BAA2B,gBAAgB,KAAK,KAAK;AAAA,IACxD,GAAG,2BAA2B,UAAU,KAAK,MAAM;AAAA,IACnD,GAAG,2BAA2B,WAAW,KAAK,OAAO;AAAA,IACrD,GAAG,2BAA2B,UAAU,KAAK,MAAM;AAAA,EACrD;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,WAAW,eAAO,OAAO;AAAA,UACzB,iBAAiB,eAAO,SAAS;AAAA,UACjC,gBAAgB,eAAO,SAAS;AAAA,UAChC,UAAU,eAAO,OAAO;AAAA,UACxB,gBAAgB,eAAO,SAAS;AAAA,UAChC,eAAe,eAAO,SAAS;AAAA,UAC/B,UAAU,eAAO,OAAO;AAAA,UACxB,aAAa,eAAO,WAAW;AAAA,UAC/B,aAAa,eAAO,WAAW;AAAA,UAC/B,SAAS,eAAO,OAAO;AAAA,UACvB,YAAY,eAAO,WAAW;AAAA,UAC9B,YAAY,eAAO,WAAW;AAAA,UAC9B,YAAY,eAAO,SAAS;AAAA,UAC5B,QAAQ,eAAO,OAAO;AAAA,UACtB,SAAS,eAAO,OAAO;AAAA,UACvB,OAAO,eAAO,OAAO;AAAA,UACrB,UAAU,eAAO,OAAO;AAAA,UACxB,YAAY,eAAO,OAAO;AAAA,UAC1B,aAAa,eAAO,SAAS;AAAA,UAC7B,aAAa,eAAO,SAAS;AAAA,UAC7B,WAAW,eAAO,aAAa;AAAA,UAC/B,aAAa,eAAO,gBAAgB;AAAA,UACpC,iBAAiB,eAAO,cAAc;AAAA,UACtC,OAAO,eAAO,SAAS;AAAA,UACvB,aAAa,eAAO,WAAW;AAAA,UAC/B,UAAU,eAAO,WAAW;AAAA,UAC5B,gBAAgB,eAAO,SAAS;AAAA,UAChC,cAAc,eAAO,SAAS;AAAA,UAC9B,kBAAkB,eAAO,SAAS;AAAA,UAClC,gBAAgB,eAAO,SAAS;AAAA,UAChC,YAAY,eAAO,UAAU;AAAA,UAC7B,aAAa,eAAO,WAAW;AAAA,UAC/B,YAAY,eAAO,UAAU;AAAA,QAC/B;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,GAAG,OAAO,GAAG,iBAAiB;AAAA;AAAA,EACzC;AAEJ;AAEA,IAAI,cAAc;;;AC3IlB;AAAA,EACC,6BAAAC;AAAA,EAOA,mBAAAC;AAAA,EAKA,gBAAAC;AAAA,EAKA,cAAAC;AAAA,EAKA,qBAAAC;AAAA,EAIA,sBAAAC;AAAA,EAWE,mBAAAC;AAAA;;;ACmCC,gBAAAC,cAAA;AArCG,IAAM,OAAO,CAAgC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,IACpB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EACA,YAAY;AAAA,IACV,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EACA,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EACA,eAAe,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM;AAAA,EACnE;AAAA,EACA,GAAG;AACL,MAAoB;AAClB,QAAM,iBAAiB;AAAA,IACrB,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACP,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,aAAO,2BAA2B,CAAC;AAAA,QACjD;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,EAAE,GAAG,OAAO,GAAG,eAAe;AAAA;AAAA,EACvC;AAEJ;AAEA,KAAK,cAAc;;;ACjCf,gBAAAC,cAAA;AAjBG,IAAM,YAAY,CAAgC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAyB;AACvB,QAAM,iBAA6B;AAAA,IACjC,GAAG,2BAA2B,SAAS,KAAK,UAAU;AAAA,IACtD,GAAG,2BAA2B,aAAa,KAAK,QAAQ;AAAA,IACxD,GAAG,2BAA2B,iBAAiB,KAAK,aAAa;AAAA,EACnE;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,aAAO,iBAAiB;AAAA,UACxB,WAAW,aAAO,cAAc;AAAA,UAChC,eAAe,aAAO,YAAY;AAAA,UAClC,mBAAmB,aAAO,iBAAiB;AAAA,UAC3C,oBAAoB,eAAe,aAAO,mBAAmB;AAAA,UAC7D,oBAAoB,gBAAgB,aAAO,oBAAoB;AAAA,QACjE;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,GAAG,OAAO,GAAG,eAAe;AAAA;AAAA,EACvC;AAEJ;AAEA,UAAU,cAAc;;;AC5ExB;AAAA,EAAC,YAAAC;AAAA,EAGA,QAAAC;AAAA,EAIO,WAAAC;AAAA,EAOA,aAAAC;AAAA,EAGA,aAAAC;AAAA,EAGA,aAAAC;AAAA,EAGA,aAAAC;AAAA,EAIA,yBAAAC;AAAA,EAIA,0BAAAC;AAAA,EAIA,uBAAAC;AAAA,EAIA,wBAAAC;AAAA,EAIA,0BAAAC;AAAA,EAIA,oBAAAC;AAAA;;;ACYJ,gBAAAC,cAAA;AAjBG,IAAM,QAAQ,CAAgC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAqB;AACnB,QAAM,iBAAiB;AAAA,IACrB,GAAG,2BAA2B,YAAY,kBAAkB;AAAA,IAC5D,GAAG,2BAA2B,QAAQ,cAAc;AAAA,EACtD;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,cAAO;AAAA,UACP,aAAa,cAAO,WAAW,SAAS,EAAE;AAAA,UAC1C,gBAAgB,cAAO,kBAAkB,YAAY,EAAE;AAAA,UACvD,cAAO;AAAA,UACP,UAAU,cAAO;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,GAAG,OAAO,GAAG,eAAe;AAAA;AAAA,EACvC;AAEJ;;;ACzDI,gBAAAC,cAAA;AAPG,IAAM,SAAS,CAAgC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAsB;AACpB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,eAAc;AAAA,MACb,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA;AAAA,EACrD;AAEJ;AAEA,OAAO,cAAc;;;ACRjB,gBAAAC,cAAA;AAPG,IAAM,SAAS,CAAgC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAsB;AACpB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,eAAc;AAAA,MACb,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA;AAAA,EACrD;AAEJ;AAEA,OAAO,cAAc;;;AC3BrB;AAAA,EAAQ,WAAAC;AAAA,EAQA,iBAAAC;AAAA,EAaP,MAAAC;AAAA;;;ACrBD;AAAA,EAIE,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;;;ACVP;AAAA,EAAQ,iBAAAC;AAAA,EAWP,oBAAAC;AAAA,EAKA,iBAAAC;AAAA,EAIA,iBAAAC;AAAA,EAQA,MAAAC;AAAA,EAIA,kBAAAC;AAAA,EAMA,gBAAAC;AAAA;;;AD+EM,IAAM,eAAe,CAAC;AAAA,EAC3B,oBAAoB;AAAA,EACpB;AAAA,EACA;AACF,MAAuC;AAzHvC;AA0HE,QAAM,CAAC,YAAY,aAAa,IAAIC,UAAS,iBAAiB;AAE9D,QAAM,cAAcC,OAAM;AAC1B,QAAM,cAAc,kBAAM,GAAG,WAAW;AAExC,QAAM,gBAAgB,MAAM;AAC1B,kBAAc,IAAI;AAAA,EACpB;AAEA,QAAM,iBAAiB,MAAM;AAC3B,kBAAc,KAAK;AAAA,EACrB;AAEA,EAAAC,YAAU,MAAM;AACd,kBAAc,UAAU;AAAA,EAC1B,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,iBAAiBC,aAAY,MAAM;AACvC,kBAAc,kBAAgB;AAC5B,YAAM,cAAc,CAAC;AAErB,UAAI,UAAU;AACZ,iBAAS,WAAW;AAAA,MACtB;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,iBAAiBC,QAAuB,IAAI;AAElD,QAAM,CAAC,SAAS,UAAU,IAAIJ,UAAS,KAAK;AAE5C,QAAM,YAAY,aAAa;AAC/B,QAAM,SAAS,iBAAiB,eAAe,OAAO;AAEtD,QAAM,CAAC,uBAAuB,uBAAuB,IACnDA,UAA2B,IAAI;AAEjC,kBAAgB,MAAM;AAEpB,QAAI,eAAe,WAAW,YAAY;AACxC,8BAAwB,eAAe,QAAQ,YAAY;AAAA,IAC7D;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,EAAAE,YAAU,MAAM;AACd,QAAI,UAAU,GAAG;AACf,iBAAW,IAAI;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,cAAoC;AAAA,IACxC,IAAI,GAAG,WAAW;AAAA,IAClB,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,iBAAiB,GAAG,WAAW;AAAA,EACjC;AAEA,QAAM,YAAgC;AAAA,IACpC,IAAI,GAAG,WAAW;AAAA,IAClB,MAAM;AAAA,IACN,mBAAmB,GAAG,WAAW;AAAA,IACjC,eAAe,CAAC;AAAA,IAChB,WAAW;AAAA,MACT,sBAAO;AAAA,MACP,CAAC,cAAc,sBAAO,cAAc;AAAA,MACpC,WAAW,sBAAO,gBAAgB;AAAA,IACpC;AAAA,IACA,SAAQ,+BAAU,0BAAV,YAAmC;AAAA,EAC7C;AAEA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AE7MA;AAAA,EAGE;AAAA,EACA;AAAA,OACK;AAsBE,gBAAAG,cAAA;AANT,IAAM,mBAAmB,cAAyC,CAAC,CAAC;AAE7D,IAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA,GAAG;AACL,MAAkD;AAChD,SAAO,gBAAAA,OAAC,oBAAiB,OAAO,QAAS,UAAS;AACpD;AAEO,IAAM,sBAAsB,MAAiC;AAClE,QAAM,UAAU,WAAW,gBAAgB;AAC3C,MAAI,QAAQ,OAAO,GAAG;AACpB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ACSM,gBAAAC,cAAA;AA3BC,IAAM,YAAY,CAAC;AAAA,EACxB,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAsB;AACpB,QAAM;AAAA,IACJ,IAAI;AAAA,IACJ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,aAAa,EAAE,mBAAmB,YAAY,UAAU,GAAG,CAAC;AAEhE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,kBAAO,SAAS;AAAA,QAC9B;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,UACA;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,UAAU,cAAc;;;AClBpB,SAwBI,OAAAC,QAxBJ,QAAAC,cAAA;AAZG,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA,GAAG;AACL,MAA4B;AAC1B,QAAM,EAAE,YAAY,YAAY,IAAI,oBAAoB;AACxD,QAAM,EAAE,IAAI,GAAG,gBAAgB,IAAI,oCAAe,CAAC;AAEnD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,SAAQ;AAAA,MACP,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,kBAAO,eAAe;AAAA,UACtB,sBAAW,eAAe;AAAA,UAC1B,mBAAW,kBAAkB;AAAA,UAC7B,mBAAW,uBAAuB;AAAA,UAClC;AAAA,UACA,sBAAW,kBAAkB;AAAA,QAC/B;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,cAAa;AAAA,YACb,WAAW,sBAAW;AAAA,YAEtB,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,OAAM;AAAA,gBACN,QAAO;AAAA,gBACP,MAAM;AAAA;AAAA,YACR;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT,sBAAW;AAAA,cACX,yBAAiB,gBAAgB,cAAc,CAAC;AAAA,cAChD,QAAQ,yBAAiB;AAAA,YAC3B;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,gBAAgB,cAAc;;;ACvCxB,gBAAAE,cAAA;AA/BC,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA0B;AACxB,QAAM,EAAE,gBAAgB,UAAU,IAAI,oBAAoB;AAE1D,QAAM;AAAA,IACJ,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI,gCAAa,CAAC;AAElB,QAAM,iBAA6B;AAAA;AAAA,IAEjC,CAAC,kCAAyC,GAAG,SAAS;AAAA,EACxD;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,kBAAO,MAAM,aAAa;AAAA,QACxC;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MACJ,OAAO,EAAE,GAAG,uCAAW,OAAO,GAAG,eAAe;AAAA,MAEhD,0BAAAA,OAAC,OAAI,KAAK,gBAAgB,SAAQ,mBAC/B,UACH;AAAA;AAAA,EACF;AAEJ;AAEA,cAAc,cAAc;;;ACtD5B;AAAA,EAAC,MAAAC;AAAA;;;ACiBK,SACE,OAAAC,QADF,QAAAC,cAAA;AAHC,IAAM,WAAW,CAAC,EAAE,OAAO,KAAK,GAAG,KAAK,MAAqB;AAClE,SACE,gBAAAD,OAAC,SAAI,KAAU,cAAW,iBACxB,0BAAAC,OAAC,QAAM,GAAG,MACR;AAAA,oBAAAD,OAAC,QAAK,MAAM,eAAe,UAAS,WAAU,WAAW,iBAAO,MAAM;AAAA,IACrE;AAAA,KACH,GACF;AAEJ;AAEA,SAAS,cAAc;;;ACRjB,gBAAAE,cAAA;AATC,IAAM,0BAA0B,CACrC,UACwC;AACxC,SAAQ,MAAqC,QAAQ;AACvD;AAEO,IAAM,aAAa,CAAC,EAAE,UAAU,KAAK,GAAG,KAAK,MAAuB;AACzE,MAAI,wBAAwB,IAAI,GAAG;AACjC,WACE,gBAAAA,OAAC,QAAK,KAAoC,WAAW,MAClD,UACH;AAAA,EAEJ;AACA,SACE,gBAAAA,OAAC,UAAK,KAAW,GAAG,MACjB,UACH;AAEJ;AAEA,WAAW,cAAc;;;AC7BzB,SAAS,UAAU,kBAAAC,uBAAsB;;;ACAzC;AAAA,EAAC,MAAAC;AAAA;;;ACAD;AAAA,EAAQ,QAAAC;AAAA,EA0BP,sBAAAC;AAAA,EAIA,sBAAAC;AAAA,EAKG,aAAAC;AAAA,EACA,aAAAC;AAAA,EAIA,sBAAAC;AAAA,EAAmB,kBAAAC;AAAA,EAKtB,kBAAAC;AAAA,EAYK,mBAAAC;AAAA,EAOiB,cAAAC;AAAA,EAIpB,MAAAC;AAAA,EAMF,iBAAAC;AAAA,EA6BA,kBAAAC;AAAA,EA6BA,iBAAAC;AAAA,EA6BA,6BAAAC;AAAA,EAIA,gBAAAC;AAAA,EAMA,mBAAAC;AAAA,EAWA,qBAAAC;AAAA,EAYA,oBAAAC;AAAA,EAYA,kBAAAC;AAAA;;;AC9MD,SAAS,iBAAAC,gBAAe,cAAAC,mBAAkB;AASnC,IAAM,qBAAqBD,eAEhC,CAAC,CAAC;AAEG,IAAM,wBAAwB,MAAMC,YAAW,kBAAkB;;;ACZxE,SAAS,SAAAC,QAAO,UAAAC,eAAc;;;ACD9B;AAAA,EAAC,KAAAC;AAAA,EAKc,QAAAC;AAAA,EAId,QAAAC;AAAA,EAGc,MAAAC;AAAA;;;ADgCX,SAYE,OAAAC,QAZF,QAAAC,cAAA;AAnBG,SAAS,QAAQ,OAAqB;AAC3C,QAAM;AAAA,IACJ,MAAAC,QAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,YAAYC,QAAO,KAAK,IAAI,CAAC;AACnC,QAAM,sBAAsB,EAAE,UAAU,UAAU;AAClD,QAAM,sBAAsB,EAAE,UAAU,UAAU;AAElD,QAAM,cAAcC,OAAM;AAC1B,QAAM,WAAW,GAAG,WAAW;AAE/B,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,mBAAiB;AAAA,MAChB,GAAG,iBAAiB,IAAI,GAAG,WAAW,gBAAO,GAAG,GAAG,WAAW,IAAI;AAAA,MACnE,OAAO;AAAA,QACL,GAAG,uCAAW;AAAA,QACd,gBAAgB,sBAAsB;AAAA,QACtC,OAAOC;AAAA,QACP,QAAQA;AAAA,MACV;AAAA,MAEA;AAAA,wBAAAF,OAAC,WAAM,IAAI,UAAW,mBAAQ;AAAA,QAC9B,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,GAAG,gBAAO,MAAM;AAAA,YAC3B,OAAO;AAAA,cACL,gBAAgB,sBAAsB;AAAA,YACxC;AAAA,YACA,IAAG;AAAA,YACH,IAAG;AAAA,YACH,GAAE;AAAA,YACF,MAAK;AAAA,YACL,QAAQ,aAAa,KAAK;AAAA,YAC1B,aAAY;AAAA;AAAA,QACd;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,QAAQ,cAAc;;;AERlB,SAUI,UAVJ,OAAAK,QAUI,QAAAC,cAVJ;AA/CG,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA,UAAU;AAAA,EACV,MAAAC,QAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,CAAC;AAAA,EACb,GAAG;AACL,MAAmB;AACjB,QAAM,EAAE,SAAS,cAAc,MAAM,UAAU,IAAI,sBAAsB;AAEzE,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,UAAU,CAAC,CAAC;AAClB,QAAM,kBAAkB,WAAW;AACnC,QAAM,eAAe,CAAC,YAAY;AAClC,QAAM,eAAe,YAAY,CAAC;AAClC,QAAM,YAAY,CAAC,YAAY,CAAC;AAEhC,QAAM,WAAW;AAAA,IACf;AAAA,IACA,eAAO;AAAA,IACP,eAAO,WAAW,eAAe,eAAe,OAAO,EAAE;AAAA,IACzD,eAAO,WAAW,YAAY,YAAYA,KAAI,EAAE;AAAA,IAChD,gBAAgB,eAAO,WAAW;AAAA,IAClC,GAAI,kBACA,CAAC,eAAO,oBAAoB,GAAG,eAAO,aAAa,YAAY,EAAE,CAAC,IAClE,CAAC;AAAA,IACL,gBAAgB,eAAO,WAAW;AAAA,IAClC,aAAa,eAAO,YAAY;AAAA,IAChC,aAAa,eAAO,oBAAoB;AAAA,IACxC,WAAW,eAAO,oBAAoB;AAAA,IACtC,yBAAiB,QAAQA,KAAI,EAAE;AAAA,IAC/B;AAAA,EACF;AAEA,QAAM,cAAc,WAClB,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,UAAS;AAAA,MACT,WAAW,GAAG,eAAO,MAAM,WAAW,SAAS;AAAA;AAAA,EACjD;AAGF,QAAM,UACJ,gBAAAC,OAAA,YACG;AAAA,gBACC,gBAAAA,OAAA,YACG;AAAA,uBAAiB,UAAU;AAAA,MAC5B,gBAAAD,OAAC,UAAK,eAAa,SAAS,WAAW,GAAG,WAAW,SAAS,GAC3D,UACH;AAAA,MACC,iBAAiB,WAAW;AAAA,OAC/B;AAAA,IAED,gBAAgB;AAAA,IAChB,WACC,gBAAAA,OAAC,UAAK,WAAW,GAAG,CAAC,aAAa,eAAO,2BAA2B,CAAC,GACnE,0BAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,MAAK;AAAA,QACL,OACE,YAAY,aAAa,YAAY,WACjC,iBACA;AAAA,QAEN,SAAS;AAAA,QACT,WAAW,eAAO;AAAA;AAAA,IACpB,GACF;AAAA,KAEJ;AAGF,MAAI,CAAC;AACH,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACC,GAAG,iBAAiB,IAAI,UAAU,WAAW,IAAI;AAAA,QAClD,SAAS,UAAU,SAAY;AAAA,QAC/B;AAAA,QACA;AAAA,QACA,iBAAe;AAAA,QAEd;AAAA;AAAA,IACH;AAAA,WAEK;AACP,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACC,GAAG;AAAA,UACF;AAAA,UACA;AAAA;AAAA,UAEA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SACE,UACI;AAAA;AAAA,UAEC;AAAA;AAAA,QAGP;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAI;AAAA,QACJ;AAAA,QAEC;AAAA;AAAA,IACH;AAEN;AAEA,OAAO,cAAc;;;AChJrB,SAAS,aAAAG,mBAAiB;;;ACA1B;AAAA,EAKE,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AAkDH,gBAAAC,cAAA;AApBJ,IAAM,sBAAsBC,eAAwC;AAAA,EAClE,QAAQ;AAAA,EACR,cAAc,MAAM;AAAA,EACpB,gBAAgB,MAAM;AACxB,CAAC;AAEM,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,GAAG;AACL,GAAqC;AACnC,QAAM,CAAC,OAAO,QAAQ,IAAIC;AAAA,IACxB,CAAC;AAAA,EACH;AACA,QAAM,CAAC,UAAU,IAAI,aAAa,MAAM,QAAQ,KAAK,MAAM;AAE3D,EAAAC,YAAU,MAAM;AAtDlB;AAuDI,sBAAM,UAAU,MAAhB,mBAAmB,YAAnB,mBAA4B;AAAA,EAC9B,GAAG,CAAC,UAAU,CAAC;AAEf,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,GAAG;AAAA,QACH,cAAc,SAAO,SAAS,UAAQ,CAAC,GAAG,MAAM,GAAG,CAAC;AAAA,QACpD,gBAAgB,SACd,SAAS,UAAQ,KAAK,OAAO,UAAQ,SAAS,GAAG,CAAC;AAAA,QACpD,YAAY,MAAM,UAAU;AAAA,MAC9B;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEO,IAAM,yBAAyB,MAAM;AAC1C,SAAOI,YAAW,mBAAmB;AACvC;;;AC3EA;AAAA,EAAC,WAAAC;AAAA,EAKA,MAAAC;AAAA,EAKA,YAAAC;AAAA,EASG,SAAAC;AAAA,EAIA,QAAAC;AAAA,EAKH,oBAAAC;AAAA,EAmBA,MAAAC;AAAA,EAOA,kBAAAC;AAAA;;;AFvBG,gBAAAC,cAAA;AAnBG,IAAM,eAAe,CAAC;AAAA,EAC3B,YAAY;AAAA,EACZ,SAAS;AAAA,EACT;AAAA,EACA,YAAY,CAAC;AAAA,EACb;AAAA,EACA,GAAG;AACL,MAAyB;AACvB,QAAM,EAAE,QAAQ,cAAc,iBAAiB,SAAS,OAAO,IAC7D,uBAAuB;AAEzB,EAAAC,YAAU,MAAM;AACd,uDAAkB,EAAE,WAAW,OAAO;AAAA,EACxC,GAAG,CAAC,WAAW,MAAM,CAAC;AAEtB,QAAM,EAAE,QAAQ,CAAC,GAAG,GAAG,cAAc,IAAI;AACzC,QAAM,SAAS,SAAS,SAAS;AAEjC,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,UAAS;AAAA,MACT,UAAS;AAAA,MACT,KAAK,eAAe,SAAS,GAAG;AAAA,MAC/B,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,qBAAO;AAAA,UACP,mBAAW;AAAA,UACX,mBAAW,uBAAuB;AAAA,UAClC,mBAAW,0BAA0B,MAAM,EAAE;AAAA,QAC/C;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,MAAK;AAAA,MACL,eAAa,CAAC;AAAA,MACd,WAAW;AAAA,MACX,QAAO;AAAA,MACP,OAAO,EAAE,GAAG,OAAO,GAAG,aAAa;AAAA;AAAA,EACrC;AAEJ;AAEA,aAAa,cAAc;;;AGzD3B,SAAS,aAAAE,aAAW,UAAAC,eAAc;AAyC5B,SA2BM,OAAAC,QA3BN,QAAAC,cAAA;AA1BC,IAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA,GAAG;AACL,MAA+B;AAC7B,QAAM,UAAUC,QAA0B,IAAI;AAC9C,QAAM,cAAc,eAAe,KAAK,OAAO;AAE/C,QAAM,EAAE,SAAS,cAAc,gBAAgB,WAAW,IACxD,uBAAuB;AAEzB,EAAAC,YAAU,MAAM;AACd,iBAAa,OAAO;AACpB,WAAO,MAAM,eAAe,OAAO;AAAA,EACrC,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAH,OAAC,QACC,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,MAAK;AAAA,MACL;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,qBAAO;AAAA,QACP,qBAAO,OAAO;AAAA,QACd,yBAAiB,YAAY;AAAA,QAC7B,qBAAO,kBAAkB;AAAA,QACzB,cAAY,kBAAkB;AAAA,QAC9B,WAAW,qBAAO,gBAAgB;AAAA,MACpC;AAAA,MACA,SACE,UACI,SACA,OAAK;AACH,2CAAU;AACV;AAAA,MACF;AAAA,MAEN,iBAAe,UAAU,OAAO,eAAe,eAAe;AAAA,MAC7D,GAAG;AAAA,MACJ,UAAU,eAAe,UAAU,IAAI;AAAA,MAEtC;AAAA,mBACC,gBAAAD,OAAC,UAAK,WAAW,GAAG,mBAAW,iBAAiB,CAAC,GAC/C,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS;AAAA;AAAA,QACX,GACF;AAAA,QAGD,QACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,GAAG,WAAW,SAAS;AAAA,YAClC,UAAS;AAAA,YACT;AAAA;AAAA,QACF;AAAA,QAEF,gBAAAA,OAAC,UAAK,WAAW,GAAG,WAAW,SAAS,GAAI,UAAS;AAAA;AAAA;AAAA,EACvD,GACF;AAEJ;AAEA,mBAAmB,cAAc;;;ACxFjC,SAAS,aAAAI,aAAW,UAAAC,eAAc;AAmC5B,SAoBW,OAAAC,QApBX,QAAAC,cAAA;AAxBC,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,MAA6B;AAC3B,QAAM,UAAUC,QAA0B,IAAI;AAC9C,QAAM,cAAc,eAAe,KAAK,OAAO;AAE/C,QAAM,EAAE,SAAS,cAAc,gBAAgB,WAAW,IACxD,uBAAuB;AAEzB,EAAAC,YAAU,MAAM;AACd,iBAAa,OAAO;AACpB,WAAO,MAAM,eAAe,OAAO;AAAA,EACrC,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAH,OAAC,QACC,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,MAAK;AAAA,MACL;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,qBAAO;AAAA,QACP,qBAAO,OAAO;AAAA,QACd,yBAAiB,YAAY;AAAA,QAC7B,qBAAO,kBAAkB;AAAA,QACzB,cAAY,kBAAkB;AAAA,MAChC;AAAA,MACA;AAAA,MACA,SAAS,OAAK;AACZ,2CAAU;AACV;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MACJ,UAAU,eAAe,UAAU,IAAI;AAAA,MAEtC;AAAA,gBAAQ,gBAAAD,OAAC,QAAK,UAAS,WAAU,MAAY;AAAA,QAC7C;AAAA;AAAA;AAAA,EACH,GACF;AAEJ;AAEA,iBAAiB,cAAc;;;AC9D/B;AAAA,EAAQ,SAAAI;AAAA,EAQP,oBAAAC;AAAA,EAIA,mBAAAC;AAAA,EAIA,uBAAAC;AAAA;;;ACQG,gBAAAC,cAAA;AARG,IAAM,UAAU,CAAC;AAAA,EACtB,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAoB;AAClB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,gBAAO,SAAS,gBAAO,YAAY,KAAK,EAAE,CAAC;AAAA,QACzD;AAAA,QACA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;;;ACpBI,gBAAAC,cAAA;AAPG,IAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAgC;AAC9B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACH,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD,cAAa;AAAA,MACb,aAAY;AAAA,MACZ,OAAM;AAAA;AAAA,EACR;AAEJ;AAEA,oBAAoB,cAAc;;;AClBhC,gBAAAC,cAAA;AADK,IAAM,mBAAmB,CAAC,UAC/B,gBAAAA,OAAC,iBAAe,GAAG,OAAO;;;ACSxB,SASW,OAAAC,QATX,QAAAC,cAAA;AARG,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,MACE,gBAAAD,OAAC,QACC,0BAAAC;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA,qBAAO;AAAA,MACP,qBAAO,OAAO;AAAA,MACd,yBAAiB,YAAY;AAAA,IAC/B;AAAA,IACC,GAAG;AAAA,IAEH;AAAA,cAAQ,gBAAAD,OAAC,QAAK,UAAS,WAAU,MAAY;AAAA,MAC7C;AAAA;AAAA;AACH,GACF;AAGF,iBAAiB,cAAc;;;ACjB7B,gBAAAE,cAAA;AAJK,IAAM,yBAAyB,CAAC;AAAA,EACrC;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,IAAG;AAAA,IACH,eAAc;AAAA,IACd,cAAa;AAAA,IACZ,GAAG;AAAA,IACJ,WAAW,GAAG,WAAW,yBAAiB,iBAAiB,CAAC;AAAA;AAC9D;AAGF,uBAAuB,cAAc;;;ACrBrC;AAAA,EAIE,YAAY;AAAA,EAGZ;AAAA,EACA;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AA4GH,gBAAAC,cAAA;AA9EG,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB;AACF,MAA8B;AAC5B,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,UAAS,eAAe;AAEpE,QAAM,CAAC,QAAQ,SAAS,IAAI;AAAA,IAC1B,kCAAc;AAAA,IACd,wCAAiB;AAAA,EACnB;AACA,QAAM,SAAS,MAAM,UAAU,CAAC,MAAM;AACtC,QAAM,QAAQ,MAAM,UAAU,KAAK;AAEnC,QAAM,cAAcC,OAAM;AAC1B,QAAM,uBAAuB,0CAAkB,GAAG,WAAW;AAE7D,QAAM,CAAC,cAAc,eAAe,IAAID,UAAkC;AAC1E,QAAM,EAAE,MAAM,QAAQ,eAAe,IAAI,iBAAiB,MAAM,YAAY;AAE5E,QAAM,YAAYE,QAA0B,IAAI;AAChD,QAAM,YAAY,KAAK;AACvB,QAAM,oBAAoB,eAAe,WAAW,SAAS;AAC7D,QAAM,UAAUA,QAAuB,IAAI;AAC3C,QAAM,cAAc,KAAK;AACzB,QAAM,kBAAkB,eAAe,SAAS,WAAW;AAE3D,QAAM,cAAc,MAAM;AACxB,QAAI,QAAQ;AACV,iBAAW,QAAQ;AACnB,YAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,eAAe,MAAM;AACzB,KAAC,WAAU;AACX,eAAU;AACV,WAAO;AAAA,EACT;AAEA,oBAAkB,CAAC,QAAQ,SAAS,UAAU,OAAO,GAAG,MAAM;AAC5D,gBAAY;AAAA,EACd,CAAC;AAED,eAAa,CAAC,OAAO,QAAQ,GAAG,MAAM;AA1FxC;AA2FI,QAAI,QAAQ;AACV,iBAAW,QAAQ;AACnB,YAAM;AACN,sBAAU,YAAV,mBAAmB;AAAA,IACrB;AAAA,EACF,CAAC;AAED,eAAa,CAAC,KAAK,GAAG,MAAM;AAC1B,gBAAY;AAAA,EACd,CAAC;AAED,QAAMC,YAAW,cAAc,IAAI,UAAU,CAAC,OAAO,eAAe;AAClE,WACE,eAEE,KAAK,MACN,eAAe,IACZ,aAAa,OAAO;AAAA,MAClB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,KAAK;AAAA,IACP,CAAC,IACD;AAAA,EAER,CAAC;AAED,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,MACT;AAAA,MACA,cAAc,eAAe;AAAA,MAC7B,QAAQ;AAAA,MAEP,UAAAI;AAAA;AAAA,EACH;AAEJ;AAEA,kBAAkB,cAAc;;;AlB3F5B,SAkDA,YAAAC,WAlDA,OAAAC,QAkBE,QAAAC,cAlBF;AATG,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAwB;AACtB,QAAM,cACJ,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,oBAAO,IAAI;AAAA,MACzB,UAAS;AAAA,MACT,MAAM;AAAA;AAAA,EACR;AAGF,QAAM,gBAAgB,SAAS,QAAQ,QAAQ;AAE/C,QAAM,oBAAuC;AAAA,IAC3C,IAAI;AAAA,IACJ,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,SAAS;AAAA,EACX;AAEA,QAAM,qBAAqB,cAAc,IAAI,CAAC,MAAM,UAAU;AAC5D,WACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QAEE,GAAG;AAAA,QACJ,SAAQ;AAAA,QAEP;AAAA,oBAAU,KAAK;AAAA,UACf;AAAA;AAAA;AAAA,MALI,cAAc,KAAK;AAAA,IAM1B;AAAA,EAEJ,CAAC;AAED,QAAM,8BACJ,cAAc,SAAS,IACnB,cAAc,MAAM,GAAG,cAAc,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,UAAU;AACpE,QAAIC,gBAAgC,IAAI,GAAG;AACzC,UAAI,wBAAwB,KAAK,KAAK,GAAG;AACvC,eACE,gBAAAF,OAAC,oBAA6B,MAAM,KAAK,MAAM,MAC5C,eAAK,MAAM,YADS,KAEvB;AAAA,MAEJ;AACE,eACE,gBAAAA,OAAC,oBACE,eAAK,MAAM,YADS,KAEvB;AAAA,IAEN;AAAA,EACF,CAAC,IACD,CAAC;AAEP,QAAM,gCACJ,gBAAAC,OAAAF,WAAA,EACE;AAAA,oBAAAC,OAAC,UAAQ,GAAG,mBAAoB,wBAAc,CAAC,GAAE;AAAA,IAChD,4BAA4B,SAAS,KACpC,gBAAAC,OAAC,UAAQ,GAAG,mBACT;AAAA;AAAA,MACD,gBAAAA,OAAC,qBACC;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAM;AAAA,YACN,SAAQ;AAAA,YACR,cAAY,sCAAgC,4BAA4B,SAAS,KAAK,OAAO,mBAAmB,SAAS,CAAC,EAAE;AAAA;AAAA,QAC9H;AAAA,QACA,gBAAAA,OAAC,gBACC,0BAAAA,OAAC,oBAAkB,uCAA4B,GACjD;AAAA,SACF;AAAA,OACF;AAAA,IAEF,gBAAAC,OAAC,UAAQ,GAAG,mBACT;AAAA;AAAA,MACA,cAAc,cAAc,SAAS,CAAC;AAAA,OACzC;AAAA,KACF;AAGF,QAAM,2BAA2B,CAAC,CAAC;AAEnC,QAAM,sBAAyD;AAAA,IAC7D,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,KAAK;AAAA,EACP;AACA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD,cAAW;AAAA,MAEX;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,WAAW,2BAA2B,wBAAwB;AAAA,YAE7D;AAAA;AAAA,QACH;AAAA,QACC,4BACC,gBAAAA,OAAC,UAAQ,GAAG,qBAAqB,WAAW,uBACzC,yCACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,YAAY,cAAc;;;AmBjJ1B;AAAA,EAAC,OAAAG;AAAA,EAKA,iBAAAC;AAAA,EAyBA,cAAAC;AAAA;;;ACwBG,gBAAAC,cAAA;AAXG,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,OAAO;AAAA,EACP,GAAG;AACL,MACE,gBAAAA,OAAC,sBAAmB,OAAO,EAAE,MAAM,YAAY,SAAS,YAAY,GAClE,0BAAAA;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACC,GAAG;AAAA,MACF;AAAA,MACA,GAAG,WAAW,oBAAO,OAAO,oBAAO,UAAU,SAAS,EAAE,CAAC;AAAA,MACzD;AAAA,MACA;AAAA,IACF;AAAA,IAEC;AAAA;AACH,GACF;AAEF,YAAY,cAAc;;;ACnE1B;AAAA,EAAC,WAAAC;AAAA,EAWA,qBAAAC;AAAA,EAKA,qBAAAC;AAAA,EAKA,yBAAAC;AAAA,EASA,yBAAAC;AAAA;;;ACqCK,gBAAAC,cAAA;AAtBC,IAAM,OAAO,CAAC,UAAqB;AACxC,QAAM;AAAA,IACJ,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,aAAa;AAAA,IACjB;AAAA,IACA,aAAO;AAAA,IACP,aAAO,cAAc,UAAU,EAAE;AAAA,IACjC,aAAa,UAAU,aAAO,cAAc,QAAQ,EAAE;AAAA,EACxD;AAEA,MAAI,aAAa,cAAc;AAC7B,UAAM,EAAE,MAAM,OAAO,IAAI;AAEzB,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,UACF;AAAA,UACA,GAAG,YAAY,cAAY,SAAS;AAAA,UACpC;AAAA,UACA;AAAA,QACF;AAAA,QACA,KAAK;AAAA,QACL;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE,gBAAAA,OAAC,SAAK,GAAG,iBAAiB,IAAI,YAAY,WAAW,IAAI,GAAG,KAAK,SAAS;AAE9E;AAEA,KAAK,cAAc;;;ACtFnB;AAAA,EAAC,WAAAC;AAAA,EAIA,iBAAAC;AAAA,EAYA,oBAAAC;AAAA,EASA,6BAAAC;AAAA,EAIA,MAAAC;AAAA,EAIA,eAAAC;AAAA;;;ACeK,gBAAAC,cAAA;AA3BC,IAAM,iBAAiB,CAAC;AAAA,EAC7B,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA2B;AACzB,QAAM;AAAA,IACJ,IAAI;AAAA,IACJ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,aAAa,EAAE,mBAAmB,YAAY,UAAU,GAAG,CAAC;AAEhE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,uBAAO,WAAW,CAAC;AAAA,QACjC;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,YAAY;AAAA,UACZ;AAAA,UACA;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,eAAe,cAAc;;;ACUvB,SASE,OAAAC,QATF,QAAAC,cAAA;AAtCC,IAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA,GAAG;AACL,MAAiC;AAC/B,QAAM,EAAE,YAAY,YAAY,IAAI,oBAAoB;AAExD,QAAM,0BAAsC;AAAA;AAAA,IAE1C,CAAC,+CAAsD,GACrD,4BACA;AAAA,EACJ;AAEA,QAAM,EAAE,IAAI,GAAG,gBAAgB,IAAI,oCAAe,CAAC;AAEnD,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,uBAAO,eAAe;AAAA,UACtB,sBAAW,eAAe;AAAA,UAC1B,mBAAW,kBAAkB;AAAA,UAC7B,mBAAW,uBAAuB;AAAA,UAClC;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MACJ,MAAK;AAAA,MAEL,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,WAAW;AAAA,YACT,sBAAW,kBAAkB;AAAA,YAC7B,uBAAO,kBAAkB;AAAA,YACzB,yBAAiB,gBAAgB,cAAc,CAAC;AAAA,YAChD,QAAQ,yBAAiB;AAAA,UAC3B;AAAA,UAEA;AAAA,4BAAAD,OAAC,SAAI,WAAW,sBAAW,iBAAkB,UAAS;AAAA,YACtD,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT,sBAAW;AAAA,kBACX,uBAAO,2BAA2B;AAAA,gBACpC;AAAA,gBAEA,0BAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,OAAM;AAAA,oBACN,QAAO;AAAA,oBACP,MAAM;AAAA;AAAA,gBACR;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,qBAAqB,cAAc;;;ACrC7B,gBAAAE,cAAA;AAvCC,IAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA+B;AAC7B,QAAM,EAAE,gBAAgB,UAAU,IAAI,oBAAoB;AAE1D,QAAM;AAAA,IACJ,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI,gCAAa,CAAC;AAElB,QAAM,iBAA6B;AAAA;AAAA,IAEjC,CAAC,kCAAyC,GAAG,SAAS;AAAA,EACxD;AAEA,QAAM,wBAAoC;AAAA;AAAA,IAExC,CAAC,2CAAkD,GACjD,4BACA;AAAA,EACJ;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,sBAAW,MAAM,uBAAO,MAAM,aAAa;AAAA,QACzD;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MACJ,OAAO,EAAE,GAAG,uCAAW,OAAO,GAAG,eAAe;AAAA,MAEhD,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,WAAW,uBAAO;AAAA,UAClB,OAAO;AAAA,UAEN;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,mBAAmB,cAAc;;;ACxEjC,SAAS,YAAAC,iBAAgB;;;ACAzB;AAAA,EAAC,WAAAC;AAAA;;;ADsCG,SAQE,OAAAC,QARF,QAAAC,cAAA;AAlBG,IAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,CAAC;AAAA,EACb,GAAG;AACL,MAAiB;AACf,QAAM,EAAE,cAAc,WAAW,GAAG,cAAc,IAAI;AAEtD,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,IAAI;AAEzC,QAAM,UAAU,MAAM;AACpB,cAAU,KAAK;AACf,eAAW,QAAQ;AAAA,EACrB;AAEA,SAAO,SACL,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,aAAO,SAAS;AAAA,QAC9B;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAD,OAAC,6BAA0B,WAAW,GAAG,yBAAiB,YAAY,CAAC,GACpE,gBACH;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,MAAM;AAAA,YACN,SAAQ;AAAA,YACR;AAAA,YACA,cAAY,gCAAa,SAAS,OAAO,QAAQ,IAAI,KAAK,MAAM;AAAA;AAAA,QAClE;AAAA;AAAA;AAAA,EACF,IACE;AACN;AAEA,KAAK,cAAc;;;AE5DnB,SAAS,YAAAG,iBAA4C;AAa7C,gBAAAC,cAAA;AAND,IAAM,YAAY,CAAC,EAAE,UAAU,GAAG,KAAK,MAAsB;AAClE,QAAM,gBAAgBC,UAAS,QAAQ,QAAQ;AAE/C,SACE,gBAAAD,OAAC,UAAO,IAAI,eAAgB,GAAG,MAAM,KAAI,SACtC,wBAAc,IAAI,CAAC,MAAM,UACxB,gBAAAA,OAAC,QAA0B,kBAAlB,QAAQ,KAAK,EAAU,CACjC,GACH;AAEJ;AAEA,UAAU,cAAc;;;ACnBxB;AAAA,EAAQ,WAAAE;AAAA;;;ACaJ,gBAAAC,cAAA;AANG,IAAM,WAAW,CAA8B;AAAA,EACpD;AAAA,EACA,KAAK;AAAA,EACL,GAAG;AACL,MAAwB;AACtB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW,GAAG,WAAW,yBAAiB,UAAU,iBAAO,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;;;ACnBA,SAAS,SAAAC,cAAa;;;ACAtB,SAAS,iBAAAC,gBAAe,cAAAC,mBAAkB;AAanC,IAAM,uBACXD,eAAmD,IAAI;AAElD,IAAM,mBAAmB,MAAM;AACpC,SAAOC,YAAW,oBAAoB;AACxC;;;AClBA;AAAA,EAAC,WAAAC;AAAA,EAMA,OAAAC;AAAA,EAIA,cAAAC;AAAA,EAKA,iBAAAC;AAAA,EAKA,OAAAC;AAAA,EAMU,qBAAAC;AAAA,EAUI,mBAAAC;AAAA,EAsCd,mBAAAC;AAAA,EAqBA,gBAAAC;AAAA,EAYA,mBAAAC;AAAA,EA0BA,gBAAAC;AAAA,EAkBA,kBAAAC;AAAA,EAsBA,4BAAAC;AAAA;;;ACxJC,gBAAAC,QAiEE,QAAAC,cAjEF;AALK,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAD;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA,yBAAO,mBAAmB;AAAA,MAC1B,gBAAgB,WAAW,yBAAO,0BAA0B;AAAA,IAC9D;AAAA,IACC,GAAG;AAAA;AACN;AAWK,IAAME,SAAQ,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAkC;AAChC,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,UAAS;AAAA,MACT,SAAQ;AAAA,MACR,YAAW;AAAA,MACX,OAAM;AAAA,MACN,eAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA,yBAAO;AAAA,QACP,yBAAO,UAAU,WAAW,EAAE;AAAA,QAC9B,CAAC,WAAW,yBAAO,gBAAgB;AAAA,QACnC,yBAAiB,qBAAqB;AAAA,QACtC,YAAY,yBAAO,iBAAiB;AAAA,QACpC,YAAY,yBAAiB,oBAAoB;AAAA,QACjD,YAAY,yBAAO,iBAAiB;AAAA,QACpC,YAAY,yBAAO,cAAc;AAAA,MACnC;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AASO,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAuC;AACrC,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,gBAAe;AAAA,MACf;AAAA,MACA,WAAW,WAAW,cAAY,WAAW,IAAI;AAAA,MAEhD;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,WAAW,cAAY,iBAAiB;AAAA,YACxC,UAAS;AAAA;AAAA,QACX;AAAA,QAED;AAAA,QAAS;AAAA,QAAE,sBAAsB,gBAAAA,OAAC,kBAAe;AAAA;AAAA;AAAA,EACpD;AAEJ;;;ACpGO,IAAM,+BAA+B;AACrC,IAAM,uBAAuB,GAAG,4BAA4B;AAE5D,IAAM,kCAAmD;AAAA,EAC9D,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,IAAI;AACN;;;AJoCI,SAUE,OAAAG,QAVF,QAAAC,cAAA;AA5BG,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AAAA,EACpB;AAAA,EACA,YAAY,CAAC;AAAA,EACb;AAAA,EACA,GAAG;AACL,MAAqB;AACnB,QAAM,cAAcC,OAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,QAAM,gBAAgB,iBAAiB;AAEvC,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,cAAc,CAAC,CAAC;AAEtB,QAAM,EAAE,OAAO,WAAW,oBAAoB,GAAG,cAAc,IAAI;AAEnE,QAAM,aAAa,aAAY,+CAAe;AAC9C,QAAM,WAAW,UAAS,+CAAe;AACzC,QAAM,aAAa,aAAY,+CAAe;AAE9C,SACE,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACC;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAY;AAAA,MACZ,WAAW,GAAG,WAAW,kBAAkB;AAAA,MAC3C;AAAA,MAEA;AAAA,wBAAAH;AAAA,UAAC;AAAA;AAAA,YACE,GAAG,iBAAiB,UAAU,eAAe,IAAI;AAAA,YAClD;AAAA,YACA,UAAU;AAAA,YACV,oBAAkB,8BAA8B;AAAA,cAC9C,+CAAe;AAAA,cACf,+CAAe;AAAA,cACf;AAAA,YACF,CAAC;AAAA,YACD,gBAAc,WAAW,OAAO;AAAA,YAChC,mBAAiB,+CAAe;AAAA,YAChC,gBAAc,gBAAgB,UAAU;AAAA,YACxC,iBAAe;AAAA,YACf,MAAK;AAAA,YACL,sBAAoB;AAAA,YACpB,WAAW;AAAA,cACT,mBAAW,YAAY;AAAA,cACvB,cAAY,mBAAmB;AAAA,YACjC;AAAA,YACA,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA,UAAU;AAAA,YACZ;AAAA,YACA,SAAS,qBAAqB,YAAY,UAAU,OAAO;AAAA;AAAA,QAC7D;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAY;AAAA,YACZ,WAAW,cAAY,sBAAsB;AAAA;AAAA,QAC/C;AAAA,QACC,cACC,WACE,WACF,gBAAAA,OAAC,cAAY,GAAG,iCAAkC,iBAAM,IACtD;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc;;;AK9FvB,SAAS,SAAAI,cAAa;;;ACEf,SAAS,2BACd,OACqB;AACrB,MAAI,UAAU,QAAQ;AACpB,WAAO;AAAA,EACT,WAAW,UAAU,SAAS;AAC5B,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;ACZA;AAAA,EAAC,WAAAC;AAAA,EAQA,oBAAAC;AAAA,EAOE,MAAAC;AAAA;;;ACiBC,SA8BF,YAAAC,WArBM,OAAAC,QATJ,QAAAC,cAAA;AAXG,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAyB;AACvB,QAAM,UAAU,gBAAgB;AAEhC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,qBAAO,WAAW,WAAW,qBAAO,kBAAkB,CAAC;AAAA,QACrE;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,mBACC,gBAAAD,OAAC,QAAK,MAAM,WAAW,UAAS,SAAQ,WAAW,qBAAO,MAAM;AAAA,QAElE,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,gBAAgB,UAAU,cAAc;AAAA,YACxC,OAAO,UAAU,gBAAgB;AAAA,YACjC,IAAG;AAAA,YAEF;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,aAAa,cAAc;AAEpB,IAAM,qBAAqB,CAChC,KACA,OACA,cACA,mBAEA,gBAAAC,OAAAF,WAAA,EACG;AAAA,kBAAgB,kBACf,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,aAAY;AAAA,MACZ,IAAI;AAAA;AAAA,EACN;AAAA,EAED,OAAO,SAAS,CAAC,gBAChB,gBAAAA,OAAC,gBAAa,SAAS,KAAK,aAAY,OAAM,IAAI,OAAO;AAAA,GAE7D;;;AHVE,SASI,OAAAE,QATJ,QAAAC,cAAA;AAtCG,IAAM,gBAAgB,CAAC,UAA8B;AAC1D,QAAM;AAAA,IACJ;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,WAAW;AAAA,IACX,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,cAAcC,OAAM;AAC1B,QAAM,gBAAgB,4BAAW,GAAG,WAAW;AAC/C,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,qBACJ,YAAY,2BAA2B,YAAY;AAErD,QAAM,iBAAiB,sBAAsB,eAAe,cAAc;AAC1E,QAAM,QAAQ,sBAAsB,eAAe,KAAK;AAExD,QAAM,eAA0C;AAAA,IAC9C,OAAO;AAAA,IACP,gBAAgB,eAAe,iBAAiB;AAAA,IAChD;AAAA,IACA,OAAO,MAAM,QAAQ;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AAEA,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,yBAAO,SAAS;AAAA,QAC9B,EAAE,GAAG,WAAW,iBAAiB,aAAa;AAAA,QAC9C;AAAA,MACF;AAAA,MAEC;AAAA,kBAAU,SACT,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ;AAAA,YACA;AAAA,YAEC;AAAA;AAAA,QACH,IACE;AAAA,QACH,mBAAmB,KAAK,KAAK;AAAA,QAC9B,gBAAAA,OAAC,wBAAqB,OAAO,EAAE,GAAG,aAAa,GAC7C,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,mBAAiB;AAAA,YACjB,oBAAkB,MAAM,QAAQ;AAAA,YAChC,WAAW,GAAG,yBAAO,OAAO,yBAAO,UAAU,SAAS,EAAE,CAAC;AAAA,YAExD;AAAA;AAAA,QACH,GACF;AAAA,QACC,mBAAmB,QAAW,QAAW,cAAc,cAAc;AAAA;AAAA;AAAA,EACxE;AAEJ;AAEA,cAAc,cAAc;;;AIhG5B;AAAA,EAAC,kBAAAG;AAAA;;;ACmCO,gBAAAC,QAGA,QAAAC,cAHA;AAlBD,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA8B;AAC5B,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,qBAAO,gBAAgB,CAAC;AAAA,QACtC;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAC,OAAC,UAAO,KAAI,QACV;AAAA,wBAAAD,OAAC,cAAW,IAAG,QAAO,gBAAe,gBAClC,sBACH;AAAA,QACA,gBAAAC,OAAC,cAAW,IAAG,QAAO;AAAA;AAAA,UAAE;AAAA,UAAY;AAAA,WAAC;AAAA,SACvC;AAAA;AAAA,EACF;AAEJ;AAEA,qBAAqB,cAAc;;;ACoB7B,SAEI,OAAAC,QAFJ,QAAAC,cAAA;AA9BC,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc,YAAY;AAAA,EAC1B,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AAAA,EACA,GAAG;AACL,GAAsB;AACpB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,mBAAW,WAAW,mBAAW,cAAc,CAAC;AAAA,QAC9D;AAAA,QACA;AAAA,MACF;AAAA,MACA,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,SAAS,qBAAqB,MAAM,MAAM,MAAM;AAAA,MAChD;AAAA,MACA;AAAA,MACA,QAAO;AAAA,MACP,YAAW;AAAA,MAEX,0BAAAC,OAAC,UAAO,UAAS,QAAO,KAAI,MACzB;AAAA,sBACC,gBAAAD,OAAC,WAAQ,OAAO,GAAG,gBAAe,iBAC/B,sBACH;AAAA,QAED;AAAA,QACA,eAAe,gBAAAA,OAAC,SAAK,uBAAY;AAAA,QACjC,cACC,gBAAAA,OAAC,UAAO,KAAI,MACT,qBAAW,IAAI,WACd,gBAAAA,OAAC,wBAAsB,GAAG,OAAO,CAClC,GACH;AAAA,QAED,WACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK,qBAAqB,MAAM,MAAM,MAAM;AAAA,YAC5C,UAAS;AAAA,YACT,cAAa;AAAA,YAEZ,kBAAQ,IAAI,WACX,gBAAAA,OAAC,UAAQ,GAAG,OAAO,MAAK,UAAS,SAAQ,aAAY,CACtD;AAAA;AAAA,QACH;AAAA,SAEJ;AAAA;AAAA,EACF;AAEJ;AAEA,aAAa,cAAc;;;AC/F3B,SAAS,yBAAyB;AAClC;AAAA,EAGE;AAAA,OACK;AACP,SAAS,aAAAE,kBAAiB;AAC1B,SAAS,wBAAwB;AACjC;AAAA,EAGE,cAAAC;AAAA,OACK;;;ACZP,SAAS,uBAAuB;AAChC;AAAA,EAEE;AAAA,OACK;AACP,SAAS,iBAAiB;AAK1B,SAAS,cAAAC,mBAAkB;;;ACV3B,SAAS,eAAe;AACxB;AAAA,EAEE;AAAA,OACK;AAKP,SAA6B,UAAAC,eAAc;;;ACT3C;AAAA,EAAC,cAAAC;AAAA,EAQA,sBAAAC;AAAA,EAKA,qBAAAC;AAAA,EAKA,sBAAAC;AAAA,EAKA,0BAAAC;AAAA,EAKA,SAAAC;AAAA,EAcA,sBAAAC;AAAA,EAWA,mCAAAC;AAAA,EAWA,gBAAAC;AAAA,EAQA,0BAAAC;AAAA,EAIA,0BAAAC;AAAA,EAIA,uBAAAC;AAAA,EAIA,wBAAAC;AAAA,EAQA,kBAAAC;AAAA,EAQuB,UAAAC;AAAA,EAcvB,4BAAAC;AAAA,EAIA,SAAAC;AAAA,EAIA,8BAAAC;AAAA,EAKA,UAAAC;AAAA,EAOA,kBAAAC;AAAA,EAMA,yBAAAC;AAAA,EAIA,0BAAAC;AAAA,EAMA,yBAAAC;AAAA,EAQA,yBAAAC;AAAA,EAaA,gCAAAC;AAAA,EAKA,kCAAAC;AAAA,EAWA,mCAAAC;AAAA,EAMA,sCAAAC;AAAA,EAQA,6CAAAC;AAAA;;;ACzMM,IAAM,SAAS;AACf,IAAM,WAAW;;;AFmCb,gBAAAC,cAAA;AAZJ,SAAS,aAAa,EAAE,MAAM,OAAO,QAAQ,GAAsB;AACxE,QAAM,MAAMC,QAA0B,IAAI;AAC1C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,gBAAgB,EAAE,KAAK,GAAG,OAAO,GAAG;AACxC,MAAI,YAAY;AACd,WAAO,gBAAAD,OAAC,QAAI,GAAG,WAAW;AAAA,EAC5B;AAEA,QAAM,UAAuB,aACzB,aACA,iBAAiB,aACf,gBACA;AAEN,QAAM,6BAA6B,CAAC,UAAyB;AAC3D,QAAI,MAAM,QAAQ,SAAS,MAAM,aAAa,OAAO;AACnD,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,SACE,gBAAAA,OAAC,QAAI,GAAG,WACN,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,MAAK;AAAA,MACL;AAAA,MACA,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,WAAW;AAAA,QACT,kBAAO,uBAAuB;AAAA,QAC9B,QAAQ,MAAM,QAAQ,KAAK,kBAAO,8BAA8B;AAAA,QAChE,kBAAO,0BAA0B,OAAO,EAAE;AAAA,QAC1C,yBAAiB,YAAY;AAAA,QAC7B;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH,GACF;AAEJ;AAEA,aAAa,cAAc;;;AG3ChB,gBAAAE,cAAA;AANJ,IAAM,iBAAiB,CAAC,UAA+B;AAC5D,QAAM,EAAE,IAAI,WAAW,WAAW,IAAI,GAAG,KAAK,IAAI;AAElD,QAAM,KAAK,GAAG,WAAW,mBAAW,iBAAiB,CAAC;AAEtD,MAAI,OAAO,OAAO;AAChB,WAAO,gBAAAA,OAAC,SAAK,GAAG,iBAAiB,IAAI,IAAI,WAAW,IAAI,GAAG;AAAA,EAC7D;AACA,SAAO,gBAAAA,OAAC,UAAM,GAAG,iBAAiB,IAAI,IAAI,WAAW,IAAI,GAAG;AAC9D;AAEA,eAAe,cAAc;;;ACnC7B;AAAA,EAIE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMA,SAAS,cACd,MACA;AACA,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,gBAAgB,aAAa,YAAY,IAAI,CAAC;AAEpD,QAAM,iCACJ,aAAa,IAAI,iBAAiB,gBAAgB;AAEpD,MAAI,gCAAgC;AAClC,QACE,kBAAkB,KACjB,kBAAkB,KAAK,WAAW,KAAK,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,GAC9D;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,aAAa,UAAU,IAAI,CAAC;AAC/C,MAAI,aAAa,YAAY,IAAI,WAAW;AAC1C,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,aAAa,IAAI,cAAc,gBAAgB,MAAM;AACtE,MAAI,gBAAgB,GAAG;AACrB,WAAO,UAAU;AAAA,EACnB;AAEA,SAAO;AACT;AAYO,SAAS,aACd,MACA;AACA,QAAM,YAAY,YAAY,MAAM,OAAO;AAC3C,SACE,KAAK,SAAS,YAAY,IAAI,IAC9B,UAAU,SAAS,YAAY,SAAS,IACxC;AAEJ;AAKO,SAAS,aACd,MACA;AACA,QAAM,YAAY,YAAY,IAAI;AAClC,SACE,KAAK,SAAS,YAAY,IAAI,IAC9B,UAAU,SAAS,YAAY,SAAS,IACxC;AAEJ;AAEO,SAAS,WACd,MACA;AACA,SACG,KAAK,OAAO,MAAM,KAAK,KAAK,OAAO,QAAQ,KAAM,KAAK,OAAO,QAAQ;AAE1E;;;ACvFA;AAAA,EAME,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,OACK;AACP,SAAS,oBAAoB;;;ACX7B,SAAS,iBAAiB;AAC1B;AAAA,EAEE,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;;;ACRP;AAAA,EAAC,oBAAAC;AAAA,EAwBA,iBAAAC;AAAA;;;ADkCK,gBAAAC,cAAA;AA5CN,IAAM,eAAe;AAOd,IAAM,eAAeC;AAAA,EAC1B;AACF;AAcO,SAAS,cAAc;AAAA,EAC5B,QAAQ;AAAA,EACR;AACF,GAAuB;AACrB,QAAM,WAAWC,SAAuB,IAAI;AAE5C,QAAM,CAAC,SAAS,UAAU,IAAIC,UAAgC,IAAI;AAClE,EAAAC,YAAU,MAAM;AACd,eAAW,SAAS,OAAO;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW;AAAA,QACT,OAAO,KAAK;AAAA,QACZ,sBAAO,kBAAkB;AAAA,QACzB,sBAAO,eAAe;AAAA,QACtB;AAAA,MACF;AAAA,MAEA,0BAAAA,OAAC,gBAAa,OAAO,EAAE,OAAO,IAAI,QAAQ,GAAI,UAAS;AAAA;AAAA,EACzD;AAEJ;AAQO,SAAS,WAAW;AArE3B;AAsEE,QAAM,aAAY,KAAAK,YAAW,YAAY,MAAvB,mBAA0B;AAE5C,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAEA,QAAM,QAAQ,UAAU,SAAS;AAEjC,SAAO,EAAE,OAAO,UAAU;AAC5B;;;ADRI,SAyFA,YAAAC,WAzFA,OAAAC,QA+FU,QAAAC,cA/FV;AAzBG,IAAM,yBACXC,eAA2C;AAAA,EACzC,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,SAAS,MAAM;AAAA,EACf,iBAAiB;AACnB,CAAC;AASI,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA4B;AAC1B,QAAM,YAAYC,SAAuB,IAAI;AAC7C,QAAM,iBAAiBA,SAA0B,IAAI;AACrD,eAAa,UAAU,OAAO;AAC9B,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,EAAE,WAAW,gBAAgB,SAAS,GAAG,MAAM;AAAA,MAErD;AAAA;AAAA,EACH;AAEJ;AAUO,IAAM,wBAAwB,CAAC;AAAA,EACpC;AACF,MAAkC;AAChC,QAAM,EAAE,UAAU,IAAII,YAAW,sBAAsB;AACvD,SAAO,gBAAAJ,OAAC,SAAI,KAAK,gCAAa,QAAY,UAAS;AACrD;AAYO,IAAM,yBAAyB,CAAC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AACF,MAAmC;AACjC,QAAM,MAAMG,SAAuB,IAAI;AACvC,QAAM,WAAWA,SAAuB,IAAI;AAC5C,QAAM,EAAE,MAAM,QAAQ,eAAe,IAAI,iBAAiB,MAAM;AAAA,IAC9D,WAAW;AAAA,EACb,CAAC;AAED,QAAM,eAAeC,YAAW,YAAY;AAE5C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,QAAM,eAAe,aAAa;AAClC,QAAM,EAAE,QAAQ,SAAS,WAAW,eAAe,IAAIA;AAAA,IACrD;AAAA,EACF;AACA,QAAM,oBAAoB,mBAAmB,QAAQ,GAAG;AACxD,QAAM,YAAY,UAAU;AAC5B,QAAM,cAAc,eAAe,KAAK,aAAa,GAAG;AAExD,oBAAkB,CAAC,IAAI,SAAS,SAAS,OAAO,GAAG,OAAO;AAE1D,EAAAC,YAAU,MAAM;AAnIlB;AAoII,SAAK,cAAa,4CAAW,YAAX,YAAsB,IAAI;AAAA,EAC9C,GAAG,CAAC,CAAC;AAEL,QAAM,gBAAgB,CAAC,CAAC;AAExB,EAAAA,YAAU,MAAM;AAzIlB;AA0II,QAAI,mBAAiB,cAAS,YAAT,mBAAkB,oBAAmB;AACxD,UAAI,QAAQ;AACV,uCAA+B,SAAS,IAAI;AAAA,MAC9C,OAAO;AACL,yCAAiC,SAAS,IAAI;AAAA,MAChD;AAEA,aAAO,MAAM,iCAAiC,SAAS,IAAI;AAAA,IAC7D;AAAA,EACF,GAAG,CAAC,QAAQ,aAAa,CAAC;AAE1B,QAAM,0BAAmE,CACvE,UACG;AACH,QAAI,MAAM,QAAQ,SAAS,MAAM,aAAa,MAAM;AAClD,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,MAAI,CAAC,OAAQ,QAAO;AAEpB,SACE,gBAAAJ,OAAAF,WAAA,EACG;AAAA,oBACC,iBACA;AAAA,MACE,gBAAAC,OAAC,YAAS,WAAW,uBACnB,0BAAAA,OAAC,YAAS,QAAO,SAAQ,WACvB,0BAAAC;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,WAAW,GAAG,kBAAO,SAAS,SAAS;AAAA,UACvC,WAAW;AAAA,UACX,QAAO;AAAA,UACP,SAAQ;AAAA,UAER;AAAA,4BAAAD,OAAC,SAAI,WAAW,kBAAO,4BAA4B,GACjD,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK;AAAA,gBACL,MAAM;AAAA,gBACN,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,cAAW;AAAA,gBACX,SAAS;AAAA,gBACT,WAAW,EAAE,WAAW,wBAAwB;AAAA;AAAA,YAClD,GACF;AAAA,YACC;AAAA;AAAA;AAAA,MACH,GACF,GACF;AAAA,MACA;AAAA,IACF;AAAA,IACF,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAW,gBAAgB,wBAAwB;AAAA,QACnD,WAAW,GAAG,kBAAO,SAAS,SAAS;AAAA,QACvC,OAAO,eAAe;AAAA,QACtB,WAAW;AAAA,QACX,QAAO;AAAA,QAEN;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;;;AN/IY,SACI,OAAAM,QADJ,QAAAC,cAAA;AAnCL,SAAS,aAAa,EAAE,OAAO,GAAG,MAAM,GAAsB;AACnE,QAAM,EAAE,QAAAC,QAAO,IAAI,UAAU;AAC7B,QAAM;AAAA,IACJ,WAAW,EAAE,WAAW,GAAG,UAAU;AAAA,IACrC;AAAA,EACF,IAAI,gBAAgB,OAAO,KAAK;AAGhC,QAAM,eAAe,gBAAgB,MAAM,aAAa,OAAOA,OAAM;AACrE,QAAM,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,SAAM,OAAI;AAE1D,QAAM,EAAE,iBAAiB,QAAQ,IAAIC,YAAW,sBAAsB;AAEtE,QAAM,eAAe;AAAA,IACnB,yBAAiB,aAAa;AAAA,IAC9B,yBAAiB,oBAAoB;AAAA,EACvC;AACA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW,OAAK;AACd,aACG,EAAE,QAAQ,WAAW,EAAE,QAAQ,QAChC,MAAM,kBAAkB,MAAM,WAAW,GACzC;AACA;AAAA,QACF;AAEA,+CAAY;AAAA,MACd;AAAA,MACA,aAAY;AAAA,MAEZ;AAAA,wBAAAD,OAAC,WAAO,GAAG,aACT,0BAAAC,OAAC,QACE;AAAA,6BACC,gBAAAA,OAAC,QAAG,WAAW,GAAG,GAAG,YAAY,GAAG;AAAA;AAAA,YAChC,gBAAAD,OAAC,kBAAe,IAAG,QAAO,uBAAS;AAAA,aACvC;AAAA,UAED,SAAS,IAAI,CAAC,KAAK,UAClB,gBAAAA,OAAC,QAAe,WAAW,GAAG,GAAG,YAAY,GAC1C,iBADM,KAET,CACD;AAAA,WACH,GACF;AAAA,QACA,gBAAAA,OAAC,WACE,WAAC,GAAG,IAAI,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,IAAI,eAAa;AACpD,gBAAM,cAAc,MAAM,eAAe,SAAS;AAClD,gBAAM,mBAAmB,YAAY,KAAK,OAAO;AACjD,gBAAM,aAAa,mBACf,cAAc,gBAAgB,IAC9B;AACJ,iBACE,gBAAAC,OAAC,QACE;AAAA,+BACC,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT,kBAAO,uBAAuB;AAAA,kBAC9B,GAAG;AAAA,gBACL;AAAA,gBAEC;AAAA;AAAA,YACH;AAAA,YAED,YAAY;AAAA,cAAI,CAAC,MAAM,MACtB,OACE,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC;AAAA,kBACA;AAAA,kBACA;AAAA;AAAA,gBAHK;AAAA,cAIP,IAEA,gBAAAA,OAAC,UAAQ,CAAG;AAAA,YAEhB;AAAA,eAtBO,SAuBT;AAAA,QAEJ,CAAC,GACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,aAAa,cAAc;;;ADjDrB,SACE,OAAAI,QADF,QAAAC,cAAA;AAvCN,SAAS,eAAe,YAAoB;AAC1C,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,aAAO,IAAI,kBAAkB;AAAA,IAC/B;AACE,YAAM,IAAI,MAAM,wBAAwB,UAAU,EAAE;AAAA,EACxD;AACF;AAIO,SAAS,SAA8B,OAAyB;AACrE,QAAM,EAAE,QAAAC,QAAO,IAAIC,WAAU;AAC7B,QAAM,QAAQ,iBAAiB;AAAA,IAC7B,GAAG;AAAA,IACH;AAAA,IACA,QAAAD;AAAA,EACF,CAAC;AACD,QAAM;AAAA,IACJ;AAAA,IACA,iBAAiB,EAAE,SAAS,QAAQ,cAAc,cAAc;AAAA,IAChE,iBAAiB,EAAE,SAAS,QAAQ,cAAc,cAAc;AAAA,IAChE;AAAA,EACF,IAAI,YAAY,OAAO,KAAK;AAE5B,QAAM,EAAE,SAAS,eAAe,IAAIE,YAAW,sBAAsB;AAErE,QAAM,0BAAmE,CACvE,UACG;AAlDP;AAmDI,QAAI,MAAM,QAAQ,SAAS,MAAM,aAAa,MAAM;AAClD,UAAI,GAAC,sDAAgB,YAAhB,mBAAyB,oBAAmB;AAC/C,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAH,OAAC,SAAK,GAAG,eAAe,WAAW,kBAAO,UACxC;AAAA,oBAAAA,OAAC,SAAI,WAAW,kBAAO,kBACrB;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAY;AAAA,UACZ,SAAS,OAAK,iCAAS;AAAA,UACvB,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAM;AAAA,UACN,WAAW,EAAE,WAAW,wBAAwB;AAAA,UAChD,WAAW,kBAAO,wBAAwB;AAAA;AAAA,MAC5C;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,gBAAe;AAAA,UACf,WAAW,kBAAO;AAAA,UAEjB;AAAA;AAAA,MACH;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAY;AAAA,UACZ,SAAS,OAAK,iCAAS;AAAA,UACvB,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAM;AAAA,UACN,WAAW,kBAAO,wBAAwB;AAAA;AAAA,MAC5C;AAAA,OACF;AAAA,IACA,gBAAAA,OAAC,gBAAa,OAAc;AAAA,KAC9B;AAEJ;AAEA,SAAS,cAAc;;;AU5FvB,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AAEnC,SAAmB,UAAAK,gBAAc;;;ACLjC;AAAA,EAGE,kBAAAC;AAAA,OACK;AACP;AAAA,EAEE;AAAA,OAEK;AACP,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,yBAAyB;AAClC,SAAmB,UAAAC,gBAAc;;;ACZjC,SAA+B,iBAAiB;AAChD,SAAS,UAAAC,gBAAc;AAuCjB,gBAAAC,cAAA;AAzBC,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwB;AACtB,QAAM,MAAMC,SAA0B,IAAI;AAC1C,QAAM,EAAE,YAAY,IAAI,UAAU,OAAO,GAAG;AAE5C,QAAMC,QAAO,kBAAkB,WAAW,UAAU;AAEpD,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,MAAK;AAAA,MACL,WAAW;AAAA,QACT,YAAY;AAAA,QACZ,kBAAO,cAAc;AAAA,QACrB,kBAAO,iBAAiBE,KAAI,EAAE;AAAA,QAC9B,kBAAO,gBAAgB;AAAA,QACvB,cAAc,kBAAO,0BAA0B;AAAA,QAC/C,CAAC,MAAM,cAAc;AAAA,QACrB,MAAM,cAAc;AAAA,MACtB;AAAA,MAEA,0BAAAF,OAAC,QAAK,MAAM,cAAc,UAAUE,OAAM;AAAA;AAAA,EAC5C;AAEJ;;;AC3CA,SAAS,sBAAsB;AAK/B,SAAS,UAAAC,gBAAc;AAiCnB,SAgBE,OAAAC,QAhBF,QAAAC,cAAA;AArBG,IAAM,kBAA2D;AAAA,EACtE,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV;AAQO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,GAAqB;AAjCrB;AAkCE,QAAM,MAAMC,SAAuB,IAAI;AACvC,QAAM,EAAE,aAAa,IAAI,eAAe,SAAS,OAAO,GAAG;AAE3D,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA,WAAW;AAAA,QACT,aAAa;AAAA,QACb,kBAAO;AAAA,QACP,yBAAiB,gBAAgB,gBAAgB,aAAa,CAAC,CAAC;AAAA,MAClE;AAAA,MACA,OAAO;AAAA,QACL,GAAG,aAAa;AAAA,QAChB,UACE,QAAQ,YAAY,OAChB,OAAO,QAAQ,QAAQ,EAAE,SAAS,OAClC;AAAA,MACR;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,eAAY;AAAA,YACZ,WAAW;AAAA,cACT,kBAAO;AAAA,cACP,CAAC,QAAQ,iBAAiB,kBAAO,iCAAiC;AAAA,cAClE,yBAAiB,gBAAgB,gBAAgB,aAAa,CAAC,CAAC;AAAA,YAClE;AAAA,YAEC,kBAAQ;AAAA;AAAA,QACX;AAAA,QACC,QAAQ,gBACL,KACA,QAAQ,KAAK,SAAS,QAAO,aAAQ,aAAR,YAAoB,EAAE,EAAE,QAAQ,GAAG;AAAA;AAAA;AAAA,EACtE;AAEJ;AAEA,YAAY,cAAc;;;ACtE1B,SAAmC,cAAAG,mBAAkB;AAqE7C,gBAAAC,QASF,QAAAC,cATE;AAlCD,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmB;AAvDnB;AAwDE,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,SAAS,CAAC,CAAC;AACjB,QAAM,WAAW,MAAM,SAAS;AAChC,QAAM,aAAa,mBAAmB;AAEtC,QAAM,EAAE,OAAO,IAAIC,YAAW,sBAAsB;AAEpD,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW,GAAG,WAAW,cAAY,SAAS;AAAA,MAC9C;AAAA,MAEC;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,qBAAqB;AAAA,YACrB,WAAW,cAAY;AAAA,YACvB;AAAA,YAEC,gBAAM;AAAA;AAAA,QACT;AAAA,QAEF,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ;AAAA,YACA,KAAK;AAAA,YACL,OAAO,cAAc,OAAO,aAAa;AAAA,YACzC,WAAW;AAAA,cACT,cAAY;AAAA,cACZ,cAAY,iBAAiB;AAAA,cAC7B,cAAY,cAAc;AAAA,cAC1B,cAAY,UAAU,aAAa,EAAE;AAAA,cACrC,mBAAmB,cAAY,wBAAwB;AAAA,cACvD,kBAAO,YAAY;AAAA,cACnB,kBAAO,eAAe,aAAa,EAAE;AAAA,cACrC,cAAY,kBAAkB;AAAA,cAC9B,UAAU,cAAY;AAAA,cACtB,YAAY;AAAA,cACZ,YAAY,cAAY;AAAA,cACxB,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,YAAY,cAAY,WAAW;AAAA,YACrC;AAAA,YAEC;AAAA;AAAA,cACD,gBAAAD,OAAC,SAAI,WAAW,kBAAO,wBAAwB,GAAI,UAAS;AAAA;AAAA;AAAA,QAC9D;AAAA,QACC,cACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAa,kBAAkB,UAAU;AAAA,YACzC,UAAS,2CAAgB,QAAhB,YAAuB;AAAA;AAAA,QAClC;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,UAAU,cAAc;;;AH9ChB,gBAAAG,cAAA;AA/BD,SAAS,UAAU;AAAA,EACxB,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmB;AACjB,QAAM,EAAE,QAAAC,QAAO,IAAIC,WAAU;AAC7B,QAAM,QAAQ,kBAAkB;AAAA,IAC9B,GAAG;AAAA,IACH,QAAAD;AAAA,IACA,gBAAAE;AAAA,EACF,CAAC;AAED,QAAM,cAAcC,SAAyB,IAAI;AACjD,QAAM,EAAE,YAAY,WAAW,IAAI,aAAa,OAAO,OAAO,WAAW;AAEzE,QAAM,WAAW,MAAM,cAAc,CAAC,CAAC,WAAW,eAAe;AAEjE,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb;AAAA,MACA,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AAAA,MAChB,QACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACC,GAAG;AAAA,UACJ,YAAY,MAAM;AAAA,UAClB,YAAY,YAAY,MAAM;AAAA;AAAA,MAChC;AAAA,MAEF;AAAA,MACA;AAAA,MAEC,gBAAM,SAAS,IAAI,CAAC,SAAS,MAC5B,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,iBAAe,MAAM;AAAA,UACrB;AAAA,UAEA;AAAA,UACA;AAAA;AAAA,QAFK;AAAA,MAGP,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,UAAU,cAAc;;;AI3FxB,SAAS,0BAA0B;AACnC,SAAmC,qBAAqB,UAAAK,gBAAc;AAkB/D,SAAS,mBACd,KACA;AACA,QAAM,SAASA,SAAU,IAAI;AAC7B,sBAAoB,KAAK,OAAO;AAAA,IAC9B,GAAG,aAAa,MAAM;AAAA,IACtB,QAAQ;AACN,yBAAmB,MAAM,EAAE,WAAW,EAAE,UAAU,KAAK,CAAC;AAAA,IAC1D;AAAA,EACF,EAAE;AACF,SAAO;AACT;AAEA,SAAS,aACP,KACgB;AAChB,SAAO;AAAA,IACL,oBAAoB;AAClB,aAAO,IAAI;AAAA,IACb;AAAA,EACF;AACF;;;ALiCM,SAMI,OAAAC,QANJ,QAAAC,cAAA;AA3BN,IAAM,iBAAiB,CAAC,QAA2C;AACjE,SAAO,OAAO,QAAQ,YAAY,QAAQ,QAAQ,WAAW;AAC/D;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,QAAQ,mBAAmB,KAAK;AACtC,QAAM,SAAS,mBAAmB,OAAO,eAAe,GAAG,IAAI,MAAM,IAAI;AACzE,QAAM,cAAcC,SAAoB,IAAI;AAC5C,QAAM,cAAc,eAAe,aAAa,MAAM;AACtD,QAAM,EAAE,aAAa,eAAe,YAAY,WAAW,IAAI;AAAA,IAC7D,EAAE,GAAG,OAAO,aAAa,MAAM;AAAA,IAC/B;AAAA,IACA;AAAA,EACF;AAEA,SACE,gBAAAF,OAAC,gBAAa,QACZ,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf;AAAA,MAEA;AAAA,wBAAAD,OAAC,yBACC,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ;AAAA,YACA,KAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA,OAAO,MAAM;AAAA,YACb;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF,GACF;AAAA,QACA,gBAAAA,OAAC,0BAAuB,uBACtB,0BAAAA,OAAC,YAAU,GAAG,eAAe,GAC/B;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,WAAW,cAAc;;;AMnGzB,SAAkC,oBAAoB;AACtD,SAAS,yBAAyB;AAClC,SAAmB,UAAAG,gBAAc;AA4DvB,gBAAAC,cAAA;AAzCH,SAAS,WAAW;AAAA,EACzB,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,cAAcC,SAAyB,IAAI;AACjD,QAAM,QAAQ,kBAAkB;AAAA,IAC9B,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACD,QAAM,EAAE,YAAY,WAAW,IAAI;AAAA,IACjC,EAAE,GAAG,OAAO,cAAc,MAAM,aAAa,OAAO;AAAA,IACpD;AAAA,IACA;AAAA,EACF;AAEA,QAAM,WAAW,kBAAkB,WAAW,UAAU;AACxD,QAAM,WAAW,MAAM,cAAc,CAAC,CAAC,WAAW,eAAe;AAEjE,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA,QACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT,kBAAO,cAAc;AAAA,YACrB,YAAY,kBAAO,wBAAwB;AAAA,YAC3C,MAAM,cAAc,kBAAO,wBAAwB;AAAA,YACnD,kBAAO,iBAAiB,QAAQ,EAAE;AAAA,UACpC;AAAA,UAEA,0BAAAA,OAAC,QAAK,MAAM,UAAU,UAAoB;AAAA;AAAA,MAC5C;AAAA,MAGD,gBAAM,SAAS,IAAI,CAAC,SAAS,MAC5B,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UAEA;AAAA,UACA;AAAA;AAAA,QAFK;AAAA,MAGP,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,WAAW,cAAc;;;AC/EzB;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AAEA,SAAS,sBACd,MACA,WAA+B,eACpB;AACX,SAAO,SAAS,MAAM,QAAQ;AAChC;AAEO,SAAS,sBACd,MACA,WAA+B,eACzB;AACN,SAAO,KAAK,OAAO,QAAQ;AAC7B;AAEO,SAAS,yBAAyB,MAA0B;AACjE,SAAO,IAAI;AAAA,IACT,KAAK,YAAY;AAAA,IACjB,KAAK,SAAS,IAAI;AAAA,IAClB,KAAK,QAAQ;AAAA,EACf;AACF;AAEO,SAAS,iBAAiB,MAAkB;AACjD,SAAO,IAAI,KAAK,KAAK,SAAS,GAAG,KAAK,WAAW,GAAG,KAAK,WAAW,CAAC;AACvE;AAEO,SAAS,yBACd,MACA,OAAa,IAAI,KAAK,IAAI,GAAG,GAAG,CAAC,GAC3B;AACN,SAAO,IAAI;AAAA,IACT,KAAK;AAAA,IACL,KAAK,QAAQ;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP;AACF;;;AC7CA;AAAA,EAAC,MAAAE;AAAA,EAYA,iBAAAC;AAAA,EAOA,gBAAAC;AAAA,EAMA,aAAAC;AAAA,EAMA,gBAAAC;AAAA,EAMA,MAAAC;AAAA,EAQA,OAAAC;AAAA;;;ACbC,gBAAAC,cAAA;AATK,IAAM,kBAAkB,CAAC;AAAA,EAC9B,aAAa;AAAA,EACb,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,IAAG;AAAA,IACH,QAAO;AAAA,IACP,UAAS;AAAA,IACT,QAAO;AAAA,IACP,WAAU;AAAA,IACT,GAAG;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA,wBAAO;AAAA,QACP,wBAAO,SAAS,UAAU,EAAE;AAAA,QAC5B,wBAAO,SAAS,SAAS,EAAE;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IAEC;AAAA;AACH;AAGF,gBAAgB,cAAc;;;ACjDrB,gBAAAC,cAAA;AADF,IAAM,sBAAsB,CAAC,UAAoC;AACtE,SAAO,gBAAAA,OAAC,QAAI,GAAG,OAAO;AACxB;AAEA,oBAAoB,cAAc;;;ACiBhC,SACW,OAAAC,QADX,QAAAC,cAAA;AARK,IAAM,sBAAsB,CAAC;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA,OAAC,QAAI,GAAG,iBAAiB,IAAI,GAAG,WAAW,wBAAO,IAAI,GAAG,WAAW,IAAI,GACrE;AAAA,UAAQ,gBAAAD,OAAC,QAAK,MAAY;AAAA,EAAG;AAAA,EAAE;AAAA,GAClC;AAGF,oBAAoB,cAAc;;;ACChC,gBAAAE,cAAA;AAVK,IAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACE,GAAG,iBAAiB,IAAI,GAAG,WAAW,wBAAO,KAAK,GAAG,WAAW,IAAI;AAAA,IACrE,OAAO,EAAE,GAAG,uCAAW,OAAO,UAAU,UAAU,OAAO;AAAA,IAExD;AAAA;AACH;AAGF,qBAAqB,cAAc;;;ACvCnC;AAAA,EAAC,MAAAC;AAAA,EAOA,uBAAAC;AAAA,EACE,KAAAC;AAAA,EAKF,iBAAAC;AAAA,EAYA,yBAAAC;AAAA,EAcA,eAAAC;AAAA,EAGE,MAAAC;AAAA,EAKF,gBAAAC;AAAA,EAQA,eAAAC;AAAA,EASA,QAAAC;AAAA,EAYA,MAAAC;AAAA;;;AC5ED,SAAS,iBAAAC,gBAAe,cAAAC,oBAAkB;AAQnC,IAAM,oBAAoBD,eAAsC,CAAC,CAAC;AAClE,IAAM,uBAAuB,MAAMC,aAAW,iBAAiB;;;ACqClE,gBAAAC,cAAA;AAXG,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,UAAU;AAAA,EACV,MAAAC,QAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,MACE,gBAAAD,OAAC,qBAAkB,OAAO,EAAE,sBAAsB,GAChD,0BAAAA;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA,mBAAO;AAAA,QACP,mBAAO,SAASC,KAAI,EAAE;AAAA,QACtB,gBAAgB,mBAAO,qBAAqB;AAAA,QAC5C,WAAW,CAAC,yBAAyB,mBAAO,eAAe;AAAA,QAC3D,WAAW,yBAAyB,mBAAO,uBAAuB;AAAA,MACpE;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA;AACF,GACF;AAGF,WAAW,cAAc;;;ACxDvB,gBAAAC,cAAA;AADK,IAAM,iBAAiB,CAAC,EAAE,WAAW,GAAG,KAAK,MAClD,gBAAAA,OAAC,QAAG,WAAW,GAAG,WAAW,mBAAO,IAAI,GAAI,GAAG,MAAM;AAGvD,eAAe,cAAc;;;ACGzB,qBAAAC,WACE,OAAAC,QADF,QAAAC,cAAA;AALG,IAAM,gBAAgB,CAAC,EAAE,WAAW,GAAG,KAAK,MAA0B;AAC3E,QAAM,EAAE,uBAAuB,GAAG,IAAI,qBAAqB;AAC3D,QAAM,QAAQ,CAAC,CAAC;AAEhB,SACE,gBAAAA,OAAAF,WAAA,EACE;AAAA,oBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,WAAW,QAAQ,KAAK;AAAA,QACxB,WAAW,GAAG,WAAW,mBAAO,GAAG;AAAA,QAClC,GAAG;AAAA;AAAA,IACN;AAAA,IACC,SACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,eAAc;AAAA,QACd,WAAW;AAAA,QACX,WAAW,GAAG,WAAW,mBAAO,KAAK,mBAAO,MAAM;AAAA,QACjD,GAAG;AAAA;AAAA,IACN;AAAA,KAEJ;AAEJ;AAEA,cAAc,cAAc;;;AC1B1B,gBAAAE,cAAA;AADK,IAAM,iBAAiB,CAAC,EAAE,WAAW,GAAG,KAAK,MAClD,gBAAAA,OAAC,QAAG,WAAW,GAAG,WAAW,mBAAO,MAAM,mBAAO,IAAI,GAAI,GAAG,MAAM;AAGpE,eAAe,cAAc;;;ACX7B;AAAA,EAGE,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,OACK;AACP,SAAS,gBAAAC,qBAAoB;;;ACP7B;AAAA,EAAC,WAAAC;AAAA,EAgBA,mBAAAC;AAAA,EAIA,0BAAAC;AAAA,EAIA,0BAAAC;AAAA,EAIA,oBAAAC;AAAA,EAIA,2BAAAC;AAAA,EAIA,2BAAAC;AAAA,EAIA,qBAAAC;AAAA,EAKA,iBAAAC;AAAA,EAQA,iBAAAC;AAAA;;;ACrDD,SAAS,iBAAAC,gBAAe,cAAAC,oBAAkB;AASnC,IAAM,gBAAgBD,eAA0C,CAAC,CAAC;AAElE,IAAM,mBAAmB,MAAMC,aAAW,aAAa;;;AFuKxD,SAWQ,OAAAC,QAXR,QAAAC,cAAA;AAzGC,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,MAAAC,QAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,aAAa,CAAC;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAmB;AACjB,QAAM,eAAeC,aAAW,YAAY;AAE5C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AAEA,QAAM,eAAe,wCAAiB,6CAAc;AAEpD,QAAM,EAAE,SAAS,OAAO,SAAS,UAAU,UAAU,IAAI,iBAAiB;AAC1E,QAAM,EAAE,UAAU,UAAU,MAAM,IAAI;AAEtC,QAAM,YAAY,CAAC,CAAC;AACpB,QAAM,WAAW,YAAY,GAAG,QAAQ,YAAY;AAEpD,QAAM,YAAY,aAA6B,MAAM;AACrD,QAAM,cAAc,eAAe,KAAK,SAAS;AAEjD,EAAAC,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,UAAI,QAAQ;AACV,uCAA+B,SAAS,IAAI;AAAA,MAC9C,OAAO;AACL,yCAAiC,SAAS,IAAI;AAAA,MAChD;AAEA,aAAO,MAAM,iCAAiC,SAAS,IAAI;AAAA,IAC7D;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,WAAsC,CAAC,UAAU,OAAO;AAC9D,MAAI,UAAW,UAAS,KAAK,SAAS;AAEtC,oBAAkB,UAAU,MAAM;AAChC,QAAI,UAAU,CAAC,cAAc;AAC3B;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,cAAcC,SAAuB,IAAI;AAC/C,QAAM,kBAAkB,CAAC,UAAsC;AAC7D,QAAI,MAAM,WAAW,YAAY,WAAW,UAAU,cAAc;AAClE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAoB,mBAAmB,QAAQ,GAAG;AACxD,QAAM,YAAY,qBAAqB;AAEvC,QAAM,WAAW,YAAY,WAAW;AAExC,QAAM,cAAc,CAACH,UAA6B;AAChD,YAAQA,OAAM;AAAA,MACZ,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF;AAEA,QAAM,SACJ,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,MAAK;AAAA,MACL,UAAU;AAAA,MACV,UAAS;AAAA,MACT,KAAI;AAAA,MACJ,QAAO;AAAA,MACP,UAAU,WAAW,WAAW;AAAA,MAChC,UAAU,WAAW,WAAW,YAAYC,KAAI;AAAA,MAChD;AAAA,MACA,SAAQ;AAAA,MACR,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,SAAQ;AAAA,MACR,cAAa;AAAA,MACZ,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,eAAO;AAAA,UACP,eAAO,cAAc,SAAS,EAAE;AAAA,UAChC,eAAO,cAAc,SAAS,IAAI,QAAQ,EAAE;AAAA,UAC5C,cAAY,kBAAkB;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,WAAW;AAAA,MACX,mBAAiB;AAAA,MAEjB;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,UAAS;AAAA,YACT,KAAI;AAAA,YACJ,MAAK;AAAA,YACL,OAAM;AAAA,YACN,eAAc;AAAA,YACd,WAAW,eAAO,eAAe;AAAA,YAEhC;AAAA,2BACC,gBAAAD,OAAC,SAAI,IAAI,UACN,iBAAO,WAAW,WACjB,gBAAAA,OAAC,WAAQ,OAAO,GAAG,gBAAe,gBAC/B,kBACH,IAEA,QAEJ;AAAA,cAEF,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW,GAAG,eAAO,eAAe,CAAC;AAAA,kBACrC,eAAY;AAAA,kBACZ,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,SAAS;AAAA,kBACT,cAAW;AAAA,kBACX,MAAM;AAAA;AAAA,cACR;AAAA;AAAA;AAAA,QACF;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAI;AAAA,YACJ,WAAU;AAAA,YACV,WAAW,GAAG,eAAO,mBAAmB,GAAG,mBAAW,SAAS;AAAA,YAE9D;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAGF,QAAM,YAAY,eAChB,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP;AAAA,MACA,KAAK;AAAA,MACL,SAAS;AAAA,MAER;AAAA;AAAA,EACH,IAEA;AAGF,UAAQ,UAAU,sBAAsB,eACpCM,cAAa,WAAW,YAAY,IACpC;AACN;AAEA,OAAO,cAAc;;;AG3OrB;AAAA,EAIE,YAAYC;AAAA,EAGZ,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AAqFH,gBAAAC,cAAA;AAzDG,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,WAAS,eAAe;AACpE,QAAM,CAAC,QAAQ,SAAS,IAAI;AAAA,IAC1B,kCAAc;AAAA,IACd,wCAAiB;AAAA,EACnB;AAEA,QAAM,cAAcC,OAAM;AAC1B,QAAM,iBAAiB,8BAAY,GAAG,WAAW;AAEjD,QAAM,aAAaC,SAAoB,IAAI;AAE3C,QAAM,OAAO,MAAM,UAAU,IAAI;AACjC,QAAM,QAAQ,MAAM,UAAU,KAAK;AAEnC,QAAM,aAAa,MAAM;AACvB,SAAK;AACL;AAAA,EACF;AAEA,QAAM,cAAc,MAAM;AACxB,UAAM;AACN;AAAA,EACF;AAEA,eAAa,CAAC,OAAO,QAAQ,GAAG,MAAM;AAzExC;AA0EI,QAAI,QAAQ;AACV,qDAAY,YAAZ,mBAAqB;AACrB,kBAAY;AAAA,IACd;AAAA,EACF,CAAC;AAED,QAAMC,YAAWC,eAAc,IAAI,UAAU,CAAC,OAAO,eAAe;AAClE,WACEC,gBAEE,KAAK,MACN,eAAe,IACZC,cAAa,OAAO;AAAA,MAClB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,KAAK;AAAA,MACL,SAAS;AAAA,IACX,CAAC,IACD;AAAA,EAER,CAAC;AACD,SACE,gBAAAP;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV;AAAA,QACA,SAAS;AAAA,QACT,WAAW,WAAW;AAAA,MACxB;AAAA,MAEC,UAAAI;AAAA;AAAA,EACH;AAEJ;AAEA,YAAY,cAAc;;;AC9G1B;AAAA,EAAC,SAAAI;AAAA;;;ACqCK,SAEI,OAAAC,QAFJ,QAAAC,cAAA;AApBC,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EAErB,GAAG;AACL,GAAsB;AACpB,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,gBAAe;AAAA,MACf,YAAW;AAAA,MACX,WAAU;AAAA,MACV,QAAO;AAAA,MACP,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,YAAW;AAAA,MACX,cAAa;AAAA,MACZ,GAAG;AAAA,MAEJ,0BAAAC,OAAC,UAAO,UAAS,QAAO,KAAI,MAAK,WAAU,UACxC;AAAA,sBACC,gBAAAD,OAAC,WAAQ,OAAO,oBAAoB,gBAAe,iBAChD,sBACH;AAAA,QAEF,gBAAAA,OAAC,aAAU,WAAW,qBAAO,SAAU,mBAAQ;AAAA,SACjD;AAAA;AAAA,EACF;AAEJ;AAEA,aAAa,cAAc;;;ACjD3B,SAA8B,SAAAE,cAAa;;;ACA3C;AAAA,EAAC,WAAAC;AAAA,EA8BI,MAAAC;AAAA,EAMJ,qBAAAC;AAAA,EAKA,oBAAAC;AAAA,EAoBA,mBAAAC;AAAA;;;AC7DD,SAA6C,YAAAC,kBAAgB;;;ACA7D,SAA8B,eAAAC,cAAa,aAAAC,aAAW,UAAAC,gBAAc;AAE7D,SAAS,eACd,UACA,OAAuB,CAAC,GACxB;AACA,QAAM,cAAcA,SAAO,QAAQ;AAEnC,EAAAD,YAAU,MAAM;AACd,gBAAY,UAAU;AAAA,EACxB,CAAC;AAED,SAAOD,aAAa,IAAI,SAAM;AAZhC;AAYmC,6BAAY,YAAZ,qCAAsB,GAAG;AAAA,KAAa,IAAI;AAC7E;;;ADAO,SAAS,qBAAwB,OAAqC;AAC3E,QAAM,EAAE,OAAO,WAAW,cAAc,SAAS,IAAI;AAErD,QAAM,eAAe,eAAe,QAAQ;AAE5C,QAAM,CAAC,mBAAmB,oBAAoB,IAAIG,WAAS,YAAiB;AAC5E,QAAM,aAAa,cAAc;AACjC,QAAM,QAAQ,aAAa,YAAY;AAEvC,QAAM,WAAW;AAAA,IACf,CAAC,SAA4B;AAC3B,YAAM,SAAS;AACf,YAAM,YAAY,OAAO,SAAS,aAAa,OAAO,KAAK,IAAI;AAE/D,UAAI,CAAC,YAAY;AACf,6BAAqB,SAAS;AAAA,MAChC;AAEA,mBAAa,SAAS;AAAA,IACxB;AAAA,IACA,CAAC,YAAY,cAAc,KAAK;AAAA,EAClC;AAEA,SAAO,CAAC,OAAO,QAAQ;AACzB;;;AF2BI,SAUE,OAAAC,QAVF,QAAAC,cAAA;AAvBG,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,MAAAC,QAAO;AAAA,EACP;AAAA,EACA,GAAG;AACL,MAAoB;AAlDpB;AAmDE,QAAM,EAAE,OAAO,GAAG,MAAM,IAAI;AAAA,IAC1B;AAAA,IACA,GAAG,SAAS;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AACA,QAAM,cAAcC,OAAM;AAC1B,QAAM,CAAC,SAAS,UAAU,IAAI,qBAAqB;AAAA,IACjD,OAAO;AAAA,IACP,cAAc,0CAAkB;AAAA,IAChC;AAAA,EACF,CAAC;AACD,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,gBAAO;AAAA,QACP,gBAAO,cAAcC,KAAI,EAAE;AAAA,QAC3B,cAAY,qBAAqB;AAAA,MACnC;AAAA,MACA;AAAA,MACA,SAAS,kBAAM;AAAA,MAEf;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ,IAAI,kBAAM;AAAA,YACV;AAAA,YACA,UAAU,OAAK,WAAW,EAAE,OAAO,OAAO;AAAA,YAC1C,MAAK;AAAA,YACL,eAAY,WAAM,YAAY,MAAlB,YAAuB;AAAA,YACnC,WAAW,mBAAW,YAAY;AAAA;AAAA,QACpC;AAAA,QACA,gBAAAA,OAAC,QAAK,UAAUE,OAAM,MAAM,UAAU,WAAW,gBAAO,MAAM;AAAA,QAC9D,gBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,UAAUE;AAAA,YACV,MAAM;AAAA,YACN,WAAW,GAAG,gBAAO,MAAM,CAAC,WAAW,gBAAO,iBAAiB,CAAC;AAAA;AAAA,QAClE;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,QAAQ,cAAc;;;AI7FtB,SAAS,aAAAE,aAAW,YAAAC,kBAAgB;;;ACApC;AAAA,EAAC,oBAAAC;AAAA,EAKA,gCAAAC;AAAA,EAKA,8BAAAC;AAAA,EAKA,0BAAAC;AAAA,EAMA,QAAAC;AAAA,EAiBA,sBAAAC;AAAA,EAKA,oBAAAC;AAAA;;;AC3CD;AAAA,EAEE,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;;;ACNP;AAAA,EAAC,UAAAC;AAAA;;;AD6FO,gBAAAC,QAuCF,QAAAC,cAvCE;AA7DD,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB,eAAe;AAAA,EAChC,oBAAoB;AAAA,EACpB;AAAA,EACA,uBAAuB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAqB;AACnB,QAAM,cAAcC,OAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,cAAcC,SAA4B,IAAI;AACpD,QAAM,WAAW,eAAe,KAAK,WAAW;AAChD,QAAM,CAAC,MAAM,OAAO,IAAIC,WAAiB,eAAe,OAAO,YAAY,CAAC;AAE5E,EAAAC,YAAU,MAAM;AACd,QAAI,2CAAa,SAAS;AACxB,kBAAY,QAAQ,MAAM,SAAS,GACjC,YAAY,QAAQ,eAAe,CACrC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,kBAAiE,CACrE,UACG;AACH,YAAQ,MAAM,OAAO,KAAK;AAE1B,QAAI,UAAU;AACZ,eAAS,KAAK;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,aAAa,mBAAmB,CAAC,CAAC;AACxC,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,QAAQ,sBAAsB,UAAU,KAAK;AACnD,QAAM,iBAAiB,sBAAsB,UAAU,cAAc;AACrE,QAAM,qBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAEA,QAAM,sBAAsB,YAAY,CAAC,CAAC;AAC1C,QAAM,aAAa,cAAc,KAAK;AAEtC,SACE,gBAAAJ,OAAC,SAAI,WAAW,GAAG,WAAW,cAAY,SAAS,GAAG,OAAO,EAAE,GAAG,MAAM,GACrE;AAAA,gBACC,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,SAAS;AAAA,QACT,WAAW,cAAY;AAAA,QACvB;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IAEF,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,OAAO;AAAA,QACP,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAe;AAAA,QACf,oBAAkB,8BAA8B;AAAA,UAC9C,MAAM,QAAQ;AAAA,UACd,eAAe,iBAAiB;AAAA,UAChC,aAAa,uBAAuB,qBAAqB;AAAA,UACzD;AAAA,QACF,CAAC;AAAA,QACD,gBAAc,kBAAkB,OAAO;AAAA,QACvC,WAAW;AAAA,UACT,cAAY;AAAA,UACZ,cAAY,iBAAiB;AAAA,UAC7B,mBAAmB,cAAY,wBAAwB;AAAA,UACvD,iBAAO;AAAA,UACP;AAAA,UACA,yBAAiB,aAAa;AAAA,UAC9B;AAAA,QACF;AAAA,QACC,GAAG;AAAA;AAAA,IACN;AAAA,IACA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,gBACE,uBACI,aACE,kBACA,aACF;AAAA,QAEN,OAAO,uBAAuB,aAAa;AAAA,QAE1C;AAAA,6BAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,UAC3D;AAAA,YACC;AAAA,YACA;AAAA,YACA,KAAK;AAAA,YACL;AAAA,UACF;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,SAAS,cAAc;;;AE7InB,gBAAAK,cAAA;AALJ,IAAM,cAAc,CAAC,WACnB,WAAW,aAAa,UAAU;AAE7B,IAAM,YAAY,CAAC,EAAE,QAAQ,QAAQ,KAAK,MAC/C,SAAS,YACP,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,MAAM,WAAW,aAAa,oBAAoB;AAAA,IAClD,OAAM;AAAA,IACN,UAAU,YAAY,MAAM;AAAA;AAC9B,IAEA,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,MAAM,WAAW,aAAa,cAAc;AAAA,IAC5C,OAAM;AAAA,IACN,UAAU,YAAY,MAAM;AAAA;AAC9B;;;ACaI,SAEF,OAAAC,QAFE,QAAAC,cAAA;AAhBD,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AAC1B,SACE,gBAAAA,OAAC,UAAO,KAAI,MACV;AAAA,oBAAAA,OAAC,UAAK,WAAW,iBAAO,wBAAwB,GAC7C;AAAA,gBAAU,EAAE,QAAQ,QAAQ,MAAM,UAAU,CAAC;AAAA,MAC9C,gBAAAA,OAAC,aAAW;AAAA;AAAA,QAAqB;AAAA,SAAC;AAAA,OACpC;AAAA,IACA,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,CAAC,MACT,yBAAyB,EAAE,OAAO,KAAK;AAAA,QAEzC,OACE,WAAW,aAAa,wBAAwB;AAAA,QAElD,KAAK;AAAA;AAAA,IACP;AAAA,IAEA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,SAAS;AAAA,QACT;AAAA,QACD;AAAA;AAAA,IAED;AAAA,KACF;AAEJ;;;AC3DA;AAAA,EAEE,YAAYE;AAAA,EAGZ,gBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;;;ACXP;AAAA,EAAC,WAAAC;AAAA,EAKA,qBAAAC;AAAA,EAIA,yBAAAC;AAAA,EAIA,OAAAC;AAAA;;;ADmKS,SACE,OAAAC,QADF,QAAAC,cAAA;AA3HH,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAoB;AAClB,QAAM,cAAcC,QAAM;AAC1B,QAAM,kBAAkB,gCAAa,GAAG,WAAW;AACnD,QAAM,CAAC,MAAM,OAAO,IAAIC,WAAS,KAAK;AACtC,QAAM,CAAC,QAAQ,SAAS,IAAIA,WAAS,KAAK;AAC1C,QAAM,CAAC,cAAc,eAAe,IAAIA,WAA6B,IAAI;AACzE,QAAM,EAAE,MAAM,QAAQ,eAAe,IAAI,iBAAiB,cAAc;AAAA,IACtE;AAAA,EACF,CAAC;AACD,QAAM,aAAaC,SAAuB,IAAI;AAC9C,QAAM,cAAc,eAAe,KAAK,KAAK,aAAa,UAAU;AAEpE,QAAM,qBAAmD,aAAW;AAClE,UAAM,CAAC,KAAK,IAAI;AAChB,UAAM,iBAAiB,UAAU,IAAI,IAAI,UAAU,KAAK;AAAA,EAC1D;AAEA,EAAAC,YAAU,MAAM;AACd,UAAM,UAAU;AAAA,MACd,MAAM;AAAA,MACN,YAAY;AAAA,IACd;AACA,UAAMC,OAAM,WAAW;AACvB,UAAM,WAAW,IAAI,qBAAqB,oBAAoB,OAAO;AAErE,QAAIA,KAAK,UAAS,QAAQA,IAAG;AAE7B,WAAO,MAAM;AACX,UAAIA,KAAK,UAAS,UAAUA,IAAG;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,UAAU,CAAC;AAEf,EAAAD,YAAU,MAAM;AACd,QAAI,WAAW,SAAS;AACtB,aAAO,iBAAiB,UAAU,MAAM;AACtC,qBAAa;AAAA,MACf,CAAC;AAAA,IACH;AACA,WAAO,MAAM;AACX,UAAI,WAAW,SAAS;AACtB,eAAO,oBAAoB,UAAU,MAAM,IAAI;AAAA,MACjD;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI;AAEJ,EAAAA,YAAU,MAAM;AACd,WAAO,MAAM;AACX,mBAAa,KAAK;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,eAAa,CAAC,UAAU,KAAK,GAAG,MAAM;AACpC,QAAI,KAAM,SAAQ,KAAK;AAAA,EACzB,CAAC;AAED,QAAM,eAAe,MAAM;AACzB,iBAAa,KAAK;AAClB,YAAQ,KAAK;AAAA,EACf;AACA,QAAM,cAAc,MAAM;AACxB,QAAI,CAAC,MAAM;AACT,mBAAa,KAAK;AAClB,cAAQ,WAAW,MAAM,QAAQ,IAAI,GAAG,KAAK;AAAA,IAC/C;AAAA,EACF;AAEA,QAAM,gBAAgBE,eAAc;AAAA,IAClCC,cAAa,UAAU;AAAA,MACrB,KAAK,KAAK;AAAA,MACV,SAAS,gBAAgB,aAAa,SAAS,MAAM,OAAO;AAAA,MAC5D,QAAQ,gBAAgB,cAAc,SAAS,MAAM,MAAM;AAAA,MAC3D,oBAAoB;AAAA,IACtB,CAAC;AAAA,EACH;AAEA,QAAM,SAAS,QAAQ,SAAS,SAAS;AAEzC,SACE,gBAAAP;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,gBAAO,SAAS;AAAA,QAC9B;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA,cAAc,gBAAgB,cAAc,YAAY;AAAA,MACxD,aAAa,gBAAgB,aAAa,WAAW;AAAA,MAEpD;AAAA;AAAA,QACD,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,KAAK;AAAA,YACL,MAAK;AAAA,YACL,eAAa,CAAC;AAAA,YACd,OAAO,EAAE,GAAG,eAAe,SAAS;AAAA,YACpC,WAAW;AAAA,YACX,QAAO;AAAA,YACP,WAAW;AAAA,cACT,gBAAO;AAAA,cACP,yBAAiB,aAAa;AAAA,cAC9B,mBAAW,uBAAuB;AAAA,cAClC,mBAAW,0BAA0B,MAAM,EAAE;AAAA,YAC/C;AAAA,YAEC;AAAA;AAAA,cACD,gBAAAD,OAAC,SAAI,KAAK,iBAAiB,OAAO,eAAe,OAC/C,0BAAAC,OAAC,SAAI,OAAM,MAAK,QAAO,KACrB;AAAA,gCAAAD;AAAA,kBAAC;AAAA;AAAA,oBACC,GAAE;AAAA,oBACF,WAAW,gBAAO,uBAAuB;AAAA;AAAA,gBAC3C;AAAA,gBACA,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,UAAS;AAAA,oBACT,UAAS;AAAA,oBACT,GAAE;AAAA,oBACF,WAAW,gBAAO,mBAAmB;AAAA;AAAA,gBACvC;AAAA,iBACF,GACF;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,QAAQ,cAAc;;;AErKlB,gBAAAS,QAyBI,QAAAC,cAzBJ;AATG,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA2B;AACzB,QAAM,SAAS,CAAC,QAAgBC,SAAgB,YAC9C,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,cAAY;AAAA,MACZ,SAAS,MAAM,mBAAmB,MAAM;AAAA,MACxC,WAAW;AAAA,QACT,mBAAW,uBAAuB;AAAA,QAClC,iBAAO;AAAA,QACP,iBAAO,WAAWE,OAAM,EAAE;AAAA,QAC1B;AAAA,MACF;AAAA,MAEC,oBAAU,EAAE,QAAQ,QAAAA,SAAQ,MAAM,SAAS,CAAC;AAAA;AAAA,EAC/C;AAGF,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,iBAAO,kBAAkB;AAAA,QACzB,iBAAO,qBAAqB,MAAM,EAAE;AAAA,MACtC;AAAA,MAEA;AAAA,wBAAAD,OAAC,QAAG,WAAW,yBAAiB,cAAc,GAAI,uBAAY;AAAA,QAC7D,UACC,gBAAAA,OAAC,WAAQ,SAAQ,iCAAgC,IAEjD,gBAAAC,OAAC,UAAO,KAAI,MACV;AAAA,0BAAAD,OAAC,WAAQ,MAAM,gBACZ,iBAAO,YAAY,QAAQ,cAAc,GAC5C;AAAA,UACA,gBAAAA,OAAC,WAAQ,MAAM,kBACb,0BAAAA,OAAC,SAAK,iBAAO,YAAY,QAAQ,gBAAgB,GAAE,GACrD;AAAA,WACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;;;ARFM,gBAAAG,cAAA;AAxDC,IAAM,WAAW,CAAC;AAAA,EACvB,SAAS;AAAA,EACT,cAAc;AAAA,EACd,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,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,IAAIC,WAAwB,IAAI;AACxD,QAAM,CAAC,cAAc,eAAe,IAAIA,WAAiB;AACzD,QAAM,CAAC,qBAAqB,sBAAsB,IAChDA,WAAkB,KAAK;AAEzB,EAAAC,YAAU,MAAM;AACd,mBAAe,UAAa,UAAU,UAAU;AAAA,EAClD,GAAG,CAAC,UAAU,CAAC;AAEf,EAAAA,YAAU,MAAM;AACd,yBAAqB,UAAa,gBAAgB,gBAAgB;AAAA,EACpE,GAAG,CAAC,gBAAgB,CAAC;AAErB,EAAAA,YAAU,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,gBAAAF;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,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SAAO,gBAAAA,OAAC,aAAW,0BAAe;AACpC;;;AS5FC,gBAAAG;;;ACqBC,gBAAAC,cAAA;AANK,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACE,GAAG,iBAAiB,IAAI,GAAG,WAAW,SAAS,GAAG,WAAW,IAAI;AAAA;AACpE;AAGF,SAAS,cAAc;;;ACZrB,gBAAAC,cAAA;AANK,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA,OAAC,UAAO,KAAI,QAAQ,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI,GAAG;AAG3E,cAAc,cAAc;;;ACjB5B,SAAqC,SAAAC,eAAa;;;ACmB5C,gBAAAC,cAAA;AATC,IAAM,YAAY,CAAC,UAA0B;AAClD,QAAM,EAAE,OAAO,IAAI;AAEnB,MAAI,OAAO,SAAS,GAAG;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,WAAW,GAAG;AACvB,WACE,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,IAAI,OAAO,CAAC,EAAE;AAAA,QACd,SAAS,OAAO,CAAC,EAAE;AAAA,QACnB,aAAY;AAAA;AAAA,IACd;AAAA,EAEJ;AAEA,SACE,gBAAAA,OAAC,iBACE,iBAAO,IAAI,CAAC,EAAE,IAAI,QAAQ,MAAM;AAC/B,WACE,gBAAAA,OAAC,QACC,0BAAAA;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA;AAAA,QACA,aAAY;AAAA;AAAA,MAHP;AAAA,IAIP,GACF;AAAA,EAEJ,CAAC,GACH;AAEJ;;;AC3CA;AAAA,EAAC,mBAAAC;AAAA,EAcA,gCAAAC;AAAA,EAIA,gCAAAC;AAAA,EAKA,iCAAAC;AAAA,EAIA,iBAAAC;AAAA,EAIA,uBAAAC;AAAA,EAIA,qBAAAC;AAAA,EAIA,YAAAC;AAAA;;;ACPK,SAWE,OAAAC,QAXF,QAAAC,cAAA;AAVC,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,IAAI,sBAAsB,UAAU,QAAQ,KAAK,UAAU,UAAU,EAAE;AAAA,IACvE,SAAS;AAAA,EACX,EAAE;AAEF,SACE,gBAAAA,OAAC,QACC;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,gBAAe;AAAA,QACf,KAAI;AAAA,QACJ,aAAY;AAAA,QACZ,SAAQ;AAAA,QACR,QAAQ,UAAU,mBAAmB;AAAA,QACrC,YAAW;AAAA,QACX,WAAW,GAAG,CAAC,WAAW,qBAAO,eAAe,CAAC;AAAA,QAEjD;AAAA,0BAAAD;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,GAAG,qBAAO,YAAY,yBAAiB,aAAa,CAAC;AAAA,cAE/D,oBAAU,KAAK;AAAA;AAAA,UAClB;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,UAAU,mBAAmB;AAAA,cACnC,WAAW,qBAAO,eAAe,UAAU,UAAU,SAAS,EAAE;AAAA;AAAA,UAClE;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS;AAAA,cACT,MAAM;AAAA,cACN,WAAW;AAAA,gBACT,cAAc,aAAa,UAAU,KAAK,IAAI;AAAA,gBAC9C,gBAAgB,CAAC,UAAU,OAAO;AAAA,gBAClC,qBAAqB,CAAC,UAAU,gBAAgB;AAAA,gBAChD,oBAAoB;AAAA,kBAClB,WAAW,IAAI,OAAK,EAAE,EAAE;AAAA,gBAC1B;AAAA,cACF;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IACF;AAAA,IACA,gBAAAA,OAAC,aAAU,QAAQ,YAAY;AAAA,KACjC;AAEJ;;;ACvEA;AAAA,EAEE,aAAa;AAAA,OACR;AAQP,SAAS,eAAAE,cAAa,aAAAC,aAAW,SAAS,YAAY,UAAAC,gBAAc;;;ACyB7D,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;;;ACvDO,SAAS,WACd,MACA,eACS;AACT,MAAI,QAAQ,eAAe;AACzB,UAAM,qBAAqB,MAAM,QAAQ,aAAa,IAClD,gBACA,cAAc,MAAM,GAAG;AAC3B,UAAM,WAAW,KAAK,QAAQ;AAC9B,UAAM,YAAY,KAAK,QAAQ,IAAI,YAAY;AAC/C,UAAM,eAAe,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK;AAE/C,WAAO,mBAAmB,KAAK,UAAQ;AACrC,YAAM,YAAY,KAAK,KAAK,EAAE,YAAY;AAC1C,UAAI,UAAU,OAAO,CAAC,MAAM,KAAK;AAC/B,eAAO,SAAS,YAAY,EAAE,SAAS,SAAS;AAAA,MAClD,WAAW,UAAU,SAAS,IAAI,GAAG;AAEnC,eAAO,iBAAiB,UAAU,MAAM,GAAG,EAAE;AAAA,MAC/C;AACA,aAAO,aAAa;AAAA,IACtB,CAAC;AAAA,EACH;AACA,SAAO;AACT;;;ACtCO,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,SAAY,WAAW,MAAM,MAAM,IAAI;AAC3D;AAQO,IAAM,8BAA8B,CAAC,aAC1C,yBAAyB,QAAQ;AAE5B,IAAM,iCAAiC,MAAM;;;AHCpD,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,UAAUC,SAAqB,IAAI;AACzC,QAAM,WAAWA,SAAyB,IAAI;AAC9C,QAAM,YAAYA,SAA0B,IAAI;AAChD,QAAM,eAAe,CAAC,CAAC;AAEvB,QAAM,2BAA2B;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,IAAI,WAAW,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,EAAAC,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,YAAM,QAAQ,MAAM,IAAsB,UAAQ;AAChD,cAAM,WAAW,eAAe,MAAM,MAAM;AAE5C,eAAO;AAAA,UACL;AAAA,UACA,QAAQ,WAAW,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,EAAAA,YAAU,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,cAAcC;AAAA,IAClB,MAAM,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,IAChC,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,aAAaA,aAAY,MAAM,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE3E,QAAM,kBAAkBA;AAAA,IACtB,OAAO,QAAuC;AAC5C,sBAAgB,GAAG;AAEnB,UAAI,iBAAiB,GAAG,GAAG;AACzB,cAAM,QAAQ,MAAM,kBAAkB,GAAG;AACzC,cAAM,YAAY,MAAM;AAExB,YAAI,cAAc,EAAG;AAErB,iBAAS,EAAE,MAAM,YAAY,CAAC;AAAA,MAChC;AAAA,IACF;AAAA,IACA,CAAC,UAAU,QAAQ,QAAQ;AAAA,EAC7B;AAEA,QAAM,iBAAiBA,aAAY,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,kBAAkBA;AAAA,IACtB,CAAC,QAAuC;AACtC,sBAAgB,GAAG;AAEnB,UAAI,IAAI,cAAc,SAAS,IAAI,aAA4B,EAAG;AAElE,eAAS,EAAE,MAAM,YAAY,CAAC;AAAA,IAChC;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,WAAWA;AAAA,IACf,OACE,QACG;AACH,UAAI,eAAe;AACnB,UAAI,iBAAiB,GAAG,GAAG;AACzB,cAAM,oBAAoB,WAAW,IAAI,OAAK,EAAE,KAAK,IAAI;AAGzD,cAAM,iBAAkB,MAAM;AAAA,UAC5B;AAAA,QACF;AAEA,cAAM,WAAW,eACd,OAAO,OAAK,CAAC,kBAAkB,SAAS,EAAE,IAAI,CAAC,EAC/C,IAAsB,UAAQ;AAC7B,gBAAM,WAAW,eAAe,MAAM,MAAM;AAE5C,iBAAO;AAAA,YACL;AAAA,YACA,QAAQ,WAAW,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,iBAAiBA,aAAY,MAAM;AACvC,QAAI,SAAS,SAAS;AACpB,eAAS,QAAQ,QAAQ;AACzB,eAAS,QAAQ,MAAM;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,aAAaA;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,eAAeA;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,iBAAiBA;AAAA,IACrB,OAEM;AAAA,MACJ,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AAAA,IACA,CAAC,gBAAgB,SAAS;AAAA,EAC5B;AAEA,QAAM,gBAAgBA;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;;;AJxMI,gBAAAC,QAsDI,QAAAC,cAtDJ;AApDG,IAAM,eAAe,CAAC,UAA6B;AACxD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX;AAAA,IACA,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,cAAcC,QAAM;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,WAAW,UAAU;AAC3B,QAAM,SAAS,QAAQ;AACvB,QAAM,gBAAgB,WAAW,SAAS;AAC1C,QAAM,qBAAqB;AAE3B,QAAM,UAAU,sBAAsB,UAAU,OAAO;AACvD,QAAM,QAAQ,sBAAsB,UAAU,KAAK;AACnD,QAAM,WAAW,sBAAsB,UAAU,QAAQ;AACzD,QAAM,UAAU,sBAAsB,UAAU,OAAO;AAEvD,QAAM,mBAAmB,WAAW,IAAI,CAAC,WAAW,UAClD,gBAAAF;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,IAAI,sBAAsB,UAAU,SAAS,KAAK,EAAE;AAAA,IACpD,SAAS;AAAA,EACX,EAAE;AAEF,QAAM,SACJ,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG,eAAe;AAAA,MACnB,IAAI;AAAA,MACJ,MAAK;AAAA,MACL,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,MAAM;AAAA,MACN,WAAW;AAAA,QACT,gBAAgB,gBAAgB,OAAO;AAAA,QACvC,oBAAoB,8BAA8B;AAAA,UAChD,WAAW,UAAU;AAAA,UACrB,SAAS,QAAQ;AAAA,UACjB,GAAG,eAAe,IAAI,OAAK,EAAE,EAAE;AAAA,QACjC,CAAC;AAAA,MACH;AAAA,MAEC;AAAA;AAAA,EACH;AAGF,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACJ,WAAW,GAAG,WAAW,yBAAiB,aAAa,CAAC;AAAA,MACxD;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,qBAAqB;AAAA,YACrB,SAAS;AAAA,YAER;AAAA;AAAA,QACH;AAAA,QAED,UAAU,gBAAAA,OAAC,gBAAa,IAAI,OAAO,SAAS,KAAK,aAAY,OAAM;AAAA,QACnE,kBACC,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,KAAI;AAAA,YACJ,SAAQ;AAAA,YACP,GAAG,aAAa;AAAA,YACjB,WAAW;AAAA,cACT,qBAAO,iBAAiB;AAAA,cACxB,iBAAiB,qBAAO,8BAA8B;AAAA,cACtD,gBAAgB,qBAAO,8BAA8B;AAAA,YACvD;AAAA,YAEA;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACE,GAAG,cAAc;AAAA,kBAClB,IAAI;AAAA,kBACJ,eAAY;AAAA;AAAA,cACd;AAAA,cACC;AAAA,cACD,gBAAAA,OAAC,kBAAe,IAAG,QAAO,iDAE1B;AAAA,cACC;AAAA;AAAA;AAAA,QACH,IAEA,gBAAAC,OAAC,SAAI,WAAW,qBAAO,+BAA+B,GACpD;AAAA,0BAAAD,OAAC,WAAO,GAAG,cAAc,GAAG,IAAI,SAAS;AAAA,UACxC;AAAA,WACH;AAAA,QAEF,gBAAAA,OAAC,aAAU,QAAQ,gBAAgB;AAAA,QAClC,CAAC,gBAAgB,gBAAAA,OAAC,iBAAe,4BAAiB;AAAA;AAAA;AAAA,EACrD;AAEJ;AAEA,aAAa,cAAc;;;AQ7L3B;AAAA,EAAC,WAAAG;AAAA,EASA,MAAAC;AAAA,EAMA,MAAAC;AAAA,EAMA,cAAAC;AAAA,EAMA,iBAAAC;AAAA,EAMA,gBAAAC;AAAA;;;ACxBC,gBAAAC,cAAA;AADK,IAAM,SAAS,CAAC,EAAE,WAAW,GAAG,KAAK,MAC1C,gBAAAA,OAAC,YAAS,IAAG,UAAS,WAAW,GAAG,WAAW,eAAO,SAAS,GAAI,GAAG,MAAM;;;ACJ5E,gBAAAC,cAAA;AADK,IAAM,mBAAmB,CAAC,UAC/B,gBAAAA,OAAC,WAAQ,OAAO,GAAG,gBAAe,gBAAgB,GAAG,OAAO;A;;;;;ACaxD,gBAAAC,cAAA;AANC,IAAM,aAAa,CAAC,EAAE,gBAAgB,GAAG,KAAK,MAAuB;AAC1E,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,iBAAiB,iBAAiB;AAAA,MAC7C,OAAM;AAAA,MAEN,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,KAAI;AAAA,UACJ,KAAK;AAAA,UACJ,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF;AAEJ;;;AClBE,gBAAAC,cAAA;AADK,IAAM,aAAa,CAAC,EAAE,WAAW,GAAG,KAAK,MAC9C,gBAAAA,OAAC,iBAAc,WAAW,GAAG,WAAW,eAAO,IAAI,GAAI,GAAG,MAAM;;;ACGhE,gBAAAC,cAAA;AAJK,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA,GAAG;AACL,MACE,gBAAAA,OAAC,iBAAc,WAAW,GAAG,WAAW,eAAO,cAAc,CAAC,GAAI,GAAG,MAAM;;;ACD3E,gBAAAC,cAAA;AAJK,IAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA,GAAG;AACL,MACE,gBAAAA,OAAC,SAAI,WAAW,GAAG,WAAW,eAAO,eAAe,CAAC,GAAI,GAAG,MAAM;;;ACAlE,gBAAAC,cAAA;AAJK,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,MACE,gBAAAA,OAAC,SAAI,WAAW,GAAG,WAAW,eAAO,YAAY,CAAC,GAAI,GAAG,MAAM;;;ACH/D,gBAAAC,cAAA;AADK,IAAM,aAAa,CAAC,EAAE,WAAW,GAAG,KAAK,MAC9C,gBAAAA,OAAC,SAAI,WAAW,GAAG,WAAW,eAAO,MAAM,CAAC,GAAI,GAAG,MAAM;;;ACR3D,SAAS,YAAAC,kBAAgB;;;ACAzB;AAAA,EAAC,WAAAC;AAAA,EAUA,mBAAAC;AAAA,EAIE,MAAAC;AAAA,EAKF,qBAAAC;AAAA,EASA,sBAAAC;AAAA,EASA,SAAAC;AAAA,EAOA,qBAAAC;AAAA;;;ADoBK,SAGE,OAAAC,QAHF,QAAAC,cAAA;AAnDC,IAAM,QAA+C;AAAA,EAC1D,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AACX;AAoBO,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA0B;AACxB,QAAM,CAAC,UAAU,SAAS,IAAIC,WAAS,KAAK;AAE5C,SAAO,CAAC,WACN,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,sBAAO;AAAA,UACP,sBAAO,cAAc,OAAO,EAAE;AAAA,UAC9B,yBAAiB,aAAa;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,GAAG,sBAAO,SAAS,YAAY,sBAAO,mBAAmB,CAAC;AAAA,YAErE;AAAA,8BAAAD,OAAC,QAAK,MAAM,MAAM,OAAO,GAAG,WAAW,sBAAO,MAAM;AAAA,cACnD,8BAAY,gBAAAA,OAAC,UAAM,mBAAQ;AAAA;AAAA;AAAA,QAC9B;AAAA,QAEC,YACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,SAAQ;AAAA,YACR,SAAS,MAAM;AACb,wBAAU,IAAI;AACd,yBAAW,QAAQ;AAAA,YACrB;AAAA,YACA,MAAK;AAAA,YACL,cAAW;AAAA;AAAA,QACb;AAAA;AAAA;AAAA,EAEJ,IACE;AACN;AAEA,cAAc,cAAc;;;AEvF5B;AAAA,EAAC,QAAAG;AAAA;;;ACWC,gBAAAC,cAAA;AADK,IAAM,eAAe,CAAC,EAAE,WAAW,GAAG,KAAK,MAChD,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,WAAW;AAAA,MACT;AAAA,MACA,mBAAW,kBAAkB;AAAA,MAC7B,mBAAW,uBAAuB;AAAA,MAClC,cAAY;AAAA,MACZ,yBAAiB;AAAA,MACjB,qBAAO;AAAA,IACT;AAAA,IACC,GAAG;AAAA;AACN;;;ACrBF,SAAS,UAAAC,gBAAc;;;ACAvB;AAAA,EAME,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AAmFH,gBAAAC,cAAA;AA7DG,IAAM,oBAAoBC;AAAA,EAC/B,CAAC;AACH;AAEO,IAAM,uBAAuB,MAAMC,aAAW,iBAAiB;AAE/D,IAAM,4BAA4B,CACvC,UACG;AACH,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,IAAIC,WAAuB,wBAAS,EAAE;AAC1E,QAAM,CAAC,WAAW,YAAY,IAAIA,WAAS,KAAK;AAEhD,QAAM,kBAAkB,CAAC,MAAgC;AACvD,oBAAgB,EAAE,OAAO,KAAK;AAC9B,yCAAW;AAAA,EACb;AAEA,QAAM,iBAAiD,CACrD,MACG;AACH,iBAAa,IAAI;AACjB,uCAAU;AAAA,EACZ;AAEA,QAAM,gBAAgD,CACpD,MACG;AACH,QAAI,CAAC,aAAa,EAAE,OAAO,MAAM,KAAK,MAAM,IAAI;AAC9C,sBAAgB,KAAK;AAAA,IACvB,OAAO;AACL,+CAAa,EAAE,OAAO;AAAA,IACxB;AACA,iBAAa,KAAK;AAClB,qCAAS;AAAA,EACX;AAEA,QAAM,gBAAgB,MAAM;AAC1B,SACE,qCAAU,aAAY,SAAS,iBAC/B,SAAS,yBAAyB,aAClC;AACA,mBAAa,KAAK;AAClB,eAAS,cAAc,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,eAAa,CAAC,OAAO,GAAG,MAAM,cAAc,CAAC;AAC7C,eAAa,CAAC,QAAQ,GAAG,MAAM,cAAc,CAAC;AAC9C,oBAAkB,qCAAU,SAAS,MAAM,cAAc,CAAC;AAE1D,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT;AAAA,QACA,OAAO;AAAA,QACP;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEA,0BAA0B,cAAc;;;AC3GxC,SAAS,SAAAI,SAAO,UAAAC,gBAAc;;;ACA9B;AAAA,EAAC,gBAAAC;AAAA,EA+BA,2BAAAC;AAAA,EAIA,mBAAAC;AAAA,EAIA,gBAAAC;AAAA;;;ACpCC,iBAAAC,cAAA;AADK,IAAM,2BAA2B,CAAC,IAAY,cACnD,gBAAAA,OAAC,kBAAe,IAAQ,IAAG,QAAO;AAAA;AAAA,EACK;AAAA,EACpC,CAAC,aAAa;AAAA,GACjB;;;AF0CI,SAQM,OAAAC,QARN,QAAAC,cAAA;AA3BC,IAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA2B;AACzB,QAAM,EAAE,QAAQ,UAAU,SAAS,WAAW,OAAO,UAAU,IAC7D,qBAAqB;AAEvB,QAAM,eAAeC,QAAM;AAC3B,QAAM,WAAW,kBAAM,GAAG,YAAY;AACtC,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,iBAAiB,sBAAsB,UAAU,cAAc;AACrE,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,gBAAgB,YAAY;AAElC,QAAM,SAAS,sBAAsB,UAAU,MAAM;AAErD,QAAM,WAAWC,SAA4B,IAAI;AACjD,QAAM,cAAc,eAAe,KAAK,QAAQ;AAEhD,SACE,gBAAAF,OAAC,OAAI,UAAS,YAAW,OACvB;AAAA,oBAAAA,OAAC,SAAI,WAAW,cAAY,aAAa,GACtC;AAAA,OAAC,aAAa,CAAC,YACd,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,MAAM;AAnD3B;AAoDc,2BAAS,YAAT,mBAAkB;AAAA,UACpB;AAAA,UACA,WAAW,mBAAO,cAAc;AAAA,UAEhC,0BAAAA,OAAC,QAAK,MAAM,UAAU,UAAS,SAAQ;AAAA;AAAA,MACzC;AAAA,MAEF,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,oBAAkB,8BAA8B;AAAA,YAC9C,kBAAkB,iBAAiB;AAAA,YACnC;AAAA,YACA;AAAA,UACF,CAAC;AAAA,UACD,WAAW;AAAA,YACT,mBAAO,cAAc;AAAA,YACrB,CAAC,YAAY,CAAC,aAAa,mBAAO,yBAAyB;AAAA,YAC3D,mBAAO,iBAAiB;AAAA,YACxB,cAAY,iBAAiB;AAAA,YAC7B,iBAAiB,cAAY,wBAAwB;AAAA,YACrD,yBAAiB,aAAa;AAAA,YAC9B,mBAAW;AAAA,YACX;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IACC,yBAAyB,QAAQ,SAAS;AAAA,IAC1C,mBAAmB,QAAW,QAAW,cAAc,cAAc;AAAA,KACxE;AAEJ;AAEA,eAAe,cAAc;;;AF7DvB,gBAAAI,cAAA;AAtBC,IAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA+B;AAC7B,QAAM,cAAcC,SAA4B,IAAI;AACpD,QAAM,cAAc,eAAe,KAAK,WAAW;AACnD,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,0BAAAA,OAAC,kBAAe,KAAK,aAAc,GAAG,MAAM;AAAA;AAAA,EAC9C;AAEJ;;;AKhCA,SAAS,UAAAE,gBAAc;;;ACAvB,SAAS,SAAAC,SAAO,UAAAC,gBAAc;AA8CxB,SAQM,OAAAC,QARN,QAAAC,cAAA;AA1BC,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAwB;AACtB,QAAM,EAAE,QAAQ,UAAU,SAAS,WAAW,OAAO,UAAU,IAC7D,qBAAqB;AAEvB,QAAM,eAAeC,QAAM;AAC3B,QAAM,WAAW,kBAAM,GAAG,YAAY;AACtC,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,gBAAgB,YAAY;AAClC,QAAM,iBAAiB,sBAAsB,UAAU,cAAc;AACrE,QAAM,SAAS,sBAAsB,UAAU,MAAM;AAErD,QAAM,WAAWC,SAAyB,IAAI;AAC9C,QAAM,cAAc,eAAe,KAAK,QAAQ;AAEhD,SACE,gBAAAF,OAAC,OAAI,UAAS,YAAW,OACvB;AAAA,oBAAAA,OAAC,SAAI,WAAW,cAAY,aAAa,GACtC;AAAA,OAAC,aAAa,CAAC,YACd,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,MAAM;AAjD3B;AAkDc,2BAAS,YAAT,mBAAkB;AAAA,UACpB;AAAA,UACA,WAAW,mBAAO,cAAc;AAAA,UAEhC,0BAAAA,OAAC,QAAK,MAAM,UAAU,UAAS,SAAQ;AAAA;AAAA,MACzC;AAAA,MAEF,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,oBAAkB,8BAA8B;AAAA,YAC9C,kBAAkB,iBAAiB;AAAA,YACnC;AAAA,YACA;AAAA,UACF,CAAC;AAAA,UACD,gBAAc;AAAA,UACd,WAAW;AAAA,YACT,mBAAO,cAAc;AAAA,YACrB,CAAC,YAAY,CAAC,aAAa,mBAAO,yBAAyB;AAAA,YAC3D,yBAAiB,aAAa;AAAA,YAC9B,iBAAiB,cAAY,wBAAwB;AAAA,YACrD;AAAA,UACF;AAAA;AAAA,MACF;AAAA,OACF;AAAA,IACC,yBAAyB,QAAQ,SAAS;AAAA,IAC1C,mBAAmB,QAAW,QAAW,cAAc,cAAc;AAAA,KACxE;AAEJ;AAEA,YAAY,cAAc;;;ADzDpB,gBAAAI,cAAA;AAtBC,IAAM,kBAAkB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA4B;AAC1B,QAAM,WAAWC,SAAyB,IAAI;AAC9C,QAAM,cAAc,eAAe,KAAK,QAAQ;AAChD,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA,0BAAAA,OAAC,eAAa,GAAG,MAAM,KAAK,aAAa;AAAA;AAAA,EAC3C;AAEJ;;;AEhCA,SAAS,YAAAE,kBAAgB;;;ACAzB;AAAA,EAAC,KAAAC;AAAA,EAIE,iBAAAC;AAAA,EAKF,iBAAAC;AAAA,EAKE,sBAAAC;AAAA,EAUF,YAAAC;AAAA,EAQA,kBAAAC;AAAA,EAIA,wBAAAC;AAAA,EAoBA,gCAAAC;AAAA,EAUA,gBAAAC;AAAA;;;ACtDC,gBAAAC,cAAA;AADK,IAAM,iBAAiB,CAAC,EAAE,WAAW,GAAG,KAAK,MAClD,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,IACJ,gBAAc,YAAY,SAAS;AAAA,IACnC,WAAW;AAAA,MACT,uBAAO,sBAAsB;AAAA,MAC7B,aAAa,uBAAO,8BAA8B;AAAA,MAClD,yBAAiB,aAAa;AAAA,MAC9B;AAAA,IACF;AAAA;AACF;;;AFmDY,gBAAAC,QAqEF,QAAAC,cArEE;AA5CP,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;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,CAAC,aAAa,cAAc,IAAIC;AAAA,IACpC;AAAA,EACF;AAEA,QAAM,0BAA0B,CAAC,SAAiB;AAChD,mBAAe,IAAI;AACnB;AAAA,EACF;AAEA,QAAM,wBAAwB,CAAC,CAAC,YAAY,SAAS,SAAS;AAC9D,QAAM,yBACJ,CAAC,CAAC,oBAAoB,iBAAiB,SAAS;AAClD,QAAM,2BAA2B,CAAC,CAAC;AACnC,QAAM,sBAAsB,4BAA4B;AAExD,QAAM,aAAa,wBACjB,gBAAAF,OAAC,SAAI,cAAW,kBACd,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACJ,WAAW,2BAA2B,wBAAwB;AAAA,MAC9D,WAAW,GAAG,uBAAO,UAAU,CAAC;AAAA,MAE/B,mBAAS,IAAI,CAAC,MAAM,UAAU;AAC7B,cAAM,EAAE,MAAM,GAAGG,MAAK,IAAI;AAC1B,cAAM,YAAY,SAAS;AAC3B,eACE,gBAAAH,OAAC,QAAe,WAAW,uBAAO,gBAAgB,GAChD,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACC,GAAGG;AAAA,YACJ;AAAA,YACA,SAAS,MAAM,wBAAwB,IAAI;AAAA;AAAA,QAC7C,KANO,KAOT;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH,GACF,IACE;AAEJ,QAAM,iBACJ,0BAA0B,CAAC,CAAC,QAAQ;AACtC,QAAM,4BAA4B,0BAA0B,CAAC,CAAC;AAE9D,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,YAAW;AAAA,MACX,KAAK,qBAAqB,QAAQ,uBAAuB,IAAI;AAAA,MAC7D,eAAe;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,uBAAO,KAAK,CAAC,CAAC,cAAc,uBAAO,eAAe,CAAC;AAAA,QACjE;AAAA,QACA;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAD,OAAC,cAAW,gBAAe,gBAAe,MAAI,MAAC,IAAG,QAC/C,4BACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,KAAI;AAAA,YACJ,WAAW,GAAG,mBAAW,sBAAsB,GAAG,SAAS;AAAA,YAE1D;AAAA;AAAA,QACH,IAEA,iBAEJ;AAAA,QACA,gBAAAA,OAAC,cAAW,gBAAe,cAAa,IAAG,QACxC,2BACH;AAAA,SACE,kBAAkB,eAAe,SACjC,gBAAAA,OAAC,SAAI,WAAW,uBAAO,eAAe,GAAG;AAAA,QAE1C;AAAA,QACA,kBACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WACE,CAAC,6BAA6B,2BAC1B,wBACA;AAAA,YAEN,WAAW,GAAG,uBAAO,oBAAoB,CAAC;AAAA,YAE1C,0BAAAC,OAAC,qBACC;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAM,sBAAsB,WAAW;AAAA,kBACvC,SAAQ;AAAA,kBACR,cAAW;AAAA;AAAA,cACb;AAAA,cACA,gBAAAC,OAAC,gBAAa,WAAW,uBAAO,cAAc,GAC3C;AAAA,wBACC,gBAAAD,OAAC,oBACE,eAAK,OACJ,gBAAAA,OAAC,oBAAiB,MAAM,YAAa,GAAG,MAAM,IAE9C,gBAAAA,OAAC,oBAAiB,MAAM,YAAa,GAAG,MAAM,GAElD;AAAA,gBAED,uBACC,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,cAAW;AAAA,oBACX,WAAW;AAAA,oBAEX,0BAAAA,OAAC,oBACE,mBAAS,IAAI,UACZ,gBAAAA,OAAC,oBAAkB,GAAG,MAAM,CAC7B,GACH;AAAA;AAAA,gBACF;AAAA,gBAED,uBAAuB,0BACtB,gBAAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAI;AAAA,oBACJ,WAAW;AAAA;AAAA,gBACb;AAAA,gBAED,0BACC,gBAAAA,OAAC,oBACE,2BAAiB,IAAI,UAAQ;AAC5B,yBAAO,KAAK,OACV,gBAAAA,OAAC,oBAAkB,GAAI,MAAgC,IAEvD,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACE,GAAI;AAAA;AAAA,kBACP;AAAA,gBAEJ,CAAC,GACH;AAAA,iBAEJ;AAAA,eACF;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,eAAe,cAAc;;;AG/L7B;AAAA,EAAC,MAAAI;AAAA,EASA,iBAAAC;AAAA,EAIA,mBAAAC;AAAA,EAuCA,iBAAAC;AAAA,EAUA,IAAAC;AAAA;;;ACtBG,gBAAAC,cAAA;AAZG,IAAM,OAAO,CAAC;AAAA,EACnB,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAiB;AACf,QAAMC,QAAoB,aAAa,YAAY,OAAO;AAE1D,SACE,gBAAAD;AAAA,IAACC;AAAA,IAAA;AAAA,MACE,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD,WAAW;AAAA,QACT,aAAO;AAAA,QACP,aAAO,SAAS,QAAQ,EAAE;AAAA,QAC1B,mBAAmB,YACf,aAAO,eAAe,IACtB,yBAAiB,gBAAgB,cAAc,CAAC;AAAA,MACtD;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEA,KAAK,cAAc;;;AC/CjB,gBAAAC,cAAA;AADK,IAAM,WAAW,CAAC,EAAE,WAAW,GAAG,KAAK,MAC5C,gBAAAA,OAAC,QAAI,GAAG,MAAM,WAAW,GAAG,WAAW,aAAO,EAAE,GAAG;AAGrD,SAAS,cAAc;;;ACXvB,SAAS,YAAAC,kBAAgB;;;ACAzB;AAAA,EAAC,WAAAC;AAAA,EAMA,mBAAAC;AAAA,EAIE,MAAAC;AAAA,EAIF,sBAAAC;AAAA,EAQA,qBAAAC;AAAA,EAQA,sBAAAC;AAAA,EASA,mBAAAC;AAAA,EASA,yBAAAC;AAAA,EAKA,mCAAAC;AAAA,EAKA,uBAAAC;AAAA,EAKA,iCAAAC;AAAA,EAKA,iBAAAC;AAAA,EAIA,iBAAAC;AAAA,EAIA,mBAAAC;AAAA;;;ADFU,qBAAAC,WAAA,OAAAC,QAIP,QAAAC,cAJO;AArDX,IAAMC,SAA8C;AAAA,EAClD,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AACR;AA+BO,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAyB;AACvB,QAAM,CAAC,UAAU,SAAS,IAAIC,WAAS,KAAK;AAE5C,MAAI,UAAU;AACZ,WAAO,gBAAAH,OAAAD,WAAA,EAAE;AAAA,EACX;AAEA,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,yBAAiB,aAAa;AAAA,UAC9B,qBAAO;AAAA,UACP,qBAAO,cAAc,MAAM,EAAE;AAAA,UAC7B,YAAY,qBAAO,cAAc,MAAM,YAAY;AAAA,UACnD,qBAAO,cAAc,OAAO,EAAE;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA,SAAQ;AAAA,MACR,SAAQ;AAAA,MACR,KAAI;AAAA,MAEJ;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,MAAME,OAAM,OAAO;AAAA,YACnB,WAAW,GAAG,qBAAO,MAAM,qBAAO,eAAe;AAAA;AAAA,QACnD;AAAA,QACA,gBAAAF,OAAC,SAAI,WAAW,qBAAO,iBACpB,wCAAY,gBAAAA,OAAC,UAAM,mBAAQ,GAC9B;AAAA,QACC,YACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,SAAQ;AAAA,YACR,SAAS,MAAM;AACb,wBAAU,IAAI;AACd,yBAAW,QAAQ;AAAA,YACrB;AAAA,YACA,MAAK;AAAA,YACL,cAAW;AAAA,YACX,WAAW,qBAAO;AAAA;AAAA,QACpB;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,aAAa,cAAc;;;AEzH3B;AAAA,EAGE,cAAAI;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,OACK;AACP,SAAS,gBAAAC,qBAAoB;;;ACR7B;AAAA,EAAC,WAAAC;AAAA,EAWA,wBAAAC;AAAA,EAKA,oBAAAC;AAAA,EAQA,gBAAAC;AAAA,EAKA,SAAAC;AAAA,EAKA,MAAAC;AAAA;;;ADiHW,SAWQ,OAAAC,QAXR,QAAAC,cAAA;AA1FL,IAAM,QAAQ,CAAC;AAAA,EACpB,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAkB;AAChB,QAAM,cAAcC,QAAM;AAC1B,QAAM,UAAU,kBAAM,GAAG,WAAW;AACpC,QAAM,WAAW,GAAG,OAAO;AAE3B,QAAM,WAAW,aAA6B,QAAQ,eAAe;AACrE,QAAM,cAAc,eAAe,KAAK,QAAQ;AAChD,QAAM,cAAc,MAAM;AA9E5B;AA+EI,QAAI,WAAW,QAAQ;AACrB,qDAAY,YAAZ,mBAAqB;AACrB,cAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,eAAeC,aAAW,YAAY;AAE5C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,QAAM,eAAe,wCAAiB,6CAAc;AAEpD,EAAAC,YAAU,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,QAAM,cAAcC,SAAuB,IAAI;AAC/C,QAAM,kBAAkB,CAAC,UAA4C;AACnE,QAAI,MAAM,WAAW,YAAY,WAAW,QAAQ;AAClD,kBAAY;AAAA,IACd;AAAA,EACF;AAEA,eAAa,CAAC,UAAU,KAAK,GAAG,MAAM,YAAY,CAAC;AAEnD,QAAM,oBAAoB,mBAAmB,QAAQ,GAAG;AAExD,UAAQ,UAAU,sBAAsB,eACpCC;AAAA,IACE,gBAAAN;AAAA,MAAC;AAAA;AAAA,QACC,QAAO;AAAA,QACP,WAAW,UAAU;AAAA,QACrB,KAAK;AAAA,QACL,SAAS;AAAA,QAET,0BAAAC;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,eAAc;AAAA,YACd,UAAS;AAAA,YACR,GAAG;AAAA,cACF;AAAA,cACA;AAAA,gBACE;AAAA,gBACA,cAAO;AAAA,gBACP;AAAA,gBACA,cAAc,cAAO,sBAAsB;AAAA,gBAC3C,mBAAW;AAAA,cACb;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,KAAK;AAAA,YACL,MAAK;AAAA,YACL,cAAU;AAAA,YACV,eAAa,CAAC;AAAA,YACd,UAAU;AAAA,YACV,mBAAiB;AAAA,YACjB,IAAI;AAAA,YACJ,WAAW;AAAA,YAEX;AAAA,8BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,cAAa;AAAA,kBACb,UAAS;AAAA,kBACT,KAAI;AAAA,kBACJ,MAAK;AAAA,kBACL,OAAM;AAAA,kBACN,WAAW,cAAO,kBAAkB;AAAA,kBAEnC;AAAA,qBAAC,CAAC,UACD,gBAAAD,OAAC,SAAI,IAAI,UACN,iBAAO,WAAW,WACjB,gBAAAA,OAAC,WAAQ,OAAO,GAAG,gBAAe,gBAC/B,kBACH,IAEA,QAEJ;AAAA,oBAED,WACC,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,MAAK;AAAA,wBACL,SAAQ;AAAA,wBACR,MAAM;AAAA,wBACN,SAAS;AAAA,wBACT,cAAW;AAAA,wBACX,WAAW,cAAO,cAAc;AAAA;AAAA,oBAClC;AAAA;AAAA;AAAA,cAEJ;AAAA,cACA,gBAAAA,OAAC,OAAI,SAAQ,QAAO,KAAI,MACrB,UACH;AAAA;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACA;AAAA,EACF,IACA;AACN;AAEA,MAAM,cAAc;;;AE7JhB,gBAAAO,cAAA;AAVG,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAsB;AACpB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,mBAAW;AAAA,UACX,cAAc,mBAAW,cAAc;AAAA,UACvC,cAAO;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,GAAG,uCAAW,OAAO,OAAe;AAAA,MAE5C;AAAA;AAAA,EACH;AAEJ;AAEA,UAAU,cAAc;;;AC1CtB,gBAAAC,cAAA;AADK,IAAM,eAAe,CAAC,UAC3B,gBAAAA,OAAC,OAAI,SAAQ,QAAO,UAAS,QAAO,KAAI,MAAM,GAAG,OAAO;AAG1D,aAAa,cAAc;;;ACV3B,SAA8B,YAAAC,kBAAgB;;;ACA9C;AAAA,EAAC,MAAAC;AAAA,EAQA,YAAAC;AAAA,EAKA,sBAAAC;AAAA,EAIA,YAAAC;AAAA,EAOA,mBAAAC;AAAA;;;ACxBD,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,YACwB;AACxB,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;;;ACxDA;AAAA,EAIE,cAAAC;AAAA,EACA,SAAAC;AAAA,OACK;AACP;AAAA,EAGE,WAAW;AAAA,OAIN;;;ACdP;AAAA,EAAC,uBAAAC;AAAA,EAIA,uBAAAC;AAAA,EAIA,sBAAAC;AAAA,EAQA,gBAAAC;AAAA,EAIA,eAAAC;AAAA,EAIA,gBAAAC;AAAA,EAIA,SAAAC;AAAA,EACc,qBAAAC;AAAA,EAAoB,sBAAAC;AAAA,EAUlC,qBAAAC;AAAA;;;ACzBD,IAAM,mBAAqC;AAAA,EACzC,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,eAAe;AAAA,EACjB;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EACjB;AACF;AAEA,IAAM,4BAA8C;AAAA,EAClD,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EACjB;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,eAAe;AAAA,EACjB;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EACjB;AACF;AAEA,IAAM,yBAAyB;AAAA,EAC7B,MAAM;AAAA,EACN,eAAe;AACjB;AAEA,IAAM,aAAa;AAAA,EACjB,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,cAAc;AAChB;AAEO,IAAM,SAAS;AAEtB,IAAM,UAAU;AAAA,EACd,QAAQ;AAAA,IACN,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,GAAG,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS;AAAA,MACP,aACE;AAAA,IACJ;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,GAAG,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS;AAAA,MACP,aACE;AAAA,IACJ;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,MACJ,cAAc;AAAA,MACd,aAAa;AAAA,MACb,GAAG,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS;AAAA,MACP,aACE;AAAA,IACJ;AAAA,EACF;AACF;AAEO,IAAM,kBAAkB,CAC7BC,OACA,UACA,SACA,gBACiE;AAAA,EACjE,SAAS,CAAC,UAAU,WAAW;AAAA,IAC7B,UAAU;AAAA,IACV,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,YAAY,uCAAuC,2BAA2B;AAAA,IAC9E,cAAc;AAAA,IACd,GAAG,QAAQA,KAAI,EAAE;AAAA,IACjB,GAAI,WAAW,QAAQA,KAAI,EAAE;AAAA,IAC7B,WAAW;AAAA,MACT,GAAI,CAAC,cAAc;AAAA,QACjB,aAAa;AAAA,QACb,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,GAAI,YAAY;AAAA,MACd,aAAa;AAAA,MACb,WAAW;AAAA,MACX,WAAW;AAAA,QACT,aAAa;AAAA,QACb,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,kBAAkB;AAAA,MAChB,GAAG;AAAA,IACL;AAAA,IACA,GAAI,MAAM,YAAY,cAAc;AAAA,MAClC,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,eAAe;AAAA,IACjB;AAAA,IACA,GAAI,cAAc;AAAA,MAChB,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,WAAW;AAAA,MACX,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,aAAa,eAAa;AAAA,IACxB,GAAG;AAAA,IACH,OAAO;AAAA,IACP,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,OAAO;AAAA,IACP,GAAI,MAAM,YAAY,cAAc;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,GAAI,cAAc,EAAE,OAAO,+BAA+B;AAAA,EAC5D;AAAA,EAEA,gBAAgB,CAAC,UAAU,WAAW;AAAA,IACpC,GAAG;AAAA,IACH,GAAI,MAAM,YAAY,WAAW;AAAA,MAC/B,KAAK;AAAA,IACP;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,cAAc;AAAA,IACd,iBAAiB;AAAA,EACnB;AAAA,EACA,iBAAiB,CAAC,UAAU,WAAW;AAAA,IACrC,GAAG;AAAA,IACH,SAAS;AAAA,IACT,GAAG,WAAW,gBAAgBA,KAAI;AAAA,IAClC,OAAO;AAAA,IACP,GAAI,MAAM,YAAY,cAAc;AAAA,MAClC,OAAO;AAAA,IACT;AAAA,IACA,GAAI,cAAc;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,kBAAkB,CAAC,UAAU,UAC3B,MAAM,YAAY,cAAc,aAC5B;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,OAAO;AAAA,IAEP,SAAS;AAAA,EACX;AAAA,EACN,MAAM,OAAO;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,OAAO;AAAA,IACP,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,aAAa;AAAA,EACf;AAAA,EACA,YAAY,eAAa;AAAA,IACvB,GAAG;AAAA,IACH,QAAQ;AAAA,EACV;AAAA,EACA,OAAO,OAAO;AAAA,IACZ,WAAW;AAAA,EACb;AAAA,EACA,cAAc,OAAO;AAAA,IACnB,GAAG,WAAW;AAAA,IACd,OAAO;AAAA,IACP,eAAe;AAAA,IACf,cAAc;AAAA,EAChB;AAAA,EACA,UAAU,OAAO;AAAA,IACf,WAAW;AAAA,IACX,WAAW;AAAA,IACX,UAAU;AAAA,IACV,WAAW;AAAA,IACX,GAAG;AAAA,EACL;AAAA,EACA,QAAQ,CAAC,UAAU,WAAW;AAAA,IAC5B,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,GAAG,WAAW,OAAOA,KAAI;AAAA,IACzB,OAAO;AAAA,IACP,kDAAkD;AAAA,MAChD,YAAY;AAAA,IACd;AAAA,IACA,WAAW;AAAA,MACT,OAAO;AAAA,MACP,iBAAiB;AAAA,IACnB;AAAA;AAAA,IAEA,GAAI,MAAM,aAAa;AAAA,MACrB,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,kBAAkB,OAAO;AAAA,IACvB,GAAG,WAAW,OAAOA,KAAI;AAAA,IACzB,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,gBAAgB,MACd,aACI,EAAE,SAAS,OAAO,IAClB;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,IACP,cAAc;AAAA,IAEd,kDAAkD;AAAA,MAChD,YAAY;AAAA,IACd;AAAA,IACA,WAAW;AAAA,MACT,iBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EACN,kBAAkB,eAAa;AAAA,IAC7B,GAAG;AAAA,IACH,SAAS;AAAA,IACT,OAAO;AAAA,EACT;AACF;;;ACxSA;AAAA,EAUE;AAAA,OACK;AAmCL,SAEI,OAAAC,QAFJ,QAAAC,cAAA;AA1BF,IAAM;AAAA,EACJ;AAAA,EACA;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI;AAEG,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;AAEO,IAAM,YAAY,CACvB,OACA,kBAEA,gBAAAD,OAAC,UAAQ,GAAG,OACT;AAAA,QAAM,cACL,gBAAAD,OAAC,QAAK,MAAM,WAAW,UAAU,qBAAqB,aAAa,GAAG;AAAA,EAEvE,MAAM;AAAA,GACT;AAGK,IAAM,eAAe,CAC1B,OACA,YAEA,gBAAAA,OAAC,UAAQ,GAAG,OACV,0BAAAA,OAAC,WAAS,GAAG,OAAO,GACtB;AAGK,IAAM,oBAAoB,CAC/B,OACA,IACA,YAIA,gBAAAA,OAAC,eAAa,GAAG,OACf,0BAAAA,OAAC,SAAI,IAAQ,WAAW,eAAO,oBAAoB,GAChD,oBAAU,gBAAAA,OAAC,WAAS,GAAG,OAAO,IAAK,MAAM,UAC5C,GACF;AAGK,IAAM,sBAAsB,CACjC,UACG,gBAAAA,OAAC,oBAAkB,GAAG,OAAO,yBAAW;AAEtC,IAAM,oBAAoB,CAC/B,OACAG,UAEA,gBAAAH,OAAC,kBAAgB,GAAG,OAClB,0BAAAA,OAAC,QAAK,MAAM,gBAAgB,UAAU,qBAAqBG,KAAI,GAAG,GACpE;AAGK,IAAM,sBAAsB,CACjC,UAEA,gBAAAH,OAAC,oBAAkB,GAAG,OACpB,0BAAAA,OAAC,QAAK,MAAM,gBAAgB,UAAS,SAAQ,GAC/C;AAGK,IAAM,uBAAuB,CAClC,OACAG,UACG;AACH,QAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAC/B,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW,GAAG,WAAW,eAAO,oBAAoB,CAAC;AAAA,MAErD,0BAAAA,OAAC,QAAK,MAAM,iBAAiB,UAAU,qBAAqBG,KAAI,GAAG;AAAA;AAAA,EACrE;AAEJ;AAEO,IAAM,WAAW,CACtB,OACA,aACA,oBAEA,gBAAAH;AAAA,EAACE;AAAA,EAAA;AAAA,IACE,GAAG;AAAA,IACJ,gBAAc;AAAA,IACd,oBAAkB;AAAA;AACpB;AAGK,IAAM,aAAa,CACxB,OACA,eACA,UACA,MACA,eACG;AACH,QAAM,EAAE,WAAW,GAAG,KAAK,IAAI;AAE/B,SACE,gBAAAF,OAAC,SAAI,eAAa,aAAa,aAAa,aAAa,QACvD,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA,eAAO;AAAA,QACP,KAAK,cAAc,eAAO,mBAAmB;AAAA,QAC7C,YAAY,eAAO,mBAAmB;AAAA,MACxC;AAAA,MAEC;AAAA,gBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,UAAU,qBAAqB,aAAa;AAAA,YAC5C,WAAW;AAAA,cACT,cAAY,+BAA+B;AAAA,cAC3C,eAAO,SAAS,aAAa,EAAE;AAAA,YACjC;AAAA;AAAA,QACF;AAAA,QAED,MAAM;AAAA;AAAA;AAAA,EACT,GACF;AAEJ;;;AHgEI,SAYI,OAAAI,QAZJ,QAAAC,cAAA;AA7HG,SAAS,OAA0D;AAAA,EACxE;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiC;AAC/B,QAAM,eAAeC,aAAW,YAAY;AAE5C,MAAI,CAAC,cAAc;AACjB,UAAM,IAAI,MAAM,4CAA4C;AAAA,EAC9D;AAEA,QAAM,eAAe,8CAAoB,6CAAc;AAEvD,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,gBAAgB,CAAC,UAAU,GAAG,QAAQ,iBAAiB;AAC7D,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,UAAU,CAAC,CAAC;AAClB,QAAM,sBAAsB,CAAC,EAAE,YAAY;AAE3C,QAAM,QAAQ,sBAAsB,UAAU,KAAK;AACnD,QAAM,iBAAiB,sBAAsB,UAAU,cAAc;AAErE,QAAM,aAAa;AAAA,IACjB;AAAA,IACA,kBAAkB,YAAY;AAAA,EAChC;AAEA,QAAM,mBAIF;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,CAAC,CAAC;AAAA,IACd;AAAA,IACA,aAAa,cAAc,cAAc;AAAA,IACzC,mBAAmB,oBACf,oBACA,UACE,QACA;AAAA,IACN;AAAA,IACA,SAAS;AAAA,IACT,MAAM;AAAA,IACN,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,cAAc,CAAC,QAAQ,eAAe;AACpC,YAAM,EAAE,OAAAC,OAAM,IAAI;AAClB,aAAO,aAAaA,QAAO,UAAU,KAAK,eAAe;AAAA,IAC3D;AAAA,IACA,YAAY;AAAA,MACV,QAAQ,sBACJ,WAAS,aAAa,OAAO,mBAAmB,IAChD,WAAS,UAAU,OAAO,aAAa;AAAA,MAC3C,kBAAkB;AAAA,MAClB,OAAO,WACL;AAAA,QACE;AAAA,UACE,GAAG;AAAA,UACH;AAAA,UACA,iBAAiB;AAAA,QACnB;AAAA,QACA;AAAA,QACA,8BAA8B;AAAA,UAC5B;AAAA,UACA,MAAM,QAAQ;AAAA,UACd,eAAe,iBAAiB;AAAA,QAClC,CAAC;AAAA,MACH;AAAA,MACF,aAAa,WACX,kBAAkB,OAAO,eAAe,wBAAwB;AAAA,MAClE,gBAAgB,WAAS,kBAAkB,OAAO,aAAa;AAAA,MAC/D,mBAAmB,WAAS,qBAAqB,OAAO,aAAa;AAAA,MACrE,kBAAkB;AAAA,MAClB,SAAS,WACP,WAAW,OAAO,eAAe,UAAU,MAAM,UAAU;AAAA,IAC/D;AAAA,IACA,gBAAgB,kBAAkB,OAAO;AAAA,IACzC;AAAA,IACA,WAAW,uBAAuB,UAAU,UAAU,SAAS;AAAA,IAC/D,iBAAiB,WACb,QACA,kBACE,kBACA;AAAA,IACN,GAAG;AAAA,EACL;AAEA,SACE,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAS;AAAA,MACT,QAAO;AAAA,MACP,WAAW;AAAA,QACT;AAAA,QACA,cAAc,eAAO,qBAAqB;AAAA,QAC1C,YAAY,eAAO,qBAAqB;AAAA,MAC1C;AAAA,MACA;AAAA,MAEC;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,SAAS;AAAA,YACT;AAAA,YACA,WAAW,cAAY;AAAA,YACvB;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QAEF,gBAAAA,OAAC,eAAa,GAAG,kBAAkB,KAAU;AAAA,QAC5C,mBAAmB,KAAK,OAAO,cAAc,cAAc;AAAA;AAAA;AAAA,EAC9D;AAEJ;AAEA,OAAO,cAAc;;;AI3PrB,SAAS,SAAAK,eAAa;;;ACAtB;AAAA,EAAC,QAAAC;AAAA,EAO6B,oBAAAC;AAAA,EA6C7B,kBAAAC;AAAA,EAIA,iBAAAC;AAAA,EAIA,kBAAAC;AAAA,EAIA,oBAAAC;AAAA,EAQA,MAAAC;AAAA;;;ADHO,gBAAAC,QASF,QAAAC,cATE;AAvCD,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAyB;AACvB,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,SAAS,CAAC,CAAC;AACjB,QAAM,WAAW,CAAC,CAAC;AAEnB,QAAM,QAAQ,sBAAsB,UAAU,KAAK;AACnD,QAAM,iBAAiB,sBAAsB,UAAU,cAAc;AAErE,QAAM,sBAAsB,CAAC,EAAE,YAAY;AAE3C,QAAM,aAAa;AAAA,IACjB;AAAA,IACA,kBAAkB,YAAY;AAAA,EAChC;AAEA,SACE,gBAAAD,OAAC,SAAI,WAAsB,OACxB;AAAA,gBACC,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,cAAY;AAAA,QACvB,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IAEF,gBAAAC,OAAC,OAAI,UAAS,YAAW,OAAO,YAC9B;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,UACJ;AAAA,UACA,WAAW;AAAA,YACT,qBAAO;AAAA,YACP,YAAY,qBAAO,kBAAkB;AAAA,YACrC,cAAY;AAAA,YACZ,cAAY,UAAU,aAAa,EAAE;AAAA,YACrC,qBAAO,WAAW,aAAa,EAAE;AAAA,YACjC;AAAA,YACA;AAAA,YACA,yBAAiB,QAAQ,aAAa,EAAE;AAAA,YACxC,mBAAmB,cAAY,wBAAwB;AAAA,YACvD,YAAY,qBAAO,kBAAkB;AAAA,UACvC;AAAA,UACA,iBAAe;AAAA,UACf,gBAAc;AAAA,UACd,oBAAkB,8BAA8B;AAAA,YAC9C,SAAS,QAAQ;AAAA,YACjB,kBAAkB,iBAAiB;AAAA,YACnC;AAAA,UACF,CAAC;AAAA,UACD;AAAA,UACA,WAAW,uBAAuB,UAAU,UAAU,SAAS;AAAA,UAC/D,aAAa,yBAAyB,UAAU,WAAW;AAAA,UAC1D,GAAG;AAAA,UAEH;AAAA;AAAA,MACH;AAAA,MACC,CAAC,YACA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,UAAU,kBAAkB,WAAW,UAAU;AAAA,UACjD,WAAW,qBAAO;AAAA;AAAA,MACpB;AAAA,OAEJ;AAAA,IACC,mBAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,KAC9D;AAEJ;AAIO,IAAM,0BAA0B,CAAC;AAAA,EACtC,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,MACE,gBAAAA,OAAC,YAAO,OAAO,wBAAS,IAAI,UAAQ,MAAE,GAAG,MACtC,UACH;AAGF,wBAAwB,cAAc;;;AEnI/B,IAAM,sBAAsB,IAC9B,SAC6B,KAAK,IAAI,QAAM,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE;;;ATwHxD,gBAAAG,QAgEV,QAAAC,cAhEU;AAxDT,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,IACd,EAAE,OAAO,MAAM,OAAO,GAAG;AAAA,IACzB,EAAE,OAAO,MAAM,OAAO,GAAG;AAAA,IACzB,EAAE,OAAO,MAAM,OAAO,GAAG;AAAA,IACzB,EAAE,OAAO,QAAQ,OAAO,YAAY;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAuB;AACrB,QAAM,CAAC,YAAY,aAAa,IAAIC,WAAS,iBAAiB;AAC9D,QAAM,CAAC,cAAc,eAAe,IAAIA,WAAS,mBAAmB;AAEpE,QAAM,cAAc,KAAK,KAAK,cAAc,YAAY;AAExD,QAAM,QAAQ,oBAAoB,aAAa,UAAU;AAEzD,QAAM,eAAe,CACnB,OACA,SACG;AACH,YAAQ,cAAc,IAAI;AAC1B,QAAI,SAAS,UAAU;AACrB,eAAS,OAAO,IAAI;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,WAAoC;AAC9D,QAAI,WAAW,MAAM;AACnB,sBAAgB,OAAO,KAAK;AAAA,IAC9B;AAEA,QAAI,sBAAsB;AACxB,2BAAqB,MAAM;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,YACJ,MAAM,SAAS,IACX,MAAM,IAAI,CAAC,MAAM,MAAM;AACrB,UAAM,WAAW,SAAS;AAC1B,WACE,gBAAAF,OAAC,QAAgC,WAAW,mBAAO,YAChD,mBAAS,eAAe,OAAO,SAAS,WACvC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,SAAS,WAAW,YAAY;AAAA,QAChC,MAAK;AAAA,QACL,SAAS,WAAS;AAChB,uBAAa,OAAO,IAAI;AAAA,QAC1B;AAAA,QACA,cACE,WACI,8BAAwB,IAAI,MAC5B,kBAAe,IAAI;AAAA,QAGxB;AAAA;AAAA,IACH,IAEA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,WAAW,mBAAO,iBAAiB;AAAA;AAAA,IACrC,KApBK,mBAAmB,CAAC,EAsB7B;AAAA,EAEJ,CAAC,IACD;AAEN,QAAM,qBACJ,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,WAAS;AAChB,qBAAa,OAAO,aAAa,CAAC;AAAA,MACpC;AAAA,MACA,cAAW;AAAA;AAAA,EACb;AAGF,QAAM,iBACJ,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,MAAM;AAAA,MACN,SAAS,WAAS;AAChB,qBAAa,OAAO,aAAa,CAAC;AAAA,MACpC;AAAA,MACA,cAAW;AAAA;AAAA,EACb;AAGF,QAAM,gBAAgB,eAAe;AACrC,QAAM,eAAe,eAAe;AAEpC,QAAM,aAAa,iBACjB,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH;AAAA,MACA,cAAW;AAAA,MACX,SAAQ;AAAA,MACR,YAAW;AAAA,MACV,GAAI,CAAC,cACJ,CAAC,eAAe;AAAA,QACd,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACpD;AAAA,MAEF;AAAA,wBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,WAAW;AAAA,YACX,WAAW,mBAAO;AAAA,YAElB;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT,mBAAO;AAAA,oBACP,iBAAiB,mBAAO,oBAAoB;AAAA,kBAC9C;AAAA,kBACA,eAAa;AAAA,kBAEZ;AAAA;AAAA,cACH;AAAA,cACC;AAAA,cACD,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT,mBAAO;AAAA,oBACP,gBAAgB,mBAAO,oBAAoB;AAAA,kBAC7C;AAAA,kBACA,eAAa;AAAA,kBAEZ;AAAA;AAAA,cACH;AAAA;AAAA;AAAA,QACF;AAAA,QACC,CAAC,CAAC,yBACD,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,WAAW;AAAA,YACX,WAAW,mBAAO;AAAA,YAElB;AAAA,8BAAAD;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT,mBAAO;AAAA,oBACP,iBAAiB,mBAAO,oBAAoB;AAAA,kBAC9C;AAAA,kBACA,eAAa;AAAA,kBAEb,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,MAAK;AAAA,sBACL,MAAM;AAAA,sBACN,SAAS,WAAS;AAChB,qCAAa,OAAO,CAAC;AAAA,sBACvB;AAAA,sBACA,cAAW;AAAA;AAAA,kBACb;AAAA;AAAA,cACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT,mBAAO;AAAA,oBACP,iBAAiB,mBAAO,oBAAoB;AAAA,kBAC9C;AAAA,kBACA,eAAa;AAAA,kBAEZ;AAAA;AAAA,cACH;AAAA,cACA,gBAAAA,OAAC,QAAG,WAAW,mBAAO,YACpB,0BAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS,WAAS;AAChB,iCAAa,OAAO,UAAU;AAAA,kBAChC;AAAA,kBAEC;AAAA;AAAA,cACH,GACF;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT,mBAAO;AAAA,oBACP,gBAAgB,mBAAO,oBAAoB;AAAA,kBAC7C;AAAA,kBACA,eAAa;AAAA,kBAEZ;AAAA;AAAA,cACH;AAAA,cACA,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,WAAW;AAAA,oBACT,mBAAO;AAAA,oBACP,gBAAgB,mBAAO,oBAAoB;AAAA,kBAC7C;AAAA,kBACA,eAAa;AAAA,kBAEb,0BAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,MAAK;AAAA,sBACL,MAAM;AAAA,sBACN,SAAS,WAAS;AAChB,qCAAa,OAAO,WAAW;AAAA,sBACjC;AAAA,sBACA,cAAW;AAAA;AAAA,kBACb;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ,IACE;AAEJ,QAAM,sBACJ,eAAe,IAAI,IAAI,aAAa,eAAe,eAAe;AAEpE,QAAM,qBACJ,eAAe,cAAc,cAAc,aAAa;AAE1D,SAAO,CAAC,eAAe,CAAC,aACtB,aAEA,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,KAAI;AAAA,MACJ,gBAAe;AAAA,MACf,UAAS;AAAA,MACT,eAAe,qBAAqB,UAAU,qBAAqB;AAAA,MACnE,YAAY,qBAAqB,UAAU,qBAAqB;AAAA,MAC/D,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MAEnD;AAAA,wBAAAA,OAAC,SAAI,WAAW,mBAAO,YACpB;AAAA,wBACC,gBAAAD;AAAA,YAAC;AAAA;AAAA,cACC,SAAS;AAAA,cACT,cAAc;AAAA,cACd,OAAM;AAAA,cACN,cAAc;AAAA,gBACZ,OAAO,aAAa,SAAS;AAAA,gBAC7B,OAAO;AAAA,cACT;AAAA,cACA,aAAa;AAAA,cACb,UAAU;AAAA,cACV,eAAc;AAAA,cACd,cAAW;AAAA;AAAA,UACb;AAAA,UAED,eACC,gBAAAC,OAAC,aAAU;AAAA;AAAA,YACF;AAAA,YAAoB;AAAA,YAAE;AAAA,YAAmB;AAAA,YAAK;AAAA,aACvD;AAAA,WAEJ;AAAA,QACC;AAAA;AAAA;AAAA,EACH;AAEJ;AAEA,WAAW,cAAc;;;AU1UzB;AAAA,EAGE,aAAAE;AAAA,EACA,SAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;;;AC0PA,IAAM,YAAuB;AAAA,EAClC,IAAI,EAAE,MAAM,0FAA8B,IAAI,MAAM,UAAU,MAAM;AAAA,EACpE,IAAI,EAAE,MAAM,yBAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,0EAAwB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/D,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,QAAQ;AAAA,EACpD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,MAAM;AAAA,EACnD,IAAI,EAAE,MAAM,8DAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,MAAM;AAAA,EACnD,IAAI,EAAE,MAAM,gCAA0B,IAAI,MAAM,UAAU,MAAM;AAAA,EAChE,IAAI,EAAE,MAAM,kCAA6B,IAAI,MAAM,UAAU,OAAO;AAAA,EACpE,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,QAAQ;AAAA,EACnD,IAAI,EAAE,MAAM,0EAAwB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/D,IAAI,EAAE,MAAM,iEAAyB,IAAI,MAAM,UAAU,OAAO;AAAA,EAChE,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,QAAQ;AAAA,EACpD,IAAI,EAAE,MAAM,8DAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,uBAAoB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC1D,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,oBAAiB,IAAI,MAAM,UAAU,OAAO;AAAA,EACxD,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,QAAQ;AAAA,EACnD,IAAI,EAAE,MAAM,2CAAkB,IAAI,MAAM,UAAU,OAAO;AAAA,EACzD,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,MAAM;AAAA,EAChD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,+DAAuB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC9D,IAAI,EAAE,MAAM,gBAAgB,IAAI,MAAM,UAAU,OAAO;AAAA,EACvD,IAAI,EAAE,MAAM,sBAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,0DAAuB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC9D,IAAI,EAAE,MAAM,sBAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,KAAK;AAAA,EAC/C,IAAI,EAAE,MAAM,2BAA2B,IAAI,MAAM,UAAU,OAAO;AAAA,EAClE,IAAI,EAAE,MAAM,mCAAgC,IAAI,MAAM,UAAU,QAAQ;AAAA,EACxE,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,iBAAiB,IAAI,MAAM,UAAU,OAAO;AAAA,EACxD,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,MAAM;AAAA,EAC/C,IAAI,EAAE,MAAM,uBAAa,IAAI,MAAM,UAAU,MAAM;AAAA,EACnD,IAAI,EAAE,MAAM,sCAAmC,IAAI,MAAM,UAAU,MAAM;AAAA,EACzE,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,MAAM;AAAA,EAClD,IAAI,EAAE,MAAM,kFAA2B,IAAI,MAAM,UAAU,OAAO;AAAA,EAClE,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,+BAA4B,IAAI,MAAM,UAAU,OAAO;AAAA,EACnE,IAAI,EAAE,MAAM,cAAc,IAAI,MAAM,UAAU,OAAO;AAAA,EACrD,IAAI,EAAE,MAAM,2CAAmC,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1E,IAAI,EAAE,MAAM,sBAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,QAAQ,IAAI,MAAM,UAAU,MAAM;AAAA,EAC9C,IAAI,EAAE,MAAM,cAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,iDAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,sCAA8B,IAAI,MAAM,UAAU,OAAO;AAAA,EACrE,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,MAAM;AAAA,EACjD,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,QAAQ;AAAA,EACpD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,gDAAkB,IAAI,MAAM,UAAU,MAAM;AAAA,EACxD,IAAI,EAAE,MAAM,eAAe,IAAI,MAAM,UAAU,OAAO;AAAA,EACtD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,mBAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,4CAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,sCAAmC,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1E,IAAI,EAAE,MAAM,+BAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,QAAQ,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/C,IAAI,EAAE,MAAM,mBAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,sBAAsB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC5D,IAAI,EAAE,MAAM,uCAAoC,IAAI,MAAM,UAAU,OAAO;AAAA,EAC3E,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,0EAAwB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/D,IAAI,EAAE,MAAM,0BAA0B,IAAI,MAAM,UAAU,MAAM;AAAA,EAChE,IAAI,EAAE,MAAM,iBAAiB,IAAI,MAAM,UAAU,OAAO;AAAA,EACxD,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,OAAO;AAAA,EACpD,IAAI,EAAE,MAAM,iDAAmB,IAAI,MAAM,UAAU,MAAM;AAAA,EACzD,IAAI,EAAE,MAAM,mCAAgC,IAAI,MAAM,UAAU,OAAO;AAAA,EACvE,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,QAAQ;AAAA,EACnD,IAAI,EAAE,MAAM,cAAc,IAAI,MAAM,UAAU,OAAO;AAAA,EACrD,IAAI,EAAE,MAAM,QAAQ,IAAI,MAAM,UAAU,QAAQ;AAAA,EAChD,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,OAAO;AAAA,EACpD,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,MAAM;AAAA,EAClD,IAAI,EAAE,MAAM,sBAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,mCAAgC,IAAI,MAAM,UAAU,OAAO;AAAA,EACvE,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,2BAAiB,IAAI,MAAM,UAAU,OAAO;AAAA,EACxD,IAAI,EAAE,MAAM,4BAAyB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC/D,IAAI,EAAE,MAAM,sBAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,oCAAgB,IAAI,MAAM,UAAU,MAAM;AAAA,EACtD,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,MAAM;AAAA,EACnD,IAAI,EAAE,MAAM,2DAAmB,IAAI,MAAM,UAAU,MAAM;AAAA,EACzD,IAAI,EAAE,MAAM,iEAAoB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC3D,IAAI,EAAE,MAAM,oBAAiB,IAAI,MAAM,UAAU,OAAO;AAAA,EACxD,IAAI,EAAE,MAAM,eAAe,IAAI,MAAM,UAAU,MAAM;AAAA,EACrD,IAAI,EAAE,MAAM,6DAAqB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC5D,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,MAAM;AAAA,EAChD,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,KAAK;AAAA,EAChD,IAAI,EAAE,MAAM,wBAAc,IAAI,MAAM,UAAU,MAAM;AAAA,EACpD,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,MAAM;AAAA,EAChD,IAAI,EAAE,MAAM,mEAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,uEAA0B,IAAI,MAAM,UAAU,KAAK;AAAA,EAC/D,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,mEAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,8EAA4B,IAAI,MAAM,UAAU,OAAO;AAAA,EACnE,IAAI,EAAE,MAAM,6BAAc,IAAI,MAAM,UAAU,OAAO;AAAA,EACrD,IAAI,EAAE,MAAM,oBAAoB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC3D,IAAI,EAAE,MAAM,8DAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,4DAAoB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC3D,IAAI,EAAE,MAAM,iBAAiB,IAAI,MAAM,UAAU,OAAO;AAAA,EACxD,IAAI,EAAE,MAAM,qBAAqB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC5D,IAAI,EAAE,MAAM,cAAc,IAAI,MAAM,UAAU,OAAO;AAAA,EACrD,IAAI,EAAE,MAAM,wBAAc,IAAI,MAAM,UAAU,OAAO;AAAA,EACrD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,6BAA6B,IAAI,MAAM,UAAU,OAAO;AAAA,EACpE,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,MAAM;AAAA,EAClD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,QAAQ,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/C,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI,EAAE,MAAM,uCAAoC,IAAI,MAAM,UAAU,OAAO;AAAA,EAC3E,IAAI,EAAE,MAAM,cAAc,IAAI,MAAM,UAAU,OAAO;AAAA,EACrD,IAAI,EAAE,MAAM,yFAA6B,IAAI,MAAM,UAAU,OAAO;AAAA,EACpE,IAAI,EAAE,MAAM,qBAAqB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC5D,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,sBAAmB,IAAI,MAAM,UAAU,MAAM;AAAA,EACzD,IAAI,EAAE,MAAM,2BAA2B,IAAI,MAAM,UAAU,OAAO;AAAA,EAClE,IAAI,EAAE,MAAM,+BAA+B,IAAI,MAAM,UAAU,OAAO;AAAA,EACtE,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,mDAAqB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC5D,IAAI,EAAE,MAAM,0BAA0B,IAAI,MAAM,UAAU,OAAO;AAAA,EACjE,IAAI,EAAE,MAAM,cAAc,IAAI,MAAM,UAAU,QAAQ;AAAA,EACtD,IAAI,EAAE,MAAM,oEAAuB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC9D,IAAI,EAAE,MAAM,4BAAyB,IAAI,MAAM,UAAU,OAAO;AAAA,EAChE,IAAI,EAAE,MAAM,kDAAoB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC1D,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI,EAAE,MAAM,0CAAiB,IAAI,MAAM,UAAU,OAAO;AAAA,EACxD,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,MAAM;AAAA,EACnD,IAAI,EAAE,MAAM,wCAAqC,IAAI,MAAM,UAAU,OAAO;AAAA,EAC5E,IAAI,EAAE,MAAM,eAAe,IAAI,MAAM,UAAU,MAAM;AAAA,EACrD,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,OAAO;AAAA,EACpD,IAAI,EAAE,MAAM,iBAAiB,IAAI,MAAM,UAAU,OAAO;AAAA,EACxD,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,QAAQ,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/C,IAAI,EAAE,MAAM,kBAAkB,IAAI,MAAM,UAAU,OAAO;AAAA,EACzD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,MAAM;AAAA,EAC/C,IAAI,EAAE,MAAM,2DAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,2EAAyB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC/D,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,sBAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,kBAAe,IAAI,MAAM,UAAU,MAAM;AAAA,EACrD,IAAI,EAAE,MAAM,6BAA6B,IAAI,MAAM,UAAU,MAAM;AAAA,EACnE,IAAI,EAAE,MAAM,kBAAkB,IAAI,MAAM,UAAU,MAAM;AAAA,EACxD,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,eAAe,IAAI,MAAM,UAAU,KAAK;AAAA,EACpD,IAAI,EAAE,MAAM,gDAAkB,IAAI,MAAM,UAAU,OAAO;AAAA,EACzD,IAAI,EAAE,MAAM,cAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,wBAAqB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC3D,IAAI,EAAE,MAAM,mDAAqB,IAAI,MAAM,UAAU,KAAK;AAAA,EAC1D,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,6BAA6B,IAAI,MAAM,UAAU,OAAO;AAAA,EACpE,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,eAAe,IAAI,MAAM,UAAU,QAAQ;AAAA,EACvD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI,EAAE,MAAM,cAAc,IAAI,MAAM,UAAU,OAAO;AAAA,EACrD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,2BAAqB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC5D,IAAI,EAAE,MAAM,iDAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,4BAA4B,IAAI,MAAM,UAAU,OAAO;AAAA,EACnE,IAAI,EAAE,MAAM,gBAAgB,IAAI,MAAM,UAAU,OAAO;AAAA,EACvD,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,MAAM;AAAA,EACnD,IAAI,EAAE,MAAM,gBAAgB,IAAI,MAAM,UAAU,QAAQ;AAAA,EACxD,IAAI,EAAE,MAAM,wBAAwB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/D,IAAI,EAAE,MAAM,wBAAwB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/D,IAAI,EAAE,MAAM,qCAAkC,IAAI,MAAM,UAAU,OAAO;AAAA,EACzE,IAAI,EAAE,MAAM,wBAAwB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/D,IAAI,EAAE,MAAM,gCAA6B,IAAI,MAAM,UAAU,MAAM;AAAA,EACnE,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,yGAAgC,IAAI,MAAM,UAAU,OAAO;AAAA,EACvE,IAAI,EAAE,MAAM,sBAAmB,IAAI,MAAM,UAAU,MAAM;AAAA,EACzD,IAAI,EAAE,MAAM,6EAA2B,IAAI,MAAM,UAAU,MAAM;AAAA,EACjE,IAAI,EAAE,MAAM,sDAAmB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC1D,IAAI,EAAE,MAAM,sBAAsB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC7D,IAAI,EAAE,MAAM,yBAAyB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC/D,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,MAAM;AAAA,EACjD,IAAI,EAAE,MAAM,oBAAoB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC1D,IAAI,EAAE,MAAM,4DAAoB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC3D,IAAI,EAAE,MAAM,yBAAe,IAAI,MAAM,UAAU,OAAO;AAAA,EACtD,IAAI,EAAE,MAAM,qFAA8B,IAAI,MAAM,UAAU,OAAO;AAAA,EACrE,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,iCAAkB,IAAI,MAAM,UAAU,MAAM;AAAA,EACxD,IAAI,EAAE,MAAM,8BAA2B,IAAI,MAAM,UAAU,OAAO;AAAA,EAClE,IAAI,EAAE,MAAM,QAAQ,IAAI,MAAM,UAAU,OAAO;AAAA,EAC/C,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,SAAS,IAAI,MAAM,UAAU,OAAO;AAAA,EAChD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,wDAAqB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC5D,IAAI,EAAE,MAAM,uBAAoB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC1D,IAAI,EAAE,MAAM,gBAAgB,IAAI,MAAM,UAAU,OAAO;AAAA,EACvD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,wDAAqB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC5D,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,kCAAkC,IAAI,MAAM,UAAU,MAAM;AAAA,EACxE,IAAI,EAAE,MAAM,uBAAuB,IAAI,MAAM,UAAU,KAAK;AAAA,EAC5D,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,6EAA2B,IAAI,MAAM,UAAU,OAAO;AAAA,EAClE,IAAI,EAAE,MAAM,WAAW,IAAI,MAAM,UAAU,OAAO;AAAA,EAClD,IAAI,EAAE,MAAM,aAAa,IAAI,MAAM,UAAU,MAAM;AAAA,EACnD,IAAI,EAAE,MAAM,2BAAsB,IAAI,MAAM,UAAU,MAAM;AAAA,EAC5D,IAAI,EAAE,MAAM,gCAAgC,IAAI,MAAM,UAAU,OAAO;AAAA,EACvE,IAAI;AAAA,IACF,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,EACZ;AAAA,EACA,IAAI,EAAE,MAAM,4DAAoB,IAAI,MAAM,UAAU,OAAO;AAAA,EAC3D,IAAI,EAAE,MAAM,UAAU,IAAI,MAAM,UAAU,OAAO;AAAA,EACjD,IAAI,EAAE,MAAM,YAAY,IAAI,MAAM,UAAU,OAAO;AAAA,EACnD,IAAI,EAAE,MAAM,YAAS,IAAI,MAAM,UAAU,OAAO;AAClD;;;AChoBA;AAAA,EAAC,oBAAAC;AAAA,EACE,OAAAC;AAAA,EASA,QAAAC;AAAA,EAKF,qCAAAC;AAAA,EAcA,qCAAAC;AAAA,EAcA,qCAAAC;AAAA,EAcA,qCAAAC;AAAA,EAcA,qCAAAC;AAAA,EAoBA,gBAAAC;AAAA;;;AF2KO,gBAAAC,QAiDA,QAAAC,cAjDA;AA9NR,IAAM,uBAAuC;AAAA,EAC3C,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACZ;AAEA,IAAM,4BACJ,qBAAqB,IAAI,aAAW;AAClC,SAAO;AAAA,IACL,OAAO,GAAG,QAAQ,IAAI,IAAI,QAAQ,QAAQ;AAAA,IAC1C,aAAa,QAAQ;AAAA,EACvB;AACF,CAAC;AAEH,IAAM,uBAAuD,OAAO;AAAA,EAClE;AACF,EACG,KAAK,CAAC,GAAG,MAAM;AACd,MAAI,EAAE,OAAO,EAAE,MAAM;AACnB,WAAO;AAAA,EACT;AACA,MAAI,EAAE,OAAO,EAAE,MAAM;AACnB,WAAO;AAAA,EACT;AACA,SAAO;AACT,CAAC,EACA,IAAI,cAAY;AAAA,EACf,aAAa,QAAQ;AAAA,EACrB,OAAO,GAAG,QAAQ,IAAI,IAAI,QAAQ,QAAQ;AAC5C,EAAE,EACD;AAAA,EACC,aACE,CAAC,0BAA0B;AAAA,IACzB,cAAY,SAAS,gBAAgB,QAAQ;AAAA,EAC/C;AACJ;AAEK,IAAM,iBAAiD;AAAA,EAC5D,GAAG;AAAA,EACH,GAAG;AACL;AAsDO,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb;AAAA,EACA,GAAG;AACL,MAAuB;AA5JvB;AA6JE,QAAM,cAAcC,QAAM;AAC1B,QAAM,YAAW,WAAM,OAAN,YAAY;AAC7B,QAAM,eAAe,GAAG,QAAQ;AAChC,QAAM,gBAAgB,GAAG,QAAQ;AACjC,QAAM,WAAW,GAAG,QAAQ;AAE5B,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,SAAS,CAAC,CAAC;AACjB,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,aAAa,mBAAmB;AAEtC,QAAM,QAAQ,sBAAsB,cAAc,KAAK;AACvD,QAAM,iBAAiB,sBAAsB,cAAc,cAAc;AAEzE,QAAM,CAAC,aAAa,cAAc,IAAIC,WAAS,EAAE;AACjD,QAAM,CAAC,yBAAyB,0BAA0B,IAAIA,WAAS,EAAE;AACzE,QAAM,CAAC,eAAe,gBAAgB,IAAIA;AAAA,IACxC,sCAAgB;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,IACf;AAAA,EACF;AAEA,QAAM,eAAe,UAAU;AAE/B,QAAM,CAAC,kBAAkB,mBAAmB,IAAIA,WAAS,CAAC;AAE1D,QAAM,iBAAiBC,SAAwB,IAAI;AAEnD,EAAAC,iBAAgB,MAAM;AACpB,QAAI,eAAe,SAAS;AAC1B,0BAAoB,eAAe,QAAQ,WAAW;AAAA,IACxD;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,yBACJ,mBACI,gCAAgC,gBAAgB,QAChD;AAEN,QAAM,oBAAoBD,SAA0B,IAAI;AAExD,QAAM,oBAAoB,eAAe,WAAW,iBAAiB;AAErE,QAAM,iBAAiB,eAAe,QAAQ;AAE9C,EAAAE,YAAU,MAAM;AACd,UAAM,WAAW,kBAAkB;AACnC,QAAI,YAAY,SAAS,OAAO;AAC9B,YAAM,EAAE,SAAS,cAAc,IAAI;AACnC,YAAM,UAAU,QAAQ,aAAa,EAAE;AACvC,iCAA2B,OAAO;AAClC,qBAAe,eAAe,OAAO,CAAC;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,iDAAgB,WAAW,CAAC;AAEhC,QAAM,0BAA0B,CAAC,MAAsC;AArNzE,QAAAC;AAsNI,UAAM,WAAW;AAAA,MACf,aAAa,EAAE,OAAO;AAAA,MACtB,cAAaA,MAAA,iDAAgB,gBAAhB,OAAAA,MAA+B;AAAA,IAC9C;AAEA,UAAM,EAAE,SAAS,cAAc,IAAI,EAAE;AACrC,UAAM,UAAU,QAAQ,aAAa,EAAE;AACvC,mBAAe,eAAe,OAAO,CAAC;AAEtC,QAAI,gBAAgB,UAAU;AAC5B,eAAS,QAAQ;AAAA,IACnB,OAAO;AACL,uBAAiB,QAAQ;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,0BAA0B,CAAC,MAAqC;AAtOxE,QAAAA;AAuOI,UAAM,WAAW;AAAA,MACf,cAAaA,MAAA,iDAAgB,gBAAhB,OAAAA,MAA+B;AAAA,MAC5C,aAAa,EAAE,OAAO;AAAA,IACxB;AAEA,QAAI,gBAAgB,UAAU;AAC5B,eAAS,QAAQ;AAAA,IACnB,OAAO;AACL,uBAAiB,QAAQ;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,iBAAiB;AAAA,IACjB,UAAU,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,EACF;AAGA,QAAM,sBAAsB,CAAC,EAAE,YAAY;AAE3C,QAAM,KAAK,MAAM;AAEjB,QAAM,eACJ,kBAAkB,YAAY;AAEhC,SACE,gBAAAN,OAAC,SAAI,WAAW,GAAG,WAAW,cAAY,SAAS,GAAG,OACnD;AAAA,gBACC,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT;AAAA,QACA,WAAW,cAAY;AAAA,QACvB;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IAEF,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,eAAe,qBAAqB,UAAU,IAAI,KAAK;AAAA,QACvD,WAAW;AAAA,UACT,mBAAO,kBAAkB;AAAA,UACzB,CAAC,CAAC,MAAM,mBAAO,kCAAkC,EAAE,EAAE;AAAA,QACvD;AAAA,QACA,OAAO,cAAc,OAAO,YAAY;AAAA,QACxC,MAAK;AAAA,QACL,cAAY;AAAA,QAEZ;AAAA,0BAAAD,OAAC,WAAM,WAAW,mBAAW,iBAAiB,GAAG,SAAS,UACvD,uBACH;AAAA,UACA,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA,kBAAkB,WAAW,SAAS;AAAA,cACxC;AAAA,cACC,GAAG;AAAA,cACJ,KAAK;AAAA,cACL,IAAI;AAAA,cACJ,WAAW,GAAG,mBAAO,MAAM;AAAA,cAC3B,UAAU;AAAA,cACV,cAAc,6CAAc;AAAA,cAC5B,QAAO,iDAAgB,gBAAe;AAAA,cACtC,OAAO;AAAA,cACP,MAAM,GAAG,IAAI;AAAA,cACb,oBAAkB,8BAA8B;AAAA,gBAC9C,SAAS,QAAQ;AAAA,gBACjB;AAAA,cACF,CAAC;AAAA,cAEA,yBAAe,IAAI,CAAC,MAAM,UACzB,gBAAAA,OAAC,YAAO,OAAO,KAAK,aACjB,eAAK,SAD8B,KAEtC,CACD;AAAA;AAAA,UACH;AAAA,UACA,gBAAAC,OAAC,OAAI,OAAM,QAAO,WAAW,cAAY,aAAa,GACpD;AAAA,4BAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,WAAW;AAAA,kBACT,yBAAiB,QAAQ,aAAa,EAAE;AAAA,kBACxC,cAAY,+BAA+B;AAAA,kBAC3C,mBAAO,cAAc;AAAA,gBACvB;AAAA,gBACA,KAAK;AAAA,gBAEJ;AAAA;AAAA,YACH;AAAA,YAEA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,gBACJ;AAAA,gBACA,MAAK;AAAA,gBACJ,GAAG;AAAA,gBACJ,IAAI;AAAA,gBACJ,QAAO,iDAAgB,gBAAe;AAAA,gBACtC,cAAc,6CAAc;AAAA,gBAC5B,MAAM,GAAG,IAAI;AAAA,gBACb,UAAU;AAAA,gBACV,OAAM;AAAA,gBACN,OAAO;AAAA,kBACL,oBAAoB;AAAA,gBACtB;AAAA,gBACA,WAAW,mBAAO;AAAA,gBAClB;AAAA,gBACA,gBAAc,kBAAkB,OAAO;AAAA,gBACvC,oBAAkB,8BAA8B;AAAA,kBAC9C,SAAS,QAAQ;AAAA,kBACjB,kBAAkB,iBAAiB;AAAA,kBACnC;AAAA,gBACF,CAAC;AAAA;AAAA,YACH;AAAA,aACF;AAAA;AAAA;AAAA,IACF;AAAA,IACC,cACC,mBAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,KAC/D;AAEJ;AAEA,WAAW,cAAc;AAEzB,IAAM,iBAAiB,CAAC,MAAmB;AApW3C;AAqWE,iBAAE,UAAU,EAAE,QAAQ,GAAG,GAAG,EAAE,MAAM,MAApC,YAAyC;AAAA;;;AGrW3C;AAAA,EAGE,cAAAQ;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,OACK;AACP,SAAS,gBAAAC,qBAAoB;;;ACP7B;AAAA,EAAC,WAAAC;AAAA,EASA,gCAAAC;AAAA,EAIA,QAAAC;AAAA,EAIA,gBAAAC;AAAA;;;ACjBD;AAAA,EAGE,iBAAAC;AAAA,EACA,cAAAC;AAAA,OACK;AAgBA,IAAM,iBAAiBD,gBAA2C,CAAC,CAAC;AAEpE,IAAM,oBAAoB,MAAMC,aAAW,cAAc;;;AFiK5D,SAgCQ,OAAAC,QAhCR,QAAAC,cAAA;AAxGG,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY,CAAC;AAAA,EACb,oBAAoB;AAAA,EACpB;AAAA,EACA,YAAY,CAAC;AAAA,EACb;AAAA,EACA,QAAQ;AAAA,EACR,SAAS;AAAA,EACT;AAAA,EACA,GAAG;AACL,MAAoB;AAClB,QAAM,EAAE,MAAM,QAAQ,eAAe,IAAI,iBAAiB,MAAM;AAAA,IAC9D;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,EAAE,WAAW,UAAU,WAAW,UAAU,QAAQ,MAAM,IAAI;AAEpE,QAAM,UAAU,kBAAkB;AAClC,QAAM,eAAeC,aAAW,YAAY;AAC5C,QAAM,eAAe,wCAAiB,6CAAc;AAEpD,QAAM;AAAA,IACJ,cAAc;AAAA,IACd;AAAA,IACA,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ,IAAI;AAEJ,QAAM,aAAa,CAAC,QAAQ,OAAO;AACnC,QAAM,cAAcC,QAAM;AAC1B,QAAM,kBAAkB,kBAAM,GAAG,WAAW;AAE5C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,aACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IACA;AAAA,IACE;AAAA,KACA,uCAAW,YAAW,UAAU;AAAA,IAChC;AAAA,IACA,KAAK;AAAA,IACL,eAAe;AAAA,IACf;AAAA,EACF;AAEJ,MAAI,CAAC,YAAY;AACf,SAAK,aAAa,YAAY,IAAI;AAAA,EACpC;AAEA,QAAM,oBAAoB,mBAAmB,QAAQ,GAAG;AAExD,QAAM,aAAa;AAAA,IACjB,UAAU,qBAAqB;AAAA,IAC/B,MAAM;AACJ;AACA;AAAA,IACF;AAAA,IACA,YAAY;AAAA,EACd;AAEA,QAAM,WAAW,eAAe,KAAK,YAAY,WAAW;AAE5D,EAAAC,YAAU,MAAM;AACd,uBAAmB,gBAAgB,EAAE,WAAW,OAAO,CAAC;AAAA,EAC1D,GAAG,CAAC,WAAW,MAAM,CAAC;AAGtB,oBAAkB,CAAC,WAAW,SAAS,QAAQ,GAAG,MAAM;AACtD,QAAI,UAAU,CAAC,WAAY;AAAA,EAC7B,CAAC;AAED,eAAa,UAAU,MAAM;AAC3B,QAAI,UAAU,CAAC,WAAY;AAAA,EAC7B,CAAC;AAED,QAAM,WAAW,CAAC,CAAC;AAEnB,QAAM,SAAS,qBAAqB,SAAS,SAAS;AAEtD,QAAM,UACJ,gBAAAH;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,gBAAO;AAAA,UACP,mBAAW,uBAAuB;AAAA,UAClC,mBAAW,0BAA0B,MAAM,EAAE;AAAA,UAC7C,cAAY;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,KAAK;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,GAAG,UAAU;AAAA,QACb,GAAG;AAAA,MACL;AAAA,MACA,MAAK;AAAA,MACL,WAAW;AAAA,MACX,QAAO;AAAA,MAEN;AAAA,kBACC,gBAAAD,OAAC,SAAI,WAAW,gBAAO,QACpB,iBAAO,WAAW,WACjB,gBAAAA,OAAC,WAAQ,OAAO,GAAG,gBAAe,iBAC/B,kBACH,IAEA,QAEJ;AAAA,QAEF,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,WACE,CAAC,YAAY,kBACT,gBAAO,8BAA8B,IACrC;AAAA,YAGL;AAAA;AAAA,QACH;AAAA,QACC,mBACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS;AAAA,YACT,cAAW;AAAA,YACX,WAAW,gBAAO,cAAc;AAAA;AAAA,QAClC;AAAA;AAAA;AAAA,EAEJ;AAGF,SAAO,UAAU,oBACb,UAAU,eACRK,cAAa,SAAS,YAAY,IAClC,UACF;AACN;AAEA,QAAQ,cAAc;;;AG7PtB;AAAA,EAIE,YAAYC;AAAA,EAGZ,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AA2GH,gBAAAC,cAAA;AA/EG,IAAM,eAAe,CAAC;AAAA,EAC3B,QAAQ;AAAA,EACR,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AACF,MAAyB;AAhDzB;AAiDE,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,WAAS,eAAe;AAEpE,QAAM,OAAO,kCAAc;AAC3B,QAAM,UAAU,wCAAiB;AAEjC,QAAM,cAAcC,QAAM;AAC1B,QAAM,kBAAkB,gCAAa,GAAG,WAAW;AACnD,QAAM,CAAC,cAAc,eAAe,IAAID,WAAkC;AAC1E,QAAM,EAAE,MAAM,QAAQ,eAAe,IAAI,iBAAiB,MAAM,YAAY;AAE5E,QAAM,cAAc,MAAM;AACxB,YAAQ,KAAK;AACb,eAAW,QAAQ;AAAA,EACrB;AAEA,QAAM,aAAa,MAAM;AACvB,YAAQ,IAAI;AACZ,cAAU,OAAO;AAAA,EACnB;AAEA,QAAM,eAAe,MAAM;AACzB,QAAI,MAAM;AACR,kBAAY;AAAA,IACd,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,YAAYE,SAAoB,IAAI;AAC1C,QAAM,YAAY,KAAK;AACvB,QAAM,oBAAoB,eAAe,WAAW,SAAS;AAE7D,QAAM,aAAaA,SAAuB,IAAI;AAC9C,QAAM,cAAc,KAAK;AACzB,QAAM,qBAAqB,eAAe,YAAY,WAAW;AAEjE,eAAa,CAAC,OAAO,QAAQ,GAAG,MAAM;AArFxC,QAAAC;AAsFI,QAAI,MAAM;AACR,kBAAY;AACZ,OAAAA,MAAA,UAAU,YAAV,gBAAAA,IAAmB;AAAA,IACrB;AAAA,EACF,CAAC;AAED,QAAM,WAAsC,CAAC,WAAW,OAAQ;AAChE,MAAI,UAAU,QAAS,UAAS,KAAK,UAAU,OAAO;AAEtD,oBAAkB,UAAU,MAAM;AAChC,QAAI,KAAM,aAAY;AAAA,EACxB,CAAC;AAED,QAAM,gBAAgB,CAAC,MAAuB,MAAM;AAEpD,QAAMC,YAAWC,eAAc,IAAI,UAAU,CAAC,OAAO,eAAe;AAClE,WACEC,gBAEE,KAAK,MACN,cAAc,UAAU,IACrBC,cAAa,OAAO;AAAA,MAClB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,KAAK;AAAA,IACP,CAAC,IACD;AAAA,EAER,CAAC;AAED,SACE,gBAAAR;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,cAAc,eAAe;AAAA,QAC7B;AAAA,QACA,aAAa;AAAA,QACb,WAAW;AAAA,QACX,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,WAAU,eAAU,YAAV,YAAqB;AAAA,MACjC;AAAA,MAEC,UAAAK;AAAA;AAAA,EACH;AAEJ;AAEA,aAAa,cAAc;;;ACvI3B;AAAA,EACE,YAAAI;AAAA,EAIA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,OACK;;;ACVP,SAAS,iBAAAC,iBAAe,cAAAC,oBAAkB;AAUnC,IAAM,yBAAyBD;AAAA,EACpC;AAAA,IACE,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AACF;AAEO,IAAM,4BAA4B,MACvCC,aAAW,sBAAsB;;;AClBnC;AAAA,EAAC,MAAAC;AAAA,EAKA,aAAAC;AAAA,EAKA,qBAAAC;AAAA,EAYA,kBAAAC;AAAA,EAYA,eAAAC;AAAA,EAiBY,kCAAAC;AAAA,EAMA,oCAAAC;AAAA,EAMA,iCAAAC;AAAA,EACA,mCAAAC;AAAA,EAMA,+BAAAC;AAAA,EACA,gCAAAC;AAAA,EAKA,iCAAAC;AAAA,EACA,kCAAAC;AAAA,EAUZ,YAAAC;AAAA,EAIA,eAAAC;AAAA,EAgBA,yBAAAC;AAAA,EAoBA,aAAAC;AAAA,EAMA,uBAAAC;AAAA;;;ACrID,SAAqC,WAAAC,gBAAe;AAwHvC,SAWT,YAAAC,WAXS,OAAAC,QAyBP,QAAAC,cAzBO;AAhGb,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;AASA,IAAM,cAA8C;AAAA,EAClD,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,oBAAoB;AACtB;AAkCA,IAAM,8BAA8B,CAAC,UAAkB,GAAG,QAAQ,CAAC;AAEnE,IAAM,6BAA6B,CAAC,cAClC,KAAK,YAAY,WAAW,aAAa;AAEpC,IAAM,sBAAsB,CAAC,UAAoC;AACtE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,EAAE,YAAY,kBAAkB,UAAU,IAC9C,0BAA0B;AAC5B,QAAM,SAAS,eAAe;AAC9B,QAAM,YAAY,YAAY,QAAQ,WAAW,QAAQ;AAEzD,QAAM,cAAc,MAAM;AACxB,QAAI,CAAC,UAAU;AACb,iBAAW,QAAQ,KAAK;AACxB,0BAAoB,iBAAiB,KAAK;AAAA,IAC5C;AAAA,EACF;AAEA,QAAM,oBAAoBC,SAAQ,MAAM;AACtC,QAAI,WAAW;AACb,aAAO,gBAAAF,OAAC,QAAK,MAAM,WAAW,UAAS,SAAQ;AAAA,IACjD;AAEA,QAAI,SAAS,QAAW;AACtB,aAAO,gBAAAA,OAAC,QAAK,MAAY,UAAS,SAAQ;AAAA,IAC5C;AAEA,WAAO,QAAQ;AAAA,EACjB,GAAG,CAAC,WAAW,MAAM,KAAK,CAAC;AAE3B,QAAM,cACJ,gBAAAC,OAAAF,WAAA,EACE;AAAA,oBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,gBAAe;AAAA,QACf,eAAW;AAAA,QACX,WAAW;AAAA,UACT,wBAAO,aAAa;AAAA,UACpB,wBAAO,gBAAgB,YAAY,SAAS,CAAC,EAAE;AAAA,UAC/C,yBAAiB,YAAY;AAAA,QAC/B;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,IACA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT,wBAAO,WAAW;AAAA,UAClB,wBAAO,cAAc,YAAY,SAAS,CAAC,EAAE;AAAA,UAC7C,yBAAiB,aAAa;AAAA,QAChC;AAAA,QAEA;AAAA,0BAAAD,OAAC,kBAAe,IAAG,QAChB,sCAA4B,KAAK,GACpC;AAAA,UACC;AAAA,UACD,gBAAAA,OAAC,kBAAe,IAAG,QAChB,qCAA2B,SAAS,GACvC;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAGF,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAG;AAAA,MACH,SAAS,cAAc,QAAQ,SAAS;AAAA,MACxC,gBAAc,SAAS,SAAS;AAAA,MAChC,WAAW,GAAG,wBAAO,WAAW,GAAG,wBAAO,cAAc,SAAS,EAAE,CAAC;AAAA,MAEnE,6BACC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,YACF;AAAA,YACA,GAAG,WAAW,wBAAO,aAAa,GAAG,SAAS;AAAA,YAC9C;AAAA,YACA;AAAA,UACF;AAAA,UACA,SAAS,MAAM,YAAY;AAAA,UAC3B;AAAA,UAEC;AAAA;AAAA,MACH,IAEA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,YACF;AAAA,YACA,GAAG,WAAW,GAAG,wBAAO,aAAa,GAAG,wBAAO,UAAU,CAAC,CAAC;AAAA,YAC3D;AAAA,YACA;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EAEJ;AAEJ;AAEA,oBAAoB,cAAc;;;AH7GxB,gBAAAG,cAAA;AA9CH,IAAM,mBAA6C,MAAM;AAC9D,QAAM,MAAM,CAAC;AAAA,IACX;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,YAAY,CAAC;AAAA,IACb,GAAG;AAAA,EACL,MAA4B;AAC1B,UAAM,CAAC,gBAAgB,aAAa,IAAIC,WAAS,UAAU;AAE3D,UAAM,eAAe,CAAC,SAAiB;AACrC,oBAAc,IAAI;AAClB,sBAAgB,aAAa,IAAI;AAAA,IACnC;AAEA,IAAAC,YAAU,MAAM;AACd,UAAI,eAAe,UAAa,cAAc,gBAAgB;AAC5D,sBAAc,UAAU;AAAA,MAC1B;AAAA,IACF,GAAG,CAAC,YAAY,cAAc,CAAC;AAE/B,UAAM,QAAQC,SAAQ,MAAM;AAC1B,YAAM,gBAAgB,sBAAsB,QAAQ;AACpD,YAAM,iBAAiB,mCAAmC,aAAa;AACvE,aAAO;AAAA,IACT,GAAG,CAAC,QAAQ,CAAC;AAEb,UAAM,QAAQ,cAAc;AAE5B,UAAM,EAAE,cAAc,UAAU,IAAI;AAEpC,WACE,gBAAAH;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,kBAAkB;AAAA,UAClB;AAAA,QACF;AAAA,QAEA,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,cAAY,gCAAa;AAAA,YACxB,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,YAEnD,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,SAAQ;AAAA,gBACR,eAAe;AAAA,gBACf,YAAW;AAAA,gBACX,KAAK,QAAQ,SAAS;AAAA,gBACtB,WAAW,QAAQ,SAAS;AAAA,gBAC5B,QAAO;AAAA,gBACP,SAAS,QAAQ,UAAU;AAAA,gBAC3B,WAAW,GAAG,wBAAO,MAAM,SAAS;AAAA,gBAEnC;AAAA;AAAA,YACH;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,EAAC,IAAiC,OAAO;AACzC,EAAC,IAAiC,cAAc;AAChD,SAAO;AACT,GAAG;AAEH,SAAS,sBAA6C,UAAqB;AACzE,SAAOI,UAAS,QAAQ,QAAQ,EAAE,OAAOC,eAAsB;AACjE;AAEA,SAAS,mCACP,UACA;AACA,SAAOD,UAAS;AAAA,IAAI;AAAA,IAAU,CAAC,MAAM,UACnCE,cAAa,MAAM;AAAA,MACjB,GAAG,KAAK;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AI9HA,SAAqC,SAAAC,eAAa;;;ACAlD;AAAA,EAAC,UAAAC;AAAA,EAMA,MAAAC;AAAA,EAUA,cAAAC;AAAA,EAIA,eAAAC;AAAA,EAIA,uBAAAC;AAAA,EACY,eAAAC;AAAA;;;ADiDT,SACc,OAAAC,QADd,QAAAC,cAAA;AApCG,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAAC,QAAO;AAAA,EACP,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAwB;AACtB,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,SAAS,CAAC,CAAC;AACjB,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,cAAc,CAAC,CAAC,OAAO,MAAM;AAMnC,QAAM,gBACJ,CAAC,CAAC,SACF,QAAQ,MACN,QAAQ,UAAa,SAAS,OAAS,QAAQ,UAAa,SAAS;AAEzE,QAAM,QAAQ,sBAAsB,UAAU,KAAK;AACnD,QAAM,iBAAiB,sBAAsB,UAAU,cAAc;AAErE,QAAM,iBAAiB,iBAAkB,SAAS,oBAAO,KAAM,MAAM;AACrE,QAAM,kBAAkB,CAAC,iBAAiB,CAAC;AAC3C,SACE,gBAAAF,OAAC,OAAI,OAAM,QAAO,WAAsB,OACrC;AAAA,eAAW,gBAAAD,OAAC,SAAM,SAAS,UAAW,iBAAM,IAAW;AAAA,IACxD,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,IAAI;AAAA,QACJ,WAAW,mBAAW,iBAAiB;AAAA,QACvC,OAAO,gBAAgB,QAAQ;AAAA,QAC/B,KAAK,cAAc,MAAM;AAAA,QACzB,oBAAkB,8BAA8B;AAAA,UAC9C,SAAS,QAAQ;AAAA,UACjB,kBAAkB,iBAAiB;AAAA,UACnC;AAAA,QACF,CAAC;AAAA,QACA,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,cAAc,KAAK;AAAA,QAC1B,QAAQE,UAAS,UAAU,UAAU;AAAA,QACrC,WAAW,GAAG,oBAAO,QAAQ;AAAA,QAE7B,0BAAAF;AAAA,UAAC;AAAA;AAAA,YACC,QAAO;AAAA,YACP,OAAO,kBAAkB,QAAQ,iBAAiB,iBAAiB;AAAA,YACnE,WAAW;AAAA,cACT,oBAAO;AAAA,cACP,mBAAmB,oBAAO,qBAAqB;AAAA,cAC/C,mBAAmB,UAAU,oBAAO,YAAY;AAAA,cAChD,gBAAgB,oBAAO,aAAa;AAAA,YACtC;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,IACC,mBAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,KAC9D;AAEJ;AAEA,YAAY,cAAc;;;AE/G1B;AAAA,EAGE,SAAAI;AAAA,EACA,YAAAC;AAAA,OACK;;;ACLP;AAAA,EAIE,iBAAAC;AAAA,EACA,cAAAC;AAAA,OACK;AAYA,IAAM,4BACXD,gBAA6C,CAAC,CAAC;AAE1C,IAAM,wBAAwB,MAAM;AACzC,SAAOC,aAAW,yBAAyB;AAC7C;;;ACvBA;AAAA,EAAC,yBAAAC;AAAA,EAKA,OAAAC;AAAA,EASA,eAAAC;AAAA,EAIA,gBAAAC;AAAA,EAUA,aAAAC;AAAA;;;ACvBM,IAAMC,mBAA4D;AAAA,EACvE,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AASO,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,IACtB,iBAAiB,MAAM;AAAA,IACvB,aAAa,IAAI,MAAM,OAAO;AAAA,IAC9B,SAAS,MAAM;AAAA,IACf,MAAM;AAAA,IACN,WAAW,KAAK,IAAI;AAAA,IACpB,oBAAoB,MAAM;AAAA,IAC1B,sBAAsB,MAAM;AAAA,EAC9B;AAEA,SAAO;AACT;;;AC9CA,SAAqC,aAAAC,aAAW,UAAAC,gBAAc;AA6B1D,gBAAAC,cAAA;AAhBG,IAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAiC;AAC/B,QAAM,UAAUC,SAA0B,IAAI;AAC9C,QAAM,cAAc,eAAe,KAAK,OAAO;AAE/C,EAAAC,YAAU,MAAM;AAtBlB;AAuBI,QAAI,OAAO;AACT,oBAAQ,YAAR,mBAAiB;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW;AAAA,QACT;AAAA,QACA,qBAAO;AAAA,QACP,qBAAO,kBAAkB;AAAA,QACzB,cAAY,kBAAkB;AAAA,QAC9B,mBAAW,kBAAkB;AAAA,MAC/B;AAAA,MACC,GAAG;AAAA,MACJ,UAAU,QAAQ,IAAI;AAAA;AAAA,EACxB;AAEJ;AAEA,qBAAqB,cAAc;;;ACW/B,SAwBE,OAAAG,QAxBF,QAAAC,cAAA;AAxBG,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc,CAAC;AAAA,EACf;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAA8B;AAC5B,QAAM,sBAAsB;AAAA,IAC1B;AAAA,IACA;AAAA,EACF;AAEA,QAAM,CAAC,KAAK,IAAI,aAAa,2CAAa,QAAQ,eAAe;AAEjE,QAAM,sBAAsB,iBACxB,2CAAa,MAAM,kBACnB;AAEJ,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,eAAO;AAAA,UACP,mBAAW;AAAA,UACX,mBAAW,uBAAuB;AAAA,UAClC,kBACI,mBAAW,6BAA6B,IACxC,mBAAW,+BAA+B;AAAA,QAChD;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,eAAa,CAAC;AAAA,MACd,QAAO;AAAA,MACP,UAAS;AAAA,MACT,KAAI;AAAA,MACJ,OAAM;AAAA,MACN,WAAU;AAAA,MACV,WAAU;AAAA,MACV,aAAY;AAAA,MAEZ;AAAA,wBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,eAAc;AAAA,YACd,IAAI;AAAA,YACJ,WAAW,yBAAiB,aAAa;AAAA,YAC1C;AAAA;AAAA,QAED;AAAA,QACA,gBAAAA,OAAC,iBAAc,MAAK,WAAU,mBAAiB,qBAC5C,8BAAoB,IAAI,CAAC,YAAY,UAAU;AAC9C,iBACE,gBAAAA,OAAC,QAAe,MAAK,UACnB,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC;AAAA,cACA,OAAO,UAAU,SAAS;AAAA,cAC1B,cAAY,gBAAU,UAAU;AAAA,cAChC,SAAS;AAAA,cACT,gBAAc,oBAAoB;AAAA,cAClC,iBAAe;AAAA,cACf,WACE,yBACE,gBAAgBE,iBAAgB,aAAa,CAAC,CAChD;AAAA,cAGD;AAAA;AAAA,UACH,KAfO,KAgBT;AAAA,QAEJ,CAAC,GACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,kBAAkB,cAAc;;;ALyBxB,SAoCA,YAAAC,WApCA,OAAAC,QAoCA,QAAAC,cApCA;AA9GR,IAAMC,eAAc,CAACC,UAA+B;AAClD,UAAQA,OAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,IAAM,aAAa,CACjBA,OACA,aAC+B;AAE/B,QAAM,eAAe,CAAC,aAAqB;AAAA,2BAClB,QAAQ;AAAA;AAGjC,QAAM,cAAc,CAAC,aAAqB;AAAA,8BACd,QAAQ;AAAA;AAGpC,QAAM,gBAAgB,aAAa,UAAU;AAC7C,QAAM,iBAAiB,aAAa,MAAM;AAC1C,QAAM,cAAc,YAAY,4BAA4B;AAC5D,QAAM,eAAe,YAAY,6BAA6B;AAE9D,QAAM,aAAa;AAAA,IACjB,OAAO,MAAM,cAAc,OAAO,WAAW,eAAe,OAAO;AAAA,IACnE,QAAQ,SAAS,aAAa,UAAU,WAAW,eAAe,OAAO;AAAA,IACzE,OAAO,QAAQ,aAAa,SAAS,WAAW,cAAc,OAAO;AAAA,EACvE;AAEA,SAAO,WAAWA,KAAI;AACxB;AAYO,IAAM,SAAS,CAAC;AAAA,EACrB,gBAAgB;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,oBAAoB;AAAA,EACpB;AAAA,EACA,GAAG;AACL,MAAmB;AA7FnB;AA8FE,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,QAAQ,sBAAsB,UAAU,KAAK;AACnD,QAAM,gBAAgB,sBAAsB,UAAU,aAAa;AACnE,QAAM,2BAA2B;AAAA,IAC/B;AAAA,IACA;AAAA,EACF;AAEA,QAAM,CAAC,UAAU,WAAW,IAAIC,WAAS,CAAC,CAAC,KAAK;AAEhD,QAAM,UAAU,sBAAsB;AAEtC,QAAM,cAAc,QAAQ,WACxB,eAAe,QAAQ,UAAU,GAAG,IACpC;AAEJ,QAAM,eAAe,CAAC,MAAqC;AACzD,gBAAY,EAAE,OAAO,UAAU,EAAE;AAEjC,YAAQ,iBAAiB,QAAQ,cAAc,CAAC;AAChD,gBAAY,SAAS,CAAC;AAAA,EACxB;AAEA,QAAM,aAAa,MAAM;AACvB,UAAM,mBAAmB,uBAAuB,QAAQ;AACxD,iBAAa,gBAAgB;AAAA,EAC/B;AAEA,QAAM;AAAA,IACJ,OAAO;AAAA,IACP;AAAA,IACA,GAAG;AAAA,EACL,IAAI,oCAAe,CAAC;AAEpB,QAAM,iBAAiB,CAAC,CAAC,QAAQ;AACjC,QAAM,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;AAC5C,QAAM,aACJ,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,UAAS;AAAA,MACT,OAAO,CAAC,mBAAmB,QAAQ;AAAA,MACnC,WAAW,CAAC,mBAAmB,YAAY;AAAA,MAE1C;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,UAAUE,aAAY,aAAa;AAAA,YACnC,WAAW;AAAA,cACT,cAAY,+BAA+B;AAAA,cAC3C,eAAO,aAAa;AAAA,YACtB;AAAA;AAAA,QACF;AAAA,QAEF,gBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACH,GAAG;AAAA,YACJ,KAAK;AAAA,YACL;AAAA,YACA,MAAK;AAAA,YACL,IAAI;AAAA,YACJ,oBAAkB,8BAA8B;AAAA,cAC9C,MAAM,QAAQ;AAAA,cACd,QAAQ,cAAc,2BAA2B;AAAA,cACjD;AAAA,YACF,CAAC;AAAA,YACD,QAAO,aAAQ,eAAR,YAAsB;AAAA,YAC7B,UAAU;AAAA,YACV,cAAa;AAAA,YACb,qBAAmB,iBAAiB,SAAS;AAAA,YAC7C,iBAAe,iBAAiB,gBAAgB;AAAA,YAChD,iBAAe,QAAQ;AAAA,YACvB,MAAM,iBAAiB,aAAa;AAAA,YACpC,OAAM;AAAA,YACN,SAAS,WAAW,eAAe,QAAQ;AAAA,YAC3C,WAAW;AAAA,cACT,eAAO;AAAA,cACP,yBAAiB,gBAAgBM,iBAAgB,aAAa,CAAC,CAAC;AAAA,YAClE;AAAA;AAAA,QACF;AAAA,QACC,kBACC,gBAAAL,OAAAF,WAAA,EACE;AAAA,0BAAAC;AAAA,YAAC;AAAA;AAAA,cACC,IAAI;AAAA,cACJ,KAAK,QAAQ;AAAA,cACb,UAAU;AAAA,cACV,mBAAmB,QAAQ;AAAA,cAC3B,aAAa,QAAQ;AAAA,cACrB,iBAAiB,QAAQ;AAAA,cACzB;AAAA;AAAA,UACF;AAAA,UACA,gBAAAA,OAAC,kBAAe,IAAI,0BAA0B,IAAG,QAAO,0EAExD;AAAA,WACF;AAAA,QAED,YACC,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,MAAM,kBAAkB,UAAU,WAAW;AAAA,YAC7C,SAAQ;AAAA,YACR,cAAW;AAAA,YACX,SAAS;AAAA,YACT,WAAW,eAAO,cAAc;AAAA;AAAA,QAClC;AAAA;AAAA;AAAA,EAEJ;AAEF,SACE,gBAAAC,OAAC,UAAO,KAAI,UACT;AAAA,gBAAY,gBAAAD,OAAC,SAAM,SAAS,UAAW,iBAAM;AAAA,IAC9C,gBAAAC,OAAC,SACE;AAAA,yBACC,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,WAAU;AAAA,UACV,QAAO;AAAA,UACP,cAAa;AAAA,UACb,qBAAoB;AAAA,UACpB;AAAA,UAEC;AAAA;AAAA,YACD,gBAAAD;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM;AAAA,gBACN;AAAA,gBACC,GAAG;AAAA,gBAEH,8CAAe;AAAA;AAAA,YAClB;AAAA;AAAA;AAAA,MACF,IAEA;AAAA,MAED,mBAAmB,KAAK,KAAK;AAAA,OAChC;AAAA,KACF;AAEJ;AAEA,OAAO,cAAc;;;AM1OrB;AAAA,EAIE,aAAAO;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AAsJH,gBAAAC,cAAA;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,IAAIC,WAAS,wBAAS,EAAE;AACxD,QAAM,CAAC,aAAa,cAAc,IAAIA,WAAwB,CAAC,CAAC;AAChE,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,WAAS,KAAK;AAE5D,QAAM,mBAAmB,MACvB,oBAAoB,QAAQ,mBAAmB,KAAK;AAEtD,QAAM,kBAAkB,MACtB,oBAAoB,SAAS,mBAAmB,IAAI;AAEtD,EAAAC,YAAU,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,mBAAkC,CAAC;AAEvC,QAAI,MAAM,UAAU,aAAa;AAC/B,UAAI,MAAM;AACR,YAAI,oBAAoB,IAAI,GAAG;AAC7B,gBAAM,EAAE,cAAc,MAAM,IAAI;AAEhC,gBAAM,sBAA4C,MAAM;AAAA,YACtD,gBACE,SACI,OAAO,WAAW,MAAM,KAAK,IAC7B,aAAa,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,sBAAqC,MAAM;AAAA,YAAO,gBACtD,SACI,OAAO,YAAY,KAAK,IACxB,aAAa,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,WAAWC,SAAyB,IAAI;AAC9C,QAAM,iBAAiBA,SAAuB,IAAI;AAElD,oBAAkB,CAAC,SAAS,SAAS,eAAe,OAAO,GAAG,MAAM;AAClE,qBAAiB;AAAA,EACnB,CAAC;AAED,eAAa,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,gBAAAL,OAAC,6BAA0B,OAAO,cAC/B,UACH;AAEJ;AAEA,0BAA0B,cAAc;;;AClJxC,IAAMM,UAAS;AAEfA,QAAO,sBAAsB;AAC7BA,QAAO,cAAc;;;ACpBrB,SAA2B,SAAAC,eAAa;;;ACAxC,SAA2B,iBAAAC,iBAAe,cAAAC,oBAAkB;AAiBrD,IAAM,0BACXD,gBAAsD,IAAI;AAErD,IAAM,sBAAsB,MAAM;AACvC,SAAOC,aAAW,uBAAuB;AAC3C;;;AD2DI,SAUE,OAAAC,QAVF,QAAAC,cAAA;AA7DJ,IAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AACF,MAIe;AACb,MAAI,YAAY,OAAW,QAAO;AAClC,MAAI,OAAO,UAAU,eAAe,UAAU,QAAQ,OAAO;AAC3D,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,UAAU,OAAO,MAAM,KAAK;AAAA,IACrC;AACA,WAAO,UAAU,MAAM;AAAA,EACzB;AACA,SAAO,CAAC,CAAC;AACX;AAEO,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,oBAAoB;AAAA,EACpB;AAAA,EACA,YAAY,CAAC;AAAA,EACb,GAAG;AACL,MAAwB;AACtB,QAAM,EAAE,WAAW,oBAAoB,OAAO,GAAG,cAAc,IAAI;AAEnE,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,QAAM,cAAc,CAAC,CAAC;AACtB,QAAM,WAAW,CAAC,CAAC;AAEnB,QAAM,mBAAmB,oBAAoB;AAE7C,QAAM,eAAe,CAAC,UAAyC;AAC7D,gBAAY,SAAS,KAAK;AAC1B,yDAAkB,SAAS,OAAO,MAAM,OAAO;AAAA,EACjD;AAEA,QAAM,iBAAiB,CAAC;AACxB,MAAI,qDAAkB;AACpB,mBAAe,KAAK,qDAAkB,cAAc;AACtD,MAAI,gBAAiB,gBAAe,KAAK,eAAe;AAExD,QAAM,aAAa,aAAY,qDAAkB;AACjD,QAAM,aAAa,aAAY,qDAAkB;AACjD,QAAM,WAAW,UAAS,qDAAkB;AAC5C,QAAM,YAAY,aAAa,EAAE,OAAO,OAAO,kBAAkB,QAAQ,CAAC;AAE1E,SACE,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACC;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,MACV;AAAA,MACA,WAAW,GAAG,WAAW,kBAAkB;AAAA,MAC3C,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAY;AAAA,MAEZ;AAAA,wBAAAH;AAAA,UAAC;AAAA;AAAA,YACE,GAAG,iBAAiB,UAAU,eAAe,IAAI;AAAA,YAClD,MAAK;AAAA,YACL,MAAM,sBAAQ,qDAAkB;AAAA,YAChC,UAAU;AAAA,YACV,UAAU,YAAY,CAAC,EAAC,qDAAkB;AAAA,YAC1C,SAAS;AAAA,YACT,UAAU,sBAAsB,YAAY,YAAY;AAAA,YACxD;AAAA,YACA,oBACE,eAAe,SAAS,IAAI,eAAe,KAAK,GAAG,IAAI;AAAA,YAEzD,gBAAc,WAAW,OAAO;AAAA,YAChC,WAAW;AAAA,cACT,mBAAW,YAAY;AAAA,cACvB,cAAY,mBAAmB;AAAA,YACjC;AAAA,YACA,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA,UAAU;AAAA,YACZ;AAAA,YACA,SAAS,qBAAqB,YAAY,UAAU,OAAO;AAAA;AAAA,QAC7D;AAAA,QACA,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAY;AAAA,YACZ,WAAW,cAAY,sBAAsB;AAAA;AAAA,QAC/C;AAAA,QACC,cACC,WACE,WACF,gBAAAA,OAAC,cAAY,GAAG,iCAAkC,iBAAM,IACtD;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,YAAY,cAAc;;;AEhI1B,SAAgD,SAAAI,SAAO,YAAAC,kBAAgB;AAmGnE,SASI,OAAAC,QATJ,QAAAC,cAAA;AA7DG,IAAM,mBAAmB,CAAqC;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,CAAC;AAAA,EACb,GAAG;AACL,MAAgC;AAC9B,QAAM,EAAE,iBAAiB,eAAe,MAAM,IAAI;AAElD,QAAM,CAAC,mBAAmB,oBAAoB,IAAIC;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,cAAcC,QAAM;AAC1B,QAAM,gBAAgB,4BAAW,GAAG,WAAW;AAE/C,QAAM,eAAe,UAAU;AAC/B,QAAM,aAAa,eAAe,QAAQ;AAE1C,QAAM,eAAe,CAAC,MAAqC;AACzD,UAAM,WAAW,EAAE,OAAO;AAC1B,QAAI,CAAC,cAAc;AACjB,2BAAqB,QAAa;AAAA,IACpC;AACA,QAAI,UAAU;AACZ,eAAS,GAAG,QAAa;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,qBACJ,YAAY,2BAA2B,YAAY;AAErD,QAAM,QAAQ,OAAO,GAAG,aAAa;AACrC,QAAM,iBAAiB,gBAAgB,GAAG,aAAa;AAEvD,QAAM,eAA6C;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA,GAAG,WAAW,yBAAO,SAAS;AAAA,QAC9B,EAAE,GAAG,WAAW,iBAAiB,aAAa;AAAA,QAC9C;AAAA,MACF;AAAA,MAEC;AAAA,kBAAU,SACT,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ;AAAA,YACA;AAAA,YAEC;AAAA;AAAA,QACH,IACE;AAAA,QACH,mBAAmB,KAAK,KAAK;AAAA,QAC9B,gBAAAA,OAAC,2BAAwB,OAAO,EAAE,GAAG,aAAa,GAChD,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,mBAAiB;AAAA,YACjB,oBAAkB;AAAA,YAClB,qBAAmB;AAAA,YACnB,WAAW,GAAG,yBAAO,OAAO,yBAAO,UAAU,SAAS,EAAE,CAAC;AAAA,YAExD;AAAA;AAAA,QACH,GACF;AAAA,QACC,mBAAmB,QAAW,QAAW,cAAc,cAAc;AAAA;AAAA;AAAA,EACxE;AAEJ;AAEA,iBAAiB,cAAc;;;ACrI/B;AAAA,EAAW,sBAAAI;AAAA,EASV,WAAAC;AAAA;;;ACkBG,gBAAAC,cAAA;AAVG,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAqB;AACnB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,GAAG,WAAW,iBAAO,SAAS;AAAA,MACzC,OAAO,EAAE,GAAG,OAAO,aAAa;AAAA,MAC/B,GAAG;AAAA;AAAA,EACL;AAEL;AAEA,SAAS,cAAc;;;ACtCvB;AAAA,EAAC,SAAAC;AAAA;;;ACuCK,gBAAAC,cAAA;AAfC,IAAM,gBAAgB,CAAC;AAAA,EAC5B,OAAO;AAAA,EACP,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA,YAAY,CAAC;AAAA,EACb,GAAG;AACL,MAA0B;AACxB,QAAM,EAAE,WAAW,oBAAoB,OAAO,GAAG,cAAc,IAAI;AAEnE,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,WAAW,oBAAoB,sBAAO,OAAO;AAAA,MAC3D,OAAO,EAAE,GAAG,OAAO,IAAI;AAAA,MAEvB,0BAAAA,OAAC,QAAM,GAAG,iBAAiB,IAAI,eAAe,IAAI,GAAI,gBAAK;AAAA;AAAA,EAC7D;AAEJ;AAEA,cAAc,cAAc;;;AC5C5B,SAAqC,YAAAC,kBAAgB;;;ACArD;AAAA,EAAC,WAAAC;AAAA,EAIA,MAAAC;AAAA,EAWA,QAAAC;AAAA,EAUA,mBAAAC;AAAA;;;AD4BK,gBAAAC,QAMA,QAAAC,cANA;AAhBC,IAAM,cAAc,CAAC;AAAA,EAC1B,MAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,MAAwB;AACtB,QAAM,CAAC,QAAQ,SAAS,IAAIC,WAAS,KAAK;AAC1C,QAAM,mBAAgC;AAAA,IACpC;AAAA,IACA,MAAAD;AAAA,EACF;AAEA,SACE,gBAAAD,OAAC,SAAI,WAAW,GAAG,WAAW,oBAAO,SAAS,GAAI,GAAG,MACnD;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACH,GAAG;AAAA,QACJ,cAAa;AAAA,QACb,WAAW,oBAAO;AAAA;AAAA,IACpB;AAAA,IACA,gBAAAC,OAAC,qBAAkB,QAAgB,WACjC;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACJ,MAAM,SAAS,gBAAgB;AAAA,UAC/B,cAAW;AAAA,UACX;AAAA,UACA,WAAW;AAAA,YACT,oBAAO;AAAA,YACP,YAAY,aAAa,oBAAO,iBAAiB;AAAA,UACnD;AAAA;AAAA,MACF;AAAA,MACA,gBAAAA,OAAC,gBAAa,WAAU,cACtB,0BAAAA,OAAC,oBACE,2BAAiB,IAAI,CAAC,MAAM,UAC3B,gBAAAA,OAAC,sBAAgC,GAAG,MACjC,eAAK,YADiB,KAEzB,CACD,GACH,GACF;AAAA,OACF;AAAA,KACF;AAEJ;AAEA,YAAY,cAAc;;;AEpF1B;AAAA,EACE,YAAAI;AAAA,EACA,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,OACK;;;ACPP,SAAS,iBAAAC,iBAAe,cAAAC,oBAAkB;AAUnC,IAAM,0BACXD,gBAA4C;AAAA,EAC1C,cAAc,CAAC;AAAA,EACf,qBAAqB,CAAC,CAAC;AACzB,CAAC;AACI,IAAM,6BAA6B,MACxCC,aAAW,uBAAuB;;;ACZW,gBAAAC,cAAA;AAAxC,IAAM,OAAO,CAAC,UAA0B,gBAAAA,OAAC,WAAO,GAAG,OAAO;AAEjE,KAAK,cAAc;;;ACNnB,SAAqC,iBAAAC,iBAAe,cAAAC,oBAAkB;AAMlE,gBAAAC,cAAA;AAFG,IAAM,OAAO,CAAC,EAAE,UAAU,GAAG,KAAK,MACvC,gBAAAA,OAAC,WAAO,GAAG,MACT,0BAAAA,OAAC,eAAY,OAAO,MAAO,UAAS,GACtC;AAGF,IAAM,cAAcF,gBAAc,KAAK;AAEhC,SAAS,mBAA4B;AAC1C,QAAM,gBAAgBC,aAAW,WAAW;AAC5C,SAAO;AACT;;;ACfA;AAAA,EAAC,SAAAE;AAAA,EAIA,uBAAAC;AAAA,EAIA,OAAAC;AAAA,EAMA,wBAAAC;AAAA,EACE,aAAAC;AAAA,EAIA,gCAAAC;AAAA,EAKF,wBAAAC;AAAA,EAQA,gBAAAC;AAAA,EAwBA,iBAAAC;AAAA,EAYA,gBAAAC;AAAA,EAYA,KAAAC;AAAA,EAiBG,YAAAC;AAAA,EAQA,iBAAAC;AAAA,EAMA,kBAAAC;AAAA,EAKH,cAAAC;AAAA,EAIA,cAAAC;AAAA,EAIA,eAAAC;AAAA,EAIA,gBAAAC;AAAA,EAIA,aAAAC;AAAA,EAMA,eAAAC;AAAA,EAaA,mBAAAC;AAAA;;;AC7GG,gBAAAC,cAAA;AAfG,IAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA,MAAM;AAAA,EACN,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAsB;AACpB,QAAM,WAAW,iBAAiB;AAClC,QAAM,OAAO,wBAAU,WAAW,SAAS;AAE3C,QAAM,EAAE,mBAAmB,IAAI,8CAAoB,CAAC;AACpD,QAAM,kBAAkB,WAAW;AAEnC,SAAO,qBACL,gBAAAA,OAAC,uBAAqB,UAAS,IAC7B,SAAS,SACX,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA,CAAC,mBAAmB,cAAO,SAAS,MAAM,EAAE;AAAA,QAC5C,cAAO,YAAY;AAAA,MACrB;AAAA,MAEC,4BACC,gBAAAA,OAAC,SAAI,WAAW,cAAO,aAAc,UAAS,IAE9C;AAAA;AAAA,EAEJ,IAEA,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW,GAAG,WAAW,CAAC,mBAAmB,cAAO,SAAS,MAAM,EAAE,CAAC;AAAA,MAErE,4BACC,gBAAAA,OAAC,SAAI,WAAW,cAAO,aAAc,UAAS,IAE9C;AAAA;AAAA,EAEJ;AAEJ;AAEA,KAAK,cAAc;;;ACpE4B,gBAAAC,cAAA;AAAxC,IAAM,OAAO,CAAC,UAA0B,gBAAAA,OAAC,WAAO,GAAG,OAAO;AAEjE,KAAK,cAAc;;;ACYf,gBAAAC,cAAA;AAXG,IAAM,MAAM,CAAC;AAAA,EAClB,MAAM;AAAA,EACN,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAqB;AACnB,QAAM,aAAa,iBAAiB;AACpC,QAAM,OAAO,wBAAU,aAAa,SAAS;AAC7C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,cAAO;AAAA,QACP,SAAS,UAAU,cAAO,WAAW;AAAA,QACrC,SAAS,SAAS,cAAO,UAAU;AAAA,QACnC,YAAY,cAAO,eAAe;AAAA,QAClC,aAAa,cAAO,gBAAgB;AAAA,SACnC,SAAS,UAAU,SAAS,UAAU,yBAAiB;AAAA,QACxD;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,IAAI,cAAc;;;ACPP,gBAAAC,QAsBP,QAAAC,cAtBO;AAFX,IAAM,eAAe,CAAC,UAAoB,cAA0B;AAClE,MAAI,CAAC,YAAY,CAAC,WAAW;AAC3B,WAAO,gBAAAD,OAAC,QAAK,MAAM,gBAAgB,UAAS,WAAU;AAAA,EACxD;AAEA,SAAO,cAAc,cACnB,gBAAAA,OAAC,QAAK,MAAM,iBAAiB,UAAS,WAAU,IAEhD,gBAAAA,OAAC,QAAK,MAAM,eAAe,UAAS,WAAU;AAElD;AAEO,IAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,MAAK;AAAA,IACL,aAAW,YAAY,YAAY,YAAY;AAAA,IAC9C,GAAG;AAAA,IAEJ,0BAAAC;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,oBAAiB;AAAA,QACjB,WAAW;AAAA,UACT,mBAAW,kBAAkB;AAAA,UAC7B,mBAAW,uBAAuB;AAAA,UAClC,cAAO,aAAa;AAAA,UACpB;AAAA,QACF;AAAA,QAEC;AAAA;AAAA,UAAS;AAAA,UAAE,aAAa,UAAU,SAAS;AAAA;AAAA;AAAA,IAC9C;AAAA;AACF;AAGF,SAAS,cAAc;;;ACnDrB,gBAAAC,cAAA;AARK,IAAM,QAAQ,CAAC;AAAA,EACpB,MAAAC,QAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAD;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,IACJ,WAAW;AAAA,MACT;AAAA,MACA,cAAO;AAAA,MACP,cAAO,UAAUC,KAAI,EAAE;AAAA,MACvB,gBAAgB,cAAO,sBAAsB;AAAA,MAC7C,gBAAgB,cAAO,sBAAsB;AAAA,MAC7C;AAAA,IACF;AAAA,IAEC;AAAA;AACH;AAGF,MAAM,cAAc;;;AC5BpB;AAAA,EAEE,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AAyCH,gBAAAC,cAAA;AAhCG,IAAM,eAAe,CAAC,EAAE,WAAW,GAAG,KAAK,MAAyB;AACzE,QAAM,eAAeC,aAAW,YAAY;AAC5C,QAAMC,aAAY,6CAAc;AAChC,QAAM,iBAAiBA,aAAYA,WAAU,cAAc;AAE3D,QAAM,CAAC,WAAW,YAAY,IAAIC,WAAS,KAAK;AAChD,QAAM,CAAC,qBAAqB,sBAAsB,IAChDA,WAAS,cAAc;AAEzB,WAAS,eAAe,OAAgC;AACtD,WAAO,MAAM,cAAc,MAAM;AAAA,EACnC;AAEA,QAAM,aAAaC,SAAuB,IAAI;AAE9C,EAAAC,YAAU,MAAM;AACd,SAAI,yCAAY,YAAW,eAAe,WAAW,OAAO,GAAG;AAC7D,mBAAa,IAAI;AACjB;AAAA,IACF;AACA,iBAAa,KAAK;AAAA,EACpB,GAAG,CAAC,mBAAmB,CAAC;AAExB,EAAAA,YAAU,MAAM;AACd,aAAS,eAAe;AACtB,6BAAuB,cAAc;AAAA,IACvC;AACA,WAAO,iBAAiB,UAAU,YAAY;AAC9C,WAAO,MAAM,OAAO,oBAAoB,UAAU,YAAY;AAAA,EAChE,CAAC;AAED,SACE,gBAAAL;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACJ,GAAG;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,cAAO;AAAA,QACP,aAAa,cAAO,qBAAqB;AAAA,MAC3C;AAAA;AAAA,EACF;AAEJ;AAEA,aAAa,cAAc;;;AC9B3B,IAAMM,SAAQ;AAEdA,OAAM,UAAU;AAChBA,OAAM,OAAO;AACbA,OAAM,OAAO;AACbA,OAAM,OAAO;AACbA,OAAM,WAAW;AACjBA,OAAM,MAAM;AACZA,OAAM,OAAO;;;AXwCD,SAqCJ,YAAAC,YApCM,OAAAC,QADF,QAAAC,cAAA;AApDL,IAAM,iBAAiB,CAAC;AAAA,EAC7B,MAAM;AAAA,EACN;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAqB;AACnB,QAAM,WAAW,iBAAiB;AAClC,QAAM,OAAO,wBAAU,WAAW,SAAS;AAC3C,QAAM,EAAE,aAAa,cAAc,oBAAoB,IACrD,2BAA2B;AAC7B,QAAM,CAAC,mBAAmB,oBAAoB,IAAIC,WAAS,IAAI;AAE/D,EAAAC,YAAU,MAAM;AACd,KAAC,eAAe,qBAAqB,IAAI;AAAA,EAC3C,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,WAAW,CAAC,4BAAsC;AACtD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,2BAA2B,cAAO,8BAA8B;AAAA,MAClE;AAAA,MACA,GAAG;AAAA,IACL;AAAA,EACF;AAEA,QAAM,wBAAwB,aAAa;AAAA,IACzC,CAAC,QAAQ,UAAU,oBAAoB,QAAQ,KAAK,MAAM;AAAA,EAC5D;AAEA,QAAM,gBAAgBC,UAAS,QAAQ,QAAQ;AAC/C,QAAM,oBAAoB,cAAc;AAAA,IACtC,CAAC,QAAQ,UAAU,oBAAoB,QAAQ,KAAK,MAAM;AAAA,EAC5D;AAEA,QAAMC,UAAS;AACf,QAAM,iBAAgC,CAAC;AAEvC,QAAM,4BACJ,eAAe,sBAAsB,SAAS,IAC1C,kBAAkB,IAAI,SAAU,OAAO,OAAO;AAC5C,UAAM,KAAK,sBAAsBA,SAAQ,MAAM,SAAS,CAAC;AACzD,mBAAe,KAAK,EAAE;AAEtB,WACE,gBAAAJ,OAACF,WAAA,EACC;AAAA,sBAAAC,OAAC,uBACE,gCAAsB,KAAK,EAAE,SAChC;AAAA,MACCM,gBAA+B,KAAK,KACnCC,cAAa,OAAO;AAAA,QAClB,kBAAkB,EAAE,oBAAoB,KAAK;AAAA,MAC/C,CAAC;AAAA,SAPU,MAAM,KAAK,EAQ1B;AAAA,EAEJ,CAAC,IACD;AAEN,QAAM,gBACJ,6BAA6B,0BAA0B,SAAS,IAC9D,gBAAAP,OAAC,OAAK,GAAG,SAAS,GAChB,0BAAAA,OAAC,QAAK,SAAS,oBAAoB,SAAS,GAC1C,0BAAAA,OAAC,mBAAiB,qCAA0B,GAC9C,GACF,IACE;AAEN,QAAM,sBAAsB,cACzB,MAAM,EACN,OAAO,CAAC,QAAQ,UAAU,oBAAoB,QAAQ,KAAK,IAAI,EAAE,EACjE,KAAK,CAAC,GAAG,MAAM;AACd,WACE,oBAAoB,QAAQ,cAAc,QAAQ,CAAC,CAAC,IACpD,oBAAoB,QAAQ,cAAc,QAAQ,CAAC,CAAC;AAAA,EAExD,CAAC;AAEH,QAAM,YAAY,MAAM;AACtB,QAAI,SAAS,UAAU,CAAC,YAAa,QAAO;AAE5C,WACE,gBAAAA,OAAC,OAAI,KAAW,GAAG,SAAS,GAC1B,0BAAAC,OAAAF,YAAA,EACG;AAAA;AAAA,MACD,gBAAAE,OAACO,OAAM,MAAN,EAAW,MAAK,QAAO,QAAO,UAAS;AAAA;AAAA,QAEtC,gBAAAR,OAAC,kBAAe,IAAG,QAAO,mBAAK;AAAA,SACjC;AAAA,OACF,GACF;AAAA,EAEJ;AAEA,QAAM,SAAS,8BAA8B,cAAc;AAE3D,QAAM,iBAAiB,MAAM;AAC3B,QAAI,SAAS,UAAU,CAAC,YAAa,QAAO;AAE5C,WACE,gBAAAC,OAAC,OAAI,KAAW,GAAG,SAAS,CAAC,qBAAqB,IAAI,GACnD;AAAA;AAAA,MACD,gBAAAD,OAACQ,OAAM,MAAN,EACC,0BAAAR;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,MAAM,qBAAqB,CAAC,iBAAiB;AAAA,UACtD,iBAAe,CAAC;AAAA,UAChB,iBAAe;AAAA,UACf,WAAW;AAAA,YACT,cAAO,iBAAiB;AAAA,YACxB,mBAAW,kBAAkB;AAAA,YAC7B,mBAAW,uBAAuB;AAAA,YAClC;AAAA,UACF;AAAA,UAEA,0BAAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,oBAAoB,QAAQ;AAAA,cAClC,QAAO;AAAA,cACP,OAAM;AAAA;AAAA,UACR;AAAA;AAAA,MACF,GACF;AAAA,OACF;AAAA,EAEJ;AAEA,SAAO,eACL,6BACA,0BAA0B,SAAS,IACnC,gBAAAC,OAAAF,YAAA,EACG;AAAA,cAAU;AAAA,IACV,SAAS,UACR,gBAAAE,OAAAF,YAAA,EACG;AAAA,qBAAe;AAAA,MACf,oBAAoB,OAAO;AAAA,OAC9B;AAAA,KAEJ,IAEA,gBAAAC,OAAC,OAAI,KAAW,GAAG,SAAS,GACzB,UACH;AAEJ;AAEA,eAAe,cAAc;;;AY9JvB,gBAAAS,cAAA;AAdC,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,sBAAsB,CAAC,CAAC;AAAA,EACxB,GAAG;AACL,MAA6B;AAC3B,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAA,OAACC,QAAA,EAAO,GAAG,MAAM;AAAA;AAAA,EACnB;AAEJ;AAEA,iBAAiB,cAAc;;;ACf/B,IAAMC,oBAAmB;AAEzBA,kBAAiB,MAAM;;;ACTvB,SAAqC,UAAAC,gBAAc;;;ACDnD,SAAyB,iBAAAC,iBAAe,cAAAC,oBAAkB;AAmBnD,IAAM,cAAcD,gBAAoB;AAAA,EAC7C,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,iBAAiB,MAAM;AAAA,EACvB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,aAAa;AAAA,EACb,gBAAgB,MAAM;AAAA,EACtB,qBAAqB;AAAA,EACrB,mBAAmB;AACrB,CAAC;AACM,IAAM,iBAAiB,MAAMC,aAAW,WAAW;;;AC/B1D;AAAA,EAAC,MAAAC;AAAA,EAIA,WAAAC;AAAA,EAgBA,4BAAAC;AAAA,EAKA,0BAAAC;AAAA,EAIA,KAAAC;AAAA,EA8BA,oBAAAC;AAAA,EAMA,mBAAAC;AAAA,EAKA,uBAAAC;AAAA,EAKA,sBAAAC;AAAA,EAIA,YAAAC;AAAA,EAIA,eAAAC;AAAA,EAIA,eAAAC;AAAA;;;ACtFD;AAAA,EAIE,iBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,mBAAAC;AAAA,OACK;AAqBH,gBAAAC,cAAA;AAZJ,IAAM,aAAaH,gBAAsC,IAAI;AAOtD,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AACF,GAAiC;AAC/B,SACE,gBAAAG;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,aAAa,CAAC,OAAO,aAAa;AAChC,yBAAe,UAAQ;AACrB,kBAAM,WAAW,CAAC,GAAG,IAAI;AACzB,qBAAS,KAAK,IAAI;AAClB,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,QACA,WAAW,WAAS;AAClB,yBAAe,UAAQ;AACrB,kBAAM,WAAW,CAAC,GAAG,IAAI;AACzB,qBAAS,OAAO,OAAO,CAAC;AACxB,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,eAAe,OAAe,OAAc;AAC1D,QAAM,UAAUF,aAAW,UAAU;AAErC,EAAAC,iBAAgB,MAAM;AACpB,uCAAS,YAAY,OAAO;AAC5B,WAAO,MAAM,mCAAS,UAAU;AAAA,EAClC,GAAG,CAAC,OAAO,KAAK,CAAC;AACnB;;;AHrBI,SAWE,OAAAE,QAXF,QAAAC,cAAA;AAjBG,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,GAAG;AACL,MAAyB;AAGvB,iBAAe,OAAQ,KAAK;AAE5B,QAAM,YAAYC,SAA0B,IAAI;AAChD,QAAM,cAAc,eAAe,KAAK,SAAS;AACjD,QAAM,EAAE,qBAAqB,MAAAC,MAAK,IAAI,eAAe;AAErD,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,KAAK;AAAA,MACL,WAAW;AAAA,QACT;AAAA,QACA,aAAO;AAAA,QACP,aAAO,QAAQ,mBAAmB,EAAE;AAAA,QACpC,yBAAiB,QAAQE,KAAI,EAAE;AAAA,QAC/B,cAAY,kBAAkB;AAAA,MAChC;AAAA,MAEA;AAAA,wBAAAH,OAAC,QAAK,MAAM,UAAU,UAAS,WAAU;AAAA,QACzC,gBAAAA,OAAC,UAAM,UAAS;AAAA;AAAA;AAAA,EAClB;AAEJ;AAEA,aAAa,cAAc;;;AIvD3B,SAA8B,aAAAI,aAAW,SAAAC,SAAO,UAAAC,UAAQ,YAAAC,kBAAgB;AAkFlE,gBAAAC,cAAA;AA/CC,IAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,MAAAC,QAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAiB;AACf,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,CAAC,eAAe,YAAY,IAAIC,WAAS,gCAAa,CAAC;AAC7D,QAAM,CAAC,aAAa,cAAc,IAAIA,WAAS,KAAK;AACpD,QAAM,aAAaC,SAAuB,IAAI;AAC9C,QAAM,eAAeA,SAAuB,IAAI;AAEhD,QAAM,kBAAkB,CAAC,UAAkB;AACzC,iBAAa,KAAK;AAClB,gBAAY,SAAS,KAAK;AAAA,EAC5B;AAEA,EAAAC,YAAU,MAAM;AACd,QAAI,cAAc,UAAa,cAAc,eAAe;AAC1D,mBAAa,SAAS;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,WAAW,aAAa,CAAC;AAE7B,SACE,gBAAAL;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,MAAAC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAD;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,YACF;AAAA,YACA,GAAG,WAAW,aAAO,IAAI;AAAA,YACzB;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;AAEA,KAAK,cAAc;;;AChGnB;AAAA,EAME,eAAAM;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,OACK;AAgGH,SAsBW,OAAAC,QAtBX,QAAAC,cAAA;AApDG,IAAM,MAAM,CAAC;AAAA,EAClB,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,CAAC;AAAA,EACb,QAAQ;AAAA,EACR;AAAA,EACA,GAAG;AACL,MAAgB;AAGd,iBAAe,OAAQ,KAAK;AAE5B,QAAM,UAAUC,SAA8C,IAAI;AAClE,QAAM,cAAc,eAAe,KAAK,OAAO;AAC/C,QAAM,EAAE,qBAAqB,MAAAC,MAAK,IAAI,eAAe;AAErD,QAAM,EAAE,OAAO,UAAU,GAAG,cAAc,IAAI;AAC9C,QAAM,iBAAiB,EAAE,MAAM,GAAG,cAAc;AAEhD,EAAAC,YAAU,MAAM;AAjFlB;AAkFI,QAAI,OAAO;AACT,oBAAQ,YAAR,mBAAiB;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,eAAeC,aAAY,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,uCAAU;AAAA,EACZ;AAEA,QAAM,kBAAkB,CACtB,MACG;AACH,iBAAa;AACb,2CAAY;AAAA,EACd;AAEA,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,aAAO;AAAA,UACP,aAAO,QAAQE,KAAI,KAAK,mBAAmB,EAAE;AAAA,UAC7C,UAAU,aAAO,aAAa;AAAA,UAC9B,aAAO,QAAQ,mBAAmB,EAAE;AAAA,UACpC,yBAAiB,QAAQA,KAAI,EAAE;AAAA,UAC/B,cAAY,kBAAkB;AAAA,QAChC;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,KAAK;AAAA,MACL,iBAAe;AAAA,MACf,MAAK;AAAA,MACL,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU,QAAQ,IAAI;AAAA,MAErB;AAAA,gBAAQ,gBAAAH,OAAC,QAAK,MAAY,UAAS,WAAU;AAAA,QAC9C,gBAAAA,OAAC,UAAM,UAAS;AAAA;AAAA;AAAA,EAClB;AAEJ;AAEA,IAAI,cAAc;;;ACrIlB;AAAA,EACE,YAAAM;AAAA,EAGA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAAC;AAAA,OACK;AAuFD,SAmBI,OAAAC,QAnBJ,QAAAC,cAAA;AAzEC,IAAM,UAAU,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAoB;AAClB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,eAAe;AAEnB,QAAM,WAAW,kBAAM,GAAG,MAAM;AAChC,QAAM,gBAAgBC,UAAS,QAAQ,QAAQ,EAAE;AACjD,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,eAAe,aAAa,KAAK;AACxE,QAAM,cAAc,eAAe,KAAK,UAAU;AAElD,QAAM,YAAY,oBAAoB,OAAO;AAE7C,QAAM,kBAAkBA,YACpBA,UAAS,IAAI,UAAU,CAAC,OAAO,UAAU;AACvC,UAAM,sBAAsB,MAAM;AAChC,sBAAgB,KAAK;AAAA,IACvB;AACA,WACEC,gBAAyB,KAAK,KAC9BC,cAAa,OAAO;AAAA,MAClB,IAAI,GAAG,MAAM,QAAQ,KAAK;AAAA,MAC1B,WAAW;AAAA,QACT,GAAG,MAAM,MAAM;AAAA,QACf,iBAAiB,GAAG,MAAM,UAAU,KAAK;AAAA,MAC3C;AAAA,MACA,QAAQ,cAAc;AAAA,MACtB;AAAA,MACA,OAAO,UAAU,SAAS;AAAA,MAC1B;AAAA,MACA,SAAS,gBAAgB,qBAAqB,MAAM,MAAM,OAAO;AAAA,IACnE,CAAC;AAAA,EAEL,CAAC,IACD,CAAC;AAEL,QAAM,CAAC,QAAQ,SAAS,IAAIC,WAAyC,CAAC,CAAC;AAEvE,QAAM,gBAAgB,CAAC,UAA+C;AACpE,mBAAe,IAAI;AACnB,eAAW,QAAQ,KAAK;AAAA,EAC1B;AAEA,QAAM,eAAe,CAAC,UAA+C;AA7EvE;AA+EI,SAAI,yCAAY,aAAY,MAAM,eAAe;AAC/C,eAAS,EAAE;AAAA,IACb;AAEA,QAAI,GAAC,8CAAY,YAAZ,mBAAqB,SAAS,MAAM,iBAAgB;AACvD,qBAAe,KAAK;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,eAA+B;AAAA;AAAA,IAEnC,CAAC,kBAAyB,GAAG,OAAO,KAAK,GAAG;AAAA,EAC9C;AAEA,SACE,gBAAAL,OAAC,2BAAwB,gBAAgB,WACvC,0BAAAC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,KAAK;AAAA,MACL,MAAK;AAAA,MACL,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT,aAAO,SAAS;AAAA,QAChB,CAAC,UAAU,aAAO,0BAA0B;AAAA,QAC5C,aAAO,wBAAwB;AAAA,QAC/B;AAAA,QACA;AAAA,MACF;AAAA,MACA,OAAO,EAAE,GAAG,OAAO,GAAG,aAAa;AAAA,MAElC;AAAA;AAAA,QACA,aACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,OAAO,kBAAkB,gBAAgB,SAAS;AAAA,YACjD,GAAG;AAAA;AAAA,QACN;AAAA;AAAA;AAAA,EAEJ,GACF;AAEJ;AAEA,QAAQ,cAAc;;;ACpGpB,gBAAAM,cAAA;AARK,IAAM,WAAW,CAAC;AAAA,EACvB,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,SAAQ;AAAA,IACP,GAAG,iBAAiB,IAAI,GAAG,WAAW,SAAS,GAAG,WAAW,IAAI;AAAA,IAClE,UAAU;AAAA,IACV,MAAK;AAAA,IACL,QAAQ,CAAC;AAAA,IAER;AAAA;AACH;AAGF,SAAS,cAAc;;;ACnCvB;AAAA,EACE,YAAAC;AAAA,EAEA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,OACK;AA4BH,gBAAAC,cAAA;AApBG,IAAM,YAAY,CAAC,EAAE,UAAU,KAAK,GAAG,KAAK,MAAsB;AACvE,QAAM,EAAE,WAAW,QAAQ,aAAa,IAAI,eAAe;AAC3D,QAAM,cAAc,eAAe,KAAK,YAAY;AAEpD,QAAM,gBAAgBC,UAAS,IAAI,UAAU,CAAC,OAAO,UAAU;AAC7D,UAAM,SAAS,UAAU;AACzB,WACEC,gBAA8B,KAAK,KACnCC,cAAa,OAAO;AAAA,MAClB,IAAI,GAAG,MAAM,UAAU,KAAK;AAAA,MAC5B;AAAA,MACA,WAAW;AAAA,QACT,mBAAmB,GAAG,MAAM,QAAQ,KAAK;AAAA,QACzC,iBAAiB;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,EAEL,CAAC;AAED,SACE,gBAAAH,OAAC,SAAI,KAAK,aAAc,GAAG,MACxB,yBACH;AAEJ;AAEA,UAAU,cAAc;;;ACvCxB;AAAA,EAAC,WAAAI;AAAA,EAQA,wBAAAC;AAAA,EAMA,+BAAAC;AAAA,EAKA,8BAAAC;AAAA,EAMA,+BAAAC;AAAA,EASA,8BAAAC;AAAA,EASA,8BAAAC;AAAA,EASA,6BAAAC;AAAA,EASA,+BAAAC;AAAA,EASA,8BAAAC;AAAA,EASA,4BAAAC;AAAA,EASA,2BAAAC;AAAA;;;ACbG,SAcuB,OAAAC,QAdvB,QAAAC,cAAA;AAtDJ,IAAMC,SAAiD;AAAA,EACrD,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AACX;AAkCO,IAAM,MAAM,CAAC;AAAA,EAClB;AAAA,EACA,UAAU;AAAA,EACV,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAgB;AACd,QAAM,OAAOA,OAAM,OAAO;AAE1B,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,QACF;AAAA,QACA;AAAA,UACE;AAAA,UACA,yBAAiB,YAAY;AAAA,UAC7B,YAAO;AAAA,UACP,YAAY,QAAQ,YAAO,sBAAsB;AAAA,UACjD,YAAO,cAAc,OAAO,KAAK,UAAU,EAAE;AAAA,QAC/C;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA,oBAAY,QAAQ,gBAAAD,OAAC,QAAK,MAAY,UAAS,SAAQ;AAAA,QACxD,gBAAAA,OAAC,6BAA2B,wCAAY,MAAK;AAAA;AAAA;AAAA,EAC/C;AAEJ;AAEA,IAAI,cAAc;;;AC9FlB,SAAgB,SAAAG,SAAO,mBAAAC,kBAAiB,UAAAC,UAAQ,YAAAC,kBAAgB;;;ACDhE;AAAA,EAAC,WAAAC;AAAA,EAIA,uBAAAC;AAAA,EAIA,uBAAAC;AAAA,EAIA,eAAAC;AAAA,EAIA,OAAAC;AAAA,EACG,qBAAAC;AAAA,EAMA,oBAAAC;AAAA,EAMA,qBAAAC;AAAA,EAQH,mBAAAC;AAAA,EAIA,gBAAAC;AAAA,EAIA,eAAAC;AAAA,EAIA,gBAAAC;AAAA,EAIA,OAAAC;AAAA,EAWA,QAAAC;AAAA,EAOA,QAAAC;AAAA,EAOA,mBAAAC;AAAA;;;AD4DK,SAEI,OAAAC,QAFJ,QAAAC,cAAA;AAnHC,IAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP,uBAAuB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB;AAAA,EACA,QAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAsB;AACpB,QAAM,CAAC,MAAM,OAAO,IAAIC,WAAiB,eAAe,OAAO,YAAY,CAAC;AAC5E,QAAM,YAAYC,SAAwB,IAAI;AAC9C,QAAM,YAAYA,SAAwB,IAAI;AAC9C,QAAM,CAAC,cAAc,eAAe,IAAID,WAAS,CAAC;AAClD,QAAM,CAAC,cAAc,eAAe,IAAIA,WAAS,CAAC;AAElD,EAAAE,iBAAgB,MAAM;AACpB,QAAI,UAAU,SAAS;AACrB,sBAAgB,UAAU,QAAQ,WAAW;AAAA,IAC/C;AACA,QAAI,UAAU,SAAS;AACrB,sBAAgB,UAAU,QAAQ,WAAW;AAAA,IAC/C;AAAA,EACF,GAAG,CAACH,SAAQ,MAAM,CAAC;AAEnB,QAAM,kBAA8D,CAClE,UACG;AACH,YAAQ,MAAM,OAAO,KAAK;AAE1B,QAAI,UAAU;AACZ,eAAS,KAAK;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,cAAcI,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,kBAAkB,CAAC,CAAC;AAC1B,QAAM,SAAS,CAAC,CAAC;AACjB,QAAM,WAAW,CAAC,CAAC;AACnB,QAAM,aAAa,mBAAmB;AACtC,QAAM,qBAAqB,mBAAmB,UAAU,CAAC,CAAC;AAC1D,QAAM,UAAU,CAAC,CAAC;AAClB,QAAM,WAAW,CAAC,EAAEJ,WAAA,OAAAA,UAAU;AAE9B,QAAM,qBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACA,QAAM,QAAQ,sBAAsB,UAAU,KAAK;AACnD,QAAM,iBAAiB,sBAAsB,UAAU,cAAc;AAErE,QAAM,aAAa;AAAA,IACjB;AAAA,IACA,kBAAkB,YAAY;AAAA,EAChC;AAEA,QAAM,oBAAoB;AAAA,IACxB;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,IAAI;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,oBAAoB,8BAA8B;AAAA,MAChD,SAAS,QAAQ;AAAA,MACjB,kBAAkB,iBAAiB;AAAA,MACnC,aAAa,uBAAuB,qBAAqB;AAAA,MACzD;AAAA,IACF,CAAC;AAAA,IACD,gBAAgB,kBAAkB,OAAO;AAAA,IACzC,GAAG;AAAA,EACL;AAGA,QAAM,sBAAsB,CAAC,EAAE,YAAY;AAE3C,QAAM,4BACJ,eACI,gCAAgC,YAAY,QAC5C;AAEN,QAAM,yBACJ,eACI,gCAAgC,YAAY,QAC5C;AAEN,MAAI,gBAAgB;AAEpB,MAAI,SAAS;AACX,oBACE,gBAAAD,OAAC,OAAI,WAAW,cAAY,aAAa,GAAG,OAAO,YAE/C;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,UAAU,qBAAqB,aAAa;AAAA,UAC5C,WAAW;AAAA,YACT,cAAY,+BAA+B;AAAA,YAC3C,kBAAO,SAAS,aAAa,EAAE;AAAA,UACjC;AAAA;AAAA,MACF;AAAA,MAEF,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT,kBAAO;AAAA,YACP,kBAAO,cAAc,aAAa,EAAE;AAAA,YACpC,kBAAO,iBAAiB;AAAA,UAC1B;AAAA,UACC,GAAG;AAAA;AAAA,MACN;AAAA,OACF;AAAA,EAEJ,WAAW,UAAU;AACnB,oBACE,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,OAAO;AAAA,QAEN;AAAA,UAAAC,WACC,gBAAAF;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,eAAW;AAAA,cACX,WAAW;AAAA,gBACT,kBAAO;AAAA,gBACP,kBAAO;AAAA,gBACP,YAAY,kBAAO,iBAAiB;AAAA,cACtC;AAAA,cAEC,UAAAE;AAAA;AAAA,UACH;AAAA,UAEF,gBAAAF;AAAA,YAAC;AAAA;AAAA,cACC,OAAO;AAAA,gBACL,oBAAoB;AAAA,gBACpB,kBAAkB;AAAA,cACpB;AAAA,cACA,WAAW,kBAAO,iBAAiB;AAAA,cAClC,GAAG;AAAA;AAAA,UACN;AAAA,UACC,UACC,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,eAAW;AAAA,cACX,WAAW;AAAA,gBACT,kBAAO;AAAA,gBACP,kBAAO;AAAA,gBACP,YAAY,kBAAO,iBAAiB;AAAA,cACtC;AAAA,cAEC;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,cAAY;AAAA,QACZ,kBAAO;AAAA,QACP,YAAY,kBAAO,qBAAqB;AAAA,QACxC,YAAY,kBAAO,qBAAqB;AAAA,MAC1C;AAAA,MACA;AAAA,MAEC;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,SAAQ;AAAA,YACR,SAAS;AAAA,YACT;AAAA,YACA;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QAED,gBACC,gBAEA,gBAAAA,OAAC,OAAI,IAAI,eAAe,OAAO,YAAa,GAAG,mBAAmB;AAAA,QAEnE,sBACC,gBAAAC;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,gBACE,uBACI,aACE,kBACA,aACF;AAAA,YAEN,KAAI;AAAA,YACJ,OAAO,uBAAuB,aAAa;AAAA,YAE1C;AAAA,iCAAmB,KAAK,OAAO,cAAc,cAAc;AAAA,cAC3D;AAAA,gBACC;AAAA,gBACA;AAAA,gBACA,KAAK;AAAA,gBACL;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,UAAU,cAAc;;;AElQxB,SAAmD,SAAAM,eAAa;;;ACAhE;AAAA,EAAC,OAAAC;AAAA,EAQA,OAAAC;AAAA,EAcA,OAAAC;AAAA,EAeO,WAAAC;AAAA,EAOP,uBAAAC;AAAA,EAEE,mBAAAC;AAAA,EAOF,QAAAC;AAAA,EA6BA,OAAAC;AAAA,EA8BA,qBAAAC;AAAA,EA0CA,mBAAAC;AAAA,EAuBA,oBAAAC;AAAA;;;ADnFK,gBAAAC,QAqCA,QAAAC,cArCA;AAnCC,IAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA,MAAAC,QAAO;AAAA,EACP,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,CAAC;AAAA,EACb,GAAG;AACL,MAAmB;AACjB,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,QAAM,WAAWD,UAAS,UAAU,WAAW;AAE/C,QAAM,CAAC,SAAS,UAAU,IAAI,qBAAqB;AAAA,IACjD,OAAO;AAAA,IACP,cAAc,0CAAkB;AAAA,IAChC;AAAA,EACF,CAAC;AAED,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,MACT,WAAW;AAAA,QACT,eAAO;AAAA,QACP,eAAOC,KAAI;AAAA,QACX,aAAa,eAAO,mBAAmB;AAAA,QACvC,YAAY,eAAO,iBAAiB;AAAA,QACpC,YAAY,eAAO,kBAAkB;AAAA,MACvC;AAAA,MAEA;AAAA,wBAAAF;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,cACF;AAAA,cACA;AAAA,gBACE;AAAA,gBACA,cAAY,mBAAmB;AAAA,gBAC/B,mBAAW,YAAY;AAAA,cACzB;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,MAAK;AAAA,YACL;AAAA,YACA,UAAU,OAAK,WAAW,EAAE,OAAO,OAAO;AAAA,YAC1C;AAAA,YACA,iBAAe;AAAA,YACf,iBAAe;AAAA,YACf,WAAW;AAAA,cACT;AAAA,cACA,YAAY;AAAA,cACZ,UAAU;AAAA,YACZ;AAAA,YACA,SAAS,qBAAqB,YAAY,WAAW,UAAU,OAAO;AAAA;AAAA,QACxE;AAAA,QACA,gBAAAA,OAAC,UAAK,WAAW,GAAG,eAAO,OAAO,cAAY,sBAAsB,CAAC,GACnE,0BAAAA,OAAC,UAAK,WAAW,eAAO,OACrB,sBACC,gBAAAA,OAAC,WAAQ,MAAM,uBAAuBE,KAAI,KAAK,IAE/C,gBAAAF;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,eAAO;AAAA,YAClB,MAAM;AAAA,YACN;AAAA;AAAA,QACF,GAEJ,GACF;AAAA,QACA,gBAAAC,OAAC,UAAK,WAAW,GAAG,YAAY,eAAO,qBAAqB,CAAC,GAC1D;AAAA,sBACC,gBAAAD;AAAA,YAAC;AAAA;AAAA,cACC,MAAM;AAAA,cACN,UAAS;AAAA,cACT,WAAW,eAAO,iBAAiB;AAAA;AAAA,UACrC;AAAA,UAED;AAAA,UAAU;AAAA,UACV,aACC,gBAAAA,OAAC,kBAAe,IAAG,QAAO,qCAAiB;AAAA,WAE/C;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,OAAO,cAAc;;;AEpJrB,SAA2B,SAAAI,SAAO,YAAAC,kBAAgB;;;ACAlD,SAA2B,iBAAAC,iBAAe,cAAAC,oBAAkB;AAWrD,IAAM,mBAAmBD,gBAAoC;AAAA,EAClE,MAAM;AACR,CAAC;AAEM,IAAM,sBAAsB,MAAMC,aAAW,gBAAgB;;;ACfpE;AAAA,EAAC,KAAAC;AAAA,EAMA,SAAAC;AAAA,EAwBA,6BAAAC;AAAA,EASA,6BAAAC;AAAA,EAKA,8BAAAC;AAAA,EAQA,8BAAAC;AAAA,EAKA,6BAAAC;AAAA,EAQA,6BAAAC;AAAA,EAKA,8BAAAC;AAAA,EAQA,8BAAAC;AAAA,EAKA,OAAAC;AAAA;;;AFnCK,SAQI,OAAAC,QARJ,QAAAC,cAAA;AAtCC,IAAM,YAAY,CACvB,UACG;AACH,QAAM;AAAA,IACJ;AAAA,IACA,MAAAC,QAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AAErC,QAAM,CAAC,YAAY,aAAa,IAAIC,WAAyB,KAAK;AAElE,QAAM,eAAe;AAAA,IACnB,CAAC,MAAqC,cAAc,EAAE,OAAO,KAAK;AAAA,IAClE,OAAK,YAAY,SAAS,GAAG,EAAE,OAAO,KAAU;AAAA,EAClD;AAEA,QAAM,UAAU,SAAS,GAAG,QAAQ;AAEpC,SACE,gBAAAJ;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,QACL,MAAME;AAAA,QACN,UAAU;AAAA,QACV;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MAEA,0BAAAD;AAAA,QAAC;AAAA;AAAA,UACE,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,UACnD;AAAA,UACA,KAAI;AAAA,UACJ,MAAK;AAAA,UACL,mBAAiB,4BAAW,uCAAY;AAAA,UAEvC;AAAA,qBACC,gBAAAD,OAAC,cAAW,IAAI,SAAS,IAAG,QAAO,gBAAe,eAC/C,iBACH;AAAA,YAEF,gBAAAA,OAAC,SAAI,WAAW,kBAAO,KAAM,UAAS;AAAA;AAAA;AAAA,MACxC;AAAA;AAAA,EACF;AAEJ;AAEA,UAAU,cAAc;;;AGlExB,SAAqD,SAAAK,eAAa;AA4F5D,gBAAAC,QAmBA,QAAAC,cAnBA;AA5EC,IAAMC,mBAA+D;AAAA,EAC1E,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV;AA2BA,IAAM,mBAAmB,CACvB,OACA,OACA,YACY;AACZ,MAAI,OAAO,YAAY,YAAa,QAAO;AAE3C,MAAI,OAAO,UAAU,eAAe,UAAU,QAAQ,OAAO;AAC3D,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,UAAU,OAAO,+BAAO,KAAK;AAAA,IACtC;AACA,WAAO,WAAU,+BAAO;AAAA,EAC1B;AAEA,SAAO,CAAC,CAAC;AACX;AAEO,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAwB;AACtB,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,QAAM,QAAQ,oBAAoB;AAElC,QAAM,eAAe,CAAC,UAAyC;AAC7D,gBAAY,SAAS,KAAK;AAC1B,oCAAO,aAAY,MAAM,SAAS,KAAK;AAAA,EACzC;AAEA,QAAM,gBAAgB,QAAQ,cAAc;AAE5C,SACE,gBAAAF,OAAC,WAAM,SAAS,UAAU,WAAW,kBAAO,OAC1C;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA,cAAY,mBAAmB;AAAA,YAC/B,mBAAW,YAAY;AAAA,UACzB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,MAAK;AAAA,QACL,MAAM,sBAAQ,MAAM;AAAA,QACpB,UAAU;AAAA,QACV;AAAA,QACA,SAAS,iBAAiB,OAAO,OAAO,OAAO;AAAA,QAC/C,cAAY;AAAA,QACZ,mBAAiB;AAAA;AAAA,IACnB;AAAA,IACA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,gBAAgBC,iBAAgB,MAAM,IAAI;AAAA,QAC1C,WAAW;AAAA,UACT,kBAAO;AAAA,UACP,kBAAO,YAAY,MAAM,IAAI,KAAK,aAAa,EAAE;AAAA,UACjD,cAAY,sBAAsB;AAAA,QACpC;AAAA,QAEC;AAAA,kBAAQ,gBAAAF,OAAC,QAAK,MAAY,UAAS,WAAU;AAAA,UAC7C,SAAS,gBAAAA,OAAC,UAAM,iBAAM;AAAA;AAAA;AAAA,IACzB;AAAA,KACF;AAEJ;AAEA,YAAY,cAAc;;;AC/H1B,SAAS,SAAAI,eAAa;;;ACAtB;AAAA,EAAC,SAAAC;AAAA,EA2BA,OAAAC;AAAA,EAKA,QAAAC;AAAA,EAKA,sBAAAC;AAAA;;;ADVK,gBAAAC,QAaA,QAAAC,cAbA;AAfC,IAAM,eAAe,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAAC,QAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAyB;AACvB,QAAM,cAAcC,QAAM;AAC1B,QAAM,WAAW,kBAAM,GAAG,WAAW;AACrC,QAAM,UAAU,CAAC,CAAC;AAElB,SACE,gBAAAF,OAAC,OAAI,IAAG,SAAQ,SAAS,UAAU,OAAM,eACvC;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA,cAAY,mBAAmB;AAAA,YAC/B,mBAAW,YAAY;AAAA,UACzB;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,MAAK;AAAA;AAAA,IACP;AAAA,IACA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT,qBAAO;AAAA,UACP,qBAAOC,KAAI;AAAA,UACX,WAAW,qBAAO,oBAAoB;AAAA,UACtC,yBAAiB,QAAQA,KAAI,EAAE;AAAA,UAC/B,cAAY,sBAAsB;AAAA,QACpC;AAAA,QAEC;AAAA,qBAAW,gBAAAF,OAAC,QAAK,MAAY,UAAS,WAAU;AAAA,UAAG;AAAA,UAAE;AAAA;AAAA;AAAA,IACxD;AAAA,KACF;AAEJ;AAEA,aAAa,cAAc;;;AEvD3B,SAAS,SAAAI,eAAa;AAyClB,SAOI,OAAAC,QAPJ,QAAAC,cAAA;AAhBG,IAAM,oBAAoB,CAAC,UAAkC;AAClE,QAAM;AAAA,IACJ;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,cAAcC,QAAM;AAC1B,QAAM,gBAAgB,4BAAW,GAAG,WAAW;AAE/C,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,KAAI;AAAA,MACH,GAAG,iBAAiB,IAAI,WAAW,WAAW,IAAI;AAAA,MACnD,MAAK;AAAA,MACL,mBAAiB,QAAQ,gBAAgB;AAAA,MAExC;AAAA,SAAC,CAAC,SACD,gBAAAD,OAAC,cAAW,IAAG,QAAO,gBAAe,eAAc,IAAI,eACpD,iBACH;AAAA,QAEF,gBAAAA,OAAC,OAAI,SAAQ,QAAO,UAAS,QAAO,KAAI,SAAQ,eAAe,WAC5D,UACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,kBAAkB,cAAc;","names":["contrast","a","a--margins","a--external","a--visited","body-xsmall","body-xsmall--margins","body-small","body-small--margins","body-medium","body-medium--margins","body-large","body-large--margins","lead-medium","lead-medium--margins","heading-xxsmall","heading-xxsmall--margins","heading-xsmall","heading-xsmall--margins","heading-small","heading-small--margins","heading-medium","heading-medium--margins","heading-large","heading-large--margins","heading-xlarge","heading-xlarge--margins","heading-xxlarge","heading-xxlarge--margins","label-medium","label-medium--margins","legend","caption--withMargins","bold","italic","underline","text-color--default","text-color--medium","text-color--subtle","text-color--on-inverse","scrollbar","invisible","remove-list-styling","remove-button-styling","normalize-button","hide-input","inherit-link-styling","scrollable-y","visibility-transition","visibility-transition--open","visibility-transition--closed","visually-hidden","center-absolute","center-absolute-y","center-absolute-x","container","backdrop","drawer","modal","backdrop--visible","backdrop--hidden","prefix","wrapper","jsx","svg","group","group--up","group--down","left","left--up","left--down","right","right--up","right--down","jsx","jsx","jsx","container","input-group","input","disabled","read-only","input--stateful","input--hover","input--stateful-danger","input--medium","input--small","input--xsmall","input--with-affix","label","char-counter","input-group__absolute-element","focusable","focused","focusable-within","has-focusable-input","focusable-sibling","focus-styled-sibling","focusable--inset","jsx","wrapper","inner","jsx","container","size","svg","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsxs","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","jsx","read-only","read-only__icon","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","jsxs","arrow","useEffect","useEffect","useCallback","useEffect","useRef","useEffect","useState","useEffect","useEffect","useEffect","useRef","useRef","useEffect","useCallback","useEffect","useState","size","useEffect","useState","ScreenSize","screenSize","useEffect","jsx","dds-p","dds-p-i","dds-p-b","dds-m","dds-m-i","dds-m-b","dds-h","dds-max-h","dds-min-h","dds-w","dds-max-w","dds-min-w","dds-pos","dds-l","dds-r","dds-t","dds-b","dds-o","dds-o-x","dds-o-y","dds-display","dds-text-align","dds-flex-dir","dds-gap","dds-c-gap","dds-r-gap","dds-a-i","dds-a-c","dds-j-i","dds-j-c","dds-wrap","dds-basis","dds-flow","prefix","xs-hide-below","sm-hide-below","md-hide-below","lg-hide-below","xl-hide-below","xs-hide-above","sm-hide-above","md-hide-above","lg-hide-above","jsx","jsx","dds-grid-template-columns","dds-grid-column","dds-grid-row","dds-j-self","child--first-half","child--second-half","child-col-count","jsx","jsx","background","border","container","shadow--1","shadow--2","shadow--3","shadow--4","border-radius--button","border-radius--surface","border-radius--chip","border-radius--input","border-radius--rounded","border-radius--0","jsx","jsx","jsx","container","header-button","body","useCallback","useEffect","useId","useRef","useState","header-button","header-container","header__content","header__chevron","body","body--animated","body--hidden","useState","useId","useEffect","useCallback","useRef","jsx","jsx","jsx","jsxs","jsx","icon","jsx","jsxs","jsx","isValidElement","icon","button","button--is-loading","button--full-width","just-icon","just-text","with-text-and-icon","with-icon-left","button--xsmall","with-icon-right","no-content","icon","button--small","button--medium","button--large","spinner-wrapper--absolute","icon-wrapper","button--primary","button--secondary","button--tertiary","button--danger","createContext","useContext","useId","useRef","svg","rotate","circle","dash","jsx","jsxs","size","useRef","useId","jsx","jsxs","size","useEffect","createContext","useContext","useEffect","useState","jsx","createContext","useState","useEffect","useContext","container","list","list__item","default","danger","list__item--link","icon","button-loading","jsx","useEffect","useEffect","useRef","jsx","jsxs","useRef","useEffect","useEffect","useRef","jsx","jsxs","useRef","useEffect","divider","divider--default","divider--subtle","divider--on-inverse","jsx","jsx","jsx","jsx","jsxs","jsx","useId","useRef","useState","jsx","useState","useId","useRef","Children","Fragment","jsx","jsxs","isValidElement","group","group--column","group--row","jsx","container","container--filled","container--border","container--navigation","container--expandable","jsx","container","header-button","header-container","header-container__chevron","body","body__content","jsx","jsx","jsxs","jsx","useState","container","jsx","jsxs","useState","Children","jsx","Children","container","jsx","useId","createContext","useContext","container","group","group--row","group--column","label","selection-control","label--readonly","label--checkbox","label--radio","label--disabled","label--error","label--no-text","selection-control--radio","jsx","jsxs","Label","jsx","jsxs","useId","Label","useId","container","container--error","icon","Fragment","jsx","jsxs","jsx","jsxs","useId","checkbox-label","jsx","jsxs","jsx","jsxs","useLocale","useContext","useContext","useRef","date-input","date-input--medium","date-input--small","date-input--xsmall","date-segment-container","segment","segment__placeholder","segment__placeholder--invisible","icon-wrapper","icon-wrapper--disabled","icon-wrapper--readonly","icon-wrapper--small","icon-wrapper--medium","popover-button","disabled","popover-button--readonly","popover","modal-close-button-wrapper","calendar","calendar__header","calendar__header__month","calendar__month-button","calendar__week-number","calendar__cell-button","calendar__cell-button--today","calendar__cell-button--default","calendar__cell-button--selected","calendar__cell-button--unavailable","calendar__cell-button--unavailable--today","jsx","useRef","jsx","createContext","useContext","useEffect","useRef","createContext","useContext","useEffect","useRef","useState","global-variables","global-styles","jsx","createContext","useRef","useState","useEffect","useContext","Fragment","jsx","jsxs","createContext","useRef","useContext","useEffect","jsx","jsxs","locale","useContext","jsx","jsxs","locale","useLocale","useContext","useRef","createCalendar","useLocale","useRef","useRef","jsx","useRef","size","useRef","jsx","jsxs","useRef","useContext","jsx","jsxs","useContext","jsx","locale","useLocale","createCalendar","useRef","useRef","jsx","jsxs","useRef","useRef","jsx","useRef","list","list--default","list--subtle","list--row","list--column","desc","group","jsx","jsx","jsx","jsxs","jsx","list","list--with-dividers","row","list--striped","list--striped-with-bp","list--small","cell","list--medium","list--large","column","term","createContext","useContext","jsx","size","jsx","Fragment","jsx","jsxs","jsx","useContext","useEffect","useRef","createPortal","container","container--left","container--left-opened","container--left-closed","container--right","container--right-opened","container--right-closed","content-container","drawer-header","button--close","createContext","useContext","jsx","jsxs","size","useContext","useEffect","useRef","createPortal","ReactChildren","cloneElement","isValidElement","useId","useRef","useState","jsx","useState","useId","useRef","Children","ReactChildren","isValidElement","cloneElement","message","jsx","jsxs","useId","container","icon","container--medium","container--large","icon--invisible","useState","useCallback","useEffect","useRef","useState","jsx","jsxs","size","useId","useEffect","useState","rating-container","rating-container--horizontal","rating-container--vertical","rating-submitted-title","button","button--horizontal","button--vertical","useEffect","useId","useRef","useState","textarea","jsx","jsxs","useId","useRef","useState","useEffect","jsx","jsx","jsxs","ReactChildren","cloneElement","useEffect","useId","useRef","useState","container","svg-arrow__border","svg-arrow__background","paper","jsx","jsxs","useId","useState","useRef","useEffect","ref","ReactChildren","cloneElement","jsx","jsxs","layout","jsx","useState","useEffect","container","jsx","jsx","useId","jsx","input-container","input-container--with-errors","input-container--drag-active","input-container--no-drag-zone","file--invalid","file__icon--invalid","file__icon--valid","file__name","jsx","jsxs","useCallback","useEffect","useRef","useRef","useEffect","useCallback","jsx","jsxs","useId","container","left","list","list-group","socials-group","socials-list","jsx","jsx","jsx","jsx","jsx","jsx","jsx","jsx","useState","container","container--info","icon","container--danger","container--warning","content","content--closable","jsx","jsxs","useState","button","jsx","useRef","createContext","useContext","useState","jsx","createContext","useContext","useState","useId","useRef","inline-input","inline-input--with-icon","inline-textarea","icon-wrapper","jsxs","jsx","jsxs","useId","useRef","jsx","useRef","useRef","useId","useRef","jsx","jsxs","useId","useRef","jsx","useRef","useState","bar","bar-separator","bar--with-nav","context-menu-group","nav-list","nav-list__item","nav-list__item__link","nav-list__item__link--active","context-menu","jsx","jsx","jsxs","useState","rest","list","list--inherit","list--unordered","list--ordered","li","jsx","List","jsx","useState","container","container--info","icon","container--warning","container--danger","container--success","container--tips","container--horisontal","container--horisontal--closable","container--vertical","container--vertical--closable","container__text","container__icon","container__button","Fragment","jsx","jsxs","icons","useState","useContext","useEffect","useId","useRef","createPortal","container","container-scrollable","header-container","close-button","content","body","jsx","jsxs","useId","useContext","useEffect","useRef","createPortal","jsx","jsx","useState","list","list__item","list__item--hidden","indicators","truncation-icon","useContext","useId","container--disabled","container--readonly","inner-single-value","icon--medium","icon--small","icon--xsmall","control","control--readonly","dropdown-indicator","control--disabled","size","jsx","jsxs","Input","size","jsx","jsxs","useContext","useId","label","useId","select","select--readonly","select--medium","select--small","select--xsmall","select--multiple","icon","jsx","jsxs","useId","jsx","jsxs","useState","useEffect","useId","useLayoutEffect","useRef","useState","inputs-container","input","select","inputs-container--small-screen-xs","inputs-container--small-screen-sm","inputs-container--small-screen-md","inputs-container--small-screen-lg","inputs-container--small-screen-xl","calling-code","jsx","jsxs","useId","useState","useRef","useLayoutEffect","useEffect","_a","useContext","useEffect","useId","createPortal","container","content--closable--no-header","header","close-button","createContext","useContext","jsx","jsxs","useContext","useId","useEffect","createPortal","ReactChildren","cloneElement","isValidElement","useId","useRef","useState","jsx","useState","useId","useRef","_a","Children","ReactChildren","isValidElement","cloneElement","Children","cloneElement","isValidElement","useEffect","useMemo","useState","createContext","useContext","list","list-item","list-item--column","list-item--row","item-button","item-number--active-incomplete","item-number--inactive-incomplete","item-number--active-completed","item-number--inactive-completed","item-text--active-completed","item-text--active-incomplete","item-text--inactive-completed","item-text--inactive-incomplete","item-div","item-number","item-number--disabled","item-text","item-text--disabled","useMemo","Fragment","jsx","jsxs","useMemo","jsx","useState","useEffect","useMemo","Children","isValidElement","cloneElement","useId","progress","fill","fill--done","fill--error","fill--indeterminate","indeterminate","jsx","jsxs","size","useId","useId","useState","createContext","useContext","with-button-container","input","search-icon","clear-button","suggestions","typographyTypes","useEffect","useRef","jsx","useRef","useEffect","jsx","jsxs","typographyTypes","Fragment","jsx","jsxs","getIconSize","size","useId","useState","typographyTypes","useEffect","useRef","useState","jsx","useState","useEffect","data","value","useRef","Search","useId","createContext","useContext","jsx","jsxs","useId","Label","useId","useState","jsx","jsxs","useState","useId","ddsSkeletonAnimation","container","jsx","wrapper","jsx","useState","container","main","option","option--primary","jsx","jsxs","size","useState","Children","Fragment","cloneElement","isValidElement","useEffect","useState","createContext","useContext","jsx","createContext","useContext","jsx","wrapper","wrapper--scrollable","table","table--with-dividers","row--body","row--colapsible-header--open","table--sticky-header","table--small","table--medium","table--large","row","row--sum","row--selected","row--hoverable","cell--head","cell--left","cell--right","cell--center","cell__inner","sort-button","collapse-button","jsx","jsx","jsx","jsx","jsxs","jsx","size","useContext","useEffect","useRef","useState","jsx","useContext","container","useState","useRef","useEffect","Table","Fragment","jsx","jsxs","useState","useEffect","Children","prefix","isValidElement","cloneElement","Table","jsx","Table","CollapsibleTable","useRef","createContext","useContext","tabs","tab-row","tab-row--standard-widths","tab-row--custom-widths","tab","tab--medium--row","tab--small--row","tab--medium--column","tab--small--column","tab--row","tab--column","tab--active","createContext","useContext","useLayoutEffect","jsx","jsx","jsxs","useRef","size","useEffect","useId","useRef","useState","jsx","size","useId","useState","useRef","useEffect","useCallback","useEffect","useRef","jsx","jsxs","useRef","size","useEffect","useCallback","Children","cloneElement","isValidElement","useState","jsx","jsxs","Children","isValidElement","cloneElement","useState","jsx","Children","cloneElement","isValidElement","jsx","Children","isValidElement","cloneElement","container","container--with-icon","container--default--default","container--default--strong","container--success--default","container--success--strong","container--danger--default","container--danger--strong","container--warning--default","container--warning--strong","container--info--default","container--info--strong","jsx","jsxs","icons","useId","useLayoutEffect","useRef","useState","container","container--readonly","container--disabled","input-width","input","with-icon--medium","with-icon--small","with-icon--xsmall","input--extended","icon--medium","icon--small","icon--xsmall","affix","prefix","suffix","affix--disabled","jsx","jsxs","prefix","useState","useRef","useLayoutEffect","useId","useId","label","track","thumb","checkmark","labeltext--readonly","icon--read-only","medium","large","label--is-loading","label--disabled","label--read-only","jsx","jsxs","size","useId","useId","useState","createContext","useContext","bar","content","content--large--just-icon","content--large--with-text","content--medium--just-icon","content--medium--with-text","content--small--just-icon","content--small--with-text","content--xsmall--just-icon","content--xsmall--with-text","label","jsx","jsxs","size","useId","useState","useId","jsx","jsxs","typographyTypes","useId","useId","content","small","xsmall","content--with-icon","jsx","jsxs","size","useId","useId","jsx","jsxs","useId"]}
|