@fremtind/jokul 0.71.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (586) hide show
  1. package/README.md +5 -37
  2. package/build/build-stats.html +1 -1
  3. package/build/cjs/components/autosuggest/BaseAutosuggest.cjs +1 -1
  4. package/build/cjs/components/autosuggest/BaseAutosuggest.cjs.map +1 -1
  5. package/build/cjs/components/autosuggest/Menu.cjs +1 -1
  6. package/build/cjs/components/autosuggest/Menu.cjs.map +1 -1
  7. package/build/cjs/components/button/Button.cjs +1 -1
  8. package/build/cjs/components/button/Button.cjs.map +1 -1
  9. package/build/cjs/components/card/index.cjs +1 -1
  10. package/build/cjs/components/card/index.d.cts +1 -4
  11. package/build/cjs/components/card/types.cjs +1 -1
  12. package/build/cjs/components/card/types.cjs.map +1 -1
  13. package/build/cjs/components/card/types.d.cts +0 -51
  14. package/build/cjs/components/checkbox-panel/CheckboxPanel.cjs +1 -1
  15. package/build/cjs/components/checkbox-panel/CheckboxPanel.cjs.map +1 -1
  16. package/build/cjs/components/combobox/Combobox.cjs +1 -1
  17. package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
  18. package/build/cjs/components/combobox/stories/Combobox.stories.cjs +1 -1
  19. package/build/cjs/components/combobox/stories/Combobox.stories.cjs.map +1 -1
  20. package/build/cjs/components/combobox/stories/Combobox.stories.d.cts +1 -0
  21. package/build/cjs/components/cookie-consent/CookieConsent.cjs +1 -1
  22. package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
  23. package/build/cjs/components/datepicker/DatePicker.cjs +1 -1
  24. package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
  25. package/build/cjs/components/datepicker/internal/Calendar.cjs +1 -1
  26. package/build/cjs/components/datepicker/internal/Calendar.cjs.map +1 -1
  27. package/build/cjs/components/datepicker/internal/utils.cjs +1 -1
  28. package/build/cjs/components/datepicker/internal/utils.cjs.map +1 -1
  29. package/build/cjs/components/datepicker/stories/Datepicker.stories.cjs +1 -1
  30. package/build/cjs/components/datepicker/stories/Datepicker.stories.cjs.map +1 -1
  31. package/build/cjs/components/datepicker/stories/Datepicker.stories.d.cts +13 -0
  32. package/build/cjs/components/description-list/stories/DescriptionList.stories.cjs +1 -1
  33. package/build/cjs/components/description-list/stories/DescriptionList.stories.cjs.map +1 -1
  34. package/build/cjs/components/expander/ExpandablePanel.cjs +1 -1
  35. package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
  36. package/build/cjs/components/expander/ExpandablePanelContent.cjs +1 -1
  37. package/build/cjs/components/expander/ExpandablePanelContent.cjs.map +1 -1
  38. package/build/cjs/components/expander/Expander.cjs +1 -1
  39. package/build/cjs/components/expander/Expander.cjs.map +1 -1
  40. package/build/cjs/components/expander/index.cjs +1 -1
  41. package/build/cjs/components/expander/index.d.cts +0 -1
  42. package/build/cjs/components/expander/stories/{ExpanderPanel.stories.cjs → ExpandablePanel.stories.cjs} +1 -1
  43. package/build/cjs/components/expander/stories/ExpandablePanel.stories.cjs.map +1 -0
  44. package/build/cjs/components/feedback/followup/Followup.cjs +1 -1
  45. package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
  46. package/build/cjs/components/feedback/followup/useFollowup.cjs +1 -1
  47. package/build/cjs/components/feedback/followup/useFollowup.cjs.map +1 -1
  48. package/build/cjs/components/feedback/main-question/MainQuestion.cjs +1 -1
  49. package/build/cjs/components/feedback/main-question/MainQuestion.cjs.map +1 -1
  50. package/build/cjs/components/feedback/main-question/useMainQuestion.cjs +1 -1
  51. package/build/cjs/components/feedback/main-question/useMainQuestion.cjs.map +1 -1
  52. package/build/cjs/components/feedback/questions/AddonQuestion.cjs +1 -1
  53. package/build/cjs/components/feedback/questions/AddonQuestion.cjs.map +1 -1
  54. package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs +1 -1
  55. package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs.map +1 -1
  56. package/build/cjs/components/feedback/questions/ContactQuestion.cjs +1 -1
  57. package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
  58. package/build/cjs/components/feedback/questions/RadioQuestion.cjs +1 -1
  59. package/build/cjs/components/feedback/questions/RadioQuestion.cjs.map +1 -1
  60. package/build/cjs/components/feedback/questions/SmileyQuestion.cjs +1 -1
  61. package/build/cjs/components/feedback/questions/SmileyQuestion.cjs.map +1 -1
  62. package/build/cjs/components/feedback/questions/TextQuestion.cjs +1 -1
  63. package/build/cjs/components/feedback/questions/TextQuestion.cjs.map +1 -1
  64. package/build/cjs/components/file/File.cjs.map +1 -1
  65. package/build/cjs/components/file/stories/File.stories.cjs.map +1 -1
  66. package/build/cjs/components/file/stories/File.stories.d.cts +1 -1
  67. package/build/cjs/components/file-input/FileInput.cjs.map +1 -1
  68. package/build/cjs/components/file-input/internal/Dropzone.cjs.map +1 -1
  69. package/build/cjs/components/file-input/internal/Input.cjs.map +1 -1
  70. package/build/cjs/components/file-input/internal/fileInputContext.cjs.map +1 -1
  71. package/build/cjs/components/file-input/internal/validateFileInputFiles.cjs +1 -1
  72. package/build/cjs/components/file-input/internal/validateFileInputFiles.cjs.map +1 -1
  73. package/build/cjs/components/file-input/stories/FileInput.stories.cjs.map +1 -1
  74. package/build/cjs/components/icon/stories/Icons.stories.cjs +1 -1
  75. package/build/cjs/components/image/useImageLoadingStatus.cjs +1 -1
  76. package/build/cjs/components/image/useImageLoadingStatus.cjs.map +1 -1
  77. package/build/cjs/components/input-group/InputGroup.cjs +1 -1
  78. package/build/cjs/components/input-group/InputGroup.cjs.map +1 -1
  79. package/build/cjs/components/input-group/stories/FieldGroup.stories.cjs +1 -1
  80. package/build/cjs/components/link/stories/Link.stories.cjs +1 -1
  81. package/build/cjs/components/link/stories/Link.stories.cjs.map +1 -1
  82. package/build/cjs/components/menu/Menu.cjs +1 -1
  83. package/build/cjs/components/menu/Menu.cjs.map +1 -1
  84. package/build/cjs/components/menu/MenuItemCheckbox.cjs +1 -1
  85. package/build/cjs/components/menu/MenuItemCheckbox.cjs.map +1 -1
  86. package/build/cjs/components/message/Message.cjs +1 -1
  87. package/build/cjs/components/message/Message.cjs.map +1 -1
  88. package/build/cjs/components/modal/stories/ModalCloseButton.stories.d.cts +1 -1
  89. package/build/cjs/components/modal/stories/ModalOverlay.stories.cjs +1 -1
  90. package/build/cjs/components/modal/stories/ModalOverlay.stories.cjs.map +1 -1
  91. package/build/cjs/components/popover/Popover.cjs +1 -1
  92. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  93. package/build/cjs/components/radio-panel/RadioPanel.cjs +1 -1
  94. package/build/cjs/components/radio-panel/RadioPanel.cjs.map +1 -1
  95. package/build/cjs/components/screen-reader-only/ScreenReaderOnly.cjs.map +1 -0
  96. package/build/cjs/components/screen-reader-only/ScreenReaderOnly.d.cts +3 -0
  97. package/build/cjs/components/screen-reader-only/index.cjs +2 -0
  98. package/build/cjs/components/screen-reader-only/index.d.cts +2 -0
  99. package/build/cjs/components/screen-reader-only/types.d.cts +4 -0
  100. package/build/cjs/components/select/Select.cjs +1 -1
  101. package/build/cjs/components/select/Select.cjs.map +1 -1
  102. package/build/cjs/components/select/select-utils.cjs +1 -1
  103. package/build/cjs/components/select/select-utils.cjs.map +1 -1
  104. package/build/cjs/components/system-message/SystemMessage.cjs +1 -1
  105. package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
  106. package/build/cjs/components/table/TableHeader.cjs +1 -1
  107. package/build/cjs/components/table/TableHeader.cjs.map +1 -1
  108. package/build/cjs/components/table/TableRow.cjs +1 -1
  109. package/build/cjs/components/table/TableRow.cjs.map +1 -1
  110. package/build/cjs/components/table/stories/data.cjs +2 -0
  111. package/build/cjs/components/table/stories/data.cjs.map +1 -0
  112. package/build/cjs/components/table/stories/data.d.cts +8 -0
  113. package/build/cjs/components/table/stories/table.stories.cjs +1 -1
  114. package/build/cjs/components/table/stories/table.stories.cjs.map +1 -1
  115. package/build/cjs/components/table/stories/table.stories.d.cts +10 -1
  116. package/build/cjs/components/table/stories/tableCollapsing.stories.cjs +2 -0
  117. package/build/cjs/components/table/stories/tableCollapsing.stories.cjs.map +1 -0
  118. package/build/cjs/components/table/stories/tableCollapsing.stories.d.cts +16 -0
  119. package/build/cjs/components/table/stories/tableComplex.stories.cjs +2 -0
  120. package/build/cjs/components/table/stories/tableComplex.stories.cjs.map +1 -0
  121. package/build/cjs/components/table/stories/tableComplex.stories.d.cts +21 -0
  122. package/build/cjs/components/table/stories/tableFiltering.stories.cjs +2 -0
  123. package/build/cjs/components/table/stories/tableFiltering.stories.cjs.map +1 -0
  124. package/build/cjs/components/table/stories/tableFiltering.stories.d.cts +21 -0
  125. package/build/cjs/components/table/stories/tablePagination.stories.cjs +2 -0
  126. package/build/cjs/components/table/stories/tablePagination.stories.cjs.map +1 -0
  127. package/build/cjs/components/{accordion/stories/Accordion.stories.d.cts → table/stories/tablePagination.stories.d.cts} +2 -2
  128. package/build/cjs/components/tabs/NavTab.cjs +1 -1
  129. package/build/cjs/components/tabs/NavTab.cjs.map +1 -1
  130. package/build/cjs/components/tabs/NavTabs.cjs +1 -1
  131. package/build/cjs/components/tabs/NavTabs.cjs.map +1 -1
  132. package/build/cjs/components/tabs/TabList.cjs +1 -1
  133. package/build/cjs/components/tabs/TabList.cjs.map +1 -1
  134. package/build/cjs/components/text-area/BaseTextArea.cjs +1 -1
  135. package/build/cjs/components/text-area/BaseTextArea.cjs.map +1 -1
  136. package/build/cjs/components/toast/Toast.cjs +1 -1
  137. package/build/cjs/components/toast/Toast.cjs.map +1 -1
  138. package/build/cjs/components/toast/toastContext.cjs +1 -1
  139. package/build/cjs/components/toast/toastContext.cjs.map +1 -1
  140. package/build/cjs/components/toggle-switch/ToggleSwitch.cjs +1 -1
  141. package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
  142. package/build/cjs/components/toggle-switch/usePillStyles.cjs +1 -1
  143. package/build/cjs/components/toggle-switch/usePillStyles.cjs.map +1 -1
  144. package/build/cjs/components/tooltip/PopupTip.cjs +1 -1
  145. package/build/cjs/components/tooltip/PopupTip.cjs.map +1 -1
  146. package/build/cjs/components/tooltip/Tooltip.cjs +1 -1
  147. package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
  148. package/build/cjs/components/tooltip/TooltipTrigger.cjs +1 -1
  149. package/build/cjs/components/tooltip/TooltipTrigger.cjs.map +1 -1
  150. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs +1 -1
  151. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs.map +1 -1
  152. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs +1 -1
  153. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
  154. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs +1 -1
  155. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
  156. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.cjs +1 -1
  157. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.cjs.map +1 -1
  158. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.d.cts +1 -1
  159. package/build/cjs/hooks/useClickOutside/useClickOutside.cjs +1 -1
  160. package/build/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  161. package/build/cjs/hooks/useElementDimensions/useElementDimensions.cjs +1 -1
  162. package/build/cjs/hooks/useElementDimensions/useElementDimensions.cjs.map +1 -1
  163. package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs +1 -1
  164. package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs.map +1 -1
  165. package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs +1 -1
  166. package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
  167. package/build/cjs/hooks/useKeyListener/useKeyListener.cjs +1 -1
  168. package/build/cjs/hooks/useKeyListener/useKeyListener.cjs.map +1 -1
  169. package/build/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs +1 -1
  170. package/build/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
  171. package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.cjs +1 -1
  172. package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.cjs.map +1 -1
  173. package/build/cjs/index.cjs +1 -1
  174. package/build/cjs/index.d.cts +0 -1
  175. package/build/cjs/utilities/formatters/date/formatDate.cjs +1 -1
  176. package/build/cjs/utilities/formatters/date/formatDate.cjs.map +1 -1
  177. package/build/cjs/utilities/formatters/fodselsnummer/formatFodselsnummer.cjs +1 -1
  178. package/build/cjs/utilities/formatters/fodselsnummer/formatFodselsnummer.cjs.map +1 -1
  179. package/build/cjs/utilities/formatters/kontonummer/formatKontonummer.cjs +1 -1
  180. package/build/cjs/utilities/formatters/kontonummer/formatKontonummer.cjs.map +1 -1
  181. package/build/cjs/utilities/formatters/kortnummer/formatKortnummer.cjs +1 -1
  182. package/build/cjs/utilities/formatters/kortnummer/formatKortnummer.cjs.map +1 -1
  183. package/build/cjs/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs +1 -1
  184. package/build/cjs/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs.map +1 -1
  185. package/build/cjs/utilities/formatters/telefonnummer/formatTelefonnummer.cjs +1 -1
  186. package/build/cjs/utilities/formatters/telefonnummer/formatTelefonnummer.cjs.map +1 -1
  187. package/build/cjs/utilities/formatters/util/registerWithMask.cjs +1 -1
  188. package/build/cjs/utilities/formatters/util/registerWithMask.cjs.map +1 -1
  189. package/build/cjs/utilities/formatters/valuta/formatValuta.cjs +1 -1
  190. package/build/cjs/utilities/formatters/valuta/formatValuta.cjs.map +1 -1
  191. package/build/cjs/utilities/tabListener.cjs +1 -1
  192. package/build/cjs/utilities/tabListener.cjs.map +1 -1
  193. package/build/cjs/utilities/validators/hasMinimumWords/hasMinimumWords.cjs +1 -1
  194. package/build/cjs/utilities/validators/hasMinimumWords/hasMinimumWords.cjs.map +1 -1
  195. package/build/es/components/autosuggest/BaseAutosuggest.js +2 -2
  196. package/build/es/components/autosuggest/BaseAutosuggest.js.map +1 -1
  197. package/build/es/components/autosuggest/Menu.js +1 -1
  198. package/build/es/components/autosuggest/Menu.js.map +1 -1
  199. package/build/es/components/button/Button.js +1 -1
  200. package/build/es/components/button/Button.js.map +1 -1
  201. package/build/es/components/card/index.d.ts +1 -4
  202. package/build/es/components/card/index.js +1 -1
  203. package/build/es/components/card/types.d.ts +0 -51
  204. package/build/es/components/card/types.js +1 -1
  205. package/build/es/components/card/types.js.map +1 -1
  206. package/build/es/components/checkbox-panel/CheckboxPanel.js +1 -1
  207. package/build/es/components/checkbox-panel/CheckboxPanel.js.map +1 -1
  208. package/build/es/components/combobox/Combobox.js +1 -1
  209. package/build/es/components/combobox/Combobox.js.map +1 -1
  210. package/build/es/components/combobox/stories/Combobox.stories.d.ts +1 -0
  211. package/build/es/components/combobox/stories/Combobox.stories.js +1 -1
  212. package/build/es/components/combobox/stories/Combobox.stories.js.map +1 -1
  213. package/build/es/components/cookie-consent/CookieConsent.js +1 -1
  214. package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
  215. package/build/es/components/datepicker/DatePicker.js +1 -1
  216. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  217. package/build/es/components/datepicker/internal/Calendar.js +1 -1
  218. package/build/es/components/datepicker/internal/Calendar.js.map +1 -1
  219. package/build/es/components/datepicker/internal/utils.js +1 -1
  220. package/build/es/components/datepicker/internal/utils.js.map +1 -1
  221. package/build/es/components/datepicker/stories/Datepicker.stories.d.ts +13 -0
  222. package/build/es/components/datepicker/stories/Datepicker.stories.js +1 -1
  223. package/build/es/components/datepicker/stories/Datepicker.stories.js.map +1 -1
  224. package/build/es/components/description-list/stories/DescriptionList.stories.js +1 -1
  225. package/build/es/components/description-list/stories/DescriptionList.stories.js.map +1 -1
  226. package/build/es/components/expander/ExpandablePanel.js +1 -1
  227. package/build/es/components/expander/ExpandablePanel.js.map +1 -1
  228. package/build/es/components/expander/ExpandablePanelContent.js +1 -1
  229. package/build/es/components/expander/ExpandablePanelContent.js.map +1 -1
  230. package/build/es/components/expander/Expander.js +1 -1
  231. package/build/es/components/expander/Expander.js.map +1 -1
  232. package/build/es/components/expander/index.d.ts +0 -1
  233. package/build/es/components/expander/index.js +1 -1
  234. package/build/es/components/expander/stories/{ExpanderPanel.stories.js → ExpandablePanel.stories.js} +1 -1
  235. package/build/es/components/expander/stories/ExpandablePanel.stories.js.map +1 -0
  236. package/build/es/components/feedback/followup/Followup.js +1 -1
  237. package/build/es/components/feedback/followup/Followup.js.map +1 -1
  238. package/build/es/components/feedback/followup/useFollowup.js +1 -1
  239. package/build/es/components/feedback/followup/useFollowup.js.map +1 -1
  240. package/build/es/components/feedback/main-question/MainQuestion.js +1 -1
  241. package/build/es/components/feedback/main-question/MainQuestion.js.map +1 -1
  242. package/build/es/components/feedback/main-question/useMainQuestion.js +1 -1
  243. package/build/es/components/feedback/main-question/useMainQuestion.js.map +1 -1
  244. package/build/es/components/feedback/questions/AddonQuestion.js +1 -1
  245. package/build/es/components/feedback/questions/AddonQuestion.js.map +1 -1
  246. package/build/es/components/feedback/questions/CheckboxQuestion.js +1 -1
  247. package/build/es/components/feedback/questions/CheckboxQuestion.js.map +1 -1
  248. package/build/es/components/feedback/questions/ContactQuestion.js +1 -1
  249. package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
  250. package/build/es/components/feedback/questions/RadioQuestion.js +1 -1
  251. package/build/es/components/feedback/questions/RadioQuestion.js.map +1 -1
  252. package/build/es/components/feedback/questions/SmileyQuestion.js +1 -1
  253. package/build/es/components/feedback/questions/SmileyQuestion.js.map +1 -1
  254. package/build/es/components/feedback/questions/TextQuestion.js +1 -1
  255. package/build/es/components/feedback/questions/TextQuestion.js.map +1 -1
  256. package/build/es/components/file/File.js.map +1 -1
  257. package/build/es/components/file/stories/File.stories.d.ts +1 -1
  258. package/build/es/components/file/stories/File.stories.js.map +1 -1
  259. package/build/es/components/file-input/FileInput.js.map +1 -1
  260. package/build/es/components/file-input/internal/Dropzone.js.map +1 -1
  261. package/build/es/components/file-input/internal/Input.js.map +1 -1
  262. package/build/es/components/file-input/internal/fileInputContext.js.map +1 -1
  263. package/build/es/components/file-input/internal/validateFileInputFiles.js +1 -1
  264. package/build/es/components/file-input/internal/validateFileInputFiles.js.map +1 -1
  265. package/build/es/components/file-input/stories/FileInput.stories.js.map +1 -1
  266. package/build/es/components/icon/stories/Icons.stories.js +1 -1
  267. package/build/es/components/image/useImageLoadingStatus.js +1 -1
  268. package/build/es/components/image/useImageLoadingStatus.js.map +1 -1
  269. package/build/es/components/input-group/InputGroup.js +1 -1
  270. package/build/es/components/input-group/InputGroup.js.map +1 -1
  271. package/build/es/components/link/stories/Link.stories.js +1 -1
  272. package/build/es/components/link/stories/Link.stories.js.map +1 -1
  273. package/build/es/components/loader/stories/Skeleton.stories.js +1 -1
  274. package/build/es/components/menu/Menu.js +1 -1
  275. package/build/es/components/menu/Menu.js.map +1 -1
  276. package/build/es/components/menu/MenuItemCheckbox.js +1 -1
  277. package/build/es/components/menu/MenuItemCheckbox.js.map +1 -1
  278. package/build/es/components/message/Message.js +1 -1
  279. package/build/es/components/message/Message.js.map +1 -1
  280. package/build/es/components/modal/stories/ModalCloseButton.stories.d.ts +1 -1
  281. package/build/es/components/modal/stories/ModalOverlay.stories.js +1 -1
  282. package/build/es/components/modal/stories/ModalOverlay.stories.js.map +1 -1
  283. package/build/es/components/popover/Popover.js +1 -1
  284. package/build/es/components/popover/Popover.js.map +1 -1
  285. package/build/es/components/radio-panel/RadioPanel.js +1 -1
  286. package/build/es/components/radio-panel/RadioPanel.js.map +1 -1
  287. package/build/es/components/screen-reader-only/ScreenReaderOnly.d.ts +3 -0
  288. package/build/es/components/screen-reader-only/ScreenReaderOnly.js.map +1 -0
  289. package/build/es/components/screen-reader-only/index.d.ts +2 -0
  290. package/build/es/components/screen-reader-only/index.js +2 -0
  291. package/build/es/components/screen-reader-only/types.d.ts +4 -0
  292. package/build/es/components/select/Select.js +1 -1
  293. package/build/es/components/select/Select.js.map +1 -1
  294. package/build/es/components/select/select-utils.js +1 -1
  295. package/build/es/components/select/select-utils.js.map +1 -1
  296. package/build/es/components/system-message/SystemMessage.js +1 -1
  297. package/build/es/components/system-message/SystemMessage.js.map +1 -1
  298. package/build/es/components/table/TableHeader.js +1 -1
  299. package/build/es/components/table/TableHeader.js.map +1 -1
  300. package/build/es/components/table/TableRow.js +1 -1
  301. package/build/es/components/table/TableRow.js.map +1 -1
  302. package/build/es/components/table/stories/data.d.ts +8 -0
  303. package/build/es/components/table/stories/data.js +2 -0
  304. package/build/es/components/table/stories/data.js.map +1 -0
  305. package/build/es/components/table/stories/table.stories.d.ts +10 -1
  306. package/build/es/components/table/stories/table.stories.js +1 -1
  307. package/build/es/components/table/stories/table.stories.js.map +1 -1
  308. package/build/es/components/table/stories/tableCollapsing.stories.d.ts +16 -0
  309. package/build/es/components/table/stories/tableCollapsing.stories.js +2 -0
  310. package/build/es/components/table/stories/tableCollapsing.stories.js.map +1 -0
  311. package/build/es/components/table/stories/tableComplex.stories.d.ts +21 -0
  312. package/build/es/components/table/stories/tableComplex.stories.js +2 -0
  313. package/build/es/components/table/stories/tableComplex.stories.js.map +1 -0
  314. package/build/es/components/table/stories/tableFiltering.stories.d.ts +21 -0
  315. package/build/es/components/table/stories/tableFiltering.stories.js +2 -0
  316. package/build/es/components/table/stories/tableFiltering.stories.js.map +1 -0
  317. package/build/{cjs/components/accordion/stories/AccordionItem.stories.d.cts → es/components/table/stories/tablePagination.stories.d.ts} +2 -2
  318. package/build/es/components/table/stories/tablePagination.stories.js +2 -0
  319. package/build/es/components/table/stories/tablePagination.stories.js.map +1 -0
  320. package/build/es/components/tabs/NavTab.js +1 -1
  321. package/build/es/components/tabs/NavTab.js.map +1 -1
  322. package/build/es/components/tabs/NavTabs.js +1 -1
  323. package/build/es/components/tabs/NavTabs.js.map +1 -1
  324. package/build/es/components/tabs/TabList.js +1 -1
  325. package/build/es/components/tabs/TabList.js.map +1 -1
  326. package/build/es/components/text-area/BaseTextArea.js +1 -1
  327. package/build/es/components/text-area/BaseTextArea.js.map +1 -1
  328. package/build/es/components/toast/Toast.js +1 -1
  329. package/build/es/components/toast/Toast.js.map +1 -1
  330. package/build/es/components/toast/toastContext.js +1 -1
  331. package/build/es/components/toast/toastContext.js.map +1 -1
  332. package/build/es/components/toggle-switch/ToggleSwitch.js +1 -1
  333. package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
  334. package/build/es/components/toggle-switch/usePillStyles.js +1 -1
  335. package/build/es/components/toggle-switch/usePillStyles.js.map +1 -1
  336. package/build/es/components/tooltip/PopupTip.js +1 -1
  337. package/build/es/components/tooltip/PopupTip.js.map +1 -1
  338. package/build/es/components/tooltip/Tooltip.js +1 -1
  339. package/build/es/components/tooltip/Tooltip.js.map +1 -1
  340. package/build/es/components/tooltip/TooltipTrigger.js +1 -1
  341. package/build/es/components/tooltip/TooltipTrigger.js.map +1 -1
  342. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js +1 -1
  343. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -1
  344. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js +1 -1
  345. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
  346. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js +1 -1
  347. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
  348. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.d.ts +1 -1
  349. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js +1 -1
  350. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js.map +1 -1
  351. package/build/es/hooks/useClickOutside/useClickOutside.js +1 -1
  352. package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -1
  353. package/build/es/hooks/useElementDimensions/useElementDimensions.js +1 -1
  354. package/build/es/hooks/useElementDimensions/useElementDimensions.js.map +1 -1
  355. package/build/es/hooks/useFocusOutside/useFocusOutside.js +1 -1
  356. package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -1
  357. package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js +1 -1
  358. package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
  359. package/build/es/hooks/useKeyListener/useKeyListener.js +1 -1
  360. package/build/es/hooks/useKeyListener/useKeyListener.js.map +1 -1
  361. package/build/es/hooks/useScrollIntoView/useScrollIntoView.js +1 -1
  362. package/build/es/hooks/useScrollIntoView/useScrollIntoView.js.map +1 -1
  363. package/build/es/hooks/useSwipeGesture/useSwipeGesture.js +1 -1
  364. package/build/es/hooks/useSwipeGesture/useSwipeGesture.js.map +1 -1
  365. package/build/es/index.d.ts +0 -1
  366. package/build/es/index.js +1 -1
  367. package/build/es/utilities/formatters/date/formatDate.js +1 -1
  368. package/build/es/utilities/formatters/date/formatDate.js.map +1 -1
  369. package/build/es/utilities/formatters/fodselsnummer/formatFodselsnummer.js +1 -1
  370. package/build/es/utilities/formatters/fodselsnummer/formatFodselsnummer.js.map +1 -1
  371. package/build/es/utilities/formatters/kontonummer/formatKontonummer.js +1 -1
  372. package/build/es/utilities/formatters/kontonummer/formatKontonummer.js.map +1 -1
  373. package/build/es/utilities/formatters/kortnummer/formatKortnummer.js +1 -1
  374. package/build/es/utilities/formatters/kortnummer/formatKortnummer.js.map +1 -1
  375. package/build/es/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.js +1 -1
  376. package/build/es/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.js.map +1 -1
  377. package/build/es/utilities/formatters/telefonnummer/formatTelefonnummer.js +1 -1
  378. package/build/es/utilities/formatters/telefonnummer/formatTelefonnummer.js.map +1 -1
  379. package/build/es/utilities/formatters/util/registerWithMask.js +1 -1
  380. package/build/es/utilities/formatters/util/registerWithMask.js.map +1 -1
  381. package/build/es/utilities/formatters/valuta/formatValuta.js +1 -1
  382. package/build/es/utilities/formatters/valuta/formatValuta.js.map +1 -1
  383. package/build/es/utilities/tabListener.js +1 -1
  384. package/build/es/utilities/tabListener.js.map +1 -1
  385. package/build/es/utilities/validators/hasMinimumWords/hasMinimumWords.js +1 -1
  386. package/build/es/utilities/validators/hasMinimumWords/hasMinimumWords.js.map +1 -1
  387. package/build/jokul.css +1 -1
  388. package/build/paginated-table-data-VQZB3_Aj.cjs +2 -0
  389. package/build/paginated-table-data-VQZB3_Aj.cjs.map +1 -0
  390. package/build/paginated-table-data-ZMeh4d0Y.js +2 -0
  391. package/build/paginated-table-data-ZMeh4d0Y.js.map +1 -0
  392. package/package.json +61 -81
  393. package/styles/components/autosuggest/autosuggest.scss +4 -4
  394. package/styles/components/card/card.css +0 -248
  395. package/styles/components/card/card.min.css +1 -1
  396. package/styles/components/card/card.scss +0 -3
  397. package/styles/components/checkbox/checkbox.css +4 -4
  398. package/styles/components/checkbox/checkbox.min.css +1 -1
  399. package/styles/components/checkbox-panel/checkbox-panel.css +2 -2
  400. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  401. package/styles/components/chip/chip.css +9 -1
  402. package/styles/components/chip/chip.min.css +1 -1
  403. package/styles/components/chip/chip.scss +8 -1
  404. package/styles/components/combobox/combobox.css +17 -19
  405. package/styles/components/combobox/combobox.min.css +1 -1
  406. package/styles/components/combobox/combobox.scss +18 -18
  407. package/styles/components/countdown/countdown.css +2 -2
  408. package/styles/components/countdown/countdown.min.css +1 -1
  409. package/styles/components/datepicker/_index.scss +1 -0
  410. package/styles/components/description-list/description-list.scss +7 -7
  411. package/styles/components/expander/_index.scss +0 -1
  412. package/styles/components/feedback/feedback.css +2 -2
  413. package/styles/components/feedback/feedback.min.css +1 -1
  414. package/styles/components/feedback/feedback.scss +4 -3
  415. package/styles/components/file-input/file-input.css +13 -14
  416. package/styles/components/file-input/file-input.min.css +1 -1
  417. package/styles/components/input-group/_labels.scss +21 -21
  418. package/styles/components/input-group/input-group.css +2 -2
  419. package/styles/components/input-group/input-group.min.css +1 -1
  420. package/styles/components/link/link.css +2 -3
  421. package/styles/components/link/link.min.css +1 -1
  422. package/styles/components/link/link.scss +3 -2
  423. package/styles/components/loader/loader.css +6 -6
  424. package/styles/components/loader/loader.min.css +1 -1
  425. package/styles/components/loader/skeleton-loader.css +5 -5
  426. package/styles/components/loader/skeleton-loader.min.css +1 -1
  427. package/styles/components/loader/skeleton-loader.scss +10 -10
  428. package/styles/components/menu/menu.css +5 -5
  429. package/styles/components/menu/menu.min.css +1 -1
  430. package/styles/components/menu/menu.scss +3 -3
  431. package/styles/components/message/message.css +2 -2
  432. package/styles/components/message/message.min.css +1 -1
  433. package/styles/components/progress-bar/progress-bar.css +1 -1
  434. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  435. package/styles/components/radio-button/radio-button.css +4 -3
  436. package/styles/components/radio-button/radio-button.min.css +1 -1
  437. package/styles/components/radio-button/radio-button.scss +18 -19
  438. package/styles/components/radio-panel/radio-panel.css +2 -2
  439. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  440. package/styles/components/summary-table/summary-table.scss +3 -3
  441. package/styles/components/system-message/system-message.css +2 -2
  442. package/styles/components/system-message/system-message.min.css +1 -1
  443. package/styles/components/system-message/system-message.scss +8 -8
  444. package/styles/components/table/_table-cell.scss +4 -4
  445. package/styles/components/table/_table-header.scss +4 -2
  446. package/styles/components/table/_table-row.scss +13 -12
  447. package/styles/components/table/table.css +13 -11
  448. package/styles/components/text-area/text-area.css +6 -4
  449. package/styles/components/text-area/text-area.min.css +5 -1
  450. package/styles/components/text-input/text-input.css +6 -4
  451. package/styles/components/text-input/text-input.min.css +5 -1
  452. package/styles/components/toast/toast.css +4 -4
  453. package/styles/components/toast/toast.min.css +1 -1
  454. package/styles/components/toggle-switch/_toggle-slider.scss +2 -2
  455. package/styles/core/core.css +0 -160
  456. package/styles/core/core.min.css +1 -1
  457. package/styles/core/jkl/_spacing.scss +1 -62
  458. package/styles/core/jkl/_typography.scss +21 -91
  459. package/styles/shared/input/shared-input-styles.css +6 -4
  460. package/styles/shared/input/shared-input-styles.min.css +5 -1
  461. package/styles/shared/input/shared-input-styles.scss +15 -11
  462. package/styles/styles.css +265 -766
  463. package/styles/styles.min.css +5 -7
  464. package/styles/styles.scss +0 -1
  465. package/build/cjs/components/ScreenReaderOnly.cjs.map +0 -1
  466. package/build/cjs/components/ScreenReaderOnly.d.cts +0 -6
  467. package/build/cjs/components/accordion/Accordion.cjs +0 -2
  468. package/build/cjs/components/accordion/Accordion.cjs.map +0 -1
  469. package/build/cjs/components/accordion/Accordion.d.cts +0 -7
  470. package/build/cjs/components/accordion/AccordionItem.cjs +0 -2
  471. package/build/cjs/components/accordion/AccordionItem.cjs.map +0 -1
  472. package/build/cjs/components/accordion/AccordionItem.d.cts +0 -7
  473. package/build/cjs/components/accordion/documentation/AccordionDocs.cjs +0 -2
  474. package/build/cjs/components/accordion/documentation/AccordionDocs.cjs.map +0 -1
  475. package/build/cjs/components/accordion/documentation/AccordionDocs.d.cts +0 -2
  476. package/build/cjs/components/accordion/index.cjs +0 -2
  477. package/build/cjs/components/accordion/index.d.cts +0 -3
  478. package/build/cjs/components/accordion/stories/Accordion.stories.cjs +0 -2
  479. package/build/cjs/components/accordion/stories/Accordion.stories.cjs.map +0 -1
  480. package/build/cjs/components/accordion/stories/AccordionItem.stories.cjs +0 -2
  481. package/build/cjs/components/accordion/stories/AccordionItem.stories.cjs.map +0 -1
  482. package/build/cjs/components/accordion/types.d.cts +0 -13
  483. package/build/cjs/components/accordion/vite-env.d.cjs +0 -2
  484. package/build/cjs/components/accordion/vite-env.d.cjs.map +0 -1
  485. package/build/cjs/components/card/InfoCard.cjs +0 -2
  486. package/build/cjs/components/card/InfoCard.cjs.map +0 -1
  487. package/build/cjs/components/card/InfoCard.d.cts +0 -13
  488. package/build/cjs/components/card/NavCard.cjs +0 -2
  489. package/build/cjs/components/card/NavCard.cjs.map +0 -1
  490. package/build/cjs/components/card/NavCard.d.cts +0 -26
  491. package/build/cjs/components/card/TaskCard.cjs +0 -2
  492. package/build/cjs/components/card/TaskCard.cjs.map +0 -1
  493. package/build/cjs/components/card/TaskCard.d.cts +0 -23
  494. package/build/cjs/components/card/development/examples/InfoCardExample.d.cts +0 -3
  495. package/build/cjs/components/card/development/examples/NavCardExample.d.cts +0 -3
  496. package/build/cjs/components/card/development/examples/TaskCardExample.d.cts +0 -3
  497. package/build/cjs/components/card/development/examples/TopExample.d.cts +0 -3
  498. package/build/cjs/components/card/development/examples/cardExampleProps.d.cts +0 -13
  499. package/build/cjs/components/card/utils.cjs +0 -2
  500. package/build/cjs/components/card/utils.cjs.map +0 -1
  501. package/build/cjs/components/card/utils.d.cts +0 -3
  502. package/build/cjs/components/expander/deprecated/ExpandSection.cjs +0 -2
  503. package/build/cjs/components/expander/deprecated/ExpandSection.cjs.map +0 -1
  504. package/build/cjs/components/expander/deprecated/ExpandSection.d.cts +0 -26
  505. package/build/cjs/components/expander/deprecated/Expander.cjs +0 -2
  506. package/build/cjs/components/expander/deprecated/Expander.cjs.map +0 -1
  507. package/build/cjs/components/expander/deprecated/Expander.d.cts +0 -27
  508. package/build/cjs/components/expander/stories/ExpanderPanel.stories.cjs.map +0 -1
  509. package/build/cjs/components/index.cjs +0 -2
  510. package/build/cjs/components/index.cjs.map +0 -1
  511. package/build/cjs/components/index.d.cts +0 -47
  512. package/build/es/components/ScreenReaderOnly.d.ts +0 -6
  513. package/build/es/components/ScreenReaderOnly.js.map +0 -1
  514. package/build/es/components/accordion/Accordion.d.ts +0 -7
  515. package/build/es/components/accordion/Accordion.js +0 -2
  516. package/build/es/components/accordion/Accordion.js.map +0 -1
  517. package/build/es/components/accordion/AccordionItem.d.ts +0 -7
  518. package/build/es/components/accordion/AccordionItem.js +0 -2
  519. package/build/es/components/accordion/AccordionItem.js.map +0 -1
  520. package/build/es/components/accordion/documentation/AccordionDocs.d.ts +0 -2
  521. package/build/es/components/accordion/documentation/AccordionDocs.js +0 -2
  522. package/build/es/components/accordion/documentation/AccordionDocs.js.map +0 -1
  523. package/build/es/components/accordion/index.d.ts +0 -3
  524. package/build/es/components/accordion/index.js +0 -2
  525. package/build/es/components/accordion/stories/Accordion.stories.d.ts +0 -13
  526. package/build/es/components/accordion/stories/Accordion.stories.js +0 -2
  527. package/build/es/components/accordion/stories/Accordion.stories.js.map +0 -1
  528. package/build/es/components/accordion/stories/AccordionItem.stories.d.ts +0 -13
  529. package/build/es/components/accordion/stories/AccordionItem.stories.js +0 -2
  530. package/build/es/components/accordion/stories/AccordionItem.stories.js.map +0 -1
  531. package/build/es/components/accordion/types.d.ts +0 -13
  532. package/build/es/components/accordion/vite-env.d.js +0 -2
  533. package/build/es/components/accordion/vite-env.d.js.map +0 -1
  534. package/build/es/components/card/InfoCard.d.ts +0 -13
  535. package/build/es/components/card/InfoCard.js +0 -2
  536. package/build/es/components/card/InfoCard.js.map +0 -1
  537. package/build/es/components/card/NavCard.d.ts +0 -26
  538. package/build/es/components/card/NavCard.js +0 -2
  539. package/build/es/components/card/NavCard.js.map +0 -1
  540. package/build/es/components/card/TaskCard.d.ts +0 -23
  541. package/build/es/components/card/TaskCard.js +0 -2
  542. package/build/es/components/card/TaskCard.js.map +0 -1
  543. package/build/es/components/card/development/examples/InfoCardExample.d.ts +0 -3
  544. package/build/es/components/card/development/examples/NavCardExample.d.ts +0 -3
  545. package/build/es/components/card/development/examples/TaskCardExample.d.ts +0 -3
  546. package/build/es/components/card/development/examples/TopExample.d.ts +0 -3
  547. package/build/es/components/card/development/examples/cardExampleProps.d.ts +0 -13
  548. package/build/es/components/card/utils.d.ts +0 -3
  549. package/build/es/components/card/utils.js +0 -2
  550. package/build/es/components/card/utils.js.map +0 -1
  551. package/build/es/components/expander/deprecated/ExpandSection.d.ts +0 -26
  552. package/build/es/components/expander/deprecated/ExpandSection.js +0 -2
  553. package/build/es/components/expander/deprecated/ExpandSection.js.map +0 -1
  554. package/build/es/components/expander/deprecated/Expander.d.ts +0 -27
  555. package/build/es/components/expander/deprecated/Expander.js +0 -2
  556. package/build/es/components/expander/deprecated/Expander.js.map +0 -1
  557. package/build/es/components/expander/stories/ExpanderPanel.stories.js.map +0 -1
  558. package/build/es/components/index.d.ts +0 -47
  559. package/build/es/components/index.js +0 -2
  560. package/build/es/components/index.js.map +0 -1
  561. package/styles/components/accordion/_index.scss +0 -2
  562. package/styles/components/accordion/accordion.css +0 -189
  563. package/styles/components/accordion/accordion.min.css +0 -7
  564. package/styles/components/accordion/accordion.scss +0 -168
  565. package/styles/components/card/_info-card.scss +0 -42
  566. package/styles/components/card/_nav-card.scss +0 -119
  567. package/styles/components/card/_task-card.scss +0 -55
  568. package/styles/components/card/development/info-card-example.css +0 -26
  569. package/styles/components/card/development/info-card-example.min.css +0 -1
  570. package/styles/components/card/development/info-card-example.scss +0 -14
  571. package/styles/components/card/development/task-card-example.css +0 -9
  572. package/styles/components/card/development/task-card-example.min.css +0 -1
  573. package/styles/components/card/development/task-card-example.scss +0 -8
  574. package/styles/components/expander/deprecated/expander.css +0 -82
  575. package/styles/components/expander/deprecated/expander.min.css +0 -1
  576. package/styles/components/expander/deprecated/expander.scss +0 -87
  577. /package/build/cjs/components/expander/stories/{ExpanderPanel.stories.d.cts → ExpandablePanel.stories.d.cts} +0 -0
  578. /package/build/cjs/components/{ScreenReaderOnly.cjs → screen-reader-only/ScreenReaderOnly.cjs} +0 -0
  579. /package/build/cjs/components/{accordion → screen-reader-only}/index.cjs.map +0 -0
  580. /package/build/cjs/components/{accordion → screen-reader-only}/types.cjs +0 -0
  581. /package/build/cjs/components/{accordion → screen-reader-only}/types.cjs.map +0 -0
  582. /package/build/es/components/expander/stories/{ExpanderPanel.stories.d.ts → ExpandablePanel.stories.d.ts} +0 -0
  583. /package/build/es/components/{ScreenReaderOnly.js → screen-reader-only/ScreenReaderOnly.js} +0 -0
  584. /package/build/es/components/{accordion → screen-reader-only}/index.js.map +0 -0
  585. /package/build/es/components/{accordion → screen-reader-only}/types.js +0 -0
  586. /package/build/es/components/{accordion → screen-reader-only}/types.js.map +0 -0
