@fremtind/jokul 0.27.1 → 0.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/ScreenReaderOnly.cjs.map +1 -1
  3. package/build/cjs/components/accordion/Accordion.cjs.map +1 -1
  4. package/build/cjs/components/accordion/AccordionItem.cjs.map +1 -1
  5. package/build/cjs/components/breadcrumb/Breadcrumb.cjs.map +1 -1
  6. package/build/cjs/components/breadcrumb/BreadcrumbItem.cjs.map +1 -1
  7. package/build/cjs/components/button/Button.cjs.map +1 -1
  8. package/build/cjs/components/button/index.d.cts +1 -1
  9. package/build/cjs/components/button/types.cjs.map +1 -1
  10. package/build/cjs/components/card/Card.cjs.map +1 -1
  11. package/build/cjs/components/card/CardImage.cjs.map +1 -1
  12. package/build/cjs/components/card/InfoCard.cjs.map +1 -1
  13. package/build/cjs/components/card/NavCard.cjs.map +1 -1
  14. package/build/cjs/components/card/TaskCard.cjs.map +1 -1
  15. package/build/cjs/components/card/documentation/examples/FakturainfoExample.d.cts +1 -1
  16. package/build/cjs/components/card/documentation/examples/StatuskortExample.d.cts +1 -1
  17. package/build/cjs/components/card/types.cjs.map +1 -1
  18. package/build/cjs/components/card/utils.cjs.map +1 -1
  19. package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
  20. package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
  21. package/build/cjs/components/combobox/index.d.cts +1 -1
  22. package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
  23. package/build/cjs/components/cookie-consent/CookieConsentContext.cjs.map +1 -1
  24. package/build/cjs/components/cookie-consent/CookieConsentModal.cjs.map +1 -1
  25. package/build/cjs/components/cookie-consent/consents/CustomConsents.cjs.map +1 -1
  26. package/build/cjs/components/cookie-consent/consents/DefaultConsents.cjs.map +1 -1
  27. package/build/cjs/components/cookie-consent/consents/RequirementCheckbox.cjs.map +1 -1
  28. package/build/cjs/components/cookie-consent/consents/RequirementCheckbox.d.cts +1 -1
  29. package/build/cjs/components/cookie-consent/cookieConsentUtils.cjs.map +1 -1
  30. package/build/cjs/components/cookie-consent/cookieConsentUtils.d.cts +1 -1
  31. package/build/cjs/components/cookie-consent/index.d.cts +1 -1
  32. package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
  33. package/build/cjs/components/datepicker/internal/Calendar.cjs.map +1 -1
  34. package/build/cjs/components/datepicker/internal/calendarReducer.cjs.map +1 -1
  35. package/build/cjs/components/datepicker/internal/useCalendar.cjs.map +1 -1
  36. package/build/cjs/components/datepicker/internal/utils.cjs.map +1 -1
  37. package/build/cjs/components/datepicker/internal/utils.d.cts +2 -2
  38. package/build/cjs/components/datepicker/utils.cjs.map +1 -1
  39. package/build/cjs/components/description-list/DescriptionList.cjs.map +1 -1
  40. package/build/cjs/components/expander/ExpandSection.cjs.map +1 -1
  41. package/build/cjs/components/expander/Expander.cjs.map +1 -1
  42. package/build/cjs/components/feedback/Feedback.cjs.map +1 -1
  43. package/build/cjs/components/feedback/FeedbackSuccess.cjs.map +1 -1
  44. package/build/cjs/components/feedback/FeedbackValues.cjs.map +1 -1
  45. package/build/cjs/components/feedback/feedbackContext.cjs.map +1 -1
  46. package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
  47. package/build/cjs/components/feedback/followup/followupContext.cjs.map +1 -1
  48. package/build/cjs/components/feedback/followup/useFollowup.cjs.map +1 -1
  49. package/build/cjs/components/feedback/main-question/MainQuestion.cjs.map +1 -1
  50. package/build/cjs/components/feedback/main-question/mainQuestionContext.cjs.map +1 -1
  51. package/build/cjs/components/feedback/main-question/useMainQuestion.cjs.map +1 -1
  52. package/build/cjs/components/feedback/presets.cjs.map +1 -1
  53. package/build/cjs/components/feedback/questions/AddonQuestion.cjs.map +1 -1
  54. package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs.map +1 -1
  55. package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
  56. package/build/cjs/components/feedback/questions/RadioQuestion.cjs.map +1 -1
  57. package/build/cjs/components/feedback/questions/SmileyQuestion.cjs.map +1 -1
  58. package/build/cjs/components/feedback/questions/TextQuestion.cjs.map +1 -1
  59. package/build/cjs/components/feedback/questions/smileyUtils.cjs.map +1 -1
  60. package/build/cjs/components/feedback/utils.cjs.map +1 -1
  61. package/build/cjs/components/flex/Flex.cjs.map +1 -1
  62. package/build/cjs/components/icon/Icon.cjs.map +1 -1
  63. package/build/cjs/components/icon/icons/ArrowDownIcon.cjs.map +1 -1
  64. package/build/cjs/components/icon/icons/ArrowLeftIcon.cjs.map +1 -1
  65. package/build/cjs/components/icon/icons/ArrowNorthEastIcon.cjs.map +1 -1
  66. package/build/cjs/components/icon/icons/ArrowRightIcon.cjs.map +1 -1
  67. package/build/cjs/components/icon/icons/ArrowUpIcon.cjs.map +1 -1
  68. package/build/cjs/components/icon/icons/CalendarIcon.cjs.map +1 -1
  69. package/build/cjs/components/icon/icons/CheckIcon.cjs.map +1 -1
  70. package/build/cjs/components/icon/icons/ChevronDownIcon.cjs.map +1 -1
  71. package/build/cjs/components/icon/icons/ChevronLeftIcon.cjs.map +1 -1
  72. package/build/cjs/components/icon/icons/ChevronRightIcon.cjs.map +1 -1
  73. package/build/cjs/components/icon/icons/ChevronUpIcon.cjs.map +1 -1
  74. package/build/cjs/components/icon/icons/CloseIcon.cjs.map +1 -1
  75. package/build/cjs/components/icon/icons/CopyIcon.cjs.map +1 -1
  76. package/build/cjs/components/icon/icons/DotsIcon.cjs.map +1 -1
  77. package/build/cjs/components/icon/icons/DragIcon.cjs.map +1 -1
  78. package/build/cjs/components/icon/icons/GreenCheckIcon.cjs.map +1 -1
  79. package/build/cjs/components/icon/icons/HamburgerIcon.cjs.map +1 -1
  80. package/build/cjs/components/icon/icons/LinkIcon.cjs.map +1 -1
  81. package/build/cjs/components/icon/icons/MinusIcon.cjs.map +1 -1
  82. package/build/cjs/components/icon/icons/PenIcon.cjs.map +1 -1
  83. package/build/cjs/components/icon/icons/PlusIcon.cjs.map +1 -1
  84. package/build/cjs/components/icon/icons/QuestionIcon.cjs.map +1 -1
  85. package/build/cjs/components/icon/icons/RedCrossIcon.cjs.map +1 -1
  86. package/build/cjs/components/icon/icons/SearchIcon.cjs.map +1 -1
  87. package/build/cjs/components/icon/icons/ThumbDownIcon.cjs.map +1 -1
  88. package/build/cjs/components/icon/icons/ThumbUpIcon.cjs.map +1 -1
  89. package/build/cjs/components/icon/icons/TrashCanIcon.cjs.map +1 -1
  90. package/build/cjs/components/icon/icons/animated/ArrowHorizontalAnimated.cjs.map +1 -1
  91. package/build/cjs/components/icon/icons/animated/ArrowVerticalAnimated.cjs.map +1 -1
  92. package/build/cjs/components/icon/icons/animated/PlusRemoveAnimated.cjs.map +1 -1
  93. package/build/cjs/components/icon-button/IconButton.cjs.map +1 -1
  94. package/build/cjs/components/image/Image.cjs.map +1 -1
  95. package/build/cjs/components/image/useImageLoadingStatus.cjs.map +1 -1
  96. package/build/cjs/components/index.d.cts +1 -1
  97. package/build/cjs/components/input-group/FieldGroup.cjs.map +1 -1
  98. package/build/cjs/components/input-group/InputGroup.cjs.map +1 -1
  99. package/build/cjs/components/input-group/Label.cjs.map +1 -1
  100. package/build/cjs/components/input-group/SupportLabel.cjs.map +1 -1
  101. package/build/cjs/components/input-group/index.d.cts +2 -2
  102. package/build/cjs/components/link/Link.cjs.map +1 -1
  103. package/build/cjs/components/link/NavLink.cjs.map +1 -1
  104. package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
  105. package/build/cjs/components/loader/index.d.cts +2 -2
  106. package/build/cjs/components/loader/skeletons/SkeletonAnimation.cjs.map +1 -1
  107. package/build/cjs/components/loader/skeletons/SkeletonButton.cjs.map +1 -1
  108. package/build/cjs/components/loader/skeletons/SkeletonCheckboxGroup.cjs.map +1 -1
  109. package/build/cjs/components/loader/skeletons/SkeletonElement.cjs.map +1 -1
  110. package/build/cjs/components/loader/skeletons/SkeletonInput.cjs.map +1 -1
  111. package/build/cjs/components/loader/skeletons/SkeletonLabel.cjs.map +1 -1
  112. package/build/cjs/components/loader/skeletons/SkeletonRadioButtonGroup.cjs.map +1 -1
  113. package/build/cjs/components/loader/skeletons/SkeletonTable.cjs.map +1 -1
  114. package/build/cjs/components/loader/skeletons/SkeletonTextArea.cjs.map +1 -1
  115. package/build/cjs/components/loader/useDelayedRender.cjs.map +1 -1
  116. package/build/cjs/components/logo/Logo.cjs.map +1 -1
  117. package/build/cjs/components/logo/LogoStamp.cjs.map +1 -1
  118. package/build/cjs/components/logo/useTextSpinner.cjs.map +1 -1
  119. package/build/cjs/components/menu/Menu.cjs.map +1 -1
  120. package/build/cjs/components/menu/MenuItem.cjs.map +1 -1
  121. package/build/cjs/components/menu/MenuItemCheckbox.cjs.map +1 -1
  122. package/build/cjs/components/menu/index.d.cts +1 -1
  123. package/build/cjs/components/message/DismissButton.cjs.map +1 -1
  124. package/build/cjs/components/message/FormErrorMessage.cjs.map +1 -1
  125. package/build/cjs/components/message/Message.cjs.map +1 -1
  126. package/build/cjs/components/message/index.d.cts +2 -2
  127. package/build/cjs/components/modal/Modal.cjs.map +1 -1
  128. package/build/cjs/components/modal/index.d.cts +1 -1
  129. package/build/cjs/components/modal/useModal.cjs.map +1 -1
  130. package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
  131. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  132. package/build/cjs/components/progress-bar/Countdown.cjs.map +1 -1
  133. package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
  134. package/build/cjs/components/radio-button/RadioButton.cjs.map +1 -1
  135. package/build/cjs/components/radio-button/RadioButtonGroup.cjs.map +1 -1
  136. package/build/cjs/components/radio-button/radioGroupContext.cjs.map +1 -1
  137. package/build/cjs/components/radio-panel/RadioPanel.cjs +1 -1
  138. package/build/cjs/components/radio-panel/RadioPanel.cjs.map +1 -1
  139. package/build/cjs/components/radio-panel/RadioPanel.d.cts +1 -1
  140. package/build/cjs/components/select/NativeSelect.cjs.map +1 -1
  141. package/build/cjs/components/select/Select.cjs.map +1 -1
  142. package/build/cjs/components/select/select-utils.cjs.map +1 -1
  143. package/build/cjs/components/summary-table/SummaryTable.cjs.map +1 -1
  144. package/build/cjs/components/summary-table/SummaryTableRow.cjs.map +1 -1
  145. package/build/cjs/components/summary-table/mocks.cjs.map +1 -1
  146. package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
  147. package/build/cjs/components/system-message/common/DismissButton.cjs.map +1 -1
  148. package/build/cjs/components/system-message/common/MessageIcon.cjs.map +1 -1
  149. package/build/cjs/components/system-message/index.d.cts +1 -1
  150. package/build/cjs/components/table/DataTable.cjs.map +1 -1
  151. package/build/cjs/components/table/ExpandableTableRow.cjs.map +1 -1
  152. package/build/cjs/components/table/ExpandableTableRowController.cjs.map +1 -1
  153. package/build/cjs/components/table/Table.cjs.map +1 -1
  154. package/build/cjs/components/table/TableBody.cjs.map +1 -1
  155. package/build/cjs/components/table/TableCaption.cjs.map +1 -1
  156. package/build/cjs/components/table/TableCell.cjs.map +1 -1
  157. package/build/cjs/components/table/TableColumn.cjs.map +1 -1
  158. package/build/cjs/components/table/TableColumnGroup.cjs.map +1 -1
  159. package/build/cjs/components/table/TableFooter.cjs.map +1 -1
  160. package/build/cjs/components/table/TableHead.cjs.map +1 -1
  161. package/build/cjs/components/table/TableHeader.cjs.map +1 -1
  162. package/build/cjs/components/table/TablePagination.cjs.map +1 -1
  163. package/build/cjs/components/table/TableRow.cjs.map +1 -1
  164. package/build/cjs/components/table/index.d.cts +1 -1
  165. package/build/cjs/components/table/tableContext.cjs.map +1 -1
  166. package/build/cjs/components/table/tableSectionContext.cjs.map +1 -1
  167. package/build/cjs/components/table/utils.cjs.map +1 -1
  168. package/build/cjs/components/tabs/NavTab.cjs.map +1 -1
  169. package/build/cjs/components/tabs/NavTabs.cjs.map +1 -1
  170. package/build/cjs/components/tabs/Tab.cjs.map +1 -1
  171. package/build/cjs/components/tabs/TabList.cjs.map +1 -1
  172. package/build/cjs/components/tabs/Tabs.cjs.map +1 -1
  173. package/build/cjs/components/tag/Tag.cjs.map +1 -1
  174. package/build/cjs/components/text-input/BaseTextArea.cjs.map +1 -1
  175. package/build/cjs/components/text-input/BaseTextInput.cjs.map +1 -1
  176. package/build/cjs/components/text-input/TextArea.cjs.map +1 -1
  177. package/build/cjs/components/text-input/TextInput.cjs.map +1 -1
  178. package/build/cjs/components/toast/Toast.cjs.map +1 -1
  179. package/build/cjs/components/toast/ToastRegion.cjs.map +1 -1
  180. package/build/cjs/components/toast/ToastRegion.d.cts +1 -1
  181. package/build/cjs/components/toast/toastContext.cjs.map +1 -1
  182. package/build/cjs/components/toggle-switch/ToggleSlider.cjs.map +1 -1
  183. package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
  184. package/build/cjs/components/toggle-switch/usePillStyles.cjs.map +1 -1
  185. package/build/cjs/components/tooltip/PopupTip.cjs.map +1 -1
  186. package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
  187. package/build/cjs/components/tooltip/TooltipContent.cjs.map +1 -1
  188. package/build/cjs/components/tooltip/TooltipTrigger.cjs.map +1 -1
  189. package/build/cjs/components/tooltip/index.d.cts +1 -1
  190. package/build/cjs/hooks/index.d.cts +5 -5
  191. package/build/cjs/hooks/mediaQueryUtils.cjs.map +1 -1
  192. package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs.map +1 -1
  193. package/build/cjs/hooks/useAnimatedHeight/index.d.cts +1 -1
  194. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs.map +1 -1
  195. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
  196. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
  197. package/build/cjs/hooks/useAriaLiveRegion/index.d.cts +1 -1
  198. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.cjs.map +1 -1
  199. package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.cjs.map +1 -1
  200. package/build/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  201. package/build/cjs/hooks/useElementDimensions/index.d.cts +1 -1
  202. package/build/cjs/hooks/useElementDimensions/useElementDimensions.cjs.map +1 -1
  203. package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs.map +1 -1
  204. package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
  205. package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
  206. package/build/cjs/hooks/useListNavigation/useListNavigation.d.cts +1 -1
  207. package/build/cjs/hooks/useLocalStorage/useLocalStorage.cjs.map +1 -1
  208. package/build/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
  209. package/build/cjs/hooks/useProgressiveImg/index.d.cts +1 -1
  210. package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.cjs.map +1 -1
  211. package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.d.cts +1 -1
  212. package/build/cjs/hooks/useScreen/state.cjs.map +1 -1
  213. package/build/cjs/hooks/useScreen/useScreen.cjs.map +1 -1
  214. package/build/cjs/hooks/useScrollIntoView/index.d.cts +1 -1
  215. package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.cjs.map +1 -1
  216. package/build/cjs/utilities/formatters/avstand/formatAvstand.cjs.map +1 -1
  217. package/build/cjs/utilities/formatters/bytes/formatBytes.cjs.map +1 -1
  218. package/build/cjs/utilities/formatters/date/formatDate.cjs.map +1 -1
  219. package/build/cjs/utilities/formatters/fodselsnummer/formatFodselsnummer.cjs.map +1 -1
  220. package/build/cjs/utilities/formatters/index.d.cts +5 -5
  221. package/build/cjs/utilities/formatters/kontonummer/formatKontonummer.cjs.map +1 -1
  222. package/build/cjs/utilities/formatters/kortnummer/formatKortnummer.cjs.map +1 -1
  223. package/build/cjs/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs.map +1 -1
  224. package/build/cjs/utilities/formatters/telefonnummer/formatTelefonnummer.cjs.map +1 -1
  225. package/build/cjs/utilities/formatters/util/formatNumber.cjs.map +1 -1
  226. package/build/cjs/utilities/formatters/util/parseNumber.cjs.map +1 -1
  227. package/build/cjs/utilities/formatters/util/registerWithMask.cjs.map +1 -1
  228. package/build/cjs/utilities/formatters/valuta/formatValuta.cjs.map +1 -1
  229. package/build/cjs/utilities/getThemeAndDensity.cjs.map +1 -1
  230. package/build/cjs/utilities/polymorphism/SlotComponent.cjs.map +1 -1
  231. package/build/cjs/utilities/polymorphism/index.d.cts +1 -1
  232. package/build/cjs/utilities/polymorphism/mergeProps.cjs.map +1 -1
  233. package/build/cjs/utilities/polymorphism/mergeRefs.cjs.map +1 -1
  234. package/build/cjs/utilities/tabListener.cjs.map +1 -1
  235. package/build/cjs/utilities/validators/hasMinimumWords/hasMinimumWords.cjs.map +1 -1
  236. package/build/cjs/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs.map +1 -1
  237. package/build/cjs/utilities/validators/isValidChassisnummer/isValidChassisnummer.cjs.map +1 -1
  238. package/build/cjs/utilities/validators/isValidEpost/isValidEpost.cjs.map +1 -1
  239. package/build/cjs/utilities/validators/isValidFodselsnummer/isValidFodselsnummer.cjs.map +1 -1
  240. package/build/cjs/utilities/validators/isValidKortnummer/isValidKortnummer.cjs.map +1 -1
  241. package/build/cjs/utilities/validators/isValidName/isValidName.cjs.map +1 -1
  242. package/build/cjs/utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs.map +1 -1
  243. package/build/cjs/utilities/validators/isValidTelefonnummer/isValidTelefonnummer.cjs.map +1 -1
  244. package/build/es/components/ScreenReaderOnly.js.map +1 -1
  245. package/build/es/components/accordion/Accordion.js.map +1 -1
  246. package/build/es/components/accordion/AccordionItem.js.map +1 -1
  247. package/build/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  248. package/build/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  249. package/build/es/components/button/Button.js.map +1 -1
  250. package/build/es/components/button/index.d.ts +1 -1
  251. package/build/es/components/button/types.js.map +1 -1
  252. package/build/es/components/card/Card.js.map +1 -1
  253. package/build/es/components/card/CardImage.js.map +1 -1
  254. package/build/es/components/card/InfoCard.js.map +1 -1
  255. package/build/es/components/card/NavCard.js.map +1 -1
  256. package/build/es/components/card/TaskCard.js.map +1 -1
  257. package/build/es/components/card/documentation/examples/FakturainfoExample.d.ts +1 -1
  258. package/build/es/components/card/documentation/examples/StatuskortExample.d.ts +1 -1
  259. package/build/es/components/card/types.js.map +1 -1
  260. package/build/es/components/card/utils.js.map +1 -1
  261. package/build/es/components/checkbox/Checkbox.js.map +1 -1
  262. package/build/es/components/combobox/Combobox.js.map +1 -1
  263. package/build/es/components/combobox/index.d.ts +1 -1
  264. package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
  265. package/build/es/components/cookie-consent/CookieConsentContext.js.map +1 -1
  266. package/build/es/components/cookie-consent/CookieConsentModal.js.map +1 -1
  267. package/build/es/components/cookie-consent/consents/CustomConsents.js.map +1 -1
  268. package/build/es/components/cookie-consent/consents/DefaultConsents.js.map +1 -1
  269. package/build/es/components/cookie-consent/consents/RequirementCheckbox.d.ts +1 -1
  270. package/build/es/components/cookie-consent/consents/RequirementCheckbox.js.map +1 -1
  271. package/build/es/components/cookie-consent/cookieConsentUtils.d.ts +1 -1
  272. package/build/es/components/cookie-consent/cookieConsentUtils.js.map +1 -1
  273. package/build/es/components/cookie-consent/index.d.ts +1 -1
  274. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  275. package/build/es/components/datepicker/internal/Calendar.js.map +1 -1
  276. package/build/es/components/datepicker/internal/calendarReducer.js.map +1 -1
  277. package/build/es/components/datepicker/internal/useCalendar.js.map +1 -1
  278. package/build/es/components/datepicker/internal/utils.d.ts +2 -2
  279. package/build/es/components/datepicker/internal/utils.js.map +1 -1
  280. package/build/es/components/datepicker/utils.js.map +1 -1
  281. package/build/es/components/description-list/DescriptionList.js.map +1 -1
  282. package/build/es/components/expander/ExpandSection.js.map +1 -1
  283. package/build/es/components/expander/Expander.js.map +1 -1
  284. package/build/es/components/feedback/Feedback.js.map +1 -1
  285. package/build/es/components/feedback/FeedbackSuccess.js.map +1 -1
  286. package/build/es/components/feedback/FeedbackValues.js.map +1 -1
  287. package/build/es/components/feedback/feedbackContext.js.map +1 -1
  288. package/build/es/components/feedback/followup/Followup.js.map +1 -1
  289. package/build/es/components/feedback/followup/followupContext.js.map +1 -1
  290. package/build/es/components/feedback/followup/useFollowup.js.map +1 -1
  291. package/build/es/components/feedback/main-question/MainQuestion.js.map +1 -1
  292. package/build/es/components/feedback/main-question/mainQuestionContext.js.map +1 -1
  293. package/build/es/components/feedback/main-question/useMainQuestion.js.map +1 -1
  294. package/build/es/components/feedback/presets.js.map +1 -1
  295. package/build/es/components/feedback/questions/AddonQuestion.js.map +1 -1
  296. package/build/es/components/feedback/questions/CheckboxQuestion.js.map +1 -1
  297. package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
  298. package/build/es/components/feedback/questions/RadioQuestion.js.map +1 -1
  299. package/build/es/components/feedback/questions/SmileyQuestion.js.map +1 -1
  300. package/build/es/components/feedback/questions/TextQuestion.js.map +1 -1
  301. package/build/es/components/feedback/questions/smileyUtils.js.map +1 -1
  302. package/build/es/components/feedback/utils.js.map +1 -1
  303. package/build/es/components/flex/Flex.js.map +1 -1
  304. package/build/es/components/icon/Icon.js.map +1 -1
  305. package/build/es/components/icon/icons/ArrowDownIcon.js.map +1 -1
  306. package/build/es/components/icon/icons/ArrowLeftIcon.js.map +1 -1
  307. package/build/es/components/icon/icons/ArrowNorthEastIcon.js.map +1 -1
  308. package/build/es/components/icon/icons/ArrowRightIcon.js.map +1 -1
  309. package/build/es/components/icon/icons/ArrowUpIcon.js.map +1 -1
  310. package/build/es/components/icon/icons/CalendarIcon.js.map +1 -1
  311. package/build/es/components/icon/icons/CheckIcon.js.map +1 -1
  312. package/build/es/components/icon/icons/ChevronDownIcon.js.map +1 -1
  313. package/build/es/components/icon/icons/ChevronLeftIcon.js.map +1 -1
  314. package/build/es/components/icon/icons/ChevronRightIcon.js.map +1 -1
  315. package/build/es/components/icon/icons/ChevronUpIcon.js.map +1 -1
  316. package/build/es/components/icon/icons/CloseIcon.js.map +1 -1
  317. package/build/es/components/icon/icons/CopyIcon.js.map +1 -1
  318. package/build/es/components/icon/icons/DotsIcon.js.map +1 -1
  319. package/build/es/components/icon/icons/DragIcon.js.map +1 -1
  320. package/build/es/components/icon/icons/GreenCheckIcon.js.map +1 -1
  321. package/build/es/components/icon/icons/HamburgerIcon.js.map +1 -1
  322. package/build/es/components/icon/icons/LinkIcon.js.map +1 -1
  323. package/build/es/components/icon/icons/MinusIcon.js.map +1 -1
  324. package/build/es/components/icon/icons/PenIcon.js.map +1 -1
  325. package/build/es/components/icon/icons/PlusIcon.js.map +1 -1
  326. package/build/es/components/icon/icons/QuestionIcon.js.map +1 -1
  327. package/build/es/components/icon/icons/RedCrossIcon.js.map +1 -1
  328. package/build/es/components/icon/icons/SearchIcon.js.map +1 -1
  329. package/build/es/components/icon/icons/ThumbDownIcon.js.map +1 -1
  330. package/build/es/components/icon/icons/ThumbUpIcon.js.map +1 -1
  331. package/build/es/components/icon/icons/TrashCanIcon.js.map +1 -1
  332. package/build/es/components/icon/icons/animated/ArrowHorizontalAnimated.js.map +1 -1
  333. package/build/es/components/icon/icons/animated/ArrowVerticalAnimated.js.map +1 -1
  334. package/build/es/components/icon/icons/animated/PlusRemoveAnimated.js.map +1 -1
  335. package/build/es/components/icon-button/IconButton.js.map +1 -1
  336. package/build/es/components/image/Image.js.map +1 -1
  337. package/build/es/components/image/useImageLoadingStatus.js.map +1 -1
  338. package/build/es/components/index.d.ts +1 -1
  339. package/build/es/components/input-group/FieldGroup.js.map +1 -1
  340. package/build/es/components/input-group/InputGroup.js.map +1 -1
  341. package/build/es/components/input-group/Label.js.map +1 -1
  342. package/build/es/components/input-group/SupportLabel.js.map +1 -1
  343. package/build/es/components/input-group/index.d.ts +2 -2
  344. package/build/es/components/link/Link.js.map +1 -1
  345. package/build/es/components/link/NavLink.js.map +1 -1
  346. package/build/es/components/link-list/LinkList.js.map +1 -1
  347. package/build/es/components/loader/index.d.ts +2 -2
  348. package/build/es/components/loader/skeletons/SkeletonAnimation.js.map +1 -1
  349. package/build/es/components/loader/skeletons/SkeletonButton.js.map +1 -1
  350. package/build/es/components/loader/skeletons/SkeletonCheckboxGroup.js.map +1 -1
  351. package/build/es/components/loader/skeletons/SkeletonElement.js.map +1 -1
  352. package/build/es/components/loader/skeletons/SkeletonInput.js.map +1 -1
  353. package/build/es/components/loader/skeletons/SkeletonLabel.js.map +1 -1
  354. package/build/es/components/loader/skeletons/SkeletonRadioButtonGroup.js.map +1 -1
  355. package/build/es/components/loader/skeletons/SkeletonTable.js.map +1 -1
  356. package/build/es/components/loader/skeletons/SkeletonTextArea.js.map +1 -1
  357. package/build/es/components/loader/useDelayedRender.js.map +1 -1
  358. package/build/es/components/logo/Logo.js.map +1 -1
  359. package/build/es/components/logo/LogoStamp.js.map +1 -1
  360. package/build/es/components/logo/useTextSpinner.js.map +1 -1
  361. package/build/es/components/menu/Menu.js.map +1 -1
  362. package/build/es/components/menu/MenuItem.js.map +1 -1
  363. package/build/es/components/menu/MenuItemCheckbox.js.map +1 -1
  364. package/build/es/components/menu/index.d.ts +1 -1
  365. package/build/es/components/message/DismissButton.js.map +1 -1
  366. package/build/es/components/message/FormErrorMessage.js.map +1 -1
  367. package/build/es/components/message/Message.js.map +1 -1
  368. package/build/es/components/message/index.d.ts +2 -2
  369. package/build/es/components/modal/Modal.js.map +1 -1
  370. package/build/es/components/modal/index.d.ts +1 -1
  371. package/build/es/components/modal/useModal.js.map +1 -1
  372. package/build/es/components/pagination/Pagination.js.map +1 -1
  373. package/build/es/components/popover/Popover.js.map +1 -1
  374. package/build/es/components/progress-bar/Countdown.js.map +1 -1
  375. package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
  376. package/build/es/components/radio-button/RadioButton.js.map +1 -1
  377. package/build/es/components/radio-button/RadioButtonGroup.js.map +1 -1
  378. package/build/es/components/radio-button/radioGroupContext.js.map +1 -1
  379. package/build/es/components/radio-panel/RadioPanel.d.ts +1 -1
  380. package/build/es/components/radio-panel/RadioPanel.js +1 -1
  381. package/build/es/components/radio-panel/RadioPanel.js.map +1 -1
  382. package/build/es/components/select/NativeSelect.js.map +1 -1
  383. package/build/es/components/select/Select.js.map +1 -1
  384. package/build/es/components/select/select-utils.js.map +1 -1
  385. package/build/es/components/summary-table/SummaryTable.js.map +1 -1
  386. package/build/es/components/summary-table/SummaryTableRow.js.map +1 -1
  387. package/build/es/components/summary-table/mocks.js.map +1 -1
  388. package/build/es/components/system-message/SystemMessage.js.map +1 -1
  389. package/build/es/components/system-message/common/DismissButton.js.map +1 -1
  390. package/build/es/components/system-message/common/MessageIcon.js.map +1 -1
  391. package/build/es/components/system-message/index.d.ts +1 -1
  392. package/build/es/components/table/DataTable.js.map +1 -1
  393. package/build/es/components/table/ExpandableTableRow.js.map +1 -1
  394. package/build/es/components/table/ExpandableTableRowController.js.map +1 -1
  395. package/build/es/components/table/Table.js.map +1 -1
  396. package/build/es/components/table/TableBody.js.map +1 -1
  397. package/build/es/components/table/TableCaption.js.map +1 -1
  398. package/build/es/components/table/TableCell.js.map +1 -1
  399. package/build/es/components/table/TableColumn.js.map +1 -1
  400. package/build/es/components/table/TableColumnGroup.js.map +1 -1
  401. package/build/es/components/table/TableFooter.js.map +1 -1
  402. package/build/es/components/table/TableHead.js.map +1 -1
  403. package/build/es/components/table/TableHeader.js.map +1 -1
  404. package/build/es/components/table/TablePagination.js.map +1 -1
  405. package/build/es/components/table/TableRow.js.map +1 -1
  406. package/build/es/components/table/index.d.ts +1 -1
  407. package/build/es/components/table/tableContext.js.map +1 -1
  408. package/build/es/components/table/tableSectionContext.js.map +1 -1
  409. package/build/es/components/table/utils.js.map +1 -1
  410. package/build/es/components/tabs/NavTab.js.map +1 -1
  411. package/build/es/components/tabs/NavTabs.js.map +1 -1
  412. package/build/es/components/tabs/Tab.js.map +1 -1
  413. package/build/es/components/tabs/TabList.js.map +1 -1
  414. package/build/es/components/tabs/Tabs.js.map +1 -1
  415. package/build/es/components/tag/Tag.js.map +1 -1
  416. package/build/es/components/text-input/BaseTextArea.js.map +1 -1
  417. package/build/es/components/text-input/BaseTextInput.js.map +1 -1
  418. package/build/es/components/text-input/TextArea.js.map +1 -1
  419. package/build/es/components/text-input/TextInput.js.map +1 -1
  420. package/build/es/components/toast/Toast.js.map +1 -1
  421. package/build/es/components/toast/ToastRegion.d.ts +1 -1
  422. package/build/es/components/toast/ToastRegion.js.map +1 -1
  423. package/build/es/components/toast/toastContext.js.map +1 -1
  424. package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -1
  425. package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
  426. package/build/es/components/toggle-switch/usePillStyles.js.map +1 -1
  427. package/build/es/components/tooltip/PopupTip.js.map +1 -1
  428. package/build/es/components/tooltip/Tooltip.js.map +1 -1
  429. package/build/es/components/tooltip/TooltipContent.js.map +1 -1
  430. package/build/es/components/tooltip/TooltipTrigger.js.map +1 -1
  431. package/build/es/components/tooltip/index.d.ts +1 -1
  432. package/build/es/hooks/index.d.ts +5 -5
  433. package/build/es/hooks/mediaQueryUtils.js.map +1 -1
  434. package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js.map +1 -1
  435. package/build/es/hooks/useAnimatedHeight/index.d.ts +1 -1
  436. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -1
  437. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
  438. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
  439. package/build/es/hooks/useAriaLiveRegion/index.d.ts +1 -1
  440. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js.map +1 -1
  441. package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -1
  442. package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -1
  443. package/build/es/hooks/useElementDimensions/index.d.ts +1 -1
  444. package/build/es/hooks/useElementDimensions/useElementDimensions.js.map +1 -1
  445. package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -1
  446. package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
  447. package/build/es/hooks/useListNavigation/useListNavigation.d.ts +1 -1
  448. package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
  449. package/build/es/hooks/useLocalStorage/useLocalStorage.js.map +1 -1
  450. package/build/es/hooks/useMutationObserver/useMutationObserver.js.map +1 -1
  451. package/build/es/hooks/useProgressiveImg/index.d.ts +1 -1
  452. package/build/es/hooks/useProgressiveImg/useProgressiveImg.d.ts +1 -1
  453. package/build/es/hooks/useProgressiveImg/useProgressiveImg.js.map +1 -1
  454. package/build/es/hooks/useScreen/state.js.map +1 -1
  455. package/build/es/hooks/useScreen/useScreen.js.map +1 -1
  456. package/build/es/hooks/useScrollIntoView/index.d.ts +1 -1
  457. package/build/es/hooks/useSwipeGesture/useSwipeGesture.js.map +1 -1
  458. package/build/es/utilities/formatters/avstand/formatAvstand.js.map +1 -1
  459. package/build/es/utilities/formatters/bytes/formatBytes.js.map +1 -1
  460. package/build/es/utilities/formatters/date/formatDate.js.map +1 -1
  461. package/build/es/utilities/formatters/fodselsnummer/formatFodselsnummer.js.map +1 -1
  462. package/build/es/utilities/formatters/index.d.ts +5 -5
  463. package/build/es/utilities/formatters/kontonummer/formatKontonummer.js.map +1 -1
  464. package/build/es/utilities/formatters/kortnummer/formatKortnummer.js.map +1 -1
  465. package/build/es/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.js.map +1 -1
  466. package/build/es/utilities/formatters/telefonnummer/formatTelefonnummer.js.map +1 -1
  467. package/build/es/utilities/formatters/util/formatNumber.js.map +1 -1
  468. package/build/es/utilities/formatters/util/parseNumber.js.map +1 -1
  469. package/build/es/utilities/formatters/util/registerWithMask.js.map +1 -1
  470. package/build/es/utilities/formatters/valuta/formatValuta.js.map +1 -1
  471. package/build/es/utilities/getThemeAndDensity.js.map +1 -1
  472. package/build/es/utilities/polymorphism/SlotComponent.js.map +1 -1
  473. package/build/es/utilities/polymorphism/index.d.ts +1 -1
  474. package/build/es/utilities/polymorphism/mergeProps.js.map +1 -1
  475. package/build/es/utilities/polymorphism/mergeRefs.js.map +1 -1
  476. package/build/es/utilities/tabListener.js.map +1 -1
  477. package/build/es/utilities/validators/hasMinimumWords/hasMinimumWords.js.map +1 -1
  478. package/build/es/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.js.map +1 -1
  479. package/build/es/utilities/validators/isValidChassisnummer/isValidChassisnummer.js.map +1 -1
  480. package/build/es/utilities/validators/isValidEpost/isValidEpost.js.map +1 -1
  481. package/build/es/utilities/validators/isValidFodselsnummer/isValidFodselsnummer.js.map +1 -1
  482. package/build/es/utilities/validators/isValidKortnummer/isValidKortnummer.js.map +1 -1
  483. package/build/es/utilities/validators/isValidName/isValidName.js.map +1 -1
  484. package/build/es/utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.js.map +1 -1
  485. package/build/es/utilities/validators/isValidTelefonnummer/isValidTelefonnummer.js.map +1 -1
  486. package/package.json +2 -2
  487. package/styles/components/button/button.css +2 -2
  488. package/styles/components/button/button.min.css +1 -1
  489. package/styles/components/checkbox/checkbox.css +4 -4
  490. package/styles/components/checkbox/checkbox.min.css +1 -1
  491. package/styles/components/feedback/feedback.css +2 -2
  492. package/styles/components/feedback/feedback.min.css +1 -1
  493. package/styles/components/input-group/input-group.css +2 -2
  494. package/styles/components/input-group/input-group.min.css +1 -1
  495. package/styles/components/loader/loader.css +6 -6
  496. package/styles/components/loader/loader.min.css +1 -1
  497. package/styles/components/loader/skeleton-loader.css +5 -5
  498. package/styles/components/loader/skeleton-loader.min.css +1 -1
  499. package/styles/components/message/message.css +2 -2
  500. package/styles/components/message/message.min.css +1 -1
  501. package/styles/components/progress-bar/progress-bar.css +2 -2
  502. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  503. package/styles/components/radio-button/radio-button.css +2 -2
  504. package/styles/components/radio-button/radio-button.min.css +1 -1
  505. package/styles/components/radio-panel/radio-panel.css +2 -637
  506. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  507. package/styles/components/radio-panel/radio-panel.scss +0 -10
  508. package/styles/components/system-message/system-message.css +2 -2
  509. package/styles/components/system-message/system-message.min.css +1 -1
  510. package/styles/components/toast/toast.css +4 -4
  511. package/styles/components/toast/toast.min.css +1 -1
  512. package/styles/styles.css +35 -42
  513. package/styles/styles.min.css +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenReaderOnly.cjs","sources":["../../../src/components/ScreenReaderOnly.tsx"],"sourcesContent":["import React, { FC } from \"react\";\nimport { WithChildren } from \"../core/types.js\";\n\nexport interface ScreenReaderOnlyProps extends WithChildren {\n showOnFocus?: boolean;\n}\n\nexport const ScreenReaderOnly: FC<ScreenReaderOnlyProps> = ({ children, showOnFocus, ...rest }) => (\n <span {...rest} className={`jkl-sr-only${showOnFocus ? \" jkl-sr-only--focusable\" : \"\"}`}>\n {children}\n </span>\n);\n"],"names":["children","showOnFocus","rest","jsx","className"],"mappings":"8IAO2D,EAAGA,SAAAA,EAAUC,YAAAA,KAAgBC,KACpFC,EAAAA,IAAC,OAAM,IAAGD,EAAME,UAAW,eAAcH,EAAc,0BAA4B,IAC9ED,SAAAA"}
