@fremtind/jokul 0.43.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/README.md +52 -35
  2. package/build/build-stats.html +1 -1
  3. package/build/cjs/components/accordion/AccordionItem.cjs.map +1 -1
  4. package/build/cjs/components/autosuggest/Autosuggest.cjs +1 -1
  5. package/build/cjs/components/autosuggest/Autosuggest.cjs.map +1 -1
  6. package/build/cjs/components/autosuggest/BaseAutosuggest.cjs +2 -2
  7. package/build/cjs/components/autosuggest/BaseAutosuggest.cjs.map +1 -1
  8. package/build/cjs/components/autosuggest/ControllerButton.cjs.map +1 -1
  9. package/build/cjs/components/autosuggest/utils.cjs.map +1 -1
  10. package/build/cjs/components/breadcrumb/Breadcrumb.cjs.map +1 -1
  11. package/build/cjs/components/button/Button.cjs.map +1 -1
  12. package/build/cjs/components/card/Card.cjs.map +1 -1
  13. package/build/cjs/components/card/CardImage.cjs.map +1 -1
  14. package/build/cjs/components/card/NavCard.cjs.map +1 -1
  15. package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
  16. package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
  17. package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
  18. package/build/cjs/components/cookie-consent/CookieConsentContext.cjs.map +1 -1
  19. package/build/cjs/components/cookie-consent/cookieConsentUtils.cjs.map +1 -1
  20. package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
  21. package/build/cjs/components/datepicker/internal/Calendar.cjs.map +1 -1
  22. package/build/cjs/components/datepicker/internal/calendarReducer.cjs.map +1 -1
  23. package/build/cjs/components/datepicker/internal/useCalendar.cjs.map +1 -1
  24. package/build/cjs/components/datepicker/internal/utils.cjs.map +1 -1
  25. package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
  26. package/build/cjs/components/expander/ExpandablePanelContent.cjs.map +1 -1
  27. package/build/cjs/components/expander/Expander.cjs.map +1 -1
  28. package/build/cjs/components/expander/deprecated/ExpandSection.cjs.map +1 -1
  29. package/build/cjs/components/expander/deprecated/Expander.cjs.map +1 -1
  30. package/build/cjs/components/feedback/Feedback.cjs.map +1 -1
  31. package/build/cjs/components/feedback/feedbackContext.cjs.map +1 -1
  32. package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
  33. package/build/cjs/components/feedback/followup/useFollowup.cjs.map +1 -1
  34. package/build/cjs/components/feedback/main-question/MainQuestion.cjs.map +1 -1
  35. package/build/cjs/components/feedback/main-question/useMainQuestion.cjs.map +1 -1
  36. package/build/cjs/components/feedback/questions/AddonQuestion.cjs.map +1 -1
  37. package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs.map +1 -1
  38. package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
  39. package/build/cjs/components/feedback/questions/RadioQuestion.cjs.map +1 -1
  40. package/build/cjs/components/feedback/questions/SmileyQuestion.cjs.map +1 -1
  41. package/build/cjs/components/feedback/questions/TextQuestion.cjs.map +1 -1
  42. package/build/cjs/components/feedback/questions/smileyUtils.cjs.map +1 -1
  43. package/build/cjs/components/feedback/utils.cjs.map +1 -1
  44. package/build/cjs/components/file-input/File.cjs.map +1 -1
  45. package/build/cjs/components/file-input/FileInput.cjs.map +1 -1
  46. package/build/cjs/components/file-input/internal/Dropzone.cjs.map +1 -1
  47. package/build/cjs/components/file-input/internal/Input.cjs.map +1 -1
  48. package/build/cjs/components/file-input/internal/fileInputContext.cjs.map +1 -1
  49. package/build/cjs/components/file-input/internal/validateFile.cjs.map +1 -1
  50. package/build/cjs/components/flex/Flex.cjs.map +1 -1
  51. package/build/cjs/components/icon/icons/GreenCheckIcon.cjs.map +1 -1
  52. package/build/cjs/components/icon/icons/RedCrossIcon.cjs.map +1 -1
  53. package/build/cjs/components/icon-button/IconButton.cjs.map +1 -1
  54. package/build/cjs/components/image/Image.cjs.map +1 -1
  55. package/build/cjs/components/image/useImageLoadingStatus.cjs.map +1 -1
  56. package/build/cjs/components/input-group/FieldGroup.cjs.map +1 -1
  57. package/build/cjs/components/input-group/InputGroup.cjs.map +1 -1
  58. package/build/cjs/components/input-group/Label.cjs.map +1 -1
  59. package/build/cjs/components/input-group/SupportLabel.cjs.map +1 -1
  60. package/build/cjs/components/input-panel/RadioPanel.cjs.map +1 -1
  61. package/build/cjs/components/input-panel/RadioPanelGroup.cjs.map +1 -1
  62. package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
  63. package/build/cjs/components/list/List.cjs.map +1 -1
  64. package/build/cjs/components/loader/Loader.cjs.map +1 -1
  65. package/build/cjs/components/loader/skeletons/SkeletonAnimation.cjs.map +1 -1
  66. package/build/cjs/components/loader/skeletons/SkeletonLabel.cjs.map +1 -1
  67. package/build/cjs/components/loader/skeletons/SkeletonTextArea.cjs.map +1 -1
  68. package/build/cjs/components/logo/Logo.cjs.map +1 -1
  69. package/build/cjs/components/logo/LogoStamp.cjs.map +1 -1
  70. package/build/cjs/components/logo/useTextSpinner.cjs.map +1 -1
  71. package/build/cjs/components/menu/Menu.cjs.map +1 -1
  72. package/build/cjs/components/menu/MenuItem.cjs.map +1 -1
  73. package/build/cjs/components/menu/MenuItemCheckbox.cjs.map +1 -1
  74. package/build/cjs/components/menu/useMenuWideEvents.cjs.map +1 -1
  75. package/build/cjs/components/message/FormErrorMessage.cjs.map +1 -1
  76. package/build/cjs/components/message/Message.cjs.map +1 -1
  77. package/build/cjs/components/modal/Modal.cjs.map +1 -1
  78. package/build/cjs/components/modal/useModal.cjs.map +1 -1
  79. package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
  80. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  81. package/build/cjs/components/progress-bar/Countdown.cjs.map +1 -1
  82. package/build/cjs/components/progress-bar/ProgressBar.cjs.map +1 -1
  83. package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
  84. package/build/cjs/components/radio-button/RadioButton.cjs.map +1 -1
  85. package/build/cjs/components/radio-button/RadioButtonGroup.cjs.map +1 -1
  86. package/build/cjs/components/select/NativeSelect.cjs.map +1 -1
  87. package/build/cjs/components/select/Select.cjs.map +1 -1
  88. package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
  89. package/build/cjs/components/system-message/common/MessageIcon.cjs.map +1 -1
  90. package/build/cjs/components/table/ExpandableTableRowController.cjs.map +1 -1
  91. package/build/cjs/components/table/Table.cjs.map +1 -1
  92. package/build/cjs/components/table/TableCell.cjs.map +1 -1
  93. package/build/cjs/components/table/TableHead.cjs.map +1 -1
  94. package/build/cjs/components/table/TableHeader.cjs.map +1 -1
  95. package/build/cjs/components/table/TablePagination.cjs.map +1 -1
  96. package/build/cjs/components/table/TableRow.cjs.map +1 -1
  97. package/build/cjs/components/table/utils.cjs.map +1 -1
  98. package/build/cjs/components/tabs/NavTab.cjs.map +1 -1
  99. package/build/cjs/components/tabs/NavTabs.cjs.map +1 -1
  100. package/build/cjs/components/tabs/Tab.cjs.map +1 -1
  101. package/build/cjs/components/tabs/TabList.cjs.map +1 -1
  102. package/build/cjs/components/tabs/TabPanel.cjs.map +1 -1
  103. package/build/cjs/components/tabs/Tabs.cjs.map +1 -1
  104. package/build/cjs/components/text-input/BaseTextArea.cjs.map +1 -1
  105. package/build/cjs/components/text-input/BaseTextInput.cjs.map +1 -1
  106. package/build/cjs/components/text-input/TextArea.cjs.map +1 -1
  107. package/build/cjs/components/text-input/TextInput.cjs.map +1 -1
  108. package/build/cjs/components/toast/Toast.cjs.map +1 -1
  109. package/build/cjs/components/toast/toastContext.cjs.map +1 -1
  110. package/build/cjs/components/toggle-switch/ToggleSlider.cjs.map +1 -1
  111. package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
  112. package/build/cjs/components/toggle-switch/usePillStyles.cjs.map +1 -1
  113. package/build/cjs/components/tooltip/PopupTip.cjs.map +1 -1
  114. package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
  115. package/build/cjs/components/tooltip/TooltipContent.cjs.map +1 -1
  116. package/build/cjs/components/tooltip/TooltipTrigger.cjs.map +1 -1
  117. package/build/cjs/core/index.cjs +1 -1
  118. package/build/cjs/core/index.d.cts +0 -1
  119. package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs.map +1 -1
  120. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs.map +1 -1
  121. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
  122. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
  123. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.cjs.map +1 -1
  124. package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.cjs.map +1 -1
  125. package/build/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  126. package/build/cjs/hooks/useElementDimensions/useElementDimensions.cjs.map +1 -1
  127. package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs.map +1 -1
  128. package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
  129. package/build/cjs/hooks/useKeyListener/useKeyListener.cjs.map +1 -1
  130. package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
  131. package/build/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
  132. package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.cjs.map +1 -1
  133. package/build/cjs/hooks/useScreen/state.cjs.map +1 -1
  134. package/build/cjs/hooks/useScreen/useScreen.cjs +1 -1
  135. package/build/cjs/hooks/useScreen/useScreen.cjs.map +1 -1
  136. package/build/cjs/index.cjs +1 -1
  137. package/build/cjs/tailwind/colors.cjs.map +1 -0
  138. package/build/cjs/tailwind/index.cjs +2 -0
  139. package/build/cjs/tailwind/index.cjs.map +1 -0
  140. package/build/cjs/tailwind/index.d.cts +2 -0
  141. package/build/cjs/tailwind/plugins/jokulTypographyPlugin.cjs +2 -0
  142. package/build/cjs/tailwind/plugins/jokulTypographyPlugin.cjs.map +1 -0
  143. package/build/cjs/tailwind/plugins/jokulTypographyPlugin.d.cts +4 -0
  144. package/build/cjs/tailwind/tailwindPreset.cjs +2 -0
  145. package/build/cjs/tailwind/tailwindPreset.cjs.map +1 -0
  146. package/build/cjs/tailwind/tailwindPreset.d.cts +2 -0
  147. package/build/cjs/utilities/formatters/avstand/formatAvstand.cjs.map +1 -1
  148. package/build/cjs/utilities/formatters/bytes/formatBytes.cjs.map +1 -1
  149. package/build/cjs/utilities/formatters/fodselsnummer/formatFodselsnummer.cjs.map +1 -1
  150. package/build/cjs/utilities/formatters/kontonummer/formatKontonummer.cjs.map +1 -1
  151. package/build/cjs/utilities/formatters/kortnummer/formatKortnummer.cjs.map +1 -1
  152. package/build/cjs/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs.map +1 -1
  153. package/build/cjs/utilities/formatters/telefonnummer/formatTelefonnummer.cjs.map +1 -1
  154. package/build/cjs/utilities/formatters/util/registerWithMask.cjs.map +1 -1
  155. package/build/cjs/utilities/getThemeAndDensity.cjs.map +1 -1
  156. package/build/cjs/utilities/polymorphism/SlotComponent.cjs.map +1 -1
  157. package/build/cjs/utilities/polymorphism/mergeProps.cjs.map +1 -1
  158. package/build/cjs/utilities/tabListener.cjs.map +1 -1
  159. package/build/cjs/utilities/validators/isValidKortnummer/isValidKortnummer.cjs.map +1 -1
  160. package/build/es/components/accordion/AccordionItem.js.map +1 -1
  161. package/build/es/components/autosuggest/Autosuggest.js +1 -1
  162. package/build/es/components/autosuggest/Autosuggest.js.map +1 -1
  163. package/build/es/components/autosuggest/BaseAutosuggest.js +2 -2
  164. package/build/es/components/autosuggest/BaseAutosuggest.js.map +1 -1
  165. package/build/es/components/autosuggest/utils.js.map +1 -1
  166. package/build/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  167. package/build/es/components/button/Button.js.map +1 -1
  168. package/build/es/components/card/NavCard.js.map +1 -1
  169. package/build/es/components/checkbox/Checkbox.js.map +1 -1
  170. package/build/es/components/combobox/Combobox.js.map +1 -1
  171. package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
  172. package/build/es/components/cookie-consent/CookieConsentContext.js.map +1 -1
  173. package/build/es/components/cookie-consent/cookieConsentUtils.js.map +1 -1
  174. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  175. package/build/es/components/datepicker/internal/Calendar.js.map +1 -1
  176. package/build/es/components/datepicker/internal/calendarReducer.js.map +1 -1
  177. package/build/es/components/datepicker/internal/useCalendar.js.map +1 -1
  178. package/build/es/components/datepicker/internal/utils.js.map +1 -1
  179. package/build/es/components/expander/ExpandablePanelContent.js.map +1 -1
  180. package/build/es/components/expander/Expander.js.map +1 -1
  181. package/build/es/components/expander/deprecated/ExpandSection.js.map +1 -1
  182. package/build/es/components/expander/deprecated/Expander.js.map +1 -1
  183. package/build/es/components/feedback/Feedback.js.map +1 -1
  184. package/build/es/components/feedback/followup/useFollowup.js.map +1 -1
  185. package/build/es/components/feedback/main-question/useMainQuestion.js.map +1 -1
  186. package/build/es/components/feedback/questions/CheckboxQuestion.js.map +1 -1
  187. package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
  188. package/build/es/components/feedback/questions/RadioQuestion.js.map +1 -1
  189. package/build/es/components/feedback/questions/SmileyQuestion.js.map +1 -1
  190. package/build/es/components/feedback/questions/TextQuestion.js.map +1 -1
  191. package/build/es/components/feedback/questions/smileyUtils.js.map +1 -1
  192. package/build/es/components/feedback/utils.js.map +1 -1
  193. package/build/es/components/file-input/File.js.map +1 -1
  194. package/build/es/components/file-input/FileInput.js.map +1 -1
  195. package/build/es/components/file-input/internal/Dropzone.js.map +1 -1
  196. package/build/es/components/file-input/internal/Input.js.map +1 -1
  197. package/build/es/components/flex/Flex.js.map +1 -1
  198. package/build/es/components/icon-button/IconButton.js.map +1 -1
  199. package/build/es/components/image/Image.js.map +1 -1
  200. package/build/es/components/image/useImageLoadingStatus.js.map +1 -1
  201. package/build/es/components/input-group/FieldGroup.js.map +1 -1
  202. package/build/es/components/input-group/InputGroup.js.map +1 -1
  203. package/build/es/components/input-group/Label.js.map +1 -1
  204. package/build/es/components/input-group/SupportLabel.js.map +1 -1
  205. package/build/es/components/input-panel/RadioPanel.js.map +1 -1
  206. package/build/es/components/loader/Loader.js.map +1 -1
  207. package/build/es/components/loader/skeletons/SkeletonAnimation.js.map +1 -1
  208. package/build/es/components/loader/skeletons/SkeletonLabel.js.map +1 -1
  209. package/build/es/components/loader/skeletons/SkeletonTextArea.js.map +1 -1
  210. package/build/es/components/logo/Logo.js.map +1 -1
  211. package/build/es/components/logo/LogoStamp.js.map +1 -1
  212. package/build/es/components/menu/Menu.js.map +1 -1
  213. package/build/es/components/menu/MenuItem.js.map +1 -1
  214. package/build/es/components/menu/MenuItemCheckbox.js.map +1 -1
  215. package/build/es/components/menu/useMenuWideEvents.js.map +1 -1
  216. package/build/es/components/message/FormErrorMessage.js.map +1 -1
  217. package/build/es/components/message/Message.js.map +1 -1
  218. package/build/es/components/pagination/Pagination.js.map +1 -1
  219. package/build/es/components/popover/Popover.js.map +1 -1
  220. package/build/es/components/progress-bar/Countdown.js.map +1 -1
  221. package/build/es/components/progress-bar/ProgressBar.js.map +1 -1
  222. package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
  223. package/build/es/components/radio-button/RadioButtonGroup.js.map +1 -1
  224. package/build/es/components/select/NativeSelect.js.map +1 -1
  225. package/build/es/components/select/Select.js.map +1 -1
  226. package/build/es/components/system-message/SystemMessage.js.map +1 -1
  227. package/build/es/components/system-message/common/MessageIcon.js.map +1 -1
  228. package/build/es/components/table/ExpandableTableRowController.js.map +1 -1
  229. package/build/es/components/table/Table.js.map +1 -1
  230. package/build/es/components/table/TableCell.js.map +1 -1
  231. package/build/es/components/table/TableHead.js.map +1 -1
  232. package/build/es/components/table/TableHeader.js.map +1 -1
  233. package/build/es/components/table/TablePagination.js.map +1 -1
  234. package/build/es/components/table/TableRow.js.map +1 -1
  235. package/build/es/components/table/utils.js.map +1 -1
  236. package/build/es/components/tabs/NavTab.js.map +1 -1
  237. package/build/es/components/tabs/NavTabs.js.map +1 -1
  238. package/build/es/components/tabs/Tab.js.map +1 -1
  239. package/build/es/components/tabs/TabList.js.map +1 -1
  240. package/build/es/components/tabs/Tabs.js.map +1 -1
  241. package/build/es/components/text-input/BaseTextArea.js.map +1 -1
  242. package/build/es/components/text-input/BaseTextInput.js.map +1 -1
  243. package/build/es/components/text-input/TextArea.js.map +1 -1
  244. package/build/es/components/text-input/TextInput.js.map +1 -1
  245. package/build/es/components/toast/Toast.js.map +1 -1
  246. package/build/es/components/toast/toastContext.js.map +1 -1
  247. package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -1
  248. package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
  249. package/build/es/components/toggle-switch/usePillStyles.js.map +1 -1
  250. package/build/es/components/tooltip/Tooltip.js.map +1 -1
  251. package/build/es/components/tooltip/TooltipTrigger.js.map +1 -1
  252. package/build/es/core/index.d.ts +0 -1
  253. package/build/es/core/index.js +1 -1
  254. package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js.map +1 -1
  255. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -1
  256. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
  257. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
  258. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js.map +1 -1
  259. package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -1
  260. package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -1
  261. package/build/es/hooks/useElementDimensions/useElementDimensions.js.map +1 -1
  262. package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -1
  263. package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
  264. package/build/es/hooks/useKeyListener/useKeyListener.js.map +1 -1
  265. package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
  266. package/build/es/hooks/useMutationObserver/useMutationObserver.js.map +1 -1
  267. package/build/es/hooks/useProgressiveImg/useProgressiveImg.js.map +1 -1
  268. package/build/es/hooks/useScreen/state.js.map +1 -1
  269. package/build/es/hooks/useScreen/useScreen.js +1 -1
  270. package/build/es/hooks/useScreen/useScreen.js.map +1 -1
  271. package/build/es/index.js +1 -1
  272. package/build/es/tailwind/colors.js.map +1 -0
  273. package/build/es/tailwind/index.d.ts +2 -0
  274. package/build/es/tailwind/index.js +2 -0
  275. package/build/es/tailwind/index.js.map +1 -0
  276. package/build/es/tailwind/plugins/jokulTypographyPlugin.d.ts +4 -0
  277. package/build/es/tailwind/plugins/jokulTypographyPlugin.js +2 -0
  278. package/build/es/tailwind/plugins/jokulTypographyPlugin.js.map +1 -0
  279. package/build/es/tailwind/tailwindPreset.d.ts +2 -0
  280. package/build/es/tailwind/tailwindPreset.js +2 -0
  281. package/build/es/tailwind/tailwindPreset.js.map +1 -0
  282. package/build/es/utilities/formatters/util/registerWithMask.js.map +1 -1
  283. package/build/es/utilities/getThemeAndDensity.js.map +1 -1
  284. package/build/es/utilities/polymorphism/SlotComponent.js.map +1 -1
  285. package/build/es/utilities/polymorphism/mergeProps.js.map +1 -1
  286. package/build/es/utilities/tabListener.js.map +1 -1
  287. package/build/es/utilities/validators/isValidKortnummer/isValidKortnummer.js.map +1 -1
  288. package/package.json +14 -3
  289. package/styles/components/button/button.css +2 -2
  290. package/styles/components/button/button.min.css +1 -1
  291. package/styles/components/checkbox/checkbox.css +4 -4
  292. package/styles/components/checkbox/checkbox.min.css +1 -1
  293. package/styles/components/feedback/feedback.css +2 -2
  294. package/styles/components/feedback/feedback.min.css +1 -1
  295. package/styles/components/input-group/input-group.css +2 -2
  296. package/styles/components/input-group/input-group.min.css +1 -1
  297. package/styles/components/input-panel/checkbox-panel.css +2 -2
  298. package/styles/components/input-panel/checkbox-panel.min.css +1 -1
  299. package/styles/components/input-panel/radio-panel.css +2 -2
  300. package/styles/components/input-panel/radio-panel.min.css +1 -1
  301. package/styles/components/loader/loader.css +6 -6
  302. package/styles/components/loader/loader.min.css +1 -1
  303. package/styles/components/loader/skeleton-loader.css +5 -5
  304. package/styles/components/loader/skeleton-loader.min.css +1 -1
  305. package/styles/components/message/message.css +2 -2
  306. package/styles/components/message/message.min.css +1 -1
  307. package/styles/components/progress-bar/progress-bar.css +2 -2
  308. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  309. package/styles/components/radio-button/radio-button.css +2 -2
  310. package/styles/components/radio-button/radio-button.min.css +1 -1
  311. package/styles/components/system-message/system-message.css +2 -2
  312. package/styles/components/system-message/system-message.min.css +1 -1
  313. package/styles/components/toast/toast.css +4 -4
  314. package/styles/components/toast/toast.min.css +1 -1
  315. package/styles/styles.css +37 -37
  316. package/styles/styles.min.css +1 -1
  317. package/build/cjs/core/tailwind/colors.cjs.map +0 -1
  318. package/build/cjs/core/tailwind/plugins/typographyPlugin.cjs +0 -2
  319. package/build/cjs/core/tailwind/plugins/typographyPlugin.cjs.map +0 -1
  320. package/build/cjs/core/tailwind/plugins/typographyPlugin.d.cts +0 -2
  321. package/build/cjs/core/tailwind/tailwindPreset.cjs +0 -2
  322. package/build/cjs/core/tailwind/tailwindPreset.cjs.map +0 -1
  323. package/build/cjs/core/tailwind/tailwindPreset.d.cts +0 -3
  324. package/build/es/core/tailwind/colors.js.map +0 -1
  325. package/build/es/core/tailwind/plugins/typographyPlugin.d.ts +0 -2
  326. package/build/es/core/tailwind/plugins/typographyPlugin.js +0 -2
  327. package/build/es/core/tailwind/plugins/typographyPlugin.js.map +0 -1
  328. package/build/es/core/tailwind/tailwindPreset.d.ts +0 -3
  329. package/build/es/core/tailwind/tailwindPreset.js +0 -2
  330. package/build/es/core/tailwind/tailwindPreset.js.map +0 -1
  331. package/build/tailwindPreset-CSQrgZ57.cjs +0 -2
  332. package/build/tailwindPreset-CSQrgZ57.cjs.map +0 -1
  333. package/build/tailwindPreset-D4TYL0kz.js +0 -2
  334. package/build/tailwindPreset-D4TYL0kz.js.map +0 -1
  335. /package/build/cjs/{core/tailwind → tailwind}/colors.cjs +0 -0
  336. /package/build/cjs/{core/tailwind → tailwind}/colors.d.cts +0 -0
  337. /package/build/es/{core/tailwind → tailwind}/colors.d.ts +0 -0
  338. /package/build/es/{core/tailwind → tailwind}/colors.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"useAnimatedHeightBetween.cjs","sources":["../../../../src/hooks/useAnimatedHeight/useAnimatedHeightBetween.ts"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useRef } from \"react\";\nimport tokens from \"../../core/tokens.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\nimport { UseAnimatedHeightOptions } from \"./types.js\";\n\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"productive\";\n\nfunction collapseElement<T extends HTMLElement>(\n elementRef: RefObject<T>,\n transition: string,\n raf1: React.MutableRefObject<number | undefined>,\n raf2: React.MutableRefObject<number | undefined>,\n) {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const expandedHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Hent kollapset høyde\n element.style.removeProperty(\"transition\");\n element.dataset[\"expanded\"] = \"false\";\n const collapsedHeight = element.getBoundingClientRect().height;\n element.dataset[\"expanded\"] = \"true\";\n\n // Sett høyde tilbake til utvidet høyde\n element.style.setProperty(\"height\", `${expandedHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til kollapset høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${collapsedHeight}px`);\n element.dataset[\"expanded\"] = \"false\";\n });\n });\n}\n\nfunction expandElement<T extends HTMLElement>(\n elementRef: RefObject<T>,\n transition: string,\n raf1: React.MutableRefObject<number | undefined>,\n raf2: React.MutableRefObject<number | undefined>,\n) {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const expandedHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Hent utvidet høyde\n element.style.removeProperty(\"transition\");\n element.dataset[\"expanded\"] = \"false\";\n const collapsedHeight = element.getBoundingClientRect().height;\n\n // Sett høyde tilbake til kollapset høyde\n element.style.setProperty(\"height\", `${collapsedHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til utvidet høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${expandedHeight}px`);\n element.dataset[\"expanded\"] = \"true\";\n });\n });\n}\n\n/**\n * Lar deg enklere animere mellom to tilstander, gitt ved å sette `data-expanded` på et element til `true` eller `false`.\n * Du bestemmer selv hvilke stiler elementet skal ha i de to tilstandene (vha CSS/Sass), og høyden animeres dersom den endrer seg.\n * @param isExpanded indikerer om elementet skal være utvidet eller ikke\n * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter\n * @returns En tuple med referanse til elementet og en funksjon som kan trigge animasjonen\n */\nexport function useAnimatedHeightBetween<T extends HTMLElement>(\n isExpanded: boolean,\n options?: Omit<UseAnimatedHeightOptions<T>, \"display\" | \"onFirstVisible\">,\n): [RefObject<T>, () => void] {\n const wasExpanded = usePreviousValue(isExpanded);\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n const handleTransitionEnd = useCallback(\n (event: TransitionEvent) => {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n element.removeAttribute(\"style\");\n options?.onTransitionEnd?.(isExpanded, elementRef);\n }\n },\n [options, isExpanded],\n );\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n if (wasExpanded === undefined) {\n // Første render\n element.dataset[\"expanded\"] = isExpanded ? \"true\" : \"false\";\n }\n\n if ((!isExpanded && !wasExpanded) || (isExpanded && wasExpanded)) {\n // Ingen endring\n return;\n }\n\n options?.onTransitionStart?.(isExpanded, elementRef);\n\n if (prefersReducedMotion) {\n element.removeAttribute(\"style\");\n element.dataset[\"expanded\"] = isExpanded ? \"true\" : \"false\";\n options?.onTransitionEnd?.(isExpanded, elementRef); // make sure to call callback when animation is off\n return;\n }\n\n if (isExpanded) {\n expandElement(elementRef, transition, raf1, raf2);\n } else {\n collapseElement(elementRef, transition, raf1, raf2);\n }\n }, [wasExpanded, isExpanded, options, prefersReducedMotion, transition]);\n\n useEffect(() => {\n runAnimation();\n }, [isExpanded, runAnimation]);\n\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isExpanded]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, [raf1, raf2]);\n\n return [elementRef, runAnimation];\n}\n"],"names":["isExpanded","options","wasExpanded","usePreviousValue","easing","timing","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","useCallback","event","element","current","target","removeAttribute","_a","onTransitionEnd","call","runAnimation","dataset","expanded","onTransitionStart","_b","expandedHeight","scrollHeight","requestAnimationFrame","style","removeProperty","collapsedHeight","getBoundingClientRect","height","setProperty","expandElement","collapseElement","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"mSAiFgB,SACZA,EACAC,GAEM,MAAAC,EAAcC,mBAAiBH,GAC/BI,GAAS,MAAAH,OAAA,EAAAA,EAASG,SAhFN,WAiFZC,GAAS,MAAAJ,OAAA,EAAAA,EAASI,SAhFN,aAiFZC,EAAa,GAAGC,EAAOC,OAAOH,OAAOA,aAAkBE,EAAOC,OAAOJ,OAAOA,MAE1EK,qBAAAA,GAAyBC,0BAE3BC,EAAOC,EAAAA,SACPC,EAAOD,EAAAA,SACPE,EAAaF,SAAU,MAEvBG,EAAsBC,EAAAA,aACvBC,UACG,MAAMC,EAAUJ,EAAWK,QAGvBD,GAAWD,EAAMG,SAAWF,IAC5BA,EAAQG,gBAAgB,SACf,OAAAC,EAAA,MAAArB,OAAAA,EAAAA,EAAAsB,kBAAAD,EAAAE,KAAAvB,EAAkBD,EAAYc,GAAAA,GAG/C,CAACb,EAASD,IAGRyB,EAAeT,EAAAA,aAAY,aAC7B,MAAME,EAAUJ,EAAWK,QAE3B,GAAKD,SAEe,IAAhBhB,IAEAgB,EAAQQ,QAAQC,SAAc3B,EAAa,OAAS,YAGlDA,IAAeE,GAAiBF,GAAcE,IAOpD,CAFSoB,GAAA,OAAAA,EAAA,MAAArB,OAAA,EAAAA,EAAA2B,oBAAAN,EAAAE,KAAAvB,EAAoBD,EAAYc,GAErCL,EAIA,OAHAS,EAAQG,gBAAgB,SACxBH,EAAQQ,QAAQC,SAAc3B,EAAa,OAAS,aAC3C,OAAA6B,EAAA,MAAA5B,OAAAA,EAAAA,EAAAsB,kBAAAM,EAAAL,KAAAvB,EAAkBD,EAAYc,IAIvCd,EA3FZ,SACIc,EACAR,EACAK,EACAE,GAEA,MAAMK,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMS,EAAiBZ,EAAQa,aAE1BpB,EAAAQ,QAAUa,uBAAsB,KAEzBd,EAAAe,MAAMC,eAAe,cACrBhB,EAAAQ,QAAQC,SAAc,QACxB,MAAAQ,EAAkBjB,EAAQkB,wBAAwBC,OAGxDnB,EAAQe,MAAMK,YAAY,SAAU,GAAGH,OAC/BjB,EAAAe,MAAMK,YAAY,aAAc,UAEnCzB,EAAAM,QAAUa,uBAAsB,KAEzBd,EAAAe,MAAMK,YAAY,aAAchC,GACxCY,EAAQe,MAAMK,YAAY,SAAU,GAAGR,OAC/BZ,EAAAQ,QAAQC,SAAc,SACjC,GAET,CA8D0BY,CAAAzB,EAAYR,EAAYK,EAAME,GA7HxD,SACIC,EACAR,EACAK,EACAE,GAEA,MAAMK,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMS,EAAiBZ,EAAQa,aAE1BpB,EAAAQ,QAAUa,uBAAsB,KAEzBd,EAAAe,MAAMC,eAAe,cACrBhB,EAAAQ,QAAQC,SAAc,QACxB,MAAAQ,EAAkBjB,EAAQkB,wBAAwBC,OAChDnB,EAAAQ,QAAQC,SAAc,OAG9BT,EAAQe,MAAMK,YAAY,SAAU,GAAGR,OAC/BZ,EAAAe,MAAMK,YAAY,aAAc,UAEnCzB,EAAAM,QAAUa,uBAAsB,KAEzBd,EAAAe,MAAMK,YAAY,aAAchC,GACxCY,EAAQe,MAAMK,YAAY,SAAU,GAAGH,OAC/BjB,EAAAQ,QAAQC,SAAc,UACjC,GAET,CAgG4Ba,CAAA1B,EAAYR,EAAYK,EAAME,EAAI,IAEvD,CAACX,EAAaF,EAAYC,EAASQ,EAAsBH,IAE5DmC,OAAAA,EAAAA,WAAU,KACOhB,GAAA,GACd,CAACzB,EAAYyB,IAEhBgB,EAAAA,WAAU,KACN,MAAMvB,EAAUJ,EAAWK,QAC3B,OAAID,GACQA,EAAAwB,iBAAiB,gBAAiB3B,GAGvC,KACCG,GACQA,EAAAyB,oBACJ,gBACA5B,EACJ,CAER,GAED,CAACf,IAEJyC,EAAAA,WAAU,KACN,MAAMG,EAAKjC,EAAKQ,QACV0B,EAAKhC,EAAKM,QAChB,MAAO,KACHyB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,EAAE,CACjC,GACD,CAAClC,EAAME,IAEH,CAACC,EAAYW,EACxB"}
1
+ {"version":3,"file":"useAnimatedHeightBetween.cjs","sources":["../../../../src/hooks/useAnimatedHeight/useAnimatedHeightBetween.ts"],"sourcesContent":["import { type RefObject, useCallback, useEffect, useRef } from \"react\";\nimport tokens from \"../../core/tokens.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\nimport { UseAnimatedHeightOptions } from \"./types.js\";\n\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"productive\";\n\nfunction collapseElement<T extends HTMLElement>(\n elementRef: RefObject<T>,\n transition: string,\n raf1: React.MutableRefObject<number | undefined>,\n raf2: React.MutableRefObject<number | undefined>,\n) {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const expandedHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Hent kollapset høyde\n element.style.removeProperty(\"transition\");\n element.dataset[\"expanded\"] = \"false\";\n const collapsedHeight = element.getBoundingClientRect().height;\n element.dataset[\"expanded\"] = \"true\";\n\n // Sett høyde tilbake til utvidet høyde\n element.style.setProperty(\"height\", `${expandedHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til kollapset høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${collapsedHeight}px`);\n element.dataset[\"expanded\"] = \"false\";\n });\n });\n}\n\nfunction expandElement<T extends HTMLElement>(\n elementRef: RefObject<T>,\n transition: string,\n raf1: React.MutableRefObject<number | undefined>,\n raf2: React.MutableRefObject<number | undefined>,\n) {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const expandedHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Hent utvidet høyde\n element.style.removeProperty(\"transition\");\n element.dataset[\"expanded\"] = \"false\";\n const collapsedHeight = element.getBoundingClientRect().height;\n\n // Sett høyde tilbake til kollapset høyde\n element.style.setProperty(\"height\", `${collapsedHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til utvidet høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${expandedHeight}px`);\n element.dataset[\"expanded\"] = \"true\";\n });\n });\n}\n\n/**\n * Lar deg enklere animere mellom to tilstander, gitt ved å sette `data-expanded` på et element til `true` eller `false`.\n * Du bestemmer selv hvilke stiler elementet skal ha i de to tilstandene (vha CSS/Sass), og høyden animeres dersom den endrer seg.\n * @param isExpanded indikerer om elementet skal være utvidet eller ikke\n * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter\n * @returns En tuple med referanse til elementet og en funksjon som kan trigge animasjonen\n */\nexport function useAnimatedHeightBetween<T extends HTMLElement>(\n isExpanded: boolean,\n options?: Omit<UseAnimatedHeightOptions<T>, \"display\" | \"onFirstVisible\">,\n): [RefObject<T>, () => void] {\n const wasExpanded = usePreviousValue(isExpanded);\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n const handleTransitionEnd = useCallback(\n (event: TransitionEvent) => {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n element.removeAttribute(\"style\");\n options?.onTransitionEnd?.(isExpanded, elementRef);\n }\n },\n [options, isExpanded],\n );\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n if (wasExpanded === undefined) {\n // Første render\n element.dataset[\"expanded\"] = isExpanded ? \"true\" : \"false\";\n }\n\n if ((!isExpanded && !wasExpanded) || (isExpanded && wasExpanded)) {\n // Ingen endring\n return;\n }\n\n options?.onTransitionStart?.(isExpanded, elementRef);\n\n if (prefersReducedMotion) {\n element.removeAttribute(\"style\");\n element.dataset[\"expanded\"] = isExpanded ? \"true\" : \"false\";\n options?.onTransitionEnd?.(isExpanded, elementRef); // make sure to call callback when animation is off\n return;\n }\n\n if (isExpanded) {\n expandElement(elementRef, transition, raf1, raf2);\n } else {\n collapseElement(elementRef, transition, raf1, raf2);\n }\n }, [wasExpanded, isExpanded, options, prefersReducedMotion, transition]);\n\n useEffect(() => {\n runAnimation();\n }, [isExpanded, runAnimation]);\n\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isExpanded]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, [raf1, raf2]);\n\n return [elementRef, runAnimation];\n}\n"],"names":["isExpanded","options","wasExpanded","usePreviousValue","easing","timing","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","useCallback","event","element","current","target","removeAttribute","_a","onTransitionEnd","call","runAnimation","dataset","expanded","onTransitionStart","_b","expandedHeight","scrollHeight","requestAnimationFrame","style","removeProperty","collapsedHeight","getBoundingClientRect","height","setProperty","expandElement","collapseElement","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"mSAiFgB,SACZA,EACAC,GAEM,MAAAC,EAAcC,mBAAiBH,GAC/BI,GAAS,MAAAH,OAAA,EAAAA,EAASG,SAhFN,WAiFZC,GAAS,MAAAJ,OAAA,EAAAA,EAASI,SAhFN,aAiFZC,EAAa,GAAGC,EAAOC,OAAOH,OAAOA,aAAkBE,EAAOC,OAAOJ,OAAOA,MAE1EK,qBAAAA,GAAyBC,EAAAA,wBAE3BC,EAAOC,EAAAA,SACPC,EAAOD,EAAAA,SACPE,EAAaF,SAAU,MAEvBG,EAAsBC,EAAAA,aACvBC,UACG,MAAMC,EAAUJ,EAAWK,QAGvBD,GAAWD,EAAMG,SAAWF,IAC5BA,EAAQG,gBAAgB,SACf,OAAAC,EAAA,MAAArB,OAAAA,EAAAA,EAAAsB,kBAAAD,EAAAE,KAAAvB,EAAkBD,EAAYc,GAAAA,GAG/C,CAACb,EAASD,IAGRyB,EAAeT,EAAAA,aAAY,aAC7B,MAAME,EAAUJ,EAAWK,QAE3B,GAAKD,SAEe,IAAhBhB,IAEAgB,EAAQQ,QAAQC,SAAc3B,EAAa,OAAS,YAGlDA,IAAeE,GAAiBF,GAAcE,IAOpD,CAFSoB,GAAA,OAAAA,EAAA,MAAArB,OAAA,EAAAA,EAAA2B,oBAAAN,EAAAE,KAAAvB,EAAoBD,EAAYc,GAErCL,EAIA,OAHAS,EAAQG,gBAAgB,SACxBH,EAAQQ,QAAQC,SAAc3B,EAAa,OAAS,aAC3C,OAAA6B,EAAA,MAAA5B,OAAAA,EAAAA,EAAAsB,kBAAAM,EAAAL,KAAAvB,EAAkBD,EAAYc,IAIvCd,EA3FZ,SACIc,EACAR,EACAK,EACAE,GAEA,MAAMK,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMS,EAAiBZ,EAAQa,aAE1BpB,EAAAQ,QAAUa,uBAAsB,KAEzBd,EAAAe,MAAMC,eAAe,cACrBhB,EAAAQ,QAAQC,SAAc,QACxB,MAAAQ,EAAkBjB,EAAQkB,wBAAwBC,OAGxDnB,EAAQe,MAAMK,YAAY,SAAU,GAAGH,OAC/BjB,EAAAe,MAAMK,YAAY,aAAc,UAEnCzB,EAAAM,QAAUa,uBAAsB,KAEzBd,EAAAe,MAAMK,YAAY,aAAchC,GACxCY,EAAQe,MAAMK,YAAY,SAAU,GAAGR,OAC/BZ,EAAAQ,QAAQC,SAAc,SACjC,GAET,CA8D0BY,CAAAzB,EAAYR,EAAYK,EAAME,GA7HxD,SACIC,EACAR,EACAK,EACAE,GAEA,MAAMK,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMS,EAAiBZ,EAAQa,aAE1BpB,EAAAQ,QAAUa,uBAAsB,KAEzBd,EAAAe,MAAMC,eAAe,cACrBhB,EAAAQ,QAAQC,SAAc,QACxB,MAAAQ,EAAkBjB,EAAQkB,wBAAwBC,OAChDnB,EAAAQ,QAAQC,SAAc,OAG9BT,EAAQe,MAAMK,YAAY,SAAU,GAAGR,OAC/BZ,EAAAe,MAAMK,YAAY,aAAc,UAEnCzB,EAAAM,QAAUa,uBAAsB,KAEzBd,EAAAe,MAAMK,YAAY,aAAchC,GACxCY,EAAQe,MAAMK,YAAY,SAAU,GAAGH,OAC/BjB,EAAAQ,QAAQC,SAAc,UACjC,GAET,CAgG4Ba,CAAA1B,EAAYR,EAAYK,EAAME,EAAI,IAEvD,CAACX,EAAaF,EAAYC,EAASQ,EAAsBH,IAE5DmC,OAAAA,EAAAA,WAAU,KACOhB,MACd,CAACzB,EAAYyB,IAEhBgB,EAAAA,WAAU,KACN,MAAMvB,EAAUJ,EAAWK,QAC3B,OAAID,GACQA,EAAAwB,iBAAiB,gBAAiB3B,GAGvC,KACCG,GACQA,EAAAyB,oBACJ,gBACA5B,EAAA,CAER,GAGL,CAACf,IAEJyC,EAAAA,WAAU,KACN,MAAMG,EAAKjC,EAAKQ,QACV0B,EAAKhC,EAAKM,QAChB,MAAO,KACHyB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,EAAE,CAAA,GAElC,CAAClC,EAAME,IAEH,CAACC,EAAYW,EACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoAnimateHeight.cjs","sources":["../../../../src/hooks/useAnimatedHeight/useAutoAnimateHeight.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect, useRef, useState } from \"react\";\nimport tokens from \"../../core/tokens.js\";\nimport { type Easing, type Timing } from \"../../core/types.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\n\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"expressive\";\n\nexport type UseAutoAnimatedHeightOptions<T extends HTMLElement> = {\n easing?: Easing;\n /**\n * Overstyr standard timing\n * @default \"expressive\"\n */\n timing?: Timing;\n onTransitionStart?: (ref: RefObject<T>) => void;\n onTransitionEnd?: (ref: RefObject<T>) => void;\n};\n\n/**\n * Gjør det enklere å animere høyden på et element når innholdet endrer seg, men kan brukes på mer generelt grunnlag.\n * Hooken tar inn en triggerverdi, og når denne endrer seg animeres høyden på elementet dersom den har endret seg.\n * @param trigger verdien som brukes til å trigge animasjonen. Dersom denne endrer seg animeres høyden på elementet.\n * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter\n * @returns en referanse til elementet som skal animeres\n */\nexport function useAutoAnimatedHeight<T extends HTMLElement = HTMLElement>(\n trigger: any,\n options?: UseAutoAnimatedHeightOptions<T>,\n) {\n const previousTriggerValue = usePreviousValue(trigger);\n const [previousHeight, setPreviousHeight] = useState(0);\n\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n const handleTransitionEnd = useCallback(\n (event: TransitionEvent) => {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n element.removeAttribute(\"style\");\n options?.onTransitionEnd?.(elementRef);\n }\n },\n [options],\n );\n\n const animateElement = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const newHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Sett høyde tilbake til forrige høyde\n element.style.removeProperty(\"transition\");\n element.style.setProperty(\"height\", `${previousHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til kollapset høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${newHeight}px`);\n });\n });\n\n setPreviousHeight(newHeight);\n }, [transition, previousHeight]);\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n if (previousTriggerValue === undefined) {\n // Første render\n setPreviousHeight(element.scrollHeight);\n return;\n }\n\n if (trigger === previousTriggerValue) {\n // Ingen endring\n return;\n }\n\n options?.onTransitionStart?.(elementRef);\n\n if (prefersReducedMotion) {\n options?.onTransitionEnd?.(elementRef); // make sure to call callback when animation is off\n return;\n }\n\n animateElement();\n }, [\n animateElement,\n trigger,\n previousTriggerValue,\n options,\n prefersReducedMotion,\n ]);\n\n useEffect(() => {\n runAnimation();\n }, [trigger, runAnimation]);\n\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n }, [handleTransitionEnd]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, [raf1, raf2]);\n\n return elementRef;\n}\n"],"names":["trigger","options","previousTriggerValue","usePreviousValue","previousHeight","setPreviousHeight","useState","easing","timing","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","useCallback","event","element","current","target","removeAttribute","_a","onTransitionEnd","call","animateElement","newHeight","scrollHeight","requestAnimationFrame","style","removeProperty","setProperty","runAnimation","onTransitionStart","_b","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"gSA2BgB,SACZA,EACAC,GAEM,MAAAC,EAAuBC,mBAAiBH,IACvCI,EAAgBC,GAAqBC,EAAAA,SAAS,GAE/CC,GAAS,MAAAN,OAAAA,EAAAA,EAASM,SA5BN,WA6BZC,GAAS,MAAAP,OAAAA,EAAAA,EAASO,SA5BN,aA6BZC,EAAa,GAAGC,EAAOC,OAAOH,OAAOA,aAAkBE,EAAOC,OAAOJ,OAAOA,MAE1EK,qBAAAA,GAAyBC,0BAE3BC,EAAOC,EAAAA,SACPC,EAAOD,EAAAA,SACPE,EAAaF,SAAU,MAEvBG,EAAsBC,EAAAA,aACvBC,UACG,MAAMC,EAAUJ,EAAWK,QAGvBD,GAAWD,EAAMG,SAAWF,IAC5BA,EAAQG,gBAAgB,SACxB,OAAAC,EAAA,MAAAxB,OAAAA,EAAAA,EAASyB,kBAATD,EAAAE,KAAA1B,EAA2BgB,GAAAA,GAGnC,CAAChB,IAGC2B,EAAiBT,EAAAA,aAAY,KAC/B,MAAME,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMK,EAAYR,EAAQS,aAErBhB,EAAAQ,QAAUS,uBAAsB,KAEzBV,EAAAW,MAAMC,eAAe,cAC7BZ,EAAQW,MAAME,YAAY,SAAU,GAAG9B,OAC/BiB,EAAAW,MAAME,YAAY,aAAc,UAEnClB,EAAAM,QAAUS,uBAAsB,KAEzBV,EAAAW,MAAME,YAAY,aAAczB,GACxCY,EAAQW,MAAME,YAAY,SAAU,GAAGL,MAAa,GACvD,IAGLxB,EAAkBwB,EAAS,GAC5B,CAACpB,EAAYL,IAEV+B,EAAehB,EAAAA,aAAY,aAC7B,MAAME,EAAUJ,EAAWK,QAE3B,GAAKD,EAEL,CAAInB,QAAyB,IAAzBA,EAGA,YADAG,EAAkBgB,EAAQS,cAI9B,GAAI9B,IAAYE,EAOhB,IAFA,OAAAuB,EAAA,MAAAxB,OAAAA,EAAAA,EAASmC,oBAATX,EAAAE,KAAA1B,EAA6BgB,GAEzBL,EAEA,YADA,OAAAyB,EAAA,MAAApC,OAAA,EAAAA,EAASyB,kBAATW,EAAAV,KAAA1B,EAA2BgB,IAIhBW,GAAA,CAAA,IAChB,CACCA,EACA5B,EACAE,EACAD,EACAW,IAGJ0B,OAAAA,EAAAA,WAAU,KACOH,GAAA,GACd,CAACnC,EAASmC,IAEbG,EAAAA,WAAU,KACN,MAAMjB,EAAUJ,EAAWK,QAC3B,OAAID,GACQA,EAAAkB,iBAAiB,gBAAiBrB,GAGvC,KACCG,GACQA,EAAAmB,oBACJ,gBACAtB,EACJ,CAER,GACD,CAACA,IAEJoB,EAAAA,WAAU,KACN,MAAMG,EAAK3B,EAAKQ,QACVoB,EAAK1B,EAAKM,QAChB,MAAO,KACHmB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,EAAE,CACjC,GACD,CAAC5B,EAAME,IAEHC,CACX"}
1
+ {"version":3,"file":"useAutoAnimateHeight.cjs","sources":["../../../../src/hooks/useAnimatedHeight/useAutoAnimateHeight.ts"],"sourcesContent":["import { RefObject, useCallback, useEffect, useRef, useState } from \"react\";\nimport tokens from \"../../core/tokens.js\";\nimport { type Easing, type Timing } from \"../../core/types.js\";\nimport { useBrowserPreferences } from \"../useBrowserPreferences/useBrowserPreferences.js\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\n\nconst defaultEasing = \"standard\";\nconst defaultTiming = \"expressive\";\n\nexport type UseAutoAnimatedHeightOptions<T extends HTMLElement> = {\n easing?: Easing;\n /**\n * Overstyr standard timing\n * @default \"expressive\"\n */\n timing?: Timing;\n onTransitionStart?: (ref: RefObject<T>) => void;\n onTransitionEnd?: (ref: RefObject<T>) => void;\n};\n\n/**\n * Gjør det enklere å animere høyden på et element når innholdet endrer seg, men kan brukes på mer generelt grunnlag.\n * Hooken tar inn en triggerverdi, og når denne endrer seg animeres høyden på elementet dersom den har endret seg.\n * @param trigger verdien som brukes til å trigge animasjonen. Dersom denne endrer seg animeres høyden på elementet.\n * @param options konfigurasjon for animasjonen, og lyttere for når animasjonen starter og slutter\n * @returns en referanse til elementet som skal animeres\n */\nexport function useAutoAnimatedHeight<T extends HTMLElement = HTMLElement>(\n trigger: any,\n options?: UseAutoAnimatedHeightOptions<T>,\n) {\n const previousTriggerValue = usePreviousValue(trigger);\n const [previousHeight, setPreviousHeight] = useState(0);\n\n const easing = options?.easing || defaultEasing;\n const timing = options?.timing || defaultTiming;\n const transition = `${tokens.motion.timing[timing]} height ${tokens.motion.easing[easing]}`;\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const raf1 = useRef<number>();\n const raf2 = useRef<number>();\n const elementRef = useRef<T>(null);\n\n const handleTransitionEnd = useCallback(\n (event: TransitionEvent) => {\n const element = elementRef.current;\n\n // Ignore bubbling transitions from within container\n if (element && event.target === element) {\n element.removeAttribute(\"style\");\n options?.onTransitionEnd?.(elementRef);\n }\n },\n [options],\n );\n\n const animateElement = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n element.removeAttribute(\"style\");\n const newHeight = element.scrollHeight;\n\n raf1.current = requestAnimationFrame(() => {\n // Sett høyde tilbake til forrige høyde\n element.style.removeProperty(\"transition\");\n element.style.setProperty(\"height\", `${previousHeight}px`);\n element.style.setProperty(\"overflow-y\", \"hidden\");\n\n raf2.current = requestAnimationFrame(() => {\n // Sett høyde til kollapset høyde og start transition\n element.style.setProperty(\"transition\", transition);\n element.style.setProperty(\"height\", `${newHeight}px`);\n });\n });\n\n setPreviousHeight(newHeight);\n }, [transition, previousHeight]);\n\n const runAnimation = useCallback(() => {\n const element = elementRef.current;\n\n if (!element) return;\n\n if (previousTriggerValue === undefined) {\n // Første render\n setPreviousHeight(element.scrollHeight);\n return;\n }\n\n if (trigger === previousTriggerValue) {\n // Ingen endring\n return;\n }\n\n options?.onTransitionStart?.(elementRef);\n\n if (prefersReducedMotion) {\n options?.onTransitionEnd?.(elementRef); // make sure to call callback when animation is off\n return;\n }\n\n animateElement();\n }, [\n animateElement,\n trigger,\n previousTriggerValue,\n options,\n prefersReducedMotion,\n ]);\n\n useEffect(() => {\n runAnimation();\n }, [trigger, runAnimation]);\n\n useEffect(() => {\n const element = elementRef.current;\n if (element) {\n element.addEventListener(\"transitionend\", handleTransitionEnd);\n }\n\n return () => {\n if (element) {\n element.removeEventListener(\n \"transitionend\",\n handleTransitionEnd,\n );\n }\n };\n }, [handleTransitionEnd]);\n\n useEffect(() => {\n const r1 = raf1.current;\n const r2 = raf2.current;\n return () => {\n r1 && cancelAnimationFrame(r1);\n r2 && cancelAnimationFrame(r2);\n };\n }, [raf1, raf2]);\n\n return elementRef;\n}\n"],"names":["trigger","options","previousTriggerValue","usePreviousValue","previousHeight","setPreviousHeight","useState","easing","timing","transition","tokens","motion","prefersReducedMotion","useBrowserPreferences","raf1","useRef","raf2","elementRef","handleTransitionEnd","useCallback","event","element","current","target","removeAttribute","_a","onTransitionEnd","call","animateElement","newHeight","scrollHeight","requestAnimationFrame","style","removeProperty","setProperty","runAnimation","onTransitionStart","_b","useEffect","addEventListener","removeEventListener","r1","r2","cancelAnimationFrame"],"mappings":"gSA2BgB,SACZA,EACAC,GAEM,MAAAC,EAAuBC,mBAAiBH,IACvCI,EAAgBC,GAAqBC,WAAS,GAE/CC,GAAS,MAAAN,OAAAA,EAAAA,EAASM,SA5BN,WA6BZC,GAAS,MAAAP,OAAAA,EAAAA,EAASO,SA5BN,aA6BZC,EAAa,GAAGC,EAAOC,OAAOH,OAAOA,aAAkBE,EAAOC,OAAOJ,OAAOA,MAE1EK,qBAAAA,GAAyBC,EAAAA,wBAE3BC,EAAOC,EAAAA,SACPC,EAAOD,EAAAA,SACPE,EAAaF,SAAU,MAEvBG,EAAsBC,EAAAA,aACvBC,UACG,MAAMC,EAAUJ,EAAWK,QAGvBD,GAAWD,EAAMG,SAAWF,IAC5BA,EAAQG,gBAAgB,SACxB,OAAAC,EAAA,MAAAxB,OAAAA,EAAAA,EAASyB,kBAATD,EAAAE,KAAA1B,EAA2BgB,GAAAA,GAGnC,CAAChB,IAGC2B,EAAiBT,EAAAA,aAAY,KAC/B,MAAME,EAAUJ,EAAWK,QAE3B,IAAKD,EAAS,OAEdA,EAAQG,gBAAgB,SACxB,MAAMK,EAAYR,EAAQS,aAErBhB,EAAAQ,QAAUS,uBAAsB,KAEzBV,EAAAW,MAAMC,eAAe,cAC7BZ,EAAQW,MAAME,YAAY,SAAU,GAAG9B,OAC/BiB,EAAAW,MAAME,YAAY,aAAc,UAEnClB,EAAAM,QAAUS,uBAAsB,KAEzBV,EAAAW,MAAME,YAAY,aAAczB,GACxCY,EAAQW,MAAME,YAAY,SAAU,GAAGL,MAAa,GACvD,IAGLxB,EAAkBwB,EAAS,GAC5B,CAACpB,EAAYL,IAEV+B,EAAehB,EAAAA,aAAY,aAC7B,MAAME,EAAUJ,EAAWK,QAE3B,GAAKD,EAEL,CAAInB,QAAyB,IAAzBA,EAGA,YADAG,EAAkBgB,EAAQS,cAI9B,GAAI9B,IAAYE,EAOhB,IAFA,OAAAuB,EAAA,MAAAxB,OAAAA,EAAAA,EAASmC,oBAATX,EAAAE,KAAA1B,EAA6BgB,GAEzBL,EAEA,YADA,OAAAyB,EAAA,MAAApC,OAAA,EAAAA,EAASyB,kBAATW,EAAAV,KAAA1B,EAA2BgB,IAIhBW,QAChB,CACCA,EACA5B,EACAE,EACAD,EACAW,IAGJ0B,OAAAA,EAAAA,WAAU,KACOH,MACd,CAACnC,EAASmC,IAEbG,EAAAA,WAAU,KACN,MAAMjB,EAAUJ,EAAWK,QAC3B,OAAID,GACQA,EAAAkB,iBAAiB,gBAAiBrB,GAGvC,KACCG,GACQA,EAAAmB,oBACJ,gBACAtB,EAAA,CAER,GAEL,CAACA,IAEJoB,EAAAA,WAAU,KACN,MAAMG,EAAK3B,EAAKQ,QACVoB,EAAK1B,EAAKM,QAChB,MAAO,KACHmB,GAAME,qBAAqBF,GAC3BC,GAAMC,qBAAqBD,EAAE,CAAA,GAElC,CAAC5B,EAAME,IAEHC,CACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAriaLiveRegion.cjs","sources":["../../../../src/hooks/useAriaLiveRegion/useAriaLiveRegion.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\n\nexport interface UseAriaLiveRegionOptions {\n /**\n * @default \"polite\"\n */\n politeness?: \"polite\" | \"assertive\" | \"off\";\n}\n\n/**\n * Hjelper for å bare sette aria-live dersom det har skjedd en endring. Unngår at innholdet annonseres ved sidelasting.\n * @param watch Verdi som indikerer at det har skjedd en endring. For eksempel en boolean som styrer en loader, eller selve teksten som skal bli lest opp.\n * @param options Bestem om aria-live skal være polite, assertive eller off.\n * @returns\n */\nexport function useAriaLiveRegion(\n watch: unknown | unknown[],\n options?: UseAriaLiveRegionOptions,\n) {\n const previousValue = usePreviousValue(watch);\n\n const [hasChanged, setHasChanged] = useState(false);\n useEffect(() => {\n if (Array.isArray(watch) && Array.isArray(previousValue)) {\n for (let i = 0; i < watch.length; i++) {\n if (watch[i] !== previousValue[i] && !hasChanged) {\n setHasChanged(true);\n break;\n }\n }\n } else if (previousValue && watch !== previousValue && !hasChanged) {\n setHasChanged(true);\n }\n }, [watch, previousValue, hasChanged]);\n\n return {\n \"aria-live\": hasChanged ? options?.politeness || \"polite\" : undefined,\n };\n}\n"],"names":["watch","options","previousValue","usePreviousValue","hasChanged","setHasChanged","useState","useEffect","Array","isArray","i","length","politeness"],"mappings":"yLAgBgB,SACZA,EACAC,GAEM,MAAAC,EAAgBC,mBAAiBH,IAEhCI,EAAYC,GAAiBC,EAAAA,UAAS,GAC7CC,OAAAA,EAAAA,WAAU,KACN,GAAIC,MAAMC,QAAQT,IAAUQ,MAAMC,QAAQP,IACtC,IAAS,IAAAQ,EAAI,EAAGA,EAAIV,EAAMW,OAAQD,IAC9B,GAAIV,EAAMU,KAAOR,EAAcQ,KAAON,EAAY,CAC9CC,GAAc,GACd,KAAA,OAGDH,GAAiBF,IAAUE,IAAkBE,GACpDC,GAAc,EAAI,GAEvB,CAACL,EAAOE,EAAeE,IAEnB,CACH,YAAaA,GAAa,MAAAH,SAAAA,EAASW,aAAc,cAAW,EAEpE"}
1
+ {"version":3,"file":"useAriaLiveRegion.cjs","sources":["../../../../src/hooks/useAriaLiveRegion/useAriaLiveRegion.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { usePreviousValue } from \"../usePreviousValue/usePreviousValue.js\";\n\nexport interface UseAriaLiveRegionOptions {\n /**\n * @default \"polite\"\n */\n politeness?: \"polite\" | \"assertive\" | \"off\";\n}\n\n/**\n * Hjelper for å bare sette aria-live dersom det har skjedd en endring. Unngår at innholdet annonseres ved sidelasting.\n * @param watch Verdi som indikerer at det har skjedd en endring. For eksempel en boolean som styrer en loader, eller selve teksten som skal bli lest opp.\n * @param options Bestem om aria-live skal være polite, assertive eller off.\n * @returns\n */\nexport function useAriaLiveRegion(\n watch: unknown | unknown[],\n options?: UseAriaLiveRegionOptions,\n) {\n const previousValue = usePreviousValue(watch);\n\n const [hasChanged, setHasChanged] = useState(false);\n useEffect(() => {\n if (Array.isArray(watch) && Array.isArray(previousValue)) {\n for (let i = 0; i < watch.length; i++) {\n if (watch[i] !== previousValue[i] && !hasChanged) {\n setHasChanged(true);\n break;\n }\n }\n } else if (previousValue && watch !== previousValue && !hasChanged) {\n setHasChanged(true);\n }\n }, [watch, previousValue, hasChanged]);\n\n return {\n \"aria-live\": hasChanged ? options?.politeness || \"polite\" : undefined,\n };\n}\n"],"names":["watch","options","previousValue","usePreviousValue","hasChanged","setHasChanged","useState","useEffect","Array","isArray","i","length","politeness"],"mappings":"yLAgBgB,SACZA,EACAC,GAEM,MAAAC,EAAgBC,mBAAiBH,IAEhCI,EAAYC,GAAiBC,YAAS,GAC7CC,OAAAA,EAAAA,WAAU,KACN,GAAIC,MAAMC,QAAQT,IAAUQ,MAAMC,QAAQP,IACtC,IAAS,IAAAQ,EAAI,EAAGA,EAAIV,EAAMW,OAAQD,IAC9B,GAAIV,EAAMU,KAAOR,EAAcQ,KAAON,EAAY,CAC9CC,GAAc,GACd,KACJ,OAEGH,GAAiBF,IAAUE,IAAkBE,GACpDC,GAAc,EAAI,GAEvB,CAACL,EAAOE,EAAeE,IAEnB,CACH,YAAaA,GAAa,MAAAH,SAAAA,EAASW,aAAc,cAAW,EAEpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBrowserPreferences.cjs","sources":["../../../../src/hooks/useBrowserPreferences/useBrowserPreferences.tsx"],"sourcesContent":["import { Reducer, useEffect, useReducer, useState } from \"react\";\nimport { ColorScheme } from \"../../core/types.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\n\ntype BrowserPreferences = {\n prefersReducedMotion: boolean;\n prefersColorScheme: ColorScheme;\n forcedColors: boolean;\n};\n\nenum ActionType {\n PrefersColorScheme = \"COLOR_SCHEME_CHANGED\",\n PrefersReducedMotion = \"REDUCED_MOTION_CHANGED\",\n ForcedColors = \"FORCED_COLORS_CHANGED\",\n}\n\ntype Action =\n | {\n type: ActionType.PrefersColorScheme;\n value: ColorScheme;\n }\n | {\n type: ActionType.PrefersReducedMotion;\n value: boolean;\n }\n | {\n type: ActionType.ForcedColors;\n value: boolean;\n };\n\nconst PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nconst PREFERS_LIGHT_COLOR_SCHEME = \"(prefers-color-scheme: light)\";\nconst FORCED_COLORS = \"(forced-colors: active)\";\n\nconst initialState: BrowserPreferences = {\n prefersReducedMotion: false,\n prefersColorScheme: \"light\",\n forcedColors: false,\n};\n\nconst reducer: Reducer<BrowserPreferences, Action> = (state, action) => {\n switch (action.type) {\n case ActionType.PrefersColorScheme:\n return {\n ...state,\n prefersColorScheme: action.value,\n };\n case ActionType.PrefersReducedMotion:\n return {\n ...state,\n prefersReducedMotion: action.value,\n };\n case ActionType.ForcedColors:\n return {\n ...state,\n forcedColors: action.value,\n };\n default:\n return state;\n }\n};\n\n/**\n * Hook som gir informasjon om brukerens foretrukne konfigurasjon.\n * @returns Objekt med informasjon om brukerens foretrukne tema (lyst vs mørkt), redusert bevegelse, og høykontrast (forced colors).\n */\nexport const useBrowserPreferences = (): BrowserPreferences => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n useEffect(() => {\n setHasMounted(true);\n const prefersReducedMotion = getInitialMediaQueryMatch(\n PREFERS_REDUCED_MOTION,\n );\n const prefersColorScheme = getInitialMediaQueryMatch(\n PREFERS_LIGHT_COLOR_SCHEME,\n )\n ? \"light\"\n : \"dark\";\n const forcedColors = getInitialMediaQueryMatch(FORCED_COLORS);\n dispatch({\n type: ActionType.PrefersReducedMotion,\n value: prefersReducedMotion,\n });\n dispatch({\n type: ActionType.PrefersColorScheme,\n value: prefersColorScheme,\n });\n dispatch({ type: ActionType.ForcedColors, value: forcedColors });\n }, []);\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const onPrefersReducedMotionChange = (e: MediaQueryListEvent) => {\n dispatch({\n type: ActionType.PrefersReducedMotion,\n value: e.matches,\n });\n };\n const onPrefersColorSchemeChange = (e: MediaQueryListEvent) => {\n dispatch({\n type: ActionType.PrefersColorScheme,\n value: e.matches ? \"light\" : \"dark\",\n });\n };\n const onForcedColorsChange = (e: MediaQueryListEvent) => {\n dispatch({ type: ActionType.ForcedColors, value: e.matches });\n };\n\n addMediaQueryListener(\n window.matchMedia(PREFERS_REDUCED_MOTION),\n onPrefersReducedMotionChange,\n );\n addMediaQueryListener(\n window.matchMedia(PREFERS_LIGHT_COLOR_SCHEME),\n onPrefersColorSchemeChange,\n );\n addMediaQueryListener(\n window.matchMedia(FORCED_COLORS),\n onForcedColorsChange,\n );\n\n return () => {\n removeMediaQueryListener(\n window.matchMedia(PREFERS_REDUCED_MOTION),\n onPrefersReducedMotionChange,\n );\n removeMediaQueryListener(\n window.matchMedia(PREFERS_LIGHT_COLOR_SCHEME),\n onPrefersColorSchemeChange,\n );\n removeMediaQueryListener(\n window.matchMedia(FORCED_COLORS),\n onForcedColorsChange,\n );\n };\n }, [hasMounted]);\n\n return { ...state };\n};\n"],"names":["PREFERS_REDUCED_MOTION","PREFERS_LIGHT_COLOR_SCHEME","FORCED_COLORS","initialState","prefersReducedMotion","prefersColorScheme","forcedColors","reducer","state","action","type","value","hasMounted","setHasMounted","useState","dispatch","useReducer","useEffect","getInitialMediaQueryMatch","window","matchMedia","onPrefersReducedMotionChange","e","matches","onPrefersColorSchemeChange","onForcedColorsChange","addMediaQueryListener","removeMediaQueryListener"],"mappings":"6IAkCMA,EAAyB,mCACzBC,EAA6B,gCAC7BC,EAAgB,0BAEhBC,EAAmC,CACrCC,sBAAsB,EACtBC,mBAAoB,QACpBC,cAAc,GAGZC,EAA+C,CAACC,EAAOC,KACzD,OAAQA,EAAOC,MACX,IAAK,uBACM,MAAA,IACAF,EACHH,mBAAoBI,EAAOE,OAEnC,IAAK,yBACM,MAAA,IACAH,EACHJ,qBAAsBK,EAAOE,OAErC,IAAK,wBACM,MAAA,IACAH,EACHF,aAAcG,EAAOE,OAE7B,QACW,OAAAH,EAAA,gCAQkB,KACjC,MAAOI,EAAYC,GAAiBC,EAAAA,UAAS,IAEtCN,EAAOO,GAAYC,EAAAA,WAAWT,EAASJ,GAE9Cc,OAAAA,EAAAA,WAAU,KACNJ,GAAc,GACd,MAAMT,EAAuBc,EAAAA,0BACzBlB,GAEEK,EAAqBa,EAAAA,0BACvBjB,GAEE,QACA,OACAK,EAAeY,4BAA0BhB,GACtCa,EAAA,CACLL,KAAM,yBACNC,MAAOP,IAEFW,EAAA,CACLL,KAAM,uBACNC,MAAON,IAEXU,EAAS,CAAEL,KAAM,wBAAyBC,MAAOL,GAAc,GAChE,IAEHW,EAAAA,WAAU,KACN,IAAKL,IAAeO,OAAOC,WACvB,OAEE,MAAAC,EAAgCC,IACzBP,EAAA,CACLL,KAAM,yBACNC,MAAOW,EAAEC,SACZ,EAECC,EAA8BF,IACvBP,EAAA,CACLL,KAAM,uBACNC,MAAOW,EAAEC,QAAU,QAAU,QAChC,EAECE,EAAwBH,IAC1BP,EAAS,CAAEL,KAAM,wBAAyBC,MAAOW,EAAEC,SAAS,EAGhEG,OAAAA,EAAAA,sBACIP,OAAOC,WAAWpB,GAClBqB,GAEJK,EAAAA,sBACIP,OAAOC,WAAWnB,GAClBuB,GAEJE,EAAAA,sBACIP,OAAOC,WAAWlB,GAClBuB,GAGG,KACHE,EAAAA,yBACIR,OAAOC,WAAWpB,GAClBqB,GAEJM,EAAAA,yBACIR,OAAOC,WAAWnB,GAClBuB,GAEJG,EAAAA,yBACIR,OAAOC,WAAWlB,GAClBuB,EACJ,CACJ,GACD,CAACb,IAEG,IAAKJ,EAAM"}
1
+ {"version":3,"file":"useBrowserPreferences.cjs","sources":["../../../../src/hooks/useBrowserPreferences/useBrowserPreferences.tsx"],"sourcesContent":["import { Reducer, useEffect, useReducer, useState } from \"react\";\nimport { ColorScheme } from \"../../core/types.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\n\ntype BrowserPreferences = {\n prefersReducedMotion: boolean;\n prefersColorScheme: ColorScheme;\n forcedColors: boolean;\n};\n\nenum ActionType {\n PrefersColorScheme = \"COLOR_SCHEME_CHANGED\",\n PrefersReducedMotion = \"REDUCED_MOTION_CHANGED\",\n ForcedColors = \"FORCED_COLORS_CHANGED\",\n}\n\ntype Action =\n | {\n type: ActionType.PrefersColorScheme;\n value: ColorScheme;\n }\n | {\n type: ActionType.PrefersReducedMotion;\n value: boolean;\n }\n | {\n type: ActionType.ForcedColors;\n value: boolean;\n };\n\nconst PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nconst PREFERS_LIGHT_COLOR_SCHEME = \"(prefers-color-scheme: light)\";\nconst FORCED_COLORS = \"(forced-colors: active)\";\n\nconst initialState: BrowserPreferences = {\n prefersReducedMotion: false,\n prefersColorScheme: \"light\",\n forcedColors: false,\n};\n\nconst reducer: Reducer<BrowserPreferences, Action> = (state, action) => {\n switch (action.type) {\n case ActionType.PrefersColorScheme:\n return {\n ...state,\n prefersColorScheme: action.value,\n };\n case ActionType.PrefersReducedMotion:\n return {\n ...state,\n prefersReducedMotion: action.value,\n };\n case ActionType.ForcedColors:\n return {\n ...state,\n forcedColors: action.value,\n };\n default:\n return state;\n }\n};\n\n/**\n * Hook som gir informasjon om brukerens foretrukne konfigurasjon.\n * @returns Objekt med informasjon om brukerens foretrukne tema (lyst vs mørkt), redusert bevegelse, og høykontrast (forced colors).\n */\nexport const useBrowserPreferences = (): BrowserPreferences => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [state, dispatch] = useReducer(reducer, initialState);\n\n useEffect(() => {\n setHasMounted(true);\n const prefersReducedMotion = getInitialMediaQueryMatch(\n PREFERS_REDUCED_MOTION,\n );\n const prefersColorScheme = getInitialMediaQueryMatch(\n PREFERS_LIGHT_COLOR_SCHEME,\n )\n ? \"light\"\n : \"dark\";\n const forcedColors = getInitialMediaQueryMatch(FORCED_COLORS);\n dispatch({\n type: ActionType.PrefersReducedMotion,\n value: prefersReducedMotion,\n });\n dispatch({\n type: ActionType.PrefersColorScheme,\n value: prefersColorScheme,\n });\n dispatch({ type: ActionType.ForcedColors, value: forcedColors });\n }, []);\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const onPrefersReducedMotionChange = (e: MediaQueryListEvent) => {\n dispatch({\n type: ActionType.PrefersReducedMotion,\n value: e.matches,\n });\n };\n const onPrefersColorSchemeChange = (e: MediaQueryListEvent) => {\n dispatch({\n type: ActionType.PrefersColorScheme,\n value: e.matches ? \"light\" : \"dark\",\n });\n };\n const onForcedColorsChange = (e: MediaQueryListEvent) => {\n dispatch({ type: ActionType.ForcedColors, value: e.matches });\n };\n\n addMediaQueryListener(\n window.matchMedia(PREFERS_REDUCED_MOTION),\n onPrefersReducedMotionChange,\n );\n addMediaQueryListener(\n window.matchMedia(PREFERS_LIGHT_COLOR_SCHEME),\n onPrefersColorSchemeChange,\n );\n addMediaQueryListener(\n window.matchMedia(FORCED_COLORS),\n onForcedColorsChange,\n );\n\n return () => {\n removeMediaQueryListener(\n window.matchMedia(PREFERS_REDUCED_MOTION),\n onPrefersReducedMotionChange,\n );\n removeMediaQueryListener(\n window.matchMedia(PREFERS_LIGHT_COLOR_SCHEME),\n onPrefersColorSchemeChange,\n );\n removeMediaQueryListener(\n window.matchMedia(FORCED_COLORS),\n onForcedColorsChange,\n );\n };\n }, [hasMounted]);\n\n return { ...state };\n};\n"],"names":["PREFERS_REDUCED_MOTION","PREFERS_LIGHT_COLOR_SCHEME","FORCED_COLORS","initialState","prefersReducedMotion","prefersColorScheme","forcedColors","reducer","state","action","type","value","hasMounted","setHasMounted","useState","dispatch","useReducer","useEffect","getInitialMediaQueryMatch","window","matchMedia","onPrefersReducedMotionChange","e","matches","onPrefersColorSchemeChange","onForcedColorsChange","addMediaQueryListener","removeMediaQueryListener"],"mappings":"6IAkCMA,EAAyB,mCACzBC,EAA6B,gCAC7BC,EAAgB,0BAEhBC,EAAmC,CACrCC,sBAAsB,EACtBC,mBAAoB,QACpBC,cAAc,GAGZC,EAA+C,CAACC,EAAOC,KACzD,OAAQA,EAAOC,MACX,IAAK,uBACM,MAAA,IACAF,EACHH,mBAAoBI,EAAOE,OAEnC,IAAK,yBACM,MAAA,IACAH,EACHJ,qBAAsBK,EAAOE,OAErC,IAAK,wBACM,MAAA,IACAH,EACHF,aAAcG,EAAOE,OAE7B,QACW,OAAAH,EACf,gCAOiC,KACjC,MAAOI,EAAYC,GAAiBC,YAAS,IAEtCN,EAAOO,GAAYC,EAAAA,WAAWT,EAASJ,GAE9Cc,OAAAA,EAAAA,WAAU,KACNJ,GAAc,GACd,MAAMT,EAAuBc,EAAAA,0BACzBlB,GAEEK,EAAqBa,EAAAA,0BACvBjB,GAEE,QACA,OACAK,EAAeY,4BAA0BhB,GACtCa,EAAA,CACLL,KAAM,yBACNC,MAAOP,IAEFW,EAAA,CACLL,KAAM,uBACNC,MAAON,IAEXU,EAAS,CAAEL,KAAM,wBAAyBC,MAAOL,GAAc,GAChE,IAEHW,EAAAA,WAAU,KACN,IAAKL,IAAeO,OAAOC,WACvB,OAEE,MAAAC,EAAgCC,IACzBP,EAAA,CACLL,KAAM,yBACNC,MAAOW,EAAEC,SACZ,EAECC,EAA8BF,IACvBP,EAAA,CACLL,KAAM,uBACNC,MAAOW,EAAEC,QAAU,QAAU,QAChC,EAECE,EAAwBH,IAC1BP,EAAS,CAAEL,KAAM,wBAAyBC,MAAOW,EAAEC,SAAS,EAGhEG,OAAAA,EAAAA,sBACIP,OAAOC,WAAWpB,GAClBqB,GAEJK,EAAAA,sBACIP,OAAOC,WAAWnB,GAClBuB,GAEJE,EAAAA,sBACIP,OAAOC,WAAWlB,GAClBuB,GAGG,KACHE,EAAAA,yBACIR,OAAOC,WAAWpB,GAClBqB,GAEJM,EAAAA,yBACIR,OAAOC,WAAWnB,GAClBuB,GAEJG,EAAAA,yBACIR,OAAOC,WAAWlB,GAClBuB,EAAA,CACJ,GAEL,CAACb,IAEG,IAAKJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"useClickOutside.cjs","sources":["../../../../src/hooks/useClickOutside/useClickOutside.ts"],"sourcesContent":["import { RefObject, useEffect } from \"react\";\n\n/**\n * Hook for å sette opp en lytter ved klikk utenfor et element.\n * @param ref Elementet du ønsker å sjekke om en klikk er utenfor.\n * @param fn Callback-funksjon som kalles når det klikkes utenfor elementet.\n */\nexport function useClickOutside(\n ref: RefObject<HTMLElement> | null,\n fn: () => void,\n): void {\n function handleClickOutside(event: MouseEvent) {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n fn();\n }\n }\n\n useEffect(() => {\n if (ref) {\n document && document.addEventListener(\"click\", handleClickOutside);\n }\n return () => {\n document &&\n document.removeEventListener(\"click\", handleClickOutside);\n };\n });\n}\n"],"names":["ref","fn","handleClickOutside","event","current","contains","target","useEffect","document","addEventListener","removeEventListener"],"mappings":"iIAOgB,SACZA,EACAC,GAEA,SAASC,EAAmBC,GACpB,MAAAH,GAAAA,EAAKI,UAAYJ,EAAII,QAAQC,SAASF,EAAMG,SACzCL,GACP,CAGJM,EAAAA,WAAU,KACFP,GACYQ,UAAAA,SAASC,iBAAiB,QAASP,GAE5C,KAECM,UAAAA,SAASE,oBAAoB,QAASR,EAAkB,IAGxE"}
1
+ {"version":3,"file":"useClickOutside.cjs","sources":["../../../../src/hooks/useClickOutside/useClickOutside.ts"],"sourcesContent":["import { RefObject, useEffect } from \"react\";\n\n/**\n * Hook for å sette opp en lytter ved klikk utenfor et element.\n * @param ref Elementet du ønsker å sjekke om en klikk er utenfor.\n * @param fn Callback-funksjon som kalles når det klikkes utenfor elementet.\n */\nexport function useClickOutside(\n ref: RefObject<HTMLElement> | null,\n fn: () => void,\n): void {\n function handleClickOutside(event: MouseEvent) {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n fn();\n }\n }\n\n useEffect(() => {\n if (ref) {\n document && document.addEventListener(\"click\", handleClickOutside);\n }\n return () => {\n document &&\n document.removeEventListener(\"click\", handleClickOutside);\n };\n });\n}\n"],"names":["ref","fn","handleClickOutside","event","current","contains","target","useEffect","document","addEventListener","removeEventListener"],"mappings":"iIAOgB,SACZA,EACAC,GAEA,SAASC,EAAmBC,GACpB,MAAAH,GAAAA,EAAKI,UAAYJ,EAAII,QAAQC,SAASF,EAAMG,SACzCL,GAEX,CAEAM,EAAAA,WAAU,KACFP,GACYQ,UAAAA,SAASC,iBAAiB,QAASP,GAE5C,KAECM,UAAAA,SAASE,oBAAoB,QAASR,EAAkB,IAGxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useElementDimensions.cjs","sources":["../../../../src/hooks/useElementDimensions/useElementDimensions.ts"],"sourcesContent":["import { RefObject, useEffect, useMemo, useRef, useState } from \"react\";\n\n// TODO: Denne er sikkert nyttig flere steder enn her!\n// eslint-disable-next-line\nfunction throttle<R, A extends any[]>(fn: (...args: A) => R, delay: number) {\n let wait = false;\n\n return (...args: A) => {\n if (wait) return undefined;\n\n const result = fn(...args);\n\n if (delay !== 0) {\n wait = true;\n window.setTimeout(() => {\n wait = false;\n }, delay);\n }\n\n return result;\n };\n}\n\nexport type Dimensions = {\n height: number;\n width: number;\n};\n\n/**\n * Lar deg måle størrelsen på et element, og oppdatere målene når vinduet endrer størrelse.\n * @param throttleDelay Antall milisekunder som skal gå mellom hver gang dimensjonene oppdateres.\n * @returns Ref til elementet som skal måles, og dimensjonene til elementet.\n */\nexport function useElementDimensions<T extends HTMLElement>(\n throttleDelay = 200,\n): [RefObject<T>, Dimensions] {\n const elementRef = useRef<T>(null);\n const [dimensions, setDimensions] = useState<Dimensions>({\n height: 0,\n width: 0,\n });\n\n const throttledSetDimensions = useMemo(\n () =>\n throttle(\n () =>\n setDimensions({\n height: elementRef.current?.scrollHeight || 0,\n width: elementRef.current?.scrollWidth || 0,\n }),\n throttleDelay,\n ),\n [throttleDelay],\n );\n\n useEffect(() => {\n setDimensions({\n height: elementRef.current?.scrollHeight || 0,\n width: elementRef.current?.scrollWidth || 0,\n });\n\n typeof window !== \"undefined\" &&\n window.addEventListener(\"resize\", throttledSetDimensions);\n\n return () => {\n typeof window !== \"undefined\" &&\n window.removeEventListener(\"resize\", throttledSetDimensions);\n };\n }, [throttledSetDimensions]);\n\n return [elementRef, dimensions];\n}\n"],"names":["throttleDelay","elementRef","useRef","dimensions","setDimensions","useState","height","width","throttledSetDimensions","useMemo","fn","delay","wait","args","result","window","setTimeout","throttle","_a","current","scrollHeight","_b","scrollWidth","useEffect","addEventListener","removeEventListener"],"mappings":"sIAiCgB,SACZA,EAAgB,KAEV,MAAAC,EAAaC,SAAU,OACtBC,EAAYC,GAAiBC,WAAqB,CACrDC,OAAQ,EACRC,MAAO,IAGLC,EAAyBC,EAAAA,SAC3B,IAvCR,SAAsCC,EAAuBC,GACzD,IAAIC,GAAO,EAEX,MAAO,IAAIC,KACP,GAAID,EAAa,OAEX,MAAAE,EAASJ,KAAMG,GAErB,OAAc,IAAVF,IACOC,GAAA,EACPG,OAAOC,YAAW,KACPJ,GAAA,IACRD,IAGAG,EAEf,CAuBYG,EACI,aACI,OAAAb,EAAc,CACVE,QAAQ,OAAAY,EAAAjB,EAAWkB,cAAX,EAAAD,EAAoBE,eAAgB,EAC5Cb,OAAO,OAAAc,EAAApB,EAAWkB,cAAX,EAAAE,EAAoBC,cAAe,GAC7C,GACLtB,IAER,CAACA,IAGLuB,OAAAA,EAAAA,WAAU,aACQ,OAAAnB,EAAA,CACVE,QAAQ,OAAAY,EAAAjB,EAAWkB,cAAXD,EAAAA,EAAoBE,eAAgB,EAC5Cb,OAAO,OAAAc,EAAApB,EAAWkB,cAAXE,EAAAA,EAAoBC,cAAe,WAGvCP,OAAW,KACdA,OAAOS,iBAAiB,SAAUhB,GAE/B,YACIO,OAAW,KACdA,OAAOU,oBAAoB,SAAUjB,EAAsB,CACnE,GACD,CAACA,IAEG,CAACP,EAAYE,EACxB"}
1
+ {"version":3,"file":"useElementDimensions.cjs","sources":["../../../../src/hooks/useElementDimensions/useElementDimensions.ts"],"sourcesContent":["import { RefObject, useEffect, useMemo, useRef, useState } from \"react\";\n\n// TODO: Denne er sikkert nyttig flere steder enn her!\n// eslint-disable-next-line\nfunction throttle<R, A extends any[]>(fn: (...args: A) => R, delay: number) {\n let wait = false;\n\n return (...args: A) => {\n if (wait) return undefined;\n\n const result = fn(...args);\n\n if (delay !== 0) {\n wait = true;\n window.setTimeout(() => {\n wait = false;\n }, delay);\n }\n\n return result;\n };\n}\n\nexport type Dimensions = {\n height: number;\n width: number;\n};\n\n/**\n * Lar deg måle størrelsen på et element, og oppdatere målene når vinduet endrer størrelse.\n * @param throttleDelay Antall milisekunder som skal gå mellom hver gang dimensjonene oppdateres.\n * @returns Ref til elementet som skal måles, og dimensjonene til elementet.\n */\nexport function useElementDimensions<T extends HTMLElement>(\n throttleDelay = 200,\n): [RefObject<T>, Dimensions] {\n const elementRef = useRef<T>(null);\n const [dimensions, setDimensions] = useState<Dimensions>({\n height: 0,\n width: 0,\n });\n\n const throttledSetDimensions = useMemo(\n () =>\n throttle(\n () =>\n setDimensions({\n height: elementRef.current?.scrollHeight || 0,\n width: elementRef.current?.scrollWidth || 0,\n }),\n throttleDelay,\n ),\n [throttleDelay],\n );\n\n useEffect(() => {\n setDimensions({\n height: elementRef.current?.scrollHeight || 0,\n width: elementRef.current?.scrollWidth || 0,\n });\n\n typeof window !== \"undefined\" &&\n window.addEventListener(\"resize\", throttledSetDimensions);\n\n return () => {\n typeof window !== \"undefined\" &&\n window.removeEventListener(\"resize\", throttledSetDimensions);\n };\n }, [throttledSetDimensions]);\n\n return [elementRef, dimensions];\n}\n"],"names":["throttleDelay","elementRef","useRef","dimensions","setDimensions","useState","height","width","throttledSetDimensions","useMemo","fn","delay","wait","args","result","window","setTimeout","throttle","_a","current","scrollHeight","_b","scrollWidth","useEffect","addEventListener","removeEventListener"],"mappings":"sIAiCgB,SACZA,EAAgB,KAEV,MAAAC,EAAaC,SAAU,OACtBC,EAAYC,GAAiBC,WAAqB,CACrDC,OAAQ,EACRC,MAAO,IAGLC,EAAyBC,EAAAA,SAC3B,IAvCR,SAAsCC,EAAuBC,GACzD,IAAIC,GAAO,EAEX,MAAO,IAAIC,KACP,GAAID,EAAa,OAEX,MAAAE,EAASJ,KAAMG,GAErB,OAAc,IAAVF,IACOC,GAAA,EACPG,OAAOC,YAAW,KACPJ,GAAA,IACRD,IAGAG,EAEf,CAuBYG,EACI,aACI,OAAAb,EAAc,CACVE,QAAQ,OAAAY,EAAAjB,EAAWkB,cAAX,EAAAD,EAAoBE,eAAgB,EAC5Cb,OAAO,OAAAc,EAAApB,EAAWkB,cAAX,EAAAE,EAAoBC,cAAe,GAC7C,GACLtB,IAER,CAACA,IAGLuB,OAAAA,EAAAA,WAAU,aACQ,OAAAnB,EAAA,CACVE,QAAQ,OAAAY,EAAAjB,EAAWkB,cAAXD,EAAAA,EAAoBE,eAAgB,EAC5Cb,OAAO,OAAAc,EAAApB,EAAWkB,cAAXE,EAAAA,EAAoBC,cAAe,WAGvCP,OAAW,KACdA,OAAOS,iBAAiB,SAAUhB,GAE/B,YACIO,OAAW,KACdA,OAAOU,oBAAoB,SAAUjB,EAAsB,CAAA,GAEpE,CAACA,IAEG,CAACP,EAAYE,EACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusOutside.cjs","sources":["../../../../src/hooks/useFocusOutside/useFocusOutside.ts"],"sourcesContent":["import { RefObject, useEffect } from \"react\";\n\n/**\n * Hook for å lytte etter fokus utenfor et element. Nyttig dersom flere fokuserbare elementer samspiller i en komponent.\n * @param ref Elementet som skal observeres\n * @param fn Funksjon som kalles når fokus flyttes utenfor elementet\n */\nexport function useFocusOutside(\n ref: RefObject<HTMLElement> | null,\n fn: () => void,\n): void {\n function handleFocusOutside(event: FocusEvent) {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n fn();\n }\n }\n\n useEffect(() => {\n if (ref) {\n document &&\n document.addEventListener(\"focusin\", handleFocusOutside);\n }\n return () => {\n document &&\n document.removeEventListener(\"focusin\", handleFocusOutside);\n };\n });\n}\n"],"names":["ref","fn","handleFocusOutside","event","current","contains","target","useEffect","document","addEventListener","removeEventListener"],"mappings":"iIAOgB,SACZA,EACAC,GAEA,SAASC,EAAmBC,GACpB,MAAAH,GAAAA,EAAKI,UAAYJ,EAAII,QAAQC,SAASF,EAAMG,SACzCL,GACP,CAGJM,EAAAA,WAAU,KACFP,GAEIQ,UAAAA,SAASC,iBAAiB,UAAWP,GAEtC,KAECM,UAAAA,SAASE,oBAAoB,UAAWR,EAAkB,IAG1E"}
1
+ {"version":3,"file":"useFocusOutside.cjs","sources":["../../../../src/hooks/useFocusOutside/useFocusOutside.ts"],"sourcesContent":["import { RefObject, useEffect } from \"react\";\n\n/**\n * Hook for å lytte etter fokus utenfor et element. Nyttig dersom flere fokuserbare elementer samspiller i en komponent.\n * @param ref Elementet som skal observeres\n * @param fn Funksjon som kalles når fokus flyttes utenfor elementet\n */\nexport function useFocusOutside(\n ref: RefObject<HTMLElement> | null,\n fn: () => void,\n): void {\n function handleFocusOutside(event: FocusEvent) {\n if (ref?.current && !ref.current.contains(event.target as Node)) {\n fn();\n }\n }\n\n useEffect(() => {\n if (ref) {\n document &&\n document.addEventListener(\"focusin\", handleFocusOutside);\n }\n return () => {\n document &&\n document.removeEventListener(\"focusin\", handleFocusOutside);\n };\n });\n}\n"],"names":["ref","fn","handleFocusOutside","event","current","contains","target","useEffect","document","addEventListener","removeEventListener"],"mappings":"iIAOgB,SACZA,EACAC,GAEA,SAASC,EAAmBC,GACpB,MAAAH,GAAAA,EAAKI,UAAYJ,EAAII,QAAQC,SAASF,EAAMG,SACzCL,GAEX,CAEAM,EAAAA,WAAU,KACFP,GAEIQ,UAAAA,SAASC,iBAAiB,UAAWP,GAEtC,KAECM,UAAAA,SAASE,oBAAoB,UAAWR,EAAkB,IAG1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIntersectionObserver.cjs","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect, useRef, RefObject, MutableRefObject } from \"react\";\n\ntype ValidElement = HTMLElement | SVGElement;\ntype Target =\n | MutableRefObject<ValidElement>\n | RefObject<ValidElement>\n | MutableRefObject<NodeListOf<ValidElement>>\n | RefObject<NodeListOf<ValidElement>>\n | NodeListOf<ValidElement>;\n\nfunction isNodeList(\n target: Target | ValidElement,\n): target is NodeListOf<ValidElement> {\n return (target as NodeListOf<ValidElement>).forEach !== undefined;\n}\n\nconst hasWindowWithIntersectionObserver = () =>\n typeof window !== \"undefined\" &&\n typeof IntersectionObserver !== \"undefined\";\n\n/**\n * Hook som gjør det enkelt å observere om et element er synlig i viewporten.\n *\n * @param target Elementet eller elementene som skal observeres. Du kan sende in en React ref til et HTMLElement eller SVG Element, eller en NodeList av samme type elementer (returneres f.eks. av document.querySelectorAll), eller en React ref med en NodeList av samme type elementer.\n * @param onIntersect Callback-funksjon som utføres når et av elementene som observeres overlapper angitt mål. Se https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#parameters for mer info.\n * @param fallback Funksjon som kalles dersom nettleseren ikke støtter IntersectionOpserver-APIet.\n * @param options Objekt med innstillinger for oberveren. Se https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#parameters for mer info.\n */\nexport const useIntersectionObserver = (\n target: Target,\n onIntersect: IntersectionObserverCallback,\n fallback?: VoidFunction | null,\n options?: Partial<IntersectionObserverInit>,\n): void => {\n const observerRef = useRef<IntersectionObserver>(null);\n\n useEffect(() => {\n let observer = observerRef.current;\n\n if (hasWindowWithIntersectionObserver()) {\n if (observer) {\n observer.disconnect();\n }\n\n observer = new IntersectionObserver(onIntersect, options);\n\n if (isNodeList(target)) {\n target.forEach((element) => observer?.observe(element));\n } else if (target.current && isNodeList(target.current)) {\n target.current.forEach((element) => observer?.observe(element));\n } else if (target.current) {\n observer.observe(target.current);\n }\n } else if (fallback) {\n fallback();\n }\n\n return () => {\n if (hasWindowWithIntersectionObserver() && observer) {\n observer.disconnect();\n }\n };\n }, [target, onIntersect, fallback, options]);\n};\n"],"names":["isNodeList","target","forEach","hasWindowWithIntersectionObserver","window","IntersectionObserver","onIntersect","fallback","options","observerRef","useRef","useEffect","observer","current","disconnect","element","observe"],"mappings":"yGAUA,SAASA,EACLC,GAEA,YAAwD,IAAhDA,EAAoCC,OAChD,CAEA,MAAMC,EAAoC,WAC/BC,OAAW,YACXC,qBAAyB,oCAUG,CACnCJ,EACAK,EACAC,EACAC,KAEM,MAAAC,EAAcC,SAA6B,MAEjDC,EAAAA,WAAU,KACN,IAAIC,EAAWH,EAAYI,QAE3B,OAAIV,KACIS,GACAA,EAASE,aAGFF,EAAA,IAAIP,qBAAqBC,EAAaE,GAE7CR,EAAWC,GACXA,EAAOC,SAASa,GAAY,MAAAH,OAAAA,EAAAA,EAAUI,QAAQD,KACvCd,EAAOY,SAAWb,EAAWC,EAAOY,SAC3CZ,EAAOY,QAAQX,SAASa,GAAY,MAAAH,OAAAA,EAAAA,EAAUI,QAAQD,KAC/Cd,EAAOY,SACLD,EAAAI,QAAQf,EAAOY,UAErBN,GACEA,IAGN,KACCJ,KAAuCS,GACvCA,EAASE,YAAW,CAE5B,GACD,CAACb,EAAQK,EAAaC,EAAUC,GAAQ"}
1
+ {"version":3,"file":"useIntersectionObserver.cjs","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect, useRef, RefObject, MutableRefObject } from \"react\";\n\ntype ValidElement = HTMLElement | SVGElement;\ntype Target =\n | MutableRefObject<ValidElement>\n | RefObject<ValidElement>\n | MutableRefObject<NodeListOf<ValidElement>>\n | RefObject<NodeListOf<ValidElement>>\n | NodeListOf<ValidElement>;\n\nfunction isNodeList(\n target: Target | ValidElement,\n): target is NodeListOf<ValidElement> {\n return (target as NodeListOf<ValidElement>).forEach !== undefined;\n}\n\nconst hasWindowWithIntersectionObserver = () =>\n typeof window !== \"undefined\" &&\n typeof IntersectionObserver !== \"undefined\";\n\n/**\n * Hook som gjør det enkelt å observere om et element er synlig i viewporten.\n *\n * @param target Elementet eller elementene som skal observeres. Du kan sende in en React ref til et HTMLElement eller SVG Element, eller en NodeList av samme type elementer (returneres f.eks. av document.querySelectorAll), eller en React ref med en NodeList av samme type elementer.\n * @param onIntersect Callback-funksjon som utføres når et av elementene som observeres overlapper angitt mål. Se https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#parameters for mer info.\n * @param fallback Funksjon som kalles dersom nettleseren ikke støtter IntersectionOpserver-APIet.\n * @param options Objekt med innstillinger for oberveren. Se https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#parameters for mer info.\n */\nexport const useIntersectionObserver = (\n target: Target,\n onIntersect: IntersectionObserverCallback,\n fallback?: VoidFunction | null,\n options?: Partial<IntersectionObserverInit>,\n): void => {\n const observerRef = useRef<IntersectionObserver>(null);\n\n useEffect(() => {\n let observer = observerRef.current;\n\n if (hasWindowWithIntersectionObserver()) {\n if (observer) {\n observer.disconnect();\n }\n\n observer = new IntersectionObserver(onIntersect, options);\n\n if (isNodeList(target)) {\n target.forEach((element) => observer?.observe(element));\n } else if (target.current && isNodeList(target.current)) {\n target.current.forEach((element) => observer?.observe(element));\n } else if (target.current) {\n observer.observe(target.current);\n }\n } else if (fallback) {\n fallback();\n }\n\n return () => {\n if (hasWindowWithIntersectionObserver() && observer) {\n observer.disconnect();\n }\n };\n }, [target, onIntersect, fallback, options]);\n};\n"],"names":["isNodeList","target","forEach","hasWindowWithIntersectionObserver","window","IntersectionObserver","onIntersect","fallback","options","observerRef","useRef","useEffect","observer","current","disconnect","element","observe"],"mappings":"yGAUA,SAASA,EACLC,GAEA,YAAwD,IAAhDA,EAAoCC,OAChD,CAEA,MAAMC,EAAoC,WAC/BC,OAAW,YACXC,qBAAyB,oCAUG,CACnCJ,EACAK,EACAC,EACAC,KAEM,MAAAC,EAAcC,SAA6B,MAEjDC,EAAAA,WAAU,KACN,IAAIC,EAAWH,EAAYI,QAE3B,OAAIV,KACIS,GACAA,EAASE,aAGFF,EAAA,IAAIP,qBAAqBC,EAAaE,GAE7CR,EAAWC,GACXA,EAAOC,SAASa,GAAY,MAAAH,OAAAA,EAAAA,EAAUI,QAAQD,KACvCd,EAAOY,SAAWb,EAAWC,EAAOY,SAC3CZ,EAAOY,QAAQX,SAASa,GAAY,MAAAH,OAAAA,EAAAA,EAAUI,QAAQD,KAC/Cd,EAAOY,SACLD,EAAAI,QAAQf,EAAOY,UAErBN,GACEA,IAGN,KACCJ,KAAuCS,GACvCA,EAASE,YAAW,CACxB,GAEL,CAACb,EAAQK,EAAaC,EAAUC,GAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyListener.cjs","sources":["../../../../src/hooks/useKeyListener/useKeyListener.ts"],"sourcesContent":["import { RefObject, useEffect } from \"react\";\n\n/**\n * Lar deg sette opp en tastaturlytter på et element.\n * @param ref Element som skal observeres\n * @param keys Taster som skal lyttes på\n * @param fn Funksjon som kalles når en tastetrykk observeres\n */\nexport function useKeyListener(\n ref: RefObject<HTMLElement> | null,\n keys: string[] | string | null,\n fn: (event: KeyboardEvent) => void,\n): void {\n if (typeof keys === \"string\") {\n keys = [keys];\n }\n function handleKeyDown(event: KeyboardEvent) {\n if (keys && !keys.includes(event.key)) {\n return;\n }\n fn(event);\n }\n\n useEffect(() => {\n const element = ref && ref.current;\n if (element) {\n element.addEventListener(\"keydown\", handleKeyDown);\n }\n return () => {\n if (element) {\n element.removeEventListener(\"keydown\", handleKeyDown);\n }\n };\n });\n}\n"],"names":["ref","keys","fn","handleKeyDown","event","includes","key","useEffect","element","current","addEventListener","removeEventListener"],"mappings":"gIAQgB,SACZA,EACAC,EACAC,GAKA,SAASC,EAAcC,GACfH,IAASA,EAAKI,SAASD,EAAME,MAGjCJ,EAAGE,EAAK,CAPQ,iBAATH,IACPA,EAAO,CAACA,IASZM,EAAAA,WAAU,KACA,MAAAC,EAAUR,GAAOA,EAAIS,QAC3B,OAAID,GACQA,EAAAE,iBAAiB,UAAWP,GAEjC,KACCK,GACQA,EAAAG,oBAAoB,UAAWR,EAAa,CAE5D,GAER"}
1
+ {"version":3,"file":"useKeyListener.cjs","sources":["../../../../src/hooks/useKeyListener/useKeyListener.ts"],"sourcesContent":["import { RefObject, useEffect } from \"react\";\n\n/**\n * Lar deg sette opp en tastaturlytter på et element.\n * @param ref Element som skal observeres\n * @param keys Taster som skal lyttes på\n * @param fn Funksjon som kalles når en tastetrykk observeres\n */\nexport function useKeyListener(\n ref: RefObject<HTMLElement> | null,\n keys: string[] | string | null,\n fn: (event: KeyboardEvent) => void,\n): void {\n if (typeof keys === \"string\") {\n keys = [keys];\n }\n function handleKeyDown(event: KeyboardEvent) {\n if (keys && !keys.includes(event.key)) {\n return;\n }\n fn(event);\n }\n\n useEffect(() => {\n const element = ref && ref.current;\n if (element) {\n element.addEventListener(\"keydown\", handleKeyDown);\n }\n return () => {\n if (element) {\n element.removeEventListener(\"keydown\", handleKeyDown);\n }\n };\n });\n}\n"],"names":["ref","keys","fn","handleKeyDown","event","includes","key","useEffect","element","current","addEventListener","removeEventListener"],"mappings":"gIAQgB,SACZA,EACAC,EACAC,GAKA,SAASC,EAAcC,GACfH,IAASA,EAAKI,SAASD,EAAME,MAGjCJ,EAAGE,EACP,CARoB,iBAATH,IACPA,EAAO,CAACA,IASZM,EAAAA,WAAU,KACA,MAAAC,EAAUR,GAAOA,EAAIS,QAC3B,OAAID,GACQA,EAAAE,iBAAiB,UAAWP,GAEjC,KACCK,GACQA,EAAAG,oBAAoB,UAAWR,EAAa,CACxD,GAGZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"useListNavigation.cjs","sources":["../../../../src/hooks/useListNavigation/useListNavigation.ts"],"sourcesContent":["import { useEffect, RefObject } from \"react\";\n\ntype Timer = number | undefined;\ntype KeyBuffer = { keys: string } | undefined;\ntype Direction = \"prev\" | \"next\" | \"first\" | \"last\";\ninterface MoveDetails {\n event: KeyboardEvent;\n list: HTMLElement;\n currentFocus: HTMLButtonElement;\n}\ninterface ListDetails {\n list: HTMLElement;\n search: KeyBuffer;\n searchResetTimer: Timer;\n}\ninterface SearchDetails extends ListDetails {\n key: string;\n}\ninterface EventDetails extends ListDetails {\n event: KeyboardEvent;\n}\ntype UseListNavigationProps<T> = {\n /** Ref til et element med rollen `listbox` */\n ref: RefObject<T>;\n};\n\nexport function useListNavigation<T extends HTMLElement>({\n ref,\n}: UseListNavigationProps<T>): void {\n useEffect(() => {\n let searchResetTimer: Timer;\n const search: KeyBuffer = { keys: \"\" }; // keypress buffer is an object to preserve state\n const list = ref.current;\n const handler = (event: KeyboardEvent) => {\n if (list) {\n handleListKeyNav({ list, event, search, searchResetTimer });\n }\n };\n\n if (list) {\n list.addEventListener(\"keydown\", handler);\n }\n\n return () => {\n if (list) {\n list.removeEventListener(\"keydown\", handler);\n }\n };\n }, [ref]);\n}\n\nfunction handleMoveTo(\n direction: Direction,\n { event, list, currentFocus }: MoveDetails,\n) {\n event.preventDefault();\n moveFocusTo(direction, list, currentFocus);\n}\n\nfunction handleListKeyNav({\n list,\n event,\n search,\n searchResetTimer,\n}: EventDetails) {\n const { key, target } = event;\n const currentFocus = target as HTMLButtonElement;\n\n const moveDetails = {\n event,\n list,\n currentFocus,\n };\n\n switch (key) {\n case \"ArrowUp\":\n case \"PageUp\":\n handleMoveTo(\"prev\", moveDetails);\n break;\n case \"ArrowDown\":\n case \"PageDown\":\n handleMoveTo(\"next\", moveDetails);\n break;\n case \"Home\":\n handleMoveTo(\"first\", moveDetails);\n break;\n case \"End\":\n handleMoveTo(\"last\", moveDetails);\n break;\n case \"Tab\":\n // in a standard select, tab does nothing in-menu\n event.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n break;\n\n default:\n if (search !== undefined) {\n const searchResult = findItem({\n list,\n key,\n search,\n searchResetTimer,\n });\n if (searchResult) {\n searchResult.focus();\n }\n }\n break;\n }\n}\n\nfunction moveFocusTo(\n direction: Direction,\n list: HTMLElement,\n current: HTMLButtonElement,\n) {\n const thisOption = current;\n switch (direction) {\n case \"prev\":\n const prevOption: HTMLButtonElement | null =\n thisOption &&\n (thisOption.previousElementSibling as HTMLButtonElement);\n if (prevOption) {\n prevOption.focus();\n }\n break;\n case \"next\":\n const nextOption: HTMLButtonElement | null =\n thisOption &&\n (thisOption.nextElementSibling as HTMLButtonElement);\n if (nextOption) {\n nextOption.focus();\n }\n break;\n case \"first\":\n const firstItem =\n list.querySelector<HTMLButtonElement>(`[role=\"option\"]`);\n if (firstItem) {\n firstItem.focus();\n }\n break;\n case \"last\":\n const listItems =\n list.querySelectorAll<HTMLButtonElement>(`[role=\"option\"]`);\n if (listItems.length) {\n listItems[listItems.length - 1].focus();\n }\n break;\n }\n}\n\nfunction findItem({\n list,\n key,\n search,\n searchResetTimer,\n}: SearchDetails): HTMLButtonElement | null {\n const listItems = list.querySelectorAll(`[role=\"option\"]`);\n if (!listItems.length) return null;\n\n if (search) {\n search.keys = search.keys.concat(key);\n resetWhenIdle(search, searchResetTimer);\n\n for (let n = 0; n < listItems.length; n++) {\n const label = (listItems[n] as HTMLButtonElement).innerText;\n if (label && label.toLowerCase().indexOf(search.keys) === 0) {\n return listItems[n] as HTMLButtonElement;\n }\n }\n }\n\n return null;\n}\n\nfunction resetWhenIdle(search: KeyBuffer, timer: Timer) {\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n timer = setTimeout(\n () => {\n search ? (search.keys = \"\") : (search = { keys: \"\" });\n timer = undefined;\n },\n 500,\n search,\n timer,\n );\n}\n"],"names":["handleMoveTo","direction","event","list","currentFocus","preventDefault","current","thisOption","prevOption","previousElementSibling","focus","nextOption","nextElementSibling","firstItem","querySelector","listItems","querySelectorAll","length","moveFocusTo","ref","useEffect","search","keys","handler","searchResetTimer","key","target","moveDetails","searchResult","concat","timer","clearTimeout","setTimeout","resetWhenIdle","n","label","innerText","toLowerCase","indexOf","findItem","handleListKeyNav","addEventListener","removeEventListener"],"mappings":"yGAmDA,SAASA,EACLC,GACEC,MAAAA,EAAOC,KAAAA,EAAMC,aAAAA,IAEfF,EAAMG,iBA0DV,SACIJ,EACAE,EACAG,GAEA,MAAMC,EAAaD,EACnB,OAAQL,GACJ,IAAK,OACK,MAAAO,EACFD,GACCA,EAAWE,uBACZD,GACAA,EAAWE,QAEf,MACJ,IAAK,OACK,MAAAC,EACFJ,GACCA,EAAWK,mBACZD,GACAA,EAAWD,QAEf,MACJ,IAAK,QACK,MAAAG,EACFV,EAAKW,cAAiC,mBACtCD,GACAA,EAAUH,QAEd,MACJ,IAAK,OACK,MAAAK,EACFZ,EAAKa,iBAAoC,mBACzCD,EAAUE,QACVF,EAAUA,EAAUE,OAAS,GAAGP,QAIhD,CA/FgBQ,CAAAjB,EAAWE,EAAMC,EACjC,2BA/BO,UACHe,IAAAA,IAEAC,EAAAA,WAAU,KAEA,MAAAC,EAAoB,CAAEC,KAAM,IAC5BnB,EAAOgB,EAAIb,QACXiB,EAAWrB,IACTC,GAyBhB,UACIA,KAAAA,EACAD,MAAAA,EACAmB,OAAAA,EACAG,iBAAAA,IAEM,MAAEC,IAAAA,EAAKC,OAAAA,GAAWxB,EAGlByB,EAAc,CAChBzB,MAAAA,EACAC,KAAAA,EACAC,aALiBsB,GAQrB,OAAQD,GACJ,IAAK,UACL,IAAK,SACDzB,EAAa,OAAQ2B,GACrB,MACJ,IAAK,YACL,IAAK,WACD3B,EAAa,OAAQ2B,GACrB,MACJ,IAAK,OACD3B,EAAa,QAAS2B,GACtB,MACJ,IAAK,MACD3B,EAAa,OAAQ2B,GACrB,MACJ,IAAK,MAEDzB,EAAMG,iBACN,MACJ,IAAK,QACL,IAAK,IACD,MAEJ,QACI,QAAe,IAAXgB,EAAsB,CACtB,MAAMO,EAsDtB,UACIzB,KAAAA,EACAsB,IAAAA,EACAJ,OAAAA,EACAG,iBAAAA,IAEM,MAAAT,EAAYZ,EAAKa,iBAAiB,mBACpC,IAACD,EAAUE,OAAe,OAAA,KAE9B,GAAII,EAAQ,CACRA,EAAOC,KAAOD,EAAOC,KAAKO,OAAOJ,GAczC,SAAuBJ,EAAmBS,GAClCA,IACAC,aAAaD,GACLA,OAAA,GAEJA,EAAAE,YACJ,KACIX,EAAUA,EAAOC,KAAO,GAAOD,EAAS,CAAEC,KAAM,IACxCQ,OAAA,CAAA,GAEZ,IACAT,EACAS,EAER,CA3BQG,CAAcZ,EAAQG,GAEtB,IAASU,IAAAA,EAAI,EAAGA,EAAInB,EAAUE,OAAQiB,IAAK,CACjC,MAAAC,EAASpB,EAAUmB,GAAyBE,UAC9C,GAAAD,GAAsD,IAA7CA,EAAME,cAAcC,QAAQjB,EAAOC,MAC5C,OAAOP,EAAUmB,EACrB,CACJ,CAGG,OAAA,IACX,CA5EqCK,CAAS,CAC1BpC,KAAAA,EACAsB,IAAAA,EACAJ,OAAAA,EACAG,iBAAAA,IAEAI,GACAA,EAAalB,OACjB,EAIhB,CA5EgB8B,CAAiB,CAAErC,KAAAA,EAAMD,MAAAA,EAAOmB,OAAAA,EAAQG,iBAL5CA,WAK8D,EAIlE,OAAIrB,GACKA,EAAAsC,iBAAiB,UAAWlB,GAG9B,KACCpB,GACKA,EAAAuC,oBAAoB,UAAWnB,EAAO,CAEnD,GACD,CAACJ,GACR"}
1
+ {"version":3,"file":"useListNavigation.cjs","sources":["../../../../src/hooks/useListNavigation/useListNavigation.ts"],"sourcesContent":["import { useEffect, RefObject } from \"react\";\n\ntype Timer = number | undefined;\ntype KeyBuffer = { keys: string } | undefined;\ntype Direction = \"prev\" | \"next\" | \"first\" | \"last\";\ninterface MoveDetails {\n event: KeyboardEvent;\n list: HTMLElement;\n currentFocus: HTMLButtonElement;\n}\ninterface ListDetails {\n list: HTMLElement;\n search: KeyBuffer;\n searchResetTimer: Timer;\n}\ninterface SearchDetails extends ListDetails {\n key: string;\n}\ninterface EventDetails extends ListDetails {\n event: KeyboardEvent;\n}\ntype UseListNavigationProps<T> = {\n /** Ref til et element med rollen `listbox` */\n ref: RefObject<T>;\n};\n\nexport function useListNavigation<T extends HTMLElement>({\n ref,\n}: UseListNavigationProps<T>): void {\n useEffect(() => {\n let searchResetTimer: Timer;\n const search: KeyBuffer = { keys: \"\" }; // keypress buffer is an object to preserve state\n const list = ref.current;\n const handler = (event: KeyboardEvent) => {\n if (list) {\n handleListKeyNav({ list, event, search, searchResetTimer });\n }\n };\n\n if (list) {\n list.addEventListener(\"keydown\", handler);\n }\n\n return () => {\n if (list) {\n list.removeEventListener(\"keydown\", handler);\n }\n };\n }, [ref]);\n}\n\nfunction handleMoveTo(\n direction: Direction,\n { event, list, currentFocus }: MoveDetails,\n) {\n event.preventDefault();\n moveFocusTo(direction, list, currentFocus);\n}\n\nfunction handleListKeyNav({\n list,\n event,\n search,\n searchResetTimer,\n}: EventDetails) {\n const { key, target } = event;\n const currentFocus = target as HTMLButtonElement;\n\n const moveDetails = {\n event,\n list,\n currentFocus,\n };\n\n switch (key) {\n case \"ArrowUp\":\n case \"PageUp\":\n handleMoveTo(\"prev\", moveDetails);\n break;\n case \"ArrowDown\":\n case \"PageDown\":\n handleMoveTo(\"next\", moveDetails);\n break;\n case \"Home\":\n handleMoveTo(\"first\", moveDetails);\n break;\n case \"End\":\n handleMoveTo(\"last\", moveDetails);\n break;\n case \"Tab\":\n // in a standard select, tab does nothing in-menu\n event.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n break;\n\n default:\n if (search !== undefined) {\n const searchResult = findItem({\n list,\n key,\n search,\n searchResetTimer,\n });\n if (searchResult) {\n searchResult.focus();\n }\n }\n break;\n }\n}\n\nfunction moveFocusTo(\n direction: Direction,\n list: HTMLElement,\n current: HTMLButtonElement,\n) {\n const thisOption = current;\n switch (direction) {\n case \"prev\":\n const prevOption: HTMLButtonElement | null =\n thisOption &&\n (thisOption.previousElementSibling as HTMLButtonElement);\n if (prevOption) {\n prevOption.focus();\n }\n break;\n case \"next\":\n const nextOption: HTMLButtonElement | null =\n thisOption &&\n (thisOption.nextElementSibling as HTMLButtonElement);\n if (nextOption) {\n nextOption.focus();\n }\n break;\n case \"first\":\n const firstItem =\n list.querySelector<HTMLButtonElement>(`[role=\"option\"]`);\n if (firstItem) {\n firstItem.focus();\n }\n break;\n case \"last\":\n const listItems =\n list.querySelectorAll<HTMLButtonElement>(`[role=\"option\"]`);\n if (listItems.length) {\n listItems[listItems.length - 1].focus();\n }\n break;\n }\n}\n\nfunction findItem({\n list,\n key,\n search,\n searchResetTimer,\n}: SearchDetails): HTMLButtonElement | null {\n const listItems = list.querySelectorAll(`[role=\"option\"]`);\n if (!listItems.length) return null;\n\n if (search) {\n search.keys = search.keys.concat(key);\n resetWhenIdle(search, searchResetTimer);\n\n for (let n = 0; n < listItems.length; n++) {\n const label = (listItems[n] as HTMLButtonElement).innerText;\n if (label && label.toLowerCase().indexOf(search.keys) === 0) {\n return listItems[n] as HTMLButtonElement;\n }\n }\n }\n\n return null;\n}\n\nfunction resetWhenIdle(search: KeyBuffer, timer: Timer) {\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n timer = setTimeout(\n () => {\n search ? (search.keys = \"\") : (search = { keys: \"\" });\n timer = undefined;\n },\n 500,\n search,\n timer,\n );\n}\n"],"names":["handleMoveTo","direction","event","list","currentFocus","preventDefault","current","thisOption","prevOption","previousElementSibling","focus","nextOption","nextElementSibling","firstItem","querySelector","listItems","querySelectorAll","length","moveFocusTo","ref","useEffect","search","keys","handler","searchResetTimer","key","target","moveDetails","searchResult","concat","timer","clearTimeout","setTimeout","resetWhenIdle","n","label","innerText","toLowerCase","indexOf","findItem","handleListKeyNav","addEventListener","removeEventListener"],"mappings":"yGAmDA,SAASA,EACLC,GACEC,MAAAA,EAAOC,KAAAA,EAAMC,aAAAA,IAEfF,EAAMG,iBA0DV,SACIJ,EACAE,EACAG,GAEA,MAAMC,EAAaD,EACnB,OAAQL,GACJ,IAAK,OACK,MAAAO,EACFD,GACCA,EAAWE,uBACZD,GACAA,EAAWE,QAEf,MACJ,IAAK,OACK,MAAAC,EACFJ,GACCA,EAAWK,mBACZD,GACAA,EAAWD,QAEf,MACJ,IAAK,QACK,MAAAG,EACFV,EAAKW,cAAiC,mBACtCD,GACAA,EAAUH,QAEd,MACJ,IAAK,OACK,MAAAK,EACFZ,EAAKa,iBAAoC,mBACzCD,EAAUE,QACVF,EAAUA,EAAUE,OAAS,GAAGP,QAIhD,CA/FgBQ,CAAAjB,EAAWE,EAAMC,EACjC,2BA/BO,UACHe,IAAAA,IAEAC,EAAAA,WAAU,KAEA,MAAAC,EAAoB,CAAEC,KAAM,IAC5BnB,EAAOgB,EAAIb,QACXiB,EAAWrB,IACTC,GAyBhB,UACIA,KAAAA,EACAD,MAAAA,EACAmB,OAAAA,EACAG,iBAAAA,IAEM,MAAEC,IAAAA,EAAKC,OAAAA,GAAWxB,EAGlByB,EAAc,CAChBzB,MAAAA,EACAC,KAAAA,EACAC,aALiBsB,GAQrB,OAAQD,GACJ,IAAK,UACL,IAAK,SACDzB,EAAa,OAAQ2B,GACrB,MACJ,IAAK,YACL,IAAK,WACD3B,EAAa,OAAQ2B,GACrB,MACJ,IAAK,OACD3B,EAAa,QAAS2B,GACtB,MACJ,IAAK,MACD3B,EAAa,OAAQ2B,GACrB,MACJ,IAAK,MAEDzB,EAAMG,iBACN,MACJ,IAAK,QACL,IAAK,IACD,MAEJ,QACI,QAAe,IAAXgB,EAAsB,CACtB,MAAMO,EAsDtB,UACIzB,KAAAA,EACAsB,IAAAA,EACAJ,OAAAA,EACAG,iBAAAA,IAEM,MAAAT,EAAYZ,EAAKa,iBAAiB,mBACpC,IAACD,EAAUE,OAAe,OAAA,KAE9B,GAAII,EAAQ,CACRA,EAAOC,KAAOD,EAAOC,KAAKO,OAAOJ,GAczC,SAAuBJ,EAAmBS,GAClCA,IACAC,aAAaD,GACLA,OAAA,GAEJA,EAAAE,YACJ,KACIX,EAAUA,EAAOC,KAAO,GAAOD,EAAS,CAAEC,KAAM,IACxCQ,OAAA,CAAA,GAEZ,IACAT,EACAS,EAER,CA3BQG,CAAcZ,EAAQG,GAEtB,IAASU,IAAAA,EAAI,EAAGA,EAAInB,EAAUE,OAAQiB,IAAK,CACjC,MAAAC,EAASpB,EAAUmB,GAAyBE,UAC9C,GAAAD,GAAsD,IAA7CA,EAAME,cAAcC,QAAQjB,EAAOC,MAC5C,OAAOP,EAAUmB,EAEzB,CACJ,CAEO,OAAA,IACX,CA5EqCK,CAAS,CAC1BpC,KAAAA,EACAsB,IAAAA,EACAJ,OAAAA,EACAG,iBAAAA,IAEAI,GACAA,EAAalB,OAErB,EAGZ,CA5EgB8B,CAAiB,CAAErC,KAAAA,EAAMD,MAAAA,EAAOmB,OAAAA,EAAQG,iBAL5CA,WAK8D,EAIlE,OAAIrB,GACKA,EAAAsC,iBAAiB,UAAWlB,GAG9B,KACCpB,GACKA,EAAAuC,oBAAoB,UAAWnB,EAAO,CAC/C,GAEL,CAACJ,GACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMutationObserver.cjs","sources":["../../../../src/hooks/useMutationObserver/useMutationObserver.ts"],"sourcesContent":["import { useEffect, useRef, RefObject } from \"react\";\n\nconst hasWindowWithMutationObserver = () =>\n typeof window !== \"undefined\" && typeof MutationObserver !== \"undefined\";\n\n/**\n * Hook som gjør det enklere å sjekke en komponents children for endringer.\n *\n * @param targetRef Container som skal observeres. Containeren må ikke rerendres, da vil observereren bli opprettet på nytt.\n * @param onObservation Callback-funksjon som utføres når en mutasjon observeres.\n * @param config Parametere til observereren. Se https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit#properties for mer info.\n */\nexport const useMutationObserver = (\n targetRef: RefObject<HTMLElement>,\n onObservation: MutationCallback,\n config?: Partial<MutationObserverInit>,\n): void => {\n const observerRef = useRef<MutationObserver>(null);\n\n useEffect(() => {\n let observer = observerRef.current;\n\n if (hasWindowWithMutationObserver()) {\n const target = targetRef.current;\n\n if (observer) {\n observer.disconnect();\n }\n\n observer = new MutationObserver(onObservation);\n\n if (target) {\n observer.observe(target, config);\n }\n }\n return () => {\n if (hasWindowWithMutationObserver() && observer) {\n observer.disconnect();\n }\n };\n }, [targetRef, onObservation, config]);\n};\n"],"names":["hasWindowWithMutationObserver","window","MutationObserver","targetRef","onObservation","config","observerRef","useRef","useEffect","observer","current","target","disconnect","observe"],"mappings":"yGAEMA,EAAgC,WAC3BC,OAAW,YAAsBC,iBAAqB,gCAS9B,CAC/BC,EACAC,EACAC,KAEM,MAAAC,EAAcC,SAAyB,MAE7CC,EAAAA,WAAU,KACN,IAAIC,EAAWH,EAAYI,QAE3B,GAAIV,IAAiC,CACjC,MAAMW,EAASR,EAAUO,QAErBD,GACAA,EAASG,aAGFH,EAAA,IAAIP,iBAAiBE,GAE5BO,GACSF,EAAAI,QAAQF,EAAQN,EAC7B,CAEJ,MAAO,KACCL,KAAmCS,GACnCA,EAASG,YAAW,CAE5B,GACD,CAACT,EAAWC,EAAeC,GAAO"}
1
+ {"version":3,"file":"useMutationObserver.cjs","sources":["../../../../src/hooks/useMutationObserver/useMutationObserver.ts"],"sourcesContent":["import { useEffect, useRef, RefObject } from \"react\";\n\nconst hasWindowWithMutationObserver = () =>\n typeof window !== \"undefined\" && typeof MutationObserver !== \"undefined\";\n\n/**\n * Hook som gjør det enklere å sjekke en komponents children for endringer.\n *\n * @param targetRef Container som skal observeres. Containeren må ikke rerendres, da vil observereren bli opprettet på nytt.\n * @param onObservation Callback-funksjon som utføres når en mutasjon observeres.\n * @param config Parametere til observereren. Se https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit#properties for mer info.\n */\nexport const useMutationObserver = (\n targetRef: RefObject<HTMLElement>,\n onObservation: MutationCallback,\n config?: Partial<MutationObserverInit>,\n): void => {\n const observerRef = useRef<MutationObserver>(null);\n\n useEffect(() => {\n let observer = observerRef.current;\n\n if (hasWindowWithMutationObserver()) {\n const target = targetRef.current;\n\n if (observer) {\n observer.disconnect();\n }\n\n observer = new MutationObserver(onObservation);\n\n if (target) {\n observer.observe(target, config);\n }\n }\n return () => {\n if (hasWindowWithMutationObserver() && observer) {\n observer.disconnect();\n }\n };\n }, [targetRef, onObservation, config]);\n};\n"],"names":["hasWindowWithMutationObserver","window","MutationObserver","targetRef","onObservation","config","observerRef","useRef","useEffect","observer","current","target","disconnect","observe"],"mappings":"yGAEMA,EAAgC,WAC3BC,OAAW,YAAsBC,iBAAqB,gCAS9B,CAC/BC,EACAC,EACAC,KAEM,MAAAC,EAAcC,SAAyB,MAE7CC,EAAAA,WAAU,KACN,IAAIC,EAAWH,EAAYI,QAE3B,GAAIV,IAAiC,CACjC,MAAMW,EAASR,EAAUO,QAErBD,GACAA,EAASG,aAGFH,EAAA,IAAIP,iBAAiBE,GAE5BO,GACSF,EAAAI,QAAQF,EAAQN,EAEjC,CACA,MAAO,KACCL,KAAmCS,GACnCA,EAASG,YAAW,CACxB,GAEL,CAACT,EAAWC,EAAeC,GAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"useProgressiveImg.cjs","sources":["../../../../src/hooks/useProgressiveImg/useProgressiveImg.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\nexport interface ProgressiveImageProps {\n lowQualitySrc: string;\n highQualitySrc: string;\n}\n\ntype ProgressiveImage = { src: string; isBlurred: boolean };\n\nexport const useProgressiveImg = ({\n lowQualitySrc,\n highQualitySrc,\n}: ProgressiveImageProps): ProgressiveImage => {\n const [src, setSrc] = useState(lowQualitySrc);\n\n useEffect(() => {\n setSrc(lowQualitySrc);\n const img = new Image();\n img.src = highQualitySrc;\n\n img.onload = () => {\n setSrc(highQualitySrc);\n };\n }, [lowQualitySrc, highQualitySrc]);\n\n return { src, isBlurred: src === lowQualitySrc };\n};\n"],"names":["lowQualitySrc","highQualitySrc","src","setSrc","useState","useEffect","img","Image","onload","isBlurred"],"mappings":"mIASiC,EAC7BA,cAAAA,EACAC,eAAAA,MAEA,MAAOC,EAAKC,GAAUC,EAAAA,SAASJ,GAE/BK,OAAAA,EAAAA,WAAU,KACNF,EAAOH,GACD,MAAAM,EAAM,IAAIC,MAChBD,EAAIJ,IAAMD,EAEVK,EAAIE,OAAS,KACTL,EAAOF,EAAc,CACzB,GACD,CAACD,EAAeC,IAEZ,CAAEC,IAAAA,EAAKO,UAAWP,IAAQF,EAAc"}
1
+ {"version":3,"file":"useProgressiveImg.cjs","sources":["../../../../src/hooks/useProgressiveImg/useProgressiveImg.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\nexport interface ProgressiveImageProps {\n lowQualitySrc: string;\n highQualitySrc: string;\n}\n\ntype ProgressiveImage = { src: string; isBlurred: boolean };\n\nexport const useProgressiveImg = ({\n lowQualitySrc,\n highQualitySrc,\n}: ProgressiveImageProps): ProgressiveImage => {\n const [src, setSrc] = useState(lowQualitySrc);\n\n useEffect(() => {\n setSrc(lowQualitySrc);\n const img = new Image();\n img.src = highQualitySrc;\n\n img.onload = () => {\n setSrc(highQualitySrc);\n };\n }, [lowQualitySrc, highQualitySrc]);\n\n return { src, isBlurred: src === lowQualitySrc };\n};\n"],"names":["lowQualitySrc","highQualitySrc","src","setSrc","useState","useEffect","img","Image","onload","isBlurred"],"mappings":"mIASiC,EAC7BA,cAAAA,EACAC,eAAAA,MAEA,MAAOC,EAAKC,GAAUC,WAASJ,GAE/BK,OAAAA,EAAAA,WAAU,KACNF,EAAOH,GACD,MAAAM,EAAM,IAAIC,MAChBD,EAAIJ,IAAMD,EAEVK,EAAIE,OAAS,KACTL,EAAOF,EAAc,CAAA,GAE1B,CAACD,EAAeC,IAEZ,CAAEC,IAAAA,EAAKO,UAAWP,IAAQF,EAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.cjs","sources":["../../../../src/hooks/useScreen/state.ts"],"sourcesContent":["export interface ScreenState {\n isSmallDevice: boolean;\n isMediumDevice: boolean;\n isLargeDevice: boolean;\n isXlDevice: boolean;\n isLandscape: boolean;\n isPortrait: boolean;\n}\n\nexport enum ActionType {\n orientation = \"ORIENTATION_CHANGED\",\n deviceSize = \"DEVICE_SIZE_CHANGED\",\n}\n\nexport interface ScreenAction {\n type: ActionType;\n property: keyof ScreenState;\n}\n\nfunction setDeviceSize(\n deviceSize: keyof ScreenState,\n): Omit<ScreenState, \"isLandscape\" | \"isPortrait\"> {\n return {\n isSmallDevice: deviceSize === \"isSmallDevice\",\n isMediumDevice: deviceSize === \"isMediumDevice\",\n isLargeDevice: deviceSize === \"isLargeDevice\",\n isXlDevice: deviceSize === \"isXlDevice\",\n };\n}\n\nfunction setOrientation(\n orientation: keyof ScreenState,\n): Pick<ScreenState, \"isLandscape\" | \"isPortrait\"> {\n return {\n isLandscape: orientation === \"isLandscape\",\n isPortrait: orientation === \"isPortrait\",\n };\n}\n\nexport const reducer = (\n state: ScreenState,\n action: ScreenAction,\n): ScreenState => {\n switch (action.type) {\n case ActionType.orientation:\n return {\n ...state,\n ...setOrientation(action.property),\n };\n case ActionType.deviceSize:\n return {\n ...state,\n ...setDeviceSize(action.property),\n };\n default:\n return state;\n }\n};\n"],"names":["ActionType","orientation","deviceSize","setDeviceSize","isSmallDevice","isMediumDevice","isLargeDevice","isXlDevice","setOrientation","isLandscape","isPortrait","state","action","type","property"],"mappings":"gFASY,IAAAA,EAAAA,IAAAA,EAAAA,GAAA,CAAA,GACRC,YAAc,sBACdD,EAAAE,WAAa,sBAFLF,GAUZ,SAASG,EACLD,GAEO,MAAA,CACHE,cAA8B,kBAAfF,EACfG,eAA+B,mBAAfH,EAChBI,cAA8B,kBAAfJ,EACfK,WAA2B,eAAfL,EAEpB,CAEA,SAASM,EACLP,GAEO,MAAA,CACHQ,YAA6B,gBAAhBR,EACbS,WAA4B,eAAhBT,EAEpB,sCAEuB,CACnBU,EACAC,KAEA,OAAQA,EAAOC,MACX,IAAK,sBACM,MAAA,IACAF,KACAH,EAAeI,EAAOE,WAEjC,IAAK,sBACM,MAAA,IACAH,KACAR,EAAcS,EAAOE,WAEhC,QACW,OAAAH,EAAA"}
1
+ {"version":3,"file":"state.cjs","sources":["../../../../src/hooks/useScreen/state.ts"],"sourcesContent":["export interface ScreenState {\n isSmallDevice: boolean;\n isMediumDevice: boolean;\n isLargeDevice: boolean;\n isXlDevice: boolean;\n isLandscape: boolean;\n isPortrait: boolean;\n}\n\nexport enum ActionType {\n orientation = \"ORIENTATION_CHANGED\",\n deviceSize = \"DEVICE_SIZE_CHANGED\",\n}\n\nexport interface ScreenAction {\n type: ActionType;\n property: keyof ScreenState;\n}\n\nfunction setDeviceSize(\n deviceSize: keyof ScreenState,\n): Omit<ScreenState, \"isLandscape\" | \"isPortrait\"> {\n return {\n isSmallDevice: deviceSize === \"isSmallDevice\",\n isMediumDevice: deviceSize === \"isMediumDevice\",\n isLargeDevice: deviceSize === \"isLargeDevice\",\n isXlDevice: deviceSize === \"isXlDevice\",\n };\n}\n\nfunction setOrientation(\n orientation: keyof ScreenState,\n): Pick<ScreenState, \"isLandscape\" | \"isPortrait\"> {\n return {\n isLandscape: orientation === \"isLandscape\",\n isPortrait: orientation === \"isPortrait\",\n };\n}\n\nexport const reducer = (\n state: ScreenState,\n action: ScreenAction,\n): ScreenState => {\n switch (action.type) {\n case ActionType.orientation:\n return {\n ...state,\n ...setOrientation(action.property),\n };\n case ActionType.deviceSize:\n return {\n ...state,\n ...setDeviceSize(action.property),\n };\n default:\n return state;\n }\n};\n"],"names":["ActionType","orientation","deviceSize","setDeviceSize","isSmallDevice","isMediumDevice","isLargeDevice","isXlDevice","setOrientation","isLandscape","isPortrait","state","action","type","property"],"mappings":"gFASY,IAAAA,EAAAA,IAAAA,EAAAA,GAAA,CAAA,GACRC,YAAc,sBACdD,EAAAE,WAAa,sBAFLF,GAUZ,SAASG,EACLD,GAEO,MAAA,CACHE,cAA8B,kBAAfF,EACfG,eAA+B,mBAAfH,EAChBI,cAA8B,kBAAfJ,EACfK,WAA2B,eAAfL,EAEpB,CAEA,SAASM,EACLP,GAEO,MAAA,CACHQ,YAA6B,gBAAhBR,EACbS,WAA4B,eAAhBT,EAEpB,sCAEuB,CACnBU,EACAC,KAEA,OAAQA,EAAOC,MACX,IAAK,sBACM,MAAA,IACAF,KACAH,EAAeI,EAAOE,WAEjC,IAAK,sBACM,MAAA,IACAH,KACAR,EAAcS,EAAOE,WAEhC,QACW,OAAAH,EACf"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),i=require("../../core/tokens.cjs");require("../../../tailwindPreset-CSQrgZ57.cjs");const t=require("../mediaQueryUtils.cjs"),r=require("./state.cjs"),{breakpoint:a}=i,s=e=>parseInt(e.replace("px","")),c={isSmallDevice:`(max-width: ${s(a.medium)-1}px)`,isMediumDevice:`(min-width: ${a.medium}) and (max-width: ${s(a.large)-1}px)`,isLargeDevice:`(min-width: ${a.large}) and (max-width: ${s(a.xl)-1}px)`,isXlDevice:`(min-width: ${a.xl})`,isPortrait:"(orientation: portrait)",isLandscape:"(orientation: landscape)"},n=e=>({type:"isLandscape"===e||"isPortrait"===e?r.ActionType.orientation:r.ActionType.deviceSize,property:e});exports.useScreen=()=>{const[i,a]=e.useState(!1),[s,o]=e.useReducer(r.reducer,{isSmallDevice:!1,isMediumDevice:!1,isLargeDevice:!1,isXlDevice:!1,isLandscape:!1,isPortrait:!1});e.useEffect((()=>{a(!0),Object.entries(c).map((([e,i])=>[e,t.getInitialMediaQueryMatch(i)])).forEach((([e,i])=>{i&&o(n(e))}))}),[]);const d=e.useCallback((e=>i=>{requestAnimationFrame((()=>{i.matches&&o(n(e))}))}),[]);return e.useEffect((()=>{if(!i||!window.matchMedia)return;const e=[];return Object.entries(c).forEach((([i,r])=>{const a=window.matchMedia(r),s=d(i);e.push([a,s]),t.addMediaQueryListener(a,s)})),()=>{e.forEach((([e,i])=>t.removeMediaQueryListener(e,i)))}}),[d,i]),{...s}};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),i=require("../../core/tokens.cjs"),t=require("../mediaQueryUtils.cjs"),r=require("./state.cjs"),{breakpoint:a}=i,s=e=>parseInt(e.replace("px","")),c={isSmallDevice:`(max-width: ${s(a.medium)-1}px)`,isMediumDevice:`(min-width: ${a.medium}) and (max-width: ${s(a.large)-1}px)`,isLargeDevice:`(min-width: ${a.large}) and (max-width: ${s(a.xl)-1}px)`,isXlDevice:`(min-width: ${a.xl})`,isPortrait:"(orientation: portrait)",isLandscape:"(orientation: landscape)"},n=e=>({type:"isLandscape"===e||"isPortrait"===e?r.ActionType.orientation:r.ActionType.deviceSize,property:e});exports.useScreen=()=>{const[i,a]=e.useState(!1),[s,o]=e.useReducer(r.reducer,{isSmallDevice:!1,isMediumDevice:!1,isLargeDevice:!1,isXlDevice:!1,isLandscape:!1,isPortrait:!1});e.useEffect((()=>{a(!0),Object.entries(c).map((([e,i])=>[e,t.getInitialMediaQueryMatch(i)])).forEach((([e,i])=>{i&&o(n(e))}))}),[]);const d=e.useCallback((e=>i=>{requestAnimationFrame((()=>{i.matches&&o(n(e))}))}),[]);return e.useEffect((()=>{if(!i||!window.matchMedia)return;const e=[];return Object.entries(c).forEach((([i,r])=>{const a=window.matchMedia(r),s=d(i);e.push([a,s]),t.addMediaQueryListener(a,s)})),()=>{e.forEach((([e,i])=>t.removeMediaQueryListener(e,i)))}}),[d,i]),{...s}};
2
2
  //# sourceMappingURL=useScreen.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScreen.cjs","sources":["../../../../src/hooks/useScreen/useScreen.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer, useState } from \"react\";\nimport { tokens } from \"../../core/index.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\nimport { ScreenAction, ActionType, reducer, ScreenState } from \"./state.js\";\n\nconst { breakpoint } = tokens;\n\nconst breakpointsAsNumber = (breakpoint: string): number =>\n parseInt(breakpoint.replace(\"px\", \"\"));\n\nconst MEDIA_RULES: Record<keyof ScreenState, string> = {\n isSmallDevice: `(max-width: ${\n breakpointsAsNumber(breakpoint.medium) - 1\n }px)`,\n isMediumDevice: `(min-width: ${breakpoint.medium}) and (max-width: ${\n breakpointsAsNumber(breakpoint.large) - 1\n }px)`,\n isLargeDevice: `(min-width: ${breakpoint.large}) and (max-width: ${\n breakpointsAsNumber(breakpoint.xl) - 1\n }px)`,\n isXlDevice: `(min-width: ${breakpoint.xl})`,\n isPortrait: \"(orientation: portrait)\",\n isLandscape: \"(orientation: landscape)\",\n};\n\nconst createAction = (property: keyof ScreenState): ScreenAction => ({\n type:\n property === \"isLandscape\" || property === \"isPortrait\"\n ? ActionType.orientation\n : ActionType.deviceSize,\n property,\n});\n\n/**\n * Finn størrelsen og orienteringen til skjermen.\n * @returns Et objekt med boolean som indikerer om skjermstørrelsen er liten, medium, stor eller ekstra stor, og om skjermen er i portrett- eller landskapsmodus.\n */\nexport const useScreen = (): ScreenState => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [device, deviceDispatch] = useReducer(reducer, {\n isSmallDevice: false,\n isMediumDevice: false,\n isLargeDevice: false,\n isXlDevice: false,\n isLandscape: false,\n isPortrait: false,\n });\n\n useEffect(() => {\n setHasMounted(true);\n Object.entries(MEDIA_RULES)\n .map(([key, rule]) => [key, getInitialMediaQueryMatch(rule)])\n .forEach(([key, value]) => {\n if (value) {\n deviceDispatch(createAction(key as keyof ScreenState));\n }\n });\n }, []);\n\n const createListener = useCallback(\n (key: keyof ScreenState) => (e: MediaQueryListEvent) => {\n requestAnimationFrame(() => {\n if (e.matches) {\n deviceDispatch(createAction(key));\n }\n });\n },\n [],\n );\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const eventListenerPairs: Array<\n [MediaQueryList, (e: MediaQueryListEvent) => void]\n > = [];\n\n Object.entries(MEDIA_RULES).forEach(([key, rule]) => {\n const queryList = window.matchMedia(rule);\n const listener = createListener(key as keyof ScreenState);\n eventListenerPairs.push([queryList, listener]);\n addMediaQueryListener(queryList, listener);\n });\n\n return () => {\n eventListenerPairs.forEach(([queryList, listener]) =>\n removeMediaQueryListener(queryList, listener),\n );\n };\n }, [createListener, hasMounted]);\n\n return { ...device };\n};\n"],"names":["breakpoint","tokens","breakpointsAsNumber","parseInt","replace","MEDIA_RULES","isSmallDevice","medium","isMediumDevice","large","isLargeDevice","xl","isXlDevice","isPortrait","isLandscape","createAction","property","type","ActionType","orientation","deviceSize","hasMounted","setHasMounted","useState","device","deviceDispatch","useReducer","reducer","useEffect","Object","entries","map","key","rule","getInitialMediaQueryMatch","forEach","value","createListener","useCallback","e","requestAnimationFrame","matches","window","matchMedia","eventListenerPairs","queryList","listener","push","addMediaQueryListener","removeMediaQueryListener"],"mappings":"gQASQA,WAAAA,GAAeC,EAEjBC,EAAuBF,GACzBG,SAASH,EAAWI,QAAQ,KAAM,KAEhCC,EAAiD,CACnDC,cAAe,eACXJ,EAAoBF,EAAWO,QAAU,OAE7CC,eAAgB,eAAeR,EAAWO,2BACtCL,EAAoBF,EAAWS,OAAS,OAE5CC,cAAe,eAAeV,EAAWS,0BACrCP,EAAoBF,EAAWW,IAAM,OAEzCC,WAAY,eAAeZ,EAAWW,MACtCE,WAAY,0BACZC,YAAa,4BAGXC,EAAgBC,IAAAA,CAClBC,KACiB,gBAAbD,GAA2C,eAAbA,EACxBE,aAAWC,YACXD,EAAAA,WAAWE,WACrBJ,SAAAA,sBAOqB,KACrB,MAAOK,EAAYC,GAAiBC,EAAAA,UAAS,IAEtCC,EAAQC,GAAkBC,EAAAA,WAAWC,EAAAA,QAAS,CACjDrB,eAAe,EACfE,gBAAgB,EAChBE,eAAe,EACfE,YAAY,EACZE,aAAa,EACbD,YAAY,IAGhBe,EAAAA,WAAU,KACNN,GAAc,GACPO,OAAAC,QAAQzB,GACV0B,KAAI,EAAEC,EAAKC,KAAU,CAACD,EAAKE,EAA0BA,0BAAAD,MACrDE,SAAQ,EAAEH,EAAKI,MACRA,GACeX,EAAAV,EAAaiB,GAAyB,GAE5D,GACN,IAEH,MAAMK,EAAiBC,EAAAA,aAClBN,GAA4BO,IACzBC,uBAAsB,KACdD,EAAEE,SACahB,EAAAV,EAAaiB,GAAI,GAEvC,GAEL,IAGJJ,OAAAA,EAAAA,WAAU,KACN,IAAKP,IAAeqB,OAAOC,WACvB,OAEJ,MAAMC,EAEF,GAEG,OAAAf,OAAAC,QAAQzB,GAAa8B,SAAQ,EAAEH,EAAKC,MACjC,MAAAY,EAAYH,OAAOC,WAAWV,GAC9Ba,EAAWT,EAAeL,GAChCY,EAAmBG,KAAK,CAACF,EAAWC,IACpCE,EAAAA,sBAAsBH,EAAWC,EAAQ,IAGtC,KACgBF,EAAAT,SAAQ,EAAEU,EAAWC,KACpCG,EAAAA,yBAAyBJ,EAAWC,IACxC,CACJ,GACD,CAACT,EAAgBhB,IAEb,IAAKG,EAAO"}