@@ -23,7 +23,7 @@ declare const meta: {
23
23
  fileName: string;
24
24
  fileType: string;
25
25
  fileSize: number;
26
- path: string;
26
+ path: any;
27
27
  variant: "list";
28
28
  };
29
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.cjs","sources":["../../../../src/components/file-input/FileInput.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {forwardRef, useId} from \"react\";\nimport {FieldGroup} from \"../../components/input-group/FieldGroup.js\";\nimport {Dropzone} from \"./internal/Dropzone.js\";\nimport {Input} from \"./internal/Input.js\";\nimport {MaxSize} from \"./internal/MaxSize.js\";\nimport {FileInputContextProvider} from \"./internal/fileInputContext.js\";\nimport type {FileInputProps} from \"./types.js\";\n\nexport const FileInput = forwardRef<HTMLInputElement, FileInputProps>(\n (props, ref) => {\n const {\n accept,\n className,\n children,\n id,\n value,\n density,\n multiple = true,\n maxSizeBytes,\n onChange,\n variant,\n ...rest\n } = props;\n\n const hasFiles = value.length > 0;\n\n const maxSizeDescriptionId = useId();\n\n if (variant === \"small\") {\n return (\n <FileInputContextProvider\n context={{ accept, onChange, maxSizeBytes, files: value }}\n >\n <FieldGroup\n className={clsx(\n \"jkl-file-input\",\n \"jkl-file-input--small\",\n className,\n {\n \"jkl-file-input--has-files\": hasFiles,\n },\n )}\n data-layout-density={density ? density : \"compact\"}\n {...rest}\n >\n <Dropzone>\n <div className=\"jkl-file-input__call-to-action\">\n <Input\n id={id}\n label=\"Legg til fil\"\n multiple={multiple}\n ref={ref}\n aria-describedby={maxSizeDescriptionId}\n />\n </div>\n </Dropzone>\n <MaxSize id={maxSizeDescriptionId} />\n {value.length > 0 && (\n <ul className=\"jkl-file-input__files\">\n {children}\n </ul>\n )}\n </FieldGroup>\n </FileInputContextProvider>\n );\n }\n\n return (\n <FileInputContextProvider\n context={{ accept, onChange, maxSizeBytes, files: value }}\n >\n <FieldGroup\n className={clsx(\"jkl-file-input\", className, {\n \"jkl-file-input--has-files\": hasFiles,\n })}\n data-layout-density={density}\n {...rest}\n >\n <Dropzone>\n {value.length > 0 && (\n <ul className=\"jkl-file-input__files\">\n {children}\n </ul>\n )}\n <div className=\"jkl-file-input__call-to-action\">\n <Input\n id={id}\n label={\n multiple && hasFiles\n ? \"Legg til flere filer\"\n : \"Legg til fil\"\n }\n multiple={multiple}\n ref={ref}\n aria-describedby={maxSizeDescriptionId}\n />\n <MaxSize id={maxSizeDescriptionId} />\n </div>\n </Dropzone>\n </FieldGroup>\n </FileInputContextProvider>\n );\n },\n);\n\nFileInput.displayName = \"FileInput\";\n"],"names":["FileInput","forwardRef","props","ref","accept","className","children","id","value","density","multiple","maxSizeBytes","onChange","variant","rest","hasFiles","length","maxSizeDescriptionId","useId","jsx","FileInputContextProvider","context","files","jsxs","FieldGroup","clsx","Dropzone","Input","label","MaxSize","displayName"],"mappings":"mXASaA,EAAYC,EAAAA,YACrB,CAACC,EAAOC,KACE,MACFC,OAAAA,EACAC,UAAAA,EACAC,SAAAA,EACAC,GAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,SAAAA,GAAW,EACXC,aAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,GACHZ,EAEEa,EAAWP,EAAMQ,OAAS,EAE1BC,EAAuBC,EAAAA,QAE7B,MAAgB,UAAZL,EAEIM,EAAAA,IAACC,EAAAA,yBAAA,CACGC,QAAS,CAAEjB,OAAAA,EAAQQ,SAAAA,EAAUD,aAAAA,EAAcW,MAAOd,GAElDF,SAAAiB,EAAAA,KAACC,EAAAA,WAAA,CACGnB,UAAWoB,EAAAA,KACP,iBACA,wBACApB,EACA,CACI,4BAA6BU,IAGrC,sBAAqBN,GAAoB,aACrCK,EAEJR,SAAA,CAAAa,MAACO,EAAAA,SACG,CAAApB,SAAAa,EAAAA,IAAC,MAAI,CAAAd,UAAU,iCACXC,SAAAa,EAAAA,IAACQ,EAAAA,MAAA,CACGpB,GAAAA,EACAqB,MAAM,eACNlB,SAAAA,EACAP,IAAAA,EACA,mBAAkBc,QAI9BE,EAAAA,IAACU,EAAQA,QAAA,CAAAtB,GAAIU,IACZT,EAAMQ,OAAS,SACX,KAAG,CAAAX,UAAU,wBACTC,SAAAA,SASrBa,EAAAA,IAACC,EAAAA,yBAAA,CACGC,QAAS,CAAEjB,OAAAA,EAAQQ,SAAAA,EAAUD,aAAAA,EAAcW,MAAOd,GAElDF,SAAAa,EAAAA,IAACK,EAAAA,WAAA,CACGnB,UAAWoB,EAAAA,KAAK,iBAAkBpB,EAAW,CACzC,4BAA6BU,IAEjC,sBAAqBN,KACjBK,EAEJR,gBAACoB,WACI,CAAApB,SAAA,CAAAE,EAAMQ,OAAS,GACZG,EAAAA,IAAC,KAAG,CAAAd,UAAU,wBACTC,SAAAA,IAGTiB,EAAAA,KAAC,MAAI,CAAAlB,UAAU,iCACXC,SAAA,CAAAa,EAAAA,IAACQ,EAAAA,MAAA,CACGpB,GAAAA,EACAqB,MACIlB,GAAYK,EACN,uBACA,eAEVL,SAAAA,EACAP,IAAAA,EACA,mBAAkBc,IAEtBE,EAAAA,IAACU,EAAQA,QAAA,CAAAtB,GAAIU,aAI7B,IAKZjB,EAAU8B,YAAc"}
1
+ {"version":3,"file":"FileInput.cjs","sources":["../../../../src/components/file-input/FileInput.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef, useId } from \"react\";\nimport { FieldGroup } from \"../../components/input-group/FieldGroup.js\";\nimport { Dropzone } from \"./internal/Dropzone.js\";\nimport { Input } from \"./internal/Input.js\";\nimport { MaxSize } from \"./internal/MaxSize.js\";\nimport { FileInputContextProvider } from \"./internal/fileInputContext.js\";\nimport type { FileInputProps } from \"./types.js\";\n\nexport const FileInput = forwardRef<HTMLInputElement, FileInputProps>(\n (props, ref) => {\n const {\n accept,\n className,\n children,\n id,\n value,\n density,\n multiple = true,\n maxSizeBytes,\n onChange,\n variant,\n ...rest\n } = props;\n\n const hasFiles = value.length > 0;\n\n const maxSizeDescriptionId = useId();\n\n if (variant === \"small\") {\n return (\n <FileInputContextProvider\n context={{ accept, onChange, maxSizeBytes, files: value }}\n >\n <FieldGroup\n className={clsx(\n \"jkl-file-input\",\n \"jkl-file-input--small\",\n className,\n {\n \"jkl-file-input--has-files\": hasFiles,\n },\n )}\n data-layout-density={density ? density : \"compact\"}\n {...rest}\n >\n <Dropzone>\n <div className=\"jkl-file-input__call-to-action\">\n <Input\n id={id}\n label=\"Legg til fil\"\n multiple={multiple}\n ref={ref}\n aria-describedby={maxSizeDescriptionId}\n />\n </div>\n </Dropzone>\n <MaxSize id={maxSizeDescriptionId} />\n {value.length > 0 && (\n <ul className=\"jkl-file-input__files\">\n {children}\n </ul>\n )}\n </FieldGroup>\n </FileInputContextProvider>\n );\n }\n\n return (\n <FileInputContextProvider\n context={{ accept, onChange, maxSizeBytes, files: value }}\n >\n <FieldGroup\n className={clsx(\"jkl-file-input\", className, {\n \"jkl-file-input--has-files\": hasFiles,\n })}\n data-layout-density={density}\n {...rest}\n >\n <Dropzone>\n {value.length > 0 && (\n <ul className=\"jkl-file-input__files\">\n {children}\n </ul>\n )}\n <div className=\"jkl-file-input__call-to-action\">\n <Input\n id={id}\n label={\n multiple && hasFiles\n ? \"Legg til flere filer\"\n : \"Legg til fil\"\n }\n multiple={multiple}\n ref={ref}\n aria-describedby={maxSizeDescriptionId}\n />\n <MaxSize id={maxSizeDescriptionId} />\n </div>\n </Dropzone>\n </FieldGroup>\n </FileInputContextProvider>\n );\n },\n);\n\nFileInput.displayName = \"FileInput\";\n"],"names":["FileInput","forwardRef","props","ref","accept","className","children","id","value","density","multiple","maxSizeBytes","onChange","variant","rest","hasFiles","length","maxSizeDescriptionId","useId","jsx","FileInputContextProvider","context","files","jsxs","FieldGroup","clsx","Dropzone","Input","label","MaxSize","displayName"],"mappings":"mXASaA,EAAYC,EAAAA,YACrB,CAACC,EAAOC,KACE,MACFC,OAAAA,EACAC,UAAAA,EACAC,SAAAA,EACAC,GAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,SAAAA,GAAW,EACXC,aAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,GACHZ,EAEEa,EAAWP,EAAMQ,OAAS,EAE1BC,EAAuBC,EAAAA,QAE7B,MAAgB,UAAZL,EAEIM,EAAAA,IAACC,EAAAA,yBAAA,CACGC,QAAS,CAAEjB,OAAAA,EAAQQ,SAAAA,EAAUD,aAAAA,EAAcW,MAAOd,GAElDF,SAAAiB,EAAAA,KAACC,EAAAA,WAAA,CACGnB,UAAWoB,EAAAA,KACP,iBACA,wBACApB,EACA,CACI,4BAA6BU,IAGrC,sBAAqBN,GAAoB,aACrCK,EAEJR,SAAA,CAAAa,MAACO,EAAAA,SACG,CAAApB,SAAAa,EAAAA,IAAC,MAAI,CAAAd,UAAU,iCACXC,SAAAa,EAAAA,IAACQ,EAAAA,MAAA,CACGpB,GAAAA,EACAqB,MAAM,eACNlB,SAAAA,EACAP,IAAAA,EACA,mBAAkBc,QAI9BE,EAAAA,IAACU,EAAQA,QAAA,CAAAtB,GAAIU,IACZT,EAAMQ,OAAS,SACX,KAAG,CAAAX,UAAU,wBACTC,SAAAA,SASrBa,EAAAA,IAACC,EAAAA,yBAAA,CACGC,QAAS,CAAEjB,OAAAA,EAAQQ,SAAAA,EAAUD,aAAAA,EAAcW,MAAOd,GAElDF,SAAAa,EAAAA,IAACK,EAAAA,WAAA,CACGnB,UAAWoB,EAAAA,KAAK,iBAAkBpB,EAAW,CACzC,4BAA6BU,IAEjC,sBAAqBN,KACjBK,EAEJR,gBAACoB,WACI,CAAApB,SAAA,CAAAE,EAAMQ,OAAS,GACZG,EAAAA,IAAC,KAAG,CAAAd,UAAU,wBACTC,SAAAA,IAGTiB,EAAAA,KAAC,MAAI,CAAAlB,UAAU,iCACXC,SAAA,CAAAa,EAAAA,IAACQ,EAAAA,MAAA,CACGpB,GAAAA,EACAqB,MACIlB,GAAYK,EACN,uBACA,eAEVL,SAAAA,EACAP,IAAAA,EACA,mBAAkBc,IAEtBE,EAAAA,IAACU,EAAQA,QAAA,CAAAtB,GAAIU,aAI7B,IAKZjB,EAAU8B,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dropzone.cjs","sources":["../../../../../src/components/file-input/internal/Dropzone.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {forwardRef, useState} from \"react\";\nimport type {WithChildren} from \"../../../core/types.js\";\nimport type {UploadedFile} from \"../types.js\";\nimport {useFileInputContext} from \"./fileInputContext.js\";\nimport {validateFileInputFiles} from \"./validateFileInputFiles.js\";\n\ninterface DropzoneProps extends WithChildren {}\n\nexport const Dropzone = forwardRef<HTMLDivElement, DropzoneProps>(\n (props, ref) => {\n const { children, ...rest } = props;\n const [onDragClassName, setOnDragClassName] = useState<string>(\"\");\n\n const context = useFileInputContext();\n if (!context) {\n return (\n <p>\n Dropzone must be placed inside a FileInputContextProvider.\n </p>\n );\n }\n const { maxSizeBytes, accept, onChange } = context;\n\n return (\n <div\n {...rest}\n ref={ref}\n className={clsx(\"jkl-file-input__dropzone\", onDragClassName)}\n onDragEnter={(e) => {\n setOnDragClassName(\"jkl-file-input__dropzone--enter\");\n e.preventDefault();\n }}\n onDragOver={(e) => {\n /* Prevent browser from opening file in a new tab */\n setOnDragClassName(\"jkl-file-input__dropzone--enter\");\n e.preventDefault();\n }}\n onDrop={(e) => {\n e.preventDefault();\n setOnDragClassName(\"\");\n\n if (e.dataTransfer.files) {\n onChange(\n e,\n [...e.dataTransfer.files].map<UploadedFile>(\n (file) => ({\n file,\n state: undefined,\n validation: validateFileInputFiles(\n file,\n accept,\n maxSizeBytes,\n ),\n uploadProgress: 0,\n }),\n ),\n );\n }\n }}\n onDragLeave={(e) => {\n setOnDragClassName(\"\");\n e.preventDefault();\n }}\n >\n {children}\n </div>\n );\n },\n);\n\nDropzone.displayName = \"Dropzone\";\n"],"names":["Dropzone","forwardRef","props","ref","children","rest","onDragClassName","setOnDragClassName","useState","context","useFileInputContext","jsx","maxSizeBytes","accept","onChange","className","clsx","onDragEnter","e","preventDefault","onDragOver","onDrop","dataTransfer","files","map","file","state","validation","validateFileInputFiles","uploadProgress","onDragLeave","displayName"],"mappings":"iQASaA,EAAWC,EAAAA,YACpB,CAACC,EAAOC,KACJ,MAAQC,SAAAA,KAAaC,GAASH,GACvBI,EAAiBC,GAAsBC,EAAAA,SAAiB,IAEzDC,EAAUC,EAAAA,sBAChB,IAAKD,EAEG,OAAAE,EAAAA,IAAC,KAAEP,SAEH,+DAGR,MAAQQ,aAAAA,EAAcC,OAAAA,EAAQC,SAAAA,GAAaL,EAGvC,OAAAE,EAAAA,IAAC,MAAA,IACON,EACJF,IAAAA,EACAY,UAAWC,EAAAA,KAAK,2BAA4BV,GAC5CW,YAAcC,IACVX,EAAmB,mCACnBW,EAAEC,gBAAe,EAErBC,WAAaF,IAETX,EAAmB,mCACnBW,EAAEC,gBAAe,EAErBE,OAASH,IACLA,EAAEC,iBACFZ,EAAmB,IAEfW,EAAEI,aAAaC,OACfT,EACII,EACA,IAAIA,EAAEI,aAAaC,OAAOC,KACrBC,IAAAA,CACGA,KAAAA,EACAC,WAAO,EACPC,WAAYC,EAAAA,uBACRH,EACAZ,EACAD,GAEJiB,eAAgB,MAG5B,EAGRC,YAAcZ,IACVX,EAAmB,IACnBW,EAAEC,gBAAe,EAGpBf,SAAAA,GACL,IAKZJ,EAAS+B,YAAc"}
1
+ {"version":3,"file":"Dropzone.cjs","sources":["../../../../../src/components/file-input/internal/Dropzone.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef, useState } from \"react\";\nimport type { WithChildren } from \"../../../core/types.js\";\nimport type { UploadedFile } from \"../types.js\";\nimport { useFileInputContext } from \"./fileInputContext.js\";\nimport { validateFileInputFiles } from \"./validateFileInputFiles.js\";\n\ninterface DropzoneProps extends WithChildren {}\n\nexport const Dropzone = forwardRef<HTMLDivElement, DropzoneProps>(\n (props, ref) => {\n const { children, ...rest } = props;\n const [onDragClassName, setOnDragClassName] = useState<string>(\"\");\n\n const context = useFileInputContext();\n if (!context) {\n return (\n <p>\n Dropzone must be placed inside a FileInputContextProvider.\n </p>\n );\n }\n const { maxSizeBytes, accept, onChange } = context;\n\n return (\n <div\n {...rest}\n ref={ref}\n className={clsx(\"jkl-file-input__dropzone\", onDragClassName)}\n onDragEnter={(e) => {\n setOnDragClassName(\"jkl-file-input__dropzone--enter\");\n e.preventDefault();\n }}\n onDragOver={(e) => {\n /* Prevent browser from opening file in a new tab */\n setOnDragClassName(\"jkl-file-input__dropzone--enter\");\n e.preventDefault();\n }}\n onDrop={(e) => {\n e.preventDefault();\n setOnDragClassName(\"\");\n\n if (e.dataTransfer.files) {\n onChange(\n e,\n [...e.dataTransfer.files].map<UploadedFile>(\n (file) => ({\n file,\n state: undefined,\n validation: validateFileInputFiles(\n file,\n accept,\n maxSizeBytes,\n ),\n uploadProgress: 0,\n }),\n ),\n );\n }\n }}\n onDragLeave={(e) => {\n setOnDragClassName(\"\");\n e.preventDefault();\n }}\n >\n {children}\n </div>\n );\n },\n);\n\nDropzone.displayName = \"Dropzone\";\n"],"names":["Dropzone","forwardRef","props","ref","children","rest","onDragClassName","setOnDragClassName","useState","context","useFileInputContext","jsx","maxSizeBytes","accept","onChange","className","clsx","onDragEnter","e","preventDefault","onDragOver","onDrop","dataTransfer","files","map","file","state","validation","validateFileInputFiles","uploadProgress","onDragLeave","displayName"],"mappings":"iQASaA,EAAWC,EAAAA,YACpB,CAACC,EAAOC,KACJ,MAAQC,SAAAA,KAAaC,GAASH,GACvBI,EAAiBC,GAAsBC,EAAAA,SAAiB,IAEzDC,EAAUC,EAAAA,sBAChB,IAAKD,EAEG,OAAAE,EAAAA,IAAC,KAAEP,SAEH,+DAGR,MAAQQ,aAAAA,EAAcC,OAAAA,EAAQC,SAAAA,GAAaL,EAGvC,OAAAE,EAAAA,IAAC,MAAA,IACON,EACJF,IAAAA,EACAY,UAAWC,EAAAA,KAAK,2BAA4BV,GAC5CW,YAAcC,IACVX,EAAmB,mCACnBW,EAAEC,gBAAe,EAErBC,WAAaF,IAETX,EAAmB,mCACnBW,EAAEC,gBAAe,EAErBE,OAASH,IACLA,EAAEC,iBACFZ,EAAmB,IAEfW,EAAEI,aAAaC,OACfT,EACII,EACA,IAAIA,EAAEI,aAAaC,OAAOC,KACrBC,IAAAA,CACGA,KAAAA,EACAC,WAAO,EACPC,WAAYC,EAAAA,uBACRH,EACAZ,EACAD,GAEJiB,eAAgB,MAG5B,EAGRC,YAAcZ,IACVX,EAAmB,IACnBW,EAAEC,gBAAe,EAGpBf,SAAAA,GACL,IAKZJ,EAAS+B,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Input.cjs","sources":["../../../../../src/components/file-input/internal/Input.tsx"],"sourcesContent":["import React, {forwardRef, useId} from \"react\";\nimport type {UploadedFile} from \"../types.js\";\nimport {useFileInputContext} from \"./fileInputContext.js\";\nimport {validateFileInputFiles} from \"./validateFileInputFiles.js\";\n\ninterface FileInputProps {\n id?: string;\n label: string;\n multiple: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, FileInputProps>(\n (props, ref) => {\n const { multiple, id, label, ...rest } = props;\n\n const defaultId = useId();\n\n const maxSizeDescriptionId = `${id}-description`;\n const descriptor = multiple ? \"filer\" : \"fil\";\n\n const context = useFileInputContext();\n if (!context) {\n return (\n <p>Input must be placed inside a FileInputContextProvider.</p>\n );\n }\n const { accept, maxSizeBytes, onChange } = context;\n\n const elementId = id || defaultId;\n\n return (\n <>\n <label\n className=\"jkl-button jkl-button--secondary\"\n htmlFor={elementId}\n id={`${elementId}__add-btn`}\n >\n {label}\n </label>\n <input\n {...rest}\n ref={ref}\n id={elementId}\n accept={accept}\n aria-describedby={\n maxSizeBytes ? maxSizeDescriptionId : undefined\n }\n className=\"jkl-sr-only\"\n type=\"file\"\n multiple={multiple}\n value=\"\"\n onChange={(e) => {\n if (e.target.files) {\n onChange(\n e,\n [...e.target.files].map<UploadedFile>(\n (file) => ({\n file,\n state: undefined,\n validation: validateFileInputFiles(\n file,\n accept,\n maxSizeBytes,\n ),\n uploadProgress: 0,\n }),\n ),\n );\n }\n }}\n />\n <p className=\"jkl-file-input__dropzone-hint\">\n eller slipp {descriptor} her\n </p>{\" \"}\n </>\n );\n },\n);\n\nInput.displayName = \"Input\";\n"],"names":["Input","forwardRef","props","ref","multiple","id","label","rest","defaultId","useId","maxSizeDescriptionId","descriptor","context","useFileInputContext","jsx","children","accept","maxSizeBytes","onChange","elementId","jsxs","Fragment","className","htmlFor","type","value","e","target","files","map","file","state","validation","validateFileInputFiles","uploadProgress","displayName"],"mappings":"sNAWaA,EAAQC,EAAAA,YACjB,CAACC,EAAOC,KACJ,MAAQC,SAAAA,EAAUC,GAAAA,EAAIC,MAAAA,KAAUC,GAASL,EAEnCM,EAAYC,EAAAA,QAEZC,EAAuB,GAAGL,gBAC1BM,EAAaP,EAAW,QAAU,MAElCQ,EAAUC,EAAAA,sBAChB,IAAKD,EAEG,OAAAE,EAAAA,IAAC,KAAEC,SAAuD,4DAGlE,MAAQC,OAAAA,EAAQC,aAAAA,EAAcC,SAAAA,GAAaN,EAErCO,EAAYd,GAAMG,EAExB,OAEQY,EAAAA,KAAAC,WAAA,CAAAN,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACGQ,UAAU,mCACVC,QAASJ,EACTd,GAAI,GAAGc,aAENJ,SAAAT,IAELQ,EAAAA,IAAC,QAAA,IACOP,EACJJ,IAAAA,EACAE,GAAIc,EACJH,OAAAA,EACA,mBACIC,EAAeP,OAAuB,EAE1CY,UAAU,cACVE,KAAK,OACLpB,SAAAA,EACAqB,MAAM,GACNP,SAAWQ,IACHA,EAAEC,OAAOC,OACTV,EACIQ,EACA,IAAIA,EAAEC,OAAOC,OAAOC,KACfC,KACGA,KAAAA,EACAC,WAAO,EACPC,WAAYC,EAAAA,uBACRH,EACAd,EACAC,GAEJiB,eAAgB,MAG5B,IAIZd,EAAAA,KAAC,IAAE,CAAAE,UAAU,gCAAgCP,SAAA,CAAA,eAC5BJ,EAAW,UACvB,MACT,IAKZX,EAAMmC,YAAc"}
1
+ {"version":3,"file":"Input.cjs","sources":["../../../../../src/components/file-input/internal/Input.tsx"],"sourcesContent":["import React, { forwardRef, useId } from \"react\";\nimport type { UploadedFile } from \"../types.js\";\nimport { useFileInputContext } from \"./fileInputContext.js\";\nimport { validateFileInputFiles } from \"./validateFileInputFiles.js\";\n\ninterface FileInputProps {\n id?: string;\n label: string;\n multiple: boolean;\n}\n\nexport const Input = forwardRef<HTMLInputElement, FileInputProps>(\n (props, ref) => {\n const { multiple, id, label, ...rest } = props;\n\n const defaultId = useId();\n\n const maxSizeDescriptionId = `${id}-description`;\n const descriptor = multiple ? \"filer\" : \"fil\";\n\n const context = useFileInputContext();\n if (!context) {\n return (\n <p>Input must be placed inside a FileInputContextProvider.</p>\n );\n }\n const { accept, maxSizeBytes, onChange } = context;\n\n const elementId = id || defaultId;\n\n return (\n <>\n <label\n className=\"jkl-button jkl-button--secondary\"\n htmlFor={elementId}\n id={`${elementId}__add-btn`}\n >\n {label}\n </label>\n <input\n {...rest}\n ref={ref}\n id={elementId}\n accept={accept}\n aria-describedby={\n maxSizeBytes ? maxSizeDescriptionId : undefined\n }\n className=\"jkl-sr-only\"\n type=\"file\"\n multiple={multiple}\n value=\"\"\n onChange={(e) => {\n if (e.target.files) {\n onChange(\n e,\n [...e.target.files].map<UploadedFile>(\n (file) => ({\n file,\n state: undefined,\n validation: validateFileInputFiles(\n file,\n accept,\n maxSizeBytes,\n ),\n uploadProgress: 0,\n }),\n ),\n );\n }\n }}\n />\n <p className=\"jkl-file-input__dropzone-hint\">\n eller slipp {descriptor} her\n </p>{\" \"}\n </>\n );\n },\n);\n\nInput.displayName = \"Input\";\n"],"names":["Input","forwardRef","props","ref","multiple","id","label","rest","defaultId","useId","maxSizeDescriptionId","descriptor","context","useFileInputContext","jsx","children","accept","maxSizeBytes","onChange","elementId","jsxs","Fragment","className","htmlFor","type","value","e","target","files","map","file","state","validation","validateFileInputFiles","uploadProgress","displayName"],"mappings":"sNAWaA,EAAQC,EAAAA,YACjB,CAACC,EAAOC,KACJ,MAAQC,SAAAA,EAAUC,GAAAA,EAAIC,MAAAA,KAAUC,GAASL,EAEnCM,EAAYC,EAAAA,QAEZC,EAAuB,GAAGL,gBAC1BM,EAAaP,EAAW,QAAU,MAElCQ,EAAUC,EAAAA,sBAChB,IAAKD,EAEG,OAAAE,EAAAA,IAAC,KAAEC,SAAuD,4DAGlE,MAAQC,OAAAA,EAAQC,aAAAA,EAAcC,SAAAA,GAAaN,EAErCO,EAAYd,GAAMG,EAExB,OAEQY,EAAAA,KAAAC,WAAA,CAAAN,SAAA,CAAAD,EAAAA,IAAC,QAAA,CACGQ,UAAU,mCACVC,QAASJ,EACTd,GAAI,GAAGc,aAENJ,SAAAT,IAELQ,EAAAA,IAAC,QAAA,IACOP,EACJJ,IAAAA,EACAE,GAAIc,EACJH,OAAAA,EACA,mBACIC,EAAeP,OAAuB,EAE1CY,UAAU,cACVE,KAAK,OACLpB,SAAAA,EACAqB,MAAM,GACNP,SAAWQ,IACHA,EAAEC,OAAOC,OACTV,EACIQ,EACA,IAAIA,EAAEC,OAAOC,OAAOC,KACfC,KACGA,KAAAA,EACAC,WAAO,EACPC,WAAYC,EAAAA,uBACRH,EACAd,EACAC,GAEJiB,eAAgB,MAG5B,IAIZd,EAAAA,KAAC,IAAE,CAAAE,UAAU,gCAAgCP,SAAA,CAAA,eAC5BJ,EAAW,UACvB,MACT,IAKZX,EAAMmC,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"fileInputContext.cjs","sources":["../../../../../src/components/file-input/internal/fileInputContext.tsx"],"sourcesContent":["import React, {createContext, useContext} from \"react\";\nimport type {WithChildren} from \"../../../core/types.js\";\nimport type {UploadedFile} from \"../types.js\";\n\ntype FileInputContext = {\n accept?: \"image/*\" | \".pdf\" | \"image/*,.pdf\" | HTMLInputElement[\"accept\"];\n maxSizeBytes?: number;\n files: UploadedFile[];\n onChange: (\n e:\n | React.ChangeEvent<HTMLInputElement>\n | React.DragEvent<HTMLDivElement>,\n files: UploadedFile[],\n ) => void;\n};\n\nconst fileInputContext = createContext<FileInputContext | null>(null);\n\nexport const useFileInputContext = (): FileInputContext | null =>\n useContext(fileInputContext);\n\nexport interface FileInputContextProviderProps extends WithChildren {\n context: FileInputContext;\n}\n\nexport const FileInputContextProvider: React.FC<\n FileInputContextProviderProps\n> = ({ context, children }) => (\n <fileInputContext.Provider value={context}>\n {children}\n </fileInputContext.Provider>\n);\n"],"names":["fileInputContext","createContext","context","children","jsx","Provider","value","useContext"],"mappings":"wIAgBMA,EAAmBC,gBAAuC,uCAW5D,EAAGC,QAAAA,EAASC,SAAAA,KACXC,EAAAA,IAAAJ,EAAiBK,SAAjB,CAA0BC,MAAOJ,EAC7BC,SAAAA,gCAX0B,IAC/BI,EAAAA,WAAWP"}
1
+ {"version":3,"file":"fileInputContext.cjs","sources":["../../../../../src/components/file-input/internal/fileInputContext.tsx"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\nimport type { WithChildren } from \"../../../core/types.js\";\nimport type { UploadedFile } from \"../types.js\";\n\ntype FileInputContext = {\n accept?: \"image/*\" | \".pdf\" | \"image/*,.pdf\" | HTMLInputElement[\"accept\"];\n maxSizeBytes?: number;\n files: UploadedFile[];\n onChange: (\n e:\n | React.ChangeEvent<HTMLInputElement>\n | React.DragEvent<HTMLDivElement>,\n files: UploadedFile[],\n ) => void;\n};\n\nconst fileInputContext = createContext<FileInputContext | null>(null);\n\nexport const useFileInputContext = (): FileInputContext | null =>\n useContext(fileInputContext);\n\nexport interface FileInputContextProviderProps extends WithChildren {\n context: FileInputContext;\n}\n\nexport const FileInputContextProvider: React.FC<\n FileInputContextProviderProps\n> = ({ context, children }) => (\n <fileInputContext.Provider value={context}>\n {children}\n </fileInputContext.Provider>\n);\n"],"names":["fileInputContext","createContext","context","children","jsx","Provider","value","useContext"],"mappings":"wIAgBMA,EAAmBC,gBAAuC,uCAW5D,EAAGC,QAAAA,EAASC,SAAAA,KACXC,EAAAA,IAAAJ,EAAiBK,SAAjB,CAA0BC,MAAOJ,EAC7BC,SAAAA,gCAX0B,IAC/BI,EAAAA,WAAWP"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../utilities/formatters/bytes/formatBytes.cjs");exports.validateFileInputFiles=function(t,s="",i){var a;const o=s.split(",").map((e=>e.toLowerCase())).map((e=>e.replaceAll("*",""))).map((e=>e.trim()));let r=0===o.length;return r=o.some((e=>t.type.toLowerCase().includes(e)||t.name.toLowerCase().endsWith(e))),r?typeof i<"u"&&t.size>i?{type:"TOO_LARGE",message:`Filen er ${e.formatBytes(t.size)}, men kan maksimalt være ${e.formatBytes(i)}`}:void 0:{type:"WRONG_TYPE",message:`Filtypen ${(null==(a=t.name)?void 0:a.split(".")[1])||""} støttes ikke`}};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../utilities/formatters/bytes/formatBytes.cjs");exports.validateFileInputFiles=function(t,s="",i){const a=s.split(",").map((e=>e.toLowerCase())).map((e=>e.replaceAll("*",""))).map((e=>e.trim()));let o=0===a.length;return o=a.some((e=>t.type.toLowerCase().includes(e)||t.name.toLowerCase().endsWith(e))),o?typeof i<"u"&&t.size>i?{type:"TOO_LARGE",message:`Filen er ${e.formatBytes(t.size)}, men kan maksimalt være ${e.formatBytes(i)}`}:void 0:{type:"WRONG_TYPE",message:`Filtypen ${t.name?.split(".")[1]||""} støttes ikke`}};
2
2
  //# sourceMappingURL=validateFileInputFiles.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"validateFileInputFiles.cjs","sources":["../../../../../src/components/file-input/internal/validateFileInputFiles.ts"],"sourcesContent":["import {formatBytes} from \"../../../utilities/formatters/bytes/formatBytes.js\";\nimport type {UploadedFile} from \"../types.js\";\n\nexport function validateFileInputFiles(\n file: File,\n accept = \"\",\n maxSizeBytes?: number,\n): UploadedFile[\"validation\"] | undefined {\n const acceptStrings = accept\n .split(\",\")\n .map((s) => s.toLowerCase())\n .map((s) => s.replaceAll(\"*\", \"\"))\n .map((s) => s.trim());\n\n let isValidFormat = acceptStrings.length === 0;\n\n isValidFormat = acceptStrings.some(\n (acceptString) =>\n file.type.toLowerCase().includes(acceptString) ||\n file.name.toLowerCase().endsWith(acceptString),\n );\n\n if (!isValidFormat) {\n return {\n type: \"WRONG_TYPE\",\n message: `Filtypen ${file.name?.split(\".\")[1] || \"\"} støttes ikke`,\n };\n }\n\n if (typeof maxSizeBytes !== \"undefined\" && file.size > maxSizeBytes) {\n return {\n type: \"TOO_LARGE\",\n message: `Filen er ${formatBytes(\n file.size,\n )}, men kan maksimalt være ${formatBytes(maxSizeBytes)}`,\n };\n }\n\n return undefined;\n}\n"],"names":["file","accept","maxSizeBytes","acceptStrings","split","map","s","toLowerCase","replaceAll","trim","isValidFormat","length","some","acceptString","type","includes","name","endsWith","size","message","formatBytes","_a"],"mappings":"sLAGO,SACHA,EACAC,EAAS,GACTC,SAEM,MAAAC,EAAgBF,EACjBG,MAAM,KACNC,KAAKC,GAAMA,EAAEC,gBACbF,KAAKC,GAAMA,EAAEE,WAAW,IAAK,MAC7BH,KAAKC,GAAMA,EAAEG,SAEd,IAAAC,EAAyC,IAAzBP,EAAcQ,OAQlC,OANAD,EAAgBP,EAAcS,MACzBC,GACGb,EAAKc,KAAKP,cAAcQ,SAASF,IACjCb,EAAKgB,KAAKT,cAAcU,SAASJ,KAGpCH,SAOMR,EAAiB,KAAeF,EAAKkB,KAAOhB,EAC5C,CACHY,KAAM,YACNK,QAAS,YAAYC,EAAAA,YACjBpB,EAAKkB,iCACoBE,cAAYlB,WALjD,EANW,CACHY,KAAM,aACNK,QAAS,aAAY,OAAAE,EAAArB,EAAKgB,WAALK,EAAAA,EAAWjB,MAAM,KAAK,KAAM,kBAc7D"}