1
+ {"version":3,"file":"ScreenReaderOnly.cjs","sources":["../../../src/components/ScreenReaderOnly.tsx"],"sourcesContent":["import React, { FC } from \"react\";\nimport { WithChildren } from \"../core/types.js\";\n\nexport interface ScreenReaderOnlyProps extends WithChildren {\n showOnFocus?: boolean;\n}\n\nexport const ScreenReaderOnly: FC<ScreenReaderOnlyProps> = ({\n children,\n showOnFocus,\n ...rest\n}) => (\n <span\n {...rest}\n className={`jkl-sr-only${showOnFocus ? \" jkl-sr-only--focusable\" : \"\"}`}\n >\n {children}\n </span>\n);\n"],"names":["children","showOnFocus","rest","jsx","className"],"mappings":"8IAO2D,EACvDA,SAAAA,EACAC,YAAAA,KACGC,KAEHC,EAAAA,IAAC,OAAA,IACOD,EACJE,UAAW,eAAcH,EAAc,0BAA4B,IAElED,SAAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.cjs","sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\n\nexport interface AccordionProps extends WithChildren {\n className?: string;\n density?: Density;\n id?: string;\n}\n\nexport const Accordion: FC<AccordionProps> = ({ className, density, id, ...rest }) => {\n return (\n <section\n role=\"group\"\n data-testid=\"jkl-accordion\"\n className={clsx(\"jkl-accordion\", className)}\n data-density={density}\n id={id}\n {...rest}\n />\n );\n};\n"],"names":["className","density","id","rest","jsx","role","clsx"],"mappings":"+KAU6C,EAAGA,UAAAA,EAAWC,QAAAA,EAASC,GAAAA,KAAOC,KAEnEC,EAAAA,IAAC,UAAA,CACGC,KAAK,QACL,cAAY,gBACZL,UAAWM,EAAAA,KAAK,gBAAiBN,GACjC,eAAcC,EACdC,GAAAA,KACIC"}
1
+ {"version":3,"file":"Accordion.cjs","sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\n\nexport interface AccordionProps extends WithChildren {\n className?: string;\n density?: Density;\n id?: string;\n}\n\nexport const Accordion: FC<AccordionProps> = ({\n className,\n density,\n id,\n ...rest\n}) => {\n return (\n <section\n role=\"group\"\n data-testid=\"jkl-accordion\"\n className={clsx(\"jkl-accordion\", className)}\n data-density={density}\n id={id}\n {...rest}\n />\n );\n};\n"],"names":["className","density","id","rest","jsx","role","clsx"],"mappings":"+KAU6C,EACzCA,UAAAA,EACAC,QAAAA,EACAC,GAAAA,KACGC,KAGCC,EAAAA,IAAC,UAAA,CACGC,KAAK,QACL,cAAY,gBACZL,UAAWM,EAAAA,KAAK,gBAAiBN,GACjC,eAAcC,EACdC,GAAAA,KACIC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionItem.cjs","sources":["../../../../src/components/accordion/AccordionItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC, useState } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\nimport { useAnimatedDetails } from \"../../hooks/useAnimatedDetails/useAnimatedDetails.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\n\nexport interface AccordionItemProps extends WithChildren {\n title: string;\n startExpanded?: boolean;\n className?: string;\n onClick?: (e: React.MouseEvent, isOpen: boolean) => void;\n id?: string;\n}\n\nexport const AccordionItem: FC<AccordionItemProps> = ({\n children,\n title,\n className,\n startExpanded = false,\n onClick,\n id,\n ...rest\n}) => {\n const [isOpen, setIsOpen] = useState(startExpanded);\n const [expandOnMount] = useState(() => startExpanded);\n\n const { detailsRef, summaryRef, contentRef, onSummaryClick } = useAnimatedDetails({\n onOpenChange: (open, e) => {\n setIsOpen(open);\n if (onClick) {\n onClick(e, open);\n }\n },\n isExpanded: expandOnMount,\n });\n\n return (\n <details\n data-testid=\"jkl-accordion-item\"\n {...rest}\n className={clsx(\"jkl-accordion-item\", className)}\n ref={detailsRef}\n id={id}\n >\n <summary\n data-testid=\"jkl-accordion-item__title\"\n className=\"jkl-accordion-item__title\"\n onClick={onSummaryClick}\n ref={summaryRef}\n >\n {title}\n <ArrowVerticalAnimated\n variant=\"inherit\"\n className=\"jkl-accordion-item__arrow\"\n pointingDown={!isOpen}\n bold={isOpen}\n />\n </summary>\n <div\n data-testid=\"jkl-accordion-item__content-wrapper\"\n className=\"jkl-accordion-item__content-wrapper\"\n ref={contentRef}\n >\n <div className=\"jkl-accordion-item__content\">{children}</div>\n </div>\n </details>\n );\n};\n"],"names":["children","title","className","startExpanded","onClick","id","rest","isOpen","setIsOpen","useState","expandOnMount","detailsRef","summaryRef","contentRef","onSummaryClick","useAnimatedDetails","onOpenChange","open","e","isExpanded","jsxs","clsx","ref","jsx","ArrowVerticalAnimated","variant","pointingDown","bold"],"mappings":"uUAcqD,EACjDA,SAAAA,EACAC,MAAAA,EACAC,UAAAA,EACAC,cAAAA,GAAgB,EAChBC,QAAAA,EACAC,GAAAA,KACGC,MAEH,MAAOC,EAAQC,GAAaC,WAASN,IAC9BO,GAAiBD,YAAS,IAAMN,KAE/BQ,WAAAA,EAAYC,WAAAA,EAAYC,WAAAA,EAAYC,eAAAA,GAAmBC,EAAAA,mBAAmB,CAC9EC,aAAc,CAACC,EAAMC,KACjBV,EAAUS,GACNb,GACAA,EAAQc,EAAGD,EAAI,EAGvBE,WAAYT,IAIZ,OAAAU,EAAAA,KAAC,UAAA,CACG,cAAY,wBACRd,EACJJ,UAAWmB,EAAAA,KAAK,qBAAsBnB,GACtCoB,IAAKX,EACLN,GAAAA,EAEAL,SAAA,CAAAoB,EAAAA,KAAC,UAAA,CACG,cAAY,4BACZlB,UAAU,4BACVE,QAASU,EACTQ,IAAKV,EAEJZ,SAAA,CAAAC,EACDsB,EAAAA,IAACC,EAAAA,sBAAA,CACGC,QAAQ,UACRvB,UAAU,4BACVwB,cAAenB,EACfoB,KAAMpB,OAGdgB,EAAAA,IAAC,MAAA,CACG,cAAY,sCACZrB,UAAU,sCACVoB,IAAKT,EAELb,SAACuB,EAAAA,IAAA,MAAA,CAAIrB,UAAU,8BAA+BF,SAAAA,QAClD"}
1
+ {"version":3,"file":"AccordionItem.cjs","sources":["../../../../src/components/accordion/AccordionItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC, useState } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\nimport { useAnimatedDetails } from \"../../hooks/useAnimatedDetails/useAnimatedDetails.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\n\nexport interface AccordionItemProps extends WithChildren {\n title: string;\n startExpanded?: boolean;\n className?: string;\n onClick?: (e: React.MouseEvent, isOpen: boolean) => void;\n id?: string;\n}\n\nexport const AccordionItem: FC<AccordionItemProps> = ({\n children,\n title,\n className,\n startExpanded = false,\n onClick,\n id,\n ...rest\n}) => {\n const [isOpen, setIsOpen] = useState(startExpanded);\n const [expandOnMount] = useState(() => startExpanded);\n\n const { detailsRef, summaryRef, contentRef, onSummaryClick } =\n useAnimatedDetails({\n onOpenChange: (open, e) => {\n setIsOpen(open);\n if (onClick) {\n onClick(e, open);\n }\n },\n isExpanded: expandOnMount,\n });\n\n return (\n <details\n data-testid=\"jkl-accordion-item\"\n {...rest}\n className={clsx(\"jkl-accordion-item\", className)}\n ref={detailsRef}\n id={id}\n >\n <summary\n data-testid=\"jkl-accordion-item__title\"\n className=\"jkl-accordion-item__title\"\n onClick={onSummaryClick}\n ref={summaryRef}\n >\n {title}\n <ArrowVerticalAnimated\n variant=\"inherit\"\n className=\"jkl-accordion-item__arrow\"\n pointingDown={!isOpen}\n bold={isOpen}\n />\n </summary>\n <div\n data-testid=\"jkl-accordion-item__content-wrapper\"\n className=\"jkl-accordion-item__content-wrapper\"\n ref={contentRef}\n >\n <div className=\"jkl-accordion-item__content\">{children}</div>\n </div>\n </details>\n );\n};\n"],"names":["children","title","className","startExpanded","onClick","id","rest","isOpen","setIsOpen","useState","expandOnMount","detailsRef","summaryRef","contentRef","onSummaryClick","useAnimatedDetails","onOpenChange","open","e","isExpanded","jsxs","clsx","ref","jsx","ArrowVerticalAnimated","variant","pointingDown","bold"],"mappings":"uUAcqD,EACjDA,SAAAA,EACAC,MAAAA,EACAC,UAAAA,EACAC,cAAAA,GAAgB,EAChBC,QAAAA,EACAC,GAAAA,KACGC,MAEH,MAAOC,EAAQC,GAAaC,WAASN,IAC9BO,GAAiBD,YAAS,IAAMN,KAE/BQ,WAAAA,EAAYC,WAAAA,EAAYC,WAAAA,EAAYC,eAAAA,GACxCC,EAAAA,mBAAmB,CACfC,aAAc,CAACC,EAAMC,KACjBV,EAAUS,GACNb,GACAA,EAAQc,EAAGD,EAAI,EAGvBE,WAAYT,IAIhB,OAAAU,EAAAA,KAAC,UAAA,CACG,cAAY,wBACRd,EACJJ,UAAWmB,EAAAA,KAAK,qBAAsBnB,GACtCoB,IAAKX,EACLN,GAAAA,EAEAL,SAAA,CAAAoB,EAAAA,KAAC,UAAA,CACG,cAAY,4BACZlB,UAAU,4BACVE,QAASU,EACTQ,IAAKV,EAEJZ,SAAA,CAAAC,EACDsB,EAAAA,IAACC,EAAAA,sBAAA,CACGC,QAAQ,UACRvB,UAAU,4BACVwB,cAAenB,EACfoB,KAAMpB,OAGdgB,EAAAA,IAAC,MAAA,CACG,cAAY,sCACZrB,UAAU,sCACVoB,IAAKT,EAELb,SAACuB,EAAAA,IAAA,MAAA,CAAIrB,UAAU,8BAA+BF,SAAAA,QAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumb.cjs","sources":["../../../../src/components/breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { BreadcrumbItemProps } from \"./BreadcrumbItem.js\";\n\nexport interface BreadcrumbProps extends WithChildren {\n className?: string;\n density?: Density;\n}\n\nexport const Breadcrumb = ({ className, children, density, ...rest }: BreadcrumbProps): JSX.Element => {\n const numberOfChildren = React.Children.count(children);\n return (\n <nav aria-label=\"Sti\" className={clsx(\"jkl-breadcrumb\", className)} data-layout-density={density} {...rest}>\n <ol className=\"jkl-breadcrumb__list\">\n {React.Children.map(children, (child, index) => {\n const isLastElement = index + 1 === numberOfChildren;\n return (\n <>\n {React.isValidElement<BreadcrumbItemProps>(child)\n ? React.cloneElement<BreadcrumbItemProps>(child, {\n isLastElement,\n })\n : child}\n {!isLastElement && (\n <span className=\"jkl-breadcrumb__item-separator\" aria-hidden=\"true\">\n ›\n </span>\n )}\n </>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"names":["className","children","density","rest","numberOfChildren","React","Children","count","jsx","clsx","map","child","index","isLastElement","jsxs","Fragment","isValidElement","cloneElement"],"mappings":"mMAU0B,EAAGA,UAAAA,EAAWC,SAAAA,EAAUC,QAAAA,KAAYC,MAC1D,MAAMC,EAAmBC,EAAMC,SAASC,MAAMN,GAE1C,OAAAO,MAAC,OAAI,aAAW,MAAMR,UAAWS,EAAKA,KAAA,iBAAkBT,GAAY,sBAAqBE,KAAaC,EAClGF,SAAAO,EAAAA,IAAC,KAAG,CAAAR,UAAU,uBACTC,SAAAI,EAAMC,SAASI,IAAIT,GAAU,CAACU,EAAOC,KAC5B,MAAAC,EAAgBD,EAAQ,IAAMR,EACpC,OAESU,EAAAA,KAAAC,WAAA,CAAAd,SAAA,CAAAI,EAAMW,eAAoCL,GACrCN,EAAMY,aAAkCN,EAAO,CAC3CE,cAAAA,IAEJF,GACJE,GACGL,EAAAA,IAAA,OAAA,CAAKR,UAAU,iCAAiC,cAAY,OAAOC,SAEpE,QAER,OAIhB"}
1
+ {"version":3,"file":"Breadcrumb.cjs","sources":["../../../../src/components/breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { BreadcrumbItemProps } from \"./BreadcrumbItem.js\";\n\nexport interface BreadcrumbProps extends WithChildren {\n className?: string;\n density?: Density;\n}\n\nexport const Breadcrumb = ({\n className,\n children,\n density,\n ...rest\n}: BreadcrumbProps): JSX.Element => {\n const numberOfChildren = React.Children.count(children);\n return (\n <nav\n aria-label=\"Sti\"\n className={clsx(\"jkl-breadcrumb\", className)}\n data-layout-density={density}\n {...rest}\n >\n <ol className=\"jkl-breadcrumb__list\">\n {React.Children.map(children, (child, index) => {\n const isLastElement = index + 1 === numberOfChildren;\n return (\n <>\n {React.isValidElement<BreadcrumbItemProps>(child)\n ? React.cloneElement<BreadcrumbItemProps>(\n child,\n {\n isLastElement,\n },\n )\n : child}\n {!isLastElement && (\n <span\n className=\"jkl-breadcrumb__item-separator\"\n aria-hidden=\"true\"\n >\n ›\n </span>\n )}\n </>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"names":["className","children","density","rest","numberOfChildren","React","Children","count","jsx","clsx","map","child","index","isLastElement","jsxs","Fragment","isValidElement","cloneElement"],"mappings":"mMAU0B,EACtBA,UAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,MAEH,MAAMC,EAAmBC,EAAMC,SAASC,MAAMN,GAE1C,OAAAO,EAAAA,IAAC,MAAA,CACG,aAAW,MACXR,UAAWS,EAAAA,KAAK,iBAAkBT,GAClC,sBAAqBE,KACjBC,EAEJF,SAAAO,EAAAA,IAAC,KAAG,CAAAR,UAAU,uBACTC,SAAAI,EAAMC,SAASI,IAAIT,GAAU,CAACU,EAAOC,KAC5B,MAAAC,EAAgBD,EAAQ,IAAMR,EACpC,OAESU,EAAAA,KAAAC,WAAA,CAAAd,SAAA,CAAMI,EAAAW,eAAoCL,GACrCN,EAAMY,aACFN,EACA,CACIE,cAAAA,IAGRF,GACJE,GACEL,EAAAA,IAAC,OAAA,CACGR,UAAU,iCACV,cAAY,OACfC,SAAA,QAIT,OAGZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.cjs","sources":["../../../../src/components/breadcrumb/BreadcrumbItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\n\nexport interface BreadcrumbItemProps extends WithChildren {\n className?: string;\n /**\n * Settes automatisk av Breadcrumb\n * @default false\n */\n isLastElement?: boolean;\n}\n\nexport const BreadcrumbItem = ({ className, children, isLastElement, ...rest }: BreadcrumbItemProps): JSX.Element => {\n return (\n <li className={clsx(\"jkl-breadcrumb__item\", className)} {...rest}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement<AnchorHTMLAttributes<HTMLAnchorElement>>(child)) {\n return React.cloneElement<AnchorHTMLAttributes<HTMLAnchorElement>>(child, {\n \"aria-current\": isLastElement ? \"page\" : undefined,\n className: \"jkl-link\",\n });\n } else {\n return child;\n }\n })}\n </li>\n );\n};\n"],"names":["className","children","isLastElement","rest","jsx","clsx","React","Children","map","child","isValidElement","cloneElement"],"mappings":"uMAa8B,EAAGA,UAAAA,EAAWC,SAAAA,EAAUC,cAAAA,KAAkBC,KAE/DC,EAAAA,IAAA,KAAA,CAAGJ,UAAWK,EAAAA,KAAK,uBAAwBL,MAAgBG,EACvDF,SAAMK,EAAAC,SAASC,IAAIP,GAAWQ,GACvBH,EAAMI,eAAwDD,GACvDH,EAAMK,aAAsDF,EAAO,CACtE,eAAgBP,EAAgB,YAAS,EACzCF,UAAW,aAGRS"}
1
+ {"version":3,"file":"BreadcrumbItem.cjs","sources":["../../../../src/components/breadcrumb/BreadcrumbItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\n\nexport interface BreadcrumbItemProps extends WithChildren {\n className?: string;\n /**\n * Settes automatisk av Breadcrumb\n * @default false\n */\n isLastElement?: boolean;\n}\n\nexport const BreadcrumbItem = ({\n className,\n children,\n isLastElement,\n ...rest\n}: BreadcrumbItemProps): JSX.Element => {\n return (\n <li className={clsx(\"jkl-breadcrumb__item\", className)} {...rest}>\n {React.Children.map(children, (child) => {\n if (\n React.isValidElement<\n AnchorHTMLAttributes<HTMLAnchorElement>\n >(child)\n ) {\n return React.cloneElement<\n AnchorHTMLAttributes<HTMLAnchorElement>\n >(child, {\n \"aria-current\": isLastElement ? \"page\" : undefined,\n className: \"jkl-link\",\n });\n } else {\n return child;\n }\n })}\n </li>\n );\n};\n"],"names":["className","children","isLastElement","rest","jsx","clsx","React","Children","map","child","isValidElement","cloneElement"],"mappings":"uMAa8B,EAC1BA,UAAAA,EACAC,SAAAA,EACAC,cAAAA,KACGC,KAGEC,EAAAA,IAAA,KAAA,CAAGJ,UAAWK,EAAAA,KAAK,uBAAwBL,MAAgBG,EACvDF,SAAMK,EAAAC,SAASC,IAAIP,GAAWQ,GAEvBH,EAAMI,eAEJD,GAEKH,EAAMK,aAEXF,EAAO,CACL,eAAgBP,EAAgB,YAAS,EACzCF,UAAW,aAGRS"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.cjs","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import cn from \"clsx\";\nimport React, { ButtonHTMLAttributes, type TouchEvent, useCallback } from \"react\";\nimport { useAriaLiveRegion } from \"../../hooks/useAriaLiveRegion/useAriaLiveRegion.js\";\nimport { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { Loader } from \"../loader/Loader.js\";\nimport { ButtonComponent, ButtonProps } from \"./types.js\";\n\nexport const Button = React.forwardRef(function Button<ElementType extends React.ElementType = \"button\">(\n props: ButtonProps<ElementType>,\n ref?: PolymorphicRef<ElementType>,\n) {\n const {\n as = \"button\",\n children,\n className,\n density,\n onTouchStart,\n loader,\n icon,\n iconPosition = \"left\",\n iconLeft,\n iconRight,\n variant = \"secondary\",\n ...rest\n } = props;\n\n const Component = as;\n\n const handleTouch = useCallback(\n (event: TouchEvent<HTMLButtonElement>) => {\n onTouchStart && onTouchStart(event);\n\n const target = event.target as HTMLButtonElement;\n if (target && !target.disabled && event.targetTouches.length) {\n const Xcoord = event.targetTouches[0].clientX - target.getBoundingClientRect().x;\n const Ycoord = event.targetTouches[0].clientY - target.getBoundingClientRect().y;\n target.style.setProperty(\"--jkl-touch-xcoord\", Xcoord.toPrecision(4) + \"px\");\n target.style.setProperty(\"--jkl-touch-ycoord\", Ycoord.toPrecision(4) + \"px\");\n target.classList.add(\"jkl-button--pressed\");\n\n setTimeout(() => {\n target.classList.remove(\"jkl-button--pressed\");\n target.style.removeProperty(\"--jkl-touch-xcoord\");\n target.style.removeProperty(\"--jkl-touch-ycoord\");\n }, 400);\n }\n },\n [onTouchStart],\n );\n\n const ariaLive = useAriaLiveRegion(loader?.showLoader);\n const showLoader = Boolean(children) && Boolean(loader?.showLoader);\n\n return (\n <Component\n {...ariaLive}\n data-loading={showLoader}\n data-density={density}\n className={cn(\"jkl-button\", \"jkl-button--\" + variant, className)}\n disabled={as === \"button\" ? loader?.showLoader : undefined}\n onTouchStart={handleTouch}\n {...rest}\n ref={ref}\n >\n <div className=\"jkl-button__label\">\n {iconLeft && iconLeft}\n {icon && iconPosition === \"left\" && icon}\n {children && <span className=\"jkl-button__text\">{children}</span>}\n {iconRight && iconRight}\n {icon && iconPosition === \"right\" && icon}\n </div>\n\n {children && (\n <Loader\n className=\"jkl-button__loader\"\n variant=\"medium\"\n textDescription={loader?.textDescription || \"Vennligst vent\"}\n aria-hidden={!loader?.showLoader}\n />\n )}\n </Component>\n );\n}) as ButtonComponent;\n\nexport function PrimaryButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = { ...props, variant: \"primary\" } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function SecondaryButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = { ...props, variant: \"secondary\" } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function TertiaryButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = { ...props, variant: \"tertiary\" } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function GhostButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"loader\">,\n) {\n const buttonProps = { ...props, variant: \"ghost\" } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n"],"names":["Button","React","forwardRef","props","ref","as","children","className","density","onTouchStart","loader","icon","iconPosition","iconLeft","iconRight","variant","rest","Component","handleTouch","useCallback","event","target","disabled","targetTouches","length","Xcoord","clientX","getBoundingClientRect","x","Ycoord","clientY","y","style","setProperty","toPrecision","classList","add","setTimeout","remove","removeProperty","ariaLive","useAriaLiveRegion","showLoader","jsxs","cn","jsx","Loader","textDescription","buttonProps"],"mappings":"mRAOaA,EAASC,EAAMC,YAAW,SACnCC,EACAC,GAEM,MACFC,GAAAA,EAAK,SACLC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EACAC,aAAAA,EACAC,OAAAA,EACAC,KAAAA,EACAC,aAAAA,EAAe,OACfC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EAAU,eACPC,GACHb,EAEEc,EAAYZ,EAEZa,EAAcC,EAAAA,aACfC,IACGX,GAAgBA,EAAaW,GAE7B,MAAMC,EAASD,EAAMC,OACrB,GAAIA,IAAWA,EAAOC,UAAYF,EAAMG,cAAcC,OAAQ,CACpD,MAAAC,EAASL,EAAMG,cAAc,GAAGG,QAAUL,EAAOM,wBAAwBC,EACzEC,EAAST,EAAMG,cAAc,GAAGO,QAAUT,EAAOM,wBAAwBI,EAC/EV,EAAOW,MAAMC,YAAY,qBAAsBR,EAAOS,YAAY,GAAK,MACvEb,EAAOW,MAAMC,YAAY,qBAAsBJ,EAAOK,YAAY,GAAK,MAChEb,EAAAc,UAAUC,IAAI,uBAErBC,YAAW,KACAhB,EAAAc,UAAUG,OAAO,uBACjBjB,EAAAW,MAAMO,eAAe,sBACrBlB,EAAAW,MAAMO,eAAe,qBAAoB,GACjD,IACP,IAEJ,CAAC9B,IAGC+B,EAAWC,EAAAA,kBAAkB,MAAA/B,SAAAA,EAAQgC,YACrCA,IAAqBpC,KAAqB,MAAAI,IAAAA,EAAQgC,YAGpD,OAAAC,EAAAA,KAAC1B,EAAA,IACOuB,EACJ,eAAcE,EACd,eAAclC,EACdD,UAAWqC,EAAAA,KAAG,aAAc,eAAiB7B,EAASR,GACtDe,SAAiB,WAAPjB,EAAkB,MAAAK,OAAA,EAAAA,EAAQgC,gBAAa,EACjDjC,aAAcS,KACVF,EACJZ,IAAAA,EAEAE,SAAA,CAACqC,EAAAA,KAAA,MAAA,CAAIpC,UAAU,oBACVD,SAAA,CAAYO,GAAAA,EACZF,GAAyB,SAAjBC,GAA2BD,EACnCL,GAAYuC,EAAAA,IAAC,OAAK,CAAAtC,UAAU,mBAAoBD,SAAAA,IAChDQ,GAAaA,EACbH,GAAyB,UAAjBC,GAA4BD,KAGxCL,GACGuC,EAAAA,IAACC,EAAAA,OAAA,CACGvC,UAAU,qBACVQ,QAAQ,SACRgC,iBAAiB,MAAArC,SAAAA,EAAQqC,kBAAmB,iBAC5C,gBAAc,MAAArC,GAAAA,EAAQgC,gBAK1C,yCA0BO,SACHvC,GAEA,MAAM6C,EAAc,IAAK7C,EAAOY,QAAS,SAClC,OAAA8B,EAAAA,IAAC7C,EAAQ,IAAGgD,GACvB,wBA7BO,SACH7C,GAGA,MAAM6C,EAAc,IAAK7C,EAAOY,QAAS,WAClC,OAAA8B,EAAAA,IAAC7C,EAAQ,IAAGgD,GACvB,0BAEO,SACH7C,GAGA,MAAM6C,EAAc,IAAK7C,EAAOY,QAAS,aAClC,OAAA8B,EAAAA,IAAC7C,EAAQ,IAAGgD,GACvB,yBAEO,SACH7C,GAGA,MAAM6C,EAAc,IAAK7C,EAAOY,QAAS,YAClC,OAAA8B,EAAAA,IAAC7C,EAAQ,IAAGgD,GACvB"}
1
+ {"version":3,"file":"Button.cjs","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import cn from \"clsx\";\nimport React, {\n ButtonHTMLAttributes,\n type TouchEvent,\n useCallback,\n} from \"react\";\nimport { useAriaLiveRegion } from \"../../hooks/useAriaLiveRegion/useAriaLiveRegion.js\";\nimport { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { Loader } from \"../loader/Loader.js\";\nimport { ButtonComponent, ButtonProps } from \"./types.js\";\n\nexport const Button = React.forwardRef(function Button<\n ElementType extends React.ElementType = \"button\",\n>(props: ButtonProps<ElementType>, ref?: PolymorphicRef<ElementType>) {\n const {\n as = \"button\",\n children,\n className,\n density,\n onTouchStart,\n loader,\n icon,\n iconPosition = \"left\",\n iconLeft,\n iconRight,\n variant = \"secondary\",\n ...rest\n } = props;\n\n const Component = as;\n\n const handleTouch = useCallback(\n (event: TouchEvent<HTMLButtonElement>) => {\n onTouchStart && onTouchStart(event);\n\n const target = event.target as HTMLButtonElement;\n if (target && !target.disabled && event.targetTouches.length) {\n const Xcoord =\n event.targetTouches[0].clientX -\n target.getBoundingClientRect().x;\n const Ycoord =\n event.targetTouches[0].clientY -\n target.getBoundingClientRect().y;\n target.style.setProperty(\n \"--jkl-touch-xcoord\",\n Xcoord.toPrecision(4) + \"px\",\n );\n target.style.setProperty(\n \"--jkl-touch-ycoord\",\n Ycoord.toPrecision(4) + \"px\",\n );\n target.classList.add(\"jkl-button--pressed\");\n\n setTimeout(() => {\n target.classList.remove(\"jkl-button--pressed\");\n target.style.removeProperty(\"--jkl-touch-xcoord\");\n target.style.removeProperty(\"--jkl-touch-ycoord\");\n }, 400);\n }\n },\n [onTouchStart],\n );\n\n const ariaLive = useAriaLiveRegion(loader?.showLoader);\n const showLoader = Boolean(children) && Boolean(loader?.showLoader);\n\n return (\n <Component\n {...ariaLive}\n data-loading={showLoader}\n data-density={density}\n className={cn(\"jkl-button\", \"jkl-button--\" + variant, className)}\n disabled={as === \"button\" ? loader?.showLoader : undefined}\n onTouchStart={handleTouch}\n {...rest}\n ref={ref}\n >\n <div className=\"jkl-button__label\">\n {iconLeft && iconLeft}\n {icon && iconPosition === \"left\" && icon}\n {children && (\n <span className=\"jkl-button__text\">{children}</span>\n )}\n {iconRight && iconRight}\n {icon && iconPosition === \"right\" && icon}\n </div>\n\n {children && (\n <Loader\n className=\"jkl-button__loader\"\n variant=\"medium\"\n textDescription={\n loader?.textDescription || \"Vennligst vent\"\n }\n aria-hidden={!loader?.showLoader}\n />\n )}\n </Component>\n );\n}) as ButtonComponent;\n\nexport function PrimaryButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = {\n ...props,\n variant: \"primary\",\n } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function SecondaryButton<\n ElementType extends React.ElementType = \"button\",\n>(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = {\n ...props,\n variant: \"secondary\",\n } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function TertiaryButton<\n ElementType extends React.ElementType = \"button\",\n>(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = {\n ...props,\n variant: \"tertiary\",\n } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function GhostButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"loader\">,\n) {\n const buttonProps = {\n ...props,\n variant: \"ghost\",\n } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n"],"names":["Button","React","forwardRef","props","ref","as","children","className","density","onTouchStart","loader","icon","iconPosition","iconLeft","iconRight","variant","rest","Component","handleTouch","useCallback","event","target","disabled","targetTouches","length","Xcoord","clientX","getBoundingClientRect","x","Ycoord","clientY","y","style","setProperty","toPrecision","classList","add","setTimeout","remove","removeProperty","ariaLive","useAriaLiveRegion","showLoader","jsxs","cn","jsx","Loader","textDescription","buttonProps"],"mappings":"mRAWaA,EAASC,EAAMC,YAAW,SAErCC,EAAiCC,GACzB,MACFC,GAAAA,EAAK,SACLC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EACAC,aAAAA,EACAC,OAAAA,EACAC,KAAAA,EACAC,aAAAA,EAAe,OACfC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EAAU,eACPC,GACHb,EAEEc,EAAYZ,EAEZa,EAAcC,EAAAA,aACfC,IACGX,GAAgBA,EAAaW,GAE7B,MAAMC,EAASD,EAAMC,OACrB,GAAIA,IAAWA,EAAOC,UAAYF,EAAMG,cAAcC,OAAQ,CACpD,MAAAC,EACFL,EAAMG,cAAc,GAAGG,QACvBL,EAAOM,wBAAwBC,EAC7BC,EACFT,EAAMG,cAAc,GAAGO,QACvBT,EAAOM,wBAAwBI,EACnCV,EAAOW,MAAMC,YACT,qBACAR,EAAOS,YAAY,GAAK,MAE5Bb,EAAOW,MAAMC,YACT,qBACAJ,EAAOK,YAAY,GAAK,MAErBb,EAAAc,UAAUC,IAAI,uBAErBC,YAAW,KACAhB,EAAAc,UAAUG,OAAO,uBACjBjB,EAAAW,MAAMO,eAAe,sBACrBlB,EAAAW,MAAMO,eAAe,qBAAoB,GACjD,IACP,IAEJ,CAAC9B,IAGC+B,EAAWC,EAAAA,kBAAkB,MAAA/B,SAAAA,EAAQgC,YACrCA,IAAqBpC,KAAqB,MAAAI,IAAAA,EAAQgC,YAGpD,OAAAC,EAAAA,KAAC1B,EAAA,IACOuB,EACJ,eAAcE,EACd,eAAclC,EACdD,UAAWqC,EAAAA,KAAG,aAAc,eAAiB7B,EAASR,GACtDe,SAAiB,WAAPjB,EAAkB,MAAAK,OAAA,EAAAA,EAAQgC,gBAAa,EACjDjC,aAAcS,KACVF,EACJZ,IAAAA,EAEAE,SAAA,CAACqC,EAAAA,KAAA,MAAA,CAAIpC,UAAU,oBACVD,SAAA,CAAYO,GAAAA,EACZF,GAAyB,SAAjBC,GAA2BD,EACnCL,GACGuC,EAAAA,IAAC,OAAK,CAAAtC,UAAU,mBAAoBD,SAAAA,IAEvCQ,GAAaA,EACbH,GAAyB,UAAjBC,GAA4BD,KAGxCL,GACGuC,EAAAA,IAACC,EAAAA,OAAA,CACGvC,UAAU,qBACVQ,QAAQ,SACRgC,iBACI,MAAArC,SAAAA,EAAQqC,kBAAmB,iBAE/B,gBAAc,MAAArC,GAAAA,EAAQgC,gBAK1C,yCAuCO,SACHvC,GAEA,MAAM6C,EAAc,IACb7C,EACHY,QAAS,SAEN,OAAA8B,EAAAA,IAAC7C,EAAQ,IAAGgD,GACvB,wBA7CO,SACH7C,GAGA,MAAM6C,EAAc,IACb7C,EACHY,QAAS,WAEN,OAAA8B,EAAAA,IAAC7C,EAAQ,IAAGgD,GACvB,0BAEO,SAGH7C,GAGA,MAAM6C,EAAc,IACb7C,EACHY,QAAS,aAEN,OAAA8B,EAAAA,IAAC7C,EAAQ,IAAGgD,GACvB,yBAEO,SAGH7C,GAGA,MAAM6C,EAAc,IACb7C,EACHY,QAAS,YAEN,OAAA8B,EAAAA,IAAC7C,EAAQ,IAAGgD,GACvB"}
@@ -1,2 +1,2 @@
1
- export { Button, PrimaryButton, SecondaryButton, TertiaryButton } from './Button.cjs';
1
+ export { Button, PrimaryButton, SecondaryButton, TertiaryButton, } from './Button.cjs';
2
2
  export type { ButtonProps, ButtonVariant } from './types.cjs';
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sources":["../../../../src/components/button/types.ts"],"sourcesContent":["import { Density } from \"../../core/types.js\";\nimport { PolymorphicPropsWithRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const buttonVariants = [\"primary\", \"secondary\", \"tertiary\", \"ghost\"] as const;\nexport type ButtonVariant = (typeof buttonVariants)[number];\nexport type IconPosition = \"left\" | \"right\";\n\ntype IconOptions<T extends React.ElementType> =\n // Hvis ikke knappen har ikon, MÅ den ha children:\n | {\n iconPosition?: never;\n icon?: never;\n children: React.ComponentPropsWithoutRef<T>[\"children\"];\n }\n | {\n /**\n * Plasseringen av ikonet\n * @default \"left\"\n */\n iconPosition?: IconPosition;\n /**\n * Hvilket ikon som skal vises i knappen\n */\n icon: React.ReactElement;\n };\n\nexport type ButtonProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<\n ElementType,\n {\n density?: Density;\n /**\n * Hvilken variant av knappen skal vises\n * @default \"secondary\"\n */\n variant?: ButtonVariant;\n className?: string;\n loader?: {\n showLoader: boolean;\n textDescription: string;\n };\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"left\"`\n */\n iconLeft?: React.ReactNode;\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"right\"`\n */\n iconRight?: React.ReactNode;\n } & IconOptions<ElementType>\n>;\n\nexport type ButtonComponent = <ElementType extends React.ElementType = \"button\">(\n props: ButtonProps<ElementType>,\n) => React.ReactElement | null;\n"],"names":[],"mappings":"uGAG8B,CAAC,UAAW,YAAa,WAAY"}
1
+ {"version":3,"file":"types.cjs","sources":["../../../../src/components/button/types.ts"],"sourcesContent":["import { Density } from \"../../core/types.js\";\nimport { PolymorphicPropsWithRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const buttonVariants = [\n \"primary\",\n \"secondary\",\n \"tertiary\",\n \"ghost\",\n] as const;\nexport type ButtonVariant = (typeof buttonVariants)[number];\nexport type IconPosition = \"left\" | \"right\";\n\ntype IconOptions<T extends React.ElementType> =\n // Hvis ikke knappen har ikon, MÅ den ha children:\n | {\n iconPosition?: never;\n icon?: never;\n children: React.ComponentPropsWithoutRef<T>[\"children\"];\n }\n | {\n /**\n * Plasseringen av ikonet\n * @default \"left\"\n */\n iconPosition?: IconPosition;\n /**\n * Hvilket ikon som skal vises i knappen\n */\n icon: React.ReactElement;\n };\n\nexport type ButtonProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<\n ElementType,\n {\n density?: Density;\n /**\n * Hvilken variant av knappen skal vises\n * @default \"secondary\"\n */\n variant?: ButtonVariant;\n className?: string;\n loader?: {\n showLoader: boolean;\n textDescription: string;\n };\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"left\"`\n */\n iconLeft?: React.ReactNode;\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"right\"`\n */\n iconRight?: React.ReactNode;\n } & IconOptions<ElementType>\n >;\n\nexport type ButtonComponent = <\n ElementType extends React.ElementType = \"button\",\n>(\n props: ButtonProps<ElementType>,\n) => React.ReactElement | null;\n"],"names":[],"mappings":"uGAG8B,CAC1B,UACA,YACA,WACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Card.cjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { AsChildProps } from \"../../utilities/polymorphism/as-child.js\";\nimport { SlotComponent } from \"../../utilities/polymorphism/index.js\";\nimport { PolymorphicPropsWithRef, PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const CARD_PADDINGS = [\"s\", \"m\", \"l\", \"xl\"] as const;\nexport type CardPadding = (typeof CARD_PADDINGS)[number];\nexport const CARD_VARIANTS = [\"outlined\", \"high\", \"low\"] as const;\nexport type CardVariant = (typeof CARD_VARIANTS)[number];\n\nexport type CardProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<\n ElementType,\n {\n className?: string;\n /**\n * Setter padding på kortet. Tilsvarer samme property i Figma.\n * @default \"s\"\n */\n padding?: CardPadding;\n /**\n * Angir hvilken kortvariant du vil bruke. Velg en variant som gir god kontrast\n * til bakgrunnen på siden, slik at det er enkelt å skille innholdet fra hverandre.\n * @default \"high\"\n */\n variant?: CardVariant;\n /**\n * Angir om kortet visuelt skal fremstå som klikkbart. Du må selv rendre\n * kortet som et klikkbart element (f.eks. `<a>` eller en `<Link>` fra\n * et ruting-bibliotek) og gi det en `href` eller `onClick`-handler.\n * HUSK: Sett aria-label for at støtteverktøy, som skjermlesere, ikke\n * skal lese alt innholdet i kortet.\n */\n clickable?: boolean;\n }\n>;\n\ntype CardComponent = <ElementType extends React.ElementType = \"div\">(\n props: CardProps<ElementType> & AsChildProps,\n) => React.ReactElement | null;\n\n/**\n * En allsidig kortkomponent som brukes for å gruppere innhold på en side.\n * Komponenten rendres til vanlig som en `<div>`, men du kan velge å rendre\n * den som andre elementer eller komponenter der du trenger annen semantikk\n * eller funksjonalitet.\n */\nexport const Card = React.forwardRef(function Card<ElementType extends React.ElementType = \"div\">(\n props: CardProps<ElementType>,\n ref?: PolymorphicRef<ElementType>,\n) {\n const {\n className,\n clickable = false,\n padding = \"s\",\n variant = \"high\",\n asChild,\n as = \"div\",\n ...componentProps\n } = props;\n\n const Component = asChild ? SlotComponent : as;\n\n return (\n <Component\n data-testid=\"jkl-card\"\n data-clickable={clickable}\n data-padding={padding}\n className={clsx(\"jkl-card\", `jkl-card--${variant}`, className)}\n {...componentProps}\n ref={ref}\n />\n );\n}) as CardComponent;\n"],"names":["Card","React","forwardRef","props","ref","className","clickable","padding","variant","asChild","as","componentProps","Component","SlotComponent","jsx","clsx"],"mappings":"4OA+CaA,EAAOC,EAAMC,YAAW,SACjCC,EACAC,GAEM,MACFC,UAAAA,EACAC,UAAAA,GAAY,EACZC,QAAAA,EAAU,IACVC,QAAAA,EAAU,OACVC,QAAAA,EACAC,GAAAA,EAAK,SACFC,GACHR,EAEES,EAAYH,EAAUI,EAAgBA,cAAAH,EAGxC,OAAAI,EAAAA,IAACF,EAAA,CACG,cAAY,WACZ,iBAAgBN,EAChB,eAAcC,EACdF,UAAWU,EAAKA,KAAA,WAAY,aAAaP,IAAWH,MAChDM,EACJP,IAAAA,GAGZ,0BAnE6B,CAAC,IAAK,IAAK,IAAK,4BAEhB,CAAC,WAAY,OAAQ"}
1
+ {"version":3,"file":"Card.cjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { AsChildProps } from \"../../utilities/polymorphism/as-child.js\";\nimport { SlotComponent } from \"../../utilities/polymorphism/index.js\";\nimport {\n PolymorphicPropsWithRef,\n PolymorphicRef,\n} from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const CARD_PADDINGS = [\"s\", \"m\", \"l\", \"xl\"] as const;\nexport type CardPadding = (typeof CARD_PADDINGS)[number];\nexport const CARD_VARIANTS = [\"outlined\", \"high\", \"low\"] as const;\nexport type CardVariant = (typeof CARD_VARIANTS)[number];\n\nexport type CardProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<\n ElementType,\n {\n className?: string;\n /**\n * Setter padding på kortet. Tilsvarer samme property i Figma.\n * @default \"s\"\n */\n padding?: CardPadding;\n /**\n * Angir hvilken kortvariant du vil bruke. Velg en variant som gir god kontrast\n * til bakgrunnen på siden, slik at det er enkelt å skille innholdet fra hverandre.\n * @default \"high\"\n */\n variant?: CardVariant;\n /**\n * Angir om kortet visuelt skal fremstå som klikkbart. Du må selv rendre\n * kortet som et klikkbart element (f.eks. `<a>` eller en `<Link>` fra\n * et ruting-bibliotek) og gi det en `href` eller `onClick`-handler.\n * HUSK: Sett aria-label for at støtteverktøy, som skjermlesere, ikke\n * skal lese alt innholdet i kortet.\n */\n clickable?: boolean;\n }\n >;\n\ntype CardComponent = <ElementType extends React.ElementType = \"div\">(\n props: CardProps<ElementType> & AsChildProps,\n) => React.ReactElement | null;\n\n/**\n * En allsidig kortkomponent som brukes for å gruppere innhold på en side.\n * Komponenten rendres til vanlig som en `<div>`, men du kan velge å rendre\n * den som andre elementer eller komponenter der du trenger annen semantikk\n * eller funksjonalitet.\n */\nexport const Card = React.forwardRef(function Card<\n ElementType extends React.ElementType = \"div\",\n>(props: CardProps<ElementType>, ref?: PolymorphicRef<ElementType>) {\n const {\n className,\n clickable = false,\n padding = \"s\",\n variant = \"high\",\n asChild,\n as = \"div\",\n ...componentProps\n } = props;\n\n const Component = asChild ? SlotComponent : as;\n\n return (\n <Component\n data-testid=\"jkl-card\"\n data-clickable={clickable}\n data-padding={padding}\n className={clsx(\"jkl-card\", `jkl-card--${variant}`, className)}\n {...componentProps}\n ref={ref}\n />\n );\n}) as CardComponent;\n"],"names":["Card","React","forwardRef","props","ref","className","clickable","padding","variant","asChild","as","componentProps","Component","SlotComponent","jsx","clsx"],"mappings":"4OAmDaA,EAAOC,EAAMC,YAAW,SAEnCC,EAA+BC,GACvB,MACFC,UAAAA,EACAC,UAAAA,GAAY,EACZC,QAAAA,EAAU,IACVC,QAAAA,EAAU,OACVC,QAAAA,EACAC,GAAAA,EAAK,SACFC,GACHR,EAEES,EAAYH,EAAUI,EAAgBA,cAAAH,EAGxC,OAAAI,EAAAA,IAACF,EAAA,CACG,cAAY,WACZ,iBAAgBN,EAChB,eAAcC,EACdF,UAAWU,EAAKA,KAAA,WAAY,aAAaP,IAAWH,MAChDM,EACJP,IAAAA,GAGZ,0BAnE6B,CAAC,IAAK,IAAK,IAAK,4BAEhB,CAAC,WAAY,OAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardImage.cjs","sources":["../../../../src/components/card/CardImage.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { AsChildProps } from \"../../utilities/polymorphism/as-child.js\";\nimport { SlotComponent } from \"../../utilities/polymorphism/index.js\";\nimport { PolymorphicPropsWithRef, PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport type CardImageProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<\n ElementType,\n {\n /**\n * Legger til riktig negativ margin avhengig av hvor i kortet bildet\n * skal plasseres. Margin justeres automatisk etter padding i kortet.\n * @default \"top\"\n */\n placement?: \"top\" | \"middle\" | \"bottom\";\n }\n>;\n\ntype CardImageComponent = <ElementType extends React.ElementType = \"img\">(\n props: CardImageProps<ElementType>,\n) => React.ReactElement | null;\n\n/**\n * Bildekomponent som kan brukes i `Card` for å sørge for at bildet\n * blør helt ut i kantene av kortet. Rendres normalt som et `<img>`-\n * element, men du kan overstyre dette med `as` dersom du f.eks. har\n * en egen komponent for å håndtere responsive bilder.\n */\nexport const CardImage = React.forwardRef(function CardImage<ElementType extends React.ElementType = \"img\">(\n { as, asChild, className, placement = \"top\", ...imageProps }: CardImageProps<ElementType> & AsChildProps,\n ref?: PolymorphicRef<ElementType>,\n) {\n const Component = asChild ? SlotComponent : as || \"img\";\n\n return (\n <Component\n ref={ref}\n className={clsx(\"jkl-card-image\", `jkl-card-image--${placement}`, className)}\n {...imageProps}\n />\n );\n}) as CardImageComponent;\n"],"names":["CardImage","React","forwardRef","as","asChild","className","placement","imageProps","ref","Component","SlotComponent","jsx","clsx"],"mappings":"4OA4BaA,EAAYC,EAAMC,YAAW,UACpCC,GAAAA,EAAIC,QAAAA,EAASC,UAAAA,EAAWC,UAAAA,EAAY,SAAUC,GAChDC,GAEM,MAAAC,EAAYL,EAAUM,gBAAgBP,GAAM,MAG9C,OAAAQ,EAAAA,IAACF,EAAA,CACGD,IAAAA,EACAH,UAAWO,EAAKA,KAAA,iBAAkB,mBAAmBN,IAAaD,MAC9DE,GAGhB"}
1
+ {"version":3,"file":"CardImage.cjs","sources":["../../../../src/components/card/CardImage.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { AsChildProps } from \"../../utilities/polymorphism/as-child.js\";\nimport { SlotComponent } from \"../../utilities/polymorphism/index.js\";\nimport {\n PolymorphicPropsWithRef,\n PolymorphicRef,\n} from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport type CardImageProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<\n ElementType,\n {\n /**\n * Legger til riktig negativ margin avhengig av hvor i kortet bildet\n * skal plasseres. Margin justeres automatisk etter padding i kortet.\n * @default \"top\"\n */\n placement?: \"top\" | \"middle\" | \"bottom\";\n }\n >;\n\ntype CardImageComponent = <ElementType extends React.ElementType = \"img\">(\n props: CardImageProps<ElementType>,\n) => React.ReactElement | null;\n\n/**\n * Bildekomponent som kan brukes i `Card` for å sørge for at bildet\n * blør helt ut i kantene av kortet. Rendres normalt som et `<img>`-\n * element, men du kan overstyre dette med `as` dersom du f.eks. har\n * en egen komponent for å håndtere responsive bilder.\n */\nexport const CardImage = React.forwardRef(function CardImage<\n ElementType extends React.ElementType = \"img\",\n>(\n {\n as,\n asChild,\n className,\n placement = \"top\",\n ...imageProps\n }: CardImageProps<ElementType> & AsChildProps,\n ref?: PolymorphicRef<ElementType>,\n) {\n const Component = asChild ? SlotComponent : as || \"img\";\n\n return (\n <Component\n ref={ref}\n className={clsx(\n \"jkl-card-image\",\n `jkl-card-image--${placement}`,\n className,\n )}\n {...imageProps}\n />\n );\n}) as CardImageComponent;\n"],"names":["CardImage","React","forwardRef","as","asChild","className","placement","imageProps","ref","Component","SlotComponent","jsx","clsx"],"mappings":"4OAgCaA,EAAYC,EAAMC,YAAW,UAIlCC,GAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,UAAAA,EAAY,SACTC,GAEPC,GAEM,MAAAC,EAAYL,EAAUM,gBAAgBP,GAAM,MAG9C,OAAAQ,EAAAA,IAACF,EAAA,CACGD,IAAAA,EACAH,UAAWO,EAAAA,KACP,iBACA,mBAAmBN,IACnBD,MAEAE,GAGhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"InfoCard.cjs","sources":["../../../../src/components/card/InfoCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { PaddingOptions, SpacingStep } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport interface InfoCardProps extends PaddingOptions, WithChildren {\n className?: string;\n title?: string;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n */\n bottomPadding?: SpacingStep;\n density?: Density;\n}\n\nexport const InfoCard: FC<InfoCardProps> = ({ title, children, density, className, padding = \"l\", ...rest }) => (\n <div {...rest} className={clsx(\"jkl-info-card\", className)} data-density={density}>\n <div className={clsx(\"jkl-info-card__content-wrapper\")} style={getPaddingStyles(padding)}>\n {title && <p className=\"jkl-info-card__title\">{title}</p>}\n {children}\n </div>\n </div>\n);\n"],"names":["title","children","density","className","padding","rest","jsx","clsx","jsxs","style","getPaddingStyles"],"mappings":"uMAgB2C,EAAGA,MAAAA,EAAOC,SAAAA,EAAUC,QAAAA,EAASC,UAAAA,EAAWC,QAAAA,EAAU,OAAQC,KACjGC,EAAAA,IAAC,UAAQD,EAAMF,UAAWI,EAAAA,KAAK,gBAAiBJ,GAAY,eAAcD,EACtED,SAACO,EAAAA,KAAA,MAAA,CAAIL,UAAWI,EAAAA,KAAK,kCAAmCE,MAAOC,EAAAA,iBAAiBN,GAC3EH,SAAA,CAAAD,GAAUM,EAAAA,IAAA,IAAA,CAAEH,UAAU,uBAAwBF,SAAMD,IACpDC"}
1
+ {"version":3,"file":"InfoCard.cjs","sources":["../../../../src/components/card/InfoCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { PaddingOptions, SpacingStep } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport interface InfoCardProps extends PaddingOptions, WithChildren {\n className?: string;\n title?: string;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n */\n bottomPadding?: SpacingStep;\n density?: Density;\n}\n\nexport const InfoCard: FC<InfoCardProps> = ({\n title,\n children,\n density,\n className,\n padding = \"l\",\n ...rest\n}) => (\n <div\n {...rest}\n className={clsx(\"jkl-info-card\", className)}\n data-density={density}\n >\n <div\n className={clsx(\"jkl-info-card__content-wrapper\")}\n style={getPaddingStyles(padding)}\n >\n {title && <p className=\"jkl-info-card__title\">{title}</p>}\n {children}\n </div>\n </div>\n);\n"],"names":["title","children","density","className","padding","rest","jsx","clsx","jsxs","style","getPaddingStyles"],"mappings":"uMAgB2C,EACvCA,MAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,QAAAA,EAAU,OACPC,KAEHC,EAAAA,IAAC,MAAA,IACOD,EACJF,UAAWI,EAAAA,KAAK,gBAAiBJ,GACjC,eAAcD,EAEdD,SAAAO,EAAAA,KAAC,MAAA,CACGL,UAAWI,OAAK,kCAChBE,MAAOC,mBAAiBN,GAEvBH,SAAA,CAAAD,GAAUM,EAAAA,IAAA,IAAA,CAAEH,UAAU,uBAAwBF,SAAMD,IACpDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavCard.cjs","sources":["../../../../src/components/card/NavCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes, ElementType, FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { Image, ImageProps } from \"../image/Image.js\";\nimport { ErrorTag, InfoTag, SuccessTag, Tag, TagProps, WarningTag } from \"../tag/Tag.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport type TagType = \"success\" | \"warning\" | \"info\" | \"error\";\n\n/**\n * Bruk denne komponenten for å legge til ekstra informasjon i NavCard.\n * Innholdet blir rendret med skillelinje, og tekststil \"small\"\n */\nexport const InfoBlock: FC<WithChildren> = ({ children }) => <div className=\"jkl-nav-card__info\">{children}</div>;\n\ninterface CardTag {\n /**\n * @default <none> Rendres som nøytral tag\n */\n type?: TagType;\n text: string;\n}\n\nexport interface NavCardProps extends PaddingOptions, AnchorHTMLAttributes<HTMLAnchorElement> {\n tag?: CardTag | Array<CardTag>;\n title: string;\n href?: string;\n to?: string;\n external?: boolean;\n description?: string;\n image?: Omit<ImageProps, \"className\">;\n className?: string;\n /**\n * Overstyr hvilken komponent som skal brukes, for eksempel hvis du har en Link-komponent fra en router.\n * @default \"a\"\n */\n component?: ElementType;\n density?: Density;\n}\n\nconst getTag = (type?: TagType) => {\n switch (type) {\n case \"info\":\n return InfoTag;\n case \"success\":\n return SuccessTag;\n case \"warning\":\n return WarningTag;\n case \"error\":\n return ErrorTag;\n default:\n return Tag;\n }\n};\nconst NavCardTag = ({ text, type, density }: CardTag & Pick<TagProps, \"density\">) => {\n const CardTag = getTag(type);\n return <CardTag density={density}>{text}</CardTag>;\n};\n\nexport const NavCard: FC<NavCardProps> = React.forwardRef<HTMLAnchorElement, NavCardProps>((props, ref) => {\n const {\n component = \"a\",\n padding = \"l\",\n image,\n tag,\n title,\n external,\n description,\n children,\n className,\n density,\n ...rest\n } = props;\n\n const Component = component;\n\n const tagArr = !tag ? undefined : Array.isArray(tag) ? tag : [tag];\n\n return (\n <Component\n ref={ref}\n aria-label={title}\n className={clsx(\"jkl-nav-card\", className)}\n data-density={density}\n {...rest}\n >\n {image && <Image className=\"jkl-nav-card__image\" {...image} />}\n <div className=\"jkl-nav-card__content\" style={getPaddingStyles(padding)}>\n {tagArr && (\n <div className=\"jkl-nav-card__tag-wrapper\">\n {tagArr.map((t, index) => (\n <NavCardTag type={t.type} text={t.text} key={index} />\n ))}\n </div>\n )}\n <div>\n <p className={clsx(\"jkl-nav-card__link\", external ? \"jkl-nav-card__link--external\" : \"\")}>\n {title}\n </p>\n {description && <p className=\"jkl-nav-card__description jkl-spacing-xs--top\">{description}</p>}\n </div>\n {children}\n </div>\n </Component>\n );\n});\n\nNavCard.displayName = \"NavCard\";\n"],"names":["NavCardTag","text","type","density","CardTag","InfoTag","SuccessTag","WarningTag","ErrorTag","Tag","getTag","jsx","children","NavCard","React","forwardRef","props","ref","component","padding","image","tag","title","external","description","className","rest","Component","tagArr","Array","isArray","jsxs","clsx","Image","style","getPaddingStyles","map","t","index","displayName"],"mappings":"qQAuDMA,EAAa,EAAGC,KAAAA,EAAMC,KAAAA,EAAMC,QAAAA,MACxB,MAAAC,EAfMF,KACZ,OAAQA,GACJ,IAAK,OACM,OAAAG,UACX,IAAK,UACM,OAAAC,aACX,IAAK,UACM,OAAAC,aACX,IAAK,QACM,OAAAC,WACX,QACW,OAAAC,MACf,EAGgBC,CAAOR,GAChB,OAAAS,EAAAA,IAACP,EAAQ,CAAAD,QAAAA,EAAmBS,SAAKX,GAAA,EAG/BY,EAA4BC,EAAMC,YAA4C,CAACC,EAAOC,KACzF,MACFC,UAAAA,EAAY,IACZC,QAAAA,EAAU,IACVC,MAAAA,EACAC,IAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAZ,SAAAA,EACAa,UAAAA,EACAtB,QAAAA,KACGuB,GACHV,EAEEW,EAAYT,EAEZU,EAAUP,EAAkBQ,MAAMC,QAAQT,GAAOA,EAAM,CAACA,QAAxC,EAGlB,OAAAU,EAAAA,KAACJ,EAAA,CACGV,IAAAA,EACA,aAAYK,EACZG,UAAWO,EAAAA,KAAK,eAAgBP,GAChC,eAActB,KACVuB,EAEHd,SAAA,CAAAQ,GAAUT,EAAAA,IAAAsB,QAAA,CAAMR,UAAU,yBAA0BL,WACpD,MAAI,CAAAK,UAAU,wBAAwBS,MAAOC,EAAAA,iBAAiBhB,GAC1DP,SAAA,CAAAgB,SACI,MAAI,CAAAH,UAAU,4BACVb,SAAOgB,EAAAQ,KAAI,CAACC,EAAGC,UACXtC,EAAW,CAAAE,KAAMmC,EAAEnC,KAAMD,KAAMoC,EAAEpC,MAAWqC,cAIxD,MACG,CAAA1B,SAAA,CAACD,EAAAA,IAAA,IAAA,CAAEc,UAAWO,EAAKA,KAAA,qBAAsBT,EAAW,+BAAiC,IAChFX,SACLU,IACCE,GAAeb,EAAAA,IAAC,IAAE,CAAAc,UAAU,gDAAiDb,SAAYY,OAE7FZ,OACL,IAKZC,EAAQ0B,YAAc,4BA9FqB,EAAG3B,SAAAA,KAAgBD,EAAAA,IAAA,MAAA,CAAIc,UAAU,qBAAsBb,SAAAA"}
1
+ {"version":3,"file":"NavCard.cjs","sources":["../../../../src/components/card/NavCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes, ElementType, FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { Image, ImageProps } from \"../image/Image.js\";\nimport {\n ErrorTag,\n InfoTag,\n SuccessTag,\n Tag,\n TagProps,\n WarningTag,\n} from \"../tag/Tag.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport type TagType = \"success\" | \"warning\" | \"info\" | \"error\";\n\n/**\n * Bruk denne komponenten for å legge til ekstra informasjon i NavCard.\n * Innholdet blir rendret med skillelinje, og tekststil \"small\"\n */\nexport const InfoBlock: FC<WithChildren> = ({ children }) => (\n <div className=\"jkl-nav-card__info\">{children}</div>\n);\n\ninterface CardTag {\n /**\n * @default <none> Rendres som nøytral tag\n */\n type?: TagType;\n text: string;\n}\n\nexport interface NavCardProps\n extends PaddingOptions,\n AnchorHTMLAttributes<HTMLAnchorElement> {\n tag?: CardTag | Array<CardTag>;\n title: string;\n href?: string;\n to?: string;\n external?: boolean;\n description?: string;\n image?: Omit<ImageProps, \"className\">;\n className?: string;\n /**\n * Overstyr hvilken komponent som skal brukes, for eksempel hvis du har en Link-komponent fra en router.\n * @default \"a\"\n */\n component?: ElementType;\n density?: Density;\n}\n\nconst getTag = (type?: TagType) => {\n switch (type) {\n case \"info\":\n return InfoTag;\n case \"success\":\n return SuccessTag;\n case \"warning\":\n return WarningTag;\n case \"error\":\n return ErrorTag;\n default:\n return Tag;\n }\n};\nconst NavCardTag = ({\n text,\n type,\n density,\n}: CardTag & Pick<TagProps, \"density\">) => {\n const CardTag = getTag(type);\n return <CardTag density={density}>{text}</CardTag>;\n};\n\nexport const NavCard: FC<NavCardProps> = React.forwardRef<\n HTMLAnchorElement,\n NavCardProps\n>((props, ref) => {\n const {\n component = \"a\",\n padding = \"l\",\n image,\n tag,\n title,\n external,\n description,\n children,\n className,\n density,\n ...rest\n } = props;\n\n const Component = component;\n\n const tagArr = !tag ? undefined : Array.isArray(tag) ? tag : [tag];\n\n return (\n <Component\n ref={ref}\n aria-label={title}\n className={clsx(\"jkl-nav-card\", className)}\n data-density={density}\n {...rest}\n >\n {image && <Image className=\"jkl-nav-card__image\" {...image} />}\n <div\n className=\"jkl-nav-card__content\"\n style={getPaddingStyles(padding)}\n >\n {tagArr && (\n <div className=\"jkl-nav-card__tag-wrapper\">\n {tagArr.map((t, index) => (\n <NavCardTag\n type={t.type}\n text={t.text}\n key={index}\n />\n ))}\n </div>\n )}\n <div>\n <p\n className={clsx(\n \"jkl-nav-card__link\",\n external ? \"jkl-nav-card__link--external\" : \"\",\n )}\n >\n {title}\n </p>\n {description && (\n <p className=\"jkl-nav-card__description jkl-spacing-xs--top\">\n {description}\n </p>\n )}\n </div>\n {children}\n </div>\n </Component>\n );\n});\n\nNavCard.displayName = \"NavCard\";\n"],"names":["NavCardTag","text","type","density","CardTag","InfoTag","SuccessTag","WarningTag","ErrorTag","Tag","getTag","jsx","children","NavCard","React","forwardRef","props","ref","component","padding","image","tag","title","external","description","className","rest","Component","tagArr","Array","isArray","jsxs","clsx","Image","style","getPaddingStyles","map","t","index","displayName"],"mappings":"qQAkEMA,EAAa,EACfC,KAAAA,EACAC,KAAAA,EACAC,QAAAA,MAEM,MAAAC,EAnBMF,KACZ,OAAQA,GACJ,IAAK,OACM,OAAAG,UACX,IAAK,UACM,OAAAC,aACX,IAAK,UACM,OAAAC,aACX,IAAK,QACM,OAAAC,WACX,QACW,OAAAC,MACf,EAOgBC,CAAOR,GAChB,OAAAS,EAAAA,IAACP,EAAQ,CAAAD,QAAAA,EAAmBS,SAAKX,GAAA,EAG/BY,EAA4BC,EAAMC,YAG7C,CAACC,EAAOC,KACA,MACFC,UAAAA,EAAY,IACZC,QAAAA,EAAU,IACVC,MAAAA,EACAC,IAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAZ,SAAAA,EACAa,UAAAA,EACAtB,QAAAA,KACGuB,GACHV,EAEEW,EAAYT,EAEZU,EAAUP,EAAkBQ,MAAMC,QAAQT,GAAOA,EAAM,CAACA,QAAxC,EAGlB,OAAAU,EAAAA,KAACJ,EAAA,CACGV,IAAAA,EACA,aAAYK,EACZG,UAAWO,EAAAA,KAAK,eAAgBP,GAChC,eAActB,KACVuB,EAEHd,SAAA,CAAAQ,GAAUT,EAAAA,IAAAsB,QAAA,CAAMR,UAAU,yBAA0BL,IACrDW,EAAAA,KAAC,MAAA,CACGN,UAAU,wBACVS,MAAOC,mBAAiBhB,GAEvBP,SAAA,CACGgB,GAAAjB,EAAAA,IAAC,OAAIc,UAAU,4BACVb,WAAOwB,KAAI,CAACC,EAAGC,IACZ3B,EAAAA,IAACX,EAAA,CACGE,KAAMmC,EAAEnC,KACRD,KAAMoC,EAAEpC,MACHqC,cAKpB,MACG,CAAA1B,SAAA,CAAAD,EAAAA,IAAC,IAAA,CACGc,UAAWO,EAAAA,KACP,qBACAT,EAAW,+BAAiC,IAG/CX,SAAAU,IAEJE,GACGb,EAAAA,IAAC,IAAE,CAAAc,UAAU,gDACRb,SACLY,OAGPZ,OACL,IAKZC,EAAQ0B,YAAc,4BAzHqB,EAAG3B,SAAAA,KACzCD,EAAAA,IAAA,MAAA,CAAIc,UAAU,qBAAsBb,SAAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"TaskCard.cjs","sources":["../../../../src/components/card/TaskCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport interface TaskCardProps extends PaddingOptions, WithChildren {\n /**\n * Bakgrunnsfargen til kortet\n * @deprecated Bruk `background` i stedet\n */\n bgColor?: \"hvit\" | \"snohvit\" | \"sand\" | \"dis\";\n /**\n * Bestemmer bakgrunnsfargen til kortet, på tvers av mørkt eller lyst tema\n * @default \"highlighted\"\n */\n background?: \"highlighted\" | \"normal\" | \"subdued\";\n /**\n * Skal kortet ha skygge?\n * @default false\n */\n withShadow?: boolean;\n className?: string;\n density?: Density;\n}\n\nexport const TaskCard: FC<TaskCardProps> = ({\n bgColor,\n background = \"highlighted\",\n withShadow = false,\n padding = \"l\",\n className,\n children,\n density,\n ...rest\n}) => (\n <div\n className={clsx(\"jkl-task-card\", className, {\n // Vi bruker kun background hvis bgColor ikke er satt, for å ikke bryte eksisterende kode\n [`jkl-task-card--${background}`]: !bgColor,\n [`jkl-task-card--${bgColor}`]: !!bgColor,\n \"jkl-task-card--with-shadow\": withShadow,\n })}\n data-density={density}\n {...rest}\n >\n <div className=\"jkl-task-card__content-wrapper\" style={getPaddingStyles(padding)}>\n {children}\n </div>\n </div>\n);\n"],"names":["bgColor","background","withShadow","padding","className","children","density","rest","jsx","clsx","style","getPaddingStyles"],"mappings":"uMA0B2C,EACvCA,QAAAA,EACAC,WAAAA,EAAa,cACbC,WAAAA,GAAa,EACbC,QAAAA,EAAU,IACVC,UAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,KAEHC,EAAAA,IAAC,MAAA,CACGJ,UAAWK,EAAAA,KAAK,gBAAiBL,EAAW,CAExC,CAAC,kBAAkBH,MAAgBD,EACnC,CAAC,kBAAkBA,OAAcA,EACjC,6BAA8BE,IAElC,eAAcI,KACVC,EAEJF,SAAAG,EAAAA,IAAC,OAAIJ,UAAU,iCAAiCM,MAAOC,mBAAiBR,GACnEE,SAAAA"}
1
+ {"version":3,"file":"TaskCard.cjs","sources":["../../../../src/components/card/TaskCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport interface TaskCardProps extends PaddingOptions, WithChildren {\n /**\n * Bakgrunnsfargen til kortet\n * @deprecated Bruk `background` i stedet\n */\n bgColor?: \"hvit\" | \"snohvit\" | \"sand\" | \"dis\";\n /**\n * Bestemmer bakgrunnsfargen til kortet, på tvers av mørkt eller lyst tema\n * @default \"highlighted\"\n */\n background?: \"highlighted\" | \"normal\" | \"subdued\";\n /**\n * Skal kortet ha skygge?\n * @default false\n */\n withShadow?: boolean;\n className?: string;\n density?: Density;\n}\n\nexport const TaskCard: FC<TaskCardProps> = ({\n bgColor,\n background = \"highlighted\",\n withShadow = false,\n padding = \"l\",\n className,\n children,\n density,\n ...rest\n}) => (\n <div\n className={clsx(\"jkl-task-card\", className, {\n // Vi bruker kun background hvis bgColor ikke er satt, for å ikke bryte eksisterende kode\n [`jkl-task-card--${background}`]: !bgColor,\n [`jkl-task-card--${bgColor}`]: !!bgColor,\n \"jkl-task-card--with-shadow\": withShadow,\n })}\n data-density={density}\n {...rest}\n >\n <div\n className=\"jkl-task-card__content-wrapper\"\n style={getPaddingStyles(padding)}\n >\n {children}\n </div>\n </div>\n);\n"],"names":["bgColor","background","withShadow","padding","className","children","density","rest","jsx","clsx","style","getPaddingStyles"],"mappings":"uMA0B2C,EACvCA,QAAAA,EACAC,WAAAA,EAAa,cACbC,WAAAA,GAAa,EACbC,QAAAA,EAAU,IACVC,UAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,KAEHC,EAAAA,IAAC,MAAA,CACGJ,UAAWK,EAAAA,KAAK,gBAAiBL,EAAW,CAExC,CAAC,kBAAkBH,MAAgBD,EACnC,CAAC,kBAAkBA,OAAcA,EACjC,6BAA8BE,IAElC,eAAcI,KACVC,EAEJF,SAAAG,EAAAA,IAAC,MAAA,CACGJ,UAAU,iCACVM,MAAOC,mBAAiBR,GAEvBE,SAAAA"}
@@ -1,4 +1,4 @@
1
1
  import { ExampleComponentProps, ExampleKnobsProps } from 'doc-utils/index.cjs';
2
2
  import { default as React } from 'react';
3
- export declare const FakturainfoExample: ({ boolValues, choiceValues }: ExampleComponentProps) => React.JSX.Element;
3
+ export declare const FakturainfoExample: ({ boolValues, choiceValues, }: ExampleComponentProps) => React.JSX.Element;
4
4
  export declare const fakturainfoExampleProps: ExampleKnobsProps;
@@ -1,4 +1,4 @@
1
1
  import { ExampleComponentProps, ExampleKnobsProps } from 'doc-utils/index.cjs';
2
2
  import { default as React } from 'react';
3
- export declare const StatuskortExample: ({ boolValues, choiceValues }: ExampleComponentProps) => React.JSX.Element;
3
+ export declare const StatuskortExample: ({ boolValues, choiceValues, }: ExampleComponentProps) => React.JSX.Element;
4
4
  export declare const statuskortExampleProps: ExampleKnobsProps;
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sources":["../../../../src/components/card/types.ts"],"sourcesContent":["export const SPACING_STEPS = [\"0\", \"m\", \"l\", \"xl\", \"2xl\", \"3xl\", \"4xl\"] as const;\ntype SpacingSteps = typeof SPACING_STEPS;\nexport const NEW_SPACING_STEPS = [\"0\", \"16\", \"24\", \"40\", \"64\", \"104\", \"168\"] as const;\ntype NewSpacingSteps = typeof NEW_SPACING_STEPS;\nexport type BasePadding = SpacingSteps[0 | 1 | 2 | 3] | NewSpacingSteps[0 | 1 | 2 | 3];\nexport type OldSpacingStep = SpacingSteps[number];\nexport type NewSpacingStep = NewSpacingSteps[number];\nexport type SpacingStep = SpacingSteps[number] | NewSpacingSteps[number];\n\nexport function isOldSpacingStep(value: SpacingStep): value is OldSpacingStep {\n return SPACING_STEPS.includes(value as OldSpacingStep);\n}\n\nexport interface PaddingShorthand {\n /**\n * Legger til ekstra rom i toppen av kortet, fra spacing-skalaen til Jøkul.\n * Ikke bruk ekstra topPadding sammen med tag. Verdier lavere enn for venstre og høyre padding\n * blir ignorert.\n * @default \"24\"\n */\n top?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n right?: BasePadding;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n * Verdier lavere enn for venstre og høyre padding blir ignorert.\n * @default \"24\"\n */\n bottom?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n left?: BasePadding;\n}\n\nexport interface PaddingOptions {\n /**\n * Hvor mye rom skal det være rundt innholdet i kortet?\n * @default \"24\"\n */\n padding?: BasePadding | PaddingShorthand;\n}\n"],"names":["SPACING_STEPS","value","includes"],"mappings":"gFAAa,MAAAA,EAAgB,CAAC,IAAK,IAAK,IAAK,KAAM,MAAO,MAAO,iCAEhC,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,wDAO/D,SAA0BC,GACtB,OAAAD,EAAcE,SAASD,EAClC"}
1
+ {"version":3,"file":"types.cjs","sources":["../../../../src/components/card/types.ts"],"sourcesContent":["export const SPACING_STEPS = [\n \"0\",\n \"m\",\n \"l\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n \"4xl\",\n] as const;\ntype SpacingSteps = typeof SPACING_STEPS;\nexport const NEW_SPACING_STEPS = [\n \"0\",\n \"16\",\n \"24\",\n \"40\",\n \"64\",\n \"104\",\n \"168\",\n] as const;\ntype NewSpacingSteps = typeof NEW_SPACING_STEPS;\nexport type BasePadding =\n | SpacingSteps[0 | 1 | 2 | 3]\n | NewSpacingSteps[0 | 1 | 2 | 3];\nexport type OldSpacingStep = SpacingSteps[number];\nexport type NewSpacingStep = NewSpacingSteps[number];\nexport type SpacingStep = SpacingSteps[number] | NewSpacingSteps[number];\n\nexport function isOldSpacingStep(value: SpacingStep): value is OldSpacingStep {\n return SPACING_STEPS.includes(value as OldSpacingStep);\n}\n\nexport interface PaddingShorthand {\n /**\n * Legger til ekstra rom i toppen av kortet, fra spacing-skalaen til Jøkul.\n * Ikke bruk ekstra topPadding sammen med tag. Verdier lavere enn for venstre og høyre padding\n * blir ignorert.\n * @default \"24\"\n */\n top?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n right?: BasePadding;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n * Verdier lavere enn for venstre og høyre padding blir ignorert.\n * @default \"24\"\n */\n bottom?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n left?: BasePadding;\n}\n\nexport interface PaddingOptions {\n /**\n * Hvor mye rom skal det være rundt innholdet i kortet?\n * @default \"24\"\n */\n padding?: BasePadding | PaddingShorthand;\n}\n"],"names":["SPACING_STEPS","value","includes"],"mappings":"gFAAO,MAAMA,EAAgB,CACzB,IACA,IACA,IACA,KACA,MACA,MACA,iCAG6B,CAC7B,IACA,KACA,KACA,KACA,KACA,MACA,wDAUG,SAA0BC,GACtB,OAAAD,EAAcE,SAASD,EAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","sources":["../../../../src/components/card/utils.ts"],"sourcesContent":["import { CSSProperties } from \"react\";\nimport { NEW_SPACING_STEPS, SPACING_STEPS, isOldSpacingStep } from \"./types.js\";\nimport type { BasePadding, PaddingShorthand, SpacingStep } from \"./types.js\";\n\nfunction getSpacingIndex(spacingStep?: SpacingStep, fallback: SpacingStep = \"24\"): number {\n const value = spacingStep || fallback;\n if (isOldSpacingStep(value)) {\n return SPACING_STEPS.indexOf(value);\n } else {\n return NEW_SPACING_STEPS.indexOf(value);\n }\n}\n\nexport function getPaddingStyles(padding: BasePadding | PaddingShorthand): CSSProperties {\n if (typeof padding === \"string\") {\n return { padding: `var(--jkl-spacing-${NEW_SPACING_STEPS[getSpacingIndex(padding)]})` };\n }\n\n // Sett sidepadding til den største av de to innsendte verdiene (eller \"24\")\n const sideSpacingIndex = Math.max(getSpacingIndex(padding.left), getSpacingIndex(padding.right));\n const sidePadding = NEW_SPACING_STEPS[sideSpacingIndex];\n\n // Sett topp-/bunnpadding til det største av innsendt verdi og sidepadding\n const topPadding = NEW_SPACING_STEPS[Math.max(sideSpacingIndex, getSpacingIndex(padding.top, sidePadding))];\n const bottomPadding = NEW_SPACING_STEPS[Math.max(sideSpacingIndex, getSpacingIndex(padding.bottom, sidePadding))];\n\n const top = `var(--jkl-spacing-${topPadding})`;\n const right = `var(--jkl-spacing-${sidePadding})`;\n const bottom = `var(--jkl-spacing-${bottomPadding})`;\n const left = `var(--jkl-spacing-${sidePadding})`;\n\n return { padding: `${top} ${right} ${bottom} ${left}` };\n}\n"],"names":["getSpacingIndex","spacingStep","fallback","value","isOldSpacingStep","SPACING_STEPS","indexOf","NEW_SPACING_STEPS","padding","sideSpacingIndex","Math","max","left","right","sidePadding","top","bottom"],"mappings":"+GAIA,SAASA,EAAgBC,EAA2BC,EAAwB,MACxE,MAAMC,EAAQF,GAAeC,EACzB,OAAAE,EAAAA,iBAAiBD,GACVE,EAAAA,cAAcC,QAAQH,GAEtBI,EAAAA,kBAAkBD,QAAQH,EAEzC,0BAEO,SAA0BK,GACzB,GAAmB,iBAAZA,EACA,MAAA,CAAEA,QAAS,qBAAqBD,EAAAA,kBAAkBP,EAAgBQ,QAIvE,MAAAC,EAAmBC,KAAKC,IAAIX,EAAgBQ,EAAQI,MAAOZ,EAAgBQ,EAAQK,QACnFC,EAAcP,oBAAkBE,GAW/B,MAAA,CAAED,QAAS,GALN,qBAHOD,EAAAA,kBAAkBG,KAAKC,IAAIF,EAAkBT,EAAgBQ,EAAQO,IAAKD,WAI/E,qBAAqBA,QACpB,qBAJOP,EAAAA,kBAAkBG,KAAKC,IAAIF,EAAkBT,EAAgBQ,EAAQQ,OAAQF,WAKtF,qBAAqBA,OAGtC"}
1
+ {"version":3,"file":"utils.cjs","sources":["../../../../src/components/card/utils.ts"],"sourcesContent":["import { CSSProperties } from \"react\";\nimport { NEW_SPACING_STEPS, SPACING_STEPS, isOldSpacingStep } from \"./types.js\";\nimport type { BasePadding, PaddingShorthand, SpacingStep } from \"./types.js\";\n\nfunction getSpacingIndex(\n spacingStep?: SpacingStep,\n fallback: SpacingStep = \"24\",\n): number {\n const value = spacingStep || fallback;\n if (isOldSpacingStep(value)) {\n return SPACING_STEPS.indexOf(value);\n } else {\n return NEW_SPACING_STEPS.indexOf(value);\n }\n}\n\nexport function getPaddingStyles(\n padding: BasePadding | PaddingShorthand,\n): CSSProperties {\n if (typeof padding === \"string\") {\n return {\n padding: `var(--jkl-spacing-${\n NEW_SPACING_STEPS[getSpacingIndex(padding)]\n })`,\n };\n }\n\n // Sett sidepadding til den største av de to innsendte verdiene (eller \"24\")\n const sideSpacingIndex = Math.max(\n getSpacingIndex(padding.left),\n getSpacingIndex(padding.right),\n );\n const sidePadding = NEW_SPACING_STEPS[sideSpacingIndex];\n\n // Sett topp-/bunnpadding til det største av innsendt verdi og sidepadding\n const topPadding =\n NEW_SPACING_STEPS[\n Math.max(\n sideSpacingIndex,\n getSpacingIndex(padding.top, sidePadding),\n )\n ];\n const bottomPadding =\n NEW_SPACING_STEPS[\n Math.max(\n sideSpacingIndex,\n getSpacingIndex(padding.bottom, sidePadding),\n )\n ];\n\n const top = `var(--jkl-spacing-${topPadding})`;\n const right = `var(--jkl-spacing-${sidePadding})`;\n const bottom = `var(--jkl-spacing-${bottomPadding})`;\n const left = `var(--jkl-spacing-${sidePadding})`;\n\n return { padding: `${top} ${right} ${bottom} ${left}` };\n}\n"],"names":["getSpacingIndex","spacingStep","fallback","value","isOldSpacingStep","SPACING_STEPS","indexOf","NEW_SPACING_STEPS","padding","sideSpacingIndex","Math","max","left","right","sidePadding","top","bottom"],"mappings":"+GAIA,SAASA,EACLC,EACAC,EAAwB,MAExB,MAAMC,EAAQF,GAAeC,EACzB,OAAAE,EAAAA,iBAAiBD,GACVE,EAAAA,cAAcC,QAAQH,GAEtBI,EAAAA,kBAAkBD,QAAQH,EAEzC,0BAEO,SACHK,GAEI,GAAmB,iBAAZA,EACA,MAAA,CACHA,QAAS,qBACLD,EAAAA,kBAAkBP,EAAgBQ,QAM9C,MAAMC,EAAmBC,KAAKC,IAC1BX,EAAgBQ,EAAQI,MACxBZ,EAAgBQ,EAAQK,QAEtBC,EAAcP,oBAAkBE,GAuB/B,MAAA,CAAED,QAAS,GALN,qBAdRD,oBACIG,KAAKC,IACDF,EACAT,EAAgBQ,EAAQO,IAAKD,WAY3B,qBAAqBA,QACpB,qBATXP,oBACIG,KAAKC,IACDF,EACAT,EAAgBQ,EAAQQ,OAAQF,WAO/B,qBAAqBA,OAGtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.cjs","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ReactNode,\n forwardRef,\n ChangeEventHandler,\n FocusEventHandler,\n InputHTMLAttributes,\n useEffect,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport { DataTestAutoId, Density } from \"../../core/types.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\n\nexport interface CheckboxProps extends DataTestAutoId, InputHTMLAttributes<HTMLInputElement> {\n children: ReactNode;\n name: string;\n value: string;\n checked?: boolean;\n inline?: boolean;\n className?: string;\n density?: Density;\n invalid?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n onFocus?: FocusEventHandler<HTMLInputElement>;\n onBlur?: FocusEventHandler<HTMLInputElement>;\n indeterminate?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {\n const {\n id,\n children,\n invalid,\n className,\n inline = false,\n density,\n \"data-testautoid\": testAutoId,\n checked,\n indeterminate,\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current!, []);\n\n const inputId = useId(id || \"jkl-checkbox\", { generateSuffix: !id });\n\n useEffect(() => {\n if (checked === true && indeterminate === true && process.env.NODE_ENV !== \"production\") {\n console.warn(\"A Checkbox can not be both checked and indeterminate, and will be treated as checked\");\n }\n if (inputRef.current) {\n inputRef.current.indeterminate = !checked && !!indeterminate;\n }\n }, [checked, indeterminate]);\n\n return (\n <div\n className={clsx(\"jkl-checkbox\", className, {\n \"jkl-checkbox--inline\": inline,\n \"jkl-checkbox--error\": invalid,\n })}\n data-density={density}\n >\n <input\n id={inputId}\n ref={inputRef}\n className=\"jkl-checkbox__input\"\n data-testid=\"jkl-checkbox-input\"\n aria-invalid={invalid}\n type=\"checkbox\"\n data-testautoid={testAutoId}\n checked={checked}\n {...rest}\n />\n <label htmlFor={inputId} className=\"jkl-checkbox__label\">\n <span className=\"jkl-checkbox__mark\">\n <span className=\"jkl-checkbox__indeterminate-mark\" />\n <span className=\"jkl-checkbox__check-mark\" />\n </span>\n <span className=\"jkl-checkbox__text\">{children}</span>\n </label>\n </div>\n );\n});\n\nCheckbox.displayName = \"Checkbox\";\n"],"names":["Checkbox","forwardRef","props","ref","id","children","invalid","className","inline","density","testAutoId","checked","indeterminate","rest","inputRef","useRef","useImperativeHandle","current","inputId","useId","generateSuffix","useEffect","process","env","NODE_ENV","console","warn","jsxs","clsx","jsx","type","htmlFor","displayName"],"mappings":"yNA6BaA,EAAWC,EAAAA,YAA4C,CAACC,EAAOC,KAClE,MACFC,GAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,OAAAA,GAAS,EACTC,QAAAA,EACA,kBAAmBC,EACnBC,QAAAA,EACAC,cAAAA,KACGC,GACHX,EAEEY,EAAWC,SAAyB,MAC1CC,EAAAA,oBAAoBb,GAAK,IAAMW,EAASG,SAAU,IAE5C,MAAAC,EAAUC,QAAMf,GAAM,eAAgB,CAAEgB,gBAAiBhB,IAE/DiB,OAAAA,EAAAA,WAAU,MACU,IAAZV,IAAsC,IAAlBC,GAAmD,eAAzBU,QAAQC,IAAIC,UAC1DC,QAAQC,KAAK,wFAEbZ,EAASG,UACTH,EAASG,QAAQL,eAAiBD,KAAaC,KAEpD,CAACD,EAASC,IAGTe,EAAAA,KAAC,MAAA,CACGpB,UAAWqB,EAAAA,KAAK,eAAgBrB,EAAW,CACvC,uBAAwBC,EACxB,sBAAuBF,IAE3B,eAAcG,EAEdJ,SAAA,CAAAwB,EAAAA,IAAC,QAAA,CACGzB,GAAIc,EACJf,IAAKW,EACLP,UAAU,sBACV,cAAY,qBACZ,eAAcD,EACdwB,KAAK,WACL,kBAAiBpB,EACjBC,QAAAA,KACIE,IAEPc,EAAAA,KAAA,QAAA,CAAMI,QAASb,EAASX,UAAU,sBAC/BF,SAAA,CAACsB,EAAAA,KAAA,OAAA,CAAKpB,UAAU,qBACZF,SAAA,CAACwB,EAAAA,IAAA,OAAA,CAAKtB,UAAU,qCAChBsB,EAAAA,IAAC,OAAK,CAAAtB,UAAU,gCAEnBsB,EAAAA,IAAA,OAAA,CAAKtB,UAAU,qBAAsBF,SAAAA,SAC1C,IAKZL,EAASgC,YAAc"}
1
+ {"version":3,"file":"Checkbox.cjs","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ReactNode,\n forwardRef,\n ChangeEventHandler,\n FocusEventHandler,\n InputHTMLAttributes,\n useEffect,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport { DataTestAutoId, Density } from \"../../core/types.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\n\nexport interface CheckboxProps\n extends DataTestAutoId,\n InputHTMLAttributes<HTMLInputElement> {\n children: ReactNode;\n name: string;\n value: string;\n checked?: boolean;\n inline?: boolean;\n className?: string;\n density?: Density;\n invalid?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n onFocus?: FocusEventHandler<HTMLInputElement>;\n onBlur?: FocusEventHandler<HTMLInputElement>;\n indeterminate?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const {\n id,\n children,\n invalid,\n className,\n inline = false,\n density,\n \"data-testautoid\": testAutoId,\n checked,\n indeterminate,\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current!, []);\n\n const inputId = useId(id || \"jkl-checkbox\", { generateSuffix: !id });\n\n useEffect(() => {\n if (\n checked === true &&\n indeterminate === true &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n \"A Checkbox can not be both checked and indeterminate, and will be treated as checked\",\n );\n }\n if (inputRef.current) {\n inputRef.current.indeterminate = !checked && !!indeterminate;\n }\n }, [checked, indeterminate]);\n\n return (\n <div\n className={clsx(\"jkl-checkbox\", className, {\n \"jkl-checkbox--inline\": inline,\n \"jkl-checkbox--error\": invalid,\n })}\n data-density={density}\n >\n <input\n id={inputId}\n ref={inputRef}\n className=\"jkl-checkbox__input\"\n data-testid=\"jkl-checkbox-input\"\n aria-invalid={invalid}\n type=\"checkbox\"\n data-testautoid={testAutoId}\n checked={checked}\n {...rest}\n />\n <label htmlFor={inputId} className=\"jkl-checkbox__label\">\n <span className=\"jkl-checkbox__mark\">\n <span className=\"jkl-checkbox__indeterminate-mark\" />\n <span className=\"jkl-checkbox__check-mark\" />\n </span>\n <span className=\"jkl-checkbox__text\">{children}</span>\n </label>\n </div>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n"],"names":["Checkbox","forwardRef","props","ref","id","children","invalid","className","inline","density","testAutoId","checked","indeterminate","rest","inputRef","useRef","useImperativeHandle","current","inputId","useId","generateSuffix","useEffect","process","env","NODE_ENV","console","warn","jsxs","clsx","jsx","type","htmlFor","displayName"],"mappings":"yNA+BaA,EAAWC,EAAAA,YACpB,CAACC,EAAOC,KACE,MACFC,GAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,OAAAA,GAAS,EACTC,QAAAA,EACA,kBAAmBC,EACnBC,QAAAA,EACAC,cAAAA,KACGC,GACHX,EAEEY,EAAWC,SAAyB,MAC1CC,EAAAA,oBAAoBb,GAAK,IAAMW,EAASG,SAAU,IAE5C,MAAAC,EAAUC,QAAMf,GAAM,eAAgB,CAAEgB,gBAAiBhB,IAE/DiB,OAAAA,EAAAA,WAAU,MAEU,IAAZV,IACkB,IAAlBC,GACyB,eAAzBU,QAAQC,IAAIC,UAEJC,QAAAC,KACJ,wFAGJZ,EAASG,UACTH,EAASG,QAAQL,eAAiBD,KAAaC,KAEpD,CAACD,EAASC,IAGTe,EAAAA,KAAC,MAAA,CACGpB,UAAWqB,EAAAA,KAAK,eAAgBrB,EAAW,CACvC,uBAAwBC,EACxB,sBAAuBF,IAE3B,eAAcG,EAEdJ,SAAA,CAAAwB,EAAAA,IAAC,QAAA,CACGzB,GAAIc,EACJf,IAAKW,EACLP,UAAU,sBACV,cAAY,qBACZ,eAAcD,EACdwB,KAAK,WACL,kBAAiBpB,EACjBC,QAAAA,KACIE,IAEPc,EAAAA,KAAA,QAAA,CAAMI,QAASb,EAASX,UAAU,sBAC/BF,SAAA,CAACsB,EAAAA,KAAA,OAAA,CAAKpB,UAAU,qBACZF,SAAA,CAACwB,EAAAA,IAAA,OAAA,CAAKtB,UAAU,qCAChBsB,EAAAA,IAAC,OAAK,CAAAtB,UAAU,gCAEnBsB,EAAAA,IAAA,OAAA,CAAKtB,UAAU,qBAAsBF,SAAAA,SAC1C,IAMhBL,EAASgC,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.cjs","sources":["../../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ChangeEvent,\n FC,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Density } from \"../../core/types.js\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { useListNavigation } from \"../../hooks/useListNavigation/useListNavigation.js\";\nimport { ValuePair } from \"../../utilities/valuePair.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\nimport { CheckIcon } from \"../icon/index.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup, InputGroupProps } from \"../input-group/InputGroup.js\";\nimport { LabelProps } from \"../input-group/Label.js\";\nimport { Tag } from \"../tag/Tag.js\";\nimport { Tooltip } from \"../tooltip/Tooltip.js\";\nimport { TooltipContent } from \"../tooltip/TooltipContent.js\";\nimport { TooltipTrigger } from \"../tooltip/TooltipTrigger.js\";\n\nexport type ComboboxValuePair = ValuePair & {\n tagLabel?: string;\n isMarked?: boolean;\n};\n\nexport function getComboboxValuePair(item: string | ComboboxValuePair): ComboboxValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n\ninterface PartialChangeEvent extends Partial<Omit<ChangeEvent<HTMLElement>, \"target\">> {\n type: \"change\" | \"blur\";\n target: {\n name: string;\n value: string;\n selectedOptions: Array<ValuePair>;\n };\n}\n\ntype ChangeEventHandler = (event: PartialChangeEvent) => void;\n\ninterface ComboboxProps extends InputGroupProps {\n id?: string;\n placeholder?: string;\n labelProps?: Omit<LabelProps, \"children\" | \"density\" | \"htmlFor\" | \"standAlone\">;\n items: Array<ValuePair>;\n noMatchingOption?: string;\n label: string;\n name: string;\n value?: Array<ValuePair>;\n density?: Density;\n width?: string;\n helpLabel?: string;\n errorLabel?: string;\n className?: string;\n invalid?: boolean;\n hasTagHover?: boolean;\n onChange: ChangeEventHandler;\n onBlur?: ChangeEventHandler;\n onFocus?: ChangeEventHandler;\n}\n\nexport const Combobox: FC<ComboboxProps> = ({\n id,\n placeholder,\n items,\n onChange,\n onFocus,\n onBlur,\n value,\n label,\n noMatchingOption,\n labelProps,\n helpLabel,\n errorLabel,\n width,\n density,\n name,\n className,\n invalid,\n hasTagHover,\n}) => {\n const listId = useId(id || \"jkl-combobox\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const inputId = `${listId}_search-input`;\n\n const [selectedValue, setSelectedValue] = useState<Array<ComboboxValuePair>>(value || []);\n const [isPointingDown, setIsPointingDown] = useState<boolean>(true);\n const [showMenu, setShowMenu] = useState<boolean>(false);\n const [searchValue, setSearchValue] = useState<string>(\"\");\n const [noResults, setNoResults] = useState(false);\n const [marked, setMarked] = useState<boolean>(false);\n\n const searchRef = useRef<HTMLInputElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n\n useEffect(() => {\n setSearchValue(\"\");\n if (showMenu && searchRef.current) {\n searchRef.current.focus();\n }\n }, [showMenu]);\n\n useEffect(() => {\n setSelectedValue((prev) => value || prev);\n }, [value]);\n\n // Funksjon for å stile valgt element\n const isSelected = (option: ValuePair) => {\n if (!selectedValue) {\n return false;\n } else {\n return selectedValue.some((value) => value.value === option.value);\n }\n };\n\n // Fjerne ett eller flere valg\n const removeOption = useCallback(\n (option: string) => {\n return selectedValue.filter((value) => value.value !== option);\n },\n [selectedValue],\n );\n\n const onTagRemove = useCallback(\n (\n e: React.MouseEvent<HTMLButtonElement, globalThis.MouseEvent> | React.KeyboardEvent<HTMLInputElement>,\n option: string,\n ) => {\n let newValue = removeOption(option);\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n e.stopPropagation();\n\n if (newValue.length === 0) {\n setMarked(false);\n }\n },\n [removeOption, setSelectedValue, onChange, name, setMarked],\n );\n\n // Håndtere valgt verdi i listen\n const onItemClick = useCallback(\n (option: string) => {\n let newValue: Array<ValuePair>;\n\n if (selectedValue.some((value) => value.value === option)) {\n newValue = removeOption(option);\n } else {\n const item = items.find((i) => i.value === option);\n newValue = [...selectedValue, item as ValuePair];\n }\n searchRef.current?.focus();\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n },\n [selectedValue, setSelectedValue, onChange, name, removeOption, items],\n );\n\n // Funksjon for søk\n const onSearch = (e: { target: { value: React.SetStateAction<string> } }) => {\n searchRef.current?.focus();\n setShowMenu(true);\n setSearchValue(e.target.value);\n };\n\n const options = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n const filteredOptions = items.filter(\n (option) => option.label.toLowerCase().indexOf(searchValue.toLowerCase()) >= 0,\n );\n\n setNoResults(filteredOptions.length === 0);\n\n return filteredOptions;\n }, [searchValue, items]);\n\n // Det første elementet i listen skal være aktivt fram til brukeren klikker på noe annet\n const [activeDescendant, setActiveDescendant] = useState<string | undefined>(\n options[0]?.value ? `${listId}-${options[0]?.value}` : undefined,\n );\n\n // Håndtere arrow-state\n useEffect(() => {\n if (showMenu) {\n setIsPointingDown(false);\n } else {\n setIsPointingDown(true);\n }\n }, [showMenu]);\n\n // Lukk meny med ESC\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && showMenu) {\n setShowMenu(false);\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\" && showMenu) {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShowMenu, showMenu]);\n\n // Fokushåndtering\n const handleFocusPlacement = useCallback((isOpen: boolean) => {\n if (isOpen) {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, []);\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({\n type: \"change\",\n target: {\n name,\n value: selectedValue?.[0].value || \"\",\n selectedOptions: selectedValue,\n },\n });\n }\n focusInsideRef.current = true;\n setShowMenu(true);\n }\n }, [onFocus, selectedValue, name]);\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(showMenu, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLDivElement | HTMLInputElement | HTMLButtonElement>) => {\n const componentRootElement = componentRootElementRef.current;\n const nextFocusIsInsideComponent =\n componentRootElement && componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n setSearchValue(\"\");\n\n if (onBlur) {\n onBlur({\n type: \"blur\",\n target: {\n name,\n value: selectedValue?.[0]?.value || \"\",\n selectedOptions: selectedValue,\n },\n });\n inputRef.current?.dispatchEvent(new Event(\"focusout\", { bubbles: true }));\n }\n focusInsideRef.current = false;\n setShowMenu(false);\n }\n },\n [onBlur, name, selectedValue],\n );\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Tastaturnavigasjon\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n const listElement = dropdownRef.current;\n if (listElement) {\n listElement.querySelector<HTMLButtonElement>('[role=\"option\"]')?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShowMenu(false);\n }\n\n if ((e.metaKey && e.key === \"a\") || (e.ctrlKey && e.key === \"a\")) {\n e.preventDefault();\n e.stopPropagation();\n const updatedSelectedValue = selectedValue.map((item) => ({\n ...item,\n isMarked: true,\n }));\n setMarked(true);\n setSelectedValue(updatedSelectedValue);\n } else if (e.key === \"Backspace\") {\n e.stopPropagation();\n setMarked(false);\n\n // Sjekk om selectedValue er markert\n const selectedValueIsMarked = selectedValue.some((item) => item.isMarked);\n\n if (selectedValueIsMarked) {\n const updatedSelectedValue = selectedValue.filter((item) => !item.isMarked);\n setSelectedValue(updatedSelectedValue);\n setSearchValue(\"\");\n } else if (selectedValue.length > 0 && searchValue === \"\") {\n // Hvis ingen items er markert, fjern siste valgte item\n onTagRemove(e, selectedValue[selectedValue.length - 1].value);\n }\n }\n },\n [selectedValue, searchValue, dropdownRef, onTagRemove],\n );\n\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n if (searchRef.current) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey) {\n searchRef.current.focus();\n } else {\n setShowMenu(false);\n searchRef.current.focus();\n }\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector('[role=\"option\"]:not([hidden])');\n if (e.currentTarget.id === firstVisible?.id && searchRef.current) {\n searchRef.current.focus();\n }\n }\n }\n },\n [setShowMenu, dropdownRef],\n );\n\n const hasSelection = selectedValue.length >= 1;\n\n return (\n <InputGroup\n label={label}\n id={inputId}\n ref={componentRootElementRef}\n data-testid=\"jkl-combobox\"\n className={clsx(\"jkl-combobox\", className, {\n \"jkl-combobox--invalid\": !!errorLabel || invalid,\n \"jkl-combobox--menu-open\": showMenu,\n \"jkl-combobox--menu-closed\": !showMenu && hasSelection,\n })}\n labelProps={{\n id: labelId,\n ...labelProps,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n density={density}\n render={(inputProps) => (\n <div\n className={clsx(\"jkl-combobox__wrapper\", { \"jkl-combobox__wrapper--active-value\": hasSelection })}\n style={{ width }}\n tabIndex={-1}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div className=\"jkl-combobox__tags\" data-testid=\"jkl-combobox__tags\">\n {selectedValue.map(getComboboxValuePair).map((option) => (\n <Tag\n key={option.value}\n className={`jkl-tag ${marked && \"jkl-tag__marked\"}`}\n data-testid=\"jkl-tag\"\n dismissAction={{\n onClick: (e) => {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n onTagRemove(e, option.value);\n },\n onBlur: handleBlur,\n label: `Fjern ${option.value}`,\n }}\n >\n {hasTagHover ? (\n <Tooltip key={option.value}>\n <TooltipTrigger>\n {\" \"}\n <span aria-hidden=\"true\" data-testid=\"jkl-tag__content\">\n {option.tagLabel ? option.tagLabel : option.label}\n </span>\n </TooltipTrigger>\n <TooltipContent>{option.label}</TooltipContent>\n </Tooltip>\n ) : (\n <span aria-hidden=\"true\" data-testid=\"jkl-tag__content\">\n {option.tagLabel ? option.tagLabel : option.label}\n </span>\n )}\n </Tag>\n ))}\n <input\n {...inputProps}\n className=\"jkl-combobox__search-input\"\n onChange={onSearch}\n data-testid=\"jkl-combobox__search-input\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleSearchOnKeyDown}\n value={searchValue}\n ref={searchRef}\n aria-controls={listId}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showMenu}\n placeholder={selectedValue.length > 0 ? \"\" : placeholder}\n autoComplete=\"off\"\n />\n </div>\n\n <div\n className=\"jkl-combobox__menu\"\n role=\"listbox\"\n ref={dropdownRef}\n id={listId}\n aria-labelledby={labelId}\n aria-multiselectable=\"true\"\n aria-activedescendant={activeDescendant}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={-1}\n >\n {options.map((option, i) => (\n <button\n key={`${listId}-${option.value}`}\n type=\"button\"\n id={`${listId}__${option.value}`}\n aria-selected={isSelected(option)}\n role=\"option\"\n value={option.value}\n onBlur={handleBlur}\n className={`jkl-combobox__option ${\n isSelected(option) && \"jkl-combobox__option--selected\"\n }`}\n data-testid=\"jkl-combobox__option\"\n data-testautoid={`jkl-combobox__option-${i}`}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n setActiveDescendant(`${listId}__${option.value}`); // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#required_javascript_features\n e.stopPropagation();\n onItemClick(option.value);\n setSearchValue(\"\");\n }}\n onMouseOver={handleMouseOver}\n >\n {option.description ? (\n <span>\n {option.label}\n <span className=\"jkl-combobox__option-description\">{option.description}</span>\n </span>\n ) : (\n option.label\n )}\n {isSelected(option) ? (\n <span>\n <CheckIcon />{\" \"}\n </span>\n ) : null}\n </button>\n ))}\n {noResults && <div className=\"jkl-combobox__no-option\">{noMatchingOption}</div>}\n </div>\n <div className=\"jkl-combobox__actions\">\n <IconButton\n id={buttonId}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className=\"jkl-combobox__button\"\n data-testid=\"jkl-combobox__button\"\n aria-label={`${selectedValue.map((value) => value.label) || \"Velg\"},${label}`}\n aria-expanded={showMenu}\n aria-controls={listId}\n role=\"button\"\n onClick={() => setShowMenu(true)}\n onMouseDown={(e) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n <ArrowVerticalAnimated pointingDown={isPointingDown} />\n </IconButton>\n </div>\n </div>\n )}\n />\n );\n};\nCombobox.displayName = \"Combobox\";\n"],"names":["getComboboxValuePair","item","value","label","Combobox","id","placeholder","items","onChange","onFocus","onBlur","noMatchingOption","labelProps","helpLabel","errorLabel","width","density","name","className","invalid","hasTagHover","listId","useId","generateSuffix","labelId","buttonId","inputId","selectedValue","setSelectedValue","useState","isPointingDown","setIsPointingDown","showMenu","setShowMenu","searchValue","setSearchValue","noResults","setNoResults","marked","setMarked","searchRef","useRef","inputRef","focusInsideRef","useEffect","current","focus","prev","isSelected","option","some","removeOption","useCallback","filter","onTagRemove","e","newValue","type","target","selectedOptions","stopPropagation","length","onItemClick","find","i","_a","onSearch","options","useMemo","filteredOptions","toLowerCase","indexOf","activeDescendant","setActiveDescendant","_b","handleEscape","key","window","addEventListener","removeEventListener","handleFocusPlacement","isOpen","handleFocus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","ref","componentRootElementRef","handleBlur","componentRootElement","contains","relatedTarget","dispatchEvent","Event","bubbles","handleMouseOver","preventScroll","handleSearchOnKeyDown","preventDefault","listElement","querySelector","metaKey","ctrlKey","updatedSelectedValue","map","isMarked","handleOptionOnKeyDown","shiftKey","firstVisible","currentTarget","hasSelection","jsx","InputGroup","clsx","render","inputProps","jsxs","style","tabIndex","children","Tag","dismissAction","onClick","Tooltip","TooltipTrigger","tagLabel","TooltipContent","onKeyDown","role","autoComplete","onMouseOver","description","CheckIcon","IconButton","onMouseDown","ArrowVerticalAnimated","pointingDown","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.cjs","sources":["../../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ChangeEvent,\n FC,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Density } from \"../../core/types.js\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { useListNavigation } from \"../../hooks/useListNavigation/useListNavigation.js\";\nimport { ValuePair } from \"../../utilities/valuePair.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\nimport { CheckIcon } from \"../icon/index.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup, InputGroupProps } from \"../input-group/InputGroup.js\";\nimport { LabelProps } from \"../input-group/Label.js\";\nimport { Tag } from \"../tag/Tag.js\";\nimport { Tooltip } from \"../tooltip/Tooltip.js\";\nimport { TooltipContent } from \"../tooltip/TooltipContent.js\";\nimport { TooltipTrigger } from \"../tooltip/TooltipTrigger.js\";\n\nexport type ComboboxValuePair = ValuePair & {\n tagLabel?: string;\n isMarked?: boolean;\n};\n\nexport function getComboboxValuePair(\n item: string | ComboboxValuePair,\n): ComboboxValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n\ninterface PartialChangeEvent\n extends Partial<Omit<ChangeEvent<HTMLElement>, \"target\">> {\n type: \"change\" | \"blur\";\n target: {\n name: string;\n value: string;\n selectedOptions: Array<ValuePair>;\n };\n}\n\ntype ChangeEventHandler = (event: PartialChangeEvent) => void;\n\ninterface ComboboxProps extends InputGroupProps {\n id?: string;\n placeholder?: string;\n labelProps?: Omit<\n LabelProps,\n \"children\" | \"density\" | \"htmlFor\" | \"standAlone\"\n >;\n items: Array<ValuePair>;\n noMatchingOption?: string;\n label: string;\n name: string;\n value?: Array<ValuePair>;\n density?: Density;\n width?: string;\n helpLabel?: string;\n errorLabel?: string;\n className?: string;\n invalid?: boolean;\n hasTagHover?: boolean;\n onChange: ChangeEventHandler;\n onBlur?: ChangeEventHandler;\n onFocus?: ChangeEventHandler;\n}\n\nexport const Combobox: FC<ComboboxProps> = ({\n id,\n placeholder,\n items,\n onChange,\n onFocus,\n onBlur,\n value,\n label,\n noMatchingOption,\n labelProps,\n helpLabel,\n errorLabel,\n width,\n density,\n name,\n className,\n invalid,\n hasTagHover,\n}) => {\n const listId = useId(id || \"jkl-combobox\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const inputId = `${listId}_search-input`;\n\n const [selectedValue, setSelectedValue] = useState<\n Array<ComboboxValuePair>\n >(value || []);\n const [isPointingDown, setIsPointingDown] = useState<boolean>(true);\n const [showMenu, setShowMenu] = useState<boolean>(false);\n const [searchValue, setSearchValue] = useState<string>(\"\");\n const [noResults, setNoResults] = useState(false);\n const [marked, setMarked] = useState<boolean>(false);\n\n const searchRef = useRef<HTMLInputElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n\n useEffect(() => {\n setSearchValue(\"\");\n if (showMenu && searchRef.current) {\n searchRef.current.focus();\n }\n }, [showMenu]);\n\n useEffect(() => {\n setSelectedValue((prev) => value || prev);\n }, [value]);\n\n // Funksjon for å stile valgt element\n const isSelected = (option: ValuePair) => {\n if (!selectedValue) {\n return false;\n } else {\n return selectedValue.some((value) => value.value === option.value);\n }\n };\n\n // Fjerne ett eller flere valg\n const removeOption = useCallback(\n (option: string) => {\n return selectedValue.filter((value) => value.value !== option);\n },\n [selectedValue],\n );\n\n const onTagRemove = useCallback(\n (\n e:\n | React.MouseEvent<HTMLButtonElement, globalThis.MouseEvent>\n | React.KeyboardEvent<HTMLInputElement>,\n option: string,\n ) => {\n let newValue = removeOption(option);\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n e.stopPropagation();\n\n if (newValue.length === 0) {\n setMarked(false);\n }\n },\n [removeOption, setSelectedValue, onChange, name, setMarked],\n );\n\n // Håndtere valgt verdi i listen\n const onItemClick = useCallback(\n (option: string) => {\n let newValue: Array<ValuePair>;\n\n if (selectedValue.some((value) => value.value === option)) {\n newValue = removeOption(option);\n } else {\n const item = items.find((i) => i.value === option);\n newValue = [...selectedValue, item as ValuePair];\n }\n searchRef.current?.focus();\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n },\n [selectedValue, setSelectedValue, onChange, name, removeOption, items],\n );\n\n // Funksjon for søk\n const onSearch = (e: {\n target: { value: React.SetStateAction<string> };\n }) => {\n searchRef.current?.focus();\n setShowMenu(true);\n setSearchValue(e.target.value);\n };\n\n const options = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n const filteredOptions = items.filter(\n (option) =>\n option.label.toLowerCase().indexOf(searchValue.toLowerCase()) >=\n 0,\n );\n\n setNoResults(filteredOptions.length === 0);\n\n return filteredOptions;\n }, [searchValue, items]);\n\n // Det første elementet i listen skal være aktivt fram til brukeren klikker på noe annet\n const [activeDescendant, setActiveDescendant] = useState<\n string | undefined\n >(options[0]?.value ? `${listId}-${options[0]?.value}` : undefined);\n\n // Håndtere arrow-state\n useEffect(() => {\n if (showMenu) {\n setIsPointingDown(false);\n } else {\n setIsPointingDown(true);\n }\n }, [showMenu]);\n\n // Lukk meny med ESC\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && showMenu) {\n setShowMenu(false);\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\" && showMenu) {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShowMenu, showMenu]);\n\n // Fokushåndtering\n const handleFocusPlacement = useCallback((isOpen: boolean) => {\n if (isOpen) {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, []);\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({\n type: \"change\",\n target: {\n name,\n value: selectedValue?.[0].value || \"\",\n selectedOptions: selectedValue,\n },\n });\n }\n focusInsideRef.current = true;\n setShowMenu(true);\n }\n }, [onFocus, selectedValue, name]);\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(showMenu, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n\n const handleBlur = useCallback(\n (\n e: FocusEvent<\n HTMLDivElement | HTMLInputElement | HTMLButtonElement\n >,\n ) => {\n const componentRootElement = componentRootElementRef.current;\n const nextFocusIsInsideComponent =\n componentRootElement &&\n componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n setSearchValue(\"\");\n\n if (onBlur) {\n onBlur({\n type: \"blur\",\n target: {\n name,\n value: selectedValue?.[0]?.value || \"\",\n selectedOptions: selectedValue,\n },\n });\n inputRef.current?.dispatchEvent(\n new Event(\"focusout\", { bubbles: true }),\n );\n }\n focusInsideRef.current = false;\n setShowMenu(false);\n }\n },\n [onBlur, name, selectedValue],\n );\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Tastaturnavigasjon\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n const listElement = dropdownRef.current;\n if (listElement) {\n listElement\n .querySelector<HTMLButtonElement>('[role=\"option\"]')\n ?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShowMenu(false);\n }\n\n if ((e.metaKey && e.key === \"a\") || (e.ctrlKey && e.key === \"a\")) {\n e.preventDefault();\n e.stopPropagation();\n const updatedSelectedValue = selectedValue.map((item) => ({\n ...item,\n isMarked: true,\n }));\n setMarked(true);\n setSelectedValue(updatedSelectedValue);\n } else if (e.key === \"Backspace\") {\n e.stopPropagation();\n setMarked(false);\n\n // Sjekk om selectedValue er markert\n const selectedValueIsMarked = selectedValue.some(\n (item) => item.isMarked,\n );\n\n if (selectedValueIsMarked) {\n const updatedSelectedValue = selectedValue.filter(\n (item) => !item.isMarked,\n );\n setSelectedValue(updatedSelectedValue);\n setSearchValue(\"\");\n } else if (selectedValue.length > 0 && searchValue === \"\") {\n // Hvis ingen items er markert, fjern siste valgte item\n onTagRemove(\n e,\n selectedValue[selectedValue.length - 1].value,\n );\n }\n }\n },\n [selectedValue, searchValue, dropdownRef, onTagRemove],\n );\n\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n if (searchRef.current) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey) {\n searchRef.current.focus();\n } else {\n setShowMenu(false);\n searchRef.current.focus();\n }\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector(\n '[role=\"option\"]:not([hidden])',\n );\n if (\n e.currentTarget.id === firstVisible?.id &&\n searchRef.current\n ) {\n searchRef.current.focus();\n }\n }\n }\n },\n [setShowMenu, dropdownRef],\n );\n\n const hasSelection = selectedValue.length >= 1;\n\n return (\n <InputGroup\n label={label}\n id={inputId}\n ref={componentRootElementRef}\n data-testid=\"jkl-combobox\"\n className={clsx(\"jkl-combobox\", className, {\n \"jkl-combobox--invalid\": !!errorLabel || invalid,\n \"jkl-combobox--menu-open\": showMenu,\n \"jkl-combobox--menu-closed\": !showMenu && hasSelection,\n })}\n labelProps={{\n id: labelId,\n ...labelProps,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n density={density}\n render={(inputProps) => (\n <div\n className={clsx(\"jkl-combobox__wrapper\", {\n \"jkl-combobox__wrapper--active-value\": hasSelection,\n })}\n style={{ width }}\n tabIndex={-1}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div\n className=\"jkl-combobox__tags\"\n data-testid=\"jkl-combobox__tags\"\n >\n {selectedValue\n .map(getComboboxValuePair)\n .map((option) => (\n <Tag\n key={option.value}\n className={`jkl-tag ${\n marked && \"jkl-tag__marked\"\n }`}\n data-testid=\"jkl-tag\"\n dismissAction={{\n onClick: (e) => {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n onTagRemove(e, option.value);\n },\n onBlur: handleBlur,\n label: `Fjern ${option.value}`,\n }}\n >\n {hasTagHover ? (\n <Tooltip key={option.value}>\n <TooltipTrigger>\n {\" \"}\n <span\n aria-hidden=\"true\"\n data-testid=\"jkl-tag__content\"\n >\n {option.tagLabel\n ? option.tagLabel\n : option.label}\n </span>\n </TooltipTrigger>\n <TooltipContent>\n {option.label}\n </TooltipContent>\n </Tooltip>\n ) : (\n <span\n aria-hidden=\"true\"\n data-testid=\"jkl-tag__content\"\n >\n {option.tagLabel\n ? option.tagLabel\n : option.label}\n </span>\n )}\n </Tag>\n ))}\n <input\n {...inputProps}\n className=\"jkl-combobox__search-input\"\n onChange={onSearch}\n data-testid=\"jkl-combobox__search-input\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleSearchOnKeyDown}\n value={searchValue}\n ref={searchRef}\n aria-controls={listId}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showMenu}\n placeholder={\n selectedValue.length > 0 ? \"\" : placeholder\n }\n autoComplete=\"off\"\n />\n </div>\n\n <div\n className=\"jkl-combobox__menu\"\n role=\"listbox\"\n ref={dropdownRef}\n id={listId}\n aria-labelledby={labelId}\n aria-multiselectable=\"true\"\n aria-activedescendant={activeDescendant}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={-1}\n >\n {options.map((option, i) => (\n <button\n key={`${listId}-${option.value}`}\n type=\"button\"\n id={`${listId}__${option.value}`}\n aria-selected={isSelected(option)}\n role=\"option\"\n value={option.value}\n onBlur={handleBlur}\n className={`jkl-combobox__option ${\n isSelected(option) &&\n \"jkl-combobox__option--selected\"\n }`}\n data-testid=\"jkl-combobox__option\"\n data-testautoid={`jkl-combobox__option-${i}`}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n setActiveDescendant(\n `${listId}__${option.value}`,\n ); // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#required_javascript_features\n e.stopPropagation();\n onItemClick(option.value);\n setSearchValue(\"\");\n }}\n onMouseOver={handleMouseOver}\n >\n {option.description ? (\n <span>\n {option.label}\n <span className=\"jkl-combobox__option-description\">\n {option.description}\n </span>\n </span>\n ) : (\n option.label\n )}\n {isSelected(option) ? (\n <span>\n <CheckIcon />{\" \"}\n </span>\n ) : null}\n </button>\n ))}\n {noResults && (\n <div className=\"jkl-combobox__no-option\">\n {noMatchingOption}\n </div>\n )}\n </div>\n <div className=\"jkl-combobox__actions\">\n <IconButton\n id={buttonId}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className=\"jkl-combobox__button\"\n data-testid=\"jkl-combobox__button\"\n aria-label={`${\n selectedValue.map((value) => value.label) ||\n \"Velg\"\n },${label}`}\n aria-expanded={showMenu}\n aria-controls={listId}\n role=\"button\"\n onClick={() => setShowMenu(true)}\n onMouseDown={(e) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n <ArrowVerticalAnimated\n pointingDown={isPointingDown}\n />\n </IconButton>\n </div>\n </div>\n )}\n />\n );\n};\nCombobox.displayName = \"Combobox\";\n"],"names":["getComboboxValuePair","item","value","label","Combobox","id","placeholder","items","onChange","onFocus","onBlur","noMatchingOption","labelProps","helpLabel","errorLabel","width","density","name","className","invalid","hasTagHover","listId","useId","generateSuffix","labelId","buttonId","inputId","selectedValue","setSelectedValue","useState","isPointingDown","setIsPointingDown","showMenu","setShowMenu","searchValue","setSearchValue","noResults","setNoResults","marked","setMarked","searchRef","useRef","inputRef","focusInsideRef","useEffect","current","focus","prev","isSelected","option","some","removeOption","useCallback","filter","onTagRemove","e","newValue","type","target","selectedOptions","stopPropagation","length","onItemClick","find","i","_a","onSearch","options","useMemo","filteredOptions","toLowerCase","indexOf","activeDescendant","setActiveDescendant","_b","handleEscape","key","window","addEventListener","removeEventListener","handleFocusPlacement","isOpen","handleFocus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","ref","componentRootElementRef","handleBlur","componentRootElement","contains","relatedTarget","dispatchEvent","Event","bubbles","handleMouseOver","preventScroll","handleSearchOnKeyDown","preventDefault","listElement","querySelector","metaKey","ctrlKey","updatedSelectedValue","map","isMarked","handleOptionOnKeyDown","shiftKey","firstVisible","currentTarget","hasSelection","jsx","InputGroup","clsx","render","inputProps","jsxs","style","tabIndex","children","Tag","dismissAction","onClick","Tooltip","TooltipTrigger","tagLabel","TooltipContent","onKeyDown","role","autoComplete","onMouseOver","description","CheckIcon","IconButton","onMouseDown","ArrowVerticalAnimated","pointingDown","displayName"],"mappings":"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"}
@@ -1 +1 @@
1
- export { Combobox, getComboboxValuePair, type ComboboxValuePair } from './Combobox.cjs';
1
+ export { Combobox, getComboboxValuePair, type ComboboxValuePair, } from './Combobox.cjs';
@@ -1 +1 @@
1
- {"version":3,"file":"CookieConsent.cjs","sources":["../../../../src/components/cookie-consent/CookieConsent.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { usePreviousValue } from \"../../hooks/usePreviousValue/usePreviousValue.js\";\nimport { useCookieConsentState } from \"./CookieConsentContext.js\";\nimport { CookieConsentModal } from \"./CookieConsentModal.js\";\nimport { setConsentCookie } from \"./cookieConsentUtils.js\";\nimport { AcceptConsentCallback, Consent } from \"./types.js\";\n\nexport interface CookieConsentProps {\n blocking?: boolean;\n onAccept?: AcceptConsentCallback;\n}\n\nexport const CookieConsent = ({ blocking, onAccept, ...rest }: CookieConsentProps): JSX.Element | null => {\n const { dispatch, consent, cookieName, cookieDomain } = useCookieConsentState();\n const prevConsent = usePreviousValue(consent);\n\n useEffect(() => {\n if (onAccept) {\n // Prevent onAccept from being triggered every time state changes\\\n if (consent !== prevConsent) {\n onAccept(consent);\n }\n }\n }, [onAccept, consent, prevConsent]);\n\n // Cookies are disabled in the browser\n if (typeof navigator !== \"undefined\" && !navigator.cookieEnabled) {\n if (onAccept) {\n onAccept({\n functional: \"denied\",\n marketing: \"denied\",\n statistics: \"denied\",\n });\n }\n\n return null;\n }\n\n const handleAccept = (newConsent: Partial<Consent>) => {\n // Filter out null values from the new consent\n const newConsentWithoutNullValues = Object.fromEntries(\n Object.entries(newConsent).filter(([, value]) => value != null),\n );\n\n // Merge the existing consent with the new consent\n const updatedConsent: Consent = {\n ...consent,\n ...newConsentWithoutNullValues,\n };\n\n dispatch({ type: \"UPDATE_CONSENT\", payload: updatedConsent });\n dispatch({ type: \"SET_SHOW_CONSENT\", payload: false });\n setConsentCookie({ consent: updatedConsent, name: cookieName, domain: cookieDomain });\n };\n\n // This returns different variants of consents based on the behavior required to get the consent\n // Blocking implies a blocking modal demanding an active action before the user can interact with the application\n if (blocking) {\n return <CookieConsentModal {...rest} onAccept={handleAccept} />;\n }\n\n return null;\n};\n"],"names":["blocking","onAccept","rest","dispatch","consent","cookieName","cookieDomain","useCookieConsentState","prevConsent","usePreviousValue","useEffect","navigator","cookieEnabled","functional","marketing","statistics","jsx","CookieConsentModal","newConsent","newConsentWithoutNullValues","Object","fromEntries","entries","filter","value","updatedConsent","type","payload","setConsentCookie","name","domain"],"mappings":"iVAY6B,EAAGA,SAAAA,EAAUC,SAAAA,KAAaC,MACnD,MAAQC,SAAAA,EAAUC,QAAAA,EAASC,WAAAA,EAAYC,aAAAA,GAAiBC,EAAAA,wBAClDC,EAAcC,mBAAiBL,GAYrC,GAVAM,EAAAA,WAAU,KACFT,GAEIG,IAAYI,GACZP,EAASG,EAAO,GAGzB,CAACH,EAAUG,EAASI,WAGZG,UAAc,MAAgBA,UAAUC,cAC/C,OAAIX,GACSA,EAAA,CACLY,WAAY,SACZC,UAAW,SACXC,WAAY,WAIb,KAsBX,OAAIf,EACQgB,EAAAA,IAAAC,EAAAA,mBAAA,IAAuBf,EAAMD,SApBnBiB,IAElB,MAAMC,EAA8BC,OAAOC,YACvCD,OAAOE,QAAQJ,GAAYK,QAAO,GAAIC,KAAoB,MAATA,KAI/CC,EAA0B,IACzBrB,KACAe,GAGPhB,EAAS,CAAEuB,KAAM,iBAAkBC,QAASF,IAC5CtB,EAAS,CAAEuB,KAAM,mBAAoBC,SAAS,IAC9CC,mBAAiB,CAAExB,QAASqB,EAAgBI,KAAMxB,EAAYyB,OAAQxB,GAAc,IASjF"}
1
+ {"version":3,"file":"CookieConsent.cjs","sources":["../../../../src/components/cookie-consent/CookieConsent.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { usePreviousValue } from \"../../hooks/usePreviousValue/usePreviousValue.js\";\nimport { useCookieConsentState } from \"./CookieConsentContext.js\";\nimport { CookieConsentModal } from \"./CookieConsentModal.js\";\nimport { setConsentCookie } from \"./cookieConsentUtils.js\";\nimport { AcceptConsentCallback, Consent } from \"./types.js\";\n\nexport interface CookieConsentProps {\n blocking?: boolean;\n onAccept?: AcceptConsentCallback;\n}\n\nexport const CookieConsent = ({\n blocking,\n onAccept,\n ...rest\n}: CookieConsentProps): JSX.Element | null => {\n const { dispatch, consent, cookieName, cookieDomain } =\n useCookieConsentState();\n const prevConsent = usePreviousValue(consent);\n\n useEffect(() => {\n if (onAccept) {\n // Prevent onAccept from being triggered every time state changes\\\n if (consent !== prevConsent) {\n onAccept(consent);\n }\n }\n }, [onAccept, consent, prevConsent]);\n\n // Cookies are disabled in the browser\n if (typeof navigator !== \"undefined\" && !navigator.cookieEnabled) {\n if (onAccept) {\n onAccept({\n functional: \"denied\",\n marketing: \"denied\",\n statistics: \"denied\",\n });\n }\n\n return null;\n }\n\n const handleAccept = (newConsent: Partial<Consent>) => {\n // Filter out null values from the new consent\n const newConsentWithoutNullValues = Object.fromEntries(\n Object.entries(newConsent).filter(([, value]) => value != null),\n );\n\n // Merge the existing consent with the new consent\n const updatedConsent: Consent = {\n ...consent,\n ...newConsentWithoutNullValues,\n };\n\n dispatch({ type: \"UPDATE_CONSENT\", payload: updatedConsent });\n dispatch({ type: \"SET_SHOW_CONSENT\", payload: false });\n setConsentCookie({\n consent: updatedConsent,\n name: cookieName,\n domain: cookieDomain,\n });\n };\n\n // This returns different variants of consents based on the behavior required to get the consent\n // Blocking implies a blocking modal demanding an active action before the user can interact with the application\n if (blocking) {\n return <CookieConsentModal {...rest} onAccept={handleAccept} />;\n }\n\n return null;\n};\n"],"names":["blocking","onAccept","rest","dispatch","consent","cookieName","cookieDomain","useCookieConsentState","prevConsent","usePreviousValue","useEffect","navigator","cookieEnabled","functional","marketing","statistics","jsx","CookieConsentModal","newConsent","newConsentWithoutNullValues","Object","fromEntries","entries","filter","value","updatedConsent","type","payload","setConsentCookie","name","domain"],"mappings":"iVAY6B,EACzBA,SAAAA,EACAC,SAAAA,KACGC,MAEH,MAAQC,SAAAA,EAAUC,QAAAA,EAASC,WAAAA,EAAYC,aAAAA,GACnCC,EAAAA,wBACEC,EAAcC,mBAAiBL,GAYrC,GAVAM,EAAAA,WAAU,KACFT,GAEIG,IAAYI,GACZP,EAASG,EAAO,GAGzB,CAACH,EAAUG,EAASI,WAGZG,UAAc,MAAgBA,UAAUC,cAC/C,OAAIX,GACSA,EAAA,CACLY,WAAY,SACZC,UAAW,SACXC,WAAY,WAIb,KA0BX,OAAIf,EACQgB,EAAAA,IAAAC,EAAAA,mBAAA,IAAuBf,EAAMD,SAxBnBiB,IAElB,MAAMC,EAA8BC,OAAOC,YACvCD,OAAOE,QAAQJ,GAAYK,QAAO,GAAIC,KAAoB,MAATA,KAI/CC,EAA0B,IACzBrB,KACAe,GAGPhB,EAAS,CAAEuB,KAAM,iBAAkBC,QAASF,IAC5CtB,EAAS,CAAEuB,KAAM,mBAAoBC,SAAS,IAC7BC,mBAAA,CACbxB,QAASqB,EACTI,KAAMxB,EACNyB,OAAQxB,GACX,IASE"}
@@ -1 +1 @@
1
- {"version":3,"file":"CookieConsentContext.cjs","sources":["../../../../src/components/cookie-consent/CookieConsentContext.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\nimport { buildRequirementsObject, getConsentCookie, shouldShowConsentDialog } from \"./cookieConsentUtils.js\";\nimport { Consent, ConsentRequirement } from \"./types.js\";\n\n// https://kentcdodds.com/blog/how-to-use-react-context-effectively\n\ninterface SetShowConsentAction {\n type: \"SET_SHOW_CONSENT\";\n payload: boolean;\n}\n\ninterface SetShowSettingsAction {\n type: \"SET_SHOW_SETTINGS\";\n payload: boolean;\n}\n\ninterface UpdateConsentAction {\n type: \"UPDATE_CONSENT\";\n payload: Consent;\n}\n\ninterface UpdateRequirementsAction {\n type: \"UPDATE_REQUIREMENTS\";\n payload: ConsentRequirement;\n}\n\ntype Action = SetShowConsentAction | UpdateConsentAction | SetShowSettingsAction | UpdateRequirementsAction;\ntype Dispatch = (action: Action) => void;\n\ninterface State {\n isOpen: boolean;\n showSettings: boolean;\n requirement: ConsentRequirement;\n consent: Consent;\n}\n\nexport const DEFAULT_COOKIE_NAME = \"fremtind-cookie-consent\";\n\nconst CookieConsentContext = React.createContext<\n { state: State; dispatch: Dispatch; cookieName: string; cookieDomain?: string } | undefined\n>(undefined);\n\nconst cookieConsentReducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"SET_SHOW_CONSENT\":\n return { ...state, isOpen: action.payload };\n\n case \"SET_SHOW_SETTINGS\":\n return {\n ...state,\n showSettings: action.payload,\n };\n\n case \"UPDATE_CONSENT\":\n return {\n ...state,\n consent: {\n ...state.consent,\n ...action.payload,\n },\n };\n\n case \"UPDATE_REQUIREMENTS\":\n return {\n ...state,\n requirement: {\n ...state.requirement,\n ...action.payload,\n },\n };\n\n default: {\n // @ts-ignore Denne skal ikke oppstå, men den _kan_ oppstå\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n};\n\nexport interface CookieConsentProviderProps extends Partial<ConsentRequirement>, WithChildren {\n cookieAdapter?: () => Consent | undefined;\n cookieName?: string;\n cookieDomain?: string;\n}\n\nconst CookieConsentProvider: React.FC<CookieConsentProviderProps> = ({\n children,\n cookieAdapter,\n marketing,\n functional,\n statistics,\n cookieName = DEFAULT_COOKIE_NAME,\n cookieDomain,\n}) => {\n // Load existing consent at initial render\n const consentCookie = useMemo(() => {\n return (\n getConsentCookie({ adapter: cookieAdapter, name: cookieName }) ?? {\n marketing: null,\n functional: null,\n statistics: null,\n }\n );\n }, [cookieAdapter, cookieName]);\n\n const requirement = useMemo(\n () => buildRequirementsObject({ marketing, functional, statistics }),\n [marketing, functional, statistics],\n );\n\n const [state, dispatch] = React.useReducer(cookieConsentReducer, {\n isOpen: false,\n showSettings: false,\n requirement,\n consent: consentCookie,\n });\n\n useEffect(() => {\n if (shouldShowConsentDialog(requirement, consentCookie)) {\n dispatch({ type: \"SET_SHOW_CONSENT\", payload: true });\n } else if (consentCookie) {\n dispatch({ type: \"UPDATE_CONSENT\", payload: consentCookie });\n }\n }, [requirement, consentCookie]);\n\n const value = { state, dispatch, cookieName, cookieDomain };\n return <CookieConsentContext.Provider value={value}>{children}</CookieConsentContext.Provider>;\n};\n\ninterface UseCookieConsentState extends State {\n dispatch: Dispatch;\n cookieName: string;\n cookieDomain?: string;\n}\n\n// control and state for internal use\nconst useCookieConsentState = (): UseCookieConsentState => {\n const context = React.useContext(CookieConsentContext);\n if (context === undefined) {\n throw new Error(\"useCookieConsentState must be used within a CookieConsentProvider\");\n }\n\n return {\n dispatch: context.dispatch,\n cookieName: context.cookieName,\n cookieDomain: context.cookieDomain,\n ...context.state,\n };\n};\n\ntype UseCookieConsent = {\n openConsentModalWithSettings: () => void;\n openConsentModalWithDefaults: () => void;\n /** Se hvilke samtykker som er gitt, om du for eksempel trenger styre UI basert på samtykker. */\n consents: Consent;\n};\n\n// expose functionality to be used by consumers\nconst useCookieConsent = (): UseCookieConsent => {\n const context = React.useContext(CookieConsentContext);\n if (context === undefined) {\n throw new Error(\"useCookieConsent must be used within a CookieConsentProvider\");\n }\n\n const openConsentModalWithSettings = () => {\n context.dispatch({ type: \"SET_SHOW_CONSENT\", payload: true });\n context.dispatch({ type: \"SET_SHOW_SETTINGS\", payload: true });\n };\n\n const openConsentModalWithDefaults = () => {\n context.dispatch({ type: \"SET_SHOW_CONSENT\", payload: true });\n context.dispatch({ type: \"SET_SHOW_SETTINGS\", payload: false });\n };\n\n const consents = context.state.consent;\n\n return { openConsentModalWithSettings, openConsentModalWithDefaults, consents };\n};\n\nexport { CookieConsentProvider, useCookieConsent, useCookieConsentState };\n"],"names":["DEFAULT_COOKIE_NAME","CookieConsentContext","React","createContext","cookieConsentReducer","state","action","type","isOpen","payload","showSettings","consent","requirement","Error","children","cookieAdapter","marketing","functional","statistics","cookieName","cookieDomain","consentCookie","useMemo","getConsentCookie","adapter","name","buildRequirementsObject","dispatch","useReducer","useEffect","shouldShowConsentDialog","value","jsx","Provider","context","useContext","openConsentModalWithSettings","openConsentModalWithDefaults","consents"],"mappings":"8KAqCaA,EAAsB,0BAE7BC,EAAuBC,EAAMC,mBAEjC,GAEIC,EAAuB,CAACC,EAAcC,KACxC,OAAQA,EAAOC,MACX,IAAK,mBACD,MAAO,IAAKF,EAAOG,OAAQF,EAAOG,SAEtC,IAAK,oBACM,MAAA,IACAJ,EACHK,aAAcJ,EAAOG,SAG7B,IAAK,iBACM,MAAA,IACAJ,EACHM,QAAS,IACFN,EAAMM,WACNL,EAAOG,UAItB,IAAK,sBACM,MAAA,IACAJ,EACHO,YAAa,IACNP,EAAMO,eACNN,EAAOG,UAItB,QAEI,MAAM,IAAII,MAAM,0BAA0BP,EAAOC,QAEzD,gCASgE,EAChEO,SAAAA,EACAC,cAAAA,EACAC,UAAAA,EACAC,WAAAA,EACAC,WAAAA,EACAC,WAAAA,EAAanB,EACboB,aAAAA,MAGM,MAAAC,EAAgBC,EAAAA,SAAQ,IAEtBC,EAAAA,iBAAiB,CAAEC,QAAST,EAAeU,KAAMN,KAAiB,CAC9DH,UAAW,KACXC,WAAY,KACZC,WAAY,OAGrB,CAACH,EAAeI,IAEbP,EAAcU,EAAAA,SAChB,IAAMI,EAAwBA,wBAAA,CAAEV,UAAAA,EAAWC,WAAAA,EAAYC,WAAAA,KACvD,CAACF,EAAWC,EAAYC,KAGrBb,EAAOsB,GAAYzB,EAAM0B,WAAWxB,EAAsB,CAC7DI,QAAQ,EACRE,cAAc,EACdE,YAAAA,EACAD,QAASU,IAGbQ,EAAAA,WAAU,KACFC,EAAAA,wBAAwBlB,EAAaS,GACrCM,EAAS,CAAEpB,KAAM,mBAAoBE,SAAS,IACvCY,GACPM,EAAS,CAAEpB,KAAM,iBAAkBE,QAASY,GAAe,GAEhE,CAACT,EAAaS,IAEjB,MAAMU,EAAQ,CAAE1B,MAAAA,EAAOsB,SAAAA,EAAUR,WAAAA,EAAYC,aAAAA,GAC7C,OAAQY,EAAAA,IAAA/B,EAAqBgC,SAArB,CAA8BF,MAAAA,EAAejB,SAAAA,GAAS,yDAgCzC,KACf,MAAAoB,EAAUhC,EAAMiC,WAAWlC,GACjC,QAAgB,IAAZiC,EACM,MAAA,IAAIrB,MAAM,gEAeb,MAAA,CAAEuB,6BAZ4B,KACjCF,EAAQP,SAAS,CAAEpB,KAAM,mBAAoBE,SAAS,IACtDyB,EAAQP,SAAS,CAAEpB,KAAM,oBAAqBE,SAAS,GAAM,EAU1B4B,6BAPF,KACjCH,EAAQP,SAAS,CAAEpB,KAAM,mBAAoBE,SAAS,IACtDyB,EAAQP,SAAS,CAAEpB,KAAM,oBAAqBE,SAAS,GAAO,EAKG6B,SAFpDJ,EAAQ7B,MAAMM,wCAtCL,KACpB,MAAAuB,EAAUhC,EAAMiC,WAAWlC,GACjC,QAAgB,IAAZiC,EACM,MAAA,IAAIrB,MAAM,qEAGb,MAAA,CACHc,SAAUO,EAAQP,SAClBR,WAAYe,EAAQf,WACpBC,aAAcc,EAAQd,gBACnBc,EAAQ7B,MAAA"}
1
+ {"version":3,"file":"CookieConsentContext.cjs","sources":["../../../../src/components/cookie-consent/CookieConsentContext.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\nimport {\n buildRequirementsObject,\n getConsentCookie,\n shouldShowConsentDialog,\n} from \"./cookieConsentUtils.js\";\nimport { Consent, ConsentRequirement } from \"./types.js\";\n\n// https://kentcdodds.com/blog/how-to-use-react-context-effectively\n\ninterface SetShowConsentAction {\n type: \"SET_SHOW_CONSENT\";\n payload: boolean;\n}\n\ninterface SetShowSettingsAction {\n type: \"SET_SHOW_SETTINGS\";\n payload: boolean;\n}\n\ninterface UpdateConsentAction {\n type: \"UPDATE_CONSENT\";\n payload: Consent;\n}\n\ninterface UpdateRequirementsAction {\n type: \"UPDATE_REQUIREMENTS\";\n payload: ConsentRequirement;\n}\n\ntype Action =\n | SetShowConsentAction\n | UpdateConsentAction\n | SetShowSettingsAction\n | UpdateRequirementsAction;\ntype Dispatch = (action: Action) => void;\n\ninterface State {\n isOpen: boolean;\n showSettings: boolean;\n requirement: ConsentRequirement;\n consent: Consent;\n}\n\nexport const DEFAULT_COOKIE_NAME = \"fremtind-cookie-consent\";\n\nconst CookieConsentContext = React.createContext<\n | {\n state: State;\n dispatch: Dispatch;\n cookieName: string;\n cookieDomain?: string;\n }\n | undefined\n>(undefined);\n\nconst cookieConsentReducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"SET_SHOW_CONSENT\":\n return { ...state, isOpen: action.payload };\n\n case \"SET_SHOW_SETTINGS\":\n return {\n ...state,\n showSettings: action.payload,\n };\n\n case \"UPDATE_CONSENT\":\n return {\n ...state,\n consent: {\n ...state.consent,\n ...action.payload,\n },\n };\n\n case \"UPDATE_REQUIREMENTS\":\n return {\n ...state,\n requirement: {\n ...state.requirement,\n ...action.payload,\n },\n };\n\n default: {\n // @ts-ignore Denne skal ikke oppstå, men den _kan_ oppstå\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n};\n\nexport interface CookieConsentProviderProps\n extends Partial<ConsentRequirement>,\n WithChildren {\n cookieAdapter?: () => Consent | undefined;\n cookieName?: string;\n cookieDomain?: string;\n}\n\nconst CookieConsentProvider: React.FC<CookieConsentProviderProps> = ({\n children,\n cookieAdapter,\n marketing,\n functional,\n statistics,\n cookieName = DEFAULT_COOKIE_NAME,\n cookieDomain,\n}) => {\n // Load existing consent at initial render\n const consentCookie = useMemo(() => {\n return (\n getConsentCookie({ adapter: cookieAdapter, name: cookieName }) ?? {\n marketing: null,\n functional: null,\n statistics: null,\n }\n );\n }, [cookieAdapter, cookieName]);\n\n const requirement = useMemo(\n () => buildRequirementsObject({ marketing, functional, statistics }),\n [marketing, functional, statistics],\n );\n\n const [state, dispatch] = React.useReducer(cookieConsentReducer, {\n isOpen: false,\n showSettings: false,\n requirement,\n consent: consentCookie,\n });\n\n useEffect(() => {\n if (shouldShowConsentDialog(requirement, consentCookie)) {\n dispatch({ type: \"SET_SHOW_CONSENT\", payload: true });\n } else if (consentCookie) {\n dispatch({ type: \"UPDATE_CONSENT\", payload: consentCookie });\n }\n }, [requirement, consentCookie]);\n\n const value = { state, dispatch, cookieName, cookieDomain };\n return (\n <CookieConsentContext.Provider value={value}>\n {children}\n </CookieConsentContext.Provider>\n );\n};\n\ninterface UseCookieConsentState extends State {\n dispatch: Dispatch;\n cookieName: string;\n cookieDomain?: string;\n}\n\n// control and state for internal use\nconst useCookieConsentState = (): UseCookieConsentState => {\n const context = React.useContext(CookieConsentContext);\n if (context === undefined) {\n throw new Error(\n \"useCookieConsentState must be used within a CookieConsentProvider\",\n );\n }\n\n return {\n dispatch: context.dispatch,\n cookieName: context.cookieName,\n cookieDomain: context.cookieDomain,\n ...context.state,\n };\n};\n\ntype UseCookieConsent = {\n openConsentModalWithSettings: () => void;\n openConsentModalWithDefaults: () => void;\n /** Se hvilke samtykker som er gitt, om du for eksempel trenger styre UI basert på samtykker. */\n consents: Consent;\n};\n\n// expose functionality to be used by consumers\nconst useCookieConsent = (): UseCookieConsent => {\n const context = React.useContext(CookieConsentContext);\n if (context === undefined) {\n throw new Error(\n \"useCookieConsent must be used within a CookieConsentProvider\",\n );\n }\n\n const openConsentModalWithSettings = () => {\n context.dispatch({ type: \"SET_SHOW_CONSENT\", payload: true });\n context.dispatch({ type: \"SET_SHOW_SETTINGS\", payload: true });\n };\n\n const openConsentModalWithDefaults = () => {\n context.dispatch({ type: \"SET_SHOW_CONSENT\", payload: true });\n context.dispatch({ type: \"SET_SHOW_SETTINGS\", payload: false });\n };\n\n const consents = context.state.consent;\n\n return {\n openConsentModalWithSettings,\n openConsentModalWithDefaults,\n consents,\n };\n};\n\nexport { CookieConsentProvider, useCookieConsent, useCookieConsentState };\n"],"names":["DEFAULT_COOKIE_NAME","CookieConsentContext","React","createContext","cookieConsentReducer","state","action","type","isOpen","payload","showSettings","consent","requirement","Error","children","cookieAdapter","marketing","functional","statistics","cookieName","cookieDomain","consentCookie","useMemo","getConsentCookie","adapter","name","buildRequirementsObject","dispatch","useReducer","useEffect","shouldShowConsentDialog","value","jsx","Provider","context","useContext","openConsentModalWithSettings","openConsentModalWithDefaults","consents"],"mappings":"8KA6CaA,EAAsB,0BAE7BC,EAAuBC,EAAMC,mBAQjC,GAEIC,EAAuB,CAACC,EAAcC,KACxC,OAAQA,EAAOC,MACX,IAAK,mBACD,MAAO,IAAKF,EAAOG,OAAQF,EAAOG,SAEtC,IAAK,oBACM,MAAA,IACAJ,EACHK,aAAcJ,EAAOG,SAG7B,IAAK,iBACM,MAAA,IACAJ,EACHM,QAAS,IACFN,EAAMM,WACNL,EAAOG,UAItB,IAAK,sBACM,MAAA,IACAJ,EACHO,YAAa,IACNP,EAAMO,eACNN,EAAOG,UAItB,QAEI,MAAM,IAAII,MAAM,0BAA0BP,EAAOC,QAEzD,gCAWgE,EAChEO,SAAAA,EACAC,cAAAA,EACAC,UAAAA,EACAC,WAAAA,EACAC,WAAAA,EACAC,WAAAA,EAAanB,EACboB,aAAAA,MAGM,MAAAC,EAAgBC,EAAAA,SAAQ,IAEtBC,EAAAA,iBAAiB,CAAEC,QAAST,EAAeU,KAAMN,KAAiB,CAC9DH,UAAW,KACXC,WAAY,KACZC,WAAY,OAGrB,CAACH,EAAeI,IAEbP,EAAcU,EAAAA,SAChB,IAAMI,EAAwBA,wBAAA,CAAEV,UAAAA,EAAWC,WAAAA,EAAYC,WAAAA,KACvD,CAACF,EAAWC,EAAYC,KAGrBb,EAAOsB,GAAYzB,EAAM0B,WAAWxB,EAAsB,CAC7DI,QAAQ,EACRE,cAAc,EACdE,YAAAA,EACAD,QAASU,IAGbQ,EAAAA,WAAU,KACFC,EAAAA,wBAAwBlB,EAAaS,GACrCM,EAAS,CAAEpB,KAAM,mBAAoBE,SAAS,IACvCY,GACPM,EAAS,CAAEpB,KAAM,iBAAkBE,QAASY,GAAe,GAEhE,CAACT,EAAaS,IAEjB,MAAMU,EAAQ,CAAE1B,MAAAA,EAAOsB,SAAAA,EAAUR,WAAAA,EAAYC,aAAAA,GAC7C,OACKY,EAAAA,IAAA/B,EAAqBgC,SAArB,CAA8BF,MAAAA,EAC1BjB,SAAAA,GACL,yDAmCiB,KACf,MAAAoB,EAAUhC,EAAMiC,WAAWlC,GACjC,QAAgB,IAAZiC,EACA,MAAM,IAAIrB,MACN,gEAgBD,MAAA,CACHuB,6BAbiC,KACjCF,EAAQP,SAAS,CAAEpB,KAAM,mBAAoBE,SAAS,IACtDyB,EAAQP,SAAS,CAAEpB,KAAM,oBAAqBE,SAAS,GAAM,EAY7D4B,6BATiC,KACjCH,EAAQP,SAAS,CAAEpB,KAAM,mBAAoBE,SAAS,IACtDyB,EAAQP,SAAS,CAAEpB,KAAM,oBAAqBE,SAAS,GAAO,EAQ9D6B,SALaJ,EAAQ7B,MAAMM,QAK3B,gCA/CsB,KACpB,MAAAuB,EAAUhC,EAAMiC,WAAWlC,GACjC,QAAgB,IAAZiC,EACA,MAAM,IAAIrB,MACN,qEAID,MAAA,CACHc,SAAUO,EAAQP,SAClBR,WAAYe,EAAQf,WACpBC,aAAcc,EAAQd,gBACnBc,EAAQ7B,MAAA"}