@fremtind/jokul 0.68.3 → 0.68.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -15
- package/build/build-stats.html +15 -15
- package/build/cjs/components/accordion/AccordionItem.cjs.map +1 -1
- package/build/cjs/components/autosuggest/Autosuggest.cjs.map +1 -1
- package/build/cjs/components/autosuggest/BaseAutosuggest.cjs +2 -2
- package/build/cjs/components/autosuggest/BaseAutosuggest.cjs.map +1 -1
- package/build/cjs/components/autosuggest/ControllerButton.cjs.map +1 -1
- package/build/cjs/components/autosuggest/utils.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/Breadcrumb.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/documentation/BreadcrumbDocs.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/stories/Breadcrumb.stories.cjs +1 -1
- package/build/cjs/components/breadcrumb/stories/Breadcrumb.stories.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/stories/BreadcrumbItem.stories.cjs.map +1 -1
- package/build/cjs/components/button/Button.cjs.map +1 -1
- package/build/cjs/components/button/documentation/ButtonDocs.cjs.map +1 -1
- package/build/cjs/components/card/Card.cjs.map +1 -1
- package/build/cjs/components/card/CardImage.cjs.map +1 -1
- package/build/cjs/components/card/NavCard.cjs.map +1 -1
- package/build/cjs/components/card/stories/Card.stories.cjs.map +1 -1
- package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
- package/build/cjs/components/checkbox-panel/stories/CheckboxPanel.stories.cjs.map +1 -1
- package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
- package/build/cjs/components/combobox/stories/Combobox.stories.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/CookieConsentContext.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/stories/CookieConsent.stories.cjs.map +1 -1
- package/build/cjs/components/countdown/Countdown.cjs.map +1 -1
- package/build/cjs/components/countdown/stories/Countdown.stories.cjs.map +1 -1
- package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/Calendar.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/calendarReducer.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/useCalendar.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/utils.cjs.map +1 -1
- package/build/cjs/components/datepicker/stories/Datepicker.stories.cjs.map +1 -1
- package/build/cjs/components/description-list/stories/DescriptionList.stories.cjs.map +1 -1
- package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
- package/build/cjs/components/expander/ExpandablePanelContent.cjs.map +1 -1
- package/build/cjs/components/expander/Expander.cjs.map +1 -1
- package/build/cjs/components/expander/deprecated/ExpandSection.cjs.map +1 -1
- package/build/cjs/components/expander/deprecated/Expander.cjs.map +1 -1
- package/build/cjs/components/expander/stories/Expander.stories.cjs.map +1 -1
- package/build/cjs/components/expander/stories/ExpanderPanel.stories.cjs.map +1 -1
- package/build/cjs/components/feedback/Feedback.cjs.map +1 -1
- package/build/cjs/components/feedback/feedbackContext.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/followupContext.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/useFollowup.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/MainQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/mainQuestionContext.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/useMainQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/AddonQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/RadioQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/SmileyQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/TextQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/smileyUtils.cjs.map +1 -1
- package/build/cjs/components/feedback/utils.cjs.map +1 -1
- package/build/cjs/components/file-input/File.cjs.map +1 -1
- package/build/cjs/components/file-input/FileInput.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/Dropzone.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/Input.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/fileInputContext.cjs.map +1 -1
- package/build/cjs/components/file-input/internal/validateFile.cjs.map +1 -1
- package/build/cjs/components/file-input/stories/FileInput.stories.cjs.map +1 -1
- package/build/cjs/components/flex/Flex.cjs.map +1 -1
- package/build/cjs/components/icon/icons/GreenCheckIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/RedCrossIcon.cjs.map +1 -1
- package/build/cjs/components/icon/stories/Icons.stories.cjs.map +1 -1
- package/build/cjs/components/icon-button/IconButton.cjs.map +1 -1
- package/build/cjs/components/icon-button/stories/IconButton.stories.cjs.map +1 -1
- package/build/cjs/components/image/Image.cjs.map +1 -1
- package/build/cjs/components/image/stories/Image.stories.cjs.map +1 -1
- package/build/cjs/components/image/useImageLoadingStatus.cjs.map +1 -1
- package/build/cjs/components/input-group/FieldGroup.cjs.map +1 -1
- package/build/cjs/components/input-group/InputGroup.cjs.map +1 -1
- package/build/cjs/components/input-group/Label.cjs.map +1 -1
- package/build/cjs/components/input-group/SupportLabel.cjs.map +1 -1
- package/build/cjs/components/input-group/stories/FieldGroup.stories.cjs +1 -1
- package/build/cjs/components/input-group/stories/FieldGroup.stories.cjs.map +1 -1
- package/build/cjs/components/input-group/stories/InputGroup.stories.cjs +1 -1
- package/build/cjs/components/input-group/stories/InputGroup.stories.cjs.map +1 -1
- package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
- package/build/cjs/components/link-list/stories/LinkList.stories.cjs.map +1 -1
- package/build/cjs/components/list/List.cjs.map +1 -1
- package/build/cjs/components/list/stories/List.stories.cjs.map +1 -1
- package/build/cjs/components/loader/Loader.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonAnimation.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonLabel.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonTextArea.cjs.map +1 -1
- package/build/cjs/components/loader/stories/Skeleton.stories.cjs.map +1 -1
- package/build/cjs/components/logo/Logo.cjs.map +1 -1
- package/build/cjs/components/logo/LogoStamp.cjs.map +1 -1
- package/build/cjs/components/logo/stories/Logo.stories.cjs.map +1 -1
- package/build/cjs/components/logo/stories/LogoStamp.stories.cjs.map +1 -1
- package/build/cjs/components/logo/useTextSpinner.cjs.map +1 -1
- package/build/cjs/components/menu/Menu.cjs +1 -1
- package/build/cjs/components/menu/Menu.cjs.map +1 -1
- package/build/cjs/components/menu/MenuItem.cjs.map +1 -1
- package/build/cjs/components/menu/MenuItemCheckbox.cjs.map +1 -1
- package/build/cjs/components/menu/stories/Menu.stories.cjs.map +1 -1
- package/build/cjs/components/menu/stories/MenuDivider.stories.cjs.map +1 -1
- package/build/cjs/components/menu/stories/MenuItem.stories.cjs.map +1 -1
- package/build/cjs/components/menu/useMenuWideEvents.cjs.map +1 -1
- package/build/cjs/components/message/FormErrorMessage.cjs.map +1 -1
- package/build/cjs/components/message/Message.cjs.map +1 -1
- package/build/cjs/components/message/stories/ErrorMessage.stories.cjs.map +1 -1
- package/build/cjs/components/message/stories/InfoMessage.stories.cjs.map +1 -1
- package/build/cjs/components/message/stories/SuccessMessage.stories.cjs.map +1 -1
- package/build/cjs/components/message/stories/WarningMessage.stories.cjs.map +1 -1
- package/build/cjs/components/modal/Modal.cjs.map +1 -1
- package/build/cjs/components/modal/stories/CompleteModal.stories.cjs +1 -1
- package/build/cjs/components/modal/stories/ModalCloseButton.stories.cjs +1 -1
- package/build/cjs/components/modal/stories/ModalCloseButton.stories.cjs.map +1 -1
- package/build/cjs/components/modal/useModal.cjs.map +1 -1
- package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
- package/build/cjs/components/popover/Popover.cjs.map +1 -1
- package/build/cjs/components/popover/stories/PopoverControlled.stories.cjs +1 -1
- package/build/cjs/components/popover/stories/PopoverControlled.stories.cjs.map +1 -1
- package/build/cjs/components/popover/stories/PopoverUncontrolled.stories.cjs +1 -1
- package/build/cjs/components/popover/stories/PopoverUncontrolled.stories.cjs.map +1 -1
- package/build/cjs/components/progress-bar/ProgressBar.cjs.map +1 -1
- package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
- package/build/cjs/components/radio-button/RadioButton.cjs.map +1 -1
- package/build/cjs/components/radio-button/RadioButtonGroup.cjs.map +1 -1
- package/build/cjs/components/radio-button/stories/RadioButtonGroup.stories.cjs +1 -1
- package/build/cjs/components/radio-panel/RadioPanel.cjs.map +1 -1
- package/build/cjs/components/radio-panel/RadioPanelGroup.cjs.map +1 -1
- package/build/cjs/components/select/NativeSelect.cjs.map +1 -1
- package/build/cjs/components/select/Select.cjs.map +1 -1
- package/build/cjs/components/select/stories/select.stories.cjs.map +1 -1
- package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
- package/build/cjs/components/system-message/common/MessageIcon.cjs.map +1 -1
- package/build/cjs/components/table/ExpandableTableRowController.cjs.map +1 -1
- package/build/cjs/components/table/Table.cjs.map +1 -1
- package/build/cjs/components/table/TableCell.cjs.map +1 -1
- package/build/cjs/components/table/TableHead.cjs.map +1 -1
- package/build/cjs/components/table/TableHeader.cjs.map +1 -1
- package/build/cjs/components/table/TablePagination.cjs.map +1 -1
- package/build/cjs/components/table/TableRow.cjs.map +1 -1
- package/build/cjs/components/table/stories/table.stories.cjs.map +1 -1
- package/build/cjs/components/table/utils.cjs.map +1 -1
- package/build/cjs/components/tabs/NavTab.cjs.map +1 -1
- package/build/cjs/components/tabs/NavTabs.cjs.map +1 -1
- package/build/cjs/components/tabs/Tab.cjs.map +1 -1
- package/build/cjs/components/tabs/TabList.cjs.map +1 -1
- package/build/cjs/components/tabs/TabPanel.cjs.map +1 -1
- package/build/cjs/components/tabs/Tabs.cjs +1 -1
- package/build/cjs/components/tabs/Tabs.cjs.map +1 -1
- package/build/cjs/components/tabs/stories/NavTabs.stories.cjs.map +1 -1
- package/build/cjs/components/tabs/stories/Tabs.stories.cjs.map +1 -1
- package/build/cjs/components/text-area/BaseTextArea.cjs.map +1 -1
- package/build/cjs/components/text-area/TextArea.cjs.map +1 -1
- package/build/cjs/components/text-input/BaseTextInput.cjs.map +1 -1
- package/build/cjs/components/text-input/TextInput.cjs.map +1 -1
- package/build/cjs/components/toast/Toast.cjs.map +1 -1
- package/build/cjs/components/toast/stories/ToastInCotext.stories.cjs +1 -1
- package/build/cjs/components/toast/stories/ToastInCotext.stories.cjs.map +1 -1
- package/build/cjs/components/toast/toastContext.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/ToggleSlider.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/usePillStyles.cjs.map +1 -1
- package/build/cjs/components/tooltip/PopupTip.cjs.map +1 -1
- package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
- package/build/cjs/components/tooltip/TooltipContent.cjs.map +1 -1
- package/build/cjs/components/tooltip/TooltipTrigger.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
- package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.cjs.map +1 -1
- package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.cjs.map +1 -1
- package/build/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
- package/build/cjs/hooks/useElementDimensions/useElementDimensions.cjs.map +1 -1
- package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs.map +1 -1
- package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
- package/build/cjs/hooks/useKeyListener/useKeyListener.cjs.map +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
- package/build/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
- package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.cjs.map +1 -1
- package/build/cjs/hooks/useScreen/state.cjs.map +1 -1
- package/build/cjs/hooks/useScreen/useScreen.cjs.map +1 -1
- package/build/cjs/tailwind/tailwindPreset.cjs.map +1 -1
- package/build/cjs/utilities/formatters/avstand/formatAvstand.cjs.map +1 -1
- package/build/cjs/utilities/formatters/bytes/formatBytes.cjs.map +1 -1
- package/build/cjs/utilities/formatters/fodselsnummer/formatFodselsnummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/kontonummer/formatKontonummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/kortnummer/formatKortnummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/telefonnummer/formatTelefonnummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/util/registerWithMask.cjs.map +1 -1
- package/build/cjs/utilities/getThemeAndDensity.cjs.map +1 -1
- package/build/cjs/utilities/polymorphism/SlotComponent.cjs.map +1 -1
- package/build/cjs/utilities/polymorphism/mergeProps.cjs.map +1 -1
- package/build/cjs/utilities/tabListener.cjs.map +1 -1
- package/build/cjs/utilities/validators/isValidKortnummer/isValidKortnummer.cjs.map +1 -1
- package/build/es/components/accordion/AccordionItem.js.map +1 -1
- package/build/es/components/autosuggest/Autosuggest.js.map +1 -1
- package/build/es/components/autosuggest/BaseAutosuggest.js +2 -2
- package/build/es/components/autosuggest/BaseAutosuggest.js.map +1 -1
- package/build/es/components/autosuggest/utils.js.map +1 -1
- package/build/es/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/build/es/components/breadcrumb/stories/BreadcrumbItem.stories.js.map +1 -1
- package/build/es/components/button/documentation/ButtonDocs.js.map +1 -1
- package/build/es/components/card/NavCard.js.map +1 -1
- package/build/es/components/card/stories/Card.stories.js +1 -1
- package/build/es/components/checkbox/Checkbox.js.map +1 -1
- package/build/es/components/checkbox-panel/stories/CheckboxPanel.stories.js.map +1 -1
- package/build/es/components/combobox/Combobox.js.map +1 -1
- package/build/es/components/combobox/stories/Combobox.stories.js.map +1 -1
- package/build/es/components/cookie-consent/CookieConsent.js +1 -1
- package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
- package/build/es/components/cookie-consent/CookieConsentContext.js.map +1 -1
- package/build/es/components/cookie-consent/stories/CookieConsent.stories.js.map +1 -1
- package/build/es/components/countdown/Countdown.js.map +1 -1
- package/build/es/components/countdown/stories/Countdown.stories.js.map +1 -1
- package/build/es/components/datepicker/DatePicker.js.map +1 -1
- package/build/es/components/datepicker/internal/Calendar.js +1 -1
- package/build/es/components/datepicker/internal/Calendar.js.map +1 -1
- package/build/es/components/datepicker/internal/calendarReducer.js.map +1 -1
- package/build/es/components/datepicker/internal/useCalendar.js +1 -1
- package/build/es/components/datepicker/internal/useCalendar.js.map +1 -1
- package/build/es/components/datepicker/internal/utils.js +1 -1
- package/build/es/components/datepicker/internal/utils.js.map +1 -1
- package/build/es/components/datepicker/stories/Datepicker.stories.js.map +1 -1
- package/build/es/components/description-list/stories/DescriptionList.stories.js +1 -1
- package/build/es/components/expander/ExpandablePanelContent.js.map +1 -1
- package/build/es/components/expander/Expander.js.map +1 -1
- package/build/es/components/expander/deprecated/ExpandSection.js.map +1 -1
- package/build/es/components/expander/deprecated/Expander.js.map +1 -1
- package/build/es/components/expander/stories/Expander.stories.js.map +1 -1
- package/build/es/components/expander/stories/ExpanderPanel.stories.js.map +1 -1
- package/build/es/components/feedback/Feedback.js.map +1 -1
- package/build/es/components/feedback/followup/useFollowup.js.map +1 -1
- package/build/es/components/feedback/main-question/useMainQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/CheckboxQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/RadioQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/SmileyQuestion.js +1 -1
- package/build/es/components/feedback/questions/SmileyQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/TextQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/smileyUtils.js.map +1 -1
- package/build/es/components/feedback/utils.js.map +1 -1
- package/build/es/components/file-input/File.js.map +1 -1
- package/build/es/components/file-input/FileInput.js.map +1 -1
- package/build/es/components/file-input/internal/Dropzone.js.map +1 -1
- package/build/es/components/file-input/internal/Input.js.map +1 -1
- package/build/es/components/file-input/stories/FileInput.stories.js.map +1 -1
- package/build/es/components/flex/Flex.js.map +1 -1
- package/build/es/components/icon-button/IconButton.js.map +1 -1
- package/build/es/components/icon-button/stories/IconButton.stories.js.map +1 -1
- package/build/es/components/image/Image.js.map +1 -1
- package/build/es/components/image/useImageLoadingStatus.js.map +1 -1
- package/build/es/components/input-group/FieldGroup.js.map +1 -1
- package/build/es/components/input-group/InputGroup.js.map +1 -1
- package/build/es/components/input-group/Label.js.map +1 -1
- package/build/es/components/input-group/SupportLabel.js.map +1 -1
- package/build/es/components/input-group/stories/InputGroup.stories.js.map +1 -1
- package/build/es/components/loader/Loader.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonAnimation.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonLabel.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonTextArea.js.map +1 -1
- package/build/es/components/logo/Logo.js.map +1 -1
- package/build/es/components/logo/LogoStamp.js.map +1 -1
- package/build/es/components/menu/Menu.js +1 -1
- package/build/es/components/menu/Menu.js.map +1 -1
- package/build/es/components/menu/MenuItem.js.map +1 -1
- package/build/es/components/menu/MenuItemCheckbox.js.map +1 -1
- package/build/es/components/menu/stories/Menu.stories.js.map +1 -1
- package/build/es/components/menu/stories/MenuDivider.stories.js.map +1 -1
- package/build/es/components/menu/stories/MenuItem.stories.js.map +1 -1
- package/build/es/components/menu/useMenuWideEvents.js.map +1 -1
- package/build/es/components/message/FormErrorMessage.js.map +1 -1
- package/build/es/components/message/Message.js.map +1 -1
- package/build/es/components/message/stories/ErrorMessage.stories.js.map +1 -1
- package/build/es/components/message/stories/InfoMessage.stories.js.map +1 -1
- package/build/es/components/message/stories/SuccessMessage.stories.js.map +1 -1
- package/build/es/components/message/stories/WarningMessage.stories.js.map +1 -1
- package/build/es/components/pagination/Pagination.js.map +1 -1
- package/build/es/components/popover/Popover.js +1 -1
- package/build/es/components/popover/Popover.js.map +1 -1
- package/build/es/components/popover/stories/PopoverControlled.stories.js +1 -1
- package/build/es/components/popover/stories/PopoverControlled.stories.js.map +1 -1
- package/build/es/components/progress-bar/ProgressBar.js.map +1 -1
- package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
- package/build/es/components/radio-button/RadioButtonGroup.js.map +1 -1
- package/build/es/components/radio-panel/RadioPanel.js.map +1 -1
- package/build/es/components/select/NativeSelect.js.map +1 -1
- package/build/es/components/select/Select.js.map +1 -1
- package/build/es/components/system-message/SystemMessage.js.map +1 -1
- package/build/es/components/system-message/common/MessageIcon.js.map +1 -1
- package/build/es/components/table/ExpandableTableRowController.js.map +1 -1
- package/build/es/components/table/Table.js.map +1 -1
- package/build/es/components/table/TableCell.js.map +1 -1
- package/build/es/components/table/TableHead.js.map +1 -1
- package/build/es/components/table/TableHeader.js.map +1 -1
- package/build/es/components/table/TablePagination.js.map +1 -1
- package/build/es/components/table/TableRow.js.map +1 -1
- package/build/es/components/table/stories/table.stories.js +1 -1
- package/build/es/components/table/utils.js.map +1 -1
- package/build/es/components/tabs/NavTab.js.map +1 -1
- package/build/es/components/tabs/NavTabs.js.map +1 -1
- package/build/es/components/tabs/Tab.js.map +1 -1
- package/build/es/components/tabs/TabList.js.map +1 -1
- package/build/es/components/tabs/Tabs.js +1 -1
- package/build/es/components/tabs/Tabs.js.map +1 -1
- package/build/es/components/tabs/stories/NavTabs.stories.js +1 -1
- package/build/es/components/tabs/stories/Tabs.stories.js.map +1 -1
- package/build/es/components/text-area/BaseTextArea.js.map +1 -1
- package/build/es/components/text-area/TextArea.js.map +1 -1
- package/build/es/components/text-input/BaseTextInput.js.map +1 -1
- package/build/es/components/text-input/TextInput.js.map +1 -1
- package/build/es/components/toast/Toast.js.map +1 -1
- package/build/es/components/toast/stories/ToastInCotext.stories.js.map +1 -1
- package/build/es/components/toast/toastContext.js.map +1 -1
- package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -1
- package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
- package/build/es/components/toggle-switch/usePillStyles.js.map +1 -1
- package/build/es/components/tooltip/Tooltip.js +1 -1
- package/build/es/components/tooltip/Tooltip.js.map +1 -1
- package/build/es/components/tooltip/TooltipTrigger.js.map +1 -1
- package/build/es/components/tooltip/stories/Tooltip.stories.js +1 -1
- package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
- package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js.map +1 -1
- package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -1
- package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -1
- package/build/es/hooks/useElementDimensions/useElementDimensions.js.map +1 -1
- package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -1
- package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
- package/build/es/hooks/useKeyListener/useKeyListener.js.map +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
- package/build/es/hooks/useMutationObserver/useMutationObserver.js.map +1 -1
- package/build/es/hooks/useProgressiveImg/useProgressiveImg.js.map +1 -1
- package/build/es/hooks/useScreen/state.js.map +1 -1
- package/build/es/hooks/useScreen/useScreen.js.map +1 -1
- package/build/es/utilities/formatters/util/registerWithMask.js.map +1 -1
- package/build/es/utilities/getThemeAndDensity.js.map +1 -1
- package/build/es/utilities/polymorphism/SlotComponent.js.map +1 -1
- package/build/es/utilities/polymorphism/mergeProps.js.map +1 -1
- package/build/es/utilities/tabListener.js.map +1 -1
- package/build/es/utilities/validators/isValidKortnummer/isValidKortnummer.js.map +1 -1
- package/build/index-C-qqMC-u.cjs +20 -0
- package/build/{index-ZdY5zxEI.cjs.map → index-C-qqMC-u.cjs.map} +1 -1
- package/build/index-Yq3eaNUM.js +20 -0
- package/build/{index-C4ABwKfA.js.map → index-Yq3eaNUM.js.map} +1 -1
- package/build/{style.css → jokul.css} +1 -1
- package/package.json +25 -26
- package/styles/components/accordion/accordion.min.css +1 -1
- package/styles/components/button/button.min.css +1 -1
- package/styles/components/card/card.min.css +1 -1
- package/styles/components/checkbox/checkbox.css +4 -4
- package/styles/components/checkbox/checkbox.min.css +1 -1
- package/styles/components/checkbox-panel/checkbox-panel.css +2 -2
- package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
- package/styles/components/chip/chip.min.css +1 -1
- package/styles/components/combobox/combobox.min.css +1 -1
- package/styles/components/cookie-consent/cookie-consent.min.css +1 -1
- package/styles/components/countdown/countdown.css +2 -2
- package/styles/components/countdown/countdown.min.css +1 -1
- package/styles/components/datepicker/datepicker.min.css +1 -1
- package/styles/components/description-list/description-list.min.css +1 -1
- package/styles/components/expander/deprecated/expander.min.css +1 -1
- package/styles/components/expander/expandable.min.css +1 -1
- package/styles/components/feedback/feedback.css +2 -2
- package/styles/components/feedback/feedback.min.css +1 -1
- package/styles/components/file-input/file-input.min.css +1 -1
- package/styles/components/icon-button/icon-button.min.css +1 -1
- package/styles/components/input-group/input-group.css +2 -2
- package/styles/components/input-group/input-group.min.css +1 -1
- package/styles/components/link/link.min.css +1 -1
- package/styles/components/link-list/link-list.min.css +1 -1
- package/styles/components/loader/loader.css +6 -6
- package/styles/components/loader/loader.min.css +1 -1
- package/styles/components/loader/skeleton-loader.css +5 -5
- package/styles/components/loader/skeleton-loader.min.css +1 -1
- package/styles/components/menu/menu.min.css +1 -1
- package/styles/components/message/message.css +2 -2
- package/styles/components/message/message.min.css +1 -1
- package/styles/components/modal/modal.min.css +1 -1
- package/styles/components/nav-link/nav-link.min.css +1 -1
- package/styles/components/popover/popover.min.css +1 -1
- package/styles/components/progress-bar/progress-bar.css +1 -1
- package/styles/components/progress-bar/progress-bar.min.css +1 -1
- package/styles/components/radio-button/radio-button.css +2 -2
- package/styles/components/radio-button/radio-button.min.css +1 -1
- package/styles/components/radio-panel/radio-panel.css +2 -2
- package/styles/components/radio-panel/radio-panel.min.css +1 -1
- package/styles/components/select/select.min.css +1 -1
- package/styles/components/system-message/system-message.css +2 -2
- package/styles/components/system-message/system-message.min.css +1 -1
- package/styles/components/table/table.min.css +1 -1
- package/styles/components/tabs/tabs.min.css +1 -1
- package/styles/components/text-area/text-area.min.css +1 -1
- package/styles/components/text-input/text-input.min.css +1 -1
- package/styles/components/toast/toast.css +4 -4
- package/styles/components/toast/toast.min.css +1 -1
- package/styles/components/toggle-switch/toggle-switch.min.css +1 -1
- package/styles/components/tooltip/tooltip.min.css +1 -1
- package/styles/core/core.min.css +1 -1
- package/styles/shared/input-panel/shared.min.css +1 -1
- package/styles/styles.css +36 -36
- package/styles/styles.min.css +1 -1
- package/build/index-C4ABwKfA.js +0 -20
- package/build/index-ZdY5zxEI.cjs +0 -20
- package/styles/vind/_flex.scss +0 -113
- package/styles/vind/_font.scss +0 -19
- package/styles/vind/_index.scss +0 -1
- package/styles/vind/_margin.scss +0 -43
- package/styles/vind/_padding.scss +0 -43
- package/styles/vind/_space-between.scss +0 -13
- package/styles/vind/_typography.scss +0 -47
- package/styles/vind/vind.css +0 -1756
- package/styles/vind/vind.min.css +0 -1
- package/styles/vind/vind.scss +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.stories.cjs","sources":["../../../../../src/components/list/stories/List.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport \"../styles/_index.scss\";\nimport { Flex } from \"../../flex/Flex.js\";\nimport { List, OrderedList, UnorderedList } from \"../List.js\";\nimport { CheckListItem, CrossListItem, ListItem } from \"../ListItem.js\";\n\nconst meta = {\n title: \"Komponenter/List\",\n component: List,\n subcomponents: {\n ListItem,\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof OrderedList>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst fjellvettreglene = [\n \"Planlegg turen og meld fra hvor du går\",\n \"Tilpass turen etter evne og forhold\",\n \"Ta hensyn til vær- og skredvarsel\",\n \"Vær forberedt på uvær og kulde, selv på korte turer\",\n \"Ta med nødvendig utstyr for å kunne hjelpe deg selv og andre\",\n \"Ta trygge veivalg. Gjenkjenn skredfarlig terreng og usikker is\",\n \"Bruk kart og kompass. Vit alltid hvor du er\",\n \"Vend i tide, det er ingen skam å snu\",\n \"Spar på kreftene og søk ly om nødvendig\",\n];\n\nconst bekledningsliste = [\n \"Regntøy (jakke og bukse)\",\n \"Tynn vindjakke og turbukse (med god fukttransport)\",\n \"Undertøy i ull/ullblanding + ekstra skift\",\n \"Sokker med mye ull og god passform + ekstra skift\",\n \"Ullgenser/jakke eller tynn dunjakke\",\n \"Ekstra lue\",\n \"Ullvotter eller andre vanter/votter som er varme selv når de er våte\",\n \"Lette innesko/inneklær\",\n \"Fjellstøvler og gjerne gamasjer\",\n \"Shorts og t-skjorte (ull/kunstfiber) hvis det er meldt varmt vær\",\n];\n\nexport const OrderedListStory: Story = {\n name: \"OrderedList\",\n render: () => (\n <Flex gap={24} direction=\"column\">\n <h2>Fjellvettreglene</h2>\n <p>\n Liste fra{\" \"}\n <a href=\"https://www.dnt.no/fjellvettreglene/\">\n DNTs side om fjellvettreglene\n </a>\n </p>\n <OrderedList aria-label=\"Fjellvettreglene\">\n {fjellvettreglene.map((regel) => (\n <ListItem key={regel}>{regel}</ListItem>\n ))}\n </OrderedList>\n </Flex>\n ),\n};\n\nexport const UnorderedListStory: Story = {\n name: \"UnorderedList\",\n render: () => (\n <Flex gap={24} direction=\"column\">\n <h2>Pakkeliste (bekledning)</h2>\n <p>\n Liste fra{\" \"}\n <a href=\"https://www.dnt.no/fjellvettreglene/\">\n DNTs pakkeliste for sommerturer\n </a>\n </p>\n <UnorderedList aria-label=\"Fjellvettreglene\">\n {bekledningsliste.map((gjenstand) => (\n <ListItem key={gjenstand}>{gjenstand}</ListItem>\n ))}\n </UnorderedList>\n </Flex>\n ),\n};\n\nexport const CoverageListStory: Story = {\n name: \"Coverage List\",\n render: (args) => (\n <List>\n <CheckListItem>Dekkes</CheckListItem>\n <CheckListItem>Dekkes også</CheckListItem>\n <CrossListItem>Dekkes ikke :(</CrossListItem>\n <CrossListItem>Dekkes heller ikke :(</CrossListItem>\n </List>\n ),\n};\n"],"names":["meta","title","component","List","subcomponents","ListItem","tags","fjellvettreglene","bekledningsliste","OrderedListStory","name","render","jsxs","Flex","gap","direction","children","jsx","href","OrderedList","map","regel","UnorderedListStory","UnorderedList","gjenstand","CoverageListStory","args","CheckListItem","CrossListItem"],"mappings":"+PAOMA,EAAO,CACTC,MAAO,mBACPC,UAAWC,EAAAA,KACXC,cAAe,
|
|
1
|
+
{"version":3,"file":"List.stories.cjs","sources":["../../../../../src/components/list/stories/List.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport \"../styles/_index.scss\";\nimport { Flex } from \"../../flex/Flex.js\";\nimport { List, OrderedList, UnorderedList } from \"../List.js\";\nimport { CheckListItem, CrossListItem, ListItem } from \"../ListItem.js\";\n\nconst meta = {\n title: \"Komponenter/List\",\n component: List,\n subcomponents: {\n ListItem,\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof OrderedList>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nconst fjellvettreglene = [\n \"Planlegg turen og meld fra hvor du går\",\n \"Tilpass turen etter evne og forhold\",\n \"Ta hensyn til vær- og skredvarsel\",\n \"Vær forberedt på uvær og kulde, selv på korte turer\",\n \"Ta med nødvendig utstyr for å kunne hjelpe deg selv og andre\",\n \"Ta trygge veivalg. Gjenkjenn skredfarlig terreng og usikker is\",\n \"Bruk kart og kompass. Vit alltid hvor du er\",\n \"Vend i tide, det er ingen skam å snu\",\n \"Spar på kreftene og søk ly om nødvendig\",\n];\n\nconst bekledningsliste = [\n \"Regntøy (jakke og bukse)\",\n \"Tynn vindjakke og turbukse (med god fukttransport)\",\n \"Undertøy i ull/ullblanding + ekstra skift\",\n \"Sokker med mye ull og god passform + ekstra skift\",\n \"Ullgenser/jakke eller tynn dunjakke\",\n \"Ekstra lue\",\n \"Ullvotter eller andre vanter/votter som er varme selv når de er våte\",\n \"Lette innesko/inneklær\",\n \"Fjellstøvler og gjerne gamasjer\",\n \"Shorts og t-skjorte (ull/kunstfiber) hvis det er meldt varmt vær\",\n];\n\nexport const OrderedListStory: Story = {\n name: \"OrderedList\",\n render: () => (\n <Flex gap={24} direction=\"column\">\n <h2>Fjellvettreglene</h2>\n <p>\n Liste fra{\" \"}\n <a href=\"https://www.dnt.no/fjellvettreglene/\">\n DNTs side om fjellvettreglene\n </a>\n </p>\n <OrderedList aria-label=\"Fjellvettreglene\">\n {fjellvettreglene.map((regel) => (\n <ListItem key={regel}>{regel}</ListItem>\n ))}\n </OrderedList>\n </Flex>\n ),\n};\n\nexport const UnorderedListStory: Story = {\n name: \"UnorderedList\",\n render: () => (\n <Flex gap={24} direction=\"column\">\n <h2>Pakkeliste (bekledning)</h2>\n <p>\n Liste fra{\" \"}\n <a href=\"https://www.dnt.no/fjellvettreglene/\">\n DNTs pakkeliste for sommerturer\n </a>\n </p>\n <UnorderedList aria-label=\"Fjellvettreglene\">\n {bekledningsliste.map((gjenstand) => (\n <ListItem key={gjenstand}>{gjenstand}</ListItem>\n ))}\n </UnorderedList>\n </Flex>\n ),\n};\n\nexport const CoverageListStory: Story = {\n name: \"Coverage List\",\n render: (args) => (\n <List>\n <CheckListItem>Dekkes</CheckListItem>\n <CheckListItem>Dekkes også</CheckListItem>\n <CrossListItem>Dekkes ikke :(</CrossListItem>\n <CrossListItem>Dekkes heller ikke :(</CrossListItem>\n </List>\n ),\n};\n"],"names":["meta","title","component","List","subcomponents","ListItem","tags","fjellvettreglene","bekledningsliste","OrderedListStory","name","render","jsxs","Flex","gap","direction","children","jsx","href","OrderedList","map","regel","UnorderedListStory","UnorderedList","gjenstand","CoverageListStory","args","CheckListItem","CrossListItem"],"mappings":"+PAOMA,EAAO,CACTC,MAAO,mBACPC,UAAWC,EAAAA,KACXC,cAAe,CACXC,SAAAA,EAAAA,UAEJC,KAAM,CAAC,aAMLC,EAAmB,CACrB,yCACA,sCACA,oCACA,sDACA,+DACA,iEACA,8CACA,uCACA,2CAGEC,EAAmB,CACrB,2BACA,qDACA,4CACA,oDACA,sCACA,aACA,uEACA,yBACA,kCACA,oEAGSC,EAA0B,CACnCC,KAAM,cACNC,OAAQ,IACJC,EAAAA,KAACC,QAAKC,IAAK,GAAIC,UAAU,SACrBC,SAAA,CAAAC,EAAAA,IAAC,MAAGD,SAAgB,4BACnB,IAAE,CAAAA,SAAA,CAAA,YACW,IACTC,EAAAA,IAAA,IAAA,CAAEC,KAAK,uCAAuCF,SAE/C,qCAEHC,EAAAA,IAAAE,EAAAA,YAAA,CAAY,aAAW,mBACnBH,SAAiBT,EAAAa,KAAKC,GAClBJ,EAAAA,IAAAZ,EAAAA,SAAA,CAAsBW,SAARK,GAAAA,WAOtBC,EAA4B,CACrCZ,KAAM,gBACNC,OAAQ,IACJC,EAAAA,KAACC,QAAKC,IAAK,GAAIC,UAAU,SACrBC,SAAA,CAAAC,EAAAA,IAAC,MAAGD,SAAuB,mCAC1B,IAAE,CAAAA,SAAA,CAAA,YACW,IACTC,EAAAA,IAAA,IAAA,CAAEC,KAAK,uCAAuCF,SAE/C,uCAEHC,EAAAA,IAAAM,EAAAA,cAAA,CAAc,aAAW,mBACrBP,SAAiBR,EAAAY,KAAKI,GAClBP,EAAAA,IAAAZ,EAAAA,SAAA,CAA0BW,SAAZQ,GAAAA,WAOtBC,EAA2B,CACpCf,KAAM,gBACNC,OAASe,GACLd,EAAAA,KAACT,EACGA,KAAA,CAAAa,SAAA,CAAAC,EAAAA,IAACU,iBAAcX,SAAM,WACrBC,EAAAA,IAACU,iBAAcX,SAAW,gBAC1BC,EAAAA,IAACW,iBAAcZ,SAAc,mBAC7BC,EAAAA,IAACW,iBAAcZ,SAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Loader.cjs","sources":["../../../../src/components/loader/Loader.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport type { LoaderProps } from \"./types.js\";\nimport { useDelayedRender } from \"./useDelayedRender.js\";\n\nexport const Loader = ({\n delay = 0,\n variant = \"large\",\n textDescription,\n className,\n dataTestAutoId = \"jkl-loader\",\n inline = false,\n ...rest\n}: LoaderProps): JSX.Element | null => {\n const renderComponent = useDelayedRender(delay);\n\n if (delay && !renderComponent) {\n return null;\n }\n\n const componentClassName = clsx(\"jkl-loader\", className, {\n \"jkl-loader--medium\": variant === \"medium\",\n \"jkl-loader--small\": variant === \"small\",\n \"jkl-loader--inline\": inline,\n });\n\n return (\n <span\n aria-busy=\"true\"\n className={componentClassName}\n data-testautoid={dataTestAutoId}\n data-testid=\"jkl-loader\"\n title={textDescription}\n {...rest}\n >\n <span className=\"jkl-loader__dot jkl-loader__dot--left\" />\n <span className=\"jkl-loader__dot jkl-loader__dot--middle\" />\n <span className=\"jkl-loader__dot jkl-loader__dot--right\" />\n <span className=\"jkl-sr-only\">{textDescription}</span>\n </span>\n );\n};\n"],"names":["delay","variant","textDescription","className","dataTestAutoId","inline","rest","renderComponent","useDelayedRender","componentClassName","clsx","jsxs","title","children","jsx"],"mappings":"uOAKsB,EAClBA,MAAAA,EAAQ,EACRC,QAAAA,EAAU,QACVC,gBAAAA,EACAC,UAAAA,EACAC,eAAAA,EAAiB,aACjBC,OAAAA,GAAS,KACNC,MAEG,MAAAC,EAAkBC,mBAAiBR,GAErC,GAAAA,IAAUO,EACH,OAAA,KAGL,MAAAE,EAAqBC,EAAAA,KAAK,aAAcP,EAAW,CACrD,qBAAkC,WAAZF,EACtB,oBAAiC,UAAZA,EACrB,qBAAsBI,IAItB,OAAAM,EAAAA,KAAC,OAAA,CACG,YAAU,OACVR,UAAWM,EACX,kBAAiBL,EACjB,cAAY,aACZQ,MAAOV,KACHI,EAEJO,SAAA,CAACC,EAAAA,IAAA,OAAA,CAAKX,UAAU,0CAChBW,EAAAA,IAAC,OAAK,CAAAX,UAAU,4CAChBW,EAAAA,IAAC,OAAK,CAAAX,UAAU,2CACfW,EAAAA,IAAA,OAAA,CAAKX,UAAU,cAAeU,SAAgBX,
|
|
1
|
+
{"version":3,"file":"Loader.cjs","sources":["../../../../src/components/loader/Loader.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport type { LoaderProps } from \"./types.js\";\nimport { useDelayedRender } from \"./useDelayedRender.js\";\n\nexport const Loader = ({\n delay = 0,\n variant = \"large\",\n textDescription,\n className,\n dataTestAutoId = \"jkl-loader\",\n inline = false,\n ...rest\n}: LoaderProps): JSX.Element | null => {\n const renderComponent = useDelayedRender(delay);\n\n if (delay && !renderComponent) {\n return null;\n }\n\n const componentClassName = clsx(\"jkl-loader\", className, {\n \"jkl-loader--medium\": variant === \"medium\",\n \"jkl-loader--small\": variant === \"small\",\n \"jkl-loader--inline\": inline,\n });\n\n return (\n <span\n aria-busy=\"true\"\n className={componentClassName}\n data-testautoid={dataTestAutoId}\n data-testid=\"jkl-loader\"\n title={textDescription}\n {...rest}\n >\n <span className=\"jkl-loader__dot jkl-loader__dot--left\" />\n <span className=\"jkl-loader__dot jkl-loader__dot--middle\" />\n <span className=\"jkl-loader__dot jkl-loader__dot--right\" />\n <span className=\"jkl-sr-only\">{textDescription}</span>\n </span>\n );\n};\n"],"names":["delay","variant","textDescription","className","dataTestAutoId","inline","rest","renderComponent","useDelayedRender","componentClassName","clsx","jsxs","title","children","jsx"],"mappings":"uOAKsB,EAClBA,MAAAA,EAAQ,EACRC,QAAAA,EAAU,QACVC,gBAAAA,EACAC,UAAAA,EACAC,eAAAA,EAAiB,aACjBC,OAAAA,GAAS,KACNC,MAEG,MAAAC,EAAkBC,mBAAiBR,GAErC,GAAAA,IAAUO,EACH,OAAA,KAGL,MAAAE,EAAqBC,EAAAA,KAAK,aAAcP,EAAW,CACrD,qBAAkC,WAAZF,EACtB,oBAAiC,UAAZA,EACrB,qBAAsBI,IAItB,OAAAM,EAAAA,KAAC,OAAA,CACG,YAAU,OACVR,UAAWM,EACX,kBAAiBL,EACjB,cAAY,aACZQ,MAAOV,KACHI,EAEJO,SAAA,CAACC,EAAAA,IAAA,OAAA,CAAKX,UAAU,0CAChBW,EAAAA,IAAC,OAAK,CAAAX,UAAU,4CAChBW,EAAAA,IAAC,OAAK,CAAAX,UAAU,2CACfW,EAAAA,IAAA,OAAA,CAAKX,UAAU,cAAeU,SAAgBX,MACnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkeletonAnimation.cjs","sources":["../../../../../src/components/loader/skeletons/SkeletonAnimation.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport type { SkeletonAnimationProps } from \"../types.js\";\nimport { useDelayedRender } from \"../useDelayedRender.js\";\n\nexport const SkeletonAnimation = ({\n className,\n delay = 0,\n density,\n textDescription = \"Vennligst vent\",\n ...rest\n}: SkeletonAnimationProps) => {\n const renderComponent = useDelayedRender(delay);\n\n if (delay && !renderComponent) {\n return null;\n }\n\n return (\n <div\n className={clsx(\"jkl-skeleton-animation\", className)}\n aria-busy=\"true\"\n aria-label={textDescription}\n {...rest}\n data-density={density}\n />\n );\n};\n"],"names":["className","delay","density","textDescription","rest","renderComponent","useDelayedRender","jsx","clsx"],"mappings":"sPAKiC,EAC7BA,UAAAA,EACAC,MAAAA,EAAQ,EACRC,QAAAA,EACAC,gBAAAA,EAAkB,oBACfC,MAEG,MAAAC,EAAkBC,mBAAiBL,GAErC,OAAAA,IAAUI,EACH,KAIPE,EAAAA,IAAC,MAAA,CACGP,UAAWQ,EAAAA,KAAK,yBAA0BR,GAC1C,YAAU,OACV,aAAYG,KACRC,EACJ,eAAcF,
|
|
1
|
+
{"version":3,"file":"SkeletonAnimation.cjs","sources":["../../../../../src/components/loader/skeletons/SkeletonAnimation.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport type { SkeletonAnimationProps } from \"../types.js\";\nimport { useDelayedRender } from \"../useDelayedRender.js\";\n\nexport const SkeletonAnimation = ({\n className,\n delay = 0,\n density,\n textDescription = \"Vennligst vent\",\n ...rest\n}: SkeletonAnimationProps) => {\n const renderComponent = useDelayedRender(delay);\n\n if (delay && !renderComponent) {\n return null;\n }\n\n return (\n <div\n className={clsx(\"jkl-skeleton-animation\", className)}\n aria-busy=\"true\"\n aria-label={textDescription}\n {...rest}\n data-density={density}\n />\n );\n};\n"],"names":["className","delay","density","textDescription","rest","renderComponent","useDelayedRender","jsx","clsx"],"mappings":"sPAKiC,EAC7BA,UAAAA,EACAC,MAAAA,EAAQ,EACRC,QAAAA,EACAC,gBAAAA,EAAkB,oBACfC,MAEG,MAAAC,EAAkBC,mBAAiBL,GAErC,OAAAA,IAAUI,EACH,KAIPE,EAAAA,IAAC,MAAA,CACGP,UAAWQ,EAAAA,KAAK,yBAA0BR,GAC1C,YAAU,OACV,aAAYG,KACRC,EACJ,eAAcF,GAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkeletonLabel.cjs","sources":["../../../../../src/components/loader/skeletons/SkeletonLabel.tsx"],"sourcesContent":["import React from \"react\";\nimport type { SkeletonLabelProps } from \"../types.js\";\nimport { SkeletonElement } from \"./SkeletonElement.js\";\n\nexport const SkeletonLabel = ({ density, ...rest }: SkeletonLabelProps) => {\n const compact = density === \"compact\";\n return (\n <SkeletonElement\n {...rest}\n width={compact ? 100 : 115}\n height={compact ? 12 : 16}\n />\n );\n};\n"],"names":["density","rest","compact","jsx","SkeletonElement","width","height"],"mappings":"qMAI6B,EAAGA,QAAAA,KAAYC,MACxC,MAAMC,EAAsB,YAAZF,EAEZ,OAAAG,EAAAA,IAACC,EAAAA,gBAAA,IACOH,EACJI,MAAOH,EAAU,IAAM,IACvBI,OAAQJ,EAAU,GAAK,
|
|
1
|
+
{"version":3,"file":"SkeletonLabel.cjs","sources":["../../../../../src/components/loader/skeletons/SkeletonLabel.tsx"],"sourcesContent":["import React from \"react\";\nimport type { SkeletonLabelProps } from \"../types.js\";\nimport { SkeletonElement } from \"./SkeletonElement.js\";\n\nexport const SkeletonLabel = ({ density, ...rest }: SkeletonLabelProps) => {\n const compact = density === \"compact\";\n return (\n <SkeletonElement\n {...rest}\n width={compact ? 100 : 115}\n height={compact ? 12 : 16}\n />\n );\n};\n"],"names":["density","rest","compact","jsx","SkeletonElement","width","height"],"mappings":"qMAI6B,EAAGA,QAAAA,KAAYC,MACxC,MAAMC,EAAsB,YAAZF,EAEZ,OAAAG,EAAAA,IAACC,EAAAA,gBAAA,IACOH,EACJI,MAAOH,EAAU,IAAM,IACvBI,OAAQJ,EAAU,GAAK,IAC3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkeletonTextArea.cjs","sources":["../../../../../src/components/loader/skeletons/SkeletonTextArea.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport type { SkeletonTextAreaProps } from \"../types.js\";\nimport { SkeletonElement } from \"./SkeletonElement.js\";\nimport { SkeletonLabel } from \"./SkeletonLabel.js\";\n\nexport const SkeletonTextArea = ({\n className,\n density,\n labelProps,\n inputProps,\n ...rest\n}: SkeletonTextAreaProps) => {\n const compact = density === \"compact\";\n return (\n <div\n className={clsx(\"jkl-skeleton-input\", className)}\n {...rest}\n data-density={density}\n >\n <SkeletonLabel density={density} {...labelProps} />\n <SkeletonElement\n width={compact ? 301 : 316}\n height={compact ? 148 : 168}\n {...inputProps}\n />\n </div>\n );\n};\n"],"names":["className","density","labelProps","inputProps","rest","compact","jsxs","clsx","children","jsx","SkeletonLabel","SkeletonElement","width","height"],"mappings":"oRAMgC,EAC5BA,UAAAA,EACAC,QAAAA,EACAC,WAAAA,EACAC,WAAAA,KACGC,MAEH,MAAMC,EAAsB,YAAZJ,EAEZ,OAAAK,EAAAA,KAAC,MAAA,CACGN,UAAWO,EAAAA,KAAK,qBAAsBP,MAClCI,EACJ,eAAcH,EAEdO,SAAA,CAACC,EAAAA,IAAAC,EAAAA,cAAA,CAAcT,QAAAA,KAAsBC,IACrCO,EAAAA,IAACE,EAAAA,gBAAA,CACGC,MAAOP,EAAU,IAAM,IACvBQ,OAAQR,EAAU,IAAM,OACpBF,
|
|
1
|
+
{"version":3,"file":"SkeletonTextArea.cjs","sources":["../../../../../src/components/loader/skeletons/SkeletonTextArea.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport type { SkeletonTextAreaProps } from \"../types.js\";\nimport { SkeletonElement } from \"./SkeletonElement.js\";\nimport { SkeletonLabel } from \"./SkeletonLabel.js\";\n\nexport const SkeletonTextArea = ({\n className,\n density,\n labelProps,\n inputProps,\n ...rest\n}: SkeletonTextAreaProps) => {\n const compact = density === \"compact\";\n return (\n <div\n className={clsx(\"jkl-skeleton-input\", className)}\n {...rest}\n data-density={density}\n >\n <SkeletonLabel density={density} {...labelProps} />\n <SkeletonElement\n width={compact ? 301 : 316}\n height={compact ? 148 : 168}\n {...inputProps}\n />\n </div>\n );\n};\n"],"names":["className","density","labelProps","inputProps","rest","compact","jsxs","clsx","children","jsx","SkeletonLabel","SkeletonElement","width","height"],"mappings":"oRAMgC,EAC5BA,UAAAA,EACAC,QAAAA,EACAC,WAAAA,EACAC,WAAAA,KACGC,MAEH,MAAMC,EAAsB,YAAZJ,EAEZ,OAAAK,EAAAA,KAAC,MAAA,CACGN,UAAWO,EAAAA,KAAK,qBAAsBP,MAClCI,EACJ,eAAcH,EAEdO,SAAA,CAACC,EAAAA,IAAAC,EAAAA,cAAA,CAAcT,QAAAA,KAAsBC,IACrCO,EAAAA,IAACE,EAAAA,gBAAA,CACGC,MAAOP,EAAU,IAAM,IACvBQ,OAAQR,EAAU,IAAM,OACpBF,MAEZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skeleton.stories.cjs","sources":["../../../../../src/components/loader/stories/Skeleton.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport \"../styles/_index.scss\";\nimport { SkeletonAnimation } from \"../skeletons/SkeletonAnimation.js\";\nimport { SkeletonButton } from \"../skeletons/SkeletonButton.js\";\nimport { SkeletonCheckboxGroup } from \"../skeletons/SkeletonCheckboxGroup.js\";\nimport { SkeletonElement } from \"../skeletons/SkeletonElement.js\";\nimport { SkeletonInput } from \"../skeletons/SkeletonInput.js\";\nimport { SkeletonRadioButtonGroup } from \"../skeletons/SkeletonRadioButtonGroup.js\";\nimport {\n SkeletonTable,\n SkeletonTableHeader,\n SkeletonTableRow,\n} from \"../skeletons/SkeletonTable.js\";\nimport { SkeletonTextArea } from \"../skeletons/SkeletonTextArea.js\";\n\nconst meta = {\n title: \"Komponenter/Loader/SkeletonTable\",\n component: SkeletonTable,\n subcomponents: { SkeletonElement, SkeletonTableHeader },\n argTypes: {\n width: {\n control: \"number\",\n },\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof SkeletonTable>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const SkeletonStory: Story = {\n name: \"Skeleton\",\n args: {\n children: (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 40 }}>\n <SkeletonElement width={350} height={32} />\n <SkeletonInput />\n <SkeletonTextArea />\n <SkeletonCheckboxGroup checkboxes={3} />\n <SkeletonRadioButtonGroup radioButtons={3} />\n <SkeletonButton width={225} />\n <SkeletonTable>\n <SkeletonTableHeader>\n <div style={{ width: 215 }}>\n <SkeletonElement width={115} height={16} />\n </div>\n <div style={{ width: 115 }}>\n <SkeletonElement width={115} height={16} />\n </div>\n </SkeletonTableHeader>\n {Array.from(Array(5)).map((_, index) => (\n <SkeletonTableRow key={index}>\n <div style={{ width: 215 }}>\n <SkeletonElement\n width={index % 2 ? 115 : 185}\n height={19}\n />\n </div>\n <div style={{ width: 115 }}>\n <SkeletonElement\n width={24}\n height={24}\n shape=\"circle\"\n />\n </div>\n </SkeletonTableRow>\n ))}\n </SkeletonTable>\n </div>\n ),\n },\n render: (args) => (\n // biome-ignore lint/a11y/useValidAriaRole: // Kun for eksempelet, ellers blir det mange alerts på siden\n <SkeletonAnimation {...args} role=\"none presentation\" />\n ),\n};\n"],"names":["meta","title","component","SkeletonTable","subcomponents","SkeletonElement","SkeletonTableHeader","argTypes","width","control","tags","SkeletonStory","name","args","children","jsxs","style","display","flexDirection","gap","jsx","height","SkeletonInput","SkeletonTextArea","SkeletonCheckboxGroup","checkboxes","SkeletonRadioButtonGroup","radioButtons","SkeletonButton","Array","from","map","_","index","SkeletonTableRow","shape","render","SkeletonAnimation","role"],"mappings":"glBAgBMA,EAAO,CACTC,MAAO,mCACPC,UAAWC,EAAAA,cACXC,cAAe,CAAAC,gBAAEA,EAAAA,gBAAAC,oBAAiBA,uBAClCC,SAAU,CACNC,MAAO,CACHC,QAAS,WAGjBC,KAAM,CAAC,aAMEC,EAAuB,CAChCC,KAAM,WACNC,KAAM,CACFC,SACKC,EAAAA,KAAA,MAAA,CAAIC,MAAO,CAAEC,QAAS,OAAQC,cAAe,SAAUC,IAAK,IACzDL,SAAA,CAAAM,EAAAA,IAACf,EAAgBA,gBAAA,CAAAG,MAAO,IAAKa,OAAQ,WACpCC,EAAcA,cAAA,UACdC,EAAiBA,iBAAA,IAClBH,EAAAA,IAACI,EAAsBA,sBAAA,CAAAC,WAAY,IACnCL,EAAAA,IAACM,EAAyBA,yBAAA,CAAAC,aAAc,IACxCP,EAAAA,IAACQ,EAAeA,eAAA,CAAApB,MAAO,aACtBL,EAAAA,cACG,CAAAW,SAAA,CAAAC,OAACT,EAAAA,oBACG,CAAAQ,SAAA,CAAAM,EAAAA,IAAC,MAAI,CAAAJ,MAAO,CAAER,MAAO,KACjBM,SAACM,EAAAA,IAAAf,EAAAA,gBAAA,CAAgBG,MAAO,IAAKa,OAAQ,OAExCD,EAAAA,IAAA,MAAA,CAAIJ,MAAO,CAAER,MAAO,KACjBM,SAAAM,EAAAA,IAACf,
|
|
1
|
+
{"version":3,"file":"Skeleton.stories.cjs","sources":["../../../../../src/components/loader/stories/Skeleton.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport \"../styles/_index.scss\";\nimport { SkeletonAnimation } from \"../skeletons/SkeletonAnimation.js\";\nimport { SkeletonButton } from \"../skeletons/SkeletonButton.js\";\nimport { SkeletonCheckboxGroup } from \"../skeletons/SkeletonCheckboxGroup.js\";\nimport { SkeletonElement } from \"../skeletons/SkeletonElement.js\";\nimport { SkeletonInput } from \"../skeletons/SkeletonInput.js\";\nimport { SkeletonRadioButtonGroup } from \"../skeletons/SkeletonRadioButtonGroup.js\";\nimport {\n SkeletonTable,\n SkeletonTableHeader,\n SkeletonTableRow,\n} from \"../skeletons/SkeletonTable.js\";\nimport { SkeletonTextArea } from \"../skeletons/SkeletonTextArea.js\";\n\nconst meta = {\n title: \"Komponenter/Loader/SkeletonTable\",\n component: SkeletonTable,\n subcomponents: { SkeletonElement, SkeletonTableHeader },\n argTypes: {\n width: {\n control: \"number\",\n },\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof SkeletonTable>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const SkeletonStory: Story = {\n name: \"Skeleton\",\n args: {\n children: (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: 40 }}>\n <SkeletonElement width={350} height={32} />\n <SkeletonInput />\n <SkeletonTextArea />\n <SkeletonCheckboxGroup checkboxes={3} />\n <SkeletonRadioButtonGroup radioButtons={3} />\n <SkeletonButton width={225} />\n <SkeletonTable>\n <SkeletonTableHeader>\n <div style={{ width: 215 }}>\n <SkeletonElement width={115} height={16} />\n </div>\n <div style={{ width: 115 }}>\n <SkeletonElement width={115} height={16} />\n </div>\n </SkeletonTableHeader>\n {Array.from(Array(5)).map((_, index) => (\n <SkeletonTableRow key={index}>\n <div style={{ width: 215 }}>\n <SkeletonElement\n width={index % 2 ? 115 : 185}\n height={19}\n />\n </div>\n <div style={{ width: 115 }}>\n <SkeletonElement\n width={24}\n height={24}\n shape=\"circle\"\n />\n </div>\n </SkeletonTableRow>\n ))}\n </SkeletonTable>\n </div>\n ),\n },\n render: (args) => (\n // biome-ignore lint/a11y/useValidAriaRole: // Kun for eksempelet, ellers blir det mange alerts på siden\n <SkeletonAnimation {...args} role=\"none presentation\" />\n ),\n};\n"],"names":["meta","title","component","SkeletonTable","subcomponents","SkeletonElement","SkeletonTableHeader","argTypes","width","control","tags","SkeletonStory","name","args","children","jsxs","style","display","flexDirection","gap","jsx","height","SkeletonInput","SkeletonTextArea","SkeletonCheckboxGroup","checkboxes","SkeletonRadioButtonGroup","radioButtons","SkeletonButton","Array","from","map","_","index","SkeletonTableRow","shape","render","SkeletonAnimation","role"],"mappings":"glBAgBMA,EAAO,CACTC,MAAO,mCACPC,UAAWC,EAAAA,cACXC,cAAe,CAAAC,gBAAEA,EAAAA,gBAAAC,oBAAiBA,uBAClCC,SAAU,CACNC,MAAO,CACHC,QAAS,WAGjBC,KAAM,CAAC,aAMEC,EAAuB,CAChCC,KAAM,WACNC,KAAM,CACFC,SACKC,EAAAA,KAAA,MAAA,CAAIC,MAAO,CAAEC,QAAS,OAAQC,cAAe,SAAUC,IAAK,IACzDL,SAAA,CAAAM,EAAAA,IAACf,EAAgBA,gBAAA,CAAAG,MAAO,IAAKa,OAAQ,WACpCC,EAAcA,cAAA,UACdC,EAAiBA,iBAAA,IAClBH,EAAAA,IAACI,EAAsBA,sBAAA,CAAAC,WAAY,IACnCL,EAAAA,IAACM,EAAyBA,yBAAA,CAAAC,aAAc,IACxCP,EAAAA,IAACQ,EAAeA,eAAA,CAAApB,MAAO,aACtBL,EAAAA,cACG,CAAAW,SAAA,CAAAC,OAACT,EAAAA,oBACG,CAAAQ,SAAA,CAAAM,EAAAA,IAAC,MAAI,CAAAJ,MAAO,CAAER,MAAO,KACjBM,SAACM,EAAAA,IAAAf,EAAAA,gBAAA,CAAgBG,MAAO,IAAKa,OAAQ,OAExCD,EAAAA,IAAA,MAAA,CAAIJ,MAAO,CAAER,MAAO,KACjBM,SAAAM,EAAAA,IAACf,EAAAA,gBAAgB,CAAAG,MAAO,IAAKa,OAAQ,UAG5CQ,MAAMC,KAAKD,MAAM,IAAIE,KAAI,CAACC,EAAGC,IAC1BlB,EAAAA,KAACmB,EACGA,iBAAA,CAAApB,SAAA,CAAAM,EAAAA,IAAC,MAAI,CAAAJ,MAAO,CAAER,MAAO,KACjBM,SAAAM,EAAAA,IAACf,EAAAA,gBAAA,CACGG,MAAOyB,EAAQ,EAAI,IAAM,IACzBZ,OAAQ,aAGf,MAAI,CAAAL,MAAO,CAAER,MAAO,KACjBM,SAAAM,EAAAA,IAACf,EAAAA,gBAAA,CACGG,MAAO,GACPa,OAAQ,GACRc,MAAM,eAXKF,YAoB3CG,OAASvB,GAEJO,EAAAA,IAAAiB,EAAAA,kBAAA,IAAsBxB,EAAMyB,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logo.cjs","sources":["../../../../src/components/logo/Logo.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport type { LogoProps } from \"./types.js\";\n\nexport const Logo = ({\n className,\n id,\n centered = true,\n isSymbol = false,\n animated = false,\n title = \"Fremtind\",\n ...rest\n}: LogoProps): JSX.Element => {\n const uniqueId = useId(id || \"jkl-logo\", { generateSuffix: !id });\n\n return (\n <svg\n {...rest}\n className={clsx(\"jkl-logo\", className, {\n \"jkl-logo--animated\": animated,\n \"jkl-logo--symbol-only\": isSymbol,\n \"jkl-logo--centered\": centered && isSymbol,\n })}\n aria-labelledby={uniqueId}\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n viewBox={\n !animated && isSymbol && !centered\n ? \"31 60 150 83\"\n : \"32 27 581 120\"\n }\n >\n <title id={uniqueId}>{title}</title>\n <g\n fill=\"none\"\n className=\"jkl-logo__F\"\n strokeWidth=\"8\"\n transform={`${isSymbol ? \"rotate(45) translate(90, -70)\" : \"\"}`}\n >\n <line\n x1=\"34.3\"\n x2=\"104.846844\"\n y1=\"32.563024\"\n y2=\"32.563024\"\n className=\"jkl-logo__F-line\"\n transform={\n isSymbol ? \"scale(1.45, 1) translate(-10, 6)\" : \"\"\n }\n />\n <line\n x1=\"35.12226\"\n x2=\"91.504088\"\n y1=\"80.105318\"\n y2=\"80.105318\"\n />\n <line\n x1=\"-10.820058\"\n x2=\"87.38984\"\n y1=\"84.219561\"\n y2=\"84.219561\"\n transform=\"rotate(90, 38.2849, 84.2196)\"\n />\n </g>\n {!(isSymbol && !animated) && (\n <path\n strokeWidth=\".57975\"\n d=\"M145.752 58.979c-10.21 0-20.201 6.854-23.793 16.133l-.157-15.179-.002-.224h-6.907v73.723h7.782V98.038c0-11.791 2.998-31.572 23.077-31.572 2.89 0 5.153.23 7.12.724l.283.07v-7.806l-.187-.035c-2.363-.44-4.831-.44-7.216-.44M170.88 91.357c.1-15.2 10.325-26.21 24.387-26.21 15.08 0 23.29 13.146 23.658 26.21H170.88zm24.387-33.554c-10.228 0-18.904 4.44-25.092 12.84-4.925 6.7-7.22 15.031-7.22 26.218 0 11.088 3.262 20.766 9.433 27.99 6.099 6.954 13.994 10.481 23.466 10.481 8.097 0 15.596-3.04 21.115-8.559 4.522-4.364 7.305-9.583 8.269-15.515l.044-.262h-8.075l-.038.182c-.77 3.876-2.52 7.146-5.503 10.292-3.968 4.11-9.583 6.375-15.812 6.375-7.332 0-13.239-2.586-17.557-7.684-4.619-5.48-7.37-13.341-7.563-21.602h55.97v-.227c0-.877.038-1.659.074-2.415.037-.758.076-1.543.076-2.426 0-9.44-2.952-18.247-8.313-24.797-5.831-7.126-13.88-10.891-23.274-10.891h0zM324.782 57.803c-10.833 0-19.176 5.465-23.558 15.41-2.377-7.168-8.339-15.41-23.183-15.41-9.606 0-17.811 5.162-22.111 13.86l-.813-11.743-.016-.211h-6.89v73.723h7.78V96.568c0-12.182 2.933-21.098 8.72-26.501 3.425-3.265 7.76-4.92 12.885-4.92 11.845 0 17.362 6.4 17.362 20.142v48.143h7.923V91.736c0-8.853 2.965-16.346 8.573-21.666 3.682-3.36 7.777-4.924 12.89-4.924 11.741 0 17.21 6.4 17.21 20.143v48.143h7.783V84.844c0-17.438-8.721-27.041-24.555-27.041M387.105 37.665l-7.782 1.873v20.17h-14.656v7.195h14.656v45.933c0 14.145 6.615 21.622 19.133 21.622 3.964 0 7.73-.804 11.72-1.657l.668-.142v-6.91l-.267.05c-3.606.666-7.465 1.315-11.54 1.315-8.364 0-11.932-4.357-11.932-14.571v-45.64h43.533v66.529h8.22V59.709h-51.753V37.665M499.748 57.803c-10.364 0-20.339 5.951-24.596 14.576l-.83-12.67h-6.893v73.723h7.781V96.568c0-6.054.932-14.697 5.367-21.487 4.18-6.398 10.483-9.64 18.734-9.64 12.565 0 18.674 6.492 18.674 19.848v48.143h7.781V84.844c0-17.185-9.482-27.041-26.018-27.041M434.672 28.547a5.9 5.9 0 0 0-5.894 5.893 5.9 5.9 0 0 0 5.894 5.895 5.9 5.9 0 0 0 5.895-5.895 5.9 5.9 0 0 0-5.895-5.893M592.914 121.901c-4.007 3.85-8.984 5.801-14.793 5.801-5.777 0-10.472-1.658-14.354-5.068-6.188-5.519-9.597-14.775-9.597-26.066 0-10.31 2.89-19.102 8.139-24.751 4.135-4.291 9.212-6.376 15.52-6.376 6.202 0 11.324 1.9 15.23 5.653 6.251 5.846 9.164 13.941 9.164 25.474 0 10.765-3.132 19.29-9.309 25.333zm9.157-94.721v44.113c-4.264-7.988-14.077-13.49-24.243-13.49-8.072 0-14.828 2.585-20.081 7.682-7.309 6.897-11.5 18.281-11.5 31.234 0 13.6 4.294 24.848 12.091 31.673 5.234 4.605 11.841 6.94 19.64 6.94 10.115 0 20.112-5.893 24.154-14.127l.835 12.227h6.886V27.18h-7.782 0z\"\n className=\"jkl-logo__remtind\"\n />\n )}\n </svg>\n );\n};\n"],"names":["className","id","centered","isSymbol","animated","title","rest","uniqueId","useId","generateSuffix","jsxs","clsx","role","xmlns","fill","stroke","viewBox","children","jsx","strokeWidth","transform","x1","x2","y1","y2","d"],"mappings":"0OAKoB,EAChBA,UAAAA,EACAC,GAAAA,EACAC,SAAAA,GAAW,EACXC,SAAAA,GAAW,EACXC,SAAAA,GAAW,EACXC,MAAAA,EAAQ,cACLC,MAEG,MAAAC,EAAWC,
|
|
1
|
+
{"version":3,"file":"Logo.cjs","sources":["../../../../src/components/logo/Logo.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport type { LogoProps } from \"./types.js\";\n\nexport const Logo = ({\n className,\n id,\n centered = true,\n isSymbol = false,\n animated = false,\n title = \"Fremtind\",\n ...rest\n}: LogoProps): JSX.Element => {\n const uniqueId = useId(id || \"jkl-logo\", { generateSuffix: !id });\n\n return (\n <svg\n {...rest}\n className={clsx(\"jkl-logo\", className, {\n \"jkl-logo--animated\": animated,\n \"jkl-logo--symbol-only\": isSymbol,\n \"jkl-logo--centered\": centered && isSymbol,\n })}\n aria-labelledby={uniqueId}\n role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n viewBox={\n !animated && isSymbol && !centered\n ? \"31 60 150 83\"\n : \"32 27 581 120\"\n }\n >\n <title id={uniqueId}>{title}</title>\n <g\n fill=\"none\"\n className=\"jkl-logo__F\"\n strokeWidth=\"8\"\n transform={`${isSymbol ? \"rotate(45) translate(90, -70)\" : \"\"}`}\n >\n <line\n x1=\"34.3\"\n x2=\"104.846844\"\n y1=\"32.563024\"\n y2=\"32.563024\"\n className=\"jkl-logo__F-line\"\n transform={\n isSymbol ? \"scale(1.45, 1) translate(-10, 6)\" : \"\"\n }\n />\n <line\n x1=\"35.12226\"\n x2=\"91.504088\"\n y1=\"80.105318\"\n y2=\"80.105318\"\n />\n <line\n x1=\"-10.820058\"\n x2=\"87.38984\"\n y1=\"84.219561\"\n y2=\"84.219561\"\n transform=\"rotate(90, 38.2849, 84.2196)\"\n />\n </g>\n {!(isSymbol && !animated) && (\n <path\n strokeWidth=\".57975\"\n d=\"M145.752 58.979c-10.21 0-20.201 6.854-23.793 16.133l-.157-15.179-.002-.224h-6.907v73.723h7.782V98.038c0-11.791 2.998-31.572 23.077-31.572 2.89 0 5.153.23 7.12.724l.283.07v-7.806l-.187-.035c-2.363-.44-4.831-.44-7.216-.44M170.88 91.357c.1-15.2 10.325-26.21 24.387-26.21 15.08 0 23.29 13.146 23.658 26.21H170.88zm24.387-33.554c-10.228 0-18.904 4.44-25.092 12.84-4.925 6.7-7.22 15.031-7.22 26.218 0 11.088 3.262 20.766 9.433 27.99 6.099 6.954 13.994 10.481 23.466 10.481 8.097 0 15.596-3.04 21.115-8.559 4.522-4.364 7.305-9.583 8.269-15.515l.044-.262h-8.075l-.038.182c-.77 3.876-2.52 7.146-5.503 10.292-3.968 4.11-9.583 6.375-15.812 6.375-7.332 0-13.239-2.586-17.557-7.684-4.619-5.48-7.37-13.341-7.563-21.602h55.97v-.227c0-.877.038-1.659.074-2.415.037-.758.076-1.543.076-2.426 0-9.44-2.952-18.247-8.313-24.797-5.831-7.126-13.88-10.891-23.274-10.891h0zM324.782 57.803c-10.833 0-19.176 5.465-23.558 15.41-2.377-7.168-8.339-15.41-23.183-15.41-9.606 0-17.811 5.162-22.111 13.86l-.813-11.743-.016-.211h-6.89v73.723h7.78V96.568c0-12.182 2.933-21.098 8.72-26.501 3.425-3.265 7.76-4.92 12.885-4.92 11.845 0 17.362 6.4 17.362 20.142v48.143h7.923V91.736c0-8.853 2.965-16.346 8.573-21.666 3.682-3.36 7.777-4.924 12.89-4.924 11.741 0 17.21 6.4 17.21 20.143v48.143h7.783V84.844c0-17.438-8.721-27.041-24.555-27.041M387.105 37.665l-7.782 1.873v20.17h-14.656v7.195h14.656v45.933c0 14.145 6.615 21.622 19.133 21.622 3.964 0 7.73-.804 11.72-1.657l.668-.142v-6.91l-.267.05c-3.606.666-7.465 1.315-11.54 1.315-8.364 0-11.932-4.357-11.932-14.571v-45.64h43.533v66.529h8.22V59.709h-51.753V37.665M499.748 57.803c-10.364 0-20.339 5.951-24.596 14.576l-.83-12.67h-6.893v73.723h7.781V96.568c0-6.054.932-14.697 5.367-21.487 4.18-6.398 10.483-9.64 18.734-9.64 12.565 0 18.674 6.492 18.674 19.848v48.143h7.781V84.844c0-17.185-9.482-27.041-26.018-27.041M434.672 28.547a5.9 5.9 0 0 0-5.894 5.893 5.9 5.9 0 0 0 5.894 5.895 5.9 5.9 0 0 0 5.895-5.895 5.9 5.9 0 0 0-5.895-5.893M592.914 121.901c-4.007 3.85-8.984 5.801-14.793 5.801-5.777 0-10.472-1.658-14.354-5.068-6.188-5.519-9.597-14.775-9.597-26.066 0-10.31 2.89-19.102 8.139-24.751 4.135-4.291 9.212-6.376 15.52-6.376 6.202 0 11.324 1.9 15.23 5.653 6.251 5.846 9.164 13.941 9.164 25.474 0 10.765-3.132 19.29-9.309 25.333zm9.157-94.721v44.113c-4.264-7.988-14.077-13.49-24.243-13.49-8.072 0-14.828 2.585-20.081 7.682-7.309 6.897-11.5 18.281-11.5 31.234 0 13.6 4.294 24.848 12.091 31.673 5.234 4.605 11.841 6.94 19.64 6.94 10.115 0 20.112-5.893 24.154-14.127l.835 12.227h6.886V27.18h-7.782 0z\"\n className=\"jkl-logo__remtind\"\n />\n )}\n </svg>\n );\n};\n"],"names":["className","id","centered","isSymbol","animated","title","rest","uniqueId","useId","generateSuffix","jsxs","clsx","role","xmlns","fill","stroke","viewBox","children","jsx","strokeWidth","transform","x1","x2","y1","y2","d"],"mappings":"0OAKoB,EAChBA,UAAAA,EACAC,GAAAA,EACAC,SAAAA,GAAW,EACXC,SAAAA,GAAW,EACXC,SAAAA,GAAW,EACXC,MAAAA,EAAQ,cACLC,MAEG,MAAAC,EAAWC,EAAAA,MAAMP,GAAM,WAAY,CAAEQ,gBAAiBR,IAGxD,OAAAS,EAAAA,KAAC,MAAA,IACOJ,EACJN,UAAWW,EAAAA,KAAK,WAAYX,EAAW,CACnC,qBAAsBI,EACtB,wBAAyBD,EACzB,qBAAsBD,GAAYC,IAEtC,kBAAiBI,EACjBK,KAAK,MACLC,MAAM,6BACNC,KAAK,eACLC,OAAO,eACPC,QACKZ,IAAYD,GAAaD,EAEpB,gBADA,eAIVe,SAAA,CAACC,EAAAA,IAAA,QAAA,CAAMjB,GAAIM,EAAWU,SAAMZ,IAC5BK,EAAAA,KAAC,IAAA,CACGI,KAAK,OACLd,UAAU,cACVmB,YAAY,IACZC,UAAW,IAAGjB,EAAW,gCAAkC,IAE3Dc,SAAA,CAAAC,EAAAA,IAAC,OAAA,CACGG,GAAG,OACHC,GAAG,aACHC,GAAG,YACHC,GAAG,YACHxB,UAAU,mBACVoB,UACIjB,EAAW,mCAAqC,KAGxDe,EAAAA,IAAC,OAAA,CACGG,GAAG,WACHC,GAAG,YACHC,GAAG,YACHC,GAAG,cAEPN,EAAAA,IAAC,OAAA,CACGG,GAAG,aACHC,GAAG,WACHC,GAAG,YACHC,GAAG,YACHJ,UAAU,sCAGfjB,IAAaC,IACZc,EAAAA,IAAC,OAAA,CACGC,YAAY,SACZM,EAAE,w8EACFzB,UAAU,wBAGtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoStamp.cjs","sources":["../../../../src/components/logo/LogoStamp.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { useRef } from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport type { LogoStampProps } from \"./types.js\";\nimport { useTextSpinner } from \"./useTextSpinner.js\";\n\nexport const LogoStamp = ({\n children,\n className,\n id,\n animated = false,\n title,\n ...rest\n}: LogoStampProps): JSX.Element => {\n const uniqueId = useId(id || \"jkl-logo-stamp\", { generateSuffix: !id });\n const stampRef = useRef<SVGSVGElement>(null);\n const { hasAnimated, visible } = useTextSpinner(stampRef);\n\n return (\n <svg\n {...rest}\n ref={stampRef}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n aria-labelledby={uniqueId}\n className={clsx(\"jkl-logo-stamp\", className, {\n \"jkl-logo-stamp--animated\": animated,\n })}\n data-rotate={animated && (visible || hasAnimated)}\n role=\"img\"\n >\n <title id={uniqueId}>\n {title || \"Forsikring levert av Fremtind\"}\n </title>\n <g className=\"jkl-logo-stamp__logo\">\n <path\n fill=\"currentColor\"\n d=\"M256 177.2L146.4 286.8l8.5 8.4 51.4-51.4 51.4 51.4 8.2-8.1-51.5-51.5 41.9-41.8L357.5 295l8.1-8.2z\"\n />\n </g>\n <g className=\"jkl-logo-stamp__text\">{children}</g>\n </svg>\n );\n};\n"],"names":["children","className","id","animated","title","rest","uniqueId","useId","generateSuffix","stampRef","useRef","hasAnimated","visible","useTextSpinner","jsxs","ref","xmlns","viewBox","clsx","role","jsx","fill","d"],"mappings":"6QAMyB,EACrBA,SAAAA,EACAC,UAAAA,EACAC,GAAAA,EACAC,SAAAA,GAAW,EACXC,MAAAA,KACGC,MAEG,MAAAC,EAAWC,
|
|
1
|
+
{"version":3,"file":"LogoStamp.cjs","sources":["../../../../src/components/logo/LogoStamp.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { useRef } from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport type { LogoStampProps } from \"./types.js\";\nimport { useTextSpinner } from \"./useTextSpinner.js\";\n\nexport const LogoStamp = ({\n children,\n className,\n id,\n animated = false,\n title,\n ...rest\n}: LogoStampProps): JSX.Element => {\n const uniqueId = useId(id || \"jkl-logo-stamp\", { generateSuffix: !id });\n const stampRef = useRef<SVGSVGElement>(null);\n const { hasAnimated, visible } = useTextSpinner(stampRef);\n\n return (\n <svg\n {...rest}\n ref={stampRef}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 512 512\"\n aria-labelledby={uniqueId}\n className={clsx(\"jkl-logo-stamp\", className, {\n \"jkl-logo-stamp--animated\": animated,\n })}\n data-rotate={animated && (visible || hasAnimated)}\n role=\"img\"\n >\n <title id={uniqueId}>\n {title || \"Forsikring levert av Fremtind\"}\n </title>\n <g className=\"jkl-logo-stamp__logo\">\n <path\n fill=\"currentColor\"\n d=\"M256 177.2L146.4 286.8l8.5 8.4 51.4-51.4 51.4 51.4 8.2-8.1-51.5-51.5 41.9-41.8L357.5 295l8.1-8.2z\"\n />\n </g>\n <g className=\"jkl-logo-stamp__text\">{children}</g>\n </svg>\n );\n};\n"],"names":["children","className","id","animated","title","rest","uniqueId","useId","generateSuffix","stampRef","useRef","hasAnimated","visible","useTextSpinner","jsxs","ref","xmlns","viewBox","clsx","role","jsx","fill","d"],"mappings":"6QAMyB,EACrBA,SAAAA,EACAC,UAAAA,EACAC,GAAAA,EACAC,SAAAA,GAAW,EACXC,MAAAA,KACGC,MAEG,MAAAC,EAAWC,EAAAA,MAAML,GAAM,iBAAkB,CAAEM,gBAAiBN,IAC5DO,EAAWC,SAAsB,OAC/BC,YAAAA,EAAaC,QAAAA,GAAYC,EAAAA,eAAeJ,GAG5C,OAAAK,EAAAA,KAAC,MAAA,IACOT,EACJU,IAAKN,EACLO,MAAM,6BACNC,QAAQ,cACR,kBAAiBX,EACjBL,UAAWiB,EAAAA,KAAK,iBAAkBjB,EAAW,CACzC,2BAA4BE,IAEhC,cAAaA,IAAaS,GAAWD,GACrCQ,KAAK,MAELnB,SAAA,CAAAoB,EAAAA,IAAC,QAAM,CAAAlB,GAAII,EACNN,SAAAI,GAAS,kCAEdgB,EAAAA,IAAC,IAAE,CAAAnB,UAAU,uBACTD,SAAAoB,EAAAA,IAAC,OAAA,CACGC,KAAK,eACLC,EAAE,wGAGTF,EAAAA,IAAA,IAAA,CAAEnB,UAAU,uBAAwBD,SAAAA,MACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logo.stories.cjs","sources":["../../../../../src/components/logo/stories/Logo.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { Logo as LogoComponent } from \"../Logo.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Logo/Logo\",\n component: LogoComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof LogoComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Logo: Story = {\n args: {\n animated: false,\n isSymbol: false,\n centered: false,\n title: \"Fremtind\",\n },\n render: ({ ...args }) => (\n <LogoComponent {...args} style={{ width: \"100%\" }} />\n ),\n};\n"],"names":["meta","title","component","LogoComponent","Logo","parameters","layout","tags","args","animated","isSymbol","centered","render","jsx","style","width"],"mappings":"4OAKA,MAAMA,EAAO,CACTC,MAAO,wBACPC,UAAWC,EAAAC,KACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAc,CACvBI,KAAM,CACFC,UAAU,EACVC,UAAU,EACVC,UAAU,EACVV,MAAO,YAEXW,OAAQ,KAAMJ,KACVK,EAAAA,IAACV,
|
|
1
|
+
{"version":3,"file":"Logo.stories.cjs","sources":["../../../../../src/components/logo/stories/Logo.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { Logo as LogoComponent } from \"../Logo.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Logo/Logo\",\n component: LogoComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof LogoComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Logo: Story = {\n args: {\n animated: false,\n isSymbol: false,\n centered: false,\n title: \"Fremtind\",\n },\n render: ({ ...args }) => (\n <LogoComponent {...args} style={{ width: \"100%\" }} />\n ),\n};\n"],"names":["meta","title","component","LogoComponent","Logo","parameters","layout","tags","args","animated","isSymbol","centered","render","jsx","style","width"],"mappings":"4OAKA,MAAMA,EAAO,CACTC,MAAO,wBACPC,UAAWC,EAAAC,KACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAc,CACvBI,KAAM,CACFC,UAAU,EACVC,UAAU,EACVC,UAAU,EACVV,MAAO,YAEXW,OAAQ,KAAMJ,KACVK,EAAAA,IAACV,EAAAA,KAAe,IAAGK,EAAMM,MAAO,CAAEC,MAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoStamp.stories.cjs","sources":["../../../../../src/components/logo/stories/LogoStamp.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { LogoStamp as LogoStampComponent } from \"../LogoStamp.js\";\nimport { FraSB1ogDNB } from \"../text-paths/FraSB1ogDNB.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Logo/LogoStamp\",\n component: LogoStampComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof LogoStampComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const LogoStamp: Story = {\n args: {\n children: <FraSB1ogDNB />,\n title: \"Fra SB1 og DNB\",\n },\n render: ({ ...args }) => (\n <LogoStampComponent {...args} style={{ width: \"100%\" }} />\n ),\n};\n"],"names":["meta","title","component","LogoStampComponent","LogoStamp","parameters","layout","tags","args","children","FraSB1ogDNB","render","jsx","style","width"],"mappings":"4RAMA,MAAMA,EAAO,CACTC,MAAO,6BACPC,UAAWC,EAAAC,UACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAmB,CAC5BI,KAAM,CACFC,eAAWC,EAAYA,YAAA,IACvBT,MAAO,kBAEXU,OAAQ,KAAMH,KACVI,EAAAA,IAACT,
|
|
1
|
+
{"version":3,"file":"LogoStamp.stories.cjs","sources":["../../../../../src/components/logo/stories/LogoStamp.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { LogoStamp as LogoStampComponent } from \"../LogoStamp.js\";\nimport { FraSB1ogDNB } from \"../text-paths/FraSB1ogDNB.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Logo/LogoStamp\",\n component: LogoStampComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof LogoStampComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const LogoStamp: Story = {\n args: {\n children: <FraSB1ogDNB />,\n title: \"Fra SB1 og DNB\",\n },\n render: ({ ...args }) => (\n <LogoStampComponent {...args} style={{ width: \"100%\" }} />\n ),\n};\n"],"names":["meta","title","component","LogoStampComponent","LogoStamp","parameters","layout","tags","args","children","FraSB1ogDNB","render","jsx","style","width"],"mappings":"4RAMA,MAAMA,EAAO,CACTC,MAAO,6BACPC,UAAWC,EAAAC,UACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAmB,CAC5BI,KAAM,CACFC,eAAWC,EAAYA,YAAA,IACvBT,MAAO,kBAEXU,OAAQ,KAAMH,KACVI,EAAAA,IAACT,EAAAA,UAAoB,IAAGK,EAAMK,MAAO,CAAEC,MAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTextSpinner.cjs","sources":["../../../../src/components/logo/useTextSpinner.ts"],"sourcesContent":["import React, { useState } from \"react\";\nimport { useIntersectionObserver } from \"../../hooks/useIntersectionObserver/useIntersectionObserver.js\";\nexport function useTextSpinner<T extends HTMLElement | SVGElement>(\n ref: React.RefObject<T>,\n) {\n const [hasAnimated, setHasAnimated] = useState(false);\n const [visible, setVisible] = useState(false);\n\n const onIntersect = (entries: IntersectionObserverEntry[]) => {\n const intersecting = entries.some((entry) => entry.isIntersecting);\n setVisible(intersecting);\n if (intersecting) {\n setHasAnimated(true);\n }\n };\n useIntersectionObserver(ref, onIntersect, () => setVisible(true), {\n rootMargin: \"50% 0% 0% 0%\",\n threshold: 0.5,\n });\n\n return { hasAnimated, visible };\n}\n"],"names":["ref","hasAnimated","setHasAnimated","useState","visible","setVisible","useIntersectionObserver","entries","intersecting","some","entry","isIntersecting","rootMargin","threshold"],"mappings":"6MAEO,SACHA,GAEA,MAAOC,EAAaC,GAAkBC,
|
|
1
|
+
{"version":3,"file":"useTextSpinner.cjs","sources":["../../../../src/components/logo/useTextSpinner.ts"],"sourcesContent":["import React, { useState } from \"react\";\nimport { useIntersectionObserver } from \"../../hooks/useIntersectionObserver/useIntersectionObserver.js\";\nexport function useTextSpinner<T extends HTMLElement | SVGElement>(\n ref: React.RefObject<T>,\n) {\n const [hasAnimated, setHasAnimated] = useState(false);\n const [visible, setVisible] = useState(false);\n\n const onIntersect = (entries: IntersectionObserverEntry[]) => {\n const intersecting = entries.some((entry) => entry.isIntersecting);\n setVisible(intersecting);\n if (intersecting) {\n setHasAnimated(true);\n }\n };\n useIntersectionObserver(ref, onIntersect, () => setVisible(true), {\n rootMargin: \"50% 0% 0% 0%\",\n threshold: 0.5,\n });\n\n return { hasAnimated, visible };\n}\n"],"names":["ref","hasAnimated","setHasAnimated","useState","visible","setVisible","useIntersectionObserver","entries","intersecting","some","entry","isIntersecting","rootMargin","threshold"],"mappings":"6MAEO,SACHA,GAEA,MAAOC,EAAaC,GAAkBC,EAAAA,UAAS,IACxCC,EAASC,GAAcF,EAAAA,UAAS,GASvCG,OAAAA,EAAAA,wBAAwBN,GAPHO,IACjB,MAAMC,EAAeD,EAAQE,MAAMC,GAAUA,EAAMC,iBACnDN,EAAWG,GACPA,GACAN,GAAe,EAAI,IAGe,IAAMG,GAAW,IAAO,CAC9DO,WAAY,eACZC,UAAW,KAGR,CAAEZ,YAAAA,EAAaG,QAAAA,EAC1B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("@floating-ui/react"),n=require("../../../clsx-E3yX_9sL.cjs"),s=require("react"),r=require("../../../index-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("@floating-ui/react"),n=require("../../../clsx-E3yX_9sL.cjs"),s=require("react"),r=require("../../../index-C-qqMC-u.cjs"),o=require("../../hooks/useBrowserPreferences/useBrowserPreferences.cjs");require("../../hooks/useScreen/useScreen.cjs");const i=require("../../hooks/useId/useId.cjs"),l=require("../../utilities/getThemeAndDensity.cjs"),a=require("./useMenuWideEvents.cjs");function u(e,t=0){switch(e){case"top":default:return`0 ${t}px`;case"left":return`${t}px 0`;case"bottom":return`0 ${-t}px`;case"right":return-t+"px 0"}}const c=s.forwardRef(((c,d)=>{const{children:p,className:m,initialPlacement:f,openOnHover:g=!1,keepOpenOnClickOutside:x=!1,triggerElement:h,isOpen:v,onToggle:y,...j}=c,k=i.useId("jkl-menu"),{prefersReducedMotion:P}=o.useBrowserPreferences(),F=t.useFloatingTree(),w=t.useFloatingNodeId(),I=t.useFloatingParentNodeId(),E=null!=I,M=s.useRef([]),[q,R]=s.useState(null),{allowHover:b,isOpen:N,setIsOpen:C}=a.useMenuWideEvents(F,w,I),O=void 0!==v?v:N;s.useEffect((()=>null==y?void 0:y(O)),[O,y]);const{refs:S,placement:T,context:D,floatingStyles:A}=t.useFloating({nodeId:w,open:O,onOpenChange:C,placement:f||(E?"right-start":"bottom-start"),middleware:[t.offset(2),t.flip({fallbackAxisSideDirection:"end",crossAxis:!1}),t.shift({padding:8})],whileElementsMounted:t.autoUpdate}),{getReferenceProps:B,getFloatingProps:H,getItemProps:$}=t.useInteractions([t.useHover(D,{enabled:g&&b,delay:{open:75},handleClose:t.safePolygon({requireIntent:!0,blockPointerEvents:!0})}),t.useClick(D,{event:"mousedown"}),t.useDismiss(D,{outsidePress:!x}),t.useRole(D,{role:"menu"}),t.useListNavigation(D,{listRef:M,activeIndex:q,nested:E,onNavigate:R})]),K=t.useMergeRefs([S.setReference,d]),{theme:V,density:W}=l.getThemeAndDensity(S.reference.current),{isMounted:L,styles:U}=t.useTransitionStyles(D,{duration:{open:P?0:250,close:P?0:150},initial:({side:e})=>({opacity:0,translate:u(e,5)}),open:({side:e})=>({opacity:1,translate:u(e,0)}),close:({side:e})=>({opacity:0,translate:u(e,5)})});return e.jsxs(t.FloatingNode,{id:w,children:[s.isValidElement(h)&&("button"===h.type||r.reactIsExports.isForwardRef(h))?s.cloneElement(h,{...B({...j,ref:K,role:E?"menuitem":void 0,"aria-controls":k,onClick(e){e.stopPropagation()}})}):h,L&&e.jsx(t.FloatingPortal,{children:e.jsx(t.FloatingFocusManager,{context:D,modal:!1,initialFocus:E?-1:0,returnFocus:!E,children:e.jsx("div",{className:n.clsx("jkl jkl-menu",m),"data-theme":V,"data-layout-density":W,role:"menu","data-placement":T,"aria-live":"assertive","aria-hidden":!O,ref:S.setFloating,...H({id:k,style:{...A,...U}}),children:s.Children.map(p,((e,t)=>s.isValidElement(e)&&r.reactIsExports.isForwardRef(e)?s.cloneElement(e,$({...e.props,tabIndex:q===t?0:-1,role:"menuitem",ref(e){M.current[t]=e},onClick(t){var n,s;null==(s=(n=e.props).onClick)||s.call(n,t),!t.defaultPrevented&&(null==F||F.events.emit("click"))},onKeyDown(t){var n,s;null==(s=(n=e.props).onKeyDown)||s.call(n,t),!t.defaultPrevented&&(null==F||F.events.emit("keydown"),"menuitemcheckbox"===t.currentTarget.role&&"Enter"===t.key&&C(!1))},onMouseEnter(){b&&O&&R(t)}})):e))})})})]})}));c.displayName="MenuComponent";const d=s.forwardRef(((n,s)=>null===t.useFloatingParentNodeId()?e.jsx(t.FloatingTree,{children:e.jsx(c,{ref:s,...n})}):e.jsx(c,{ref:s,...n})));d.displayName="Menu",exports.Menu=d;
|
|
2
2
|
//# sourceMappingURL=Menu.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.cjs","sources":["../../../../src/components/menu/Menu.tsx"],"sourcesContent":["import {\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n type Side,\n autoUpdate,\n flip,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useHover,\n useInteractions,\n useListNavigation,\n useMergeRefs,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport clsx from \"clsx\";\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { isForwardRef } from \"react-is\";\nimport { useBrowserPreferences } from \"../../hooks/index.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { getThemeAndDensity } from \"../../utilities/getThemeAndDensity.js\";\nimport type { MenuProps } from \"./types.js\";\nimport { useMenuWideEvents } from \"./useMenuWideEvents.js\";\n\nfunction getTranslation(side: Side, value = 0) {\n switch (side) {\n case \"top\":\n return `0 ${value}px`;\n case \"left\":\n return `${value}px 0`;\n case \"bottom\":\n return `0 ${-value}px`;\n case \"right\":\n return `${-value}px 0`;\n\n default:\n return `0 ${value}px`;\n }\n}\n\nconst MenuComponent = forwardRef<HTMLButtonElement, MenuProps>(\n (props, forwardedRef) => {\n const {\n children,\n className,\n initialPlacement,\n openOnHover = false,\n keepOpenOnClickOutside = false,\n triggerElement,\n isOpen: isOpenOverride,\n onToggle,\n ...triggerProps\n } = props;\n\n const MenuId = useId(\"jkl-menu\");\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n\n const listItemsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const {\n allowHover,\n isOpen: isOpenDefault,\n setIsOpen,\n } = useMenuWideEvents(tree, nodeId, parentId);\n\n const isOpen =\n isOpenOverride !== undefined ? isOpenOverride : isOpenDefault;\n\n useEffect(() => onToggle?.(isOpen), [isOpen, onToggle]);\n\n const { refs, placement, context, floatingStyles } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange: setIsOpen,\n placement:\n initialPlacement || (isNested ? \"right-start\" : \"bottom-start\"),\n middleware: [\n offset(2),\n flip({\n fallbackAxisSideDirection: \"end\", // Allow bottom placement in narrow viewports (https://floating-ui.com/docs/flip#fallbackaxissidedirection)\n crossAxis: false, // See https://floating-ui.com/docs/flip#combining-with-shift\n }),\n shift({ padding: 8 }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([\n useHover(context, {\n enabled: openOnHover && allowHover,\n delay: { open: 75 },\n handleClose: safePolygon({\n requireIntent: true,\n blockPointerEvents: true,\n }),\n }),\n useClick(context, {\n event: \"mousedown\",\n }),\n useDismiss(context, { outsidePress: !keepOpenOnClickOutside }),\n useRole(context, { role: \"menu\" }),\n useListNavigation(context, {\n listRef: listItemsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n }),\n ]);\n\n const referenceRef = useMergeRefs([refs.setReference, forwardedRef]);\n\n // Siden menyen rendres på rot må vi hente lokal dark/light-verdi fra triggeren\n // Vi må gjøre dette for å ta hensyn til at tema kan styres lokalt for deler av UIet\n const { theme, density } = getThemeAndDensity(\n refs.reference.current as HTMLElement,\n );\n\n const { isMounted, styles: animationStyles } = useTransitionStyles(\n context,\n {\n duration: {\n open: prefersReducedMotion ? 0 : 250,\n close: prefersReducedMotion ? 0 : 150,\n },\n initial: ({ side }) => ({\n opacity: 0,\n translate: getTranslation(side, 5),\n }),\n open: ({ side }) => ({\n opacity: 1,\n translate: getTranslation(side, 0),\n }),\n close: ({ side }) => ({\n opacity: 0,\n translate: getTranslation(side, 5),\n }),\n },\n );\n\n return (\n <FloatingNode id={nodeId}>\n {React.isValidElement(triggerElement) &&\n (triggerElement.type === \"button\" ||\n isForwardRef(triggerElement))\n ? // Dersom trigger-elementet er en knapp, sett riktige egenskaper på det\n React.cloneElement(triggerElement, {\n ...getReferenceProps({\n ...triggerProps,\n ref: referenceRef,\n role: isNested ? \"menuitem\" : undefined,\n \"aria-controls\": MenuId,\n onClick(event) {\n event.stopPropagation();\n },\n }),\n })\n : // Ellers, rendre elementet as-is, uten interaktivitet. Krev en ferdig brukbar button for å åpne menyen.\n triggerElement}\n {isMounted && (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n // Prevent outside content interference.\n modal={false}\n // Only initially focus the root floating menu.\n initialFocus={isNested ? -1 : 0}\n // Only return focus to the root menu's reference when menus close.\n returnFocus={!isNested}\n >\n <div\n className={clsx(\"jkl jkl-menu\", className)}\n data-theme={theme}\n data-layout-density={density}\n role=\"menu\"\n data-placement={placement}\n aria-live=\"assertive\"\n aria-hidden={!isOpen}\n ref={refs.setFloating}\n {...getFloatingProps({\n id: MenuId,\n style: {\n ...floatingStyles,\n ...animationStyles,\n },\n })}\n >\n {React.Children.map(\n children,\n (child, index) => {\n if (\n React.isValidElement(child) &&\n isForwardRef(child)\n ) {\n return React.cloneElement(\n child,\n getItemProps({\n ...child.props,\n tabIndex:\n activeIndex === index\n ? 0\n : -1,\n role: \"menuitem\",\n ref(\n node: HTMLButtonElement,\n ) {\n listItemsRef.current[\n index\n ] = node;\n },\n onClick(event) {\n child.props.onClick?.(\n event as React.MouseEvent<HTMLButtonElement>,\n );\n if (\n event.defaultPrevented\n ) {\n return;\n }\n tree?.events.emit(\n \"click\",\n );\n },\n onKeyDown(event) {\n child.props.onKeyDown?.(\n event,\n );\n if (\n event.defaultPrevented\n ) {\n return;\n }\n tree?.events.emit(\n \"keydown\",\n );\n if (\n event.currentTarget\n .role ===\n \"menuitemcheckbox\" &&\n event.key ===\n \"Enter\"\n ) {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n setIsOpen(false);\n }\n },\n onMouseEnter() {\n if (\n allowHover &&\n isOpen\n ) {\n setActiveIndex(\n index,\n );\n }\n },\n }),\n );\n }\n\n return child;\n },\n )}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n );\n },\n);\nMenuComponent.displayName = \"MenuComponent\";\n\nexport const Menu = forwardRef<HTMLButtonElement, MenuProps>((props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuComponent ref={ref} {...props} />\n </FloatingTree>\n );\n }\n\n return <MenuComponent ref={ref} {...props} />;\n});\nMenu.displayName = \"Menu\";\n"],"names":["getTranslation","side","value","MenuComponent","forwardRef","props","forwardedRef","children","className","initialPlacement","openOnHover","keepOpenOnClickOutside","triggerElement","isOpen","isOpenOverride","onToggle","triggerProps","MenuId","useId","prefersReducedMotion","useBrowserPreferences","tree","useFloatingTree","nodeId","useFloatingNodeId","parentId","useFloatingParentNodeId","isNested","listItemsRef","useRef","activeIndex","setActiveIndex","useState","allowHover","isOpenDefault","setIsOpen","useMenuWideEvents","useEffect","refs","placement","context","floatingStyles","useFloating","open","onOpenChange","middleware","offset","flip","fallbackAxisSideDirection","crossAxis","shift","padding","whileElementsMounted","autoUpdate","getReferenceProps","getFloatingProps","getItemProps","useInteractions","useHover","enabled","delay","handleClose","safePolygon","requireIntent","blockPointerEvents","useClick","event","useDismiss","outsidePress","useRole","role","useListNavigation","listRef","nested","onNavigate","referenceRef","useMergeRefs","setReference","theme","density","getThemeAndDensity","reference","current","isMounted","styles","animationStyles","useTransitionStyles","duration","close","initial","opacity","translate","jsxs","FloatingNode","id","React","isValidElement","type","isForwardRef","cloneElement","ref","onClick","stopPropagation","FloatingPortal","jsx","FloatingFocusManager","modal","initialFocus","returnFocus","clsx","setFloating","style","Children","map","child","index","reactIsExports","tabIndex","node","_b","_a","call","defaultPrevented","events","emit","onKeyDown","currentTarget","key","onMouseEnter","displayName","Menu","FloatingTree"],"mappings":"yfAiCA,SAASA,EAAeC,EAAYC,EAAQ,GACxC,OAAQD,GACJ,IAAK,MASL,QACI,MAAO,KAAKC,MARhB,IAAK,OACD,MAAO,GAAGA,QACd,IAAK,SACM,MAAA,MAAMA,MACjB,IAAK,QACM,OAAIA,EAAJ,OAKnB,CAEA,MAAMC,EAAgBC,EAAAA,YAClB,CAACC,EAAOC,KACE,MACFC,SAAAA,EACAC,UAAAA,EACAC,iBAAAA,EACAC,YAAAA,GAAc,EACdC,uBAAAA,GAAyB,EACzBC,eAAAA,EACAC,OAAQC,EACRC,SAAAA,KACGC,GACHX,EAEEY,EAASC,QAAM,aAEbC,qBAAAA,GAAyBC,EAAAA,wBAE3BC,EAAOC,EAAAA,kBACPC,EAASC,EAAAA,oBACTC,EAAWC,EAAAA,0BACXC,EAAuB,MAAZF,EAEXG,EAAeC,SAAwC,KACtDC,EAAaC,GAAkBC,WAAwB,OAE1DC,WAAAA,EACApB,OAAQqB,EACRC,UAAAA,GACAC,oBAAkBf,EAAME,EAAQE,GAE9BZ,OACiB,IAAnBC,EAA+BA,EAAiBoB,EAEpDG,EAAAA,WAAU,IAAM,MAAAtB,OAAAA,EAAAA,EAAWF,IAAS,CAACA,EAAQE,IAE7C,MAAQuB,KAAAA,EAAMC,UAAAA,EAAWC,QAAAA,EAASC,eAAAA,GAAmBC,EAAAA,YAAY,CAC7DnB,OAAAA,EACAoB,KAAM9B,EACN+B,aAAcT,EACdI,UACI9B,IAAqBkB,EAAW,cAAgB,gBACpDkB,WAAY,CACRC,EAAAA,OAAO,GACPC,OAAK,CACDC,0BAA2B,MAC3BC,WAAW,IAEfC,QAAM,CAAEC,QAAS,KAErBC,qBAAsBC,EAAAA,cAGlBC,kBAAAA,EAAmBC,iBAAAA,EAAkBC,aAAAA,GACzCC,EAAAA,gBAAgB,CACZC,EAAAA,SAASlB,EAAS,CACdmB,QAASjD,GAAeuB,EACxB2B,MAAO,CAAEjB,KAAM,IACfkB,YAAaC,EAAAA,YAAY,CACrBC,eAAe,EACfC,oBAAoB,MAG5BC,EAAAA,SAASzB,EAAS,CACd0B,MAAO,cAEXC,EAAAA,WAAW3B,EAAS,CAAE4B,cAAezD,IACrC0D,EAAAA,QAAQ7B,EAAS,CAAE8B,KAAM,SACzBC,EAAAA,kBAAkB/B,EAAS,CACvBgC,QAAS5C,EACTE,YAAAA,EACA2C,OAAQ9C,EACR+C,WAAY3C,MAIlB4C,EAAeC,EAAAA,aAAa,CAACtC,EAAKuC,aAAcvE,KAI9CwE,MAAAA,EAAOC,QAAAA,GAAYC,EAAAA,mBACvB1C,EAAK2C,UAAUC,UAGXC,UAAAA,EAAWC,OAAQC,GAAoBC,EAAAA,oBAC3C9C,EACA,CACI+C,SAAU,CACN5C,KAAMxB,EAAuB,EAAI,IACjCqE,MAAOrE,EAAuB,EAAI,KAEtCsE,QAAS,EAAGxF,KAAAA,OACRyF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,KAEpC0C,KAAM,EAAG1C,KAAAA,MAAY,CACjByF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,KAEpCuF,MAAO,EAAGvF,KAAAA,OACNyF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,OAMxC,OAAA2F,EAAAA,KAACC,EAAaA,aAAA,CAAAC,GAAIvE,EACbhB,SAAA,CAAAwF,EAAMC,eAAepF,KACG,WAAxBA,EAAeqF,MACZC,8BAAatF,IAEXmF,EAAMI,aAAavF,EAAgB,IAC5B0C,EAAkB,IACdtC,EACHoF,IAAKzB,EACLL,KAAM3C,EAAW,gBAAa,EAC9B,gBAAiBV,EACjBoF,QAAQnC,GACJA,EAAMoC,iBACV,MAIR1F,EACLuE,SACIoB,iBACG,CAAAhG,SAAAiG,EAAAA,IAACC,EAAAA,qBAAA,CACGjE,QAAAA,EAEAkE,OAAO,EAEPC,aAAchF,GAAgB,EAAA,EAE9BiF,aAAcjF,EAEdpB,SAAAiG,EAAAA,IAAC,MAAA,CACGhG,UAAWqG,EAAAA,KAAK,eAAgBrG,GAChC,aAAYsE,EACZ,sBAAqBC,EACrBT,KAAK,OACL,iBAAgB/B,EAChB,YAAU,YACV,eAAc1B,EACduF,IAAK9D,EAAKwE,eACNvD,EAAiB,CACjBuC,GAAI7E,EACJ8F,MAAO,IACAtE,KACA4C,KAIV9E,WAAMyG,SAASC,IACZ1G,GACA,CAAC2G,EAAOC,IAEApB,EAAMC,eAAekB,IACrBhB,EAAAkB,eAAAlB,aAAagB,GAENnB,EAAMI,aACTe,EACA1D,EAAa,IACN0D,EAAM7G,MACTgH,SACIvF,IAAgBqF,EACV,KAEV7C,KAAM,WACN8B,IACIkB,GAEa1F,EAAAsD,QACTiC,GACAG,CACR,EACAjB,QAAQnC,WACJ,OAAAqD,GAAAC,EAAAN,EAAM7G,OAAMgG,UAAZkB,EAAAE,KAAAD,EACItD,IAGAA,EAAMwD,mBAIV,MAAArG,GAAAA,EAAMsG,OAAOC,KACT,SAER,EACAC,UAAU3D,WACN,OAAAqD,GAAAC,EAAAN,EAAM7G,OAAMwH,YAAZN,EAAAE,KAAAD,EACItD,IAGAA,EAAMwD,mBAIV,MAAArG,GAAAA,EAAMsG,OAAOC,KACT,WAKI,qBAFJ1D,EAAM4D,cACDxD,MAGD,UADJJ,EAAM6D,KAIN5F,GAAU,GAElB,EACA6F,eAEQ/F,GACApB,GAEAkB,EACIoF,EAGZ,KAKLD,YAOnC,IAIZ/G,EAAc8H,YAAc,gBAErB,MAAMC,EAAO9H,EAAAA,YAAyC,CAACC,EAAO+F,IAGhD,OAFA1E,EAAAA,gCAIRyG,EAAAA,aACG,CAAA5H,SAAAiG,EAAAA,IAACrG,GAAciG,IAAAA,KAAc/F,MAKjCmG,EAAAA,IAAArG,EAAA,CAAciG,IAAAA,KAAc/F,MAExC6H,EAAKD,YAAc"}
|
|
1
|
+
{"version":3,"file":"Menu.cjs","sources":["../../../../src/components/menu/Menu.tsx"],"sourcesContent":["import {\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n type Side,\n autoUpdate,\n flip,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useHover,\n useInteractions,\n useListNavigation,\n useMergeRefs,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport clsx from \"clsx\";\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { isForwardRef } from \"react-is\";\nimport { useBrowserPreferences } from \"../../hooks/index.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { getThemeAndDensity } from \"../../utilities/getThemeAndDensity.js\";\nimport type { MenuProps } from \"./types.js\";\nimport { useMenuWideEvents } from \"./useMenuWideEvents.js\";\n\nfunction getTranslation(side: Side, value = 0) {\n switch (side) {\n case \"top\":\n return `0 ${value}px`;\n case \"left\":\n return `${value}px 0`;\n case \"bottom\":\n return `0 ${-value}px`;\n case \"right\":\n return `${-value}px 0`;\n\n default:\n return `0 ${value}px`;\n }\n}\n\nconst MenuComponent = forwardRef<HTMLButtonElement, MenuProps>(\n (props, forwardedRef) => {\n const {\n children,\n className,\n initialPlacement,\n openOnHover = false,\n keepOpenOnClickOutside = false,\n triggerElement,\n isOpen: isOpenOverride,\n onToggle,\n ...triggerProps\n } = props;\n\n const MenuId = useId(\"jkl-menu\");\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n\n const listItemsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const {\n allowHover,\n isOpen: isOpenDefault,\n setIsOpen,\n } = useMenuWideEvents(tree, nodeId, parentId);\n\n const isOpen =\n isOpenOverride !== undefined ? isOpenOverride : isOpenDefault;\n\n useEffect(() => onToggle?.(isOpen), [isOpen, onToggle]);\n\n const { refs, placement, context, floatingStyles } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange: setIsOpen,\n placement:\n initialPlacement || (isNested ? \"right-start\" : \"bottom-start\"),\n middleware: [\n offset(2),\n flip({\n fallbackAxisSideDirection: \"end\", // Allow bottom placement in narrow viewports (https://floating-ui.com/docs/flip#fallbackaxissidedirection)\n crossAxis: false, // See https://floating-ui.com/docs/flip#combining-with-shift\n }),\n shift({ padding: 8 }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([\n useHover(context, {\n enabled: openOnHover && allowHover,\n delay: { open: 75 },\n handleClose: safePolygon({\n requireIntent: true,\n blockPointerEvents: true,\n }),\n }),\n useClick(context, {\n event: \"mousedown\",\n }),\n useDismiss(context, { outsidePress: !keepOpenOnClickOutside }),\n useRole(context, { role: \"menu\" }),\n useListNavigation(context, {\n listRef: listItemsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n }),\n ]);\n\n const referenceRef = useMergeRefs([refs.setReference, forwardedRef]);\n\n // Siden menyen rendres på rot må vi hente lokal dark/light-verdi fra triggeren\n // Vi må gjøre dette for å ta hensyn til at tema kan styres lokalt for deler av UIet\n const { theme, density } = getThemeAndDensity(\n refs.reference.current as HTMLElement,\n );\n\n const { isMounted, styles: animationStyles } = useTransitionStyles(\n context,\n {\n duration: {\n open: prefersReducedMotion ? 0 : 250,\n close: prefersReducedMotion ? 0 : 150,\n },\n initial: ({ side }) => ({\n opacity: 0,\n translate: getTranslation(side, 5),\n }),\n open: ({ side }) => ({\n opacity: 1,\n translate: getTranslation(side, 0),\n }),\n close: ({ side }) => ({\n opacity: 0,\n translate: getTranslation(side, 5),\n }),\n },\n );\n\n return (\n <FloatingNode id={nodeId}>\n {React.isValidElement(triggerElement) &&\n (triggerElement.type === \"button\" ||\n isForwardRef(triggerElement))\n ? // Dersom trigger-elementet er en knapp, sett riktige egenskaper på det\n React.cloneElement(triggerElement, {\n ...getReferenceProps({\n ...triggerProps,\n ref: referenceRef,\n role: isNested ? \"menuitem\" : undefined,\n \"aria-controls\": MenuId,\n onClick(event) {\n event.stopPropagation();\n },\n }),\n })\n : // Ellers, rendre elementet as-is, uten interaktivitet. Krev en ferdig brukbar button for å åpne menyen.\n triggerElement}\n {isMounted && (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n // Prevent outside content interference.\n modal={false}\n // Only initially focus the root floating menu.\n initialFocus={isNested ? -1 : 0}\n // Only return focus to the root menu's reference when menus close.\n returnFocus={!isNested}\n >\n <div\n className={clsx(\"jkl jkl-menu\", className)}\n data-theme={theme}\n data-layout-density={density}\n role=\"menu\"\n data-placement={placement}\n aria-live=\"assertive\"\n aria-hidden={!isOpen}\n ref={refs.setFloating}\n {...getFloatingProps({\n id: MenuId,\n style: {\n ...floatingStyles,\n ...animationStyles,\n },\n })}\n >\n {React.Children.map(\n children,\n (child, index) => {\n if (\n React.isValidElement(child) &&\n isForwardRef(child)\n ) {\n return React.cloneElement(\n child,\n getItemProps({\n ...child.props,\n tabIndex:\n activeIndex === index\n ? 0\n : -1,\n role: \"menuitem\",\n ref(\n node: HTMLButtonElement,\n ) {\n listItemsRef.current[\n index\n ] = node;\n },\n onClick(event) {\n child.props.onClick?.(\n event as React.MouseEvent<HTMLButtonElement>,\n );\n if (\n event.defaultPrevented\n ) {\n return;\n }\n tree?.events.emit(\n \"click\",\n );\n },\n onKeyDown(event) {\n child.props.onKeyDown?.(\n event,\n );\n if (\n event.defaultPrevented\n ) {\n return;\n }\n tree?.events.emit(\n \"keydown\",\n );\n if (\n event.currentTarget\n .role ===\n \"menuitemcheckbox\" &&\n event.key ===\n \"Enter\"\n ) {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n setIsOpen(false);\n }\n },\n onMouseEnter() {\n if (\n allowHover &&\n isOpen\n ) {\n setActiveIndex(\n index,\n );\n }\n },\n }),\n );\n }\n\n return child;\n },\n )}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n );\n },\n);\nMenuComponent.displayName = \"MenuComponent\";\n\nexport const Menu = forwardRef<HTMLButtonElement, MenuProps>((props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuComponent ref={ref} {...props} />\n </FloatingTree>\n );\n }\n\n return <MenuComponent ref={ref} {...props} />;\n});\nMenu.displayName = \"Menu\";\n"],"names":["getTranslation","side","value","MenuComponent","forwardRef","props","forwardedRef","children","className","initialPlacement","openOnHover","keepOpenOnClickOutside","triggerElement","isOpen","isOpenOverride","onToggle","triggerProps","MenuId","useId","prefersReducedMotion","useBrowserPreferences","tree","useFloatingTree","nodeId","useFloatingNodeId","parentId","useFloatingParentNodeId","isNested","listItemsRef","useRef","activeIndex","setActiveIndex","useState","allowHover","isOpenDefault","setIsOpen","useMenuWideEvents","useEffect","refs","placement","context","floatingStyles","useFloating","open","onOpenChange","middleware","offset","flip","fallbackAxisSideDirection","crossAxis","shift","padding","whileElementsMounted","autoUpdate","getReferenceProps","getFloatingProps","getItemProps","useInteractions","useHover","enabled","delay","handleClose","safePolygon","requireIntent","blockPointerEvents","useClick","event","useDismiss","outsidePress","useRole","role","useListNavigation","listRef","nested","onNavigate","referenceRef","useMergeRefs","setReference","theme","density","getThemeAndDensity","reference","current","isMounted","styles","animationStyles","useTransitionStyles","duration","close","initial","opacity","translate","jsxs","FloatingNode","id","React","isValidElement","type","isForwardRef","cloneElement","ref","onClick","stopPropagation","FloatingPortal","jsx","FloatingFocusManager","modal","initialFocus","returnFocus","clsx","setFloating","style","Children","map","child","index","reactIsExports","tabIndex","node","_b","_a","call","defaultPrevented","events","emit","onKeyDown","currentTarget","key","onMouseEnter","displayName","Menu","FloatingTree"],"mappings":"yfAiCA,SAASA,EAAeC,EAAYC,EAAQ,GACxC,OAAQD,GACJ,IAAK,MASL,QACI,MAAO,KAAKC,MARhB,IAAK,OACD,MAAO,GAAGA,QACd,IAAK,SACM,MAAA,MAAMA,MACjB,IAAK,QACM,OAAIA,EAAJ,OAKnB,CAEA,MAAMC,EAAgBC,EAAAA,YAClB,CAACC,EAAOC,KACE,MACFC,SAAAA,EACAC,UAAAA,EACAC,iBAAAA,EACAC,YAAAA,GAAc,EACdC,uBAAAA,GAAyB,EACzBC,eAAAA,EACAC,OAAQC,EACRC,SAAAA,KACGC,GACHX,EAEEY,EAASC,QAAM,aAEbC,qBAAAA,GAAyBC,0BAE3BC,EAAOC,EAAAA,kBACPC,EAASC,EAAAA,oBACTC,EAAWC,EAAAA,0BACXC,EAAuB,MAAZF,EAEXG,EAAeC,EAAwCA,OAAA,KACtDC,EAAaC,GAAkBC,EAAAA,SAAwB,OAE1DC,WAAAA,EACApB,OAAQqB,EACRC,UAAAA,GACAC,oBAAkBf,EAAME,EAAQE,GAE9BZ,OACiB,IAAnBC,EAA+BA,EAAiBoB,EAEpDG,EAAAA,WAAU,IAAM,MAAAtB,OAAAA,EAAAA,EAAWF,IAAS,CAACA,EAAQE,IAE7C,MAAQuB,KAAAA,EAAMC,UAAAA,EAAWC,QAAAA,EAASC,eAAAA,GAAmBC,EAAAA,YAAY,CAC7DnB,OAAAA,EACAoB,KAAM9B,EACN+B,aAAcT,EACdI,UACI9B,IAAqBkB,EAAW,cAAgB,gBACpDkB,WAAY,CACRC,EAAAA,OAAO,GACPC,OAAK,CACDC,0BAA2B,MAC3BC,WAAW,IAEfC,QAAM,CAAEC,QAAS,KAErBC,qBAAsBC,EAAAA,cAGlBC,kBAAAA,EAAmBC,iBAAAA,EAAkBC,aAAAA,GACzCC,EAAAA,gBAAgB,CACZC,EAAAA,SAASlB,EAAS,CACdmB,QAASjD,GAAeuB,EACxB2B,MAAO,CAAEjB,KAAM,IACfkB,YAAaC,EAAAA,YAAY,CACrBC,eAAe,EACfC,oBAAoB,MAG5BC,EAAAA,SAASzB,EAAS,CACd0B,MAAO,cAEXC,EAAAA,WAAW3B,EAAS,CAAE4B,cAAezD,IACrC0D,EAAAA,QAAQ7B,EAAS,CAAE8B,KAAM,SACzBC,EAAAA,kBAAkB/B,EAAS,CACvBgC,QAAS5C,EACTE,YAAAA,EACA2C,OAAQ9C,EACR+C,WAAY3C,MAIlB4C,EAAeC,EAAAA,aAAa,CAACtC,EAAKuC,aAAcvE,KAI9CwE,MAAAA,EAAOC,QAAAA,GAAYC,EAAAA,mBACvB1C,EAAK2C,UAAUC,UAGXC,UAAAA,EAAWC,OAAQC,GAAoBC,EAAAA,oBAC3C9C,EACA,CACI+C,SAAU,CACN5C,KAAMxB,EAAuB,EAAI,IACjCqE,MAAOrE,EAAuB,EAAI,KAEtCsE,QAAS,EAAGxF,KAAAA,OACRyF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,KAEpC0C,KAAM,EAAG1C,KAAAA,MAAY,CACjByF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,KAEpCuF,MAAO,EAAGvF,KAAAA,OACNyF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,OAMxC,OAAA2F,EAAAA,KAACC,EAAaA,aAAA,CAAAC,GAAIvE,EACbhB,SAAA,CAAAwF,EAAMC,eAAepF,KACG,WAAxBA,EAAeqF,MACZC,8BAAatF,IAEXmF,EAAMI,aAAavF,EAAgB,IAC5B0C,EAAkB,IACdtC,EACHoF,IAAKzB,EACLL,KAAM3C,EAAW,gBAAa,EAC9B,gBAAiBV,EACjBoF,QAAQnC,GACJA,EAAMoC,iBAAgB,MAKlC1F,EACLuE,SACIoB,iBACG,CAAAhG,SAAAiG,EAAAA,IAACC,EAAAA,qBAAA,CACGjE,QAAAA,EAEAkE,OAAO,EAEPC,aAAchF,GAAgB,EAAA,EAE9BiF,aAAcjF,EAEdpB,SAAAiG,EAAAA,IAAC,MAAA,CACGhG,UAAWqG,EAAAA,KAAK,eAAgBrG,GAChC,aAAYsE,EACZ,sBAAqBC,EACrBT,KAAK,OACL,iBAAgB/B,EAChB,YAAU,YACV,eAAc1B,EACduF,IAAK9D,EAAKwE,eACNvD,EAAiB,CACjBuC,GAAI7E,EACJ8F,MAAO,IACAtE,KACA4C,KAIV9E,WAAMyG,SAASC,IACZ1G,GACA,CAAC2G,EAAOC,IAEApB,EAAMC,eAAekB,IACrBhB,EAAAkB,eAAAlB,aAAagB,GAENnB,EAAMI,aACTe,EACA1D,EAAa,IACN0D,EAAM7G,MACTgH,SACIvF,IAAgBqF,EACV,KAEV7C,KAAM,WACN8B,IACIkB,GAEa1F,EAAAsD,QACTiC,GACAG,CACR,EACAjB,QAAQnC,WACJ,OAAAqD,GAAAC,EAAAN,EAAM7G,OAAMgG,UAAZkB,EAAAE,KAAAD,EACItD,IAGAA,EAAMwD,mBAIV,MAAArG,GAAAA,EAAMsG,OAAOC,KACT,SAER,EACAC,UAAU3D,WACN,OAAAqD,GAAAC,EAAAN,EAAM7G,OAAMwH,YAAZN,EAAAE,KAAAD,EACItD,IAGAA,EAAMwD,mBAIV,MAAArG,GAAAA,EAAMsG,OAAOC,KACT,WAKI,qBAFJ1D,EAAM4D,cACDxD,MAGD,UADJJ,EAAM6D,KAIN5F,GAAU,GAElB,EACA6F,eAEQ/F,GACApB,GAEAkB,EACIoF,EAER,KAMTD,YAOnC,IAIZ/G,EAAc8H,YAAc,gBAErB,MAAMC,EAAO9H,EAAAA,YAAyC,CAACC,EAAO+F,IAGhD,OAFA1E,EAAAA,gCAIRyG,EAAAA,aACG,CAAA5H,SAAAiG,EAAAA,IAACrG,GAAciG,IAAAA,KAAc/F,MAKjCmG,EAAAA,IAAArG,EAAA,CAAciG,IAAAA,KAAc/F,MAExC6H,EAAKD,YAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.cjs","sources":["../../../../src/components/menu/MenuItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport type { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { ChevronRightIcon } from \"../icon/icons/ChevronRightIcon.js\";\nimport { OpenInNewIcon } from \"../icon/icons/OpenInNewIcon.js\";\nimport type { MenuItemProps } from \"./types.js\";\n\ntype MenuItemComponent = <ElementType extends React.ElementType = \"button\">(\n props: MenuItemProps<ElementType>,\n) => React.ReactElement | null;\n\nexport const MenuItem = forwardRef(function MenuItem<\n ElementType extends React.ElementType = \"button\",\n>(props: MenuItemProps<ElementType>, ref: PolymorphicRef<ElementType>) {\n const {\n as = \"button\",\n className,\n children,\n icon,\n expandable = false,\n external = false,\n ...rest\n } = props;\n const Component = as;\n const type = Component === \"button\" ? \"button\" : undefined;\n\n return (\n <Component\n ref={ref}\n type={type}\n role=\"menuitem\"\n className={clsx(\"jkl-menu-item\", className)}\n {...rest}\n >\n {icon && <span className=\"jkl-menu-item__icon\">{icon}</span>}\n <div className=\"jkl-menu-item__content\">\n {children}\n {external && (\n <div className={\"jkl-menu-item__arrow\"}>\n <OpenInNewIcon />\n </div>\n )}\n </div>\n {expandable && <ChevronRightIcon />}\n </Component>\n );\n}) as MenuItemComponent;\n"],"names":["MenuItem","forwardRef","props","ref","as","className","children","icon","expandable","external","rest","Component","type","jsxs","role","clsx","jsx","OpenInNewIcon","ChevronRightIcon"],"mappings":"6QAWaA,EAAWC,EAAAA,YAAW,SAEjCC,EAAmCC,GAC3B,MACFC,GAAAA,EAAK,SACLC,UAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,WAAAA,GAAa,EACbC,SAAAA,GAAW,KACRC,GACHR,EACES,EAAYP,EACZQ,EAAqB,WAAdD,EAAyB,cAAW,EAG7C,OAAAE,EAAAA,KAACF,EAAA,CACGR,IAAAA,EACAS,KAAAA,EACAE,KAAK,WACLT,UAAWU,EAAAA,KAAK,gBAAiBV,MAC7BK,EAEHJ,SAAA,CAAAC,GAASS,EAAAA,IAAA,OAAA,CAAKX,UAAU,sBAAuBC,SAAKC,IACrDM,EAAAA,KAAC,MAAI,CAAAR,UAAU,yBACVC,SAAA,CAAAA,EACAG,GACIO,EAAAA,IAAA,MAAA,CAAIX,UAAW,uBACZC,SAAAU,
|
|
1
|
+
{"version":3,"file":"MenuItem.cjs","sources":["../../../../src/components/menu/MenuItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport type { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { ChevronRightIcon } from \"../icon/icons/ChevronRightIcon.js\";\nimport { OpenInNewIcon } from \"../icon/icons/OpenInNewIcon.js\";\nimport type { MenuItemProps } from \"./types.js\";\n\ntype MenuItemComponent = <ElementType extends React.ElementType = \"button\">(\n props: MenuItemProps<ElementType>,\n) => React.ReactElement | null;\n\nexport const MenuItem = forwardRef(function MenuItem<\n ElementType extends React.ElementType = \"button\",\n>(props: MenuItemProps<ElementType>, ref: PolymorphicRef<ElementType>) {\n const {\n as = \"button\",\n className,\n children,\n icon,\n expandable = false,\n external = false,\n ...rest\n } = props;\n const Component = as;\n const type = Component === \"button\" ? \"button\" : undefined;\n\n return (\n <Component\n ref={ref}\n type={type}\n role=\"menuitem\"\n className={clsx(\"jkl-menu-item\", className)}\n {...rest}\n >\n {icon && <span className=\"jkl-menu-item__icon\">{icon}</span>}\n <div className=\"jkl-menu-item__content\">\n {children}\n {external && (\n <div className={\"jkl-menu-item__arrow\"}>\n <OpenInNewIcon />\n </div>\n )}\n </div>\n {expandable && <ChevronRightIcon />}\n </Component>\n );\n}) as MenuItemComponent;\n"],"names":["MenuItem","forwardRef","props","ref","as","className","children","icon","expandable","external","rest","Component","type","jsxs","role","clsx","jsx","OpenInNewIcon","ChevronRightIcon"],"mappings":"6QAWaA,EAAWC,EAAAA,YAAW,SAEjCC,EAAmCC,GAC3B,MACFC,GAAAA,EAAK,SACLC,UAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,WAAAA,GAAa,EACbC,SAAAA,GAAW,KACRC,GACHR,EACES,EAAYP,EACZQ,EAAqB,WAAdD,EAAyB,cAAW,EAG7C,OAAAE,EAAAA,KAACF,EAAA,CACGR,IAAAA,EACAS,KAAAA,EACAE,KAAK,WACLT,UAAWU,EAAAA,KAAK,gBAAiBV,MAC7BK,EAEHJ,SAAA,CAAAC,GAASS,EAAAA,IAAA,OAAA,CAAKX,UAAU,sBAAuBC,SAAKC,IACrDM,EAAAA,KAAC,MAAI,CAAAR,UAAU,yBACVC,SAAA,CAAAA,EACAG,GACIO,EAAAA,IAAA,MAAA,CAAIX,UAAW,uBACZC,SAAAU,EAAAA,IAACC,yBAIZT,SAAeU,EAAAA,iBAAiB,CAAA,KAG7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItemCheckbox.cjs","sources":["../../../../src/components/menu/MenuItemCheckbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n forwardRef,\n type KeyboardEventHandler,\n type MouseEventHandler,\n} from \"react\";\nimport {\n type SwipeChangeHandler,\n useSwipeGesture,\n} from \"../../hooks/useSwipeGesture/useSwipeGesture.js\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport type { MenuItemCheckboxProps } from \"./types.js\";\n\nexport const MenuItemCheckbox = forwardRef<\n HTMLDivElement,\n MenuItemCheckboxProps\n>((props, ref) => {\n const {\n \"aria-checked\": checked,\n className,\n children,\n icon,\n onChange,\n onClick,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onKeyDown,\n ...rest\n } = props;\n\n const handleClick: MouseEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault(); // Prevents the menu from closing on toggle\n onChange?.(event, !checked);\n onClick?.(event);\n };\n\n const handleChange: SwipeChangeHandler<HTMLDivElement> = (\n event,\n toggleTo,\n ) => {\n if (toggleTo !== checked) {\n onChange?.(event, toggleTo);\n }\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = (event) => {\n if (event.key === \"Enter\") {\n onChange?.(event, !checked);\n } else if (event.key === \" \") {\n event.preventDefault(); // Prevents the menu from closing on toggle, https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n onChange?.(event, !checked);\n }\n onKeyDown?.(event);\n };\n\n const { gestureHandlers } = useSwipeGesture({\n onClick: handleClick,\n onChange: handleChange,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n });\n\n return (\n <div\n ref={ref}\n tabIndex={-1}\n {...rest}\n role=\"menuitemcheckbox\"\n aria-checked={checked}\n className={clsx(\n \"jkl-menu-item\",\n \"jkl-menu-item--checkbox\",\n className,\n )}\n {...gestureHandlers}\n onKeyDown={handleKeyDown}\n >\n {icon && <span className=\"jkl-menu-item__icon\">{icon}</span>}\n <div className=\"jkl-menu-item__content\">{children}</div>\n <div className=\"jkl-toggle-switch\">\n <div className=\"jkl-toggle-switch-widget\">\n <div className=\"jkl-toggle-switch-widget__slider\">\n <div className=\"jkl-toggle-switch-widget__knob\" />\n <CheckIcon\n variant=\"small\"\n bold\n className=\"jkl-toggle-switch-widget__indicator\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n});\n\nMenuItemCheckbox.displayName = \"MenuItemCheckbox\";\n"],"names":["MenuItemCheckbox","forwardRef","props","ref","checked","className","children","icon","onChange","onClick","onPointerCancel","onPointerDown","onPointerMove","onPointerUp","onKeyDown","rest","gestureHandlers","useSwipeGesture","event","preventDefault","toggleTo","jsxs","tabIndex","role","clsx","key","jsx","CheckIcon","variant","bold","displayName"],"mappings":"sRAaaA,EAAmBC,EAAAA,YAG9B,CAACC,EAAOC,KACA,MACF,eAAgBC,EAChBC,UAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,gBAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,YAAAA,EACAC,UAAAA,KACGC,GACHb,GA2BIc,gBAAAA,GAAoBC,kBAAgB,CACxCR,QA1BoDS,IACpDA,EAAMC,iBACK,MAAAX,GAAAA,EAAAU,GAAQd,GACnB,MAAAK,GAAAA,EAAUS,
|
|
1
|
+
{"version":3,"file":"MenuItemCheckbox.cjs","sources":["../../../../src/components/menu/MenuItemCheckbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n forwardRef,\n type KeyboardEventHandler,\n type MouseEventHandler,\n} from \"react\";\nimport {\n type SwipeChangeHandler,\n useSwipeGesture,\n} from \"../../hooks/useSwipeGesture/useSwipeGesture.js\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport type { MenuItemCheckboxProps } from \"./types.js\";\n\nexport const MenuItemCheckbox = forwardRef<\n HTMLDivElement,\n MenuItemCheckboxProps\n>((props, ref) => {\n const {\n \"aria-checked\": checked,\n className,\n children,\n icon,\n onChange,\n onClick,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onKeyDown,\n ...rest\n } = props;\n\n const handleClick: MouseEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault(); // Prevents the menu from closing on toggle\n onChange?.(event, !checked);\n onClick?.(event);\n };\n\n const handleChange: SwipeChangeHandler<HTMLDivElement> = (\n event,\n toggleTo,\n ) => {\n if (toggleTo !== checked) {\n onChange?.(event, toggleTo);\n }\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = (event) => {\n if (event.key === \"Enter\") {\n onChange?.(event, !checked);\n } else if (event.key === \" \") {\n event.preventDefault(); // Prevents the menu from closing on toggle, https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n onChange?.(event, !checked);\n }\n onKeyDown?.(event);\n };\n\n const { gestureHandlers } = useSwipeGesture({\n onClick: handleClick,\n onChange: handleChange,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n });\n\n return (\n <div\n ref={ref}\n tabIndex={-1}\n {...rest}\n role=\"menuitemcheckbox\"\n aria-checked={checked}\n className={clsx(\n \"jkl-menu-item\",\n \"jkl-menu-item--checkbox\",\n className,\n )}\n {...gestureHandlers}\n onKeyDown={handleKeyDown}\n >\n {icon && <span className=\"jkl-menu-item__icon\">{icon}</span>}\n <div className=\"jkl-menu-item__content\">{children}</div>\n <div className=\"jkl-toggle-switch\">\n <div className=\"jkl-toggle-switch-widget\">\n <div className=\"jkl-toggle-switch-widget__slider\">\n <div className=\"jkl-toggle-switch-widget__knob\" />\n <CheckIcon\n variant=\"small\"\n bold\n className=\"jkl-toggle-switch-widget__indicator\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n});\n\nMenuItemCheckbox.displayName = \"MenuItemCheckbox\";\n"],"names":["MenuItemCheckbox","forwardRef","props","ref","checked","className","children","icon","onChange","onClick","onPointerCancel","onPointerDown","onPointerMove","onPointerUp","onKeyDown","rest","gestureHandlers","useSwipeGesture","event","preventDefault","toggleTo","jsxs","tabIndex","role","clsx","key","jsx","CheckIcon","variant","bold","displayName"],"mappings":"sRAaaA,EAAmBC,EAAAA,YAG9B,CAACC,EAAOC,KACA,MACF,eAAgBC,EAChBC,UAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,gBAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,YAAAA,EACAC,UAAAA,KACGC,GACHb,GA2BIc,gBAAAA,GAAoBC,kBAAgB,CACxCR,QA1BoDS,IACpDA,EAAMC,iBACK,MAAAX,GAAAA,EAAAU,GAAQd,GACnB,MAAAK,GAAAA,EAAUS,EACd,EAuBIV,SArBqD,CACrDU,EACAE,KAEIA,IAAahB,IACb,MAAAI,GAAAA,EAAWU,EAAOE,GAAAA,EAiBtBV,gBAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,YAAAA,IAIA,OAAAQ,EAAAA,KAAC,MAAA,CACGlB,IAAAA,EACAmB,UAAU,KACNP,EACJQ,KAAK,mBACL,eAAcnB,EACdC,UAAWmB,EAAAA,KACP,gBACA,0BACAnB,MAEAW,EACJF,UAhCqDI,IACvC,UAAdA,EAAMO,IACK,MAAAjB,GAAAA,EAAAU,GAAQd,GACE,MAAdc,EAAMO,MACbP,EAAMC,iBACK,MAAAX,GAAAA,EAAAU,GAAQd,IAEvB,MAAAU,GAAAA,EAAYI,EAChB,EA0BSZ,SAAA,CAAAC,GAASmB,EAAAA,IAAA,OAAA,CAAKrB,UAAU,sBAAuBC,SAAKC,IACpDmB,EAAAA,IAAA,MAAA,CAAIrB,UAAU,yBAA0BC,SAAAA,IACzCoB,EAAAA,IAAC,MAAI,CAAArB,UAAU,oBACXC,SAAAoB,EAAAA,IAAC,MAAI,CAAArB,UAAU,2BACXC,SAAAe,OAAC,MAAI,CAAAhB,UAAU,mCACXC,SAAA,CAACoB,EAAAA,IAAA,MAAA,CAAIrB,UAAU,mCACfqB,EAAAA,IAACC,EAAAA,UAAA,CACGC,QAAQ,QACRC,MAAI,EACJxB,UAAU,iDAK9B,IAIRL,EAAiB8B,YAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.stories.cjs","sources":["../../../../../src/components/menu/stories/Menu.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { GhostButton } from \"../../button/Button.js\";\nimport { ChevronDownIcon, ErrorIcon } from \"../../icon/index.js\";\nimport { Menu as MenuComponent } from \"../Menu.js\";\nimport { MenuItem } from \"../MenuItem.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Menu/Menu\",\n component: MenuComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MenuComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Menu: Story = {\n args: {\n triggerElement: (\n <GhostButton\n icon={<ChevronDownIcon bold />}\n iconPosition=\"right\"\n data-testid=\"open-menu\"\n >\n Ola Nordmann\n </GhostButton>\n ),\n keepOpenOnClickOutside: false,\n children: (\n <>\n <MenuItem>Forsikringsprofil</MenuItem>\n <MenuComponent\n triggerElement={\n <MenuItem expandable={true}>Dokumenter</MenuItem>\n }\n >\n {\" \"}\n <MenuItem as=\"a\" href=\"https://jokul.fremtind.no/\">\n Jøkuls hjemmeside\n </MenuItem>\n <MenuItem as=\"a\" href=\"https://fremtind.no/\">\n Fremtind Forsikring\n </MenuItem>\n </MenuComponent>\n\n <MenuItem icon={<ErrorIcon />}>Skadesaker</MenuItem>\n </>\n ),\n isOpen: false,\n },\n render: ({ ...args }) => <MenuComponent {...args} />,\n};\n"],"names":["meta","title","component","MenuComponent","Menu","parameters","layout","tags","args","triggerElement","jsx","GhostButton","icon","ChevronDownIcon","bold","iconPosition","children","keepOpenOnClickOutside","jsxs","Fragment","MenuItem","expandable","as","href","ErrorIcon","isOpen","render"],"mappings":"06DAQA,MAAMA,EAAO,CACTC,MAAO,wBACPC,UAAWC,EAAAC,KACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAc,CACvBI,KAAM,CACFC,eACIC,EAAAA,IAACC,EAAAA,YAAA,CACGC,KAAMF,EAAAA,IAACG,EAAAA,gBAAgB,CAAAC,MAAI,IAC3BC,aAAa,QACb,cAAY,YACfC,SAAA,iBAILC,wBAAwB,EACxBD,SAEQE,EAAAA,KAAAC,WAAA,CAAAH,SAAA,CAAAN,EAAAA,IAACU,YAASJ,SAAiB,sBAC3BE,EAAAA,KAACf,EAAAC,KAAA,CACGK,eACIC,EAAAA,IAACU,WAAS,CAAAC,YAAY,EAAML,SAAU,eAGzCA,SAAA,CAAA,UACAI,EAAAA,SAAS,CAAAE,GAAG,IAAIC,KAAK,6BAA6BP,SAEnD,4BACCI,EAAAA,SAAS,CAAAE,GAAG,IAAIC,KAAK,uBAAuBP,SAE7C,iCAGHI,EAAAA,SAAS,CAAAR,KAAOF,EAAAA,IAAAc,EAAAA,UAAA,
|
|
1
|
+
{"version":3,"file":"Menu.stories.cjs","sources":["../../../../../src/components/menu/stories/Menu.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { GhostButton } from \"../../button/Button.js\";\nimport { ChevronDownIcon, ErrorIcon } from \"../../icon/index.js\";\nimport { Menu as MenuComponent } from \"../Menu.js\";\nimport { MenuItem } from \"../MenuItem.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Menu/Menu\",\n component: MenuComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MenuComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Menu: Story = {\n args: {\n triggerElement: (\n <GhostButton\n icon={<ChevronDownIcon bold />}\n iconPosition=\"right\"\n data-testid=\"open-menu\"\n >\n Ola Nordmann\n </GhostButton>\n ),\n keepOpenOnClickOutside: false,\n children: (\n <>\n <MenuItem>Forsikringsprofil</MenuItem>\n <MenuComponent\n triggerElement={\n <MenuItem expandable={true}>Dokumenter</MenuItem>\n }\n >\n {\" \"}\n <MenuItem as=\"a\" href=\"https://jokul.fremtind.no/\">\n Jøkuls hjemmeside\n </MenuItem>\n <MenuItem as=\"a\" href=\"https://fremtind.no/\">\n Fremtind Forsikring\n </MenuItem>\n </MenuComponent>\n\n <MenuItem icon={<ErrorIcon />}>Skadesaker</MenuItem>\n </>\n ),\n isOpen: false,\n },\n render: ({ ...args }) => <MenuComponent {...args} />,\n};\n"],"names":["meta","title","component","MenuComponent","Menu","parameters","layout","tags","args","triggerElement","jsx","GhostButton","icon","ChevronDownIcon","bold","iconPosition","children","keepOpenOnClickOutside","jsxs","Fragment","MenuItem","expandable","as","href","ErrorIcon","isOpen","render"],"mappings":"06DAQA,MAAMA,EAAO,CACTC,MAAO,wBACPC,UAAWC,EAAAC,KACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAc,CACvBI,KAAM,CACFC,eACIC,EAAAA,IAACC,EAAAA,YAAA,CACGC,KAAMF,EAAAA,IAACG,EAAAA,gBAAgB,CAAAC,MAAI,IAC3BC,aAAa,QACb,cAAY,YACfC,SAAA,iBAILC,wBAAwB,EACxBD,SAEQE,EAAAA,KAAAC,WAAA,CAAAH,SAAA,CAAAN,EAAAA,IAACU,YAASJ,SAAiB,sBAC3BE,EAAAA,KAACf,EAAAC,KAAA,CACGK,eACIC,EAAAA,IAACU,WAAS,CAAAC,YAAY,EAAML,SAAU,eAGzCA,SAAA,CAAA,UACAI,EAAAA,SAAS,CAAAE,GAAG,IAAIC,KAAK,6BAA6BP,SAEnD,4BACCI,EAAAA,SAAS,CAAAE,GAAG,IAAIC,KAAK,uBAAuBP,SAE7C,iCAGHI,EAAAA,SAAS,CAAAR,KAAOF,EAAAA,IAAAc,EAAAA,UAAA,CAAU,GAAIR,SAAU,kBAGjDS,QAAQ,GAEZC,OAAQ,KAAMlB,KAAWE,EAAAA,IAACP,EAAeC,KAAA,IAAGI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuDivider.stories.cjs","sources":["../../../../../src/components/menu/stories/MenuDivider.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { MenuDivider as MenuDividerComponent } from \"../MenuDivider.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Menu/MenuDivider\",\n component: MenuDividerComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MenuDividerComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const MenuDivider: Story = {\n render: () => <MenuDividerComponent />,\n};\n"],"names":["meta","title","component","MenuDividerComponent","MenuDivider","parameters","layout","tags","render","jsx"],"mappings":"mPAKA,MAAMA,EAAO,CACTC,MAAO,+BACPC,UAAWC,EAAAC,YACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAqB,CAC9BI,OAAQ,IAAMC,EAAAA,
|
|
1
|
+
{"version":3,"file":"MenuDivider.stories.cjs","sources":["../../../../../src/components/menu/stories/MenuDivider.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { MenuDivider as MenuDividerComponent } from \"../MenuDivider.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Menu/MenuDivider\",\n component: MenuDividerComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MenuDividerComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const MenuDivider: Story = {\n render: () => <MenuDividerComponent />,\n};\n"],"names":["meta","title","component","MenuDividerComponent","MenuDivider","parameters","layout","tags","render","jsx"],"mappings":"mPAKA,MAAMA,EAAO,CACTC,MAAO,+BACPC,UAAWC,EAAAC,YACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAqB,CAC9BI,OAAQ,IAAMC,MAACN,EAAAA,YAAqB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.stories.cjs","sources":["../../../../../src/components/menu/stories/MenuItem.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { InfoIcon } from \"../../icon/index.js\";\nimport { MenuItem as MenuItemComponent } from \"../MenuItem.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Menu/MenuItem\",\n component: MenuItemComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MenuItemComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const MenuItem: Story = {\n args: {\n icon: false,\n expandable: false,\n },\n render: ({ icon, ...props }) => (\n <MenuItemComponent icon={icon ? <InfoIcon /> : undefined} {...props}>\n Hei, jeg er et MenuItem\n </MenuItemComponent>\n ),\n};\n"],"names":["meta","title","component","MenuItemComponent","MenuItem","parameters","layout","tags","args","icon","expandable","render","props","jsx","InfoIcon","children"],"mappings":"81DAMA,MAAMA,EAAO,CACTC,MAAO,4BACPC,UAAWC,EAAAC,SACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAkB,CAC3BI,KAAM,CACFC,MAAM,EACNC,YAAY,GAEhBC,OAAQ,EAAGF,KAAAA,KAASG,KAChBC,
|
|
1
|
+
{"version":3,"file":"MenuItem.stories.cjs","sources":["../../../../../src/components/menu/stories/MenuItem.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { InfoIcon } from \"../../icon/index.js\";\nimport { MenuItem as MenuItemComponent } from \"../MenuItem.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Menu/MenuItem\",\n component: MenuItemComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MenuItemComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const MenuItem: Story = {\n args: {\n icon: false,\n expandable: false,\n },\n render: ({ icon, ...props }) => (\n <MenuItemComponent icon={icon ? <InfoIcon /> : undefined} {...props}>\n Hei, jeg er et MenuItem\n </MenuItemComponent>\n ),\n};\n"],"names":["meta","title","component","MenuItemComponent","MenuItem","parameters","layout","tags","args","icon","expandable","render","props","jsx","InfoIcon","children"],"mappings":"81DAMA,MAAMA,EAAO,CACTC,MAAO,4BACPC,UAAWC,EAAAC,SACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAkB,CAC3BI,KAAM,CACFC,MAAM,EACNC,YAAY,GAEhBC,OAAQ,EAAGF,KAAAA,KAASG,KAChBC,EAAAA,IAACV,EAAkBC,SAAA,CAAAK,KAAMA,EAAQI,EAAAA,IAAAC,EAAAA,SAAA,SAAc,KAAeF,EAAOG,SAErE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMenuWideEvents.cjs","sources":["../../../../src/components/menu/useMenuWideEvents.ts"],"sourcesContent":["import type { FloatingTreeType } from \"@floating-ui/react\";\nimport { useEffect, useState } from \"react\";\n\nexport const useMenuWideEvents = (\n tree: FloatingTreeType | null,\n nodeId: string,\n parentId: string | null,\n): {\n allowHover: boolean;\n isOpen: boolean;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n} => {\n const [allowHover, setAllowHover] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n // Event emitter allows you to communicate across tree components.\n // This effect closes all menus when an item gets clicked anywhere\n // in the tree.\n useEffect(() => {\n if (!tree) return;\n\n function handleTreeClick() {\n setIsOpen(false);\n }\n\n function onSubMenuOpen(event: { nodeId: string; parentId: string }) {\n if (event.nodeId !== nodeId && event.parentId === parentId) {\n setIsOpen(false);\n }\n }\n\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuOpen);\n\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuOpen);\n };\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (isOpen && tree) {\n tree.events.emit(\"menuopen\", { parentId, nodeId });\n }\n }, [tree, isOpen, nodeId, parentId]);\n\n // Determine if \"hover\" logic can run based on the modality of input. This\n // prevents unwanted focus synchronization as menus open and close with\n // keyboard navigation and the cursor is resting on the menu.\n // biome-ignore lint/correctness/useExhaustiveDependencies:\n useEffect(() => {\n function onPointerMove({ pointerType }: PointerEvent) {\n if (pointerType !== \"touch\") {\n setAllowHover(true);\n }\n }\n\n function onKeyDown() {\n setAllowHover(false);\n }\n\n window.addEventListener(\"pointermove\", onPointerMove, {\n once: true,\n capture: true,\n });\n window.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n window.removeEventListener(\"pointermove\", onPointerMove, {\n capture: true,\n });\n window.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [allowHover]);\n\n return { allowHover, isOpen, setIsOpen };\n};\n"],"names":["tree","nodeId","parentId","allowHover","setAllowHover","useState","isOpen","setIsOpen","useEffect","events","on","handleTreeClick","onSubMenuOpen","off","event","emit","onPointerMove","pointerType","onKeyDown","addEventListener","once","capture","window","removeEventListener"],"mappings":"mIAGiC,CAC7BA,EACAC,EACAC,KAMA,MAAOC,EAAYC,GAAiBC,
|
|
1
|
+
{"version":3,"file":"useMenuWideEvents.cjs","sources":["../../../../src/components/menu/useMenuWideEvents.ts"],"sourcesContent":["import type { FloatingTreeType } from \"@floating-ui/react\";\nimport { useEffect, useState } from \"react\";\n\nexport const useMenuWideEvents = (\n tree: FloatingTreeType | null,\n nodeId: string,\n parentId: string | null,\n): {\n allowHover: boolean;\n isOpen: boolean;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n} => {\n const [allowHover, setAllowHover] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n // Event emitter allows you to communicate across tree components.\n // This effect closes all menus when an item gets clicked anywhere\n // in the tree.\n useEffect(() => {\n if (!tree) return;\n\n function handleTreeClick() {\n setIsOpen(false);\n }\n\n function onSubMenuOpen(event: { nodeId: string; parentId: string }) {\n if (event.nodeId !== nodeId && event.parentId === parentId) {\n setIsOpen(false);\n }\n }\n\n tree.events.on(\"click\", handleTreeClick);\n tree.events.on(\"menuopen\", onSubMenuOpen);\n\n return () => {\n tree.events.off(\"click\", handleTreeClick);\n tree.events.off(\"menuopen\", onSubMenuOpen);\n };\n }, [tree, nodeId, parentId]);\n\n useEffect(() => {\n if (isOpen && tree) {\n tree.events.emit(\"menuopen\", { parentId, nodeId });\n }\n }, [tree, isOpen, nodeId, parentId]);\n\n // Determine if \"hover\" logic can run based on the modality of input. This\n // prevents unwanted focus synchronization as menus open and close with\n // keyboard navigation and the cursor is resting on the menu.\n // biome-ignore lint/correctness/useExhaustiveDependencies:\n useEffect(() => {\n function onPointerMove({ pointerType }: PointerEvent) {\n if (pointerType !== \"touch\") {\n setAllowHover(true);\n }\n }\n\n function onKeyDown() {\n setAllowHover(false);\n }\n\n window.addEventListener(\"pointermove\", onPointerMove, {\n once: true,\n capture: true,\n });\n window.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n window.removeEventListener(\"pointermove\", onPointerMove, {\n capture: true,\n });\n window.removeEventListener(\"keydown\", onKeyDown, true);\n };\n }, [allowHover]);\n\n return { allowHover, isOpen, setIsOpen };\n};\n"],"names":["tree","nodeId","parentId","allowHover","setAllowHover","useState","isOpen","setIsOpen","useEffect","events","on","handleTreeClick","onSubMenuOpen","off","event","emit","onPointerMove","pointerType","onKeyDown","addEventListener","once","capture","window","removeEventListener"],"mappings":"mIAGiC,CAC7BA,EACAC,EACAC,KAMA,MAAOC,EAAYC,GAAiBC,EAAAA,UAAS,IACtCC,EAAQC,GAAaF,EAAAA,UAAS,GAKrCG,OAAAA,EAAAA,WAAU,KACN,GAAKR,EAYA,OAAAA,EAAAS,OAAOC,GAAG,QAASC,GACnBX,EAAAS,OAAOC,GAAG,WAAYE,GAEpB,KACEZ,EAAAS,OAAOI,IAAI,QAASF,GACpBX,EAAAS,OAAOI,IAAI,WAAYD,EAAa,EAf7C,SAASD,IACLJ,GAAU,EAAK,CAGnB,SAASK,EAAcE,GACfA,EAAMb,SAAWA,GAAUa,EAAMZ,WAAaA,GAC9CK,GAAU,EACd,CASJ,GACD,CAACP,EAAMC,EAAQC,IAElBM,EAAAA,WAAU,KACFF,GAAUN,GACVA,EAAKS,OAAOM,KAAK,WAAY,CAAEb,SAAAA,EAAUD,OAAAA,GAAQ,GAEtD,CAACD,EAAMM,EAAQL,EAAQC,IAM1BM,EAAAA,WAAU,KACG,SAAAQ,GAAgBC,YAAAA,IACD,UAAhBA,GACAb,GAAc,EAClB,CAGJ,SAASc,IACLd,GAAc,EAAK,CAGhB,cAAAe,iBAAiB,cAAeH,EAAe,CAClDI,MAAM,EACNC,SAAS,IAENC,OAAAH,iBAAiB,UAAWD,GAAW,GACvC,KACII,OAAAC,oBAAoB,cAAeP,EAAe,CACrDK,SAAS,IAENC,OAAAC,oBAAoB,UAAWL,GAAW,EAAI,CACzD,GACD,CAACf,IAEG,CAAEA,WAAAA,EAAYG,OAAAA,EAAQC,UAAAA,EAAU"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormErrorMessage.cjs","sources":["../../../../src/components/message/FormErrorMessage.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef, useEffect, useRef } from \"react\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { ErrorMessage } from \"./Message.js\";\nimport type { FormErrorMessageProps } from \"./types.js\";\n\nconst defaultMessageProps = {\n title: \"Feil og mangler i skjemaet\",\n};\n\nexport const FormErrorMessage = forwardRef<\n HTMLDivElement,\n FormErrorMessageProps\n>((props, forwardedRef): JSX.Element | null => {\n const { className, errors, isSubmitted, isValid, messageProps, ...rest } =\n props;\n\n const showSummary = isSubmitted && !isValid;\n\n const [messageRef] = useAnimatedHeight<HTMLDivElement>(showSummary, {\n display: \"grid\",\n });\n\n const previousErrors = useRef<Array<string | undefined>>(errors);\n useEffect(() => {\n previousErrors.current = errors;\n }, [errors]);\n const hasNewErrors = errors.length > previousErrors.current.length;\n\n return (\n <div\n ref={forwardedRef}\n className={clsx(\"jkl-form-error-message\", className)}\n {...rest}\n >\n <ErrorMessage\n {...defaultMessageProps}\n {...messageProps}\n ref={messageRef}\n role={hasNewErrors ? \"alert\" : \"presentation\"} // Unngå å repetere hele oppsummeringen etter hvert som feilene rettes\n >\n <ul className=\"jkl-list\">\n {errors\n .filter((error) => typeof error !== \"undefined\")\n .map((error) => (\n <li className=\"jkl-list__item\" key={error}>\n {error}\n </li>\n ))}\n </ul>\n </ErrorMessage>\n </div>\n );\n});\n\nFormErrorMessage.displayName = \"FormErrorMessage\";\n"],"names":["defaultMessageProps","title","FormErrorMessage","forwardRef","props","forwardedRef","className","errors","isSubmitted","isValid","messageProps","rest","showSummary","messageRef","useAnimatedHeight","display","previousErrors","useRef","useEffect","current","hasNewErrors","length","jsx","ref","clsx","children","ErrorMessage","role","filter","error","map","displayName"],"mappings":"4QAMMA,EAAsB,CACxBC,MAAO,8BAGEC,EAAmBC,EAAAA,YAG9B,CAACC,EAAOC,KACA,MAAEC,UAAAA,EAAWC,OAAAA,EAAQC,YAAAA,EAAaC,QAAAA,EAASC,aAAAA,KAAiBC,GAC9DP,EAEEQ,EAAcJ,IAAgBC,GAE7BI,GAAcC,EAAAA,kBAAkCF,EAAa,CAChEG,QAAS,SAGPC,EAAiBC,SAAkCV,GACzDW,EAAAA,WAAU,KACNF,EAAeG,QAAUZ,IAC1B,CAACA,IACJ,MAAMa,EAAeb,EAAOc,OAASL,EAAeG,QAAQE,OAGxD,OAAAC,EAAAA,IAAC,MAAA,CACGC,IAAKlB,EACLC,UAAWkB,EAAAA,KAAK,yBAA0BlB,MACtCK,EAEJc,SAAAH,EAAAA,IAACI,EAAAA,aAAA,IACO1B,KACAU,EACJa,IAAKV,EACLc,KAAMP,EAAe,QAAU,eAE/BK,SAAAH,EAAAA,IAAC,MAAGhB,UAAU,WACTmB,WACIG,QAAQC,UAAiBA,EAAU,MACnCC,KAAKD,GACDP,EAAAA,IAAA,KAAA,CAAGhB,UAAU,iBACTmB,SAAAI,GAD+BA,
|
|
1
|
+
{"version":3,"file":"FormErrorMessage.cjs","sources":["../../../../src/components/message/FormErrorMessage.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef, useEffect, useRef } from \"react\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { ErrorMessage } from \"./Message.js\";\nimport type { FormErrorMessageProps } from \"./types.js\";\n\nconst defaultMessageProps = {\n title: \"Feil og mangler i skjemaet\",\n};\n\nexport const FormErrorMessage = forwardRef<\n HTMLDivElement,\n FormErrorMessageProps\n>((props, forwardedRef): JSX.Element | null => {\n const { className, errors, isSubmitted, isValid, messageProps, ...rest } =\n props;\n\n const showSummary = isSubmitted && !isValid;\n\n const [messageRef] = useAnimatedHeight<HTMLDivElement>(showSummary, {\n display: \"grid\",\n });\n\n const previousErrors = useRef<Array<string | undefined>>(errors);\n useEffect(() => {\n previousErrors.current = errors;\n }, [errors]);\n const hasNewErrors = errors.length > previousErrors.current.length;\n\n return (\n <div\n ref={forwardedRef}\n className={clsx(\"jkl-form-error-message\", className)}\n {...rest}\n >\n <ErrorMessage\n {...defaultMessageProps}\n {...messageProps}\n ref={messageRef}\n role={hasNewErrors ? \"alert\" : \"presentation\"} // Unngå å repetere hele oppsummeringen etter hvert som feilene rettes\n >\n <ul className=\"jkl-list\">\n {errors\n .filter((error) => typeof error !== \"undefined\")\n .map((error) => (\n <li className=\"jkl-list__item\" key={error}>\n {error}\n </li>\n ))}\n </ul>\n </ErrorMessage>\n </div>\n );\n});\n\nFormErrorMessage.displayName = \"FormErrorMessage\";\n"],"names":["defaultMessageProps","title","FormErrorMessage","forwardRef","props","forwardedRef","className","errors","isSubmitted","isValid","messageProps","rest","showSummary","messageRef","useAnimatedHeight","display","previousErrors","useRef","useEffect","current","hasNewErrors","length","jsx","ref","clsx","children","ErrorMessage","role","filter","error","map","displayName"],"mappings":"4QAMMA,EAAsB,CACxBC,MAAO,8BAGEC,EAAmBC,EAAAA,YAG9B,CAACC,EAAOC,KACA,MAAEC,UAAAA,EAAWC,OAAAA,EAAQC,YAAAA,EAAaC,QAAAA,EAASC,aAAAA,KAAiBC,GAC9DP,EAEEQ,EAAcJ,IAAgBC,GAE7BI,GAAcC,EAAAA,kBAAkCF,EAAa,CAChEG,QAAS,SAGPC,EAAiBC,SAAkCV,GACzDW,EAAAA,WAAU,KACNF,EAAeG,QAAUZ,IAC1B,CAACA,IACJ,MAAMa,EAAeb,EAAOc,OAASL,EAAeG,QAAQE,OAGxD,OAAAC,EAAAA,IAAC,MAAA,CACGC,IAAKlB,EACLC,UAAWkB,EAAAA,KAAK,yBAA0BlB,MACtCK,EAEJc,SAAAH,EAAAA,IAACI,EAAAA,aAAA,IACO1B,KACAU,EACJa,IAAKV,EACLc,KAAMP,EAAe,QAAU,eAE/BK,SAAAH,EAAAA,IAAC,MAAGhB,UAAU,WACTmB,WACIG,QAAQC,UAAiBA,EAAU,MACnCC,KAAKD,GACDP,EAAAA,IAAA,KAAA,CAAGhB,UAAU,iBACTmB,SAAAI,GAD+BA,UAMxD,IAIR3B,EAAiB6B,YAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.cjs","sources":["../../../../src/components/message/Message.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { ErrorIcon } from \"../icon/icons/ErrorIcon.js\";\nimport { InfoIcon } from \"../icon/icons/InfoIcon.js\";\nimport { SuccessIcon } from \"../icon/icons/SuccessIcon.js\";\nimport { WarningIcon } from \"../icon/icons/WarningIcon.js\";\nimport { DismissButton } from \"./DismissButton.js\";\nimport type { MessageProps } from \"./types.js\";\n\ntype messageTypes = \"info\" | \"error\" | \"success\" | \"warning\";\n\nconst getIcon = (messageType: messageTypes) => {\n switch (messageType) {\n case \"error\":\n return <ErrorIcon className=\"jkl-message__icon\" />;\n case \"info\":\n return <InfoIcon className=\"jkl-message__icon\" />;\n case \"success\":\n return <SuccessIcon className=\"jkl-message__icon\" />;\n case \"warning\":\n return <WarningIcon className=\"jkl-message__icon\" />;\n default:\n return null;\n }\n};\n\nfunction messageFactory(messageType: messageTypes) {\n const Message = forwardRef<HTMLDivElement, MessageProps>((props, ref) => {\n const {\n id,\n title,\n fullWidth,\n density,\n className = \"\",\n dismissed,\n dismissAction,\n children,\n role,\n ...rest\n } = props;\n\n const boxId = useId(id || \"jkl-message\", { generateSuffix: !id });\n\n const hasStringChild = React.Children.map(\n children,\n (child) => typeof child === \"string\",\n );\n const newChildren = hasStringChild?.[0] ? <p>{children}</p> : children;\n\n return (\n <div\n {...rest}\n id={id}\n ref={ref}\n className={clsx(\n \"jkl-message\",\n `jkl-message--${messageType}`,\n className,\n {\n \"jkl-message--full\": fullWidth,\n \"jkl-message--dismissed\": dismissed,\n },\n )}\n role={role}\n data-density={density}\n >\n {getIcon(messageType)}\n <div className=\"jkl-message__content\" data-theme=\"light\">\n {title && <p className=\"jkl-message__title\">{title}</p>}\n <div className=\"jkl-message__message\">{newChildren}</div>\n </div>\n {dismissAction?.handleDismiss && (\n <DismissButton\n data-theme=\"light\"\n aria-controls={boxId}\n className=\"jkl-message__dismiss-button\"\n label={dismissAction.buttonTitle || \"Lukk\"}\n onClick={dismissAction.handleDismiss}\n />\n )}\n </div>\n );\n });\n\n Message.displayName = \"Message\";\n\n return Message;\n}\n\nexport const InfoMessage = messageFactory(\"info\");\nInfoMessage.displayName = \"InfoMessage\";\nexport const ErrorMessage = messageFactory(\"error\");\nErrorMessage.displayName = \"ErrorMessage\";\nexport const WarningMessage = messageFactory(\"warning\");\nWarningMessage.displayName = \"WarningMessage\";\nexport const SuccessMessage = messageFactory(\"success\");\nSuccessMessage.displayName = \"SuccessMessage\";\n"],"names":["getIcon","messageType","jsx","ErrorIcon","className","InfoIcon","SuccessIcon","WarningIcon","messageFactory","Message","forwardRef","props","ref","id","title","fullWidth","density","dismissed","dismissAction","children","role","rest","boxId","useId","generateSuffix","hasStringChild","React","Children","map","child","newChildren","jsxs","clsx","handleDismiss","DismissButton","label","buttonTitle","onClick","displayName","InfoMessage","ErrorMessage","WarningMessage","SuccessMessage"],"mappings":"iaAYMA,EAAWC,IACb,OAAQA,GACJ,IAAK,QACM,OAAAC,EAAAA,IAACC,EAAUA,UAAA,CAAAC,UAAU,sBAChC,IAAK,OACM,OAAAF,EAAAA,IAACG,EAASA,SAAA,CAAAD,UAAU,sBAC/B,IAAK,UACM,OAAAF,EAAAA,IAACI,EAAYA,YAAA,CAAAF,UAAU,sBAClC,IAAK,UACM,OAAAF,EAAAA,IAACK,EAAYA,YAAA,CAAAH,UAAU,sBAClC,QACW,OAAA,
|
|
1
|
+
{"version":3,"file":"Message.cjs","sources":["../../../../src/components/message/Message.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { ErrorIcon } from \"../icon/icons/ErrorIcon.js\";\nimport { InfoIcon } from \"../icon/icons/InfoIcon.js\";\nimport { SuccessIcon } from \"../icon/icons/SuccessIcon.js\";\nimport { WarningIcon } from \"../icon/icons/WarningIcon.js\";\nimport { DismissButton } from \"./DismissButton.js\";\nimport type { MessageProps } from \"./types.js\";\n\ntype messageTypes = \"info\" | \"error\" | \"success\" | \"warning\";\n\nconst getIcon = (messageType: messageTypes) => {\n switch (messageType) {\n case \"error\":\n return <ErrorIcon className=\"jkl-message__icon\" />;\n case \"info\":\n return <InfoIcon className=\"jkl-message__icon\" />;\n case \"success\":\n return <SuccessIcon className=\"jkl-message__icon\" />;\n case \"warning\":\n return <WarningIcon className=\"jkl-message__icon\" />;\n default:\n return null;\n }\n};\n\nfunction messageFactory(messageType: messageTypes) {\n const Message = forwardRef<HTMLDivElement, MessageProps>((props, ref) => {\n const {\n id,\n title,\n fullWidth,\n density,\n className = \"\",\n dismissed,\n dismissAction,\n children,\n role,\n ...rest\n } = props;\n\n const boxId = useId(id || \"jkl-message\", { generateSuffix: !id });\n\n const hasStringChild = React.Children.map(\n children,\n (child) => typeof child === \"string\",\n );\n const newChildren = hasStringChild?.[0] ? <p>{children}</p> : children;\n\n return (\n <div\n {...rest}\n id={id}\n ref={ref}\n className={clsx(\n \"jkl-message\",\n `jkl-message--${messageType}`,\n className,\n {\n \"jkl-message--full\": fullWidth,\n \"jkl-message--dismissed\": dismissed,\n },\n )}\n role={role}\n data-density={density}\n >\n {getIcon(messageType)}\n <div className=\"jkl-message__content\" data-theme=\"light\">\n {title && <p className=\"jkl-message__title\">{title}</p>}\n <div className=\"jkl-message__message\">{newChildren}</div>\n </div>\n {dismissAction?.handleDismiss && (\n <DismissButton\n data-theme=\"light\"\n aria-controls={boxId}\n className=\"jkl-message__dismiss-button\"\n label={dismissAction.buttonTitle || \"Lukk\"}\n onClick={dismissAction.handleDismiss}\n />\n )}\n </div>\n );\n });\n\n Message.displayName = \"Message\";\n\n return Message;\n}\n\nexport const InfoMessage = messageFactory(\"info\");\nInfoMessage.displayName = \"InfoMessage\";\nexport const ErrorMessage = messageFactory(\"error\");\nErrorMessage.displayName = \"ErrorMessage\";\nexport const WarningMessage = messageFactory(\"warning\");\nWarningMessage.displayName = \"WarningMessage\";\nexport const SuccessMessage = messageFactory(\"success\");\nSuccessMessage.displayName = \"SuccessMessage\";\n"],"names":["getIcon","messageType","jsx","ErrorIcon","className","InfoIcon","SuccessIcon","WarningIcon","messageFactory","Message","forwardRef","props","ref","id","title","fullWidth","density","dismissed","dismissAction","children","role","rest","boxId","useId","generateSuffix","hasStringChild","React","Children","map","child","newChildren","jsxs","clsx","handleDismiss","DismissButton","label","buttonTitle","onClick","displayName","InfoMessage","ErrorMessage","WarningMessage","SuccessMessage"],"mappings":"iaAYMA,EAAWC,IACb,OAAQA,GACJ,IAAK,QACM,OAAAC,EAAAA,IAACC,EAAUA,UAAA,CAAAC,UAAU,sBAChC,IAAK,OACM,OAAAF,EAAAA,IAACG,EAASA,SAAA,CAAAD,UAAU,sBAC/B,IAAK,UACM,OAAAF,EAAAA,IAACI,EAAYA,YAAA,CAAAF,UAAU,sBAClC,IAAK,UACM,OAAAF,EAAAA,IAACK,EAAYA,YAAA,CAAAH,UAAU,sBAClC,QACW,OAAA,KAAA,EAInB,SAASI,EAAeP,GACpB,MAAMQ,EAAUC,EAAAA,YAAyC,CAACC,EAAOC,KACvD,MACFC,GAAAA,EACAC,MAAAA,EACAC,UAAAA,EACAC,QAAAA,EACAZ,UAAAA,EAAY,GACZa,UAAAA,EACAC,cAAAA,EACAC,SAAAA,EACAC,KAAAA,KACGC,GACHV,EAEEW,EAAQC,EAAAA,MAAMV,GAAM,cAAe,CAAEW,gBAAiBX,IAEtDY,EAAiBC,EAAMC,SAASC,IAClCT,GACCU,GAA2B,iBAAVA,IAEhBC,EAAc,MAAAL,GAAAA,EAAiB,GAAMvB,EAAAA,IAAA,IAAA,CAAGiB,SAAAA,IAAgBA,EAG1D,OAAAY,EAAAA,KAAC,MAAA,IACOV,EACJR,GAAAA,EACAD,IAAAA,EACAR,UAAW4B,EAAAA,KACP,cACA,gBAAgB/B,IAChBG,EACA,CACI,oBAAqBW,EACrB,yBAA0BE,IAGlCG,KAAAA,EACA,eAAcJ,EAEbG,SAAA,CAAAnB,EAAQC,GACR8B,EAAAA,KAAA,MAAA,CAAI3B,UAAU,uBAAuB,aAAW,QAC5Ce,SAAA,CAAAL,GAAUZ,EAAAA,IAAA,IAAA,CAAEE,UAAU,qBAAsBe,SAAML,IAClDZ,EAAAA,IAAA,MAAA,CAAIE,UAAU,uBAAwBe,SAAYW,QAEtD,MAAAZ,OAAA,EAAAA,EAAee,gBACZ/B,EAAAA,IAACgC,EAAAA,cAAA,CACG,aAAW,QACX,gBAAeZ,EACflB,UAAU,8BACV+B,MAAOjB,EAAckB,aAAe,OACpCC,QAASnB,EAAce,kBAGnC,IAIR,OAAAxB,EAAQ6B,YAAc,UAEf7B,CACX,CAEa,MAAA8B,EAAc/B,EAAe,QAC1C+B,EAAYD,YAAc,cACb,MAAAE,EAAehC,EAAe,SAC3CgC,EAAaF,YAAc,eACd,MAAAG,EAAiBjC,EAAe,WAC7CiC,EAAeH,YAAc,iBAChB,MAAAI,EAAiBlC,EAAe,WAC7CkC,EAAeJ,YAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorMessage.stories.cjs","sources":["../../../../../src/components/message/stories/ErrorMessage.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { ErrorMessage as MessageComponent } from \"../Message.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Message\",\n component: MessageComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MessageComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const ErrorMessage: Story = {\n args: {\n children: \"Hei, jeg er en melding av typen error\",\n title: \"Error\",\n dismissAction: { handleDismiss() {} },\n },\n};\n"],"names":["meta","title","component","MessageComponent","ErrorMessage","parameters","layout","tags","args","children","dismissAction","handleDismiss"],"mappings":"yLAIA,MAAMA,EAAO,CACTC,MAAO,sBACPC,UAAWC,EAAAC,aACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAsB,CAC/BI,KAAM,CACFC,SAAU,wCACVR,MAAO,QACPS,cAAe,CAAEC,
|
|
1
|
+
{"version":3,"file":"ErrorMessage.stories.cjs","sources":["../../../../../src/components/message/stories/ErrorMessage.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { ErrorMessage as MessageComponent } from \"../Message.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Message\",\n component: MessageComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MessageComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const ErrorMessage: Story = {\n args: {\n children: \"Hei, jeg er en melding av typen error\",\n title: \"Error\",\n dismissAction: { handleDismiss() {} },\n },\n};\n"],"names":["meta","title","component","MessageComponent","ErrorMessage","parameters","layout","tags","args","children","dismissAction","handleDismiss"],"mappings":"yLAIA,MAAMA,EAAO,CACTC,MAAO,sBACPC,UAAWC,EAAAC,aACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAsB,CAC/BI,KAAM,CACFC,SAAU,wCACVR,MAAO,QACPS,cAAe,CAAEC,gBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfoMessage.stories.cjs","sources":["../../../../../src/components/message/stories/InfoMessage.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { InfoMessage as MessageComponent } from \"../Message.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Message\",\n component: MessageComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MessageComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const InfoMessage: Story = {\n args: {\n children: \"Hei, jeg er en melding av typen info\",\n title: \"Info\",\n dismissAction: { handleDismiss() {} },\n },\n};\n"],"names":["meta","title","component","MessageComponent","InfoMessage","parameters","layout","tags","args","children","dismissAction","handleDismiss"],"mappings":"yLAIA,MAAMA,EAAO,CACTC,MAAO,sBACPC,UAAWC,EAAAC,YACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAqB,CAC9BI,KAAM,CACFC,SAAU,uCACVR,MAAO,OACPS,cAAe,CAAEC,
|
|
1
|
+
{"version":3,"file":"InfoMessage.stories.cjs","sources":["../../../../../src/components/message/stories/InfoMessage.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { InfoMessage as MessageComponent } from \"../Message.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Message\",\n component: MessageComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MessageComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const InfoMessage: Story = {\n args: {\n children: \"Hei, jeg er en melding av typen info\",\n title: \"Info\",\n dismissAction: { handleDismiss() {} },\n },\n};\n"],"names":["meta","title","component","MessageComponent","InfoMessage","parameters","layout","tags","args","children","dismissAction","handleDismiss"],"mappings":"yLAIA,MAAMA,EAAO,CACTC,MAAO,sBACPC,UAAWC,EAAAC,YACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAqB,CAC9BI,KAAM,CACFC,SAAU,uCACVR,MAAO,OACPS,cAAe,CAAEC,gBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SuccessMessage.stories.cjs","sources":["../../../../../src/components/message/stories/SuccessMessage.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { SuccessMessage as MessageComponent } from \"../Message.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Message\",\n component: MessageComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MessageComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const SuccessMessage: Story = {\n args: {\n children: \"Hei, jeg er en melding av typen success\",\n title: \"Success\",\n dismissAction: { handleDismiss() {} },\n },\n};\n"],"names":["meta","title","component","MessageComponent","SuccessMessage","parameters","layout","tags","args","children","dismissAction","handleDismiss"],"mappings":"yLAIA,MAAMA,EAAO,CACTC,MAAO,sBACPC,UAAWC,EAAAC,eACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAwB,CACjCI,KAAM,CACFC,SAAU,0CACVR,MAAO,UACPS,cAAe,CAAEC,
|
|
1
|
+
{"version":3,"file":"SuccessMessage.stories.cjs","sources":["../../../../../src/components/message/stories/SuccessMessage.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { SuccessMessage as MessageComponent } from \"../Message.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Message\",\n component: MessageComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MessageComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const SuccessMessage: Story = {\n args: {\n children: \"Hei, jeg er en melding av typen success\",\n title: \"Success\",\n dismissAction: { handleDismiss() {} },\n },\n};\n"],"names":["meta","title","component","MessageComponent","SuccessMessage","parameters","layout","tags","args","children","dismissAction","handleDismiss"],"mappings":"yLAIA,MAAMA,EAAO,CACTC,MAAO,sBACPC,UAAWC,EAAAC,eACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAwB,CACjCI,KAAM,CACFC,SAAU,0CACVR,MAAO,UACPS,cAAe,CAAEC,gBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WarningMessage.stories.cjs","sources":["../../../../../src/components/message/stories/WarningMessage.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { WarningMessage as MessageComponent } from \"../Message.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Message\",\n component: MessageComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MessageComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const WarningMessage: Story = {\n args: {\n children: \"Hei, jeg er en melding av typen warning\",\n title: \"Warning\",\n dismissAction: { handleDismiss() {} },\n },\n};\n"],"names":["meta","title","component","MessageComponent","WarningMessage","parameters","layout","tags","args","children","dismissAction","handleDismiss"],"mappings":"yLAIA,MAAMA,EAAO,CACTC,MAAO,sBACPC,UAAWC,EAAAC,eACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAwB,CACjCI,KAAM,CACFC,SAAU,0CACVR,MAAO,UACPS,cAAe,CAAEC,
|
|
1
|
+
{"version":3,"file":"WarningMessage.stories.cjs","sources":["../../../../../src/components/message/stories/WarningMessage.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport { WarningMessage as MessageComponent } from \"../Message.js\";\nimport \"../styles/_index.scss\";\n\nconst meta = {\n title: \"Komponenter/Message\",\n component: MessageComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof MessageComponent>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const WarningMessage: Story = {\n args: {\n children: \"Hei, jeg er en melding av typen warning\",\n title: \"Warning\",\n dismissAction: { handleDismiss() {} },\n },\n};\n"],"names":["meta","title","component","MessageComponent","WarningMessage","parameters","layout","tags","args","children","dismissAction","handleDismiss"],"mappings":"yLAIA,MAAMA,EAAO,CACTC,MAAO,sBACPC,UAAWC,EAAAC,eACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAMEH,EAAwB,CACjCI,KAAM,CACFC,SAAU,0CACVR,MAAO,UACPS,cAAe,CAAEC,gBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.cjs","sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport type { IconButtonProps } from \"../icon-button/types.js\";\nimport { CloseIcon } from \"../icon/icons/CloseIcon.js\";\nimport type {\n BaseModalProps,\n ModalConfig,\n ModalOverlayProps,\n ModalProps,\n} from \"./types.js\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalContainer = forwardRef<\n HTMLDivElement,\n ModalConfig[\"container\"] & BaseModalProps\n>(({ className, ...rest }, ref) => {\n // TODO: 'data-portal' fjernes når modalen tar i bruk Popover komponenten. Issue: https://github.com/fremtind/jokul/issues/4356\n return (\n <div\n className={clsx(\"jkl-modal-container\", className)}\n {...rest}\n ref={ref}\n data-portal\n />\n );\n});\nModalContainer.displayName = \"ModalContainer\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalOverlay = forwardRef<HTMLDivElement, ModalOverlayProps>(\n ({ className, transparent, ...rest }, ref) => (\n <div\n className={clsx(\"jkl-modal-overlay\", className, {\n \"jkl-modal-overlay--transparent\": transparent,\n })}\n {...rest}\n ref={ref}\n />\n ),\n);\nModalOverlay.displayName = \"ModalOverlay\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const Modal = forwardRef<HTMLElement, ModalConfig[\"modal\"] & ModalProps>(\n ({ className, component, padding, style, ...rest }, ref) => {\n const C = component || \"div\";\n return (\n <C\n className={clsx(\"jkl jkl-modal\", className)}\n style={\n {\n \"--jkl-modal-padding\": padding\n ? `var(--jkl-spacing-${padding})`\n : undefined,\n ...style,\n } as React.CSSProperties\n }\n {...rest}\n ref={ref}\n />\n );\n },\n);\nModal.displayName = \"Modal\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalHeader = forwardRef<HTMLDivElement, BaseModalProps>(\n ({ className, ...rest }, ref) => (\n <div\n className={clsx(\"jkl-modal-header\", className)}\n {...rest}\n ref={ref}\n />\n ),\n);\nModalHeader.displayName = \"ModalHeader\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalTitle = forwardRef<\n HTMLParagraphElement,\n ModalConfig[\"title\"] & BaseModalProps\n>(({ className, ...rest }, ref) => (\n <p className={clsx(\"jkl-modal-title\", className)} {...rest} ref={ref} />\n));\nModalTitle.displayName = \"ModalTitle\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalCloseButton = forwardRef<\n HTMLButtonElement,\n Omit<ModalConfig[\"closeButton\"], \"onClick\"> &\n BaseModalProps &\n IconButtonProps\n>(({ className, ...rest }, ref) => (\n <IconButton\n className={clsx(\"jkl-modal-close\", className)}\n data-testautoid=\"jkl-modal-close\"\n {...rest}\n ref={ref}\n >\n <CloseIcon variant=\"medium\" />\n </IconButton>\n));\nModalCloseButton.displayName = \"ModalCloseButton\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalBody = forwardRef<HTMLDivElement, BaseModalProps>(\n ({ className, ...rest }, ref) => (\n <div\n className={clsx(\"jkl-modal-body\", className)}\n {...rest}\n ref={ref}\n />\n ),\n);\nModalBody.displayName = \"ModalBody\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalActions = forwardRef<HTMLDivElement, BaseModalProps>(\n ({ className, ...rest }, ref) => (\n <div\n className={clsx(\"jkl-modal-actions\", className)}\n {...rest}\n ref={ref}\n />\n ),\n);\nModalActions.displayName = \"ModalActions\";\n"],"names":["ModalContainer","forwardRef","className","rest","ref","jsx","clsx","displayName","ModalOverlay","transparent","Modal","component","padding","style","C","ModalHeader","ModalTitle","ModalCloseButton","IconButton","children","CloseIcon","variant","ModalBody","ModalActions"],"mappings":"oQAeaA,EAAiBC,cAG5B,EAAGC,UAAAA,KAAcC,GAAQC,IAGnBC,EAAAA,IAAC,MAAA,CACGH,UAAWI,EAAAA,KAAK,sBAAuBJ,MACnCC,EACJC,IAAAA,EACA,eAAW,MAIvBJ,EAAeO,YAAc,iBAKtB,MAAMC,EAAeP,EAAAA,YACxB,EAAGC,UAAAA,EAAWO,YAAAA,KAAgBN,GAAQC,IAClCC,EAAAA,IAAC,MAAA,CACGH,UAAWI,EAAAA,KAAK,oBAAqBJ,EAAW,CAC5C,iCAAkCO,OAElCN,EACJC,IAAAA,MAIZI,EAAaD,YAAc,eAKpB,MAAMG,EAAQT,EAAAA,YACjB,EAAGC,UAAAA,EAAWS,UAAAA,EAAWC,QAAAA,EAASC,MAAAA,KAAUV,GAAQC,KAChD,MAAMU,EAAIH,GAAa,MAEnB,OAAAN,EAAAA,IAACS,EAAA,CACGZ,UAAWI,EAAAA,KAAK,gBAAiBJ,GACjCW,MACI,CACI,sBAAuBD,EACjB,qBAAqBA,UACrB,KACHC,MAGPV,EACJC,IAAAA,
|
|
1
|
+
{"version":3,"file":"Modal.cjs","sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport type { IconButtonProps } from \"../icon-button/types.js\";\nimport { CloseIcon } from \"../icon/icons/CloseIcon.js\";\nimport type {\n BaseModalProps,\n ModalConfig,\n ModalOverlayProps,\n ModalProps,\n} from \"./types.js\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalContainer = forwardRef<\n HTMLDivElement,\n ModalConfig[\"container\"] & BaseModalProps\n>(({ className, ...rest }, ref) => {\n // TODO: 'data-portal' fjernes når modalen tar i bruk Popover komponenten. Issue: https://github.com/fremtind/jokul/issues/4356\n return (\n <div\n className={clsx(\"jkl-modal-container\", className)}\n {...rest}\n ref={ref}\n data-portal\n />\n );\n});\nModalContainer.displayName = \"ModalContainer\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalOverlay = forwardRef<HTMLDivElement, ModalOverlayProps>(\n ({ className, transparent, ...rest }, ref) => (\n <div\n className={clsx(\"jkl-modal-overlay\", className, {\n \"jkl-modal-overlay--transparent\": transparent,\n })}\n {...rest}\n ref={ref}\n />\n ),\n);\nModalOverlay.displayName = \"ModalOverlay\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const Modal = forwardRef<HTMLElement, ModalConfig[\"modal\"] & ModalProps>(\n ({ className, component, padding, style, ...rest }, ref) => {\n const C = component || \"div\";\n return (\n <C\n className={clsx(\"jkl jkl-modal\", className)}\n style={\n {\n \"--jkl-modal-padding\": padding\n ? `var(--jkl-spacing-${padding})`\n : undefined,\n ...style,\n } as React.CSSProperties\n }\n {...rest}\n ref={ref}\n />\n );\n },\n);\nModal.displayName = \"Modal\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalHeader = forwardRef<HTMLDivElement, BaseModalProps>(\n ({ className, ...rest }, ref) => (\n <div\n className={clsx(\"jkl-modal-header\", className)}\n {...rest}\n ref={ref}\n />\n ),\n);\nModalHeader.displayName = \"ModalHeader\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalTitle = forwardRef<\n HTMLParagraphElement,\n ModalConfig[\"title\"] & BaseModalProps\n>(({ className, ...rest }, ref) => (\n <p className={clsx(\"jkl-modal-title\", className)} {...rest} ref={ref} />\n));\nModalTitle.displayName = \"ModalTitle\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalCloseButton = forwardRef<\n HTMLButtonElement,\n Omit<ModalConfig[\"closeButton\"], \"onClick\"> &\n BaseModalProps &\n IconButtonProps\n>(({ className, ...rest }, ref) => (\n <IconButton\n className={clsx(\"jkl-modal-close\", className)}\n data-testautoid=\"jkl-modal-close\"\n {...rest}\n ref={ref}\n >\n <CloseIcon variant=\"medium\" />\n </IconButton>\n));\nModalCloseButton.displayName = \"ModalCloseButton\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalBody = forwardRef<HTMLDivElement, BaseModalProps>(\n ({ className, ...rest }, ref) => (\n <div\n className={clsx(\"jkl-modal-body\", className)}\n {...rest}\n ref={ref}\n />\n ),\n);\nModalBody.displayName = \"ModalBody\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalActions = forwardRef<HTMLDivElement, BaseModalProps>(\n ({ className, ...rest }, ref) => (\n <div\n className={clsx(\"jkl-modal-actions\", className)}\n {...rest}\n ref={ref}\n />\n ),\n);\nModalActions.displayName = \"ModalActions\";\n"],"names":["ModalContainer","forwardRef","className","rest","ref","jsx","clsx","displayName","ModalOverlay","transparent","Modal","component","padding","style","C","ModalHeader","ModalTitle","ModalCloseButton","IconButton","children","CloseIcon","variant","ModalBody","ModalActions"],"mappings":"oQAeaA,EAAiBC,cAG5B,EAAGC,UAAAA,KAAcC,GAAQC,IAGnBC,EAAAA,IAAC,MAAA,CACGH,UAAWI,EAAAA,KAAK,sBAAuBJ,MACnCC,EACJC,IAAAA,EACA,eAAW,MAIvBJ,EAAeO,YAAc,iBAKtB,MAAMC,EAAeP,EAAAA,YACxB,EAAGC,UAAAA,EAAWO,YAAAA,KAAgBN,GAAQC,IAClCC,EAAAA,IAAC,MAAA,CACGH,UAAWI,EAAAA,KAAK,oBAAqBJ,EAAW,CAC5C,iCAAkCO,OAElCN,EACJC,IAAAA,MAIZI,EAAaD,YAAc,eAKpB,MAAMG,EAAQT,EAAAA,YACjB,EAAGC,UAAAA,EAAWS,UAAAA,EAAWC,QAAAA,EAASC,MAAAA,KAAUV,GAAQC,KAChD,MAAMU,EAAIH,GAAa,MAEnB,OAAAN,EAAAA,IAACS,EAAA,CACGZ,UAAWI,EAAAA,KAAK,gBAAiBJ,GACjCW,MACI,CACI,sBAAuBD,EACjB,qBAAqBA,UACrB,KACHC,MAGPV,EACJC,IAAAA,GACJ,IAIZM,EAAMH,YAAc,QAKb,MAAMQ,EAAcd,EAAAA,YACvB,EAAGC,UAAAA,KAAcC,GAAQC,IACrBC,EAAAA,IAAC,MAAA,CACGH,UAAWI,EAAAA,KAAK,mBAAoBJ,MAChCC,EACJC,IAAAA,MAIZW,EAAYR,YAAc,cAKnB,MAAMS,EAAaf,EAGxBA,YAAA,EAAGC,UAAAA,KAAcC,GAAQC,UACtB,IAAE,CAAAF,UAAWI,EAAAA,KAAK,kBAAmBJ,MAAgBC,EAAMC,IAAAA,MAEhEY,EAAWT,YAAc,aAKZ,MAAAU,EAAmBhB,cAK9B,EAAGC,UAAAA,KAAcC,GAAQC,IACvBC,EAAAA,IAACa,EAAAA,WAAA,CACGhB,UAAWI,EAAAA,KAAK,kBAAmBJ,GACnC,kBAAgB,qBACZC,EACJC,IAAAA,EAEAe,SAAAd,EAAAA,IAACe,EAAAA,UAAU,CAAAC,QAAQ,eAG3BJ,EAAiBV,YAAc,mBAKxB,MAAMe,EAAYrB,EAAAA,YACrB,EAAGC,UAAAA,KAAcC,GAAQC,IACrBC,EAAAA,IAAC,MAAA,CACGH,UAAWI,EAAAA,KAAK,iBAAkBJ,MAC9BC,EACJC,IAAAA,MAIZkB,EAAUf,YAAc,YAKjB,MAAMgB,EAAetB,EAAAA,YACxB,EAAGC,UAAAA,KAAcC,GAAQC,IACrBC,EAAAA,IAAC,MAAA,CACGH,UAAWI,EAAAA,KAAK,oBAAqBJ,MACjCC,EACJC,IAAAA,MAIZmB,EAAahB,YAAc"}
|