1
+ {"version":3,"file":"validateFileInputFiles.cjs","sources":["../../../../../src/components/file-input/internal/validateFileInputFiles.ts"],"sourcesContent":["import { formatBytes } from \"../../../utilities/formatters/bytes/formatBytes.js\";\nimport type { UploadedFile } from \"../types.js\";\n\nexport function validateFileInputFiles(\n file: File,\n accept = \"\",\n maxSizeBytes?: number,\n): UploadedFile[\"validation\"] | undefined {\n const acceptStrings = accept\n .split(\",\")\n .map((s) => s.toLowerCase())\n .map((s) => s.replaceAll(\"*\", \"\"))\n .map((s) => s.trim());\n\n let isValidFormat = acceptStrings.length === 0;\n\n isValidFormat = acceptStrings.some(\n (acceptString) =>\n file.type.toLowerCase().includes(acceptString) ||\n file.name.toLowerCase().endsWith(acceptString),\n );\n\n if (!isValidFormat) {\n return {\n type: \"WRONG_TYPE\",\n message: `Filtypen ${file.name?.split(\".\")[1] || \"\"} støttes ikke`,\n };\n }\n\n if (typeof maxSizeBytes !== \"undefined\" && file.size > maxSizeBytes) {\n return {\n type: \"TOO_LARGE\",\n message: `Filen er ${formatBytes(\n file.size,\n )}, men kan maksimalt være ${formatBytes(maxSizeBytes)}`,\n };\n }\n\n return undefined;\n}\n"],"names":["file","accept","maxSizeBytes","acceptStrings","split","map","s","toLowerCase","replaceAll","trim","isValidFormat","length","some","acceptString","type","includes","name","endsWith","size","message","formatBytes"],"mappings":"sLAGO,SACHA,EACAC,EAAS,GACTC,GAEM,MAAAC,EAAgBF,EACjBG,MAAM,KACNC,KAAKC,GAAMA,EAAEC,gBACbF,KAAKC,GAAMA,EAAEE,WAAW,IAAK,MAC7BH,KAAKC,GAAMA,EAAEG,SAEd,IAAAC,EAAyC,IAAzBP,EAAcQ,OAQlC,OANAD,EAAgBP,EAAcS,MACzBC,GACGb,EAAKc,KAAKP,cAAcQ,SAASF,IACjCb,EAAKgB,KAAKT,cAAcU,SAASJ,KAGpCH,SAOMR,EAAiB,KAAeF,EAAKkB,KAAOhB,EAC5C,CACHY,KAAM,YACNK,QAAS,YAAYC,EAAAA,YACjBpB,EAAKkB,iCACoBE,cAAYlB,WALjD,EANW,CACHY,KAAM,aACNK,QAAS,YAAYnB,EAAKgB,MAAMZ,MAAM,KAAK,IAAM,kBAc7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.stories.cjs","sources":["../../../../../src/components/file-input/stories/FileInput.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from \"@storybook/react\";\nimport React, {useState} from \"react\";\nimport \"../styles/_index.scss\";\nimport {Button, PrimaryButton} from \"../../button/index.js\";\nimport {File} from \"../../file/File.js\";\nimport {FileInput} from \"../FileInput.js\";\nimport {Dropzone} from \"../internal/Dropzone.js\";\nimport {MaxSize} from \"../internal/MaxSize.js\";\nimport type {UploadedFile} from \"../types.js\";\n\nconst meta = {\n title: \"Komponenter/File/FileInput\",\n component: FileInput,\n subcomponents: {File, Dropzone, MaxSize, Button},\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof FileInput>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const FileInputStory: Story = {\n name: \"FileInput\",\n args: {\n variant: \"flexible\",\n value: [],\n onChange: console.info,\n legend: \"Legg til fil\",\n labelProps: {\n variant: \"medium\",\n },\n accept: \"image/*,.pdf\",\n maxSizeBytes: 8_000_000,\n },\n render: (args) => {\n const [files, setFiles] = useState<UploadedFile[]>([]);\n\n return (\n <div>\n <FileInput\n {...args}\n id=\"file-input-example\"\n className=\"jkl-spacing-16-24--bottom\"\n value={files}\n onChange={(_e, newFiles) => {\n setFiles((currentFiles) => [\n ...currentFiles,\n ...newFiles,\n ]);\n }}\n >\n {files.map(({state, file, validation}, index) => {\n return (\n <File\n key={`${file.name}-${index}`}\n fileName={file.name}\n fileType={file.type}\n fileSize={file.size}\n path={`/path/fil-${index}`}\n file={file}\n state={state}\n onRemove={\n state !== \"loading\" ? (e) => \"\" : undefined\n }\n />\n );\n })}\n </FileInput>\n <PrimaryButton\n className=\"jkl-spacing-16--top\"\n type=\"button\"\n onClick={async () => {\n const toUpload = files.filter(\n (fileState) =>\n typeof fileState.validation === \"undefined\",\n );\n\n const newFiles = files.map((file) =>\n toUpload.includes(file)\n ? {\n ...file,\n }\n : file,\n );\n\n setFiles(\n newFiles.map((file) => {\n return {...file, state: \"loading\"};\n }),\n );\n\n await Promise.all(newFiles);\n }}\n >\n Last opp\n </PrimaryButton>\n </div>\n );\n },\n};\n"],"names":["meta","title","component","FileInput","subcomponents","File","Dropzone","MaxSize","Button","parameters","layout","tags","FileInputStory","name","args","variant","value","onChange","console","info","legend","labelProps","accept","maxSizeBytes","render","files","setFiles","useState","children","jsx","id","className","_e","newFiles","currentFiles","map","state","file","validation","index","fileName","fileType","type","fileSize","size","path","onRemove","e","PrimaryButton","onClick","async","toUpload","filter","fileState","includes","Promise","all"],"mappings":"oYAUMA,EAAO,CACTC,MAAO,6BACPC,UAAWC,EAAAA,UACXC,cAAe,CAAAC,KAACA,EAAMA,KAAAC,SAAAA,WAAUC,QAAAA,EAAAA,QAASC,OAAAA,EAAAA,QACzCC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAOEC,EAAwB,CACjCC,KAAM,YACNC,KAAM,CACFC,QAAS,WACTC,MAAO,GACPC,SAAUC,QAAQC,KAClBC,OAAQ,eACRC,WAAY,CACRN,QAAS,UAEbO,OAAQ,eACRC,aAAc,KAElBC,OAASV,IACL,MAAOW,EAAOC,GAAYC,EAAAA,SAAyB,IAEnD,cACK,MACG,CAAAC,SAAA,CAAAC,EAAAA,IAAC1B,EAAAA,UAAA,IACOW,EACJgB,GAAG,qBACHC,UAAU,4BACVf,MAAOS,EACPR,SAAU,CAACe,EAAIC,KACXP,GAAUQ,GAAiB,IACpBA,KACAD,IACN,EAGJL,SAAAH,EAAMU,KAAI,EAAEC,MAAAA,EAAOC,KAAAA,EAAMC,WAAAA,GAAaC,IAE/BV,EAAAA,IAACxB,EAAAA,KAAA,CAEGmC,SAAUH,EAAKxB,KACf4B,SAAUJ,EAAKK,KACfC,SAAUN,EAAKO,KACfC,KAAM,aAAaN,IACnBF,KAAAA,EACAD,MAAAA,EACAU,SACc,YAAVV,EAAuBW,GAAM,QAAK,GARjC,GAAGV,EAAKxB,QAAQ0B,SAcrCV,EAAAA,IAACmB,EAAAA,cAAA,CACGjB,UAAU,sBACVW,KAAK,SACLO,QAASC,UACL,MAAMC,EAAW1B,EAAM2B,QAClBC,UACUA,EAAUf,WAAe,MAGlCL,EAAWR,EAAMU,KAAKE,GACxBc,EAASG,SAASjB,GACZ,IACKA,GAELA,IAGVX,EACIO,EAASE,KAAKE,IAAAA,IACCA,EAAMD,MAAO,qBAI1BmB,QAAQC,IAAIvB,EAAQ,EAEjCL,SAAA,eAGL"}
1
+ {"version":3,"file":"FileInput.stories.cjs","sources":["../../../../../src/components/file-input/stories/FileInput.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React, { useState } from \"react\";\nimport \"../styles/_index.scss\";\nimport { Button, PrimaryButton } from \"../../button/index.js\";\nimport { File } from \"../../file/File.js\";\nimport { FileInput } from \"../FileInput.js\";\nimport { Dropzone } from \"../internal/Dropzone.js\";\nimport { MaxSize } from \"../internal/MaxSize.js\";\nimport type { UploadedFile } from \"../types.js\";\n\nconst meta = {\n title: \"Komponenter/File/FileInput\",\n component: FileInput,\n subcomponents: { File, Dropzone, MaxSize, Button },\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n} satisfies Meta<typeof FileInput>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const FileInputStory: Story = {\n name: \"FileInput\",\n args: {\n variant: \"flexible\",\n value: [],\n onChange: console.info,\n legend: \"Legg til fil\",\n labelProps: {\n variant: \"medium\",\n },\n accept: \"image/*,.pdf\",\n maxSizeBytes: 8_000_000,\n },\n render: (args) => {\n const [files, setFiles] = useState<UploadedFile[]>([]);\n\n return (\n <div>\n <FileInput\n {...args}\n id=\"file-input-example\"\n className=\"jkl-spacing-16-24--bottom\"\n value={files}\n onChange={(_e, newFiles) => {\n setFiles((currentFiles) => [\n ...currentFiles,\n ...newFiles,\n ]);\n }}\n >\n {files.map(({ state, file, validation }, index) => {\n return (\n <File\n key={`${file.name}-${index}`}\n fileName={file.name}\n fileType={file.type}\n fileSize={file.size}\n path={`/path/fil-${index}`}\n file={file}\n state={state}\n onRemove={\n state !== \"loading\" ? (e) => \"\" : undefined\n }\n />\n );\n })}\n </FileInput>\n <PrimaryButton\n className=\"jkl-spacing-16--top\"\n type=\"button\"\n onClick={async () => {\n const toUpload = files.filter(\n (fileState) =>\n typeof fileState.validation === \"undefined\",\n );\n\n const newFiles = files.map((file) =>\n toUpload.includes(file)\n ? {\n ...file,\n }\n : file,\n );\n\n setFiles(\n newFiles.map((file) => {\n return { ...file, state: \"loading\" };\n }),\n );\n\n await Promise.all(newFiles);\n }}\n >\n Last opp\n </PrimaryButton>\n </div>\n );\n },\n};\n"],"names":["meta","title","component","FileInput","subcomponents","File","Dropzone","MaxSize","Button","parameters","layout","tags","FileInputStory","name","args","variant","value","onChange","console","info","legend","labelProps","accept","maxSizeBytes","render","files","setFiles","useState","children","jsx","id","className","_e","newFiles","currentFiles","map","state","file","validation","index","fileName","fileType","type","fileSize","size","path","onRemove","e","PrimaryButton","onClick","async","toUpload","filter","fileState","includes","Promise","all"],"mappings":"oYAUMA,EAAO,CACTC,MAAO,6BACPC,UAAWC,EAAAA,UACXC,cAAe,CAAAC,KAAEA,EAAMA,KAAAC,SAAAA,WAAUC,QAAAA,EAAAA,QAASC,OAAAA,EAAAA,QAC1CC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,aAOEC,EAAwB,CACjCC,KAAM,YACNC,KAAM,CACFC,QAAS,WACTC,MAAO,GACPC,SAAUC,QAAQC,KAClBC,OAAQ,eACRC,WAAY,CACRN,QAAS,UAEbO,OAAQ,eACRC,aAAc,KAElBC,OAASV,IACL,MAAOW,EAAOC,GAAYC,EAAAA,SAAyB,IAEnD,cACK,MACG,CAAAC,SAAA,CAAAC,EAAAA,IAAC1B,EAAAA,UAAA,IACOW,EACJgB,GAAG,qBACHC,UAAU,4BACVf,MAAOS,EACPR,SAAU,CAACe,EAAIC,KACXP,GAAUQ,GAAiB,IACpBA,KACAD,IACN,EAGJL,SAAAH,EAAMU,KAAI,EAAGC,MAAAA,EAAOC,KAAAA,EAAMC,WAAAA,GAAcC,IAEjCV,EAAAA,IAACxB,EAAAA,KAAA,CAEGmC,SAAUH,EAAKxB,KACf4B,SAAUJ,EAAKK,KACfC,SAAUN,EAAKO,KACfC,KAAM,aAAaN,IACnBF,KAAAA,EACAD,MAAAA,EACAU,SACc,YAAVV,EAAuBW,GAAM,QAAK,GARjC,GAAGV,EAAKxB,QAAQ0B,SAcrCV,EAAAA,IAACmB,EAAAA,cAAA,CACGjB,UAAU,sBACVW,KAAK,SACLO,QAASC,UACL,MAAMC,EAAW1B,EAAM2B,QAClBC,UACUA,EAAUf,WAAe,MAGlCL,EAAWR,EAAMU,KAAKE,GACxBc,EAASG,SAASjB,GACZ,IACOA,GAEPA,IAGVX,EACIO,EAASE,KAAKE,IAAAA,IACEA,EAAMD,MAAO,qBAI3BmB,QAAQC,IAAIvB,EAAQ,EAEjCL,SAAA,eAGL"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),n=require("react"),r=require("../../text-input/TextInput.cjs"),o=require("../Icon.cjs");require("../icons/animated/ArrowVerticalAnimated.cjs"),require("../icons/animated/ArrowHorizontalAnimated.cjs"),require("../icons/animated/PlusRemoveAnimated.cjs");const c=require("../icons/ArrowDownIcon.cjs"),s=require("../icons/ArrowLeftIcon.cjs"),i=require("../icons/ArrowNorthEastIcon.cjs"),t=require("../icons/ArrowRightIcon.cjs"),u=require("../icons/ArrowUpIcon.cjs"),I=require("../icons/CalendarIcon.cjs"),a=require("../icons/CheckIcon.cjs"),l=require("../icons/ChevronDownIcon.cjs"),j=require("../icons/ChevronLeftIcon.cjs"),q=require("../icons/ChevronRightIcon.cjs"),d=require("../icons/ChevronUpIcon.cjs"),h=require("../icons/CloseIcon.cjs"),m=require("../icons/CopyIcon.cjs"),p=require("../icons/DotsIcon.cjs"),w=require("../icons/DragIcon.cjs"),C=require("../icons/ErrorIcon.cjs"),g=require("../icons/GreenCheckIcon.cjs"),v=require("../icons/HamburgerIcon.cjs"),x=require("../icons/InfoIcon.cjs"),A=require("../icons/LinkIcon.cjs"),b=require("../icons/MinusIcon.cjs"),f=require("../icons/OpenInNewIcon.cjs"),k=require("../icons/PenIcon.cjs"),y=require("../icons/PlusIcon.cjs"),D=require("../icons/QuestionIcon.cjs"),T=require("../icons/RedCrossIcon.cjs"),S=require("../icons/SearchIcon.cjs"),N=require("../icons/SuccessIcon.cjs"),R=require("../icons/ThumbDownIcon.cjs"),L=require("../icons/ThumbUpIcon.cjs"),P=require("../icons/TrashCanIcon.cjs"),U=require("../icons/WarningIcon.cjs");;/* empty css */const E=({name:n,renderIcon:r,...o})=>e.jsx("div",{title:n||r.name,...o,children:r()}),M=({columns:n,children:r,...o})=>e.jsx("div",{className:`jkl-example-grid jkl-example-grid--${n}-columns`,...o,children:r}),H={title:"Komponenter/Ikoner",component:o.Icon,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{variant:{control:"radio",options:["inherit","medium","small"]}}},O=[c.ArrowDownIcon,s.ArrowLeftIcon,i.ArrowNorthEastIcon,t.ArrowRightIcon,u.ArrowUpIcon,I.CalendarIcon,a.CheckIcon,l.ChevronDownIcon,j.ChevronLeftIcon,q.ChevronRightIcon,d.ChevronUpIcon,h.CloseIcon,m.CopyIcon,p.DotsIcon,w.DragIcon,C.ErrorIcon,g.GreenCheckIcon,v.HamburgerIcon,x.InfoIcon,A.LinkIcon,b.MinusIcon,f.OpenInNewIcon,k.PenIcon,y.PlusIcon,D.QuestionIcon,T.RedCrossIcon,S.SearchIcon,N.SuccessIcon,R.ThumbDownIcon,L.ThumbUpIcon,P.TrashCanIcon,U.WarningIcon],_={args:{variant:"small",bold:!1},render:({variant:o,bold:c})=>{const[s,i]=n.useState("1rem");return e.jsxs("div",{style:{width:"50vw"},children:["inherit"===o&&e.jsx(r.TextInput,{label:"Fontstørrelse",className:"jkl-spacing-24--bottom",value:s,onChange:e=>i(e.target.value),width:"10ch"}),e.jsx(M,{style:{fontSize:s},columns:"four",children:O.map((n=>e.jsx(E,{style:{justifySelf:"center"},renderIcon:()=>e.jsx(n,{bold:c,variant:o}),name:n.displayName},n.displayName)))})]})}};exports.Ikoner=_,exports.default=H;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),n=require("react"),r=require("../../text-input/TextInput.cjs"),o=require("../Icon.cjs");require("../icons/animated/ArrowVerticalAnimated.cjs"),require("../icons/animated/ArrowHorizontalAnimated.cjs"),require("../icons/animated/PlusRemoveAnimated.cjs");const c=require("../icons/ArrowDownIcon.cjs"),s=require("../icons/ArrowLeftIcon.cjs"),i=require("../icons/ArrowNorthEastIcon.cjs"),t=require("../icons/ArrowRightIcon.cjs"),u=require("../icons/ArrowUpIcon.cjs"),I=require("../icons/CalendarIcon.cjs"),a=require("../icons/CheckIcon.cjs"),l=require("../icons/ChevronDownIcon.cjs"),j=require("../icons/ChevronLeftIcon.cjs"),q=require("../icons/ChevronRightIcon.cjs"),d=require("../icons/ChevronUpIcon.cjs"),h=require("../icons/CloseIcon.cjs"),m=require("../icons/CopyIcon.cjs"),p=require("../icons/DotsIcon.cjs"),w=require("../icons/DragIcon.cjs"),C=require("../icons/ErrorIcon.cjs"),v=require("../icons/GreenCheckIcon.cjs"),g=require("../icons/HamburgerIcon.cjs"),x=require("../icons/InfoIcon.cjs"),A=require("../icons/LinkIcon.cjs"),b=require("../icons/MinusIcon.cjs"),f=require("../icons/OpenInNewIcon.cjs"),k=require("../icons/PenIcon.cjs"),y=require("../icons/PlusIcon.cjs"),D=require("../icons/QuestionIcon.cjs"),T=require("../icons/RedCrossIcon.cjs"),S=require("../icons/SearchIcon.cjs"),N=require("../icons/SuccessIcon.cjs"),R=require("../icons/ThumbDownIcon.cjs"),L=require("../icons/ThumbUpIcon.cjs"),P=require("../icons/TrashCanIcon.cjs"),U=require("../icons/WarningIcon.cjs");;/* empty css */const E=({name:n,renderIcon:r,...o})=>e.jsx("div",{title:n||r.name,...o,children:r()}),M=({columns:n,children:r,...o})=>e.jsx("div",{className:`jkl-example-grid jkl-example-grid--${n}-columns`,...o,children:r}),H={title:"Komponenter/Ikoner",component:o.Icon,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{variant:{control:"radio",options:["inherit","medium","small"]}}},O=[c.ArrowDownIcon,s.ArrowLeftIcon,i.ArrowNorthEastIcon,t.ArrowRightIcon,u.ArrowUpIcon,I.CalendarIcon,a.CheckIcon,l.ChevronDownIcon,j.ChevronLeftIcon,q.ChevronRightIcon,d.ChevronUpIcon,h.CloseIcon,m.CopyIcon,p.DotsIcon,w.DragIcon,C.ErrorIcon,v.GreenCheckIcon,g.HamburgerIcon,x.InfoIcon,A.LinkIcon,b.MinusIcon,f.OpenInNewIcon,k.PenIcon,y.PlusIcon,D.QuestionIcon,T.RedCrossIcon,S.SearchIcon,N.SuccessIcon,R.ThumbDownIcon,L.ThumbUpIcon,P.TrashCanIcon,U.WarningIcon],_={args:{variant:"small",bold:!1},render:({variant:o,bold:c})=>{const[s,i]=n.useState("1rem");return e.jsxs("div",{style:{width:"50vw"},children:["inherit"===o&&e.jsx(r.TextInput,{label:"Fontstørrelse",className:"jkl-spacing-24--bottom",value:s,onChange:e=>i(e.target.value),width:"10ch"}),e.jsx(M,{style:{fontSize:s},columns:"four",children:O.map((n=>e.jsx(E,{style:{justifySelf:"center"},renderIcon:()=>e.jsx(n,{bold:c,variant:o}),name:n.displayName},n.displayName)))})]})}};exports.Ikoner=_,exports.default=H;
2
2
  //# sourceMappingURL=Icons.stories.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react");exports.useImageLoadingStatus=t=>{const u=e.useRef(null),[r,n]=e.useState(!1);return e.useEffect((()=>{u.current&&((e,t)=>{let u;!function r(){if(e.complete)return clearTimeout(u),void(null==t||t());u=window.setTimeout(r,50)}()})(u.current,(()=>{n(!0),null==t||t()}))}),[t]),[u,r]};
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react");exports.useImageLoadingStatus=t=>{const r=e.useRef(null),[u,o]=e.useState(!1);return e.useEffect((()=>{r.current&&((e,t)=>{let r;!function u(){if(e.complete)return clearTimeout(r),void t?.();r=window.setTimeout(u,50)}()})(r.current,(()=>{o(!0),t?.()}))}),[t]),[r,u]};
2
2
  //# sourceMappingURL=useImageLoadingStatus.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useImageLoadingStatus.cjs","sources":["../../../../src/components/image/useImageLoadingStatus.ts"],"sourcesContent":["import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nconst doWhenImageLoaded = (image: HTMLImageElement, callback?: () => void) => {\n let timeout: number | undefined;\n\n function checkLoaded() {\n if (image.complete) {\n clearTimeout(timeout);\n callback?.();\n return;\n }\n timeout = window.setTimeout(checkLoaded, 50);\n }\n\n checkLoaded();\n};\n\nexport const useImageLoadingStatus = (\n callback?: () => void,\n): [RefObject<HTMLImageElement>, boolean] => {\n const imageRef = useRef<HTMLImageElement>(null);\n const [imageLoaded, setImageLoaded] = useState(false);\n\n useEffect(() => {\n imageRef.current &&\n doWhenImageLoaded(imageRef.current, () => {\n setImageLoaded(true);\n callback?.();\n });\n }, [callback]);\n\n return [imageRef, imageLoaded];\n};\n"],"names":["callback","imageRef","useRef","imageLoaded","setImageLoaded","useState","useEffect","current","image","timeout","checkLoaded","complete","clearTimeout","window","setTimeout","doWhenImageLoaded"],"mappings":"uIAkBIA,IAEM,MAAAC,EAAWC,SAAyB,OACnCC,EAAaC,GAAkBC,EAAAA,UAAS,GAE/CC,OAAAA,EAAAA,WAAU,KACNL,EAASM,SAtBS,EAACC,EAAyBR,KAC5C,IAAAS,GAEJ,SAASC,IACL,GAAIF,EAAMG,SAGN,OAFAC,aAAaH,QACF,MAAAT,GAAAA,KAGLS,EAAAI,OAAOC,WAAWJ,EAAa,GAAE,CAGnCA,EAAA,EAWJK,CAAkBd,EAASM,SAAS,KAChCH,GAAe,GACJ,MAAAJ,GAAAA,MACd,GACN,CAACA,IAEG,CAACC,EAAUE,EAAW"}