1
+ {"version":3,"file":"useScreen.cjs","sources":["../../../../src/hooks/useScreen/useScreen.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer, useState } from \"react\";\nimport { tokens } from \"../../core/index.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\nimport { ScreenAction, ActionType, reducer, ScreenState } from \"./state.js\";\n\nconst { breakpoint } = tokens;\n\nconst breakpointsAsNumber = (breakpoint: string): number =>\n parseInt(breakpoint.replace(\"px\", \"\"));\n\nconst MEDIA_RULES: Record<keyof ScreenState, string> = {\n isSmallDevice: `(max-width: ${\n breakpointsAsNumber(breakpoint.medium) - 1\n }px)`,\n isMediumDevice: `(min-width: ${breakpoint.medium}) and (max-width: ${\n breakpointsAsNumber(breakpoint.large) - 1\n }px)`,\n isLargeDevice: `(min-width: ${breakpoint.large}) and (max-width: ${\n breakpointsAsNumber(breakpoint.xl) - 1\n }px)`,\n isXlDevice: `(min-width: ${breakpoint.xl})`,\n isPortrait: \"(orientation: portrait)\",\n isLandscape: \"(orientation: landscape)\",\n};\n\nconst createAction = (property: keyof ScreenState): ScreenAction => ({\n type:\n property === \"isLandscape\" || property === \"isPortrait\"\n ? ActionType.orientation\n : ActionType.deviceSize,\n property,\n});\n\n/**\n * Finn størrelsen og orienteringen til skjermen.\n * @returns Et objekt med boolean som indikerer om skjermstørrelsen er liten, medium, stor eller ekstra stor, og om skjermen er i portrett- eller landskapsmodus.\n */\nexport const useScreen = (): ScreenState => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [device, deviceDispatch] = useReducer(reducer, {\n isSmallDevice: false,\n isMediumDevice: false,\n isLargeDevice: false,\n isXlDevice: false,\n isLandscape: false,\n isPortrait: false,\n });\n\n useEffect(() => {\n setHasMounted(true);\n Object.entries(MEDIA_RULES)\n .map(([key, rule]) => [key, getInitialMediaQueryMatch(rule)])\n .forEach(([key, value]) => {\n if (value) {\n deviceDispatch(createAction(key as keyof ScreenState));\n }\n });\n }, []);\n\n const createListener = useCallback(\n (key: keyof ScreenState) => (e: MediaQueryListEvent) => {\n requestAnimationFrame(() => {\n if (e.matches) {\n deviceDispatch(createAction(key));\n }\n });\n },\n [],\n );\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const eventListenerPairs: Array<\n [MediaQueryList, (e: MediaQueryListEvent) => void]\n > = [];\n\n Object.entries(MEDIA_RULES).forEach(([key, rule]) => {\n const queryList = window.matchMedia(rule);\n const listener = createListener(key as keyof ScreenState);\n eventListenerPairs.push([queryList, listener]);\n addMediaQueryListener(queryList, listener);\n });\n\n return () => {\n eventListenerPairs.forEach(([queryList, listener]) =>\n removeMediaQueryListener(queryList, listener),\n );\n };\n }, [createListener, hasMounted]);\n\n return { ...device };\n};\n"],"names":["breakpoint","tokens","breakpointsAsNumber","parseInt","replace","MEDIA_RULES","isSmallDevice","medium","isMediumDevice","large","isLargeDevice","xl","isXlDevice","isPortrait","isLandscape","createAction","property","type","ActionType","orientation","deviceSize","hasMounted","setHasMounted","useState","device","deviceDispatch","useReducer","reducer","useEffect","Object","entries","map","key","rule","getInitialMediaQueryMatch","forEach","value","createListener","useCallback","e","requestAnimationFrame","matches","window","matchMedia","eventListenerPairs","queryList","listener","push","addMediaQueryListener","removeMediaQueryListener"],"mappings":"0MASQA,WAAAA,GAAeC,EAEjBC,EAAuBF,GACzBG,SAASH,EAAWI,QAAQ,KAAM,KAEhCC,EAAiD,CACnDC,cAAe,eACXJ,EAAoBF,EAAWO,QAAU,OAE7CC,eAAgB,eAAeR,EAAWO,2BACtCL,EAAoBF,EAAWS,OAAS,OAE5CC,cAAe,eAAeV,EAAWS,0BACrCP,EAAoBF,EAAWW,IAAM,OAEzCC,WAAY,eAAeZ,EAAWW,MACtCE,WAAY,0BACZC,YAAa,4BAGXC,EAAgBC,KAClBC,KACiB,gBAAbD,GAA2C,eAAbA,EACxBE,aAAWC,YACXD,EAAAA,WAAWE,WACrBJ,SAAAA,sBAOqB,KACrB,MAAOK,EAAYC,GAAiBC,YAAS,IAEtCC,EAAQC,GAAkBC,EAAAA,WAAWC,EAAAA,QAAS,CACjDrB,eAAe,EACfE,gBAAgB,EAChBE,eAAe,EACfE,YAAY,EACZE,aAAa,EACbD,YAAY,IAGhBe,EAAAA,WAAU,KACNN,GAAc,GACPO,OAAAC,QAAQzB,GACV0B,KAAI,EAAEC,EAAKC,KAAU,CAACD,EAAKE,EAA0BA,0BAAAD,MACrDE,SAAQ,EAAEH,EAAKI,MACRA,GACeX,EAAAV,EAAaiB,GAAyB,GAE5D,GACN,IAEH,MAAMK,EAAiBC,EAAAA,aAClBN,GAA4BO,IACzBC,uBAAsB,KACdD,EAAEE,SACahB,EAAAV,EAAaiB,GAAI,GAEvC,GAEL,IAGJJ,OAAAA,EAAAA,WAAU,KACN,IAAKP,IAAeqB,OAAOC,WACvB,OAEJ,MAAMC,EAEF,GAEG,OAAAf,OAAAC,QAAQzB,GAAa8B,SAAQ,EAAEH,EAAKC,MACjC,MAAAY,EAAYH,OAAOC,WAAWV,GAC9Ba,EAAWT,EAAeL,GAChCY,EAAmBG,KAAK,CAACF,EAAWC,IACpCE,wBAAsBH,EAAWC,EAAQ,IAGtC,KACgBF,EAAAT,SAAQ,EAAEU,EAAWC,KACpCG,EAAAA,yBAAyBJ,EAAWC,IAAQ,CAChD,GAEL,CAACT,EAAgBhB,IAEb,IAAKG"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/accordion/Accordion.cjs"),o=require("./components/accordion/AccordionItem.cjs"),r=require("./components/breadcrumb/Breadcrumb.cjs"),s=require("./components/breadcrumb/BreadcrumbItem.cjs"),t=require("./components/button/Button.cjs"),n=require("./components/card/Card.cjs"),i=require("./components/card/CardImage.cjs"),a=require("./components/card/NavCard.cjs"),c=require("./components/card/TaskCard.cjs"),u=require("./components/card/InfoCard.cjs"),p=require("./components/checkbox/Checkbox.cjs"),m=require("./components/combobox/Combobox.cjs"),l=require("./components/cookie-consent/CookieConsent.cjs"),x=require("./components/cookie-consent/CookieConsentContext.cjs"),d=require("./components/datepicker/DatePicker.cjs"),g=require("./components/datepicker/validation.cjs"),j=require("./components/datepicker/utils.cjs"),b=require("./components/feedback/Feedback.cjs"),q=require("./components/feedback/presets.cjs"),I=require("./components/flex/Flex.cjs"),T=require("./components/description-list/DescriptionList.cjs"),k=require("./components/expander/ExpandablePanel.cjs"),C=require("./components/expander/Expander.cjs"),h=require("./components/expander/deprecated/ExpandSection.cjs"),S=require("./components/icon/Icon.cjs"),v=require("./components/icon/icons/animated/ArrowVerticalAnimated.cjs"),M=require("./components/icon/icons/animated/ArrowHorizontalAnimated.cjs"),E=require("./components/icon/icons/animated/PlusRemoveAnimated.cjs"),L=require("./components/icon/icons/ArrowDownIcon.cjs"),f=require("./components/icon/icons/ArrowLeftIcon.cjs"),A=require("./components/icon/icons/ArrowNorthEastIcon.cjs"),R=require("./components/icon/icons/ArrowRightIcon.cjs"),P=require("./components/icon/icons/ArrowUpIcon.cjs"),B=require("./components/icon/icons/CalendarIcon.cjs"),w=require("./components/icon/icons/CheckIcon.cjs"),F=require("./components/icon/icons/ChevronDownIcon.cjs"),N=require("./components/icon/icons/ChevronLeftIcon.cjs"),D=require("./components/icon/icons/ChevronRightIcon.cjs"),V=require("./components/icon/icons/ChevronUpIcon.cjs"),y=require("./components/icon/icons/CloseIcon.cjs"),O=require("./components/icon/icons/CopyIcon.cjs"),G=require("./components/icon/icons/DotsIcon.cjs"),H=require("./components/icon/icons/DragIcon.cjs"),W=require("./components/icon/icons/ErrorIcon.cjs"),U=require("./components/icon/icons/GreenCheckIcon.cjs"),K=require("./components/icon/icons/HamburgerIcon.cjs"),X=require("./components/icon/icons/InfoIcon.cjs"),_=require("./components/icon/icons/LinkIcon.cjs"),z=require("./components/icon/icons/MinusIcon.cjs"),Q=require("./components/icon/icons/OpenInNewIcon.cjs"),J=require("./components/icon/icons/PenIcon.cjs"),Y=require("./components/icon/icons/PlusIcon.cjs"),Z=require("./components/icon/icons/QuestionIcon.cjs"),$=require("./components/icon/icons/RedCrossIcon.cjs"),ee=require("./components/icon/icons/SearchIcon.cjs"),oe=require("./components/icon/icons/SuccessIcon.cjs"),re=require("./components/icon/icons/ThumbDownIcon.cjs"),se=require("./components/icon/icons/ThumbUpIcon.cjs"),te=require("./components/icon/icons/TrashCanIcon.cjs"),ne=require("./components/icon/icons/WarningIcon.cjs"),ie=require("./components/icon-button/IconButton.cjs"),ae=require("./components/image/Image.cjs"),ce=require("./components/input-group/FieldGroup.cjs"),ue=require("./components/input-group/InputGroup.cjs"),pe=require("./components/input-group/Label.cjs"),me=require("./components/input-group/SupportLabel.cjs"),le=require("./components/input-panel/CheckboxPanel.cjs"),xe=require("./components/input-panel/RadioPanel.cjs"),de=require("./components/input-panel/RadioPanelGroup.cjs"),ge=require("./components/link/Link.cjs"),je=require("./components/link/NavLink.cjs"),be=require("./components/link-list/LinkList.cjs"),qe=require("./components/list/List.cjs"),Ie=require("./components/list/ListItem.cjs"),Te=require("./components/loader/Loader.cjs"),ke=require("./components/loader/skeletons/SkeletonAnimation.cjs"),Ce=require("./components/loader/skeletons/SkeletonButton.cjs"),he=require("./components/loader/skeletons/SkeletonCheckboxGroup.cjs"),Se=require("./components/loader/skeletons/SkeletonElement.cjs"),ve=require("./components/loader/skeletons/SkeletonInput.cjs"),Me=require("./components/loader/skeletons/SkeletonRadioButtonGroup.cjs"),Ee=require("./components/loader/skeletons/SkeletonTable.cjs"),Le=require("./components/loader/skeletons/SkeletonTextArea.cjs"),fe=require("./components/logo/Logo.cjs"),Ae=require("./components/logo/LogoStamp.cjs"),Re=require("./components/logo/text-paths/ForsikringLevertAvFremtind.cjs"),Pe=require("./components/logo/text-paths/FraSB1ogDNB.cjs"),Be=require("./components/logo/text-paths/InnovasjonFraFremtind.cjs"),we=require("./components/logo/text-paths/TeknologiFraFremtind.cjs"),Fe=require("./components/logo/text-paths/VartEgetForsikringsselskap.cjs"),Ne=require("./components/logo/text-paths/VartForsikringsselskap.cjs"),De=require("./components/menu/Menu.cjs"),Ve=require("./components/menu/MenuItem.cjs"),ye=require("./components/menu/MenuItemCheckbox.cjs"),Oe=require("./components/menu/MenuDivider.cjs"),Ge=require("./components/message/Message.cjs"),He=require("./components/message/FormErrorMessage.cjs"),We=require("./components/modal/Modal.cjs"),Ue=require("./components/modal/useModal.cjs"),Ke=require("./components/pagination/Pagination.cjs"),Xe=require("./components/popover/Popover.cjs"),_e=require("./components/progress-bar/Countdown.cjs"),ze=require("./components/progress-bar/ProgressBar.cjs"),Qe=require("./components/radio-button/RadioButton.cjs"),Je=require("./components/radio-button/RadioButtonGroup.cjs"),Ye=require("./components/radio-button/BaseRadioButton.cjs"),Ze=require("./components/select/Select.cjs"),$e=require("./components/select/NativeSelect.cjs"),eo=require("./components/summary-table/SummaryTable.cjs"),oo=require("./components/summary-table/SummaryTableRow.cjs"),ro=require("./components/system-message/SystemMessage.cjs"),so=require("./components/table/DataTable.cjs"),to=require("./components/table/Table.cjs"),no=require("./components/table/TableBody.cjs"),io=require("./components/table/TableCaption.cjs"),ao=require("./components/table/TableCell.cjs"),co=require("./components/table/TableColumn.cjs"),uo=require("./components/table/TableColumnGroup.cjs"),po=require("./components/table/tableContext.cjs"),mo=require("./components/table/tableSectionContext.cjs"),lo=require("./components/table/TableFooter.cjs"),xo=require("./components/table/TableHead.cjs"),go=require("./components/table/TableHeader.cjs"),jo=require("./components/table/TablePagination.cjs"),bo=require("./components/table/TableRow.cjs"),qo=require("./components/table/ExpandableTableRow.cjs"),Io=require("./components/table/ExpandableTableRowController.cjs"),To=require("./components/table/utils.cjs"),ko=require("./components/tabs/NavTab.cjs"),Co=require("./components/tabs/NavTabs.cjs"),ho=require("./components/tabs/Tabs.cjs"),So=require("./components/tabs/TabList.cjs"),vo=require("./components/tabs/Tab.cjs"),Mo=require("./components/tabs/TabPanel.cjs"),Eo=require("./components/tag/Tag.cjs"),Lo=require("./components/text-input/BaseTextArea.cjs"),fo=require("./components/text-input/BaseTextInput.cjs"),Ao=require("./components/text-input/TextArea.cjs"),Ro=require("./components/text-input/TextInput.cjs"),Po=require("./components/toast/toastContext.cjs"),Bo=require("./components/toggle-switch/ToggleSwitch.cjs"),wo=require("./components/toggle-switch/ToggleSlider.cjs"),Fo=require("./components/tooltip/Tooltip.cjs"),No=require("./components/tooltip/TooltipContent.cjs"),Do=require("./components/tooltip/TooltipTrigger.cjs"),Vo=require("./components/tooltip/PopupTip.cjs"),yo=require("./components/ScreenReaderOnly.cjs"),Oo=require("./core/tokens.cjs"),Go=require("../tailwindPreset-CSQrgZ57.cjs"),Ho=require("./hooks/useAnimatedDetails/useAnimatedDetails.cjs"),Wo=require("./hooks/useAnimatedHeight/useAnimatedHeight.cjs"),Uo=require("./hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs"),Ko=require("./hooks/useAnimatedHeight/useAutoAnimateHeight.cjs"),Xo=require("./hooks/useBrowserPreferences/useBrowserPreferences.cjs"),_o=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),zo=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Qo=require("./hooks/useMutationObserver/useMutationObserver.cjs"),Jo=require("./hooks/usePreviousValue/usePreviousValue.cjs"),Yo=require("./hooks/useProgressiveImg/useProgressiveImg.cjs"),Zo=require("./hooks/useScreen/useScreen.cjs"),$o=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),er=require("./hooks/useAriaLiveRegion/useAriaLiveRegion.cjs"),or=require("./hooks/useClickOutside/useClickOutside.cjs"),rr=require("./hooks/useFocusOutside/useFocusOutside.cjs"),sr=require("./hooks/useElementDimensions/useElementDimensions.cjs"),tr=require("./hooks/useId/useId.cjs"),nr=require("./hooks/useKeyListener/useKeyListener.cjs"),ir=require("./hooks/useListNavigation/useListNavigation.cjs"),ar=require("./hooks/useSwipeGesture/useSwipeGesture.cjs"),cr=require("../index-CaISwoxr.cjs"),ur=require("./utilities/formatters/util/formatNumber.cjs"),pr=require("./utilities/formatters/util/parseNumber.cjs"),mr=require("./utilities/formatters/util/registerWithMask.cjs"),lr=require("./utilities/formatters/avstand/formatAvstand.cjs"),xr=require("./utilities/formatters/bytes/formatBytes.cjs"),dr=require("./utilities/formatters/date/formatDate.cjs"),gr=require("./utilities/formatters/fodselsnummer/formatFodselsnummer.cjs"),jr=require("./utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs"),br=require("./utilities/formatters/kontonummer/formatKontonummer.cjs"),qr=require("./utilities/formatters/kortnummer/formatKortnummer.cjs"),Ir=require("./utilities/formatters/telefonnummer/formatTelefonnummer.cjs"),Tr=require("./utilities/formatters/valuta/formatValuta.cjs"),kr=require("./utilities/getThemeAndDensity.cjs"),Cr=require("./utilities/polymorphism/mergeProps.cjs"),hr=require("./utilities/polymorphism/mergeRefs.cjs"),Sr=require("./utilities/polymorphism/SlotComponent.cjs"),vr=require("./utilities/validators/isValidEpost/isValidEpost.cjs"),Mr=require("./utilities/validators/isValidTelefonnummer/isValidTelefonnummer.cjs"),Er=require("./utilities/validators/isValidRegistreringsnummer/isValidRegistreringsnummer.cjs"),Lr=require("./utilities/validators/isValidChassisnummer/isValidChassisnummer.cjs"),fr=require("./utilities/validators/isValidDogId/isValidDogId.cjs"),Ar=require("./utilities/validators/isExactLength/isExactLength.cjs"),Rr=require("./utilities/validators/isInteger/isInteger.cjs"),Pr=require("./utilities/validators/isValidFodselsnummer/isValidFodselsnummer.cjs"),Br=require("./utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs"),wr=require("./utilities/validators/isValidName/isValidName.cjs"),Fr=require("./utilities/validators/hasMinimumWords/hasMinimumWords.cjs"),Nr=require("./utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs"),Dr=require("./utilities/tabListener.cjs"),Vr=require("./utilities/valuePair.cjs");exports.Accordion=e.Accordion,exports.AccordionItem=o.AccordionItem,exports.Breadcrumb=r.Breadcrumb,exports.BreadcrumbItem=s.BreadcrumbItem,exports.Button=t.Button,exports.PrimaryButton=t.PrimaryButton,exports.SecondaryButton=t.SecondaryButton,exports.TertiaryButton=t.TertiaryButton,exports.Card=n.Card,exports.CardImage=i.CardImage,exports.InfoBlock=a.InfoBlock,exports.NavCard=a.NavCard,exports.TaskCard=c.TaskCard,exports.InfoCard=u.InfoCard,exports.Checkbox=p.Checkbox,exports.Combobox=m.Combobox,exports.getComboboxValuePair=m.getComboboxValuePair,exports.CookieConsent=l.CookieConsent,exports.CookieConsentProvider=x.CookieConsentProvider,exports.useCookieConsent=x.useCookieConsent,exports.DatePicker=d.DatePicker,exports.isCorrectFormat=g.isCorrectFormat,exports.isWithinLowerBound=g.isWithinLowerBound,exports.isWithinUpperBound=g.isWithinUpperBound,exports.formatInput=j.formatInput,exports.isBlurTargetOutside=j.isBlurTargetOutside,exports.parseDateString=j.parseDateString,exports.Feedback=b.Feedback,exports.PRESETS=q.PRESETS,exports.Flex=I.Flex,exports.DescriptionDetail=T.DescriptionDetail,exports.DescriptionList=T.DescriptionList,exports.DescriptionTerm=T.DescriptionTerm,exports.ExpandablePanel=k.ExpandablePanel,exports.Expander=C.Expander,exports.ExpandSection=h.ExpandSection,exports.Icon=S.Icon,exports.ArrowVerticalAnimated=v.ArrowVerticalAnimated,exports.ArrowHorizontalAnimated=M.ArrowHorizontalAnimated,exports.PlusRemoveAnimated=E.PlusRemoveAnimated,exports.ArrowDownIcon=L.ArrowDownIcon,exports.ArrowLeftIcon=f.ArrowLeftIcon,exports.ArrowNorthEastIcon=A.ArrowNorthEastIcon,exports.ArrowRightIcon=R.ArrowRightIcon,exports.ArrowUpIcon=P.ArrowUpIcon,exports.CalendarIcon=B.CalendarIcon,exports.CheckIcon=w.CheckIcon,exports.ChevronDownIcon=F.ChevronDownIcon,exports.ChevronLeftIcon=N.ChevronLeftIcon,exports.ChevronRightIcon=D.ChevronRightIcon,exports.ChevronUpIcon=V.ChevronUpIcon,exports.CloseIcon=y.CloseIcon,exports.CopyIcon=O.CopyIcon,exports.DotsIcon=G.DotsIcon,exports.DragIcon=H.DragIcon,exports.ErrorIcon=W.ErrorIcon,exports.GreenCheckIcon=U.GreenCheckIcon,exports.HamburgerIcon=K.HamburgerIcon,exports.InfoIcon=X.InfoIcon,exports.LinkIcon=_.LinkIcon,exports.MinusIcon=z.MinusIcon,exports.OpenInNewIcon=Q.OpenInNewIcon,exports.PenIcon=J.PenIcon,exports.PlusIcon=Y.PlusIcon,exports.QuestionIcon=Z.QuestionIcon,exports.RedCrossIcon=$.RedCrossIcon,exports.SearchIcon=ee.SearchIcon,exports.SuccessIcon=oe.SuccessIcon,exports.ThumbDownIcon=re.ThumbDownIcon,exports.ThumbUpIcon=se.ThumbUpIcon,exports.TrashCanIcon=te.TrashCanIcon,exports.WarningIcon=ne.WarningIcon,exports.IconButton=ie.IconButton,exports.Image=ae.Image,exports.FieldGroup=ce.FieldGroup,exports.InputGroup=ue.InputGroup,exports.Label=pe.Label,exports.SupportLabel=me.SupportLabel,exports.CheckboxPanel=le.CheckboxPanel,exports.RadioPanel=xe.RadioPanel,exports.RadioPanelGroup=de.RadioPanelGroup,exports.Link=ge.Link,exports.NavLink=je.NavLink,exports.LinkList=be.LinkList,exports.List=qe.List,exports.OrderedList=qe.OrderedList,exports.UnorderedList=qe.UnorderedList,exports.CheckListItem=Ie.CheckListItem,exports.CrossListItem=Ie.CrossListItem,exports.ListItem=Ie.ListItem,exports.Loader=Te.Loader,exports.SkeletonAnimation=ke.SkeletonAnimation,exports.SkeletonButton=Ce.SkeletonButton,exports.SkeletonCheckboxGroup=he.SkeletonCheckboxGroup,exports.SkeletonElement=Se.SkeletonElement,exports.SkeletonInput=ve.SkeletonInput,exports.SkeletonRadioButtonGroup=Me.SkeletonRadioButtonGroup,exports.SkeletonTable=Ee.SkeletonTable,exports.SkeletonTableHeader=Ee.SkeletonTableHeader,exports.SkeletonTableRow=Ee.SkeletonTableRow,exports.SkeletonTextArea=Le.SkeletonTextArea,exports.Logo=fe.Logo,exports.LogoStamp=Ae.LogoStamp,exports.ForsikringLevertAvFremtind=Re.ForsikringLevertAvFremtind,exports.FraSB1ogDNB=Pe.FraSB1ogDNB,exports.InnovasjonFraFremtind=Be.InnovasjonFraFremtind,exports.TeknologiFraFremtind=we.TeknologiFraFremtind,exports.VartEgetForsikringsselskap=Fe.VartEgetForsikringsselskap,exports.VartForsikringsselskap=Ne.VartForsikringsselskap,exports.Menu=De.Menu,exports.MenuItem=Ve.MenuItem,exports.MenuItemCheckbox=ye.MenuItemCheckbox,exports.MenuDivider=Oe.MenuDivider,exports.ErrorMessage=Ge.ErrorMessage,exports.InfoMessage=Ge.InfoMessage,exports.SuccessMessage=Ge.SuccessMessage,exports.WarningMessage=Ge.WarningMessage,exports.FormErrorMessage=He.FormErrorMessage,exports.Modal=We.Modal,exports.ModalActions=We.ModalActions,exports.ModalBody=We.ModalBody,exports.ModalCloseButton=We.ModalCloseButton,exports.ModalContainer=We.ModalContainer,exports.ModalHeader=We.ModalHeader,exports.ModalOverlay=We.ModalOverlay,exports.ModalTitle=We.ModalTitle,exports.useModal=Ue.useModal,exports.Pagination=Ke.Pagination,exports.Popover=Xe.Popover,exports.Countdown=_e.Countdown,exports.ProgressBar=ze.ProgressBar,exports.RadioButton=Qe.RadioButton,exports.RadioButtonGroup=Je.RadioButtonGroup,exports.BaseRadioButton=Ye.BaseRadioButton,exports.Select=Ze.Select,exports.NativeSelect=$e.NativeSelect,exports.SummaryTable=eo.SummaryTable,exports.SummaryTableRow=oo.SummaryTableRow,exports.ErrorSystemMessage=ro.ErrorSystemMessage,exports.InfoSystemMessage=ro.InfoSystemMessage,exports.SuccessSystemMessage=ro.SuccessSystemMessage,exports.WarningSystemMessage=ro.WarningSystemMessage,exports.DataTable=so.DataTable,exports.Table=to.Table,exports.TableBody=no.TableBody,exports.TableCaption=io.TableCaption,exports.TableCell=ao.TableCell,exports.TableColumn=co.TableColumn,exports.TableColumnGroup=uo.TableColumnGroup,exports.TableContextProvider=po.TableContextProvider,exports.useTableContext=po.useTableContext,exports.TableSectionContextProvider=mo.TableSectionContextProvider,exports.useTableSectionContext=mo.useTableSectionContext,exports.TableFooter=lo.TableFooter,exports.TableHead=xo.TableHead,exports.TableHeader=go.TableHeader,exports.TablePagination=jo.TablePagination,exports.TableRow=bo.TableRow,exports.ExpandableTableRow=qo.ExpandableTableRow,exports.ExpandableTableRowController=Io.ExpandableTableRowController,exports.useSortableTableHeader=To.useSortableTableHeader,exports.NavTab=ko.NavTab,exports.NavTabs=Co.NavTabs,exports.Tabs=ho.Tabs,exports.TabList=So.TabList,exports.Tab=vo.Tab,exports.TabPanel=Mo.TabPanel,exports.ErrorTag=Eo.ErrorTag,exports.InfoTag=Eo.InfoTag,exports.SuccessTag=Eo.SuccessTag,exports.Tag=Eo.Tag,exports.WarningTag=Eo.WarningTag,exports.BaseTextArea=Lo.BaseTextArea,exports.BaseTextInput=fo.BaseTextInput,exports.TextArea=Ao.TextArea,exports.TextInput=Ro.TextInput,exports.ToastProvider=Po.ToastProvider,exports.useToast=Po.useToast,exports.ToggleSwitch=Bo.ToggleSwitch,exports.ToggleSlider=wo.ToggleSlider,exports.Tooltip=Fo.Tooltip,exports.TooltipContent=No.TooltipContent,exports.TooltipTrigger=Do.TooltipTrigger,exports.PopupTip=Vo.PopupTip,exports.ScreenReaderOnly=yo.ScreenReaderOnly,exports.tokens=Oo,exports.tailwindPreset=Go.tailwindPreset,exports.useAnimatedDetails=Ho.useAnimatedDetails,exports.useAnimatedHeight=Wo.useAnimatedHeight,exports.useAnimatedHeightBetween=Uo.useAnimatedHeightBetween,exports.useAutoAnimatedHeight=Ko.useAutoAnimatedHeight,exports.useBrowserPreferences=Xo.useBrowserPreferences,exports.useIntersectionObserver=_o.useIntersectionObserver,exports.useLocalStorage=zo.useLocalStorage,exports.useMutationObserver=Qo.useMutationObserver,exports.usePreviousValue=Jo.usePreviousValue,exports.useProgressiveImg=Yo.useProgressiveImg,exports.useScreen=Zo.useScreen,exports.useScrollIntoView=$o.useScrollIntoView,exports.useAriaLiveRegion=er.useAriaLiveRegion,exports.useClickOutside=or.useClickOutside,exports.useFocusOutside=rr.useFocusOutside,exports.useElementDimensions=sr.useElementDimensions,exports.useId=tr.useId,exports.useKeyListener=nr.useKeyListener,exports.useListNavigation=ir.useListNavigation,exports.useSwipeGesture=ar.useSwipeGesture,exports.unicode=cr.unicode,exports.formatNumber=ur.formatNumber,exports.parseNumber=pr.parseNumber,exports.registerWithFodselsnummerMask=mr.registerWithFodselsnummerMask,exports.registerWithKontonummerMask=mr.registerWithKontonummerMask,exports.registerWithKortnummerMask=mr.registerWithKortnummerMask,exports.registerWithMasks=mr.registerWithMasks,exports.registerWithTelefonnummerMask=mr.registerWithTelefonnummerMask,exports.formatAvstand=lr.formatAvstand,exports.formatBytes=xr.formatBytes,exports.formatDate=dr.formatDate,exports.FODSELSNUMMER_REGEX=gr.FODSELSNUMMER_REGEX,exports.formatFodselsnummer=gr.formatFodselsnummer,exports.ORGANISASJONSNUMMER_REGEX=jr.ORGANISASJONSNUMMER_REGEX,exports.formatOrganisasjonsnummer=jr.formatOrganisasjonsnummer,exports.KONTONUMMER_REGEX=br.KONTONUMMER_REGEX,exports.formatKontonummer=br.formatKontonummer,exports.KORTNUMMER_REGEX=qr.KORTNUMMER_REGEX,exports.formatKortnummer=qr.formatKortnummer,exports.TELEFONNUMMER_REGEX=Ir.TELEFONNUMMER_REGEX,exports.formatTelefonnummer=Ir.formatTelefonnummer,exports.formatValuta=Tr.formatValuta,exports.getThemeAndDensity=kr.getThemeAndDensity,exports.mergeProps=Cr.mergeProps,exports.mergeRefs=hr.mergeRefs,exports.SlotComponent=Sr.SlotComponent,exports.isValidEpost=vr.isValidEpost,exports.isValidTelefonnummer=Mr.isValidTelefonnummer,exports.isValidRegistreringsnummer=Er.isValidRegistreringsnummer,exports.isValidChassisnummer=Lr.isValidChassisnummer,exports.isValidDogId=fr.isValidDogId,exports.isExactLength=Ar.isExactLength,exports.isInteger=Rr.isInteger,exports.isValidFodselsnummer=Pr.isValidFodselsnummer,exports.isValidOrganisasjonsnummer=Br.isValidOrganisasjonsnummer,exports.isValidName=wr.isValidName,exports.hasMinimumWords=Fr.hasMinimumWords,exports.hasNoIllegalCharacters=Nr.hasNoIllegalCharacters,exports.initTabListener=Dr.initTabListener,exports.getValuePair=Vr.getValuePair;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/accordion/Accordion.cjs"),o=require("./components/accordion/AccordionItem.cjs"),r=require("./components/breadcrumb/Breadcrumb.cjs"),s=require("./components/breadcrumb/BreadcrumbItem.cjs"),t=require("./components/button/Button.cjs"),n=require("./components/card/Card.cjs"),i=require("./components/card/CardImage.cjs"),a=require("./components/card/NavCard.cjs"),c=require("./components/card/TaskCard.cjs"),u=require("./components/card/InfoCard.cjs"),p=require("./components/checkbox/Checkbox.cjs"),m=require("./components/combobox/Combobox.cjs"),l=require("./components/cookie-consent/CookieConsent.cjs"),x=require("./components/cookie-consent/CookieConsentContext.cjs"),d=require("./components/datepicker/DatePicker.cjs"),g=require("./components/datepicker/validation.cjs"),j=require("./components/datepicker/utils.cjs"),b=require("./components/feedback/Feedback.cjs"),q=require("./components/feedback/presets.cjs"),I=require("./components/flex/Flex.cjs"),T=require("./components/description-list/DescriptionList.cjs"),k=require("./components/expander/ExpandablePanel.cjs"),C=require("./components/expander/Expander.cjs"),h=require("./components/expander/deprecated/ExpandSection.cjs"),S=require("./components/icon/Icon.cjs"),v=require("./components/icon/icons/animated/ArrowVerticalAnimated.cjs"),M=require("./components/icon/icons/animated/ArrowHorizontalAnimated.cjs"),E=require("./components/icon/icons/animated/PlusRemoveAnimated.cjs"),L=require("./components/icon/icons/ArrowDownIcon.cjs"),f=require("./components/icon/icons/ArrowLeftIcon.cjs"),A=require("./components/icon/icons/ArrowNorthEastIcon.cjs"),R=require("./components/icon/icons/ArrowRightIcon.cjs"),B=require("./components/icon/icons/ArrowUpIcon.cjs"),P=require("./components/icon/icons/CalendarIcon.cjs"),w=require("./components/icon/icons/CheckIcon.cjs"),F=require("./components/icon/icons/ChevronDownIcon.cjs"),N=require("./components/icon/icons/ChevronLeftIcon.cjs"),D=require("./components/icon/icons/ChevronRightIcon.cjs"),V=require("./components/icon/icons/ChevronUpIcon.cjs"),y=require("./components/icon/icons/CloseIcon.cjs"),O=require("./components/icon/icons/CopyIcon.cjs"),G=require("./components/icon/icons/DotsIcon.cjs"),H=require("./components/icon/icons/DragIcon.cjs"),W=require("./components/icon/icons/ErrorIcon.cjs"),U=require("./components/icon/icons/GreenCheckIcon.cjs"),K=require("./components/icon/icons/HamburgerIcon.cjs"),X=require("./components/icon/icons/InfoIcon.cjs"),_=require("./components/icon/icons/LinkIcon.cjs"),z=require("./components/icon/icons/MinusIcon.cjs"),Q=require("./components/icon/icons/OpenInNewIcon.cjs"),J=require("./components/icon/icons/PenIcon.cjs"),Y=require("./components/icon/icons/PlusIcon.cjs"),Z=require("./components/icon/icons/QuestionIcon.cjs"),$=require("./components/icon/icons/RedCrossIcon.cjs"),ee=require("./components/icon/icons/SearchIcon.cjs"),oe=require("./components/icon/icons/SuccessIcon.cjs"),re=require("./components/icon/icons/ThumbDownIcon.cjs"),se=require("./components/icon/icons/ThumbUpIcon.cjs"),te=require("./components/icon/icons/TrashCanIcon.cjs"),ne=require("./components/icon/icons/WarningIcon.cjs"),ie=require("./components/icon-button/IconButton.cjs"),ae=require("./components/image/Image.cjs"),ce=require("./components/input-group/FieldGroup.cjs"),ue=require("./components/input-group/InputGroup.cjs"),pe=require("./components/input-group/Label.cjs"),me=require("./components/input-group/SupportLabel.cjs"),le=require("./components/input-panel/CheckboxPanel.cjs"),xe=require("./components/input-panel/RadioPanel.cjs"),de=require("./components/input-panel/RadioPanelGroup.cjs"),ge=require("./components/link/Link.cjs"),je=require("./components/link/NavLink.cjs"),be=require("./components/link-list/LinkList.cjs"),qe=require("./components/list/List.cjs"),Ie=require("./components/list/ListItem.cjs"),Te=require("./components/loader/Loader.cjs"),ke=require("./components/loader/skeletons/SkeletonAnimation.cjs"),Ce=require("./components/loader/skeletons/SkeletonButton.cjs"),he=require("./components/loader/skeletons/SkeletonCheckboxGroup.cjs"),Se=require("./components/loader/skeletons/SkeletonElement.cjs"),ve=require("./components/loader/skeletons/SkeletonInput.cjs"),Me=require("./components/loader/skeletons/SkeletonRadioButtonGroup.cjs"),Ee=require("./components/loader/skeletons/SkeletonTable.cjs"),Le=require("./components/loader/skeletons/SkeletonTextArea.cjs"),fe=require("./components/logo/Logo.cjs"),Ae=require("./components/logo/LogoStamp.cjs"),Re=require("./components/logo/text-paths/ForsikringLevertAvFremtind.cjs"),Be=require("./components/logo/text-paths/FraSB1ogDNB.cjs"),Pe=require("./components/logo/text-paths/InnovasjonFraFremtind.cjs"),we=require("./components/logo/text-paths/TeknologiFraFremtind.cjs"),Fe=require("./components/logo/text-paths/VartEgetForsikringsselskap.cjs"),Ne=require("./components/logo/text-paths/VartForsikringsselskap.cjs"),De=require("./components/menu/Menu.cjs"),Ve=require("./components/menu/MenuItem.cjs"),ye=require("./components/menu/MenuItemCheckbox.cjs"),Oe=require("./components/menu/MenuDivider.cjs"),Ge=require("./components/message/Message.cjs"),He=require("./components/message/FormErrorMessage.cjs"),We=require("./components/modal/Modal.cjs"),Ue=require("./components/modal/useModal.cjs"),Ke=require("./components/pagination/Pagination.cjs"),Xe=require("./components/popover/Popover.cjs"),_e=require("./components/progress-bar/Countdown.cjs"),ze=require("./components/progress-bar/ProgressBar.cjs"),Qe=require("./components/radio-button/RadioButton.cjs"),Je=require("./components/radio-button/RadioButtonGroup.cjs"),Ye=require("./components/radio-button/BaseRadioButton.cjs"),Ze=require("./components/select/Select.cjs"),$e=require("./components/select/NativeSelect.cjs"),eo=require("./components/summary-table/SummaryTable.cjs"),oo=require("./components/summary-table/SummaryTableRow.cjs"),ro=require("./components/system-message/SystemMessage.cjs"),so=require("./components/table/DataTable.cjs"),to=require("./components/table/Table.cjs"),no=require("./components/table/TableBody.cjs"),io=require("./components/table/TableCaption.cjs"),ao=require("./components/table/TableCell.cjs"),co=require("./components/table/TableColumn.cjs"),uo=require("./components/table/TableColumnGroup.cjs"),po=require("./components/table/tableContext.cjs"),mo=require("./components/table/tableSectionContext.cjs"),lo=require("./components/table/TableFooter.cjs"),xo=require("./components/table/TableHead.cjs"),go=require("./components/table/TableHeader.cjs"),jo=require("./components/table/TablePagination.cjs"),bo=require("./components/table/TableRow.cjs"),qo=require("./components/table/ExpandableTableRow.cjs"),Io=require("./components/table/ExpandableTableRowController.cjs"),To=require("./components/table/utils.cjs"),ko=require("./components/tabs/NavTab.cjs"),Co=require("./components/tabs/NavTabs.cjs"),ho=require("./components/tabs/Tabs.cjs"),So=require("./components/tabs/TabList.cjs"),vo=require("./components/tabs/Tab.cjs"),Mo=require("./components/tabs/TabPanel.cjs"),Eo=require("./components/tag/Tag.cjs"),Lo=require("./components/text-input/BaseTextArea.cjs"),fo=require("./components/text-input/BaseTextInput.cjs"),Ao=require("./components/text-input/TextArea.cjs"),Ro=require("./components/text-input/TextInput.cjs"),Bo=require("./components/toast/toastContext.cjs"),Po=require("./components/toggle-switch/ToggleSwitch.cjs"),wo=require("./components/toggle-switch/ToggleSlider.cjs"),Fo=require("./components/tooltip/Tooltip.cjs"),No=require("./components/tooltip/TooltipContent.cjs"),Do=require("./components/tooltip/TooltipTrigger.cjs"),Vo=require("./components/tooltip/PopupTip.cjs"),yo=require("./components/ScreenReaderOnly.cjs"),Oo=require("./core/tokens.cjs"),Go=require("./hooks/useAnimatedDetails/useAnimatedDetails.cjs"),Ho=require("./hooks/useAnimatedHeight/useAnimatedHeight.cjs"),Wo=require("./hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs"),Uo=require("./hooks/useAnimatedHeight/useAutoAnimateHeight.cjs"),Ko=require("./hooks/useBrowserPreferences/useBrowserPreferences.cjs"),Xo=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),_o=require("./hooks/useLocalStorage/useLocalStorage.cjs"),zo=require("./hooks/useMutationObserver/useMutationObserver.cjs"),Qo=require("./hooks/usePreviousValue/usePreviousValue.cjs"),Jo=require("./hooks/useProgressiveImg/useProgressiveImg.cjs"),Yo=require("./hooks/useScreen/useScreen.cjs"),Zo=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),$o=require("./hooks/useAriaLiveRegion/useAriaLiveRegion.cjs"),er=require("./hooks/useClickOutside/useClickOutside.cjs"),or=require("./hooks/useFocusOutside/useFocusOutside.cjs"),rr=require("./hooks/useElementDimensions/useElementDimensions.cjs"),sr=require("./hooks/useId/useId.cjs"),tr=require("./hooks/useKeyListener/useKeyListener.cjs"),nr=require("./hooks/useListNavigation/useListNavigation.cjs"),ir=require("./hooks/useSwipeGesture/useSwipeGesture.cjs"),ar=require("../index-CaISwoxr.cjs"),cr=require("./utilities/formatters/util/formatNumber.cjs"),ur=require("./utilities/formatters/util/parseNumber.cjs"),pr=require("./utilities/formatters/util/registerWithMask.cjs"),mr=require("./utilities/formatters/avstand/formatAvstand.cjs"),lr=require("./utilities/formatters/bytes/formatBytes.cjs"),xr=require("./utilities/formatters/date/formatDate.cjs"),dr=require("./utilities/formatters/fodselsnummer/formatFodselsnummer.cjs"),gr=require("./utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs"),jr=require("./utilities/formatters/kontonummer/formatKontonummer.cjs"),br=require("./utilities/formatters/kortnummer/formatKortnummer.cjs"),qr=require("./utilities/formatters/telefonnummer/formatTelefonnummer.cjs"),Ir=require("./utilities/formatters/valuta/formatValuta.cjs"),Tr=require("./utilities/getThemeAndDensity.cjs"),kr=require("./utilities/polymorphism/mergeProps.cjs"),Cr=require("./utilities/polymorphism/mergeRefs.cjs"),hr=require("./utilities/polymorphism/SlotComponent.cjs"),Sr=require("./utilities/validators/isValidEpost/isValidEpost.cjs"),vr=require("./utilities/validators/isValidTelefonnummer/isValidTelefonnummer.cjs"),Mr=require("./utilities/validators/isValidRegistreringsnummer/isValidRegistreringsnummer.cjs"),Er=require("./utilities/validators/isValidChassisnummer/isValidChassisnummer.cjs"),Lr=require("./utilities/validators/isValidDogId/isValidDogId.cjs"),fr=require("./utilities/validators/isExactLength/isExactLength.cjs"),Ar=require("./utilities/validators/isInteger/isInteger.cjs"),Rr=require("./utilities/validators/isValidFodselsnummer/isValidFodselsnummer.cjs"),Br=require("./utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs"),Pr=require("./utilities/validators/isValidName/isValidName.cjs"),wr=require("./utilities/validators/hasMinimumWords/hasMinimumWords.cjs"),Fr=require("./utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs"),Nr=require("./utilities/tabListener.cjs"),Dr=require("./utilities/valuePair.cjs");exports.Accordion=e.Accordion,exports.AccordionItem=o.AccordionItem,exports.Breadcrumb=r.Breadcrumb,exports.BreadcrumbItem=s.BreadcrumbItem,exports.Button=t.Button,exports.PrimaryButton=t.PrimaryButton,exports.SecondaryButton=t.SecondaryButton,exports.TertiaryButton=t.TertiaryButton,exports.Card=n.Card,exports.CardImage=i.CardImage,exports.InfoBlock=a.InfoBlock,exports.NavCard=a.NavCard,exports.TaskCard=c.TaskCard,exports.InfoCard=u.InfoCard,exports.Checkbox=p.Checkbox,exports.Combobox=m.Combobox,exports.getComboboxValuePair=m.getComboboxValuePair,exports.CookieConsent=l.CookieConsent,exports.CookieConsentProvider=x.CookieConsentProvider,exports.useCookieConsent=x.useCookieConsent,exports.DatePicker=d.DatePicker,exports.isCorrectFormat=g.isCorrectFormat,exports.isWithinLowerBound=g.isWithinLowerBound,exports.isWithinUpperBound=g.isWithinUpperBound,exports.formatInput=j.formatInput,exports.isBlurTargetOutside=j.isBlurTargetOutside,exports.parseDateString=j.parseDateString,exports.Feedback=b.Feedback,exports.PRESETS=q.PRESETS,exports.Flex=I.Flex,exports.DescriptionDetail=T.DescriptionDetail,exports.DescriptionList=T.DescriptionList,exports.DescriptionTerm=T.DescriptionTerm,exports.ExpandablePanel=k.ExpandablePanel,exports.Expander=C.Expander,exports.ExpandSection=h.ExpandSection,exports.Icon=S.Icon,exports.ArrowVerticalAnimated=v.ArrowVerticalAnimated,exports.ArrowHorizontalAnimated=M.ArrowHorizontalAnimated,exports.PlusRemoveAnimated=E.PlusRemoveAnimated,exports.ArrowDownIcon=L.ArrowDownIcon,exports.ArrowLeftIcon=f.ArrowLeftIcon,exports.ArrowNorthEastIcon=A.ArrowNorthEastIcon,exports.ArrowRightIcon=R.ArrowRightIcon,exports.ArrowUpIcon=B.ArrowUpIcon,exports.CalendarIcon=P.CalendarIcon,exports.CheckIcon=w.CheckIcon,exports.ChevronDownIcon=F.ChevronDownIcon,exports.ChevronLeftIcon=N.ChevronLeftIcon,exports.ChevronRightIcon=D.ChevronRightIcon,exports.ChevronUpIcon=V.ChevronUpIcon,exports.CloseIcon=y.CloseIcon,exports.CopyIcon=O.CopyIcon,exports.DotsIcon=G.DotsIcon,exports.DragIcon=H.DragIcon,exports.ErrorIcon=W.ErrorIcon,exports.GreenCheckIcon=U.GreenCheckIcon,exports.HamburgerIcon=K.HamburgerIcon,exports.InfoIcon=X.InfoIcon,exports.LinkIcon=_.LinkIcon,exports.MinusIcon=z.MinusIcon,exports.OpenInNewIcon=Q.OpenInNewIcon,exports.PenIcon=J.PenIcon,exports.PlusIcon=Y.PlusIcon,exports.QuestionIcon=Z.QuestionIcon,exports.RedCrossIcon=$.RedCrossIcon,exports.SearchIcon=ee.SearchIcon,exports.SuccessIcon=oe.SuccessIcon,exports.ThumbDownIcon=re.ThumbDownIcon,exports.ThumbUpIcon=se.ThumbUpIcon,exports.TrashCanIcon=te.TrashCanIcon,exports.WarningIcon=ne.WarningIcon,exports.IconButton=ie.IconButton,exports.Image=ae.Image,exports.FieldGroup=ce.FieldGroup,exports.InputGroup=ue.InputGroup,exports.Label=pe.Label,exports.SupportLabel=me.SupportLabel,exports.CheckboxPanel=le.CheckboxPanel,exports.RadioPanel=xe.RadioPanel,exports.RadioPanelGroup=de.RadioPanelGroup,exports.Link=ge.Link,exports.NavLink=je.NavLink,exports.LinkList=be.LinkList,exports.List=qe.List,exports.OrderedList=qe.OrderedList,exports.UnorderedList=qe.UnorderedList,exports.CheckListItem=Ie.CheckListItem,exports.CrossListItem=Ie.CrossListItem,exports.ListItem=Ie.ListItem,exports.Loader=Te.Loader,exports.SkeletonAnimation=ke.SkeletonAnimation,exports.SkeletonButton=Ce.SkeletonButton,exports.SkeletonCheckboxGroup=he.SkeletonCheckboxGroup,exports.SkeletonElement=Se.SkeletonElement,exports.SkeletonInput=ve.SkeletonInput,exports.SkeletonRadioButtonGroup=Me.SkeletonRadioButtonGroup,exports.SkeletonTable=Ee.SkeletonTable,exports.SkeletonTableHeader=Ee.SkeletonTableHeader,exports.SkeletonTableRow=Ee.SkeletonTableRow,exports.SkeletonTextArea=Le.SkeletonTextArea,exports.Logo=fe.Logo,exports.LogoStamp=Ae.LogoStamp,exports.ForsikringLevertAvFremtind=Re.ForsikringLevertAvFremtind,exports.FraSB1ogDNB=Be.FraSB1ogDNB,exports.InnovasjonFraFremtind=Pe.InnovasjonFraFremtind,exports.TeknologiFraFremtind=we.TeknologiFraFremtind,exports.VartEgetForsikringsselskap=Fe.VartEgetForsikringsselskap,exports.VartForsikringsselskap=Ne.VartForsikringsselskap,exports.Menu=De.Menu,exports.MenuItem=Ve.MenuItem,exports.MenuItemCheckbox=ye.MenuItemCheckbox,exports.MenuDivider=Oe.MenuDivider,exports.ErrorMessage=Ge.ErrorMessage,exports.InfoMessage=Ge.InfoMessage,exports.SuccessMessage=Ge.SuccessMessage,exports.WarningMessage=Ge.WarningMessage,exports.FormErrorMessage=He.FormErrorMessage,exports.Modal=We.Modal,exports.ModalActions=We.ModalActions,exports.ModalBody=We.ModalBody,exports.ModalCloseButton=We.ModalCloseButton,exports.ModalContainer=We.ModalContainer,exports.ModalHeader=We.ModalHeader,exports.ModalOverlay=We.ModalOverlay,exports.ModalTitle=We.ModalTitle,exports.useModal=Ue.useModal,exports.Pagination=Ke.Pagination,exports.Popover=Xe.Popover,exports.Countdown=_e.Countdown,exports.ProgressBar=ze.ProgressBar,exports.RadioButton=Qe.RadioButton,exports.RadioButtonGroup=Je.RadioButtonGroup,exports.BaseRadioButton=Ye.BaseRadioButton,exports.Select=Ze.Select,exports.NativeSelect=$e.NativeSelect,exports.SummaryTable=eo.SummaryTable,exports.SummaryTableRow=oo.SummaryTableRow,exports.ErrorSystemMessage=ro.ErrorSystemMessage,exports.InfoSystemMessage=ro.InfoSystemMessage,exports.SuccessSystemMessage=ro.SuccessSystemMessage,exports.WarningSystemMessage=ro.WarningSystemMessage,exports.DataTable=so.DataTable,exports.Table=to.Table,exports.TableBody=no.TableBody,exports.TableCaption=io.TableCaption,exports.TableCell=ao.TableCell,exports.TableColumn=co.TableColumn,exports.TableColumnGroup=uo.TableColumnGroup,exports.TableContextProvider=po.TableContextProvider,exports.useTableContext=po.useTableContext,exports.TableSectionContextProvider=mo.TableSectionContextProvider,exports.useTableSectionContext=mo.useTableSectionContext,exports.TableFooter=lo.TableFooter,exports.TableHead=xo.TableHead,exports.TableHeader=go.TableHeader,exports.TablePagination=jo.TablePagination,exports.TableRow=bo.TableRow,exports.ExpandableTableRow=qo.ExpandableTableRow,exports.ExpandableTableRowController=Io.ExpandableTableRowController,exports.useSortableTableHeader=To.useSortableTableHeader,exports.NavTab=ko.NavTab,exports.NavTabs=Co.NavTabs,exports.Tabs=ho.Tabs,exports.TabList=So.TabList,exports.Tab=vo.Tab,exports.TabPanel=Mo.TabPanel,exports.ErrorTag=Eo.ErrorTag,exports.InfoTag=Eo.InfoTag,exports.SuccessTag=Eo.SuccessTag,exports.Tag=Eo.Tag,exports.WarningTag=Eo.WarningTag,exports.BaseTextArea=Lo.BaseTextArea,exports.BaseTextInput=fo.BaseTextInput,exports.TextArea=Ao.TextArea,exports.TextInput=Ro.TextInput,exports.ToastProvider=Bo.ToastProvider,exports.useToast=Bo.useToast,exports.ToggleSwitch=Po.ToggleSwitch,exports.ToggleSlider=wo.ToggleSlider,exports.Tooltip=Fo.Tooltip,exports.TooltipContent=No.TooltipContent,exports.TooltipTrigger=Do.TooltipTrigger,exports.PopupTip=Vo.PopupTip,exports.ScreenReaderOnly=yo.ScreenReaderOnly,exports.tokens=Oo,exports.useAnimatedDetails=Go.useAnimatedDetails,exports.useAnimatedHeight=Ho.useAnimatedHeight,exports.useAnimatedHeightBetween=Wo.useAnimatedHeightBetween,exports.useAutoAnimatedHeight=Uo.useAutoAnimatedHeight,exports.useBrowserPreferences=Ko.useBrowserPreferences,exports.useIntersectionObserver=Xo.useIntersectionObserver,exports.useLocalStorage=_o.useLocalStorage,exports.useMutationObserver=zo.useMutationObserver,exports.usePreviousValue=Qo.usePreviousValue,exports.useProgressiveImg=Jo.useProgressiveImg,exports.useScreen=Yo.useScreen,exports.useScrollIntoView=Zo.useScrollIntoView,exports.useAriaLiveRegion=$o.useAriaLiveRegion,exports.useClickOutside=er.useClickOutside,exports.useFocusOutside=or.useFocusOutside,exports.useElementDimensions=rr.useElementDimensions,exports.useId=sr.useId,exports.useKeyListener=tr.useKeyListener,exports.useListNavigation=nr.useListNavigation,exports.useSwipeGesture=ir.useSwipeGesture,exports.unicode=ar.unicode,exports.formatNumber=cr.formatNumber,exports.parseNumber=ur.parseNumber,exports.registerWithFodselsnummerMask=pr.registerWithFodselsnummerMask,exports.registerWithKontonummerMask=pr.registerWithKontonummerMask,exports.registerWithKortnummerMask=pr.registerWithKortnummerMask,exports.registerWithMasks=pr.registerWithMasks,exports.registerWithTelefonnummerMask=pr.registerWithTelefonnummerMask,exports.formatAvstand=mr.formatAvstand,exports.formatBytes=lr.formatBytes,exports.formatDate=xr.formatDate,exports.FODSELSNUMMER_REGEX=dr.FODSELSNUMMER_REGEX,exports.formatFodselsnummer=dr.formatFodselsnummer,exports.ORGANISASJONSNUMMER_REGEX=gr.ORGANISASJONSNUMMER_REGEX,exports.formatOrganisasjonsnummer=gr.formatOrganisasjonsnummer,exports.KONTONUMMER_REGEX=jr.KONTONUMMER_REGEX,exports.formatKontonummer=jr.formatKontonummer,exports.KORTNUMMER_REGEX=br.KORTNUMMER_REGEX,exports.formatKortnummer=br.formatKortnummer,exports.TELEFONNUMMER_REGEX=qr.TELEFONNUMMER_REGEX,exports.formatTelefonnummer=qr.formatTelefonnummer,exports.formatValuta=Ir.formatValuta,exports.getThemeAndDensity=Tr.getThemeAndDensity,exports.mergeProps=kr.mergeProps,exports.mergeRefs=Cr.mergeRefs,exports.SlotComponent=hr.SlotComponent,exports.isValidEpost=Sr.isValidEpost,exports.isValidTelefonnummer=vr.isValidTelefonnummer,exports.isValidRegistreringsnummer=Mr.isValidRegistreringsnummer,exports.isValidChassisnummer=Er.isValidChassisnummer,exports.isValidDogId=Lr.isValidDogId,exports.isExactLength=fr.isExactLength,exports.isInteger=Ar.isInteger,exports.isValidFodselsnummer=Rr.isValidFodselsnummer,exports.isValidOrganisasjonsnummer=Br.isValidOrganisasjonsnummer,exports.isValidName=Pr.isValidName,exports.hasMinimumWords=wr.hasMinimumWords,exports.hasNoIllegalCharacters=Fr.hasNoIllegalCharacters,exports.initTabListener=Nr.initTabListener,exports.getValuePair=Dr.getValuePair;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.cjs","sources":["../../../src/tailwind/colors.ts"],"sourcesContent":["/**\n * Do not edit directly\n * Generated on Thu, 09 Jan 2025 11:10:44 GMT\n */\n\nconst colors = {\n \"background-page\": \"var(--jkl-color-background-page)\",\n \"background-page-variant\": \"var(--jkl-color-background-page-variant)\",\n \"background-container\": \"var(--jkl-color-background-container)\",\n \"background-container-low\": \"var(--jkl-color-background-container-low)\",\n \"background-container-high\": \"var(--jkl-color-background-container-high)\",\n \"background-container-inverted\":\n \"var(--jkl-color-background-container-inverted)\",\n \"background-container-subdued\":\n \"var(--jkl-color-background-container-subdued)\",\n \"background-input-base\": \"var(--jkl-color-background-input-base)\",\n \"background-input-focus\": \"var(--jkl-color-background-input-focus)\",\n \"background-action\": \"var(--jkl-color-background-action)\",\n \"background-interactive\": \"var(--jkl-color-background-interactive)\",\n \"background-interactive-hover\":\n \"var(--jkl-color-background-interactive-hover)\",\n \"background-interactive-selected\":\n \"var(--jkl-color-background-interactive-selected)\",\n \"background-alert-neutral\": \"var(--jkl-color-background-alert-neutral)\",\n \"background-alert-info\": \"var(--jkl-color-background-alert-info)\",\n \"background-alert-success\": \"var(--jkl-color-background-alert-success)\",\n \"background-alert-warning\": \"var(--jkl-color-background-alert-warning)\",\n \"background-alert-error\": \"var(--jkl-color-background-alert-error)\",\n \"text-default\": \"var(--jkl-color-text-default)\",\n \"text-subdued\": \"var(--jkl-color-text-subdued)\",\n \"text-inverted\": \"var(--jkl-color-text-inverted)\",\n \"text-on-action\": \"var(--jkl-color-text-on-action)\",\n \"text-interactive\": \"var(--jkl-color-text-interactive)\",\n \"text-interactive-hover\": \"var(--jkl-color-text-interactive-hover)\",\n \"text-on-alert\": \"var(--jkl-color-text-on-alert)\",\n \"text-on-alert-subdued\": \"var(--jkl-color-text-on-alert-subdued)\",\n \"border-action\": \"var(--jkl-color-border-action)\",\n \"border-input\": \"var(--jkl-color-border-input)\",\n \"border-input-focus\": \"var(--jkl-color-border-input-focus)\",\n \"border-separator\": \"var(--jkl-color-border-separator)\",\n \"border-separator-strong\": \"var(--jkl-color-border-separator-strong)\",\n \"border-separator-hover\": \"var(--jkl-color-border-separator-hover)\",\n \"border-subdued\": \"var(--jkl-color-border-subdued)\",\n};\n\nexport default colors;\n"],"names":[],"mappings":"AAKA,4BAAe,CACX,kBAAmB,mCACnB,0BAA2B,2CAC3B,uBAAwB,wCACxB,2BAA4B,4CAC5B,4BAA6B,6CAC7B,gCACI,iDACJ,+BACI,gDACJ,wBAAyB,yCACzB,yBAA0B,0CAC1B,oBAAqB,qCACrB,yBAA0B,0CAC1B,+BACI,gDACJ,kCACI,mDACJ,2BAA4B,4CAC5B,wBAAyB,yCACzB,2BAA4B,4CAC5B,2BAA4B,4CAC5B,yBAA0B,0CAC1B,eAAgB,gCAChB,eAAgB,gCAChB,gBAAiB,iCACjB,iBAAkB,kCAClB,mBAAoB,oCACpB,yBAA0B,0CAC1B,gBAAiB,iCACjB,wBAAyB,yCACzB,gBAAiB,iCACjB,eAAgB,gCAChB,qBAAsB,sCACtB,mBAAoB,oCACpB,0BAA2B,2CAC3B,yBAA0B,0CAC1B,iBAAkB"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./tailwindPreset.cjs"),r=require("./plugins/jokulTypographyPlugin.cjs");exports.jokulPreset=e.jokulPreset,exports.jokulTypographyPlugin=r.jokulTypographyPlugin;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { jokulPreset } from './tailwindPreset.cjs';
2
+ export { jokulTypographyPlugin } from './plugins/jokulTypographyPlugin.cjs';
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("tailwindcss/plugin.js"),e=require("../../core/tokens.cjs"),{breakpoint:a,typography:m}=e,d=i((({addComponents:i})=>{i({".title":{...m.title.small,[`@media (min-width: ${a.medium})`]:{...m.title.base}},".title-small":{...m.titleSmall.small,[`@media (min-width: ${a.medium})`]:{...m.titleSmall.base}},".heading-1":{...m.heading_1.small,[`@media (min-width: ${a.medium})`]:{...m.heading_1.base}},".heading-2":{...m.heading_2.small,[`@media (min-width: ${a.medium})`]:{...m.heading_2.base}},".heading-3":{...m.heading_3.small,[`@media (min-width: ${a.medium})`]:{...m.heading_3.base}},".heading-4":{...m.heading_4.small,[`@media (min-width: ${a.medium})`]:{...m.heading_4.base}},".heading-5":{...m.heading_5.small,[`@media (min-width: ${a.medium})`]:{...m.heading_5.base}},".body":{...m.body.small,[`@media (min-width: ${a.medium})`]:{...m.body.base}},".small":{...m.small.small,[`@media (min-width: ${a.medium})`]:{...m.small.base}}})}));exports.jokulTypographyPlugin=d;
2
+ //# sourceMappingURL=jokulTypographyPlugin.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jokulTypographyPlugin.cjs","sources":["../../../../src/tailwind/plugins/jokulTypographyPlugin.ts"],"sourcesContent":["import plugin from \"tailwindcss/plugin.js\";\nimport tokens from \"../../core/tokens.js\";\n\nconst { breakpoint, typography } = tokens;\n\nexport const jokulTypographyPlugin = plugin(({ addComponents }) => {\n addComponents({\n \".title\": {\n ...typography.title.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.title.base,\n },\n },\n \".title-small\": {\n ...typography.titleSmall.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.titleSmall.base,\n },\n },\n \".heading-1\": {\n ...typography.heading_1.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.heading_1.base,\n },\n },\n \".heading-2\": {\n ...typography.heading_2.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.heading_2.base,\n },\n },\n \".heading-3\": {\n ...typography.heading_3.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.heading_3.base,\n },\n },\n \".heading-4\": {\n ...typography.heading_4.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.heading_4.base,\n },\n },\n \".heading-5\": {\n ...typography.heading_5.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.heading_5.base,\n },\n },\n \".body\": {\n ...typography.body.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.body.base,\n },\n },\n \".small\": {\n ...typography.small.small,\n [`@media (min-width: ${breakpoint.medium})`]: {\n ...typography.small.base,\n },\n },\n });\n});\n"],"names":["breakpoint","typography","tokens","jokulTypographyPlugin","plugin","addComponents","title","small","medium","base","titleSmall","heading_1","heading_2","heading_3","heading_4","heading_5","body"],"mappings":"6JAGQA,WAAAA,EAAYC,WAAAA,GAAeC,EAEtBC,EAAwBC,GAAO,EAAGC,cAAAA,MAC7BA,EAAA,CACV,SAAU,IACHJ,EAAWK,MAAMC,MACpB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWK,MAAMG,OAG5B,eAAgB,IACTR,EAAWS,WAAWH,MACzB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWS,WAAWD,OAGjC,aAAc,IACPR,EAAWU,UAAUJ,MACxB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWU,UAAUF,OAGhC,aAAc,IACPR,EAAWW,UAAUL,MACxB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWW,UAAUH,OAGhC,aAAc,IACPR,EAAWY,UAAUN,MACxB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWY,UAAUJ,OAGhC,aAAc,IACPR,EAAWa,UAAUP,MACxB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWa,UAAUL,OAGhC,aAAc,IACPR,EAAWc,UAAUR,MACxB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWc,UAAUN,OAGhC,QAAS,IACFR,EAAWe,KAAKT,MACnB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWe,KAAKP,OAG3B,SAAU,IACHR,EAAWM,MAAMA,MACpB,CAAC,sBAAsBP,EAAWQ,WAAY,IACvCP,EAAWM,MAAME,QAG/B"}
@@ -0,0 +1,4 @@
1
+ export declare const jokulTypographyPlugin: {
2
+ handler: import('tailwindcss/types/config.js').PluginCreator;
3
+ config?: Partial<import('tailwindcss/types/config.js').Config>;
4
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../core/tokens.cjs"),o=require("./colors.cjs"),r=require("./plugins/jokulTypographyPlugin.cjs"),t={theme:{colors:o,spacing:e.spacing,fontWeight:e.typography.weight,fontSize:e.typography.font.size,lineHeight:e.typography.line.height,screens:{sm:e.breakpoint.medium,md:e.breakpoint.large,lg:e.breakpoint.xl}},plugins:[r.jokulTypographyPlugin]};exports.jokulPreset=t;
2
+ //# sourceMappingURL=tailwindPreset.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwindPreset.cjs","sources":["../../../src/tailwind/tailwindPreset.ts"],"sourcesContent":["import type { Config } from \"tailwindcss\";\nimport tokens from \"../core/tokens.js\";\nimport colors from \"./colors.js\";\nimport { jokulTypographyPlugin } from \"./plugins/jokulTypographyPlugin.js\";\n\nexport const jokulPreset: Partial<Config> = {\n theme: {\n colors,\n spacing: tokens.spacing,\n fontWeight: tokens.typography.weight,\n fontSize: tokens.typography.font.size,\n lineHeight: tokens.typography.line.height,\n screens: {\n sm: tokens.breakpoint.medium,\n md: tokens.breakpoint.large,\n lg: tokens.breakpoint.xl,\n },\n },\n plugins: [jokulTypographyPlugin],\n};\n"],"names":["jokulPreset","theme","colors","spacing","tokens","fontWeight","typography","weight","fontSize","font","size","lineHeight","line","height","screens","sm","breakpoint","medium","md","large","lg","xl","plugins","jokulTypographyPlugin"],"mappings":"iMAKaA,EAA+B,CACxCC,MAAO,CAAAC,OACHA,EACAC,QAASC,EAAOD,QAChBE,WAAYD,EAAOE,WAAWC,OAC9BC,SAAUJ,EAAOE,WAAWG,KAAKC,KACjCC,WAAYP,EAAOE,WAAWM,KAAKC,OACnCC,QAAS,CACLC,GAAIX,EAAOY,WAAWC,OACtBC,GAAId,EAAOY,WAAWG,MACtBC,GAAIhB,EAAOY,WAAWK,KAG9BC,QAAS,CAACC,EAAAA"}
@@ -0,0 +1,2 @@
1
+ import { Config } from 'tailwindcss';
2
+ export declare const jokulPreset: Partial<Config>;
@@ -1 +1 @@
1
- {"version":3,"file":"formatAvstand.cjs","sources":["../../../../../src/utilities/formatters/avstand/formatAvstand.ts"],"sourcesContent":["import { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\nimport { parseNumber } from \"../util/parseNumber.js\";\n\nexport type LengthUnit =\n | \"kilometer\"\n | \"meter\"\n | \"decimeter\"\n | \"centimeter\"\n | \"millimeter\"\n | \"micrometer\"\n | \"nanometer\"\n | \"picometer\"\n | \"mile\"\n | \"yard\"\n | \"foot\"\n | \"inch\"\n | \"point\";\n\nexport interface FormatAvstandOptions extends FormatNumberOptions {\n /**\n * Lengdeenheten som skal vises for tallet, f.eks. \"kilometer\" eller \"foot\".\n * Hvis du _ikke_ ønsker å vise noen enhet bør du heller bruke `formatNumber` direkte.\n *\n * @default \"kilometer\"\n */\n unit?: LengthUnit;\n /**\n * Valgfritt suffiks som vises etter lengdeenheten. Ønsker du for eksempel\n * å vise \"km/år\" kan du setter \"kilometer\" som `unit` og \"/år\" som `suffix`.\n */\n suffix?: string;\n}\n\nconst defaultOptions: FormatNumberOptions = {\n style: \"unit\",\n unit: \"kilometer\",\n};\n\n/**\n * Formaterer en avstand med norsk locale på tallverdien.\n * @param input Verdien som skal formateres\n * @param options Lengdeenheten som skal vises for tallet, f.eks. \"kilometer\" eller \"foot\". Default: \"kilometer\". Kan også angi en valgfri suffix, f.eks. \"/år\".\n * @returns Den formaterte verdien.\n */\nexport function formatAvstand(\n input: string | number,\n options?: FormatAvstandOptions,\n) {\n const number = parseNumber(input);\n if (!number) {\n return input.toString();\n }\n\n const { suffix, ...formatOptions } = { ...defaultOptions, ...options };\n\n return [formatNumber(number, formatOptions), suffix].join(\"\");\n}\n"],"names":["defaultOptions","style","unit","input","options","number","parseNumber","toString","suffix","formatOptions","formatNumber","join"],"mappings":"iKAiCMA,EAAsC,CACxCC,MAAO,OACPC,KAAM,mCASM,SACZC,EACAC,GAEM,MAAAC,EAASC,cAAYH,GAC3B,IAAKE,EACD,OAAOF,EAAMI,WAGX,MAAEC,OAAAA,KAAWC,GAAkB,IAAKT,KAAmBI,GAEtD,MAAA,CAACM,eAAaL,EAAQI,GAAgBD,GAAQG,KAAK,GAC9D"}
1
+ {"version":3,"file":"formatAvstand.cjs","sources":["../../../../../src/utilities/formatters/avstand/formatAvstand.ts"],"sourcesContent":["import { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\nimport { parseNumber } from \"../util/parseNumber.js\";\n\nexport type LengthUnit =\n | \"kilometer\"\n | \"meter\"\n | \"decimeter\"\n | \"centimeter\"\n | \"millimeter\"\n | \"micrometer\"\n | \"nanometer\"\n | \"picometer\"\n | \"mile\"\n | \"yard\"\n | \"foot\"\n | \"inch\"\n | \"point\";\n\nexport interface FormatAvstandOptions extends FormatNumberOptions {\n /**\n * Lengdeenheten som skal vises for tallet, f.eks. \"kilometer\" eller \"foot\".\n * Hvis du _ikke_ ønsker å vise noen enhet bør du heller bruke `formatNumber` direkte.\n *\n * @default \"kilometer\"\n */\n unit?: LengthUnit;\n /**\n * Valgfritt suffiks som vises etter lengdeenheten. Ønsker du for eksempel\n * å vise \"km/år\" kan du setter \"kilometer\" som `unit` og \"/år\" som `suffix`.\n */\n suffix?: string;\n}\n\nconst defaultOptions: FormatNumberOptions = {\n style: \"unit\",\n unit: \"kilometer\",\n};\n\n/**\n * Formaterer en avstand med norsk locale på tallverdien.\n * @param input Verdien som skal formateres\n * @param options Lengdeenheten som skal vises for tallet, f.eks. \"kilometer\" eller \"foot\". Default: \"kilometer\". Kan også angi en valgfri suffix, f.eks. \"/år\".\n * @returns Den formaterte verdien.\n */\nexport function formatAvstand(\n input: string | number,\n options?: FormatAvstandOptions,\n) {\n const number = parseNumber(input);\n if (!number) {\n return input.toString();\n }\n\n const { suffix, ...formatOptions } = { ...defaultOptions, ...options };\n\n return [formatNumber(number, formatOptions), suffix].join(\"\");\n}\n"],"names":["defaultOptions","style","unit","input","options","number","parseNumber","toString","suffix","formatOptions","formatNumber","join"],"mappings":"iKAiCMA,EAAsC,CACxCC,MAAO,OACPC,KAAM,mCASM,SACZC,EACAC,GAEM,MAAAC,EAASC,cAAYH,GAC3B,IAAKE,EACD,OAAOF,EAAMI,WAGX,MAAEC,OAAAA,KAAWC,GAAkB,IAAKT,KAAmBI,GAEtD,MAAA,CAACM,EAAAA,aAAaL,EAAQI,GAAgBD,GAAQG,KAAK,GAC9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatBytes.cjs","sources":["../../../../../src/utilities/formatters/bytes/formatBytes.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\nimport { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\n\n/**\n * Formater et antall bytes som en lesbar verdi med enten KB eller MB som enhet.\n * @param bytes Antall bytes som skal vises i lesbar form\n * @param options Innstillinger for formateringen. Se https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options for detaljer.\n * @returns Den formaterte verdien\n */\nexport function formatBytes(\n bytes: number,\n options?: FormatNumberOptions,\n): string {\n if (bytes >= 100000) {\n return `${formatNumber(Number(bytes / 1000 / 1000), {\n maximumFractionDigits: 1,\n ...options,\n })}${unicode.nbsp}MB`;\n } else {\n return `${formatNumber(bytes / 1000, {\n maximumFractionDigits: 2,\n ...options,\n })}${unicode.nbsp}KB`;\n }\n}\n"],"names":["bytes","options","formatNumber","Number","maximumFractionDigits","unicode.nbsp","nbsp"],"mappings":"4LASgB,SACZA,EACAC,GAEA,OAAID,GAAS,IACF,GAAGE,EAAAA,aAAaC,OAAOH,EAAQ,IAAO,KAAO,CAChDI,sBAAuB,KACpBH,MACFI,EAAYC,SAEV,GAAGJ,EAAAA,aAAaF,EAAQ,IAAM,CACjCI,sBAAuB,KACpBH,MACFI,EAAYC,QAEzB"}
1
+ {"version":3,"file":"formatBytes.cjs","sources":["../../../../../src/utilities/formatters/bytes/formatBytes.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\nimport { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\n\n/**\n * Formater et antall bytes som en lesbar verdi med enten KB eller MB som enhet.\n * @param bytes Antall bytes som skal vises i lesbar form\n * @param options Innstillinger for formateringen. Se https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options for detaljer.\n * @returns Den formaterte verdien\n */\nexport function formatBytes(\n bytes: number,\n options?: FormatNumberOptions,\n): string {\n if (bytes >= 100000) {\n return `${formatNumber(Number(bytes / 1000 / 1000), {\n maximumFractionDigits: 1,\n ...options,\n })}${unicode.nbsp}MB`;\n } else {\n return `${formatNumber(bytes / 1000, {\n maximumFractionDigits: 2,\n ...options,\n })}${unicode.nbsp}KB`;\n }\n}\n"],"names":["bytes","options","formatNumber","Number","maximumFractionDigits","unicode.nbsp"],"mappings":"4LASgB,SACZA,EACAC,GAEA,OAAID,GAAS,IACF,GAAGE,EAAAA,aAAaC,OAAOH,EAAQ,IAAO,KAAO,CAChDI,sBAAuB,KACpBH,MACFI,WAEE,GAAGH,EAAAA,aAAaF,EAAQ,IAAM,CACjCI,sBAAuB,KACpBH,MACFI,UAEb"}