1
+ {"version":3,"file":"useImageLoadingStatus.cjs","sources":["../../../../src/components/image/useImageLoadingStatus.ts"],"sourcesContent":["import { type RefObject, useEffect, useRef, useState } from \"react\";\n\nconst doWhenImageLoaded = (image: HTMLImageElement, callback?: () => void) => {\n let timeout: number | undefined;\n\n function checkLoaded() {\n if (image.complete) {\n clearTimeout(timeout);\n callback?.();\n return;\n }\n timeout = window.setTimeout(checkLoaded, 50);\n }\n\n checkLoaded();\n};\n\nexport const useImageLoadingStatus = (\n callback?: () => void,\n): [RefObject<HTMLImageElement>, boolean] => {\n const imageRef = useRef<HTMLImageElement>(null);\n const [imageLoaded, setImageLoaded] = useState(false);\n\n useEffect(() => {\n imageRef.current &&\n doWhenImageLoaded(imageRef.current, () => {\n setImageLoaded(true);\n callback?.();\n });\n }, [callback]);\n\n return [imageRef, imageLoaded];\n};\n"],"names":["callback","imageRef","useRef","imageLoaded","setImageLoaded","useState","useEffect","current","image","timeout","checkLoaded","complete","clearTimeout","window","setTimeout","doWhenImageLoaded"],"mappings":"uIAkBIA,IAEM,MAAAC,EAAWC,SAAyB,OACnCC,EAAaC,GAAkBC,EAAAA,UAAS,GAE/CC,OAAAA,EAAAA,WAAU,KACNL,EAASM,SAtBS,EAACC,EAAyBR,KAC5C,IAAAS,GAEJ,SAASC,IACL,GAAIF,EAAMG,SAGN,OAFAC,aAAaH,QACFT,MAGLS,EAAAI,OAAOC,WAAWJ,EAAa,GAAE,CAGnCA,EAAA,EAWJK,CAAkBd,EAASM,SAAS,KAChCH,GAAe,GACJJ,KAAA,GACd,GACN,CAACA,IAEG,CAACC,EAAUE,EAAW"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("../../../clsx-E3yX_9sL.cjs"),l=require("react"),i=require("../../hooks/useId/useId.cjs"),s=require("./Label.cjs"),t=require("./SupportLabel.cjs"),n=l.forwardRef(((n,a)=>{const{className:o,children:d,density:p,errorLabel:u,helpLabel:c,inline:b,label:j,labelProps:y,render:h,supportLabelProps:x,tooltip:m,id:v,...f}=n,L=i.useId(v||"jkl-input",{generateSuffix:!v}),S=i.useId("jkl-support-label"),g=!!m,q=u||c,I=u?"error":c?"help":void 0,k={"aria-describedby":q?S:void 0,"aria-invalid":!!u||void 0,id:L},w=h?()=>h(k):()=>{const e=l.Children.toArray(n.children)[0];if(l.isValidElement(e))return l.cloneElement(e,{...k,...e.props})};return e.jsxs("div",{ref:a,className:r.clsx(o,"jkl-input-group",{"jkl-input-group--inline":b}),"data-density":p,...f,children:[e.jsx(s.Label,{standAlone:!0,htmlFor:L,srOnly:b,...y,style:{whiteSpace:g?"nowrap":void 0,...null==y?void 0:y.style},density:p,children:g?e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{whiteSpace:"normal"},children:j})," ",m]}):j}),w(),e.jsx(t.SupportLabel,{srOnly:b,...x,label:q,labelType:I,id:S,density:p})]})}));n.displayName="InputGroup",exports.InputGroup=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("../../../clsx-E3yX_9sL.cjs"),l=require("react"),i=require("../../hooks/useId/useId.cjs"),s=require("./Label.cjs"),t=require("./SupportLabel.cjs"),n=l.forwardRef(((n,a)=>{const{className:o,children:d,density:p,errorLabel:u,helpLabel:c,inline:b,label:j,labelProps:y,render:h,supportLabelProps:x,tooltip:m,id:f,...v}=n,L=i.useId(f||"jkl-input",{generateSuffix:!f}),S=i.useId("jkl-support-label"),g=!!m,q=u||c,I=u?"error":c?"help":void 0,k={"aria-describedby":q?S:void 0,"aria-invalid":!!u||void 0,id:L},w=h?()=>h(k):()=>{const e=l.Children.toArray(n.children)[0];if(l.isValidElement(e))return l.cloneElement(e,{...k,...e.props})};return e.jsxs("div",{ref:a,className:r.clsx(o,"jkl-input-group",{"jkl-input-group--inline":b}),"data-density":p,...v,children:[e.jsx(s.Label,{standAlone:!0,htmlFor:L,srOnly:b,...y,style:{whiteSpace:g?"nowrap":void 0,...y?.style},density:p,children:g?e.jsxs(e.Fragment,{children:[e.jsx("span",{style:{whiteSpace:"normal"},children:j})," ",m]}):j}),w(),e.jsx(t.SupportLabel,{srOnly:b,...x,label:q,labelType:I,id:S,density:p})]})}));n.displayName="InputGroup",exports.InputGroup=n;
2
2
  //# sourceMappingURL=InputGroup.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputGroup.cjs","sources":["../../../../src/components/input-group/InputGroup.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { Label } from \"./Label.js\";\nimport { SupportLabel } from \"./SupportLabel.js\";\nimport type { InputGroupProps, InputProps } from \"./types.js\";\n\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(\n (props, ref) => {\n const {\n className,\n children,\n density,\n errorLabel,\n helpLabel,\n inline,\n label,\n labelProps,\n render,\n supportLabelProps,\n tooltip,\n id,\n ...rest\n } = props;\n\n const uid = useId(id || \"jkl-input\", { generateSuffix: !id });\n const supportId = useId(\"jkl-support-label\");\n\n const hasTooltip = !!tooltip;\n\n const supportText = errorLabel || helpLabel;\n const supportTextType = errorLabel\n ? \"error\"\n : helpLabel\n ? \"help\"\n : undefined;\n\n const describedBy = supportText ? supportId : undefined;\n\n const inputProps: InputProps = {\n \"aria-describedby\": describedBy,\n \"aria-invalid\": errorLabel ? true : undefined,\n id: uid,\n };\n\n const renderInput = render\n ? () => render(inputProps)\n : () => {\n const input = React.Children.toArray(props.children)[0];\n\n if (!React.isValidElement<InputProps>(input)) return;\n\n return React.cloneElement<InputProps>(input, {\n ...inputProps,\n ...input.props,\n });\n };\n\n return (\n <div\n ref={ref}\n className={clsx(className, \"jkl-input-group\", {\n \"jkl-input-group--inline\": inline,\n })}\n data-density={density}\n {...rest}\n >\n <Label\n standAlone\n htmlFor={uid}\n srOnly={inline}\n {...labelProps}\n style={{\n whiteSpace: hasTooltip ? \"nowrap\" : undefined,\n ...labelProps?.style,\n }}\n density={density}\n >\n {hasTooltip ? (\n <>\n <span style={{ whiteSpace: \"normal\" }}>\n {label}\n </span>\n {\"\\u00A0\"}\n {tooltip}\n </>\n ) : (\n label\n )}\n </Label>\n {renderInput()}\n <SupportLabel\n srOnly={inline}\n {...supportLabelProps}\n label={supportText}\n labelType={supportTextType}\n id={supportId}\n density={density}\n />\n </div>\n );\n },\n);\n\nInputGroup.displayName = \"InputGroup\";\n"],"names":["InputGroup","forwardRef","props","ref","className","children","density","errorLabel","helpLabel","inline","label","labelProps","render","supportLabelProps","tooltip","id","rest","uid","useId","generateSuffix","supportId","hasTooltip","supportText","supportTextType","inputProps","renderInput","input","React","Children","toArray","isValidElement","cloneElement","jsxs","clsx","jsx","Label","standAlone","htmlFor","srOnly","style","whiteSpace","Fragment","SupportLabel","labelType","displayName"],"mappings":"kRAOaA,EAAaC,EAAAA,YACtB,CAACC,EAAOC,KACE,MACFC,UAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,WAAAA,EACAC,UAAAA,EACAC,OAAAA,EACAC,MAAAA,EACAC,WAAAA,EACAC,OAAAA,EACAC,kBAAAA,EACAC,QAAAA,EACAC,GAAAA,KACGC,GACHd,EAEEe,EAAMC,EAAAA,MAAMH,GAAM,YAAa,CAAEI,gBAAiBJ,IAClDK,EAAYF,QAAM,qBAElBG,IAAeP,EAEfQ,EAAcf,GAAcC,EAC5Be,EAAkBhB,EAClB,QACAC,EACE,YACA,EAIFgB,EAAyB,CAC3B,mBAHgBF,EAAcF,OAAY,EAI1C,iBAAgBb,QAAoB,EACpCQ,GAAIE,GAGFQ,EAAcb,EACd,IAAMA,EAAOY,GACb,KACI,MAAME,EAAQC,EAAMC,SAASC,QAAQ3B,EAAMG,UAAU,GAErD,GAAKsB,EAAMG,eAA2BJ,GAE/B,OAAAC,EAAMI,aAAyBL,EAAO,IACtCF,KACAE,EAAMxB,OACZ,EAIP,OAAA8B,EAAAA,KAAC,MAAA,CACG7B,IAAAA,EACAC,UAAW6B,EAAAA,KAAK7B,EAAW,kBAAmB,CAC1C,0BAA2BK,IAE/B,eAAcH,KACVU,EAEJX,SAAA,CAAA6B,EAAAA,IAACC,EAAAA,MAAA,CACGC,YAAU,EACVC,QAASpB,EACTqB,OAAQ7B,KACJE,EACJ4B,MAAO,CACHC,WAAYnB,EAAa,cAAW,KACjC,MAAAV,OAAAA,EAAAA,EAAY4B,OAEnBjC,QAAAA,EAECD,WAEO2B,EAAAA,KAAAS,EAAAA,SAAA,CAAApC,SAAA,CAAA6B,MAAC,QAAKK,MAAO,CAAEC,WAAY,UACtBnC,SACLK,IACC,IACAI,KAGLJ,IAGPe,IACDS,EAAAA,IAACQ,EAAAA,aAAA,CACGJ,OAAQ7B,KACJI,EACJH,MAAOY,EACPqB,UAAWpB,EACXR,GAAIK,EACJd,QAAAA,MAER,IAKZN,EAAW4C,YAAc"}
1
+ {"version":3,"file":"InputGroup.cjs","sources":["../../../../src/components/input-group/InputGroup.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { Label } from \"./Label.js\";\nimport { SupportLabel } from \"./SupportLabel.js\";\nimport type { InputGroupProps, InputProps } from \"./types.js\";\n\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(\n (props, ref) => {\n const {\n className,\n children,\n density,\n errorLabel,\n helpLabel,\n inline,\n label,\n labelProps,\n render,\n supportLabelProps,\n tooltip,\n id,\n ...rest\n } = props;\n\n const uid = useId(id || \"jkl-input\", { generateSuffix: !id });\n const supportId = useId(\"jkl-support-label\");\n\n const hasTooltip = !!tooltip;\n\n const supportText = errorLabel || helpLabel;\n const supportTextType = errorLabel\n ? \"error\"\n : helpLabel\n ? \"help\"\n : undefined;\n\n const describedBy = supportText ? supportId : undefined;\n\n const inputProps: InputProps = {\n \"aria-describedby\": describedBy,\n \"aria-invalid\": errorLabel ? true : undefined,\n id: uid,\n };\n\n const renderInput = render\n ? () => render(inputProps)\n : () => {\n const input = React.Children.toArray(props.children)[0];\n\n if (!React.isValidElement<InputProps>(input)) return;\n\n return React.cloneElement<InputProps>(input, {\n ...inputProps,\n ...input.props,\n });\n };\n\n return (\n <div\n ref={ref}\n className={clsx(className, \"jkl-input-group\", {\n \"jkl-input-group--inline\": inline,\n })}\n data-density={density}\n {...rest}\n >\n <Label\n standAlone\n htmlFor={uid}\n srOnly={inline}\n {...labelProps}\n style={{\n whiteSpace: hasTooltip ? \"nowrap\" : undefined,\n ...labelProps?.style,\n }}\n density={density}\n >\n {hasTooltip ? (\n <>\n <span style={{ whiteSpace: \"normal\" }}>\n {label}\n </span>\n {\"\\u00A0\"}\n {tooltip}\n </>\n ) : (\n label\n )}\n </Label>\n {renderInput()}\n <SupportLabel\n srOnly={inline}\n {...supportLabelProps}\n label={supportText}\n labelType={supportTextType}\n id={supportId}\n density={density}\n />\n </div>\n );\n },\n);\n\nInputGroup.displayName = \"InputGroup\";\n"],"names":["InputGroup","forwardRef","props","ref","className","children","density","errorLabel","helpLabel","inline","label","labelProps","render","supportLabelProps","tooltip","id","rest","uid","useId","generateSuffix","supportId","hasTooltip","supportText","supportTextType","inputProps","renderInput","input","React","Children","toArray","isValidElement","cloneElement","jsxs","clsx","jsx","Label","standAlone","htmlFor","srOnly","style","whiteSpace","Fragment","SupportLabel","labelType","displayName"],"mappings":"kRAOaA,EAAaC,EAAAA,YACtB,CAACC,EAAOC,KACE,MACFC,UAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,WAAAA,EACAC,UAAAA,EACAC,OAAAA,EACAC,MAAAA,EACAC,WAAAA,EACAC,OAAAA,EACAC,kBAAAA,EACAC,QAAAA,EACAC,GAAAA,KACGC,GACHd,EAEEe,EAAMC,EAAAA,MAAMH,GAAM,YAAa,CAAEI,gBAAiBJ,IAClDK,EAAYF,QAAM,qBAElBG,IAAeP,EAEfQ,EAAcf,GAAcC,EAC5Be,EAAkBhB,EAClB,QACAC,EACE,YACA,EAIFgB,EAAyB,CAC3B,mBAHgBF,EAAcF,OAAY,EAI1C,iBAAgBb,QAAoB,EACpCQ,GAAIE,GAGFQ,EAAcb,EACd,IAAMA,EAAOY,GACb,KACI,MAAME,EAAQC,EAAMC,SAASC,QAAQ3B,EAAMG,UAAU,GAErD,GAAKsB,EAAMG,eAA2BJ,GAE/B,OAAAC,EAAMI,aAAyBL,EAAO,IACtCF,KACAE,EAAMxB,OACZ,EAIP,OAAA8B,EAAAA,KAAC,MAAA,CACG7B,IAAAA,EACAC,UAAW6B,EAAAA,KAAK7B,EAAW,kBAAmB,CAC1C,0BAA2BK,IAE/B,eAAcH,KACVU,EAEJX,SAAA,CAAA6B,EAAAA,IAACC,EAAAA,MAAA,CACGC,YAAU,EACVC,QAASpB,EACTqB,OAAQ7B,KACJE,EACJ4B,MAAO,CACHC,WAAYnB,EAAa,cAAW,KACjCV,GAAY4B,OAEnBjC,QAAAA,EAECD,WAEO2B,EAAAA,KAAAS,EAAAA,SAAA,CAAApC,SAAA,CAAA6B,MAAC,QAAKK,MAAO,CAAEC,WAAY,UACtBnC,SACLK,IACC,IACAI,KAGLJ,IAGPe,IACDS,EAAAA,IAACQ,EAAAA,aAAA,CACGJ,OAAQ7B,KACJI,EACJH,MAAOY,EACPqB,UAAWpB,EACXR,GAAIK,EACJd,QAAAA,MAER,IAKZN,EAAW4C,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime");require("react");const r=require("../../checkbox/Checkbox.cjs"),o=require("../../tooltip/PopupTip.cjs"),t=require("../FieldGroup.cjs");/* empty css */;/* empty css */const i={title:"Komponenter/InputGroup/FieldGroup",component:t.FieldGroup,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{tooltip:{type:"boolean"}}},l=e.jsx(o.PopupTip,{content:"Du kan velge flere metoder. Ved brev vil det ta lenger tid å få en beskjed."}),n={name:"Kontaktpreferanser",args:{legend:"Hvordan kan vi kontakte deg?",labelProps:{variant:"large"},supportLabelProps:{labelType:"help"},tooltip:!1},render:({tooltip:o,...i})=>e.jsxs(t.FieldGroup,{...i,tooltip:o?l:void 0,children:[e.jsx(r.Checkbox,{name:"checklist",value:"phone",invalid:!1,children:"Telefon"}),e.jsx(r.Checkbox,{name:"checklist",value:"email",invalid:!1,children:"E-post"}),e.jsx(r.Checkbox,{name:"checklist",value:"snailmail",invalid:!1,children:"Brev"})]})};exports.FieldGroupStory=n,exports.default=i;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime");require("react");const r=require("../../checkbox/Checkbox.cjs"),o=require("../../tooltip/PopupTip.cjs"),t=require("../FieldGroup.cjs");/* empty css */;/* empty css */const l={title:"Komponenter/InputGroup/FieldGroup",component:t.FieldGroup,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{tooltip:{type:"boolean"}}},i=e.jsx(o.PopupTip,{content:"Du kan velge flere metoder. Ved brev vil det ta lenger tid å få en beskjed."}),n={name:"Kontaktpreferanser",args:{legend:"Hvordan kan vi kontakte deg?",labelProps:{variant:"large"},supportLabelProps:{labelType:"help"},tooltip:!1},render:({tooltip:o,...l})=>e.jsxs(t.FieldGroup,{...l,tooltip:o?i:void 0,children:[e.jsx(r.Checkbox,{name:"checklist",value:"phone",invalid:!1,children:"Telefon"}),e.jsx(r.Checkbox,{name:"checklist",value:"email",invalid:!1,children:"E-post"}),e.jsx(r.Checkbox,{name:"checklist",value:"snailmail",invalid:!1,children:"Brev"})]})};exports.FieldGroupStory=n,exports.default=l;
2
2
  //# sourceMappingURL=FieldGroup.stories.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime");require("react");const t=require("../Link.cjs"),r=require("../../flex/Flex.cjs"),s={title:"Komponenter/Link",component:t.Link,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{href:{control:"text",defaultValue:"https://www.fremtind.no"}}},i={name:"Link",args:{children:"Lenke",external:!1,as:"a",target:"#",href:"https://www.fremtind.no"},render:r=>e.jsx(t.Link,{style:{cursor:"pointer"},...r,as:r.as||"a"})},l={name:"Mønster: Lenke i avsnitt",args:{href:"https://www.fremtind.no"},render:r=>e.jsxs("p",{style:{maxWidth:"45ch"},children:["Vi bruker lenker for å lede brukeren til"," ",e.jsx(t.Link,{...r,external:!1,style:{cursor:"pointer"},children:"andre nettsider"}),", eller til andre steder på samme nettside."," ",e.jsx(t.Link,{...r,external:!0,target:"_blank",style:{cursor:"pointer"},children:"Lenker til eksterne nettsider"})," ","markeres med en pil opp og til høyre etter lenketeksten."]})},n={name:"Mønster: Lenke i andre tekststiler",args:{children:"lenke",external:!1,as:"a",target:"#",href:"https://www.fremtind.no"},render:s=>e.jsxs(r.Flex,{direction:"column",style:{gap:"1.5lh"},children:[e.jsxs("h1",{className:"jkl-title",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i titler"]}),e.jsxs("h2",{className:"jkl-title-small",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i små titler"]}),e.jsx("hr",{style:{width:"100%",opacity:"0.1"}}),e.jsxs("h2",{className:"jkl-heading-1",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsxs("h2",{className:"jkl-heading-2",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsxs("h3",{className:"jkl-heading-3",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsxs("h4",{className:"jkl-heading-4",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsxs("h5",{className:"jkl-heading-5",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsx("hr",{style:{width:"100%",opacity:"0.1"}}),e.jsxs("p",{className:"jkl-body",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i avsnitt"]}),e.jsxs("small",{className:"jkl-small",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i små avsnitt"]})]})};exports.LinkInOtherStory=n,exports.LinkInParagraphStory=l,exports.LinkStory=i,exports.default=s;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime");require("react");const t=require("../Link.cjs");;/* empty css */const r=require("../../flex/Flex.cjs"),s={title:"Komponenter/Link",component:t.Link,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{href:{control:"text",defaultValue:"https://www.fremtind.no"}}},i={name:"Link",args:{children:"Lenke",external:!1,as:"a",target:"#",href:"https://www.fremtind.no"},render:r=>e.jsx(t.Link,{style:{cursor:"pointer"},...r,as:r.as||"a"})},l={name:"Mønster: Lenke i avsnitt",args:{href:"https://www.fremtind.no"},render:r=>e.jsxs("p",{style:{maxWidth:"45ch"},children:["Vi bruker lenker for å lede brukeren til"," ",e.jsx(t.Link,{...r,external:!1,style:{cursor:"pointer"},children:"andre nettsider"}),", eller til andre steder på samme nettside."," ",e.jsx(t.Link,{...r,external:!0,target:"_blank",style:{cursor:"pointer"},children:"Lenker til eksterne nettsider"})," ","markeres med en pil opp og til høyre etter lenketeksten."]})},n={name:"Mønster: Lenke i andre tekststiler",args:{children:"lenke",external:!1,as:"a",target:"#",href:"https://www.fremtind.no"},render:s=>e.jsxs(r.Flex,{direction:"column",style:{gap:"1.5lh"},children:[e.jsxs("h1",{className:"jkl-title",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i titler"]}),e.jsxs("h2",{className:"jkl-title-small",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i små titler"]}),e.jsx("hr",{style:{width:"100%",opacity:"0.1"}}),e.jsxs("h2",{className:"jkl-heading-1",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsxs("h2",{className:"jkl-heading-2",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsxs("h3",{className:"jkl-heading-3",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsxs("h4",{className:"jkl-heading-4",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsxs("h5",{className:"jkl-heading-5",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i overskrifter"]}),e.jsx("hr",{style:{width:"100%",opacity:"0.1"}}),e.jsxs("p",{className:"jkl-body",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i avsnitt"]}),e.jsxs("small",{className:"jkl-small",style:{maxWidth:"55ch"},children:["Du står fritt til å bruke"," ",e.jsx(t.Link,{...s,style:{cursor:"pointer"}})," i små avsnitt"]})]})};exports.LinkInOtherStory=n,exports.LinkInParagraphStory=l,exports.LinkStory=i,exports.default=s;
2
2
  //# sourceMappingURL=Link.stories.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Link.stories.cjs","sources":["../../../../../src/components/link/stories/Link.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from \"@storybook/react\";\nimport React from \"react\";\nimport {Link} from \"../Link.js\";\nimport \"../styles/_index.scss\";\nimport {Flex} from \"../../flex/index.js\";\n\nconst meta: Meta = {\n title: \"Komponenter/Link\",\n component: Link,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n argTypes: {\n href: {\n control: \"text\",\n defaultValue: \"https://www.fremtind.no\",\n },\n },\n} satisfies Meta<typeof Link>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof Link>;\n\nexport const LinkStory: Story = {\n name: \"Link\",\n args: {\n children: \"Lenke\",\n external: false,\n as: \"a\",\n target: \"#\",\n href: \"https://www.fremtind.no\",\n },\n render: (props) => (\n // Setter style.cursor til pointer fordi Storybook overskriver default styles.\n <Link style={{ cursor: \"pointer\" }} {...props} as={props.as || \"a\"} />\n ),\n};\n\nexport const LinkInParagraphStory: Story = {\n name: \"Mønster: Lenke i avsnitt\",\n args: {\n href: \"https://www.fremtind.no\",\n },\n render: (args) => (\n // Setter style.cursor til pointer fordi Storybook overskriver default styles.\n <p style={{maxWidth: \"45ch\"}}>\n Vi bruker lenker for å lede brukeren til{\" \"}\n <Link {...args} external={false} style={{cursor: \"pointer\"}}>\n andre nettsider\n </Link>\n , eller til andre steder på samme nettside.{\" \"}\n <Link\n {...args}\n external={true}\n target={\"_blank\"}\n style={{cursor: \"pointer\"}}\n >\n Lenker til eksterne nettsider\n </Link>{\" \"}\n markeres med en pil opp og til høyre etter lenketeksten.\n </p>\n ),\n};\n\nexport const LinkInOtherStory: Story = {\n name: \"Mønster: Lenke i andre tekststiler\",\n args: {\n children: \"lenke\",\n external: false,\n as: \"a\",\n target: \"#\",\n href: \"https://www.fremtind.no\",\n },\n render: (args) => (\n // Setter style.cursor til pointer fordi Storybook overskriver default styles.\n <Flex direction={\"column\"} style={{gap: \"1.5lh\"}}>\n <h1 className={\"jkl-title\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i titler\n </h1>\n\n <h2 className={\"jkl-title-small\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i små titler\n </h2>\n\n <hr style={{width: \"100%\", opacity: \"0.1\"}}/>\n\n <h2 className={\"jkl-heading-1\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i overskrifter\n </h2>\n\n <h2 className={\"jkl-heading-2\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i overskrifter\n </h2>\n\n <h3 className={\"jkl-heading-3\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i overskrifter\n </h3>\n\n <h4 className={\"jkl-heading-4\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i overskrifter\n </h4>\n\n <h5 className={\"jkl-heading-5\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i overskrifter\n </h5>\n\n <hr style={{width: \"100%\", opacity: \"0.1\"}}/>\n\n <p className={\"jkl-body\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i avsnitt\n </p>\n\n <small className={\"jkl-small\"} style={{maxWidth: \"55ch\"}}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{cursor: \"pointer\"}}/> i små avsnitt\n </small>\n </Flex>\n ),\n};\n"],"names":["meta","title","component","Link","parameters","layout","tags","argTypes","href","control","defaultValue","LinkStory","name","args","children","external","as","target","render","props","jsx","style","cursor","LinkInParagraphStory","maxWidth","LinkInOtherStory","jsxs","Flex","direction","gap","className","width","opacity"],"mappings":"kOAMMA,EAAa,CACfC,MAAO,mBACPC,UAAWC,EAAAA,KACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,YACPC,SAAU,CACNC,KAAM,CACFC,QAAS,OACTC,aAAc,6BASbC,EAAmB,CAC5BC,KAAM,OACNC,KAAM,CACFC,SAAU,QACVC,UAAU,EACVC,GAAI,IACJC,OAAQ,IACRT,KAAM,2BAEVU,OAASC,GAEJC,EAAAA,IAAAjB,EAAAA,KAAA,CAAKkB,MAAO,CAAEC,OAAQ,cAAiBH,EAAOH,GAAIG,EAAMH,IAAM,OAI1DO,EAA8B,CACvCX,KAAM,2BACNC,KAAM,CACFL,KAAM,2BAEVU,OAASL,UAEJ,IAAE,CAAAQ,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,2CACe,IACzCM,EAAAA,IAACjB,EAAAA,KAAM,IAAGU,EAAME,UAAU,EAAOM,MAAO,CAACC,OAAQ,WAAYR,SAE7D,oBAAO,8CACqC,IAC5CM,EAAAA,IAACjB,EAAAA,KAAA,IACOU,EACJE,UAAU,EACVE,OAAQ,SACRI,MAAO,CAACC,OAAQ,WACnBR,SAAA,kCAEO,IAAI,+DAMXW,EAA0B,CACnCb,KAAM,qCACNC,KAAM,CACFC,SAAU,QACVC,UAAU,EACVC,GAAI,IACJC,OAAQ,IACRT,KAAM,2BAEVU,OAASL,GAELa,OAACC,EAAAA,MAAKC,UAAW,SAAUP,MAAO,CAACQ,IAAK,SACpCf,SAAA,CAAAY,OAAC,MAAGI,UAAW,YAAaT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BACzB,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa,eAGjDI,OAAC,MAAGI,UAAW,kBAAmBT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BAC/B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa,mBAGjDF,MAAC,MAAGC,MAAO,CAACU,MAAO,OAAQC,QAAS,SAEpCN,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BAC7B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa,qBAGjDI,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BAC7B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa,qBAGjDI,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BAC7B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa,qBAGjDI,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BAC7B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa,qBAGjDI,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BAC7B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa,qBAGjDF,MAAC,MAAGC,MAAO,CAACU,MAAO,OAAQC,QAAS,SAEpCN,OAAC,KAAEI,UAAW,WAAYT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BACvB,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa,gBAGjDI,OAAC,SAAMI,UAAW,YAAaT,MAAO,CAACG,SAAU,QAASV,SAAA,CAAA,4BAC5B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAACC,OAAQ,aAAa"}
1
+ {"version":3,"file":"Link.stories.cjs","sources":["../../../../../src/components/link/stories/Link.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\";\nimport React from \"react\";\nimport { Link } from \"../Link.js\";\nimport \"../styles/_index.scss\";\nimport { Flex } from \"../../flex/index.js\";\n\nconst meta: Meta = {\n title: \"Komponenter/Link\",\n component: Link,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n argTypes: {\n href: {\n control: \"text\",\n defaultValue: \"https://www.fremtind.no\",\n },\n },\n} satisfies Meta<typeof Link>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof Link>;\n\nexport const LinkStory: Story = {\n name: \"Link\",\n args: {\n children: \"Lenke\",\n external: false,\n as: \"a\",\n target: \"#\",\n href: \"https://www.fremtind.no\",\n },\n render: (props) => (\n // Setter style.cursor til pointer fordi Storybook overskriver default styles.\n <Link style={{ cursor: \"pointer\" }} {...props} as={props.as || \"a\"} />\n ),\n};\n\nexport const LinkInParagraphStory: Story = {\n name: \"Mønster: Lenke i avsnitt\",\n args: {\n href: \"https://www.fremtind.no\",\n },\n render: (args) => (\n // Setter style.cursor til pointer fordi Storybook overskriver default styles.\n <p style={{ maxWidth: \"45ch\" }}>\n Vi bruker lenker for å lede brukeren til{\" \"}\n <Link {...args} external={false} style={{ cursor: \"pointer\" }}>\n andre nettsider\n </Link>\n , eller til andre steder på samme nettside.{\" \"}\n <Link\n {...args}\n external={true}\n target={\"_blank\"}\n style={{ cursor: \"pointer\" }}\n >\n Lenker til eksterne nettsider\n </Link>{\" \"}\n markeres med en pil opp og til høyre etter lenketeksten.\n </p>\n ),\n};\n\nexport const LinkInOtherStory: Story = {\n name: \"Mønster: Lenke i andre tekststiler\",\n args: {\n children: \"lenke\",\n external: false,\n as: \"a\",\n target: \"#\",\n href: \"https://www.fremtind.no\",\n },\n render: (args) => (\n // Setter style.cursor til pointer fordi Storybook overskriver default styles.\n <Flex direction={\"column\"} style={{ gap: \"1.5lh\" }}>\n <h1 className={\"jkl-title\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i titler\n </h1>\n\n <h2 className={\"jkl-title-small\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i små titler\n </h2>\n\n <hr style={{ width: \"100%\", opacity: \"0.1\" }} />\n\n <h2 className={\"jkl-heading-1\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i overskrifter\n </h2>\n\n <h2 className={\"jkl-heading-2\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i overskrifter\n </h2>\n\n <h3 className={\"jkl-heading-3\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i overskrifter\n </h3>\n\n <h4 className={\"jkl-heading-4\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i overskrifter\n </h4>\n\n <h5 className={\"jkl-heading-5\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i overskrifter\n </h5>\n\n <hr style={{ width: \"100%\", opacity: \"0.1\" }} />\n\n <p className={\"jkl-body\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i avsnitt\n </p>\n\n <small className={\"jkl-small\"} style={{ maxWidth: \"55ch\" }}>\n Du står fritt til å bruke{\" \"}\n <Link {...args} style={{ cursor: \"pointer\" }} /> i små avsnitt\n </small>\n </Flex>\n ),\n};\n"],"names":["meta","title","component","Link","parameters","layout","tags","argTypes","href","control","defaultValue","LinkStory","name","args","children","external","as","target","render","props","jsx","style","cursor","LinkInParagraphStory","maxWidth","LinkInOtherStory","jsxs","Flex","direction","gap","className","width","opacity"],"mappings":"mRAMMA,EAAa,CACfC,MAAO,mBACPC,UAAWC,EAAAA,KACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,YACPC,SAAU,CACNC,KAAM,CACFC,QAAS,OACTC,aAAc,6BASbC,EAAmB,CAC5BC,KAAM,OACNC,KAAM,CACFC,SAAU,QACVC,UAAU,EACVC,GAAI,IACJC,OAAQ,IACRT,KAAM,2BAEVU,OAASC,GAEJC,EAAAA,IAAAjB,EAAAA,KAAA,CAAKkB,MAAO,CAAEC,OAAQ,cAAiBH,EAAOH,GAAIG,EAAMH,IAAM,OAI1DO,EAA8B,CACvCX,KAAM,2BACNC,KAAM,CACFL,KAAM,2BAEVU,OAASL,UAEJ,IAAE,CAAAQ,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,2CACa,IACzCM,EAAAA,IAACjB,EAAAA,KAAM,IAAGU,EAAME,UAAU,EAAOM,MAAO,CAAEC,OAAQ,WAAaR,SAE/D,oBAAO,8CACqC,IAC5CM,EAAAA,IAACjB,EAAAA,KAAA,IACOU,EACJE,UAAU,EACVE,OAAQ,SACRI,MAAO,CAAEC,OAAQ,WACpBR,SAAA,kCAEO,IAAI,+DAMXW,EAA0B,CACnCb,KAAM,qCACNC,KAAM,CACFC,SAAU,QACVC,UAAU,EACVC,GAAI,IACJC,OAAQ,IACRT,KAAM,2BAEVU,OAASL,GAELa,OAACC,EAAAA,MAAKC,UAAW,SAAUP,MAAO,CAAEQ,IAAK,SACrCf,SAAA,CAAAY,OAAC,MAAGI,UAAW,YAAaT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BAC3B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe,eAGpDI,OAAC,MAAGI,UAAW,kBAAmBT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BACjC,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe,mBAGpDF,MAAC,MAAGC,MAAO,CAAEU,MAAO,OAAQC,QAAS,SAErCN,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BAC/B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe,qBAGpDI,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BAC/B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe,qBAGpDI,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BAC/B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe,qBAGpDI,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BAC/B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe,qBAGpDI,OAAC,MAAGI,UAAW,gBAAiBT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BAC/B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe,qBAGpDF,MAAC,MAAGC,MAAO,CAAEU,MAAO,OAAQC,QAAS,SAErCN,OAAC,KAAEI,UAAW,WAAYT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BACzB,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe,gBAGpDI,OAAC,SAAMI,UAAW,YAAaT,MAAO,CAAEG,SAAU,QAAUV,SAAA,CAAA,4BAC9B,IAC1BM,MAACjB,EAAAA,SAASU,EAAMQ,MAAO,CAAEC,OAAQ,aAAe"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("@floating-ui/react"),n=require("../../../clsx-E3yX_9sL.cjs"),s=require("react"),r=require("../../../index-C-qqMC-u.cjs"),o=require("../../hooks/useBrowserPreferences/useBrowserPreferences.cjs");require("../../hooks/useScreen/useScreen.cjs");const i=require("../../hooks/useId/useId.cjs"),l=require("../../utilities/getThemeAndDensity.cjs"),a=require("./useMenuWideEvents.cjs");function u(e,t=0){switch(e){case"top":default:return`0 ${t}px`;case"left":return`${t}px 0`;case"bottom":return`0 ${-t}px`;case"right":return-t+"px 0"}}const c=s.forwardRef(((c,d)=>{const{children:p,className:m,initialPlacement:f,openOnHover:g=!1,keepOpenOnClickOutside:x=!1,triggerElement:h,isOpen:v,onToggle:y,...j}=c,k=i.useId("jkl-menu"),{prefersReducedMotion:P}=o.useBrowserPreferences(),F=t.useFloatingTree(),w=t.useFloatingNodeId(),I=t.useFloatingParentNodeId(),E=null!=I,M=s.useRef([]),[q,R]=s.useState(null),{allowHover:b,isOpen:N,setIsOpen:C}=a.useMenuWideEvents(F,w,I),O=void 0!==v?v:N;s.useEffect((()=>null==y?void 0:y(O)),[O,y]);const{refs:S,placement:T,context:D,floatingStyles:A}=t.useFloating({nodeId:w,open:O,onOpenChange:C,placement:f||(E?"right-start":"bottom-start"),middleware:[t.offset(2),t.flip({fallbackAxisSideDirection:"end",crossAxis:!1}),t.shift({padding:8})],whileElementsMounted:t.autoUpdate}),{getReferenceProps:B,getFloatingProps:H,getItemProps:$}=t.useInteractions([t.useHover(D,{enabled:g&&b,delay:{open:75},handleClose:t.safePolygon({requireIntent:!0,blockPointerEvents:!0})}),t.useClick(D,{event:"mousedown"}),t.useDismiss(D,{outsidePress:!x}),t.useRole(D,{role:"menu"}),t.useListNavigation(D,{listRef:M,activeIndex:q,nested:E,onNavigate:R})]),K=t.useMergeRefs([S.setReference,d]),{theme:V,density:W}=l.getThemeAndDensity(S.reference.current),{isMounted:L,styles:U}=t.useTransitionStyles(D,{duration:{open:P?0:250,close:P?0:150},initial:({side:e})=>({opacity:0,translate:u(e,5)}),open:({side:e})=>({opacity:1,translate:u(e,0)}),close:({side:e})=>({opacity:0,translate:u(e,5)})});return e.jsxs(t.FloatingNode,{id:w,children:[s.isValidElement(h)&&("button"===h.type||r.reactIsExports.isForwardRef(h))?s.cloneElement(h,{...B({...j,ref:K,role:E?"menuitem":void 0,"aria-controls":k,onClick(e){e.stopPropagation()}})}):h,L&&e.jsx(t.FloatingPortal,{children:e.jsx(t.FloatingFocusManager,{context:D,modal:!1,initialFocus:E?-1:0,returnFocus:!E,children:e.jsx("div",{className:n.clsx("jkl jkl-menu",m),"data-theme":V,"data-layout-density":W,role:"menu","data-placement":T,"aria-live":"assertive","aria-hidden":!O,ref:S.setFloating,...H({id:k,style:{...A,...U}}),children:s.Children.map(p,((e,t)=>s.isValidElement(e)&&r.reactIsExports.isForwardRef(e)?s.cloneElement(e,$({...e.props,tabIndex:q===t?0:-1,role:"menuitem",ref(e){M.current[t]=e},onClick(t){var n,s;null==(s=(n=e.props).onClick)||s.call(n,t),!t.defaultPrevented&&(null==F||F.events.emit("click"))},onKeyDown(t){var n,s;null==(s=(n=e.props).onKeyDown)||s.call(n,t),!t.defaultPrevented&&(null==F||F.events.emit("keydown"),"menuitemcheckbox"===t.currentTarget.role&&"Enter"===t.key&&C(!1))},onMouseEnter(){b&&O&&R(t)}})):e))})})})]})}));c.displayName="MenuComponent";const d=s.forwardRef(((n,s)=>null===t.useFloatingParentNodeId()?e.jsx(t.FloatingTree,{children:e.jsx(c,{ref:s,...n})}):e.jsx(c,{ref:s,...n})));d.displayName="Menu",exports.Menu=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("@floating-ui/react"),n=require("../../../clsx-E3yX_9sL.cjs"),s=require("react"),r=require("../../../index-C-qqMC-u.cjs"),o=require("../../hooks/useBrowserPreferences/useBrowserPreferences.cjs");require("../../hooks/useScreen/useScreen.cjs");const i=require("../../hooks/useId/useId.cjs"),a=require("../../utilities/getThemeAndDensity.cjs"),l=require("./useMenuWideEvents.cjs");function u(e,t=0){switch(e){case"top":default:return`0 ${t}px`;case"left":return`${t}px 0`;case"bottom":return`0 ${-t}px`;case"right":return-t+"px 0"}}const c=s.forwardRef(((c,d)=>{const{children:p,className:m,initialPlacement:f,openOnHover:g=!1,keepOpenOnClickOutside:x=!1,triggerElement:h,isOpen:y,onToggle:v,...j}=c,k=i.useId("jkl-menu"),{prefersReducedMotion:P}=o.useBrowserPreferences(),F=t.useFloatingTree(),w=t.useFloatingNodeId(),I=t.useFloatingParentNodeId(),E=null!=I,M=s.useRef([]),[q,R]=s.useState(null),{allowHover:b,isOpen:N,setIsOpen:C}=l.useMenuWideEvents(F,w,I),O=void 0!==y?y:N;s.useEffect((()=>v?.(O)),[O,v]);const{refs:S,placement:T,context:D,floatingStyles:A}=t.useFloating({nodeId:w,open:O,onOpenChange:C,placement:f||(E?"right-start":"bottom-start"),middleware:[t.offset(2),t.flip({fallbackAxisSideDirection:"end",crossAxis:!1}),t.shift({padding:8})],whileElementsMounted:t.autoUpdate}),{getReferenceProps:B,getFloatingProps:H,getItemProps:$}=t.useInteractions([t.useHover(D,{enabled:g&&b,delay:{open:75},handleClose:t.safePolygon({requireIntent:!0,blockPointerEvents:!0})}),t.useClick(D,{event:"mousedown"}),t.useDismiss(D,{outsidePress:!x}),t.useRole(D,{role:"menu"}),t.useListNavigation(D,{listRef:M,activeIndex:q,nested:E,onNavigate:R})]),K=t.useMergeRefs([S.setReference,d]),{theme:V,density:W}=a.getThemeAndDensity(S.reference.current),{isMounted:L,styles:U}=t.useTransitionStyles(D,{duration:{open:P?0:250,close:P?0:150},initial:({side:e})=>({opacity:0,translate:u(e,5)}),open:({side:e})=>({opacity:1,translate:u(e,0)}),close:({side:e})=>({opacity:0,translate:u(e,5)})});return e.jsxs(t.FloatingNode,{id:w,children:[s.isValidElement(h)&&("button"===h.type||r.reactIsExports.isForwardRef(h))?s.cloneElement(h,{...B({...j,ref:K,role:E?"menuitem":void 0,"aria-controls":k,onClick(e){e.stopPropagation()}})}):h,L&&e.jsx(t.FloatingPortal,{children:e.jsx(t.FloatingFocusManager,{context:D,modal:!1,initialFocus:E?-1:0,returnFocus:!E,children:e.jsx("div",{className:n.clsx("jkl jkl-menu",m),"data-theme":V,"data-layout-density":W,role:"menu","data-placement":T,"aria-live":"assertive","aria-hidden":!O,ref:S.setFloating,...H({id:k,style:{...A,...U}}),children:s.Children.map(p,((e,t)=>s.isValidElement(e)&&r.reactIsExports.isForwardRef(e)?s.cloneElement(e,$({...e.props,tabIndex:q===t?0:-1,role:"menuitem",ref(e){M.current[t]=e},onClick(t){e.props.onClick?.(t),!t.defaultPrevented&&F?.events.emit("click")},onKeyDown(t){e.props.onKeyDown?.(t),!t.defaultPrevented&&(F?.events.emit("keydown"),"menuitemcheckbox"===t.currentTarget.role&&"Enter"===t.key&&C(!1))},onMouseEnter(){b&&O&&R(t)}})):e))})})})]})}));c.displayName="MenuComponent";const d=s.forwardRef(((n,s)=>null===t.useFloatingParentNodeId()?e.jsx(t.FloatingTree,{children:e.jsx(c,{ref:s,...n})}):e.jsx(c,{ref:s,...n})));d.displayName="Menu",exports.Menu=d;
2
2
  //# sourceMappingURL=Menu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.cjs","sources":["../../../../src/components/menu/Menu.tsx"],"sourcesContent":["import {\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n type Side,\n autoUpdate,\n flip,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useHover,\n useInteractions,\n useListNavigation,\n useMergeRefs,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport clsx from \"clsx\";\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { isForwardRef } from \"react-is\";\nimport { useBrowserPreferences } from \"../../hooks/index.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { getThemeAndDensity } from \"../../utilities/getThemeAndDensity.js\";\nimport type { MenuProps } from \"./types.js\";\nimport { useMenuWideEvents } from \"./useMenuWideEvents.js\";\n\nfunction getTranslation(side: Side, value = 0) {\n switch (side) {\n case \"top\":\n return `0 ${value}px`;\n case \"left\":\n return `${value}px 0`;\n case \"bottom\":\n return `0 ${-value}px`;\n case \"right\":\n return `${-value}px 0`;\n\n default:\n return `0 ${value}px`;\n }\n}\n\nconst MenuComponent = forwardRef<HTMLButtonElement, MenuProps>(\n (props, forwardedRef) => {\n const {\n children,\n className,\n initialPlacement,\n openOnHover = false,\n keepOpenOnClickOutside = false,\n triggerElement,\n isOpen: isOpenOverride,\n onToggle,\n ...triggerProps\n } = props;\n\n const MenuId = useId(\"jkl-menu\");\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n\n const listItemsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const {\n allowHover,\n isOpen: isOpenDefault,\n setIsOpen,\n } = useMenuWideEvents(tree, nodeId, parentId);\n\n const isOpen =\n isOpenOverride !== undefined ? isOpenOverride : isOpenDefault;\n\n useEffect(() => onToggle?.(isOpen), [isOpen, onToggle]);\n\n const { refs, placement, context, floatingStyles } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange: setIsOpen,\n placement:\n initialPlacement || (isNested ? \"right-start\" : \"bottom-start\"),\n middleware: [\n offset(2),\n flip({\n fallbackAxisSideDirection: \"end\", // Allow bottom placement in narrow viewports (https://floating-ui.com/docs/flip#fallbackaxissidedirection)\n crossAxis: false, // See https://floating-ui.com/docs/flip#combining-with-shift\n }),\n shift({ padding: 8 }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([\n useHover(context, {\n enabled: openOnHover && allowHover,\n delay: { open: 75 },\n handleClose: safePolygon({\n requireIntent: true,\n blockPointerEvents: true,\n }),\n }),\n useClick(context, {\n event: \"mousedown\",\n }),\n useDismiss(context, { outsidePress: !keepOpenOnClickOutside }),\n useRole(context, { role: \"menu\" }),\n useListNavigation(context, {\n listRef: listItemsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n }),\n ]);\n\n const referenceRef = useMergeRefs([refs.setReference, forwardedRef]);\n\n // Siden menyen rendres på rot må vi hente lokal dark/light-verdi fra triggeren\n // Vi må gjøre dette for å ta hensyn til at tema kan styres lokalt for deler av UIet\n const { theme, density } = getThemeAndDensity(\n refs.reference.current as HTMLElement,\n );\n\n const { isMounted, styles: animationStyles } = useTransitionStyles(\n context,\n {\n duration: {\n open: prefersReducedMotion ? 0 : 250,\n close: prefersReducedMotion ? 0 : 150,\n },\n initial: ({ side }) => ({\n opacity: 0,\n translate: getTranslation(side, 5),\n }),\n open: ({ side }) => ({\n opacity: 1,\n translate: getTranslation(side, 0),\n }),\n close: ({ side }) => ({\n opacity: 0,\n translate: getTranslation(side, 5),\n }),\n },\n );\n\n return (\n <FloatingNode id={nodeId}>\n {React.isValidElement(triggerElement) &&\n (triggerElement.type === \"button\" ||\n isForwardRef(triggerElement))\n ? // Dersom trigger-elementet er en knapp, sett riktige egenskaper på det\n React.cloneElement(triggerElement, {\n ...getReferenceProps({\n ...triggerProps,\n ref: referenceRef,\n role: isNested ? \"menuitem\" : undefined,\n \"aria-controls\": MenuId,\n onClick(event) {\n event.stopPropagation();\n },\n }),\n })\n : // Ellers, rendre elementet as-is, uten interaktivitet. Krev en ferdig brukbar button for å åpne menyen.\n triggerElement}\n {isMounted && (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n // Prevent outside content interference.\n modal={false}\n // Only initially focus the root floating menu.\n initialFocus={isNested ? -1 : 0}\n // Only return focus to the root menu's reference when menus close.\n returnFocus={!isNested}\n >\n <div\n className={clsx(\"jkl jkl-menu\", className)}\n data-theme={theme}\n data-layout-density={density}\n role=\"menu\"\n data-placement={placement}\n aria-live=\"assertive\"\n aria-hidden={!isOpen}\n ref={refs.setFloating}\n {...getFloatingProps({\n id: MenuId,\n style: {\n ...floatingStyles,\n ...animationStyles,\n },\n })}\n >\n {React.Children.map(\n children,\n (child, index) => {\n if (\n React.isValidElement(child) &&\n isForwardRef(child)\n ) {\n return React.cloneElement(\n child,\n getItemProps({\n ...child.props,\n tabIndex:\n activeIndex === index\n ? 0\n : -1,\n role: \"menuitem\",\n ref(\n node: HTMLButtonElement,\n ) {\n listItemsRef.current[\n index\n ] = node;\n },\n onClick(event) {\n child.props.onClick?.(\n event as React.MouseEvent<HTMLButtonElement>,\n );\n if (\n event.defaultPrevented\n ) {\n return;\n }\n tree?.events.emit(\n \"click\",\n );\n },\n onKeyDown(event) {\n child.props.onKeyDown?.(\n event,\n );\n if (\n event.defaultPrevented\n ) {\n return;\n }\n tree?.events.emit(\n \"keydown\",\n );\n if (\n event.currentTarget\n .role ===\n \"menuitemcheckbox\" &&\n event.key ===\n \"Enter\"\n ) {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n setIsOpen(false);\n }\n },\n onMouseEnter() {\n if (\n allowHover &&\n isOpen\n ) {\n setActiveIndex(\n index,\n );\n }\n },\n }),\n );\n }\n\n return child;\n },\n )}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n );\n },\n);\nMenuComponent.displayName = \"MenuComponent\";\n\nexport const Menu = forwardRef<HTMLButtonElement, MenuProps>((props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuComponent ref={ref} {...props} />\n </FloatingTree>\n );\n }\n\n return <MenuComponent ref={ref} {...props} />;\n});\nMenu.displayName = \"Menu\";\n"],"names":["getTranslation","side","value","MenuComponent","forwardRef","props","forwardedRef","children","className","initialPlacement","openOnHover","keepOpenOnClickOutside","triggerElement","isOpen","isOpenOverride","onToggle","triggerProps","MenuId","useId","prefersReducedMotion","useBrowserPreferences","tree","useFloatingTree","nodeId","useFloatingNodeId","parentId","useFloatingParentNodeId","isNested","listItemsRef","useRef","activeIndex","setActiveIndex","useState","allowHover","isOpenDefault","setIsOpen","useMenuWideEvents","useEffect","refs","placement","context","floatingStyles","useFloating","open","onOpenChange","middleware","offset","flip","fallbackAxisSideDirection","crossAxis","shift","padding","whileElementsMounted","autoUpdate","getReferenceProps","getFloatingProps","getItemProps","useInteractions","useHover","enabled","delay","handleClose","safePolygon","requireIntent","blockPointerEvents","useClick","event","useDismiss","outsidePress","useRole","role","useListNavigation","listRef","nested","onNavigate","referenceRef","useMergeRefs","setReference","theme","density","getThemeAndDensity","reference","current","isMounted","styles","animationStyles","useTransitionStyles","duration","close","initial","opacity","translate","jsxs","FloatingNode","id","React","isValidElement","type","isForwardRef","cloneElement","ref","onClick","stopPropagation","FloatingPortal","jsx","FloatingFocusManager","modal","initialFocus","returnFocus","clsx","setFloating","style","Children","map","child","index","reactIsExports","tabIndex","node","_b","_a","call","defaultPrevented","events","emit","onKeyDown","currentTarget","key","onMouseEnter","displayName","Menu","FloatingTree"],"mappings":"yfAiCA,SAASA,EAAeC,EAAYC,EAAQ,GACxC,OAAQD,GACJ,IAAK,MASL,QACI,MAAO,KAAKC,MARhB,IAAK,OACD,MAAO,GAAGA,QACd,IAAK,SACM,MAAA,MAAMA,MACjB,IAAK,QACM,OAAIA,EAAJ,OAKnB,CAEA,MAAMC,EAAgBC,EAAAA,YAClB,CAACC,EAAOC,KACE,MACFC,SAAAA,EACAC,UAAAA,EACAC,iBAAAA,EACAC,YAAAA,GAAc,EACdC,uBAAAA,GAAyB,EACzBC,eAAAA,EACAC,OAAQC,EACRC,SAAAA,KACGC,GACHX,EAEEY,EAASC,QAAM,aAEbC,qBAAAA,GAAyBC,0BAE3BC,EAAOC,EAAAA,kBACPC,EAASC,EAAAA,oBACTC,EAAWC,EAAAA,0BACXC,EAAuB,MAAZF,EAEXG,EAAeC,EAAwCA,OAAA,KACtDC,EAAaC,GAAkBC,EAAAA,SAAwB,OAE1DC,WAAAA,EACApB,OAAQqB,EACRC,UAAAA,GACAC,oBAAkBf,EAAME,EAAQE,GAE9BZ,OACiB,IAAnBC,EAA+BA,EAAiBoB,EAEpDG,EAAAA,WAAU,IAAM,MAAAtB,OAAAA,EAAAA,EAAWF,IAAS,CAACA,EAAQE,IAE7C,MAAQuB,KAAAA,EAAMC,UAAAA,EAAWC,QAAAA,EAASC,eAAAA,GAAmBC,EAAAA,YAAY,CAC7DnB,OAAAA,EACAoB,KAAM9B,EACN+B,aAAcT,EACdI,UACI9B,IAAqBkB,EAAW,cAAgB,gBACpDkB,WAAY,CACRC,EAAAA,OAAO,GACPC,OAAK,CACDC,0BAA2B,MAC3BC,WAAW,IAEfC,QAAM,CAAEC,QAAS,KAErBC,qBAAsBC,EAAAA,cAGlBC,kBAAAA,EAAmBC,iBAAAA,EAAkBC,aAAAA,GACzCC,EAAAA,gBAAgB,CACZC,EAAAA,SAASlB,EAAS,CACdmB,QAASjD,GAAeuB,EACxB2B,MAAO,CAAEjB,KAAM,IACfkB,YAAaC,EAAAA,YAAY,CACrBC,eAAe,EACfC,oBAAoB,MAG5BC,EAAAA,SAASzB,EAAS,CACd0B,MAAO,cAEXC,EAAAA,WAAW3B,EAAS,CAAE4B,cAAezD,IACrC0D,EAAAA,QAAQ7B,EAAS,CAAE8B,KAAM,SACzBC,EAAAA,kBAAkB/B,EAAS,CACvBgC,QAAS5C,EACTE,YAAAA,EACA2C,OAAQ9C,EACR+C,WAAY3C,MAIlB4C,EAAeC,EAAAA,aAAa,CAACtC,EAAKuC,aAAcvE,KAI9CwE,MAAAA,EAAOC,QAAAA,GAAYC,EAAAA,mBACvB1C,EAAK2C,UAAUC,UAGXC,UAAAA,EAAWC,OAAQC,GAAoBC,EAAAA,oBAC3C9C,EACA,CACI+C,SAAU,CACN5C,KAAMxB,EAAuB,EAAI,IACjCqE,MAAOrE,EAAuB,EAAI,KAEtCsE,QAAS,EAAGxF,KAAAA,OACRyF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,KAEpC0C,KAAM,EAAG1C,KAAAA,MAAY,CACjByF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,KAEpCuF,MAAO,EAAGvF,KAAAA,OACNyF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,OAMxC,OAAA2F,EAAAA,KAACC,EAAaA,aAAA,CAAAC,GAAIvE,EACbhB,SAAA,CAAAwF,EAAMC,eAAepF,KACG,WAAxBA,EAAeqF,MACZC,8BAAatF,IAEXmF,EAAMI,aAAavF,EAAgB,IAC5B0C,EAAkB,IACdtC,EACHoF,IAAKzB,EACLL,KAAM3C,EAAW,gBAAa,EAC9B,gBAAiBV,EACjBoF,QAAQnC,GACJA,EAAMoC,iBAAgB,MAKlC1F,EACLuE,SACIoB,iBACG,CAAAhG,SAAAiG,EAAAA,IAACC,EAAAA,qBAAA,CACGjE,QAAAA,EAEAkE,OAAO,EAEPC,aAAchF,GAAgB,EAAA,EAE9BiF,aAAcjF,EAEdpB,SAAAiG,EAAAA,IAAC,MAAA,CACGhG,UAAWqG,EAAAA,KAAK,eAAgBrG,GAChC,aAAYsE,EACZ,sBAAqBC,EACrBT,KAAK,OACL,iBAAgB/B,EAChB,YAAU,YACV,eAAc1B,EACduF,IAAK9D,EAAKwE,eACNvD,EAAiB,CACjBuC,GAAI7E,EACJ8F,MAAO,IACAtE,KACA4C,KAIV9E,WAAMyG,SAASC,IACZ1G,GACA,CAAC2G,EAAOC,IAEApB,EAAMC,eAAekB,IACrBhB,EAAAkB,eAAAlB,aAAagB,GAENnB,EAAMI,aACTe,EACA1D,EAAa,IACN0D,EAAM7G,MACTgH,SACIvF,IAAgBqF,EACV,KAEV7C,KAAM,WACN8B,IACIkB,GAEa1F,EAAAsD,QACTiC,GACAG,CACR,EACAjB,QAAQnC,WACJ,OAAAqD,GAAAC,EAAAN,EAAM7G,OAAMgG,UAAZkB,EAAAE,KAAAD,EACItD,IAGAA,EAAMwD,mBAIV,MAAArG,GAAAA,EAAMsG,OAAOC,KACT,SAER,EACAC,UAAU3D,WACN,OAAAqD,GAAAC,EAAAN,EAAM7G,OAAMwH,YAAZN,EAAAE,KAAAD,EACItD,IAGAA,EAAMwD,mBAIV,MAAArG,GAAAA,EAAMsG,OAAOC,KACT,WAKI,qBAFJ1D,EAAM4D,cACDxD,MAGD,UADJJ,EAAM6D,KAIN5F,GAAU,GAElB,EACA6F,eAEQ/F,GACApB,GAEAkB,EACIoF,EAER,KAMTD,YAOnC,IAIZ/G,EAAc8H,YAAc,gBAErB,MAAMC,EAAO9H,EAAAA,YAAyC,CAACC,EAAO+F,IAGhD,OAFA1E,EAAAA,gCAIRyG,EAAAA,aACG,CAAA5H,SAAAiG,EAAAA,IAACrG,GAAciG,IAAAA,KAAc/F,MAKjCmG,EAAAA,IAAArG,EAAA,CAAciG,IAAAA,KAAc/F,MAExC6H,EAAKD,YAAc"}
1
+ {"version":3,"file":"Menu.cjs","sources":["../../../../src/components/menu/Menu.tsx"],"sourcesContent":["import {\n FloatingFocusManager,\n FloatingNode,\n FloatingPortal,\n FloatingTree,\n type Side,\n autoUpdate,\n flip,\n offset,\n safePolygon,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useFloatingNodeId,\n useFloatingParentNodeId,\n useFloatingTree,\n useHover,\n useInteractions,\n useListNavigation,\n useMergeRefs,\n useRole,\n useTransitionStyles,\n} from \"@floating-ui/react\";\nimport clsx from \"clsx\";\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { isForwardRef } from \"react-is\";\nimport { useBrowserPreferences } from \"../../hooks/index.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { getThemeAndDensity } from \"../../utilities/getThemeAndDensity.js\";\nimport type { MenuProps } from \"./types.js\";\nimport { useMenuWideEvents } from \"./useMenuWideEvents.js\";\n\nfunction getTranslation(side: Side, value = 0) {\n switch (side) {\n case \"top\":\n return `0 ${value}px`;\n case \"left\":\n return `${value}px 0`;\n case \"bottom\":\n return `0 ${-value}px`;\n case \"right\":\n return `${-value}px 0`;\n\n default:\n return `0 ${value}px`;\n }\n}\n\nconst MenuComponent = forwardRef<HTMLButtonElement, MenuProps>(\n (props, forwardedRef) => {\n const {\n children,\n className,\n initialPlacement,\n openOnHover = false,\n keepOpenOnClickOutside = false,\n triggerElement,\n isOpen: isOpenOverride,\n onToggle,\n ...triggerProps\n } = props;\n\n const MenuId = useId(\"jkl-menu\");\n\n const { prefersReducedMotion } = useBrowserPreferences();\n\n const tree = useFloatingTree();\n const nodeId = useFloatingNodeId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n\n const listItemsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n const {\n allowHover,\n isOpen: isOpenDefault,\n setIsOpen,\n } = useMenuWideEvents(tree, nodeId, parentId);\n\n const isOpen =\n isOpenOverride !== undefined ? isOpenOverride : isOpenDefault;\n\n useEffect(() => onToggle?.(isOpen), [isOpen, onToggle]);\n\n const { refs, placement, context, floatingStyles } = useFloating({\n nodeId,\n open: isOpen,\n onOpenChange: setIsOpen,\n placement:\n initialPlacement || (isNested ? \"right-start\" : \"bottom-start\"),\n middleware: [\n offset(2),\n flip({\n fallbackAxisSideDirection: \"end\", // Allow bottom placement in narrow viewports (https://floating-ui.com/docs/flip#fallbackaxissidedirection)\n crossAxis: false, // See https://floating-ui.com/docs/flip#combining-with-shift\n }),\n shift({ padding: 8 }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } =\n useInteractions([\n useHover(context, {\n enabled: openOnHover && allowHover,\n delay: { open: 75 },\n handleClose: safePolygon({\n requireIntent: true,\n blockPointerEvents: true,\n }),\n }),\n useClick(context, {\n event: \"mousedown\",\n }),\n useDismiss(context, { outsidePress: !keepOpenOnClickOutside }),\n useRole(context, { role: \"menu\" }),\n useListNavigation(context, {\n listRef: listItemsRef,\n activeIndex,\n nested: isNested,\n onNavigate: setActiveIndex,\n }),\n ]);\n\n const referenceRef = useMergeRefs([refs.setReference, forwardedRef]);\n\n // Siden menyen rendres på rot må vi hente lokal dark/light-verdi fra triggeren\n // Vi må gjøre dette for å ta hensyn til at tema kan styres lokalt for deler av UIet\n const { theme, density } = getThemeAndDensity(\n refs.reference.current as HTMLElement,\n );\n\n const { isMounted, styles: animationStyles } = useTransitionStyles(\n context,\n {\n duration: {\n open: prefersReducedMotion ? 0 : 250,\n close: prefersReducedMotion ? 0 : 150,\n },\n initial: ({ side }) => ({\n opacity: 0,\n translate: getTranslation(side, 5),\n }),\n open: ({ side }) => ({\n opacity: 1,\n translate: getTranslation(side, 0),\n }),\n close: ({ side }) => ({\n opacity: 0,\n translate: getTranslation(side, 5),\n }),\n },\n );\n\n return (\n <FloatingNode id={nodeId}>\n {React.isValidElement(triggerElement) &&\n (triggerElement.type === \"button\" ||\n isForwardRef(triggerElement))\n ? // Dersom trigger-elementet er en knapp, sett riktige egenskaper på det\n React.cloneElement(triggerElement, {\n ...getReferenceProps({\n ...triggerProps,\n ref: referenceRef,\n role: isNested ? \"menuitem\" : undefined,\n \"aria-controls\": MenuId,\n onClick(event) {\n event.stopPropagation();\n },\n }),\n })\n : // Ellers, rendre elementet as-is, uten interaktivitet. Krev en ferdig brukbar button for å åpne menyen.\n triggerElement}\n {isMounted && (\n <FloatingPortal>\n <FloatingFocusManager\n context={context}\n // Prevent outside content interference.\n modal={false}\n // Only initially focus the root floating menu.\n initialFocus={isNested ? -1 : 0}\n // Only return focus to the root menu's reference when menus close.\n returnFocus={!isNested}\n >\n <div\n className={clsx(\"jkl jkl-menu\", className)}\n data-theme={theme}\n data-layout-density={density}\n role=\"menu\"\n data-placement={placement}\n aria-live=\"assertive\"\n aria-hidden={!isOpen}\n ref={refs.setFloating}\n {...getFloatingProps({\n id: MenuId,\n style: {\n ...floatingStyles,\n ...animationStyles,\n },\n })}\n >\n {React.Children.map(\n children,\n (child, index) => {\n if (\n React.isValidElement(child) &&\n isForwardRef(child)\n ) {\n return React.cloneElement(\n child,\n getItemProps({\n ...child.props,\n tabIndex:\n activeIndex === index\n ? 0\n : -1,\n role: \"menuitem\",\n ref(\n node: HTMLButtonElement,\n ) {\n listItemsRef.current[\n index\n ] = node;\n },\n onClick(event) {\n child.props.onClick?.(\n event as React.MouseEvent<HTMLButtonElement>,\n );\n if (\n event.defaultPrevented\n ) {\n return;\n }\n tree?.events.emit(\n \"click\",\n );\n },\n onKeyDown(event) {\n child.props.onKeyDown?.(\n event,\n );\n if (\n event.defaultPrevented\n ) {\n return;\n }\n tree?.events.emit(\n \"keydown\",\n );\n if (\n event.currentTarget\n .role ===\n \"menuitemcheckbox\" &&\n event.key ===\n \"Enter\"\n ) {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n setIsOpen(false);\n }\n },\n onMouseEnter() {\n if (\n allowHover &&\n isOpen\n ) {\n setActiveIndex(\n index,\n );\n }\n },\n }),\n );\n }\n\n return child;\n },\n )}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </FloatingNode>\n );\n },\n);\nMenuComponent.displayName = \"MenuComponent\";\n\nexport const Menu = forwardRef<HTMLButtonElement, MenuProps>((props, ref) => {\n const parentId = useFloatingParentNodeId();\n\n if (parentId === null) {\n return (\n <FloatingTree>\n <MenuComponent ref={ref} {...props} />\n </FloatingTree>\n );\n }\n\n return <MenuComponent ref={ref} {...props} />;\n});\nMenu.displayName = \"Menu\";\n"],"names":["getTranslation","side","value","MenuComponent","forwardRef","props","forwardedRef","children","className","initialPlacement","openOnHover","keepOpenOnClickOutside","triggerElement","isOpen","isOpenOverride","onToggle","triggerProps","MenuId","useId","prefersReducedMotion","useBrowserPreferences","tree","useFloatingTree","nodeId","useFloatingNodeId","parentId","useFloatingParentNodeId","isNested","listItemsRef","useRef","activeIndex","setActiveIndex","useState","allowHover","isOpenDefault","setIsOpen","useMenuWideEvents","useEffect","refs","placement","context","floatingStyles","useFloating","open","onOpenChange","middleware","offset","flip","fallbackAxisSideDirection","crossAxis","shift","padding","whileElementsMounted","autoUpdate","getReferenceProps","getFloatingProps","getItemProps","useInteractions","useHover","enabled","delay","handleClose","safePolygon","requireIntent","blockPointerEvents","useClick","event","useDismiss","outsidePress","useRole","role","useListNavigation","listRef","nested","onNavigate","referenceRef","useMergeRefs","setReference","theme","density","getThemeAndDensity","reference","current","isMounted","styles","animationStyles","useTransitionStyles","duration","close","initial","opacity","translate","jsxs","FloatingNode","id","React","isValidElement","type","isForwardRef","cloneElement","ref","onClick","stopPropagation","FloatingPortal","jsx","FloatingFocusManager","modal","initialFocus","returnFocus","clsx","setFloating","style","Children","map","child","index","reactIsExports","tabIndex","node","defaultPrevented","events","emit","onKeyDown","currentTarget","key","onMouseEnter","displayName","Menu","FloatingTree"],"mappings":"yfAiCA,SAASA,EAAeC,EAAYC,EAAQ,GACxC,OAAQD,GACJ,IAAK,MASL,QACI,MAAO,KAAKC,MARhB,IAAK,OACD,MAAO,GAAGA,QACd,IAAK,SACM,MAAA,MAAMA,MACjB,IAAK,QACM,OAAIA,EAAJ,OAKnB,CAEA,MAAMC,EAAgBC,EAAAA,YAClB,CAACC,EAAOC,KACE,MACFC,SAAAA,EACAC,UAAAA,EACAC,iBAAAA,EACAC,YAAAA,GAAc,EACdC,uBAAAA,GAAyB,EACzBC,eAAAA,EACAC,OAAQC,EACRC,SAAAA,KACGC,GACHX,EAEEY,EAASC,QAAM,aAEbC,qBAAAA,GAAyBC,0BAE3BC,EAAOC,EAAAA,kBACPC,EAASC,EAAAA,oBACTC,EAAWC,EAAAA,0BACXC,EAAuB,MAAZF,EAEXG,EAAeC,EAAwCA,OAAA,KACtDC,EAAaC,GAAkBC,EAAAA,SAAwB,OAE1DC,WAAAA,EACApB,OAAQqB,EACRC,UAAAA,GACAC,oBAAkBf,EAAME,EAAQE,GAE9BZ,OACiB,IAAnBC,EAA+BA,EAAiBoB,EAEpDG,EAAAA,WAAU,IAAMtB,IAAWF,IAAS,CAACA,EAAQE,IAE7C,MAAQuB,KAAAA,EAAMC,UAAAA,EAAWC,QAAAA,EAASC,eAAAA,GAAmBC,EAAAA,YAAY,CAC7DnB,OAAAA,EACAoB,KAAM9B,EACN+B,aAAcT,EACdI,UACI9B,IAAqBkB,EAAW,cAAgB,gBACpDkB,WAAY,CACRC,EAAAA,OAAO,GACPC,OAAK,CACDC,0BAA2B,MAC3BC,WAAW,IAEfC,QAAM,CAAEC,QAAS,KAErBC,qBAAsBC,EAAAA,cAGlBC,kBAAAA,EAAmBC,iBAAAA,EAAkBC,aAAAA,GACzCC,EAAAA,gBAAgB,CACZC,EAAAA,SAASlB,EAAS,CACdmB,QAASjD,GAAeuB,EACxB2B,MAAO,CAAEjB,KAAM,IACfkB,YAAaC,EAAAA,YAAY,CACrBC,eAAe,EACfC,oBAAoB,MAG5BC,EAAAA,SAASzB,EAAS,CACd0B,MAAO,cAEXC,EAAAA,WAAW3B,EAAS,CAAE4B,cAAezD,IACrC0D,EAAAA,QAAQ7B,EAAS,CAAE8B,KAAM,SACzBC,EAAAA,kBAAkB/B,EAAS,CACvBgC,QAAS5C,EACTE,YAAAA,EACA2C,OAAQ9C,EACR+C,WAAY3C,MAIlB4C,EAAeC,EAAAA,aAAa,CAACtC,EAAKuC,aAAcvE,KAI9CwE,MAAAA,EAAOC,QAAAA,GAAYC,EAAAA,mBACvB1C,EAAK2C,UAAUC,UAGXC,UAAAA,EAAWC,OAAQC,GAAoBC,EAAAA,oBAC3C9C,EACA,CACI+C,SAAU,CACN5C,KAAMxB,EAAuB,EAAI,IACjCqE,MAAOrE,EAAuB,EAAI,KAEtCsE,QAAS,EAAGxF,KAAAA,OACRyF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,KAEpC0C,KAAM,EAAG1C,KAAAA,OACLyF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,KAEpCuF,MAAO,EAAGvF,KAAAA,MAAY,CAClByF,QAAS,EACTC,UAAW3F,EAAeC,EAAM,OAMxC,OAAA2F,EAAAA,KAACC,EAAaA,aAAA,CAAAC,GAAIvE,EACbhB,SAAA,CAAAwF,EAAMC,eAAepF,KACG,WAAxBA,EAAeqF,MACZC,8BAAatF,IAEXmF,EAAMI,aAAavF,EAAgB,IAC5B0C,EAAkB,IACdtC,EACHoF,IAAKzB,EACLL,KAAM3C,EAAW,gBAAa,EAC9B,gBAAiBV,EACjBoF,QAAQnC,GACJA,EAAMoC,iBAAgB,MAKlC1F,EACLuE,SACIoB,iBACG,CAAAhG,SAAAiG,EAAAA,IAACC,EAAAA,qBAAA,CACGjE,QAAAA,EAEAkE,OAAO,EAEPC,aAAchF,GAAW,EAAK,EAE9BiF,aAAcjF,EAEdpB,SAAAiG,EAAAA,IAAC,MAAA,CACGhG,UAAWqG,EAAAA,KAAK,eAAgBrG,GAChC,aAAYsE,EACZ,sBAAqBC,EACrBT,KAAK,OACL,iBAAgB/B,EAChB,YAAU,YACV,eAAc1B,EACduF,IAAK9D,EAAKwE,eACNvD,EAAiB,CACjBuC,GAAI7E,EACJ8F,MAAO,IACAtE,KACA4C,KAIV9E,WAAMyG,SAASC,IACZ1G,GACA,CAAC2G,EAAOC,IAEApB,EAAMC,eAAekB,IACrBhB,EAAAkB,eAAAlB,aAAagB,GAENnB,EAAMI,aACTe,EACA1D,EAAa,IACN0D,EAAM7G,MACTgH,SACIvF,IAAgBqF,EACV,GAEV,EAAA7C,KAAM,WACN8B,IACIkB,GAEa1F,EAAAsD,QACTiC,GACAG,CACR,EACAjB,QAAQnC,GACJgD,EAAM7G,MAAMgG,UACRnC,IAGAA,EAAMqD,kBAIVlG,GAAMmG,OAAOC,KACT,QAER,EACAC,UAAUxD,GACNgD,EAAM7G,MAAMqH,YACRxD,IAGAA,EAAMqD,mBAIVlG,GAAMmG,OAAOC,KACT,WAKI,qBAFJvD,EAAMyD,cACDrD,MAGD,UADJJ,EAAM0D,KAINzF,GAAU,GAElB,EACA0F,eAEQ5F,GACApB,GAEAkB,EACIoF,EAER,KAMTD,YAOnC,IAIZ/G,EAAc2H,YAAc,gBAErB,MAAMC,EAAO3H,EAAAA,YAAyC,CAACC,EAAO+F,IAGhD,OAFA1E,EAAAA,gCAIRsG,EAAAA,aACG,CAAAzH,SAAAiG,EAAAA,IAACrG,GAAciG,IAAAA,KAAc/F,MAKjCmG,EAAAA,IAAArG,EAAA,CAAciG,IAAAA,KAAc/F,MAExC0H,EAAKD,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("../../../clsx-E3yX_9sL.cjs"),i=require("react"),l=require("../../hooks/useSwipeGesture/useSwipeGesture.cjs"),o=require("../icon/icons/CheckIcon.cjs"),s=i.forwardRef(((i,s)=>{const{"aria-checked":t,className:c,children:r,icon:a,onChange:u,onClick:d,onPointerCancel:m,onPointerDown:h,onPointerMove:k,onPointerUp:j,onKeyDown:g,...x}=i,{gestureHandlers:w}=l.useSwipeGesture({onClick:e=>{e.preventDefault(),null==u||u(e,!t),null==d||d(e)},onChange:(e,n)=>{n!==t&&(null==u||u(e,n))},onPointerCancel:m,onPointerDown:h,onPointerMove:k,onPointerUp:j});return e.jsxs("div",{ref:s,tabIndex:-1,...x,role:"menuitemcheckbox","aria-checked":t,className:n.clsx("jkl-menu-item","jkl-menu-item--checkbox",c),...w,onKeyDown:e=>{"Enter"===e.key?null==u||u(e,!t):" "===e.key&&(e.preventDefault(),null==u||u(e,!t)),null==g||g(e)},children:[a&&e.jsx("span",{className:"jkl-menu-item__icon",children:a}),e.jsx("div",{className:"jkl-menu-item__content",children:r}),e.jsx("div",{className:"jkl-toggle-switch",children:e.jsx("div",{className:"jkl-toggle-switch-widget",children:e.jsxs("div",{className:"jkl-toggle-switch-widget__slider",children:[e.jsx("div",{className:"jkl-toggle-switch-widget__knob"}),e.jsx(o.CheckIcon,{variant:"small",bold:!0,className:"jkl-toggle-switch-widget__indicator"})]})})})]})}));s.displayName="MenuItemCheckbox",exports.MenuItemCheckbox=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("../../../clsx-E3yX_9sL.cjs"),i=require("react"),o=require("../../hooks/useSwipeGesture/useSwipeGesture.cjs"),s=require("../icon/icons/CheckIcon.cjs"),t=i.forwardRef(((i,t)=>{const{"aria-checked":c,className:r,children:l,icon:a,onChange:d,onClick:u,onPointerCancel:m,onPointerDown:h,onPointerMove:k,onPointerUp:j,onKeyDown:g,...x}=i,{gestureHandlers:w}=o.useSwipeGesture({onClick:e=>{e.preventDefault(),d?.(e,!c),u?.(e)},onChange:(e,n)=>{n!==c&&d?.(e,n)},onPointerCancel:m,onPointerDown:h,onPointerMove:k,onPointerUp:j});return e.jsxs("div",{ref:t,tabIndex:-1,...x,role:"menuitemcheckbox","aria-checked":c,className:n.clsx("jkl-menu-item","jkl-menu-item--checkbox",r),...w,onKeyDown:e=>{"Enter"===e.key?d?.(e,!c):" "===e.key&&(e.preventDefault(),d?.(e,!c)),g?.(e)},children:[a&&e.jsx("span",{className:"jkl-menu-item__icon",children:a}),e.jsx("div",{className:"jkl-menu-item__content",children:l}),e.jsx("div",{className:"jkl-toggle-switch",children:e.jsx("div",{className:"jkl-toggle-switch-widget",children:e.jsxs("div",{className:"jkl-toggle-switch-widget__slider",children:[e.jsx("div",{className:"jkl-toggle-switch-widget__knob"}),e.jsx(s.CheckIcon,{variant:"small",bold:!0,className:"jkl-toggle-switch-widget__indicator"})]})})})]})}));t.displayName="MenuItemCheckbox",exports.MenuItemCheckbox=t;
2
2
  //# sourceMappingURL=MenuItemCheckbox.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItemCheckbox.cjs","sources":["../../../../src/components/menu/MenuItemCheckbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n forwardRef,\n type KeyboardEventHandler,\n type MouseEventHandler,\n} from \"react\";\nimport {\n type SwipeChangeHandler,\n useSwipeGesture,\n} from \"../../hooks/useSwipeGesture/useSwipeGesture.js\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport type { MenuItemCheckboxProps } from \"./types.js\";\n\nexport const MenuItemCheckbox = forwardRef<\n HTMLDivElement,\n MenuItemCheckboxProps\n>((props, ref) => {\n const {\n \"aria-checked\": checked,\n className,\n children,\n icon,\n onChange,\n onClick,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onKeyDown,\n ...rest\n } = props;\n\n const handleClick: MouseEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault(); // Prevents the menu from closing on toggle\n onChange?.(event, !checked);\n onClick?.(event);\n };\n\n const handleChange: SwipeChangeHandler<HTMLDivElement> = (\n event,\n toggleTo,\n ) => {\n if (toggleTo !== checked) {\n onChange?.(event, toggleTo);\n }\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = (event) => {\n if (event.key === \"Enter\") {\n onChange?.(event, !checked);\n } else if (event.key === \" \") {\n event.preventDefault(); // Prevents the menu from closing on toggle, https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n onChange?.(event, !checked);\n }\n onKeyDown?.(event);\n };\n\n const { gestureHandlers } = useSwipeGesture({\n onClick: handleClick,\n onChange: handleChange,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n });\n\n return (\n <div\n ref={ref}\n tabIndex={-1}\n {...rest}\n role=\"menuitemcheckbox\"\n aria-checked={checked}\n className={clsx(\n \"jkl-menu-item\",\n \"jkl-menu-item--checkbox\",\n className,\n )}\n {...gestureHandlers}\n onKeyDown={handleKeyDown}\n >\n {icon && <span className=\"jkl-menu-item__icon\">{icon}</span>}\n <div className=\"jkl-menu-item__content\">{children}</div>\n <div className=\"jkl-toggle-switch\">\n <div className=\"jkl-toggle-switch-widget\">\n <div className=\"jkl-toggle-switch-widget__slider\">\n <div className=\"jkl-toggle-switch-widget__knob\" />\n <CheckIcon\n variant=\"small\"\n bold\n className=\"jkl-toggle-switch-widget__indicator\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n});\n\nMenuItemCheckbox.displayName = \"MenuItemCheckbox\";\n"],"names":["MenuItemCheckbox","forwardRef","props","ref","checked","className","children","icon","onChange","onClick","onPointerCancel","onPointerDown","onPointerMove","onPointerUp","onKeyDown","rest","gestureHandlers","useSwipeGesture","event","preventDefault","toggleTo","jsxs","tabIndex","role","clsx","key","jsx","CheckIcon","variant","bold","displayName"],"mappings":"sRAaaA,EAAmBC,EAAAA,YAG9B,CAACC,EAAOC,KACA,MACF,eAAgBC,EAChBC,UAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,gBAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,YAAAA,EACAC,UAAAA,KACGC,GACHb,GA2BIc,gBAAAA,GAAoBC,kBAAgB,CACxCR,QA1BoDS,IACpDA,EAAMC,iBACK,MAAAX,GAAAA,EAAAU,GAAQd,GACnB,MAAAK,GAAAA,EAAUS,EACd,EAuBIV,SArBqD,CACrDU,EACAE,KAEIA,IAAahB,IACb,MAAAI,GAAAA,EAAWU,EAAOE,GAAAA,EAiBtBV,gBAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,YAAAA,IAIA,OAAAQ,EAAAA,KAAC,MAAA,CACGlB,IAAAA,EACAmB,UAAU,KACNP,EACJQ,KAAK,mBACL,eAAcnB,EACdC,UAAWmB,EAAAA,KACP,gBACA,0BACAnB,MAEAW,EACJF,UAhCqDI,IACvC,UAAdA,EAAMO,IACK,MAAAjB,GAAAA,EAAAU,GAAQd,GACE,MAAdc,EAAMO,MACbP,EAAMC,iBACK,MAAAX,GAAAA,EAAAU,GAAQd,IAEvB,MAAAU,GAAAA,EAAYI,EAChB,EA0BSZ,SAAA,CAAAC,GAASmB,EAAAA,IAAA,OAAA,CAAKrB,UAAU,sBAAuBC,SAAKC,IACpDmB,EAAAA,IAAA,MAAA,CAAIrB,UAAU,yBAA0BC,SAAAA,IACzCoB,EAAAA,IAAC,MAAI,CAAArB,UAAU,oBACXC,SAAAoB,EAAAA,IAAC,MAAI,CAAArB,UAAU,2BACXC,SAAAe,OAAC,MAAI,CAAAhB,UAAU,mCACXC,SAAA,CAACoB,EAAAA,IAAA,MAAA,CAAIrB,UAAU,mCACfqB,EAAAA,IAACC,EAAAA,UAAA,CACGC,QAAQ,QACRC,MAAI,EACJxB,UAAU,iDAK9B,IAIRL,EAAiB8B,YAAc"}
1
+ {"version":3,"file":"MenuItemCheckbox.cjs","sources":["../../../../src/components/menu/MenuItemCheckbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n forwardRef,\n type KeyboardEventHandler,\n type MouseEventHandler,\n} from \"react\";\nimport {\n type SwipeChangeHandler,\n useSwipeGesture,\n} from \"../../hooks/useSwipeGesture/useSwipeGesture.js\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport type { MenuItemCheckboxProps } from \"./types.js\";\n\nexport const MenuItemCheckbox = forwardRef<\n HTMLDivElement,\n MenuItemCheckboxProps\n>((props, ref) => {\n const {\n \"aria-checked\": checked,\n className,\n children,\n icon,\n onChange,\n onClick,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onKeyDown,\n ...rest\n } = props;\n\n const handleClick: MouseEventHandler<HTMLDivElement> = (event) => {\n event.preventDefault(); // Prevents the menu from closing on toggle\n onChange?.(event, !checked);\n onClick?.(event);\n };\n\n const handleChange: SwipeChangeHandler<HTMLDivElement> = (\n event,\n toggleTo,\n ) => {\n if (toggleTo !== checked) {\n onChange?.(event, toggleTo);\n }\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = (event) => {\n if (event.key === \"Enter\") {\n onChange?.(event, !checked);\n } else if (event.key === \" \") {\n event.preventDefault(); // Prevents the menu from closing on toggle, https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role#keyboard_interactions\n onChange?.(event, !checked);\n }\n onKeyDown?.(event);\n };\n\n const { gestureHandlers } = useSwipeGesture({\n onClick: handleClick,\n onChange: handleChange,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n });\n\n return (\n <div\n ref={ref}\n tabIndex={-1}\n {...rest}\n role=\"menuitemcheckbox\"\n aria-checked={checked}\n className={clsx(\n \"jkl-menu-item\",\n \"jkl-menu-item--checkbox\",\n className,\n )}\n {...gestureHandlers}\n onKeyDown={handleKeyDown}\n >\n {icon && <span className=\"jkl-menu-item__icon\">{icon}</span>}\n <div className=\"jkl-menu-item__content\">{children}</div>\n <div className=\"jkl-toggle-switch\">\n <div className=\"jkl-toggle-switch-widget\">\n <div className=\"jkl-toggle-switch-widget__slider\">\n <div className=\"jkl-toggle-switch-widget__knob\" />\n <CheckIcon\n variant=\"small\"\n bold\n className=\"jkl-toggle-switch-widget__indicator\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n});\n\nMenuItemCheckbox.displayName = \"MenuItemCheckbox\";\n"],"names":["MenuItemCheckbox","forwardRef","props","ref","checked","className","children","icon","onChange","onClick","onPointerCancel","onPointerDown","onPointerMove","onPointerUp","onKeyDown","rest","gestureHandlers","useSwipeGesture","event","preventDefault","toggleTo","jsxs","tabIndex","role","clsx","key","jsx","CheckIcon","variant","bold","displayName"],"mappings":"sRAaaA,EAAmBC,EAAAA,YAG9B,CAACC,EAAOC,KACA,MACF,eAAgBC,EAChBC,UAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,gBAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,YAAAA,EACAC,UAAAA,KACGC,GACHb,GA2BIc,gBAAAA,GAAoBC,kBAAgB,CACxCR,QA1BoDS,IACpDA,EAAMC,iBACKX,IAAAU,GAAQd,GACnBK,IAAUS,EAAK,EAwBfV,SArBqD,CACrDU,EACAE,KAEIA,IAAahB,GACbI,IAAWU,EAAOE,EAAQ,EAiB9BV,gBAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,YAAAA,IAIA,OAAAQ,EAAAA,KAAC,MAAA,CACGlB,IAAAA,EACAmB,UAAU,KACNP,EACJQ,KAAK,mBACL,eAAcnB,EACdC,UAAWmB,EAAAA,KACP,gBACA,0BACAnB,MAEAW,EACJF,UAhCqDI,IACvC,UAAdA,EAAMO,IACKjB,IAAAU,GAAQd,GACE,MAAdc,EAAMO,MACbP,EAAMC,iBACKX,IAAAU,GAAQd,IAEvBU,IAAYI,EAAK,EA2BZZ,SAAA,CAAAC,GAASmB,EAAAA,IAAA,OAAA,CAAKrB,UAAU,sBAAuBC,SAAKC,IACpDmB,EAAAA,IAAA,MAAA,CAAIrB,UAAU,yBAA0BC,SAAAA,IACzCoB,EAAAA,IAAC,MAAI,CAAArB,UAAU,oBACXC,SAAAoB,EAAAA,IAAC,MAAI,CAAArB,UAAU,2BACXC,SAAAe,OAAC,MAAI,CAAAhB,UAAU,mCACXC,SAAA,CAACoB,EAAAA,IAAA,MAAA,CAAIrB,UAAU,mCACfqB,EAAAA,IAACC,EAAAA,UAAA,CACGC,QAAQ,QACRC,MAAI,EACJxB,UAAU,iDAK9B,IAIRL,EAAiB8B,YAAc"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),e=require("../../../clsx-E3yX_9sL.cjs"),r=require("react"),a=require("../../hooks/useId/useId.cjs"),i=require("../icon/icons/ErrorIcon.cjs"),n=require("../icon/icons/InfoIcon.cjs"),c=require("../icon/icons/SuccessIcon.cjs"),o=require("../icon/icons/WarningIcon.cjs"),l=require("./DismissButton.cjs"),t=e=>{switch(e){case"error":return s.jsx(i.ErrorIcon,{className:"jkl-message__icon"});case"info":return s.jsx(n.InfoIcon,{className:"jkl-message__icon"});case"success":return s.jsx(c.SuccessIcon,{className:"jkl-message__icon"});case"warning":return s.jsx(o.WarningIcon,{className:"jkl-message__icon"});default:return null}};function m(i){const n=r.forwardRef(((n,c)=>{const{id:o,title:m,fullWidth:u,density:d,className:g="",dismissed:j,dismissAction:x,children:f,role:k,...h}=n,_=a.useId(o||"jkl-message",{generateSuffix:!o}),p=r.Children.map(f,(s=>"string"==typeof s)),I=null!=p&&p[0]?s.jsx("p",{children:f}):f;return s.jsxs("div",{...h,id:o,ref:c,className:e.clsx("jkl-message",`jkl-message--${i}`,g,{"jkl-message--full":u,"jkl-message--dismissed":j}),role:k,"data-density":d,children:[t(i),s.jsxs("div",{className:"jkl-message__content","data-theme":"light",children:[m&&s.jsx("p",{className:"jkl-message__title",children:m}),s.jsx("div",{className:"jkl-message__message",children:I})]}),(null==x?void 0:x.handleDismiss)&&s.jsx(l.DismissButton,{"data-theme":"light","aria-controls":_,className:"jkl-message__dismiss-button",label:x.buttonTitle||"Lukk",onClick:x.handleDismiss})]})}));return n.displayName="Message",n}const u=m("info");u.displayName="InfoMessage";const d=m("error");d.displayName="ErrorMessage";const g=m("warning");g.displayName="WarningMessage";const j=m("success");j.displayName="SuccessMessage",exports.ErrorMessage=d,exports.InfoMessage=u,exports.SuccessMessage=j,exports.WarningMessage=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),e=require("../../../clsx-E3yX_9sL.cjs"),r=require("react"),a=require("../../hooks/useId/useId.cjs"),i=require("../icon/icons/ErrorIcon.cjs"),n=require("../icon/icons/InfoIcon.cjs"),c=require("../icon/icons/SuccessIcon.cjs"),o=require("../icon/icons/WarningIcon.cjs"),t=require("./DismissButton.cjs"),l=e=>{switch(e){case"error":return s.jsx(i.ErrorIcon,{className:"jkl-message__icon"});case"info":return s.jsx(n.InfoIcon,{className:"jkl-message__icon"});case"success":return s.jsx(c.SuccessIcon,{className:"jkl-message__icon"});case"warning":return s.jsx(o.WarningIcon,{className:"jkl-message__icon"});default:return null}};function m(i){const n=r.forwardRef(((n,c)=>{const{id:o,title:m,fullWidth:u,density:d,className:g="",dismissed:j,dismissAction:x,children:f,role:k,...h}=n,_=a.useId(o||"jkl-message",{generateSuffix:!o}),p=r.Children.map(f,(s=>"string"==typeof s))?.[0]?s.jsx("p",{children:f}):f;return s.jsxs("div",{...h,id:o,ref:c,className:e.clsx("jkl-message",`jkl-message--${i}`,g,{"jkl-message--full":u,"jkl-message--dismissed":j}),role:k,"data-density":d,children:[l(i),s.jsxs("div",{className:"jkl-message__content","data-theme":"light",children:[m&&s.jsx("p",{className:"jkl-message__title",children:m}),s.jsx("div",{className:"jkl-message__message",children:p})]}),x?.handleDismiss&&s.jsx(t.DismissButton,{"data-theme":"light","aria-controls":_,className:"jkl-message__dismiss-button",label:x.buttonTitle||"Lukk",onClick:x.handleDismiss})]})}));return n.displayName="Message",n}const u=m("info");u.displayName="InfoMessage";const d=m("error");d.displayName="ErrorMessage";const g=m("warning");g.displayName="WarningMessage";const j=m("success");j.displayName="SuccessMessage",exports.ErrorMessage=d,exports.InfoMessage=u,exports.SuccessMessage=j,exports.WarningMessage=g;
2
2
  //# sourceMappingURL=Message.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Message.cjs","sources":["../../../../src/components/message/Message.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { ErrorIcon } from \"../icon/icons/ErrorIcon.js\";\nimport { InfoIcon } from \"../icon/icons/InfoIcon.js\";\nimport { SuccessIcon } from \"../icon/icons/SuccessIcon.js\";\nimport { WarningIcon } from \"../icon/icons/WarningIcon.js\";\nimport { DismissButton } from \"./DismissButton.js\";\nimport type { MessageProps } from \"./types.js\";\n\ntype messageTypes = \"info\" | \"error\" | \"success\" | \"warning\";\n\nconst getIcon = (messageType: messageTypes) => {\n switch (messageType) {\n case \"error\":\n return <ErrorIcon className=\"jkl-message__icon\" />;\n case \"info\":\n return <InfoIcon className=\"jkl-message__icon\" />;\n case \"success\":\n return <SuccessIcon className=\"jkl-message__icon\" />;\n case \"warning\":\n return <WarningIcon className=\"jkl-message__icon\" />;\n default:\n return null;\n }\n};\n\nfunction messageFactory(messageType: messageTypes) {\n const Message = forwardRef<HTMLDivElement, MessageProps>((props, ref) => {\n const {\n id,\n title,\n fullWidth,\n density,\n className = \"\",\n dismissed,\n dismissAction,\n children,\n role,\n ...rest\n } = props;\n\n const boxId = useId(id || \"jkl-message\", { generateSuffix: !id });\n\n const hasStringChild = React.Children.map(\n children,\n (child) => typeof child === \"string\",\n );\n const newChildren = hasStringChild?.[0] ? <p>{children}</p> : children;\n\n return (\n <div\n {...rest}\n id={id}\n ref={ref}\n className={clsx(\n \"jkl-message\",\n `jkl-message--${messageType}`,\n className,\n {\n \"jkl-message--full\": fullWidth,\n \"jkl-message--dismissed\": dismissed,\n },\n )}\n role={role}\n data-density={density}\n >\n {getIcon(messageType)}\n <div className=\"jkl-message__content\" data-theme=\"light\">\n {title && <p className=\"jkl-message__title\">{title}</p>}\n <div className=\"jkl-message__message\">{newChildren}</div>\n </div>\n {dismissAction?.handleDismiss && (\n <DismissButton\n data-theme=\"light\"\n aria-controls={boxId}\n className=\"jkl-message__dismiss-button\"\n label={dismissAction.buttonTitle || \"Lukk\"}\n onClick={dismissAction.handleDismiss}\n />\n )}\n </div>\n );\n });\n\n Message.displayName = \"Message\";\n\n return Message;\n}\n\nexport const InfoMessage = messageFactory(\"info\");\nInfoMessage.displayName = \"InfoMessage\";\nexport const ErrorMessage = messageFactory(\"error\");\nErrorMessage.displayName = \"ErrorMessage\";\nexport const WarningMessage = messageFactory(\"warning\");\nWarningMessage.displayName = \"WarningMessage\";\nexport const SuccessMessage = messageFactory(\"success\");\nSuccessMessage.displayName = \"SuccessMessage\";\n"],"names":["getIcon","messageType","jsx","ErrorIcon","className","InfoIcon","SuccessIcon","WarningIcon","messageFactory","Message","forwardRef","props","ref","id","title","fullWidth","density","dismissed","dismissAction","children","role","rest","boxId","useId","generateSuffix","hasStringChild","React","Children","map","child","newChildren","jsxs","clsx","handleDismiss","DismissButton","label","buttonTitle","onClick","displayName","InfoMessage","ErrorMessage","WarningMessage","SuccessMessage"],"mappings":"iaAYMA,EAAWC,IACb,OAAQA,GACJ,IAAK,QACM,OAAAC,EAAAA,IAACC,EAAUA,UAAA,CAAAC,UAAU,sBAChC,IAAK,OACM,OAAAF,EAAAA,IAACG,EAASA,SAAA,CAAAD,UAAU,sBAC/B,IAAK,UACM,OAAAF,EAAAA,IAACI,EAAYA,YAAA,CAAAF,UAAU,sBAClC,IAAK,UACM,OAAAF,EAAAA,IAACK,EAAYA,YAAA,CAAAH,UAAU,sBAClC,QACW,OAAA,KAAA,EAInB,SAASI,EAAeP,GACpB,MAAMQ,EAAUC,EAAAA,YAAyC,CAACC,EAAOC,KACvD,MACFC,GAAAA,EACAC,MAAAA,EACAC,UAAAA,EACAC,QAAAA,EACAZ,UAAAA,EAAY,GACZa,UAAAA,EACAC,cAAAA,EACAC,SAAAA,EACAC,KAAAA,KACGC,GACHV,EAEEW,EAAQC,EAAAA,MAAMV,GAAM,cAAe,CAAEW,gBAAiBX,IAEtDY,EAAiBC,EAAMC,SAASC,IAClCT,GACCU,GAA2B,iBAAVA,IAEhBC,EAAc,MAAAL,GAAAA,EAAiB,GAAMvB,EAAAA,IAAA,IAAA,CAAGiB,SAAAA,IAAgBA,EAG1D,OAAAY,EAAAA,KAAC,MAAA,IACOV,EACJR,GAAAA,EACAD,IAAAA,EACAR,UAAW4B,EAAAA,KACP,cACA,gBAAgB/B,IAChBG,EACA,CACI,oBAAqBW,EACrB,yBAA0BE,IAGlCG,KAAAA,EACA,eAAcJ,EAEbG,SAAA,CAAAnB,EAAQC,GACR8B,EAAAA,KAAA,MAAA,CAAI3B,UAAU,uBAAuB,aAAW,QAC5Ce,SAAA,CAAAL,GAAUZ,EAAAA,IAAA,IAAA,CAAEE,UAAU,qBAAsBe,SAAML,IAClDZ,EAAAA,IAAA,MAAA,CAAIE,UAAU,uBAAwBe,SAAYW,QAEtD,MAAAZ,OAAA,EAAAA,EAAee,gBACZ/B,EAAAA,IAACgC,EAAAA,cAAA,CACG,aAAW,QACX,gBAAeZ,EACflB,UAAU,8BACV+B,MAAOjB,EAAckB,aAAe,OACpCC,QAASnB,EAAce,kBAGnC,IAIR,OAAAxB,EAAQ6B,YAAc,UAEf7B,CACX,CAEa,MAAA8B,EAAc/B,EAAe,QAC1C+B,EAAYD,YAAc,cACb,MAAAE,EAAehC,EAAe,SAC3CgC,EAAaF,YAAc,eACd,MAAAG,EAAiBjC,EAAe,WAC7CiC,EAAeH,YAAc,iBAChB,MAAAI,EAAiBlC,EAAe,WAC7CkC,EAAeJ,YAAc"}
1
+ {"version":3,"file":"Message.cjs","sources":["../../../../src/components/message/Message.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { ErrorIcon } from \"../icon/icons/ErrorIcon.js\";\nimport { InfoIcon } from \"../icon/icons/InfoIcon.js\";\nimport { SuccessIcon } from \"../icon/icons/SuccessIcon.js\";\nimport { WarningIcon } from \"../icon/icons/WarningIcon.js\";\nimport { DismissButton } from \"./DismissButton.js\";\nimport type { MessageProps } from \"./types.js\";\n\ntype messageTypes = \"info\" | \"error\" | \"success\" | \"warning\";\n\nconst getIcon = (messageType: messageTypes) => {\n switch (messageType) {\n case \"error\":\n return <ErrorIcon className=\"jkl-message__icon\" />;\n case \"info\":\n return <InfoIcon className=\"jkl-message__icon\" />;\n case \"success\":\n return <SuccessIcon className=\"jkl-message__icon\" />;\n case \"warning\":\n return <WarningIcon className=\"jkl-message__icon\" />;\n default:\n return null;\n }\n};\n\nfunction messageFactory(messageType: messageTypes) {\n const Message = forwardRef<HTMLDivElement, MessageProps>((props, ref) => {\n const {\n id,\n title,\n fullWidth,\n density,\n className = \"\",\n dismissed,\n dismissAction,\n children,\n role,\n ...rest\n } = props;\n\n const boxId = useId(id || \"jkl-message\", { generateSuffix: !id });\n\n const hasStringChild = React.Children.map(\n children,\n (child) => typeof child === \"string\",\n );\n const newChildren = hasStringChild?.[0] ? <p>{children}</p> : children;\n\n return (\n <div\n {...rest}\n id={id}\n ref={ref}\n className={clsx(\n \"jkl-message\",\n `jkl-message--${messageType}`,\n className,\n {\n \"jkl-message--full\": fullWidth,\n \"jkl-message--dismissed\": dismissed,\n },\n )}\n role={role}\n data-density={density}\n >\n {getIcon(messageType)}\n <div className=\"jkl-message__content\" data-theme=\"light\">\n {title && <p className=\"jkl-message__title\">{title}</p>}\n <div className=\"jkl-message__message\">{newChildren}</div>\n </div>\n {dismissAction?.handleDismiss && (\n <DismissButton\n data-theme=\"light\"\n aria-controls={boxId}\n className=\"jkl-message__dismiss-button\"\n label={dismissAction.buttonTitle || \"Lukk\"}\n onClick={dismissAction.handleDismiss}\n />\n )}\n </div>\n );\n });\n\n Message.displayName = \"Message\";\n\n return Message;\n}\n\nexport const InfoMessage = messageFactory(\"info\");\nInfoMessage.displayName = \"InfoMessage\";\nexport const ErrorMessage = messageFactory(\"error\");\nErrorMessage.displayName = \"ErrorMessage\";\nexport const WarningMessage = messageFactory(\"warning\");\nWarningMessage.displayName = \"WarningMessage\";\nexport const SuccessMessage = messageFactory(\"success\");\nSuccessMessage.displayName = \"SuccessMessage\";\n"],"names":["getIcon","messageType","jsx","ErrorIcon","className","InfoIcon","SuccessIcon","WarningIcon","messageFactory","Message","forwardRef","props","ref","id","title","fullWidth","density","dismissed","dismissAction","children","role","rest","boxId","useId","generateSuffix","newChildren","React","Children","map","child","jsxs","clsx","handleDismiss","DismissButton","label","buttonTitle","onClick","displayName","InfoMessage","ErrorMessage","WarningMessage","SuccessMessage"],"mappings":"iaAYMA,EAAWC,IACb,OAAQA,GACJ,IAAK,QACM,OAAAC,EAAAA,IAACC,EAAUA,UAAA,CAAAC,UAAU,sBAChC,IAAK,OACM,OAAAF,EAAAA,IAACG,EAASA,SAAA,CAAAD,UAAU,sBAC/B,IAAK,UACM,OAAAF,EAAAA,IAACI,EAAYA,YAAA,CAAAF,UAAU,sBAClC,IAAK,UACM,OAAAF,EAAAA,IAACK,EAAYA,YAAA,CAAAH,UAAU,sBAClC,QACW,OAAA,KAAA,EAInB,SAASI,EAAeP,GACpB,MAAMQ,EAAUC,EAAAA,YAAyC,CAACC,EAAOC,KACvD,MACFC,GAAAA,EACAC,MAAAA,EACAC,UAAAA,EACAC,QAAAA,EACAZ,UAAAA,EAAY,GACZa,UAAAA,EACAC,cAAAA,EACAC,SAAAA,EACAC,KAAAA,KACGC,GACHV,EAEEW,EAAQC,EAAAA,MAAMV,GAAM,cAAe,CAAEW,gBAAiBX,IAMtDY,EAJiBC,EAAMC,SAASC,IAClCT,GACCU,GAA2B,iBAAVA,MAEe,GAAM3B,EAAAA,IAAA,IAAA,CAAGiB,SAAAA,IAAgBA,EAG1D,OAAAW,EAAAA,KAAC,MAAA,IACOT,EACJR,GAAAA,EACAD,IAAAA,EACAR,UAAW2B,EAAAA,KACP,cACA,gBAAgB9B,IAChBG,EACA,CACI,oBAAqBW,EACrB,yBAA0BE,IAGlCG,KAAAA,EACA,eAAcJ,EAEbG,SAAA,CAAAnB,EAAQC,GACR6B,EAAAA,KAAA,MAAA,CAAI1B,UAAU,uBAAuB,aAAW,QAC5Ce,SAAA,CAAAL,GAAUZ,EAAAA,IAAA,IAAA,CAAEE,UAAU,qBAAsBe,SAAML,IAClDZ,EAAAA,IAAA,MAAA,CAAIE,UAAU,uBAAwBe,SAAYM,OAEtDP,GAAec,eACZ9B,EAAAA,IAAC+B,EAAAA,cAAA,CACG,aAAW,QACX,gBAAeX,EACflB,UAAU,8BACV8B,MAAOhB,EAAciB,aAAe,OACpCC,QAASlB,EAAcc,kBAGnC,IAIR,OAAAvB,EAAQ4B,YAAc,UAEf5B,CACX,CAEa,MAAA6B,EAAc9B,EAAe,QAC1C8B,EAAYD,YAAc,cACb,MAAAE,EAAe/B,EAAe,SAC3C+B,EAAaF,YAAc,eACd,MAAAG,EAAiBhC,EAAe,WAC7CgC,EAAeH,YAAc,iBAChB,MAAAI,EAAiBjC,EAAe,WAC7CiC,EAAeJ,YAAc"}
@@ -7,7 +7,7 @@ declare const meta: {
7
7
  onClick: () => void;
8
8
  } & {
9
9
  "aria-label": string;
10
- }, "onClick"> & import('../types.js').BaseModalProps & import('../../index.js').IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
10
+ }, "onClick"> & import('../types.js').BaseModalProps & import('../../icon-button/types.js').IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
11
11
  parameters: {
12
12
  layout: string;
13
13
  };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});/* empty css */const e={title:"Komponenter/Modal/ModalOverlay",component:require("../Modal.cjs").ModalOverlay,parameters:{layout:"centered"},tags:["autodocs"]};let l=null;const o={args:{dialogRef:e=>{l=e},onCancel:()=>{console.log("❌ Cancel"),null==l||l.hide()},onClick:()=>{var e,l;null==(l=null==(e=o.args)?void 0:e.onCancel)||l.call(e)}}};exports.ModalOverlay=o,exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});/* empty css */const e={title:"Komponenter/Modal/ModalOverlay",component:require("../Modal.cjs").ModalOverlay,parameters:{layout:"centered"},tags:["autodocs"]};let o=null;const l={args:{dialogRef:e=>{o=e},onCancel:()=>{console.log("❌ Cancel"),o?.hide()},onClick:()=>{l.args?.onCancel?.()}}};exports.ModalOverlay=l,exports.default=e;
2
2
  //# sourceMappingURL=ModalOverlay.stories.cjs.map