@fremtind/jokul 0.28.0 → 0.29.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 (312) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/breadcrumb/index.d.cts +2 -4
  3. package/build/cjs/components/button/index.d.cts +1 -1
  4. package/build/cjs/components/button/types.cjs.map +1 -1
  5. package/build/cjs/components/button/types.d.cts +1 -2
  6. package/build/cjs/components/card/NavCard.cjs.map +1 -1
  7. package/build/cjs/components/card/NavCard.d.cts +1 -10
  8. package/build/cjs/components/card/index.d.cts +2 -2
  9. package/build/cjs/components/card/types.cjs.map +1 -1
  10. package/build/cjs/components/card/types.d.cts +8 -0
  11. package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
  12. package/build/cjs/components/combobox/Combobox.d.cts +6 -7
  13. package/build/cjs/components/combobox/index.d.cts +1 -1
  14. package/build/cjs/components/cookie-consent/index.d.cts +2 -4
  15. package/build/cjs/components/datepicker/index.cjs +1 -1
  16. package/build/cjs/components/datepicker/index.d.cts +3 -3
  17. package/build/cjs/components/datepicker/types.d.cts +7 -0
  18. package/build/cjs/components/datepicker/utils.cjs +1 -1
  19. package/build/cjs/components/datepicker/utils.cjs.map +1 -1
  20. package/build/cjs/components/datepicker/utils.d.cts +0 -1
  21. package/build/cjs/components/datepicker/validation.cjs.map +1 -1
  22. package/build/cjs/components/datepicker/validation.d.cts +1 -8
  23. package/build/cjs/components/description-list/index.d.cts +1 -1
  24. package/build/cjs/components/expander/Expander.cjs.map +1 -1
  25. package/build/cjs/components/expander/Expander.d.cts +1 -2
  26. package/build/cjs/components/expander/index.d.cts +2 -4
  27. package/build/cjs/components/feedback/Feedback.cjs.map +1 -1
  28. package/build/cjs/components/feedback/Feedback.d.cts +4 -9
  29. package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
  30. package/build/cjs/components/feedback/followup/Followup.d.cts +3 -14
  31. package/build/cjs/components/feedback/index.d.cts +3 -3
  32. package/build/cjs/components/feedback/presets.cjs.map +1 -1
  33. package/build/cjs/components/feedback/presets.d.cts +2 -5
  34. package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
  35. package/build/cjs/components/feedback/questions/ContactQuestion.d.cts +3 -28
  36. package/build/cjs/components/feedback/types.d.cts +42 -7
  37. package/build/cjs/components/icon-button/index.d.cts +1 -2
  38. package/build/cjs/components/image/index.d.cts +1 -3
  39. package/build/cjs/components/index.cjs +1 -1
  40. package/build/cjs/components/index.d.cts +1 -1
  41. package/build/cjs/components/input-panel/BasePanel.cjs +2 -0
  42. package/build/cjs/components/input-panel/BasePanel.cjs.map +1 -0
  43. package/build/cjs/components/input-panel/BasePanel.d.cts +10 -0
  44. package/build/cjs/components/input-panel/CheckboxPanel.cjs +2 -0
  45. package/build/cjs/components/input-panel/CheckboxPanel.cjs.map +1 -0
  46. package/build/cjs/components/input-panel/CheckboxPanel.d.cts +7 -0
  47. package/build/cjs/components/input-panel/RadioPanel.cjs +2 -0
  48. package/build/cjs/components/input-panel/RadioPanel.cjs.map +1 -0
  49. package/build/cjs/components/{radio-panel → input-panel}/RadioPanel.d.cts +2 -4
  50. package/build/cjs/components/input-panel/RadioPanelGroup.cjs +2 -0
  51. package/build/cjs/components/input-panel/RadioPanelGroup.cjs.map +1 -0
  52. package/build/cjs/components/input-panel/RadioPanelGroup.d.cts +4 -0
  53. package/build/cjs/components/input-panel/documentation/checkbox-panel/ControlledExample.d.cts +4 -0
  54. package/build/cjs/components/input-panel/documentation/checkbox-panel/UncontrolledExample.d.cts +4 -0
  55. package/build/cjs/components/input-panel/documentation/radio-panel/ControlledExample.d.cts +4 -0
  56. package/build/cjs/components/input-panel/documentation/radio-panel/UncontrolledExample.d.cts +4 -0
  57. package/build/cjs/components/input-panel/index.cjs +2 -0
  58. package/build/cjs/components/input-panel/index.d.cts +3 -0
  59. package/build/cjs/components/input-panel/radioPanelContext.cjs +2 -0
  60. package/build/cjs/components/input-panel/radioPanelContext.cjs.map +1 -0
  61. package/build/cjs/components/input-panel/radioPanelContext.d.cts +7 -0
  62. package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
  63. package/build/cjs/components/link-list/LinkList.d.cts +2 -11
  64. package/build/cjs/components/link-list/index.d.cts +1 -0
  65. package/build/cjs/components/link-list/types.cjs +2 -0
  66. package/build/cjs/components/link-list/types.cjs.map +1 -0
  67. package/build/cjs/components/link-list/types.d.cts +11 -0
  68. package/build/cjs/components/list/index.d.cts +2 -3
  69. package/build/cjs/components/loader/index.d.cts +9 -18
  70. package/build/cjs/components/logo/index.d.cts +2 -4
  71. package/build/cjs/components/modal/Modal.cjs.map +1 -1
  72. package/build/cjs/components/modal/Modal.d.cts +8 -2
  73. package/build/cjs/components/modal/index.d.cts +2 -4
  74. package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
  75. package/build/cjs/components/pagination/Pagination.d.cts +2 -1
  76. package/build/cjs/components/pagination/index.d.cts +1 -1
  77. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  78. package/build/cjs/components/popover/Popover.d.cts +6 -6
  79. package/build/cjs/components/popover/index.d.cts +1 -1
  80. package/build/cjs/components/progress-bar/index.d.cts +2 -4
  81. package/build/cjs/components/radio-button/index.d.cts +3 -6
  82. package/build/cjs/components/select/Select.cjs +1 -1
  83. package/build/cjs/components/select/Select.cjs.map +1 -1
  84. package/build/cjs/components/select/Select.d.cts +5 -6
  85. package/build/cjs/components/select/index.d.cts +2 -4
  86. package/build/cjs/components/summary-table/SummaryTable.cjs.map +1 -1
  87. package/build/cjs/components/summary-table/SummaryTable.d.cts +2 -2
  88. package/build/cjs/components/summary-table/index.d.cts +2 -2
  89. package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
  90. package/build/cjs/components/system-message/SystemMessage.d.cts +5 -6
  91. package/build/cjs/components/system-message/index.d.cts +1 -1
  92. package/build/cjs/components/tabs/index.d.cts +6 -6
  93. package/build/cjs/components/tag/index.d.cts +1 -3
  94. package/build/cjs/components/text-input/BaseTextArea.cjs.map +1 -1
  95. package/build/cjs/components/text-input/BaseTextArea.d.cts +1 -2
  96. package/build/cjs/components/text-input/index.d.cts +2 -2
  97. package/build/cjs/components/toast/index.d.cts +1 -1
  98. package/build/cjs/components/toast/toastContext.cjs.map +1 -1
  99. package/build/cjs/components/toast/toastContext.d.cts +1 -13
  100. package/build/cjs/components/toast/types.d.cts +11 -0
  101. package/build/cjs/components/toggle-switch/ToggleSlider.cjs.map +1 -1
  102. package/build/cjs/components/toggle-switch/ToggleSlider.d.cts +2 -3
  103. package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
  104. package/build/cjs/components/toggle-switch/ToggleSwitch.d.cts +1 -1
  105. package/build/cjs/components/toggle-switch/index.d.cts +2 -2
  106. package/build/cjs/components/tooltip/Tooltip.cjs +1 -1
  107. package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
  108. package/build/cjs/components/tooltip/Tooltip.d.cts +1 -1
  109. package/build/cjs/core/tokens.cjs +1 -1
  110. package/build/cjs/core/tokens.cjs.map +1 -1
  111. package/build/cjs/core/tokens.d.cts +5 -1
  112. package/build/cjs/index.cjs +1 -1
  113. package/build/es/components/breadcrumb/index.d.ts +2 -4
  114. package/build/es/components/button/index.d.ts +1 -1
  115. package/build/es/components/button/types.d.ts +1 -2
  116. package/build/es/components/button/types.js.map +1 -1
  117. package/build/es/components/card/NavCard.d.ts +1 -10
  118. package/build/es/components/card/NavCard.js.map +1 -1
  119. package/build/es/components/card/index.d.ts +2 -2
  120. package/build/es/components/card/types.d.ts +8 -0
  121. package/build/es/components/card/types.js.map +1 -1
  122. package/build/es/components/combobox/Combobox.d.ts +6 -7
  123. package/build/es/components/combobox/Combobox.js.map +1 -1
  124. package/build/es/components/combobox/index.d.ts +1 -1
  125. package/build/es/components/cookie-consent/index.d.ts +2 -4
  126. package/build/es/components/datepicker/index.d.ts +3 -3
  127. package/build/es/components/datepicker/index.js +1 -1
  128. package/build/es/components/datepicker/types.d.ts +7 -0
  129. package/build/es/components/datepicker/utils.d.ts +0 -1
  130. package/build/es/components/datepicker/utils.js +1 -1
  131. package/build/es/components/datepicker/utils.js.map +1 -1
  132. package/build/es/components/datepicker/validation.d.ts +1 -8
  133. package/build/es/components/datepicker/validation.js.map +1 -1
  134. package/build/es/components/description-list/index.d.ts +1 -1
  135. package/build/es/components/expander/Expander.d.ts +1 -2
  136. package/build/es/components/expander/Expander.js.map +1 -1
  137. package/build/es/components/expander/index.d.ts +2 -4
  138. package/build/es/components/feedback/Feedback.d.ts +4 -9
  139. package/build/es/components/feedback/Feedback.js.map +1 -1
  140. package/build/es/components/feedback/followup/Followup.d.ts +3 -14
  141. package/build/es/components/feedback/followup/Followup.js.map +1 -1
  142. package/build/es/components/feedback/index.d.ts +3 -3
  143. package/build/es/components/feedback/presets.d.ts +2 -5
  144. package/build/es/components/feedback/presets.js.map +1 -1
  145. package/build/es/components/feedback/questions/ContactQuestion.d.ts +3 -28
  146. package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
  147. package/build/es/components/feedback/types.d.ts +42 -7
  148. package/build/es/components/icon-button/index.d.ts +1 -2
  149. package/build/es/components/image/index.d.ts +1 -3
  150. package/build/es/components/index.d.ts +1 -1
  151. package/build/es/components/index.js +1 -1
  152. package/build/es/components/input-panel/BasePanel.d.ts +10 -0
  153. package/build/es/components/input-panel/BasePanel.js +2 -0
  154. package/build/es/components/input-panel/BasePanel.js.map +1 -0
  155. package/build/es/components/input-panel/CheckboxPanel.d.ts +7 -0
  156. package/build/es/components/input-panel/CheckboxPanel.js +2 -0
  157. package/build/es/components/input-panel/CheckboxPanel.js.map +1 -0
  158. package/build/es/components/{radio-panel → input-panel}/RadioPanel.d.ts +2 -4
  159. package/build/es/components/input-panel/RadioPanel.js +2 -0
  160. package/build/es/components/input-panel/RadioPanel.js.map +1 -0
  161. package/build/es/components/input-panel/RadioPanelGroup.d.ts +4 -0
  162. package/build/es/components/input-panel/RadioPanelGroup.js +2 -0
  163. package/build/es/components/input-panel/RadioPanelGroup.js.map +1 -0
  164. package/build/es/components/input-panel/documentation/checkbox-panel/ControlledExample.d.ts +4 -0
  165. package/build/es/components/input-panel/documentation/checkbox-panel/UncontrolledExample.d.ts +4 -0
  166. package/build/es/components/input-panel/documentation/radio-panel/ControlledExample.d.ts +4 -0
  167. package/build/es/components/input-panel/documentation/radio-panel/UncontrolledExample.d.ts +4 -0
  168. package/build/es/components/input-panel/index.d.ts +3 -0
  169. package/build/es/components/input-panel/index.js +2 -0
  170. package/build/es/components/input-panel/radioPanelContext.d.ts +7 -0
  171. package/build/es/components/input-panel/radioPanelContext.js +2 -0
  172. package/build/es/components/input-panel/radioPanelContext.js.map +1 -0
  173. package/build/es/components/link-list/LinkList.d.ts +2 -11
  174. package/build/es/components/link-list/LinkList.js.map +1 -1
  175. package/build/es/components/link-list/index.d.ts +1 -0
  176. package/build/es/components/link-list/types.d.ts +11 -0
  177. package/build/es/components/link-list/types.js +2 -0
  178. package/build/es/components/link-list/types.js.map +1 -0
  179. package/build/es/components/list/index.d.ts +2 -3
  180. package/build/es/components/loader/index.d.ts +9 -18
  181. package/build/es/components/logo/index.d.ts +2 -4
  182. package/build/es/components/modal/Modal.d.ts +8 -2
  183. package/build/es/components/modal/Modal.js.map +1 -1
  184. package/build/es/components/modal/index.d.ts +2 -4
  185. package/build/es/components/pagination/Pagination.d.ts +2 -1
  186. package/build/es/components/pagination/Pagination.js.map +1 -1
  187. package/build/es/components/pagination/index.d.ts +1 -1
  188. package/build/es/components/popover/Popover.d.ts +6 -6
  189. package/build/es/components/popover/Popover.js.map +1 -1
  190. package/build/es/components/popover/index.d.ts +1 -1
  191. package/build/es/components/progress-bar/index.d.ts +2 -4
  192. package/build/es/components/radio-button/index.d.ts +3 -6
  193. package/build/es/components/select/Select.d.ts +5 -6
  194. package/build/es/components/select/Select.js +1 -1
  195. package/build/es/components/select/Select.js.map +1 -1
  196. package/build/es/components/select/index.d.ts +2 -4
  197. package/build/es/components/summary-table/SummaryTable.d.ts +2 -2
  198. package/build/es/components/summary-table/SummaryTable.js.map +1 -1
  199. package/build/es/components/summary-table/index.d.ts +2 -2
  200. package/build/es/components/system-message/SystemMessage.d.ts +5 -6
  201. package/build/es/components/system-message/SystemMessage.js.map +1 -1
  202. package/build/es/components/system-message/index.d.ts +1 -1
  203. package/build/es/components/tabs/index.d.ts +6 -6
  204. package/build/es/components/tag/index.d.ts +1 -3
  205. package/build/es/components/text-input/BaseTextArea.d.ts +1 -2
  206. package/build/es/components/text-input/BaseTextArea.js.map +1 -1
  207. package/build/es/components/text-input/index.d.ts +2 -2
  208. package/build/es/components/toast/index.d.ts +1 -1
  209. package/build/es/components/toast/toastContext.d.ts +1 -13
  210. package/build/es/components/toast/toastContext.js.map +1 -1
  211. package/build/es/components/toast/types.d.ts +11 -0
  212. package/build/es/components/toggle-switch/ToggleSlider.d.ts +2 -3
  213. package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -1
  214. package/build/es/components/toggle-switch/ToggleSwitch.d.ts +1 -1
  215. package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
  216. package/build/es/components/toggle-switch/index.d.ts +2 -2
  217. package/build/es/components/tooltip/Tooltip.d.ts +1 -1
  218. package/build/es/components/tooltip/Tooltip.js +1 -1
  219. package/build/es/components/tooltip/Tooltip.js.map +1 -1
  220. package/build/es/core/tokens.d.ts +5 -1
  221. package/build/es/core/tokens.js +1 -1
  222. package/build/es/core/tokens.js.map +1 -1
  223. package/build/es/index.js +1 -1
  224. package/package.json +12 -2
  225. package/styles/components/accordion/accordion.css +1 -1
  226. package/styles/components/breadcrumb/breadcrumb.css +1 -1
  227. package/styles/components/button/button.css +3 -3
  228. package/styles/components/button/button.min.css +1 -1
  229. package/styles/components/card/card.css +1 -1
  230. package/styles/components/checkbox/checkbox.css +5 -5
  231. package/styles/components/checkbox/checkbox.min.css +1 -1
  232. package/styles/components/combobox/combobox.css +1 -1
  233. package/styles/components/cookie-consent/cookie-consent.css +1 -1
  234. package/styles/components/datepicker/datepicker.css +1 -1
  235. package/styles/components/description-list/description-list.css +1 -1
  236. package/styles/components/expander/expander.css +1 -1
  237. package/styles/components/feedback/feedback.css +3 -3
  238. package/styles/components/feedback/feedback.min.css +1 -1
  239. package/styles/components/file-input/file-input.css +1 -1
  240. package/styles/components/icon/icon.css +1 -1
  241. package/styles/components/icon-button/icon-button.css +1 -1
  242. package/styles/components/image/image.css +1 -1
  243. package/styles/components/input-group/input-group.css +3 -3
  244. package/styles/components/input-group/input-group.min.css +1 -1
  245. package/styles/components/input-panel/_index.scss +2 -0
  246. package/styles/components/input-panel/checkbox-panel.css +132 -0
  247. package/styles/components/input-panel/checkbox-panel.min.css +1 -0
  248. package/styles/components/input-panel/checkbox-panel.scss +88 -0
  249. package/styles/components/{radio-panel → input-panel}/radio-panel.css +68 -57
  250. package/styles/components/input-panel/radio-panel.min.css +1 -0
  251. package/styles/components/input-panel/radio-panel.scss +79 -0
  252. package/styles/components/input-panel/shared.css +61 -0
  253. package/styles/components/input-panel/shared.min.css +1 -0
  254. package/styles/components/input-panel/shared.scss +75 -0
  255. package/styles/components/link/link.css +1 -1
  256. package/styles/components/link-list/link-list.css +1 -1
  257. package/styles/components/list/list.css +1 -1
  258. package/styles/components/loader/loader.css +7 -7
  259. package/styles/components/loader/loader.min.css +1 -1
  260. package/styles/components/loader/skeleton-loader.css +6 -6
  261. package/styles/components/loader/skeleton-loader.min.css +1 -1
  262. package/styles/components/logo/logo.css +1 -1
  263. package/styles/components/menu/menu.css +1 -1
  264. package/styles/components/message/message.css +3 -3
  265. package/styles/components/message/message.min.css +1 -1
  266. package/styles/components/modal/modal.css +1 -1
  267. package/styles/components/pagination/pagination.css +1 -1
  268. package/styles/components/popover/popover.css +1 -1
  269. package/styles/components/progress-bar/progress-bar.css +3 -3
  270. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  271. package/styles/components/radio-button/radio-button.css +3 -3
  272. package/styles/components/radio-button/radio-button.min.css +1 -1
  273. package/styles/components/select/select.css +55 -145
  274. package/styles/components/select/select.min.css +1 -1
  275. package/styles/components/select/select.scss +62 -119
  276. package/styles/components/summary-table/summary-table.css +1 -1
  277. package/styles/components/system-message/system-message.css +3 -3
  278. package/styles/components/system-message/system-message.min.css +1 -1
  279. package/styles/components/table/table.css +1 -1
  280. package/styles/components/tabs/tabs.css +1 -1
  281. package/styles/components/tag/tag.css +1 -1
  282. package/styles/components/text-input/text-input.css +3 -3
  283. package/styles/components/text-input/text-input.min.css +1 -1
  284. package/styles/components/text-input/text-input.scss +1 -1
  285. package/styles/components/toast/toast.css +5 -5
  286. package/styles/components/toast/toast.min.css +1 -1
  287. package/styles/components/toggle-switch/toggle-switch.css +1 -1
  288. package/styles/components/tooltip/tooltip.css +1 -1
  289. package/styles/core/_color-tokens.scss +3 -1
  290. package/styles/core/_legacy-tokens.scss +1 -1
  291. package/styles/core/_tokens.scss +1 -1
  292. package/styles/core/core.css +8 -4
  293. package/styles/core/core.min.css +1 -1
  294. package/styles/core/jkl/_legacy-tokens.scss +1 -1
  295. package/styles/core/jkl/_tokens.scss +2 -1
  296. package/styles/styles.css +278 -286
  297. package/styles/styles.min.css +1 -1
  298. package/styles/styles.scss +1 -1
  299. package/styles/vind/vind.css +1 -1
  300. package/build/cjs/components/radio-panel/RadioPanel.cjs +0 -2
  301. package/build/cjs/components/radio-panel/RadioPanel.cjs.map +0 -1
  302. package/build/cjs/components/radio-panel/index.cjs +0 -2
  303. package/build/cjs/components/radio-panel/index.d.cts +0 -1
  304. package/build/es/components/radio-panel/RadioPanel.js +0 -2
  305. package/build/es/components/radio-panel/RadioPanel.js.map +0 -1
  306. package/build/es/components/radio-panel/index.d.ts +0 -1
  307. package/build/es/components/radio-panel/index.js +0 -2
  308. package/styles/components/radio-panel/_index.scss +0 -1
  309. package/styles/components/radio-panel/radio-panel.min.css +0 -1
  310. package/styles/components/radio-panel/radio-panel.scss +0 -140
  311. /package/build/cjs/components/{radio-panel → input-panel}/index.cjs.map +0 -0
  312. /package/build/es/components/{radio-panel → input-panel}/index.js.map +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/accordion/Accordion.cjs"),o=require("./components/accordion/AccordionItem.cjs"),r=require("./components/breadcrumb/Breadcrumb.cjs"),s=require("./components/breadcrumb/BreadcrumbItem.cjs"),t=require("./components/button/Button.cjs"),n=require("./components/card/Card.cjs"),i=require("./components/card/CardImage.cjs"),a=require("./components/card/NavCard.cjs"),c=require("./components/card/TaskCard.cjs"),u=require("./components/card/InfoCard.cjs"),p=require("./components/checkbox/Checkbox.cjs"),m=require("./components/combobox/Combobox.cjs"),l=require("./components/cookie-consent/CookieConsent.cjs"),x=require("./components/cookie-consent/CookieConsentContext.cjs"),d=require("./components/datepicker/validation.cjs"),g=require("./components/datepicker/utils.cjs"),j=require("./components/datepicker/DatePicker.cjs"),b=require("./components/feedback/Feedback.cjs"),q=require("./components/feedback/presets.cjs"),I=require("./components/flex/Flex.cjs"),T=require("./components/description-list/DescriptionList.cjs"),k=require("./components/expander/Expander.cjs"),h=require("./components/expander/ExpandSection.cjs"),C=require("./components/icon/Icon.cjs"),S=require("./components/icon/icons/animated/ArrowVerticalAnimated.cjs"),v=require("./components/icon/icons/animated/ArrowHorizontalAnimated.cjs"),M=require("./components/icon/icons/animated/PlusRemoveAnimated.cjs"),L=require("./components/icon/icons/ArrowDownIcon.cjs"),f=require("./components/icon/icons/ArrowLeftIcon.cjs"),A=require("./components/icon/icons/ArrowNorthEastIcon.cjs"),E=require("./components/icon/icons/ArrowRightIcon.cjs"),R=require("./components/icon/icons/ArrowUpIcon.cjs"),B=require("./components/icon/icons/CalendarIcon.cjs"),w=require("./components/icon/icons/CheckIcon.cjs"),P=require("./components/icon/icons/ChevronDownIcon.cjs"),F=require("./components/icon/icons/ChevronLeftIcon.cjs"),D=require("./components/icon/icons/ChevronRightIcon.cjs"),N=require("./components/icon/icons/ChevronUpIcon.cjs"),V=require("./components/icon/icons/CloseIcon.cjs"),y=require("./components/icon/icons/CopyIcon.cjs"),O=require("./components/icon/icons/DotsIcon.cjs"),G=require("./components/icon/icons/DragIcon.cjs"),H=require("./components/icon/icons/ErrorIcon.cjs"),W=require("./components/icon/icons/GreenCheckIcon.cjs"),U=require("./components/icon/icons/HamburgerIcon.cjs"),K=require("./components/icon/icons/InfoIcon.cjs"),X=require("./components/icon/icons/LinkIcon.cjs"),_=require("./components/icon/icons/PlusIcon.cjs"),z=require("./components/icon/icons/QuestionIcon.cjs"),Q=require("./components/icon/icons/RedCrossIcon.cjs"),J=require("./components/icon/icons/SearchIcon.cjs"),Y=require("./components/icon/icons/SuccessIcon.cjs"),Z=require("./components/icon/icons/WarningIcon.cjs"),$=require("./components/icon/icons/MinusIcon.cjs"),ee=require("./components/icon/icons/ThumbDownIcon.cjs"),oe=require("./components/icon/icons/ThumbUpIcon.cjs"),re=require("./components/icon/icons/TrashCanIcon.cjs"),se=require("./components/icon/icons/PenIcon.cjs"),te=require("./components/icon-button/IconButton.cjs"),ne=require("./components/image/Image.cjs"),ie=require("./components/input-group/FieldGroup.cjs"),ae=require("./components/input-group/InputGroup.cjs"),ce=require("./components/input-group/Label.cjs"),ue=require("./components/input-group/SupportLabel.cjs"),pe=require("./components/link/Link.cjs"),me=require("./components/link/NavLink.cjs"),le=require("./components/link-list/LinkList.cjs"),xe=require("./components/list/List.cjs"),de=require("./components/list/ListItem.cjs"),ge=require("./components/loader/Loader.cjs"),je=require("./components/loader/skeletons/SkeletonAnimation.cjs"),be=require("./components/loader/skeletons/SkeletonButton.cjs"),qe=require("./components/loader/skeletons/SkeletonCheckboxGroup.cjs"),Ie=require("./components/loader/skeletons/SkeletonElement.cjs"),Te=require("./components/loader/skeletons/SkeletonInput.cjs"),ke=require("./components/loader/skeletons/SkeletonRadioButtonGroup.cjs"),he=require("./components/loader/skeletons/SkeletonTable.cjs"),Ce=require("./components/loader/skeletons/SkeletonTextArea.cjs"),Se=require("./components/logo/Logo.cjs"),ve=require("./components/logo/LogoStamp.cjs"),Me=require("./components/logo/text-paths/ForsikringLevertAvFremtind.cjs"),Le=require("./components/logo/text-paths/FraSB1ogDNB.cjs"),fe=require("./components/logo/text-paths/InnovasjonFraFremtind.cjs"),Ae=require("./components/logo/text-paths/TeknologiFraFremtind.cjs"),Ee=require("./components/logo/text-paths/VartEgetForsikringsselskap.cjs"),Re=require("./components/logo/text-paths/VartForsikringsselskap.cjs"),Be=require("./components/menu/Menu.cjs"),we=require("./components/menu/MenuItem.cjs"),Pe=require("./components/menu/MenuItemCheckbox.cjs"),Fe=require("./components/menu/MenuDivider.cjs"),De=require("./components/message/Message.cjs"),Ne=require("./components/message/FormErrorMessage.cjs"),Ve=require("./components/modal/Modal.cjs"),ye=require("./components/modal/useModal.cjs"),Oe=require("./components/pagination/Pagination.cjs"),Ge=require("./components/popover/Popover.cjs"),He=require("./components/progress-bar/Countdown.cjs"),We=require("./components/progress-bar/ProgressBar.cjs"),Ue=require("./components/radio-button/RadioButton.cjs"),Ke=require("./components/radio-button/RadioButtonGroup.cjs"),Xe=require("./components/radio-button/BaseRadioButton.cjs"),_e=require("./components/radio-panel/RadioPanel.cjs"),ze=require("./components/select/Select.cjs"),Qe=require("./components/select/NativeSelect.cjs"),Je=require("./components/summary-table/SummaryTable.cjs"),Ye=require("./components/summary-table/SummaryTableRow.cjs"),Ze=require("./components/system-message/SystemMessage.cjs"),$e=require("./components/table/DataTable.cjs"),eo=require("./components/table/Table.cjs"),oo=require("./components/table/TableBody.cjs"),ro=require("./components/table/TableCaption.cjs"),so=require("./components/table/TableCell.cjs"),to=require("./components/table/TableColumn.cjs"),no=require("./components/table/TableColumnGroup.cjs"),io=require("./components/table/tableContext.cjs"),ao=require("./components/table/tableSectionContext.cjs"),co=require("./components/table/TableFooter.cjs"),uo=require("./components/table/TableHead.cjs"),po=require("./components/table/TableHeader.cjs"),mo=require("./components/table/TablePagination.cjs"),lo=require("./components/table/TableRow.cjs"),xo=require("./components/table/ExpandableTableRow.cjs"),go=require("./components/table/ExpandableTableRowController.cjs"),jo=require("./components/table/utils.cjs"),bo=require("./components/tabs/NavTab.cjs"),qo=require("./components/tabs/NavTabs.cjs"),Io=require("./components/tabs/Tabs.cjs"),To=require("./components/tabs/TabList.cjs"),ko=require("./components/tabs/Tab.cjs"),ho=require("./components/tabs/TabPanel.cjs"),Co=require("./components/tag/Tag.cjs"),So=require("./components/text-input/BaseTextArea.cjs"),vo=require("./components/text-input/BaseTextInput.cjs"),Mo=require("./components/text-input/TextArea.cjs"),Lo=require("./components/text-input/TextInput.cjs"),fo=require("./components/toast/toastContext.cjs"),Ao=require("./components/toggle-switch/ToggleSwitch.cjs"),Eo=require("./components/toggle-switch/ToggleSlider.cjs"),Ro=require("./components/tooltip/Tooltip.cjs"),Bo=require("./components/tooltip/TooltipContent.cjs"),wo=require("./components/tooltip/TooltipTrigger.cjs"),Po=require("./components/tooltip/PopupTip.cjs"),Fo=require("./components/ScreenReaderOnly.cjs"),Do=require("./core/tokens.cjs"),No=require("./hooks/useAnimatedDetails/useAnimatedDetails.cjs"),Vo=require("./hooks/useAnimatedHeight/useAnimatedHeight.cjs"),yo=require("./hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs"),Oo=require("./hooks/useAnimatedHeight/useAutoAnimateHeight.cjs"),Go=require("./hooks/useBrowserPreferences/useBrowserPreferences.cjs"),Ho=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),Wo=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Uo=require("./hooks/useMutationObserver/useMutationObserver.cjs"),Ko=require("./hooks/usePreviousValue/usePreviousValue.cjs"),Xo=require("./hooks/useProgressiveImg/useProgressiveImg.cjs"),_o=require("./hooks/useScreen/useScreen.cjs"),zo=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),Qo=require("./hooks/useAriaLiveRegion/useAriaLiveRegion.cjs"),Jo=require("./hooks/useClickOutside/useClickOutside.cjs"),Yo=require("./hooks/useFocusOutside/useFocusOutside.cjs"),Zo=require("./hooks/useElementDimensions/useElementDimensions.cjs"),$o=require("./hooks/useId/useId.cjs"),er=require("./hooks/useKeyListener/useKeyListener.cjs"),or=require("./hooks/useListNavigation/useListNavigation.cjs"),rr=require("./hooks/useSwipeGesture/useSwipeGesture.cjs"),sr=require("../index-hKyqa1PH.cjs"),tr=require("./utilities/formatters/util/formatNumber.cjs"),nr=require("./utilities/formatters/util/parseNumber.cjs"),ir=require("./utilities/formatters/util/registerWithMask.cjs"),ar=require("./utilities/formatters/avstand/formatAvstand.cjs"),cr=require("./utilities/formatters/bytes/formatBytes.cjs"),ur=require("./utilities/formatters/date/formatDate.cjs"),pr=require("./utilities/formatters/fodselsnummer/formatFodselsnummer.cjs"),mr=require("./utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs"),lr=require("./utilities/formatters/kontonummer/formatKontonummer.cjs"),xr=require("./utilities/formatters/kortnummer/formatKortnummer.cjs"),dr=require("./utilities/formatters/telefonnummer/formatTelefonnummer.cjs"),gr=require("./utilities/formatters/valuta/formatValuta.cjs"),jr=require("./utilities/getThemeAndDensity.cjs"),br=require("./utilities/polymorphism/mergeProps.cjs"),qr=require("./utilities/polymorphism/mergeRefs.cjs"),Ir=require("./utilities/polymorphism/SlotComponent.cjs"),Tr=require("./utilities/validators/isValidEpost/isValidEpost.cjs"),kr=require("./utilities/validators/isValidTelefonnummer/isValidTelefonnummer.cjs"),hr=require("./utilities/validators/isValidRegistreringsnummer/isValidRegistreringsnummer.cjs"),Cr=require("./utilities/validators/isValidChassisnummer/isValidChassisnummer.cjs"),Sr=require("./utilities/validators/isValidDogId/isValidDogId.cjs"),vr=require("./utilities/validators/isExactLength/isExactLength.cjs"),Mr=require("./utilities/validators/isInteger/isInteger.cjs"),Lr=require("./utilities/validators/isValidFodselsnummer/isValidFodselsnummer.cjs"),fr=require("./utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs"),Ar=require("./utilities/validators/isValidName/isValidName.cjs"),Er=require("./utilities/validators/hasMinimumWords/hasMinimumWords.cjs"),Rr=require("./utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs"),Br=require("./utilities/tabListener.cjs"),wr=require("./utilities/valuePair.cjs");exports.Accordion=e.Accordion,exports.AccordionItem=o.AccordionItem,exports.Breadcrumb=r.Breadcrumb,exports.BreadcrumbItem=s.BreadcrumbItem,exports.Button=t.Button,exports.PrimaryButton=t.PrimaryButton,exports.SecondaryButton=t.SecondaryButton,exports.TertiaryButton=t.TertiaryButton,exports.Card=n.Card,exports.CardImage=i.CardImage,exports.InfoBlock=a.InfoBlock,exports.NavCard=a.NavCard,exports.TaskCard=c.TaskCard,exports.InfoCard=u.InfoCard,exports.Checkbox=p.Checkbox,exports.Combobox=m.Combobox,exports.getComboboxValuePair=m.getComboboxValuePair,exports.CookieConsent=l.CookieConsent,exports.CookieConsentProvider=x.CookieConsentProvider,exports.useCookieConsent=x.useCookieConsent,exports.isCorrectFormat=d.isCorrectFormat,exports.isWithinLowerBound=d.isWithinLowerBound,exports.isWithinUpperBound=d.isWithinUpperBound,exports.dayMonthYearRegex=g.dayMonthYearRegex,exports.formatInput=g.formatInput,exports.isBlurTargetOutside=g.isBlurTargetOutside,exports.parseDateString=g.parseDateString,exports.DatePicker=j.DatePicker,exports.Feedback=b.Feedback,exports.PRESETS=q.PRESETS,exports.Flex=I.Flex,exports.DescriptionDetail=T.DescriptionDetail,exports.DescriptionList=T.DescriptionList,exports.DescriptionTerm=T.DescriptionTerm,exports.Expander=k.Expander,exports.ExpandSection=h.ExpandSection,exports.Icon=C.Icon,exports.ArrowVerticalAnimated=S.ArrowVerticalAnimated,exports.ArrowHorizontalAnimated=v.ArrowHorizontalAnimated,exports.PlusRemoveAnimated=M.PlusRemoveAnimated,exports.ArrowDownIcon=L.ArrowDownIcon,exports.ArrowLeftIcon=f.ArrowLeftIcon,exports.ArrowNorthEastIcon=A.ArrowNorthEastIcon,exports.ArrowRightIcon=E.ArrowRightIcon,exports.ArrowUpIcon=R.ArrowUpIcon,exports.CalendarIcon=B.CalendarIcon,exports.CheckIcon=w.CheckIcon,exports.ChevronDownIcon=P.ChevronDownIcon,exports.ChevronLeftIcon=F.ChevronLeftIcon,exports.ChevronRightIcon=D.ChevronRightIcon,exports.ChevronUpIcon=N.ChevronUpIcon,exports.CloseIcon=V.CloseIcon,exports.CopyIcon=y.CopyIcon,exports.DotsIcon=O.DotsIcon,exports.DragIcon=G.DragIcon,exports.ErrorIcon=H.ErrorIcon,exports.GreenCheckIcon=W.GreenCheckIcon,exports.HamburgerIcon=U.HamburgerIcon,exports.InfoIcon=K.InfoIcon,exports.LinkIcon=X.LinkIcon,exports.PlusIcon=_.PlusIcon,exports.QuestionIcon=z.QuestionIcon,exports.RedCrossIcon=Q.RedCrossIcon,exports.SearchIcon=J.SearchIcon,exports.SuccessIcon=Y.SuccessIcon,exports.WarningIcon=Z.WarningIcon,exports.MinusIcon=$.MinusIcon,exports.ThumbDownIcon=ee.ThumbDownIcon,exports.ThumbUpIcon=oe.ThumbUpIcon,exports.TrashCanIcon=re.TrashCanIcon,exports.PenIcon=se.PenIcon,exports.IconButton=te.IconButton,exports.Image=ne.Image,exports.FieldGroup=ie.FieldGroup,exports.InputGroup=ae.InputGroup,exports.Label=ce.Label,exports.SupportLabel=ue.SupportLabel,exports.Link=pe.Link,exports.NavLink=me.NavLink,exports.LinkList=le.LinkList,exports.List=xe.List,exports.OrderedList=xe.OrderedList,exports.UnorderedList=xe.UnorderedList,exports.CheckListItem=de.CheckListItem,exports.CrossListItem=de.CrossListItem,exports.ListItem=de.ListItem,exports.Loader=ge.Loader,exports.SkeletonAnimation=je.SkeletonAnimation,exports.SkeletonButton=be.SkeletonButton,exports.SkeletonCheckboxGroup=qe.SkeletonCheckboxGroup,exports.SkeletonElement=Ie.SkeletonElement,exports.SkeletonInput=Te.SkeletonInput,exports.SkeletonRadioButtonGroup=ke.SkeletonRadioButtonGroup,exports.SkeletonTable=he.SkeletonTable,exports.SkeletonTableHeader=he.SkeletonTableHeader,exports.SkeletonTableRow=he.SkeletonTableRow,exports.SkeletonTextArea=Ce.SkeletonTextArea,exports.Logo=Se.Logo,exports.LogoStamp=ve.LogoStamp,exports.ForsikringLevertAvFremtind=Me.ForsikringLevertAvFremtind,exports.FraSB1ogDNB=Le.FraSB1ogDNB,exports.InnovasjonFraFremtind=fe.InnovasjonFraFremtind,exports.TeknologiFraFremtind=Ae.TeknologiFraFremtind,exports.VartEgetForsikringsselskap=Ee.VartEgetForsikringsselskap,exports.VartForsikringsselskap=Re.VartForsikringsselskap,exports.Menu=Be.Menu,exports.MenuItem=we.MenuItem,exports.MenuItemCheckbox=Pe.MenuItemCheckbox,exports.MenuDivider=Fe.MenuDivider,exports.ErrorMessage=De.ErrorMessage,exports.InfoMessage=De.InfoMessage,exports.SuccessMessage=De.SuccessMessage,exports.WarningMessage=De.WarningMessage,exports.FormErrorMessage=Ne.FormErrorMessage,exports.Modal=Ve.Modal,exports.ModalActions=Ve.ModalActions,exports.ModalBody=Ve.ModalBody,exports.ModalCloseButton=Ve.ModalCloseButton,exports.ModalContainer=Ve.ModalContainer,exports.ModalHeader=Ve.ModalHeader,exports.ModalOverlay=Ve.ModalOverlay,exports.ModalTitle=Ve.ModalTitle,exports.useModal=ye.useModal,exports.Pagination=Oe.Pagination,exports.Popover=Ge.Popover,exports.Countdown=He.Countdown,exports.ProgressBar=We.ProgressBar,exports.RadioButton=Ue.RadioButton,exports.RadioButtonGroup=Ke.RadioButtonGroup,exports.BaseRadioButton=Xe.BaseRadioButton,exports.RadioPanel=_e.RadioPanel,exports.Select=ze.Select,exports.NativeSelect=Qe.NativeSelect,exports.SummaryTable=Je.SummaryTable,exports.SummaryTableRow=Ye.SummaryTableRow,exports.ErrorSystemMessage=Ze.ErrorSystemMessage,exports.InfoSystemMessage=Ze.InfoSystemMessage,exports.SuccessSystemMessage=Ze.SuccessSystemMessage,exports.WarningSystemMessage=Ze.WarningSystemMessage,exports.DataTable=$e.DataTable,exports.Table=eo.Table,exports.TableBody=oo.TableBody,exports.TableCaption=ro.TableCaption,exports.TableCell=so.TableCell,exports.TableColumn=to.TableColumn,exports.TableColumnGroup=no.TableColumnGroup,exports.TableContextProvider=io.TableContextProvider,exports.useTableContext=io.useTableContext,exports.TableSectionContextProvider=ao.TableSectionContextProvider,exports.useTableSectionContext=ao.useTableSectionContext,exports.TableFooter=co.TableFooter,exports.TableHead=uo.TableHead,exports.TableHeader=po.TableHeader,exports.TablePagination=mo.TablePagination,exports.TableRow=lo.TableRow,exports.ExpandableTableRow=xo.ExpandableTableRow,exports.ExpandableTableRowController=go.ExpandableTableRowController,exports.useSortableTableHeader=jo.useSortableTableHeader,exports.NavTab=bo.NavTab,exports.NavTabs=qo.NavTabs,exports.Tabs=Io.Tabs,exports.TabList=To.TabList,exports.Tab=ko.Tab,exports.TabPanel=ho.TabPanel,exports.ErrorTag=Co.ErrorTag,exports.InfoTag=Co.InfoTag,exports.SuccessTag=Co.SuccessTag,exports.Tag=Co.Tag,exports.WarningTag=Co.WarningTag,exports.BaseTextArea=So.BaseTextArea,exports.BaseTextInput=vo.BaseTextInput,exports.TextArea=Mo.TextArea,exports.TextInput=Lo.TextInput,exports.ToastProvider=fo.ToastProvider,exports.useToast=fo.useToast,exports.ToggleSwitch=Ao.ToggleSwitch,exports.ToggleSlider=Eo.ToggleSlider,exports.Tooltip=Ro.Tooltip,exports.TooltipContent=Bo.TooltipContent,exports.TooltipTrigger=wo.TooltipTrigger,exports.PopupTip=Po.PopupTip,exports.ScreenReaderOnly=Fo.ScreenReaderOnly,exports.tokens=Do,exports.useAnimatedDetails=No.useAnimatedDetails,exports.useAnimatedHeight=Vo.useAnimatedHeight,exports.useAnimatedHeightBetween=yo.useAnimatedHeightBetween,exports.useAutoAnimatedHeight=Oo.useAutoAnimatedHeight,exports.useBrowserPreferences=Go.useBrowserPreferences,exports.useIntersectionObserver=Ho.useIntersectionObserver,exports.useLocalStorage=Wo.useLocalStorage,exports.useMutationObserver=Uo.useMutationObserver,exports.usePreviousValue=Ko.usePreviousValue,exports.useProgressiveImg=Xo.useProgressiveImg,exports.useScreen=_o.useScreen,exports.useScrollIntoView=zo.useScrollIntoView,exports.useAriaLiveRegion=Qo.useAriaLiveRegion,exports.useClickOutside=Jo.useClickOutside,exports.useFocusOutside=Yo.useFocusOutside,exports.useElementDimensions=Zo.useElementDimensions,exports.useId=$o.useId,exports.useKeyListener=er.useKeyListener,exports.useListNavigation=or.useListNavigation,exports.useSwipeGesture=rr.useSwipeGesture,exports.unicode=sr.unicode,exports.formatNumber=tr.formatNumber,exports.parseNumber=nr.parseNumber,exports.registerWithFodselsnummerMask=ir.registerWithFodselsnummerMask,exports.registerWithKontonummerMask=ir.registerWithKontonummerMask,exports.registerWithKortnummerMask=ir.registerWithKortnummerMask,exports.registerWithMasks=ir.registerWithMasks,exports.registerWithTelefonnummerMask=ir.registerWithTelefonnummerMask,exports.formatAvstand=ar.formatAvstand,exports.formatBytes=cr.formatBytes,exports.formatDate=ur.formatDate,exports.FODSELSNUMMER_REGEX=pr.FODSELSNUMMER_REGEX,exports.formatFodselsnummer=pr.formatFodselsnummer,exports.ORGANISASJONSNUMMER_REGEX=mr.ORGANISASJONSNUMMER_REGEX,exports.formatOrganisasjonsnummer=mr.formatOrganisasjonsnummer,exports.KONTONUMMER_REGEX=lr.KONTONUMMER_REGEX,exports.formatKontonummer=lr.formatKontonummer,exports.KORTNUMMER_REGEX=xr.KORTNUMMER_REGEX,exports.formatKortnummer=xr.formatKortnummer,exports.TELEFONNUMMER_REGEX=dr.TELEFONNUMMER_REGEX,exports.formatTelefonnummer=dr.formatTelefonnummer,exports.formatValuta=gr.formatValuta,exports.getThemeAndDensity=jr.getThemeAndDensity,exports.mergeProps=br.mergeProps,exports.mergeRefs=qr.mergeRefs,exports.SlotComponent=Ir.SlotComponent,exports.isValidEpost=Tr.isValidEpost,exports.isValidTelefonnummer=kr.isValidTelefonnummer,exports.isValidRegistreringsnummer=hr.isValidRegistreringsnummer,exports.isValidChassisnummer=Cr.isValidChassisnummer,exports.isValidDogId=Sr.isValidDogId,exports.isExactLength=vr.isExactLength,exports.isInteger=Mr.isInteger,exports.isValidFodselsnummer=Lr.isValidFodselsnummer,exports.isValidOrganisasjonsnummer=fr.isValidOrganisasjonsnummer,exports.isValidName=Ar.isValidName,exports.hasMinimumWords=Er.hasMinimumWords,exports.hasNoIllegalCharacters=Rr.hasNoIllegalCharacters,exports.initTabListener=Br.initTabListener,exports.getValuePair=wr.getValuePair;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/accordion/Accordion.cjs"),o=require("./components/accordion/AccordionItem.cjs"),r=require("./components/breadcrumb/Breadcrumb.cjs"),s=require("./components/breadcrumb/BreadcrumbItem.cjs"),t=require("./components/button/Button.cjs"),n=require("./components/card/Card.cjs"),i=require("./components/card/CardImage.cjs"),a=require("./components/card/NavCard.cjs"),c=require("./components/card/TaskCard.cjs"),u=require("./components/card/InfoCard.cjs"),p=require("./components/checkbox/Checkbox.cjs"),m=require("./components/combobox/Combobox.cjs"),l=require("./components/cookie-consent/CookieConsent.cjs"),x=require("./components/cookie-consent/CookieConsentContext.cjs"),d=require("./components/datepicker/DatePicker.cjs"),g=require("./components/datepicker/validation.cjs"),j=require("./components/datepicker/utils.cjs"),b=require("./components/feedback/Feedback.cjs"),q=require("./components/feedback/presets.cjs"),I=require("./components/flex/Flex.cjs"),T=require("./components/description-list/DescriptionList.cjs"),k=require("./components/expander/Expander.cjs"),C=require("./components/expander/ExpandSection.cjs"),h=require("./components/icon/Icon.cjs"),S=require("./components/icon/icons/animated/ArrowVerticalAnimated.cjs"),v=require("./components/icon/icons/animated/ArrowHorizontalAnimated.cjs"),M=require("./components/icon/icons/animated/PlusRemoveAnimated.cjs"),L=require("./components/icon/icons/ArrowDownIcon.cjs"),f=require("./components/icon/icons/ArrowLeftIcon.cjs"),A=require("./components/icon/icons/ArrowNorthEastIcon.cjs"),E=require("./components/icon/icons/ArrowRightIcon.cjs"),R=require("./components/icon/icons/ArrowUpIcon.cjs"),B=require("./components/icon/icons/CalendarIcon.cjs"),P=require("./components/icon/icons/CheckIcon.cjs"),w=require("./components/icon/icons/ChevronDownIcon.cjs"),F=require("./components/icon/icons/ChevronLeftIcon.cjs"),D=require("./components/icon/icons/ChevronRightIcon.cjs"),N=require("./components/icon/icons/ChevronUpIcon.cjs"),V=require("./components/icon/icons/CloseIcon.cjs"),y=require("./components/icon/icons/CopyIcon.cjs"),O=require("./components/icon/icons/DotsIcon.cjs"),G=require("./components/icon/icons/DragIcon.cjs"),H=require("./components/icon/icons/ErrorIcon.cjs"),W=require("./components/icon/icons/GreenCheckIcon.cjs"),U=require("./components/icon/icons/HamburgerIcon.cjs"),K=require("./components/icon/icons/InfoIcon.cjs"),X=require("./components/icon/icons/LinkIcon.cjs"),_=require("./components/icon/icons/PlusIcon.cjs"),z=require("./components/icon/icons/QuestionIcon.cjs"),Q=require("./components/icon/icons/RedCrossIcon.cjs"),J=require("./components/icon/icons/SearchIcon.cjs"),Y=require("./components/icon/icons/SuccessIcon.cjs"),Z=require("./components/icon/icons/WarningIcon.cjs"),$=require("./components/icon/icons/MinusIcon.cjs"),ee=require("./components/icon/icons/ThumbDownIcon.cjs"),oe=require("./components/icon/icons/ThumbUpIcon.cjs"),re=require("./components/icon/icons/TrashCanIcon.cjs"),se=require("./components/icon/icons/PenIcon.cjs"),te=require("./components/icon-button/IconButton.cjs"),ne=require("./components/image/Image.cjs"),ie=require("./components/input-group/FieldGroup.cjs"),ae=require("./components/input-group/InputGroup.cjs"),ce=require("./components/input-group/Label.cjs"),ue=require("./components/input-group/SupportLabel.cjs"),pe=require("./components/input-panel/CheckboxPanel.cjs"),me=require("./components/input-panel/RadioPanel.cjs"),le=require("./components/input-panel/RadioPanelGroup.cjs"),xe=require("./components/link/Link.cjs"),de=require("./components/link/NavLink.cjs"),ge=require("./components/link-list/LinkList.cjs"),je=require("./components/list/List.cjs"),be=require("./components/list/ListItem.cjs"),qe=require("./components/loader/Loader.cjs"),Ie=require("./components/loader/skeletons/SkeletonAnimation.cjs"),Te=require("./components/loader/skeletons/SkeletonButton.cjs"),ke=require("./components/loader/skeletons/SkeletonCheckboxGroup.cjs"),Ce=require("./components/loader/skeletons/SkeletonElement.cjs"),he=require("./components/loader/skeletons/SkeletonInput.cjs"),Se=require("./components/loader/skeletons/SkeletonRadioButtonGroup.cjs"),ve=require("./components/loader/skeletons/SkeletonTable.cjs"),Me=require("./components/loader/skeletons/SkeletonTextArea.cjs"),Le=require("./components/logo/Logo.cjs"),fe=require("./components/logo/LogoStamp.cjs"),Ae=require("./components/logo/text-paths/ForsikringLevertAvFremtind.cjs"),Ee=require("./components/logo/text-paths/FraSB1ogDNB.cjs"),Re=require("./components/logo/text-paths/InnovasjonFraFremtind.cjs"),Be=require("./components/logo/text-paths/TeknologiFraFremtind.cjs"),Pe=require("./components/logo/text-paths/VartEgetForsikringsselskap.cjs"),we=require("./components/logo/text-paths/VartForsikringsselskap.cjs"),Fe=require("./components/menu/Menu.cjs"),De=require("./components/menu/MenuItem.cjs"),Ne=require("./components/menu/MenuItemCheckbox.cjs"),Ve=require("./components/menu/MenuDivider.cjs"),ye=require("./components/message/Message.cjs"),Oe=require("./components/message/FormErrorMessage.cjs"),Ge=require("./components/modal/Modal.cjs"),He=require("./components/modal/useModal.cjs"),We=require("./components/pagination/Pagination.cjs"),Ue=require("./components/popover/Popover.cjs"),Ke=require("./components/progress-bar/Countdown.cjs"),Xe=require("./components/progress-bar/ProgressBar.cjs"),_e=require("./components/radio-button/RadioButton.cjs"),ze=require("./components/radio-button/RadioButtonGroup.cjs"),Qe=require("./components/radio-button/BaseRadioButton.cjs"),Je=require("./components/select/Select.cjs"),Ye=require("./components/select/NativeSelect.cjs"),Ze=require("./components/summary-table/SummaryTable.cjs"),$e=require("./components/summary-table/SummaryTableRow.cjs"),eo=require("./components/system-message/SystemMessage.cjs"),oo=require("./components/table/DataTable.cjs"),ro=require("./components/table/Table.cjs"),so=require("./components/table/TableBody.cjs"),to=require("./components/table/TableCaption.cjs"),no=require("./components/table/TableCell.cjs"),io=require("./components/table/TableColumn.cjs"),ao=require("./components/table/TableColumnGroup.cjs"),co=require("./components/table/tableContext.cjs"),uo=require("./components/table/tableSectionContext.cjs"),po=require("./components/table/TableFooter.cjs"),mo=require("./components/table/TableHead.cjs"),lo=require("./components/table/TableHeader.cjs"),xo=require("./components/table/TablePagination.cjs"),go=require("./components/table/TableRow.cjs"),jo=require("./components/table/ExpandableTableRow.cjs"),bo=require("./components/table/ExpandableTableRowController.cjs"),qo=require("./components/table/utils.cjs"),Io=require("./components/tabs/NavTab.cjs"),To=require("./components/tabs/NavTabs.cjs"),ko=require("./components/tabs/Tabs.cjs"),Co=require("./components/tabs/TabList.cjs"),ho=require("./components/tabs/Tab.cjs"),So=require("./components/tabs/TabPanel.cjs"),vo=require("./components/tag/Tag.cjs"),Mo=require("./components/text-input/BaseTextArea.cjs"),Lo=require("./components/text-input/BaseTextInput.cjs"),fo=require("./components/text-input/TextArea.cjs"),Ao=require("./components/text-input/TextInput.cjs"),Eo=require("./components/toast/toastContext.cjs"),Ro=require("./components/toggle-switch/ToggleSwitch.cjs"),Bo=require("./components/toggle-switch/ToggleSlider.cjs"),Po=require("./components/tooltip/Tooltip.cjs"),wo=require("./components/tooltip/TooltipContent.cjs"),Fo=require("./components/tooltip/TooltipTrigger.cjs"),Do=require("./components/tooltip/PopupTip.cjs"),No=require("./components/ScreenReaderOnly.cjs"),Vo=require("./core/tokens.cjs"),yo=require("./hooks/useAnimatedDetails/useAnimatedDetails.cjs"),Oo=require("./hooks/useAnimatedHeight/useAnimatedHeight.cjs"),Go=require("./hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs"),Ho=require("./hooks/useAnimatedHeight/useAutoAnimateHeight.cjs"),Wo=require("./hooks/useBrowserPreferences/useBrowserPreferences.cjs"),Uo=require("./hooks/useIntersectionObserver/useIntersectionObserver.cjs"),Ko=require("./hooks/useLocalStorage/useLocalStorage.cjs"),Xo=require("./hooks/useMutationObserver/useMutationObserver.cjs"),_o=require("./hooks/usePreviousValue/usePreviousValue.cjs"),zo=require("./hooks/useProgressiveImg/useProgressiveImg.cjs"),Qo=require("./hooks/useScreen/useScreen.cjs"),Jo=require("./hooks/useScrollIntoView/useScrollIntoView.cjs"),Yo=require("./hooks/useAriaLiveRegion/useAriaLiveRegion.cjs"),Zo=require("./hooks/useClickOutside/useClickOutside.cjs"),$o=require("./hooks/useFocusOutside/useFocusOutside.cjs"),er=require("./hooks/useElementDimensions/useElementDimensions.cjs"),or=require("./hooks/useId/useId.cjs"),rr=require("./hooks/useKeyListener/useKeyListener.cjs"),sr=require("./hooks/useListNavigation/useListNavigation.cjs"),tr=require("./hooks/useSwipeGesture/useSwipeGesture.cjs"),nr=require("../index-hKyqa1PH.cjs"),ir=require("./utilities/formatters/util/formatNumber.cjs"),ar=require("./utilities/formatters/util/parseNumber.cjs"),cr=require("./utilities/formatters/util/registerWithMask.cjs"),ur=require("./utilities/formatters/avstand/formatAvstand.cjs"),pr=require("./utilities/formatters/bytes/formatBytes.cjs"),mr=require("./utilities/formatters/date/formatDate.cjs"),lr=require("./utilities/formatters/fodselsnummer/formatFodselsnummer.cjs"),xr=require("./utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs"),dr=require("./utilities/formatters/kontonummer/formatKontonummer.cjs"),gr=require("./utilities/formatters/kortnummer/formatKortnummer.cjs"),jr=require("./utilities/formatters/telefonnummer/formatTelefonnummer.cjs"),br=require("./utilities/formatters/valuta/formatValuta.cjs"),qr=require("./utilities/getThemeAndDensity.cjs"),Ir=require("./utilities/polymorphism/mergeProps.cjs"),Tr=require("./utilities/polymorphism/mergeRefs.cjs"),kr=require("./utilities/polymorphism/SlotComponent.cjs"),Cr=require("./utilities/validators/isValidEpost/isValidEpost.cjs"),hr=require("./utilities/validators/isValidTelefonnummer/isValidTelefonnummer.cjs"),Sr=require("./utilities/validators/isValidRegistreringsnummer/isValidRegistreringsnummer.cjs"),vr=require("./utilities/validators/isValidChassisnummer/isValidChassisnummer.cjs"),Mr=require("./utilities/validators/isValidDogId/isValidDogId.cjs"),Lr=require("./utilities/validators/isExactLength/isExactLength.cjs"),fr=require("./utilities/validators/isInteger/isInteger.cjs"),Ar=require("./utilities/validators/isValidFodselsnummer/isValidFodselsnummer.cjs"),Er=require("./utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs"),Rr=require("./utilities/validators/isValidName/isValidName.cjs"),Br=require("./utilities/validators/hasMinimumWords/hasMinimumWords.cjs"),Pr=require("./utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs"),wr=require("./utilities/tabListener.cjs"),Fr=require("./utilities/valuePair.cjs");exports.Accordion=e.Accordion,exports.AccordionItem=o.AccordionItem,exports.Breadcrumb=r.Breadcrumb,exports.BreadcrumbItem=s.BreadcrumbItem,exports.Button=t.Button,exports.PrimaryButton=t.PrimaryButton,exports.SecondaryButton=t.SecondaryButton,exports.TertiaryButton=t.TertiaryButton,exports.Card=n.Card,exports.CardImage=i.CardImage,exports.InfoBlock=a.InfoBlock,exports.NavCard=a.NavCard,exports.TaskCard=c.TaskCard,exports.InfoCard=u.InfoCard,exports.Checkbox=p.Checkbox,exports.Combobox=m.Combobox,exports.getComboboxValuePair=m.getComboboxValuePair,exports.CookieConsent=l.CookieConsent,exports.CookieConsentProvider=x.CookieConsentProvider,exports.useCookieConsent=x.useCookieConsent,exports.DatePicker=d.DatePicker,exports.isCorrectFormat=g.isCorrectFormat,exports.isWithinLowerBound=g.isWithinLowerBound,exports.isWithinUpperBound=g.isWithinUpperBound,exports.formatInput=j.formatInput,exports.isBlurTargetOutside=j.isBlurTargetOutside,exports.parseDateString=j.parseDateString,exports.Feedback=b.Feedback,exports.PRESETS=q.PRESETS,exports.Flex=I.Flex,exports.DescriptionDetail=T.DescriptionDetail,exports.DescriptionList=T.DescriptionList,exports.DescriptionTerm=T.DescriptionTerm,exports.Expander=k.Expander,exports.ExpandSection=C.ExpandSection,exports.Icon=h.Icon,exports.ArrowVerticalAnimated=S.ArrowVerticalAnimated,exports.ArrowHorizontalAnimated=v.ArrowHorizontalAnimated,exports.PlusRemoveAnimated=M.PlusRemoveAnimated,exports.ArrowDownIcon=L.ArrowDownIcon,exports.ArrowLeftIcon=f.ArrowLeftIcon,exports.ArrowNorthEastIcon=A.ArrowNorthEastIcon,exports.ArrowRightIcon=E.ArrowRightIcon,exports.ArrowUpIcon=R.ArrowUpIcon,exports.CalendarIcon=B.CalendarIcon,exports.CheckIcon=P.CheckIcon,exports.ChevronDownIcon=w.ChevronDownIcon,exports.ChevronLeftIcon=F.ChevronLeftIcon,exports.ChevronRightIcon=D.ChevronRightIcon,exports.ChevronUpIcon=N.ChevronUpIcon,exports.CloseIcon=V.CloseIcon,exports.CopyIcon=y.CopyIcon,exports.DotsIcon=O.DotsIcon,exports.DragIcon=G.DragIcon,exports.ErrorIcon=H.ErrorIcon,exports.GreenCheckIcon=W.GreenCheckIcon,exports.HamburgerIcon=U.HamburgerIcon,exports.InfoIcon=K.InfoIcon,exports.LinkIcon=X.LinkIcon,exports.PlusIcon=_.PlusIcon,exports.QuestionIcon=z.QuestionIcon,exports.RedCrossIcon=Q.RedCrossIcon,exports.SearchIcon=J.SearchIcon,exports.SuccessIcon=Y.SuccessIcon,exports.WarningIcon=Z.WarningIcon,exports.MinusIcon=$.MinusIcon,exports.ThumbDownIcon=ee.ThumbDownIcon,exports.ThumbUpIcon=oe.ThumbUpIcon,exports.TrashCanIcon=re.TrashCanIcon,exports.PenIcon=se.PenIcon,exports.IconButton=te.IconButton,exports.Image=ne.Image,exports.FieldGroup=ie.FieldGroup,exports.InputGroup=ae.InputGroup,exports.Label=ce.Label,exports.SupportLabel=ue.SupportLabel,exports.CheckboxPanel=pe.CheckboxPanel,exports.RadioPanel=me.RadioPanel,exports.RadioPanelGroup=le.RadioPanelGroup,exports.Link=xe.Link,exports.NavLink=de.NavLink,exports.LinkList=ge.LinkList,exports.List=je.List,exports.OrderedList=je.OrderedList,exports.UnorderedList=je.UnorderedList,exports.CheckListItem=be.CheckListItem,exports.CrossListItem=be.CrossListItem,exports.ListItem=be.ListItem,exports.Loader=qe.Loader,exports.SkeletonAnimation=Ie.SkeletonAnimation,exports.SkeletonButton=Te.SkeletonButton,exports.SkeletonCheckboxGroup=ke.SkeletonCheckboxGroup,exports.SkeletonElement=Ce.SkeletonElement,exports.SkeletonInput=he.SkeletonInput,exports.SkeletonRadioButtonGroup=Se.SkeletonRadioButtonGroup,exports.SkeletonTable=ve.SkeletonTable,exports.SkeletonTableHeader=ve.SkeletonTableHeader,exports.SkeletonTableRow=ve.SkeletonTableRow,exports.SkeletonTextArea=Me.SkeletonTextArea,exports.Logo=Le.Logo,exports.LogoStamp=fe.LogoStamp,exports.ForsikringLevertAvFremtind=Ae.ForsikringLevertAvFremtind,exports.FraSB1ogDNB=Ee.FraSB1ogDNB,exports.InnovasjonFraFremtind=Re.InnovasjonFraFremtind,exports.TeknologiFraFremtind=Be.TeknologiFraFremtind,exports.VartEgetForsikringsselskap=Pe.VartEgetForsikringsselskap,exports.VartForsikringsselskap=we.VartForsikringsselskap,exports.Menu=Fe.Menu,exports.MenuItem=De.MenuItem,exports.MenuItemCheckbox=Ne.MenuItemCheckbox,exports.MenuDivider=Ve.MenuDivider,exports.ErrorMessage=ye.ErrorMessage,exports.InfoMessage=ye.InfoMessage,exports.SuccessMessage=ye.SuccessMessage,exports.WarningMessage=ye.WarningMessage,exports.FormErrorMessage=Oe.FormErrorMessage,exports.Modal=Ge.Modal,exports.ModalActions=Ge.ModalActions,exports.ModalBody=Ge.ModalBody,exports.ModalCloseButton=Ge.ModalCloseButton,exports.ModalContainer=Ge.ModalContainer,exports.ModalHeader=Ge.ModalHeader,exports.ModalOverlay=Ge.ModalOverlay,exports.ModalTitle=Ge.ModalTitle,exports.useModal=He.useModal,exports.Pagination=We.Pagination,exports.Popover=Ue.Popover,exports.Countdown=Ke.Countdown,exports.ProgressBar=Xe.ProgressBar,exports.RadioButton=_e.RadioButton,exports.RadioButtonGroup=ze.RadioButtonGroup,exports.BaseRadioButton=Qe.BaseRadioButton,exports.Select=Je.Select,exports.NativeSelect=Ye.NativeSelect,exports.SummaryTable=Ze.SummaryTable,exports.SummaryTableRow=$e.SummaryTableRow,exports.ErrorSystemMessage=eo.ErrorSystemMessage,exports.InfoSystemMessage=eo.InfoSystemMessage,exports.SuccessSystemMessage=eo.SuccessSystemMessage,exports.WarningSystemMessage=eo.WarningSystemMessage,exports.DataTable=oo.DataTable,exports.Table=ro.Table,exports.TableBody=so.TableBody,exports.TableCaption=to.TableCaption,exports.TableCell=no.TableCell,exports.TableColumn=io.TableColumn,exports.TableColumnGroup=ao.TableColumnGroup,exports.TableContextProvider=co.TableContextProvider,exports.useTableContext=co.useTableContext,exports.TableSectionContextProvider=uo.TableSectionContextProvider,exports.useTableSectionContext=uo.useTableSectionContext,exports.TableFooter=po.TableFooter,exports.TableHead=mo.TableHead,exports.TableHeader=lo.TableHeader,exports.TablePagination=xo.TablePagination,exports.TableRow=go.TableRow,exports.ExpandableTableRow=jo.ExpandableTableRow,exports.ExpandableTableRowController=bo.ExpandableTableRowController,exports.useSortableTableHeader=qo.useSortableTableHeader,exports.NavTab=Io.NavTab,exports.NavTabs=To.NavTabs,exports.Tabs=ko.Tabs,exports.TabList=Co.TabList,exports.Tab=ho.Tab,exports.TabPanel=So.TabPanel,exports.ErrorTag=vo.ErrorTag,exports.InfoTag=vo.InfoTag,exports.SuccessTag=vo.SuccessTag,exports.Tag=vo.Tag,exports.WarningTag=vo.WarningTag,exports.BaseTextArea=Mo.BaseTextArea,exports.BaseTextInput=Lo.BaseTextInput,exports.TextArea=fo.TextArea,exports.TextInput=Ao.TextInput,exports.ToastProvider=Eo.ToastProvider,exports.useToast=Eo.useToast,exports.ToggleSwitch=Ro.ToggleSwitch,exports.ToggleSlider=Bo.ToggleSlider,exports.Tooltip=Po.Tooltip,exports.TooltipContent=wo.TooltipContent,exports.TooltipTrigger=Fo.TooltipTrigger,exports.PopupTip=Do.PopupTip,exports.ScreenReaderOnly=No.ScreenReaderOnly,exports.tokens=Vo,exports.useAnimatedDetails=yo.useAnimatedDetails,exports.useAnimatedHeight=Oo.useAnimatedHeight,exports.useAnimatedHeightBetween=Go.useAnimatedHeightBetween,exports.useAutoAnimatedHeight=Ho.useAutoAnimatedHeight,exports.useBrowserPreferences=Wo.useBrowserPreferences,exports.useIntersectionObserver=Uo.useIntersectionObserver,exports.useLocalStorage=Ko.useLocalStorage,exports.useMutationObserver=Xo.useMutationObserver,exports.usePreviousValue=_o.usePreviousValue,exports.useProgressiveImg=zo.useProgressiveImg,exports.useScreen=Qo.useScreen,exports.useScrollIntoView=Jo.useScrollIntoView,exports.useAriaLiveRegion=Yo.useAriaLiveRegion,exports.useClickOutside=Zo.useClickOutside,exports.useFocusOutside=$o.useFocusOutside,exports.useElementDimensions=er.useElementDimensions,exports.useId=or.useId,exports.useKeyListener=rr.useKeyListener,exports.useListNavigation=sr.useListNavigation,exports.useSwipeGesture=tr.useSwipeGesture,exports.unicode=nr.unicode,exports.formatNumber=ir.formatNumber,exports.parseNumber=ar.parseNumber,exports.registerWithFodselsnummerMask=cr.registerWithFodselsnummerMask,exports.registerWithKontonummerMask=cr.registerWithKontonummerMask,exports.registerWithKortnummerMask=cr.registerWithKortnummerMask,exports.registerWithMasks=cr.registerWithMasks,exports.registerWithTelefonnummerMask=cr.registerWithTelefonnummerMask,exports.formatAvstand=ur.formatAvstand,exports.formatBytes=pr.formatBytes,exports.formatDate=mr.formatDate,exports.FODSELSNUMMER_REGEX=lr.FODSELSNUMMER_REGEX,exports.formatFodselsnummer=lr.formatFodselsnummer,exports.ORGANISASJONSNUMMER_REGEX=xr.ORGANISASJONSNUMMER_REGEX,exports.formatOrganisasjonsnummer=xr.formatOrganisasjonsnummer,exports.KONTONUMMER_REGEX=dr.KONTONUMMER_REGEX,exports.formatKontonummer=dr.formatKontonummer,exports.KORTNUMMER_REGEX=gr.KORTNUMMER_REGEX,exports.formatKortnummer=gr.formatKortnummer,exports.TELEFONNUMMER_REGEX=jr.TELEFONNUMMER_REGEX,exports.formatTelefonnummer=jr.formatTelefonnummer,exports.formatValuta=br.formatValuta,exports.getThemeAndDensity=qr.getThemeAndDensity,exports.mergeProps=Ir.mergeProps,exports.mergeRefs=Tr.mergeRefs,exports.SlotComponent=kr.SlotComponent,exports.isValidEpost=Cr.isValidEpost,exports.isValidTelefonnummer=hr.isValidTelefonnummer,exports.isValidRegistreringsnummer=Sr.isValidRegistreringsnummer,exports.isValidChassisnummer=vr.isValidChassisnummer,exports.isValidDogId=Mr.isValidDogId,exports.isExactLength=Lr.isExactLength,exports.isInteger=fr.isInteger,exports.isValidFodselsnummer=Ar.isValidFodselsnummer,exports.isValidOrganisasjonsnummer=Er.isValidOrganisasjonsnummer,exports.isValidName=Rr.isValidName,exports.hasMinimumWords=Br.hasMinimumWords,exports.hasNoIllegalCharacters=Pr.hasNoIllegalCharacters,exports.initTabListener=wr.initTabListener,exports.getValuePair=Fr.getValuePair;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,2 @@
1
- export type { BreadcrumbProps } from './Breadcrumb.js';
2
- export { Breadcrumb } from './Breadcrumb.js';
3
- export type { BreadcrumbItemProps } from './BreadcrumbItem.js';
4
- export { BreadcrumbItem } from './BreadcrumbItem.js';
1
+ export { Breadcrumb, type BreadcrumbProps } from './Breadcrumb.js';
2
+ export { BreadcrumbItem, type BreadcrumbItemProps } from './BreadcrumbItem.js';
@@ -1,2 +1,2 @@
1
1
  export { Button, PrimaryButton, SecondaryButton, TertiaryButton, } from './Button.js';
2
- export type { ButtonProps, ButtonVariant } from './types.js';
2
+ export type { ButtonProps, ButtonVariant, IconOptions, IconPosition, } from './types.js';
@@ -3,7 +3,7 @@ import { PolymorphicPropsWithRef } from '../../utilities/polymorphism/polymorphi
3
3
  export declare const buttonVariants: readonly ["primary", "secondary", "tertiary", "ghost"];
4
4
  export type ButtonVariant = (typeof buttonVariants)[number];
5
5
  export type IconPosition = "left" | "right";
6
- type IconOptions<T extends React.ElementType> = {
6
+ export type IconOptions<T extends React.ElementType> = {
7
7
  iconPosition?: never;
8
8
  icon?: never;
9
9
  children: React.ComponentPropsWithoutRef<T>["children"];
@@ -40,4 +40,3 @@ export type ButtonProps<ElementType extends React.ElementType> = PolymorphicProp
40
40
  iconRight?: React.ReactNode;
41
41
  } & IconOptions<ElementType>>;
42
42
  export type ButtonComponent = <ElementType extends React.ElementType = "button">(props: ButtonProps<ElementType>) => React.ReactElement | null;
43
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../src/components/button/types.ts"],"sourcesContent":["import { Density } from \"../../core/types.js\";\nimport { PolymorphicPropsWithRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const buttonVariants = [\n \"primary\",\n \"secondary\",\n \"tertiary\",\n \"ghost\",\n] as const;\nexport type ButtonVariant = (typeof buttonVariants)[number];\nexport type IconPosition = \"left\" | \"right\";\n\ntype IconOptions<T extends React.ElementType> =\n // Hvis ikke knappen har ikon, MÅ den ha children:\n | {\n iconPosition?: never;\n icon?: never;\n children: React.ComponentPropsWithoutRef<T>[\"children\"];\n }\n | {\n /**\n * Plasseringen av ikonet\n * @default \"left\"\n */\n iconPosition?: IconPosition;\n /**\n * Hvilket ikon som skal vises i knappen\n */\n icon: React.ReactElement;\n };\n\nexport type ButtonProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<\n ElementType,\n {\n density?: Density;\n /**\n * Hvilken variant av knappen skal vises\n * @default \"secondary\"\n */\n variant?: ButtonVariant;\n className?: string;\n loader?: {\n showLoader: boolean;\n textDescription: string;\n };\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"left\"`\n */\n iconLeft?: React.ReactNode;\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"right\"`\n */\n iconRight?: React.ReactNode;\n } & IconOptions<ElementType>\n >;\n\nexport type ButtonComponent = <\n ElementType extends React.ElementType = \"button\",\n>(\n props: ButtonProps<ElementType>,\n) => React.ReactElement | null;\n"],"names":["buttonVariants"],"mappings":"AAGO,MAAMA,EAAiB,CAC1B,UACA,YACA,WACA"}
1
+ {"version":3,"file":"types.js","sources":["../../../../src/components/button/types.ts"],"sourcesContent":["import { Density } from \"../../core/types.js\";\nimport { PolymorphicPropsWithRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const buttonVariants = [\n \"primary\",\n \"secondary\",\n \"tertiary\",\n \"ghost\",\n] as const;\nexport type ButtonVariant = (typeof buttonVariants)[number];\nexport type IconPosition = \"left\" | \"right\";\n\nexport type IconOptions<T extends React.ElementType> =\n // Hvis ikke knappen har ikon, MÅ den ha children:\n | {\n iconPosition?: never;\n icon?: never;\n children: React.ComponentPropsWithoutRef<T>[\"children\"];\n }\n | {\n /**\n * Plasseringen av ikonet\n * @default \"left\"\n */\n iconPosition?: IconPosition;\n /**\n * Hvilket ikon som skal vises i knappen\n */\n icon: React.ReactElement;\n };\n\nexport type ButtonProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<\n ElementType,\n {\n density?: Density;\n /**\n * Hvilken variant av knappen skal vises\n * @default \"secondary\"\n */\n variant?: ButtonVariant;\n className?: string;\n loader?: {\n showLoader: boolean;\n textDescription: string;\n };\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"left\"`\n */\n iconLeft?: React.ReactNode;\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"right\"`\n */\n iconRight?: React.ReactNode;\n } & IconOptions<ElementType>\n >;\n\nexport type ButtonComponent = <\n ElementType extends React.ElementType = \"button\",\n>(\n props: ButtonProps<ElementType>,\n) => React.ReactElement | null;\n"],"names":["buttonVariants"],"mappings":"AAGO,MAAMA,EAAiB,CAC1B,UACA,YACA,WACA"}
@@ -1,20 +1,12 @@
1
1
  import { AnchorHTMLAttributes, ElementType, FC } from 'react';
2
2
  import { Density, WithChildren } from '../../core/types.js';
3
3
  import { ImageProps } from '../image/Image.js';
4
- import { PaddingOptions } from './types.js';
5
- export type TagType = "success" | "warning" | "info" | "error";
4
+ import { CardTag, PaddingOptions } from './types.js';
6
5
  /**
7
6
  * Bruk denne komponenten for å legge til ekstra informasjon i NavCard.
8
7
  * Innholdet blir rendret med skillelinje, og tekststil "small"
9
8
  */
10
9
  export declare const InfoBlock: FC<WithChildren>;
11
- interface CardTag {
12
- /**
13
- * @default <none> Rendres som nøytral tag
14
- */
15
- type?: TagType;
16
- text: string;
17
- }
18
10
  export interface NavCardProps extends PaddingOptions, AnchorHTMLAttributes<HTMLAnchorElement> {
19
11
  tag?: CardTag | Array<CardTag>;
20
12
  title: string;
@@ -32,4 +24,3 @@ export interface NavCardProps extends PaddingOptions, AnchorHTMLAttributes<HTMLA
32
24
  density?: Density;
33
25
  }
34
26
  export declare const NavCard: FC<NavCardProps>;
35
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"NavCard.js","sources":["../../../../src/components/card/NavCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes, ElementType, FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { Image, ImageProps } from \"../image/Image.js\";\nimport {\n ErrorTag,\n InfoTag,\n SuccessTag,\n Tag,\n TagProps,\n WarningTag,\n} from \"../tag/Tag.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport type TagType = \"success\" | \"warning\" | \"info\" | \"error\";\n\n/**\n * Bruk denne komponenten for å legge til ekstra informasjon i NavCard.\n * Innholdet blir rendret med skillelinje, og tekststil \"small\"\n */\nexport const InfoBlock: FC<WithChildren> = ({ children }) => (\n <div className=\"jkl-nav-card__info\">{children}</div>\n);\n\ninterface CardTag {\n /**\n * @default <none> Rendres som nøytral tag\n */\n type?: TagType;\n text: string;\n}\n\nexport interface NavCardProps\n extends PaddingOptions,\n AnchorHTMLAttributes<HTMLAnchorElement> {\n tag?: CardTag | Array<CardTag>;\n title: string;\n href?: string;\n to?: string;\n external?: boolean;\n description?: string;\n image?: Omit<ImageProps, \"className\">;\n className?: string;\n /**\n * Overstyr hvilken komponent som skal brukes, for eksempel hvis du har en Link-komponent fra en router.\n * @default \"a\"\n */\n component?: ElementType;\n density?: Density;\n}\n\nconst getTag = (type?: TagType) => {\n switch (type) {\n case \"info\":\n return InfoTag;\n case \"success\":\n return SuccessTag;\n case \"warning\":\n return WarningTag;\n case \"error\":\n return ErrorTag;\n default:\n return Tag;\n }\n};\nconst NavCardTag = ({\n text,\n type,\n density,\n}: CardTag & Pick<TagProps, \"density\">) => {\n const CardTag = getTag(type);\n return <CardTag density={density}>{text}</CardTag>;\n};\n\nexport const NavCard: FC<NavCardProps> = React.forwardRef<\n HTMLAnchorElement,\n NavCardProps\n>((props, ref) => {\n const {\n component = \"a\",\n padding = \"l\",\n image,\n tag,\n title,\n external,\n description,\n children,\n className,\n density,\n ...rest\n } = props;\n\n const Component = component;\n\n const tagArr = !tag ? undefined : Array.isArray(tag) ? tag : [tag];\n\n return (\n <Component\n ref={ref}\n aria-label={title}\n className={clsx(\"jkl-nav-card\", className)}\n data-density={density}\n {...rest}\n >\n {image && <Image className=\"jkl-nav-card__image\" {...image} />}\n <div\n className=\"jkl-nav-card__content\"\n style={getPaddingStyles(padding)}\n >\n {tagArr && (\n <div className=\"jkl-nav-card__tag-wrapper\">\n {tagArr.map((t, index) => (\n <NavCardTag\n type={t.type}\n text={t.text}\n key={index}\n />\n ))}\n </div>\n )}\n <div>\n <p\n className={clsx(\n \"jkl-nav-card__link\",\n external ? \"jkl-nav-card__link--external\" : \"\",\n )}\n >\n {title}\n </p>\n {description && (\n <p className=\"jkl-nav-card__description jkl-spacing-xs--top\">\n {description}\n </p>\n )}\n </div>\n {children}\n </div>\n </Component>\n );\n});\n\nNavCard.displayName = \"NavCard\";\n"],"names":["InfoBlock","children","jsx","className","NavCardTag","text","type","density","CardTag","InfoTag","SuccessTag","WarningTag","ErrorTag","Tag","getTag","NavCard","React","forwardRef","props","ref","component","padding","image","tag","title","external","description","rest","Component","tagArr","Array","isArray","jsxs","clsx","Image","style","getPaddingStyles","map","t","index","displayName"],"mappings":"4SAqBa,MAAAA,EAA8B,EAAGC,SAAAA,KACzCC,EAAA,MAAA,CAAIC,UAAU,qBAAsBF,SAAAA,IA4CnCG,EAAa,EACfC,KAAAA,EACAC,KAAAA,EACAC,QAAAA,MAEMC,MAAAA,EAnBK,CAACF,IACZ,OAAQA,GACJ,IAAK,OACMG,OAAAA,EACX,IAAK,UACMC,OAAAA,EACX,IAAK,UACMC,OAAAA,EACX,IAAK,QACMC,OAAAA,EACX,QACWC,OAAAA,EACf,EAOgBC,CAAOR,GAChB,OAAAJ,EAACM,EAAQ,CAAAD,QAAAA,EAAmBN,SAAKI,GAAA,EAG/BU,EAA4BC,EAAMC,YAG7C,CAACC,EAAOC,KACA,MACFC,UAAAA,EAAY,IACZC,QAAAA,EAAU,IACVC,MAAAA,EACAC,IAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAzB,SAAAA,EACAE,UAAAA,EACAI,QAAAA,KACGoB,GACHT,EAEEU,EAAYR,EAEZS,EAAUN,EAAkBO,MAAMC,QAAQR,GAAOA,EAAM,CAACA,QAAxC,EAGlB,OAAAS,EAACJ,EAAA,CACGT,IAAAA,EACA,aAAYK,EACZrB,UAAW8B,EAAK,eAAgB9B,GAChC,eAAcI,KACVoB,EAEH1B,SAAA,CAAAqB,GAAUpB,EAAAgC,EAAA,CAAM/B,UAAU,yBAA0BmB,IACrDU,EAAC,MAAA,CACG7B,UAAU,wBACVgC,MAAOC,EAAiBf,GAEvBpB,SAAA,CACG4B,GAAA3B,EAAC,OAAIC,UAAU,4BACVF,WAAOoC,KAAI,CAACC,EAAGC,IACZrC,EAACE,EAAA,CACGE,KAAMgC,EAAEhC,KACRD,KAAMiC,EAAEjC,MACHkC,SAKpB,MACG,CAAAtC,SAAA,CAAAC,EAAC,IAAA,CACGC,UAAW8B,EACP,qBACAR,EAAW,+BAAiC,IAG/CxB,SAAAuB,IAEJE,GACGxB,EAAC,IAAE,CAAAC,UAAU,gDACRF,SACLyB,OAGPzB,OACL,IAKZc,EAAQyB,YAAc"}
1
+ {"version":3,"file":"NavCard.js","sources":["../../../../src/components/card/NavCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes, ElementType, FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { Image, ImageProps } from \"../image/Image.js\";\nimport {\n ErrorTag,\n InfoTag,\n SuccessTag,\n Tag,\n TagProps,\n WarningTag,\n} from \"../tag/Tag.js\";\nimport { CardTag, PaddingOptions, TagType } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\n/**\n * Bruk denne komponenten for å legge til ekstra informasjon i NavCard.\n * Innholdet blir rendret med skillelinje, og tekststil \"small\"\n */\nexport const InfoBlock: FC<WithChildren> = ({ children }) => (\n <div className=\"jkl-nav-card__info\">{children}</div>\n);\n\nexport interface NavCardProps\n extends PaddingOptions,\n AnchorHTMLAttributes<HTMLAnchorElement> {\n tag?: CardTag | Array<CardTag>;\n title: string;\n href?: string;\n to?: string;\n external?: boolean;\n description?: string;\n image?: Omit<ImageProps, \"className\">;\n className?: string;\n /**\n * Overstyr hvilken komponent som skal brukes, for eksempel hvis du har en Link-komponent fra en router.\n * @default \"a\"\n */\n component?: ElementType;\n density?: Density;\n}\n\nconst getTag = (type?: TagType) => {\n switch (type) {\n case \"info\":\n return InfoTag;\n case \"success\":\n return SuccessTag;\n case \"warning\":\n return WarningTag;\n case \"error\":\n return ErrorTag;\n default:\n return Tag;\n }\n};\nconst NavCardTag = ({\n text,\n type,\n density,\n}: CardTag & Pick<TagProps, \"density\">) => {\n const CardTag = getTag(type);\n return <CardTag density={density}>{text}</CardTag>;\n};\n\nexport const NavCard: FC<NavCardProps> = React.forwardRef<\n HTMLAnchorElement,\n NavCardProps\n>((props, ref) => {\n const {\n component = \"a\",\n padding = \"l\",\n image,\n tag,\n title,\n external,\n description,\n children,\n className,\n density,\n ...rest\n } = props;\n\n const Component = component;\n\n const tagArr = !tag ? undefined : Array.isArray(tag) ? tag : [tag];\n\n return (\n <Component\n ref={ref}\n aria-label={title}\n className={clsx(\"jkl-nav-card\", className)}\n data-density={density}\n {...rest}\n >\n {image && <Image className=\"jkl-nav-card__image\" {...image} />}\n <div\n className=\"jkl-nav-card__content\"\n style={getPaddingStyles(padding)}\n >\n {tagArr && (\n <div className=\"jkl-nav-card__tag-wrapper\">\n {tagArr.map((t, index) => (\n <NavCardTag\n type={t.type}\n text={t.text}\n key={index}\n />\n ))}\n </div>\n )}\n <div>\n <p\n className={clsx(\n \"jkl-nav-card__link\",\n external ? \"jkl-nav-card__link--external\" : \"\",\n )}\n >\n {title}\n </p>\n {description && (\n <p className=\"jkl-nav-card__description jkl-spacing-xs--top\">\n {description}\n </p>\n )}\n </div>\n {children}\n </div>\n </Component>\n );\n});\n\nNavCard.displayName = \"NavCard\";\n"],"names":["InfoBlock","children","jsx","className","NavCardTag","text","type","density","CardTag","InfoTag","SuccessTag","WarningTag","ErrorTag","Tag","getTag","NavCard","React","forwardRef","props","ref","component","padding","image","tag","title","external","description","rest","Component","tagArr","Array","isArray","jsxs","clsx","Image","style","getPaddingStyles","map","t","index","displayName"],"mappings":"4SAmBa,MAAAA,EAA8B,EAAGC,SAAAA,KACzCC,EAAA,MAAA,CAAIC,UAAU,qBAAsBF,SAAAA,IAoCnCG,EAAa,EACfC,KAAAA,EACAC,KAAAA,EACAC,QAAAA,MAEMC,MAAAA,EAnBK,CAACF,IACZ,OAAQA,GACJ,IAAK,OACMG,OAAAA,EACX,IAAK,UACMC,OAAAA,EACX,IAAK,UACMC,OAAAA,EACX,IAAK,QACMC,OAAAA,EACX,QACWC,OAAAA,EACf,EAOgBC,CAAOR,GACfE,OAAAA,EAAAA,EAAA,CAAQD,QAAAA,EAAmBN,SAAKI,GAAA,EAG/BU,EAA4BC,EAAMC,YAG7C,CAACC,EAAOC,KACA,MACFC,UAAAA,EAAY,IACZC,QAAAA,EAAU,IACVC,MAAAA,EACAC,IAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAzB,SAAAA,EACAE,UAAAA,EACAI,QAAAA,KACGoB,GACHT,EAEEU,EAAYR,EAEZS,EAAUN,EAAkBO,MAAMC,QAAQR,GAAOA,EAAM,CAACA,QAAxC,EAGlB,OAAAS,EAACJ,EAAA,CACGT,IAAAA,EACA,aAAYK,EACZrB,UAAW8B,EAAK,eAAgB9B,GAChC,eAAcI,KACVoB,EAEH1B,SAAA,CAAAqB,GAAUpB,EAAAgC,EAAA,CAAM/B,UAAU,yBAA0BmB,IACrDU,EAAC,MAAA,CACG7B,UAAU,wBACVgC,MAAOC,EAAiBf,GAEvBpB,SAAA,CACG4B,GAAA3B,EAAC,OAAIC,UAAU,4BACVF,WAAOoC,KAAI,CAACC,EAAGC,IACZrC,EAACE,EAAA,CACGE,KAAMgC,EAAEhC,KACRD,KAAMiC,EAAEjC,MACHkC,SAKpB,MACG,CAAAtC,SAAA,CAAAC,EAAC,IAAA,CACGC,UAAW8B,EACP,qBACAR,EAAW,+BAAiC,IAG/CxB,SAAAuB,IAEJE,GACGxB,EAAC,IAAE,CAAAC,UAAU,gDACRF,SACLyB,OAGPzB,OACL,IAKZc,EAAQyB,YAAc"}
@@ -1,5 +1,5 @@
1
- export { Card } from './Card.js';
2
- export { CardImage } from './CardImage.js';
1
+ export { Card, type CardProps, type CardPadding, type CardVariant, } from './Card.js';
2
+ export { CardImage, type CardImageProps } from './CardImage.js';
3
3
  export { NavCard, InfoBlock, type NavCardProps } from './NavCard.js';
4
4
  export { TaskCard, type TaskCardProps } from './TaskCard.js';
5
5
  export { InfoCard, type InfoCardProps } from './InfoCard.js';
@@ -41,4 +41,12 @@ export interface PaddingOptions {
41
41
  */
42
42
  padding?: BasePadding | PaddingShorthand;
43
43
  }
44
+ export type TagType = "success" | "warning" | "info" | "error";
45
+ export type CardTag = {
46
+ /**
47
+ * @default <none> Rendres som nøytral tag
48
+ */
49
+ type?: TagType;
50
+ text: string;
51
+ };
44
52
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../src/components/card/types.ts"],"sourcesContent":["export const SPACING_STEPS = [\n \"0\",\n \"m\",\n \"l\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n \"4xl\",\n] as const;\ntype SpacingSteps = typeof SPACING_STEPS;\nexport const NEW_SPACING_STEPS = [\n \"0\",\n \"16\",\n \"24\",\n \"40\",\n \"64\",\n \"104\",\n \"168\",\n] as const;\ntype NewSpacingSteps = typeof NEW_SPACING_STEPS;\nexport type BasePadding =\n | SpacingSteps[0 | 1 | 2 | 3]\n | NewSpacingSteps[0 | 1 | 2 | 3];\nexport type OldSpacingStep = SpacingSteps[number];\nexport type NewSpacingStep = NewSpacingSteps[number];\nexport type SpacingStep = SpacingSteps[number] | NewSpacingSteps[number];\n\nexport function isOldSpacingStep(value: SpacingStep): value is OldSpacingStep {\n return SPACING_STEPS.includes(value as OldSpacingStep);\n}\n\nexport interface PaddingShorthand {\n /**\n * Legger til ekstra rom i toppen av kortet, fra spacing-skalaen til Jøkul.\n * Ikke bruk ekstra topPadding sammen med tag. Verdier lavere enn for venstre og høyre padding\n * blir ignorert.\n * @default \"24\"\n */\n top?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n right?: BasePadding;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n * Verdier lavere enn for venstre og høyre padding blir ignorert.\n * @default \"24\"\n */\n bottom?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n left?: BasePadding;\n}\n\nexport interface PaddingOptions {\n /**\n * Hvor mye rom skal det være rundt innholdet i kortet?\n * @default \"24\"\n */\n padding?: BasePadding | PaddingShorthand;\n}\n"],"names":["SPACING_STEPS","NEW_SPACING_STEPS","isOldSpacingStep","value","includes"],"mappings":"AAAO,MAAMA,EAAgB,CACzB,IACA,IACA,IACA,KACA,MACA,MACA,OAGSC,EAAoB,CAC7B,IACA,KACA,KACA,KACA,KACA,MACA,OAUG,SAASC,EAAiBC,GACtBH,OAAAA,EAAcI,SAASD,EAClC"}
1
+ {"version":3,"file":"types.js","sources":["../../../../src/components/card/types.ts"],"sourcesContent":["export const SPACING_STEPS = [\n \"0\",\n \"m\",\n \"l\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n \"4xl\",\n] as const;\ntype SpacingSteps = typeof SPACING_STEPS;\nexport const NEW_SPACING_STEPS = [\n \"0\",\n \"16\",\n \"24\",\n \"40\",\n \"64\",\n \"104\",\n \"168\",\n] as const;\ntype NewSpacingSteps = typeof NEW_SPACING_STEPS;\nexport type BasePadding =\n | SpacingSteps[0 | 1 | 2 | 3]\n | NewSpacingSteps[0 | 1 | 2 | 3];\nexport type OldSpacingStep = SpacingSteps[number];\nexport type NewSpacingStep = NewSpacingSteps[number];\nexport type SpacingStep = SpacingSteps[number] | NewSpacingSteps[number];\n\nexport function isOldSpacingStep(value: SpacingStep): value is OldSpacingStep {\n return SPACING_STEPS.includes(value as OldSpacingStep);\n}\n\nexport interface PaddingShorthand {\n /**\n * Legger til ekstra rom i toppen av kortet, fra spacing-skalaen til Jøkul.\n * Ikke bruk ekstra topPadding sammen med tag. Verdier lavere enn for venstre og høyre padding\n * blir ignorert.\n * @default \"24\"\n */\n top?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n right?: BasePadding;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n * Verdier lavere enn for venstre og høyre padding blir ignorert.\n * @default \"24\"\n */\n bottom?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n left?: BasePadding;\n}\n\nexport interface PaddingOptions {\n /**\n * Hvor mye rom skal det være rundt innholdet i kortet?\n * @default \"24\"\n */\n padding?: BasePadding | PaddingShorthand;\n}\n\nexport type TagType = \"success\" | \"warning\" | \"info\" | \"error\";\n\nexport type CardTag = {\n /**\n * @default <none> Rendres som nøytral tag\n */\n type?: TagType;\n text: string;\n};\n"],"names":["SPACING_STEPS","NEW_SPACING_STEPS","isOldSpacingStep","value","includes"],"mappings":"AAAO,MAAMA,EAAgB,CACzB,IACA,IACA,IACA,KACA,MACA,MACA,OAGSC,EAAoB,CAC7B,IACA,KACA,KACA,KACA,KACA,MACA,OAUG,SAASC,EAAiBC,GACtBH,OAAAA,EAAcI,SAASD,EAClC"}
@@ -8,7 +8,7 @@ export type ComboboxValuePair = ValuePair & {
8
8
  isMarked?: boolean;
9
9
  };
10
10
  export declare function getComboboxValuePair(item: string | ComboboxValuePair): ComboboxValuePair;
11
- interface PartialChangeEvent extends Partial<Omit<ChangeEvent<HTMLElement>, "target">> {
11
+ export interface ComboboxPartialChangeEvent extends Partial<Omit<ChangeEvent<HTMLElement>, "target">> {
12
12
  type: "change" | "blur";
13
13
  target: {
14
14
  name: string;
@@ -16,8 +16,8 @@ interface PartialChangeEvent extends Partial<Omit<ChangeEvent<HTMLElement>, "tar
16
16
  selectedOptions: Array<ValuePair>;
17
17
  };
18
18
  }
19
- type ChangeEventHandler = (event: PartialChangeEvent) => void;
20
- interface ComboboxProps extends InputGroupProps {
19
+ export type ComboboxChangeEventHandler = (event: ComboboxPartialChangeEvent) => void;
20
+ export interface ComboboxProps extends InputGroupProps {
21
21
  id?: string;
22
22
  placeholder?: string;
23
23
  labelProps?: Omit<LabelProps, "children" | "density" | "htmlFor" | "standAlone">;
@@ -33,9 +33,8 @@ interface ComboboxProps extends InputGroupProps {
33
33
  className?: string;
34
34
  invalid?: boolean;
35
35
  hasTagHover?: boolean;
36
- onChange: ChangeEventHandler;
37
- onBlur?: ChangeEventHandler;
38
- onFocus?: ChangeEventHandler;
36
+ onChange: ComboboxChangeEventHandler;
37
+ onBlur?: ComboboxChangeEventHandler;
38
+ onFocus?: ComboboxChangeEventHandler;
39
39
  }
40
40
  export declare const Combobox: FC<ComboboxProps>;
41
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sources":["../../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ChangeEvent,\n FC,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Density } from \"../../core/types.js\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { useListNavigation } from \"../../hooks/useListNavigation/useListNavigation.js\";\nimport { ValuePair } from \"../../utilities/valuePair.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup, InputGroupProps } from \"../input-group/InputGroup.js\";\nimport { LabelProps } from \"../input-group/Label.js\";\nimport { Tag } from \"../tag/Tag.js\";\nimport { Tooltip } from \"../tooltip/Tooltip.js\";\nimport { TooltipContent } from \"../tooltip/TooltipContent.js\";\nimport { TooltipTrigger } from \"../tooltip/TooltipTrigger.js\";\n\nexport type ComboboxValuePair = ValuePair & {\n tagLabel?: string;\n isMarked?: boolean;\n};\n\nexport function getComboboxValuePair(\n item: string | ComboboxValuePair,\n): ComboboxValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n\ninterface PartialChangeEvent\n extends Partial<Omit<ChangeEvent<HTMLElement>, \"target\">> {\n type: \"change\" | \"blur\";\n target: {\n name: string;\n value: string;\n selectedOptions: Array<ValuePair>;\n };\n}\n\ntype ChangeEventHandler = (event: PartialChangeEvent) => void;\n\ninterface ComboboxProps extends InputGroupProps {\n id?: string;\n placeholder?: string;\n labelProps?: Omit<\n LabelProps,\n \"children\" | \"density\" | \"htmlFor\" | \"standAlone\"\n >;\n items: Array<ValuePair>;\n noMatchingOption?: string;\n label: string;\n name: string;\n value?: Array<ValuePair>;\n density?: Density;\n width?: string;\n helpLabel?: string;\n errorLabel?: string;\n className?: string;\n invalid?: boolean;\n hasTagHover?: boolean;\n onChange: ChangeEventHandler;\n onBlur?: ChangeEventHandler;\n onFocus?: ChangeEventHandler;\n}\n\nexport const Combobox: FC<ComboboxProps> = ({\n id,\n placeholder,\n items,\n onChange,\n onFocus,\n onBlur,\n value,\n label,\n noMatchingOption,\n labelProps,\n helpLabel,\n errorLabel,\n width,\n density,\n name,\n className,\n invalid,\n hasTagHover,\n}) => {\n const listId = useId(id || \"jkl-combobox\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const inputId = `${listId}_search-input`;\n\n const [selectedValue, setSelectedValue] = useState<\n Array<ComboboxValuePair>\n >(value || []);\n const [isPointingDown, setIsPointingDown] = useState<boolean>(true);\n const [showMenu, setShowMenu] = useState<boolean>(false);\n const [searchValue, setSearchValue] = useState<string>(\"\");\n const [noResults, setNoResults] = useState(false);\n const [marked, setMarked] = useState<boolean>(false);\n\n const searchRef = useRef<HTMLInputElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n\n useEffect(() => {\n setSearchValue(\"\");\n if (showMenu && searchRef.current) {\n searchRef.current.focus();\n }\n }, [showMenu]);\n\n useEffect(() => {\n setSelectedValue((prev) => value || prev);\n }, [value]);\n\n // Funksjon for å stile valgt element\n const isSelected = (option: ValuePair) => {\n if (!selectedValue) {\n return false;\n } else {\n return selectedValue.some((value) => value.value === option.value);\n }\n };\n\n // Fjerne ett eller flere valg\n const removeOption = useCallback(\n (option: string) => {\n return selectedValue.filter((value) => value.value !== option);\n },\n [selectedValue],\n );\n\n const onTagRemove = useCallback(\n (\n e:\n | React.MouseEvent<HTMLButtonElement, globalThis.MouseEvent>\n | React.KeyboardEvent<HTMLInputElement>,\n option: string,\n ) => {\n let newValue = removeOption(option);\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n e.stopPropagation();\n\n if (newValue.length === 0) {\n setMarked(false);\n }\n },\n [removeOption, setSelectedValue, onChange, name, setMarked],\n );\n\n // Håndtere valgt verdi i listen\n const onItemClick = useCallback(\n (option: string) => {\n let newValue: Array<ValuePair>;\n\n if (selectedValue.some((value) => value.value === option)) {\n newValue = removeOption(option);\n } else {\n const item = items.find((i) => i.value === option);\n newValue = [...selectedValue, item as ValuePair];\n }\n searchRef.current?.focus();\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n },\n [selectedValue, setSelectedValue, onChange, name, removeOption, items],\n );\n\n // Funksjon for søk\n const onSearch = (e: {\n target: { value: React.SetStateAction<string> };\n }) => {\n searchRef.current?.focus();\n setShowMenu(true);\n setSearchValue(e.target.value);\n };\n\n const options = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n const filteredOptions = items.filter(\n (option) =>\n option.label.toLowerCase().indexOf(searchValue.toLowerCase()) >=\n 0,\n );\n\n setNoResults(filteredOptions.length === 0);\n\n return filteredOptions;\n }, [searchValue, items]);\n\n // Det første elementet i listen skal være aktivt fram til brukeren klikker på noe annet\n const [activeDescendant, setActiveDescendant] = useState<\n string | undefined\n >(options[0]?.value ? `${listId}-${options[0]?.value}` : undefined);\n\n // Håndtere arrow-state\n useEffect(() => {\n if (showMenu) {\n setIsPointingDown(false);\n } else {\n setIsPointingDown(true);\n }\n }, [showMenu]);\n\n // Lukk meny med ESC\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && showMenu) {\n setShowMenu(false);\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\" && showMenu) {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShowMenu, showMenu]);\n\n // Fokushåndtering\n const handleFocusPlacement = useCallback((isOpen: boolean) => {\n if (isOpen) {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, []);\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({\n type: \"change\",\n target: {\n name,\n value: selectedValue?.[0].value || \"\",\n selectedOptions: selectedValue,\n },\n });\n }\n focusInsideRef.current = true;\n setShowMenu(true);\n }\n }, [onFocus, selectedValue, name]);\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(showMenu, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n\n const handleBlur = useCallback(\n (\n e: FocusEvent<\n HTMLDivElement | HTMLInputElement | HTMLButtonElement\n >,\n ) => {\n const componentRootElement = componentRootElementRef.current;\n const nextFocusIsInsideComponent =\n componentRootElement &&\n componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n setSearchValue(\"\");\n\n if (onBlur) {\n onBlur({\n type: \"blur\",\n target: {\n name,\n value: selectedValue?.[0]?.value || \"\",\n selectedOptions: selectedValue,\n },\n });\n inputRef.current?.dispatchEvent(\n new Event(\"focusout\", { bubbles: true }),\n );\n }\n focusInsideRef.current = false;\n setShowMenu(false);\n }\n },\n [onBlur, name, selectedValue],\n );\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Tastaturnavigasjon\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n const listElement = dropdownRef.current;\n if (listElement) {\n listElement\n .querySelector<HTMLButtonElement>('[role=\"option\"]')\n ?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShowMenu(false);\n }\n\n if ((e.metaKey && e.key === \"a\") || (e.ctrlKey && e.key === \"a\")) {\n e.preventDefault();\n e.stopPropagation();\n const updatedSelectedValue = selectedValue.map((item) => ({\n ...item,\n isMarked: true,\n }));\n setMarked(true);\n setSelectedValue(updatedSelectedValue);\n } else if (e.key === \"Backspace\") {\n e.stopPropagation();\n setMarked(false);\n\n // Sjekk om selectedValue er markert\n const selectedValueIsMarked = selectedValue.some(\n (item) => item.isMarked,\n );\n\n if (selectedValueIsMarked) {\n const updatedSelectedValue = selectedValue.filter(\n (item) => !item.isMarked,\n );\n setSelectedValue(updatedSelectedValue);\n setSearchValue(\"\");\n } else if (selectedValue.length > 0 && searchValue === \"\") {\n // Hvis ingen items er markert, fjern siste valgte item\n onTagRemove(\n e,\n selectedValue[selectedValue.length - 1].value,\n );\n }\n }\n },\n [selectedValue, searchValue, dropdownRef, onTagRemove],\n );\n\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n if (searchRef.current) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey) {\n searchRef.current.focus();\n } else {\n setShowMenu(false);\n searchRef.current.focus();\n }\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector(\n '[role=\"option\"]:not([hidden])',\n );\n if (\n e.currentTarget.id === firstVisible?.id &&\n searchRef.current\n ) {\n searchRef.current.focus();\n }\n }\n }\n },\n [setShowMenu, dropdownRef],\n );\n\n const hasSelection = selectedValue.length >= 1;\n\n return (\n <InputGroup\n label={label}\n id={inputId}\n ref={componentRootElementRef}\n data-testid=\"jkl-combobox\"\n className={clsx(\"jkl-combobox\", className, {\n \"jkl-combobox--invalid\": !!errorLabel || invalid,\n \"jkl-combobox--menu-open\": showMenu,\n \"jkl-combobox--menu-closed\": !showMenu && hasSelection,\n })}\n labelProps={{\n id: labelId,\n ...labelProps,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n density={density}\n render={(inputProps) => (\n <div\n className={clsx(\"jkl-combobox__wrapper\", {\n \"jkl-combobox__wrapper--active-value\": hasSelection,\n })}\n style={{ width }}\n tabIndex={-1}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div\n className=\"jkl-combobox__tags\"\n data-testid=\"jkl-combobox__tags\"\n >\n {selectedValue\n .map(getComboboxValuePair)\n .map((option) => (\n <Tag\n key={option.value}\n className={`jkl-tag ${\n marked && \"jkl-tag__marked\"\n }`}\n data-testid=\"jkl-tag\"\n dismissAction={{\n onClick: (e) => {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n onTagRemove(e, option.value);\n },\n onBlur: handleBlur,\n label: `Fjern ${option.value}`,\n }}\n >\n {hasTagHover ? (\n <Tooltip key={option.value}>\n <TooltipTrigger>\n {\" \"}\n <span\n aria-hidden=\"true\"\n data-testid=\"jkl-tag__content\"\n >\n {option.tagLabel\n ? option.tagLabel\n : option.label}\n </span>\n </TooltipTrigger>\n <TooltipContent>\n {option.label}\n </TooltipContent>\n </Tooltip>\n ) : (\n <span\n aria-hidden=\"true\"\n data-testid=\"jkl-tag__content\"\n >\n {option.tagLabel\n ? option.tagLabel\n : option.label}\n </span>\n )}\n </Tag>\n ))}\n <input\n {...inputProps}\n className=\"jkl-combobox__search-input\"\n onChange={onSearch}\n data-testid=\"jkl-combobox__search-input\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleSearchOnKeyDown}\n value={searchValue}\n ref={searchRef}\n aria-controls={listId}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showMenu}\n placeholder={\n selectedValue.length > 0 ? \"\" : placeholder\n }\n autoComplete=\"off\"\n />\n </div>\n\n <div\n className=\"jkl-combobox__menu\"\n role=\"listbox\"\n ref={dropdownRef}\n id={listId}\n aria-labelledby={labelId}\n aria-multiselectable=\"true\"\n aria-activedescendant={activeDescendant}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={-1}\n >\n {options.map((option, i) => (\n <button\n key={`${listId}-${option.value}`}\n type=\"button\"\n id={`${listId}__${option.value}`}\n aria-selected={isSelected(option)}\n role=\"option\"\n value={option.value}\n onBlur={handleBlur}\n className={`jkl-combobox__option ${\n isSelected(option) &&\n \"jkl-combobox__option--selected\"\n }`}\n data-testid=\"jkl-combobox__option\"\n data-testautoid={`jkl-combobox__option-${i}`}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n setActiveDescendant(\n `${listId}__${option.value}`,\n ); // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#required_javascript_features\n e.stopPropagation();\n onItemClick(option.value);\n setSearchValue(\"\");\n }}\n onMouseOver={handleMouseOver}\n >\n {option.description ? (\n <span>\n {option.label}\n <span className=\"jkl-combobox__option-description\">\n {option.description}\n </span>\n </span>\n ) : (\n option.label\n )}\n {isSelected(option) ? (\n <span>\n <CheckIcon />{\" \"}\n </span>\n ) : null}\n </button>\n ))}\n {noResults && (\n <div className=\"jkl-combobox__no-option\">\n {noMatchingOption}\n </div>\n )}\n </div>\n <div className=\"jkl-combobox__actions\">\n <IconButton\n id={buttonId}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className=\"jkl-combobox__button\"\n data-testid=\"jkl-combobox__button\"\n aria-label={`${\n selectedValue.map((value) => value.label) ||\n \"Velg\"\n },${label}`}\n aria-expanded={showMenu}\n aria-controls={listId}\n role=\"button\"\n onClick={() => setShowMenu(true)}\n onMouseDown={(e) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n <ArrowVerticalAnimated\n pointingDown={isPointingDown}\n />\n </IconButton>\n </div>\n </div>\n )}\n />\n );\n};\nCombobox.displayName = \"Combobox\";\n"],"names":["getComboboxValuePair","item","value","label","Combobox","id","placeholder","items","onChange","onFocus","onBlur","noMatchingOption","labelProps","helpLabel","errorLabel","width","density","name","className","invalid","hasTagHover","listId","useId","generateSuffix","labelId","buttonId","inputId","selectedValue","setSelectedValue","useState","isPointingDown","setIsPointingDown","showMenu","setShowMenu","searchValue","setSearchValue","noResults","setNoResults","marked","setMarked","searchRef","useRef","inputRef","focusInsideRef","useEffect","current","focus","prev","isSelected","option","some","removeOption","useCallback","filter","onTagRemove","e","newValue","type","target","selectedOptions","stopPropagation","length","onItemClick","find","i","_a","onSearch","options","useMemo","filteredOptions","toLowerCase","indexOf","activeDescendant","setActiveDescendant","_b","handleEscape","key","window","addEventListener","removeEventListener","handleFocusPlacement","isOpen","handleFocus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","ref","componentRootElementRef","handleBlur","componentRootElement","contains","relatedTarget","dispatchEvent","Event","bubbles","handleMouseOver","preventScroll","handleSearchOnKeyDown","preventDefault","listElement","querySelector","metaKey","ctrlKey","updatedSelectedValue","map","isMarked","handleOptionOnKeyDown","shiftKey","firstVisible","currentTarget","hasSelection","jsx","InputGroup","clsx","render","inputProps","jsxs","style","tabIndex","children","Tag","dismissAction","onClick","Tooltip","TooltipTrigger","tagLabel","TooltipContent","onKeyDown","role","autoComplete","onMouseOver","description","CheckIcon","IconButton","onMouseDown","ArrowVerticalAnimated","pointingDown","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.js","sources":["../../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ChangeEvent,\n FC,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Density } from \"../../core/types.js\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { useListNavigation } from \"../../hooks/useListNavigation/useListNavigation.js\";\nimport { ValuePair } from \"../../utilities/valuePair.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\nimport { CheckIcon } from \"../icon/icons/CheckIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup, InputGroupProps } from \"../input-group/InputGroup.js\";\nimport { LabelProps } from \"../input-group/Label.js\";\nimport { Tag } from \"../tag/Tag.js\";\nimport { Tooltip } from \"../tooltip/Tooltip.js\";\nimport { TooltipContent } from \"../tooltip/TooltipContent.js\";\nimport { TooltipTrigger } from \"../tooltip/TooltipTrigger.js\";\n\nexport type ComboboxValuePair = ValuePair & {\n tagLabel?: string;\n isMarked?: boolean;\n};\n\nexport function getComboboxValuePair(\n item: string | ComboboxValuePair,\n): ComboboxValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n\nexport interface ComboboxPartialChangeEvent\n extends Partial<Omit<ChangeEvent<HTMLElement>, \"target\">> {\n type: \"change\" | \"blur\";\n target: {\n name: string;\n value: string;\n selectedOptions: Array<ValuePair>;\n };\n}\n\nexport type ComboboxChangeEventHandler = (\n event: ComboboxPartialChangeEvent,\n) => void;\n\nexport interface ComboboxProps extends InputGroupProps {\n id?: string;\n placeholder?: string;\n labelProps?: Omit<\n LabelProps,\n \"children\" | \"density\" | \"htmlFor\" | \"standAlone\"\n >;\n items: Array<ValuePair>;\n noMatchingOption?: string;\n label: string;\n name: string;\n value?: Array<ValuePair>;\n density?: Density;\n width?: string;\n helpLabel?: string;\n errorLabel?: string;\n className?: string;\n invalid?: boolean;\n hasTagHover?: boolean;\n onChange: ComboboxChangeEventHandler;\n onBlur?: ComboboxChangeEventHandler;\n onFocus?: ComboboxChangeEventHandler;\n}\n\nexport const Combobox: FC<ComboboxProps> = ({\n id,\n placeholder,\n items,\n onChange,\n onFocus,\n onBlur,\n value,\n label,\n noMatchingOption,\n labelProps,\n helpLabel,\n errorLabel,\n width,\n density,\n name,\n className,\n invalid,\n hasTagHover,\n}) => {\n const listId = useId(id || \"jkl-combobox\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const inputId = `${listId}_search-input`;\n\n const [selectedValue, setSelectedValue] = useState<\n Array<ComboboxValuePair>\n >(value || []);\n const [isPointingDown, setIsPointingDown] = useState<boolean>(true);\n const [showMenu, setShowMenu] = useState<boolean>(false);\n const [searchValue, setSearchValue] = useState<string>(\"\");\n const [noResults, setNoResults] = useState(false);\n const [marked, setMarked] = useState<boolean>(false);\n\n const searchRef = useRef<HTMLInputElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n\n useEffect(() => {\n setSearchValue(\"\");\n if (showMenu && searchRef.current) {\n searchRef.current.focus();\n }\n }, [showMenu]);\n\n useEffect(() => {\n setSelectedValue((prev) => value || prev);\n }, [value]);\n\n // Funksjon for å stile valgt element\n const isSelected = (option: ValuePair) => {\n if (!selectedValue) {\n return false;\n } else {\n return selectedValue.some((value) => value.value === option.value);\n }\n };\n\n // Fjerne ett eller flere valg\n const removeOption = useCallback(\n (option: string) => {\n return selectedValue.filter((value) => value.value !== option);\n },\n [selectedValue],\n );\n\n const onTagRemove = useCallback(\n (\n e:\n | React.MouseEvent<HTMLButtonElement, globalThis.MouseEvent>\n | React.KeyboardEvent<HTMLInputElement>,\n option: string,\n ) => {\n let newValue = removeOption(option);\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n e.stopPropagation();\n\n if (newValue.length === 0) {\n setMarked(false);\n }\n },\n [removeOption, setSelectedValue, onChange, name, setMarked],\n );\n\n // Håndtere valgt verdi i listen\n const onItemClick = useCallback(\n (option: string) => {\n let newValue: Array<ValuePair>;\n\n if (selectedValue.some((value) => value.value === option)) {\n newValue = removeOption(option);\n } else {\n const item = items.find((i) => i.value === option);\n newValue = [...selectedValue, item as ValuePair];\n }\n searchRef.current?.focus();\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n },\n [selectedValue, setSelectedValue, onChange, name, removeOption, items],\n );\n\n // Funksjon for søk\n const onSearch = (e: {\n target: { value: React.SetStateAction<string> };\n }) => {\n searchRef.current?.focus();\n setShowMenu(true);\n setSearchValue(e.target.value);\n };\n\n const options = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n const filteredOptions = items.filter(\n (option) =>\n option.label.toLowerCase().indexOf(searchValue.toLowerCase()) >=\n 0,\n );\n\n setNoResults(filteredOptions.length === 0);\n\n return filteredOptions;\n }, [searchValue, items]);\n\n // Det første elementet i listen skal være aktivt fram til brukeren klikker på noe annet\n const [activeDescendant, setActiveDescendant] = useState<\n string | undefined\n >(options[0]?.value ? `${listId}-${options[0]?.value}` : undefined);\n\n // Håndtere arrow-state\n useEffect(() => {\n if (showMenu) {\n setIsPointingDown(false);\n } else {\n setIsPointingDown(true);\n }\n }, [showMenu]);\n\n // Lukk meny med ESC\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && showMenu) {\n setShowMenu(false);\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\" && showMenu) {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShowMenu, showMenu]);\n\n // Fokushåndtering\n const handleFocusPlacement = useCallback((isOpen: boolean) => {\n if (isOpen) {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, []);\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({\n type: \"change\",\n target: {\n name,\n value: selectedValue?.[0].value || \"\",\n selectedOptions: selectedValue,\n },\n });\n }\n focusInsideRef.current = true;\n setShowMenu(true);\n }\n }, [onFocus, selectedValue, name]);\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(showMenu, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n\n const handleBlur = useCallback(\n (\n e: FocusEvent<\n HTMLDivElement | HTMLInputElement | HTMLButtonElement\n >,\n ) => {\n const componentRootElement = componentRootElementRef.current;\n const nextFocusIsInsideComponent =\n componentRootElement &&\n componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n setSearchValue(\"\");\n\n if (onBlur) {\n onBlur({\n type: \"blur\",\n target: {\n name,\n value: selectedValue?.[0]?.value || \"\",\n selectedOptions: selectedValue,\n },\n });\n inputRef.current?.dispatchEvent(\n new Event(\"focusout\", { bubbles: true }),\n );\n }\n focusInsideRef.current = false;\n setShowMenu(false);\n }\n },\n [onBlur, name, selectedValue],\n );\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Tastaturnavigasjon\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n const listElement = dropdownRef.current;\n if (listElement) {\n listElement\n .querySelector<HTMLButtonElement>('[role=\"option\"]')\n ?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShowMenu(false);\n }\n\n if ((e.metaKey && e.key === \"a\") || (e.ctrlKey && e.key === \"a\")) {\n e.preventDefault();\n e.stopPropagation();\n const updatedSelectedValue = selectedValue.map((item) => ({\n ...item,\n isMarked: true,\n }));\n setMarked(true);\n setSelectedValue(updatedSelectedValue);\n } else if (e.key === \"Backspace\") {\n e.stopPropagation();\n setMarked(false);\n\n // Sjekk om selectedValue er markert\n const selectedValueIsMarked = selectedValue.some(\n (item) => item.isMarked,\n );\n\n if (selectedValueIsMarked) {\n const updatedSelectedValue = selectedValue.filter(\n (item) => !item.isMarked,\n );\n setSelectedValue(updatedSelectedValue);\n setSearchValue(\"\");\n } else if (selectedValue.length > 0 && searchValue === \"\") {\n // Hvis ingen items er markert, fjern siste valgte item\n onTagRemove(\n e,\n selectedValue[selectedValue.length - 1].value,\n );\n }\n }\n },\n [selectedValue, searchValue, dropdownRef, onTagRemove],\n );\n\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n if (searchRef.current) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey) {\n searchRef.current.focus();\n } else {\n setShowMenu(false);\n searchRef.current.focus();\n }\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector(\n '[role=\"option\"]:not([hidden])',\n );\n if (\n e.currentTarget.id === firstVisible?.id &&\n searchRef.current\n ) {\n searchRef.current.focus();\n }\n }\n }\n },\n [setShowMenu, dropdownRef],\n );\n\n const hasSelection = selectedValue.length >= 1;\n\n return (\n <InputGroup\n label={label}\n id={inputId}\n ref={componentRootElementRef}\n data-testid=\"jkl-combobox\"\n className={clsx(\"jkl-combobox\", className, {\n \"jkl-combobox--invalid\": !!errorLabel || invalid,\n \"jkl-combobox--menu-open\": showMenu,\n \"jkl-combobox--menu-closed\": !showMenu && hasSelection,\n })}\n labelProps={{\n id: labelId,\n ...labelProps,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n density={density}\n render={(inputProps) => (\n <div\n className={clsx(\"jkl-combobox__wrapper\", {\n \"jkl-combobox__wrapper--active-value\": hasSelection,\n })}\n style={{ width }}\n tabIndex={-1}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div\n className=\"jkl-combobox__tags\"\n data-testid=\"jkl-combobox__tags\"\n >\n {selectedValue\n .map(getComboboxValuePair)\n .map((option) => (\n <Tag\n key={option.value}\n className={`jkl-tag ${\n marked && \"jkl-tag__marked\"\n }`}\n data-testid=\"jkl-tag\"\n dismissAction={{\n onClick: (e) => {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n onTagRemove(e, option.value);\n },\n onBlur: handleBlur,\n label: `Fjern ${option.value}`,\n }}\n >\n {hasTagHover ? (\n <Tooltip key={option.value}>\n <TooltipTrigger>\n {\" \"}\n <span\n aria-hidden=\"true\"\n data-testid=\"jkl-tag__content\"\n >\n {option.tagLabel\n ? option.tagLabel\n : option.label}\n </span>\n </TooltipTrigger>\n <TooltipContent>\n {option.label}\n </TooltipContent>\n </Tooltip>\n ) : (\n <span\n aria-hidden=\"true\"\n data-testid=\"jkl-tag__content\"\n >\n {option.tagLabel\n ? option.tagLabel\n : option.label}\n </span>\n )}\n </Tag>\n ))}\n <input\n {...inputProps}\n className=\"jkl-combobox__search-input\"\n onChange={onSearch}\n data-testid=\"jkl-combobox__search-input\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleSearchOnKeyDown}\n value={searchValue}\n ref={searchRef}\n aria-controls={listId}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showMenu}\n placeholder={\n selectedValue.length > 0 ? \"\" : placeholder\n }\n autoComplete=\"off\"\n />\n </div>\n\n <div\n className=\"jkl-combobox__menu\"\n role=\"listbox\"\n ref={dropdownRef}\n id={listId}\n aria-labelledby={labelId}\n aria-multiselectable=\"true\"\n aria-activedescendant={activeDescendant}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={-1}\n >\n {options.map((option, i) => (\n <button\n key={`${listId}-${option.value}`}\n type=\"button\"\n id={`${listId}__${option.value}`}\n aria-selected={isSelected(option)}\n role=\"option\"\n value={option.value}\n onBlur={handleBlur}\n className={`jkl-combobox__option ${\n isSelected(option) &&\n \"jkl-combobox__option--selected\"\n }`}\n data-testid=\"jkl-combobox__option\"\n data-testautoid={`jkl-combobox__option-${i}`}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n setActiveDescendant(\n `${listId}__${option.value}`,\n ); // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#required_javascript_features\n e.stopPropagation();\n onItemClick(option.value);\n setSearchValue(\"\");\n }}\n onMouseOver={handleMouseOver}\n >\n {option.description ? (\n <span>\n {option.label}\n <span className=\"jkl-combobox__option-description\">\n {option.description}\n </span>\n </span>\n ) : (\n option.label\n )}\n {isSelected(option) ? (\n <span>\n <CheckIcon />{\" \"}\n </span>\n ) : null}\n </button>\n ))}\n {noResults && (\n <div className=\"jkl-combobox__no-option\">\n {noMatchingOption}\n </div>\n )}\n </div>\n <div className=\"jkl-combobox__actions\">\n <IconButton\n id={buttonId}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className=\"jkl-combobox__button\"\n data-testid=\"jkl-combobox__button\"\n aria-label={`${\n selectedValue.map((value) => value.label) ||\n \"Velg\"\n },${label}`}\n aria-expanded={showMenu}\n aria-controls={listId}\n role=\"button\"\n onClick={() => setShowMenu(true)}\n onMouseDown={(e) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n <ArrowVerticalAnimated\n pointingDown={isPointingDown}\n />\n </IconButton>\n </div>\n </div>\n )}\n />\n );\n};\nCombobox.displayName = \"Combobox\";\n"],"names":["getComboboxValuePair","item","value","label","Combobox","id","placeholder","items","onChange","onFocus","onBlur","noMatchingOption","labelProps","helpLabel","errorLabel","width","density","name","className","invalid","hasTagHover","listId","useId","generateSuffix","labelId","buttonId","inputId","selectedValue","setSelectedValue","useState","isPointingDown","setIsPointingDown","showMenu","setShowMenu","searchValue","setSearchValue","noResults","setNoResults","marked","setMarked","searchRef","useRef","inputRef","focusInsideRef","useEffect","current","focus","prev","isSelected","option","some","removeOption","useCallback","filter","onTagRemove","e","newValue","type","target","selectedOptions","stopPropagation","length","onItemClick","find","i","_a","onSearch","options","useMemo","filteredOptions","toLowerCase","indexOf","activeDescendant","setActiveDescendant","_b","handleEscape","key","window","addEventListener","removeEventListener","handleFocusPlacement","isOpen","handleFocus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","ref","componentRootElementRef","handleBlur","componentRootElement","contains","relatedTarget","dispatchEvent","Event","bubbles","handleMouseOver","preventScroll","handleSearchOnKeyDown","preventDefault","listElement","querySelector","metaKey","ctrlKey","updatedSelectedValue","map","isMarked","handleOptionOnKeyDown","shiftKey","firstVisible","currentTarget","hasSelection","jsx","InputGroup","clsx","render","inputProps","jsxs","style","tabIndex","children","Tag","dismissAction","onClick","Tooltip","TooltipTrigger","tagLabel","TooltipContent","onKeyDown","role","autoComplete","onMouseOver","description","CheckIcon","IconButton","onMouseDown","ArrowVerticalAnimated","pointingDown","displayName"],"mappings":"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"}
@@ -1 +1 @@
1
- export { Combobox, getComboboxValuePair, type ComboboxValuePair, } from './Combobox.js';
1
+ export { Combobox, getComboboxValuePair, type ComboboxValuePair, type ComboboxProps, type ComboboxChangeEventHandler, type ComboboxPartialChangeEvent, } from './Combobox.js';
@@ -1,5 +1,3 @@
1
+ export { CookieConsent, type CookieConsentProps } from './CookieConsent.js';
2
+ export { CookieConsentProvider, useCookieConsent, type CookieConsentProviderProps, } from './CookieConsentContext.js';
1
3
  export type { AcceptConsentCallback, Consent, ConsentState } from './types.js';
2
- export type { CookieConsentProps } from './CookieConsent.js';
3
- export { CookieConsent } from './CookieConsent.js';
4
- export type { CookieConsentProviderProps } from './CookieConsentContext.js';
5
- export { CookieConsentProvider, useCookieConsent, } from './CookieConsentContext.js';
@@ -1,4 +1,4 @@
1
- export * from './types.js';
2
- export * from './validation.js';
3
- export * from './utils.js';
4
1
  export { DatePicker } from './DatePicker.js';
2
+ export { isCorrectFormat, isWithinLowerBound, isWithinUpperBound, } from './validation.js';
3
+ export { formatInput, parseDateString, isBlurTargetOutside } from './utils.js';
4
+ export { type DatePickerProps, type YearsToShow, type DatePickerChangeEventHandler, type DatePickerFocusEventHandler, type DatePickerBlurEventHandler, type DatePickerKeyDownEventHandler, type DatePickerAction, type ComparisonOptions, } from './types.js';
@@ -1,2 +1,2 @@
1
- import{isCorrectFormat as a,isWithinLowerBound as r,isWithinUpperBound as s}from"./validation.js";import{dayMonthYearRegex as t,formatInput as i,isBlurTargetOutside as e,parseDateString as o}from"./utils.js";import{DatePicker as n}from"./DatePicker.js";export{n as DatePicker,t as dayMonthYearRegex,i as formatInput,e as isBlurTargetOutside,a as isCorrectFormat,r as isWithinLowerBound,s as isWithinUpperBound,o as parseDateString};
1
+ import{DatePicker as r}from"./DatePicker.js";import{isCorrectFormat as s,isWithinLowerBound as a,isWithinUpperBound as i}from"./validation.js";import{formatInput as t,isBlurTargetOutside as e,parseDateString as o}from"./utils.js";export{r as DatePicker,t as formatInput,e as isBlurTargetOutside,s as isCorrectFormat,a as isWithinLowerBound,i as isWithinUpperBound,o as parseDateString};
2
2
  //# sourceMappingURL=index.js.map
@@ -268,3 +268,10 @@ export interface DatePickerProps extends Omit<InputGroupProps, "label" | "childr
268
268
  }
269
269
  export interface DatePickerAction extends Exclude<ButtonHTMLAttributes<HTMLButtonElement>, "disabled"> {
270
270
  }
271
+ export type ComparisonOptions = {
272
+ /**
273
+ * Kontroller om testen skal godkjennes om verdien er lik
274
+ * @default false
275
+ */
276
+ inclusive: boolean;
277
+ };
@@ -1,5 +1,4 @@
1
1
  import { default as React } from 'react';
2
- export declare const dayMonthYearRegex: RegExp;
3
2
  /**
4
3
  * Format a Date object as a string in the format DatePicker expects.
5
4
  *
@@ -1,2 +1,2 @@
1
- const e=/^(\d\d?)[\W](\d\d?)[\W](\d{4}|\d{2})$/,t=/^(\d{4}|\d{2})[\W](\d\d?)[\W](\d\d?)$/;function r(e){return`${`${e.getDate()}`.padStart(2,"0")}.${`${e.getMonth()+1}`.padStart(2,"0")}.${e.getFullYear()}`}function n(r){if(!r)return;const n=(r=>{const n=e.exec(r);if(n)return n.slice(1,4);const a=t.exec(r);if(!a)return;const s=a.slice(1,4);return s.reverse(),s})(r);if(!n)return;const a=parseInt((new Date).toLocaleString("no-NB",{year:"2-digit"})),s=parseInt(n[0],10),d=parseInt(n[1],10)-1,i=parseInt(n[2],10),o=i>99?i:(u=i)>a?u+1900:u+2e3,c=new Date(o,d,s,0,0,0);var u;return c.getMonth()===d&&c.getFullYear()===o?c:void 0}function a(e){if(!e.relatedTarget)return!0;const t=e.target.closest(".jkl-datepicker__input-wrapper");return e.relatedTarget.closest(".jkl-datepicker__input-wrapper")!==t}export{e as dayMonthYearRegex,r as formatInput,a as isBlurTargetOutside,n as parseDateString};
1
+ const t=/^(\d\d?)[\W](\d\d?)[\W](\d{4}|\d{2})$/,e=/^(\d{4}|\d{2})[\W](\d\d?)[\W](\d\d?)$/;function r(t){return`${`${t.getDate()}`.padStart(2,"0")}.${`${t.getMonth()+1}`.padStart(2,"0")}.${t.getFullYear()}`}function n(r){if(!r)return;const n=(r=>{const n=t.exec(r);if(n)return n.slice(1,4);const a=e.exec(r);if(!a)return;const s=a.slice(1,4);return s.reverse(),s})(r);if(!n)return;const a=parseInt((new Date).toLocaleString("no-NB",{year:"2-digit"})),s=parseInt(n[0],10),d=parseInt(n[1],10)-1,i=parseInt(n[2],10),o=i>99?i:(u=i)>a?u+1900:u+2e3,c=new Date(o,d,s,0,0,0);var u;return c.getMonth()===d&&c.getFullYear()===o?c:void 0}function a(t){if(!t.relatedTarget)return!0;const e=t.target.closest(".jkl-datepicker__input-wrapper");return t.relatedTarget.closest(".jkl-datepicker__input-wrapper")!==e}export{r as formatInput,a as isBlurTargetOutside,n as parseDateString};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/components/datepicker/utils.ts"],"sourcesContent":["import React from \"react\";\n\nexport const dayMonthYearRegex = /^(\\d\\d?)[\\W](\\d\\d?)[\\W](\\d{4}|\\d{2})$/;\nconst yearMonthDayRegex = /^(\\d{4}|\\d{2})[\\W](\\d\\d?)[\\W](\\d\\d?)$/;\n\n/**\n * Format a Date object as a string in the format DatePicker expects.\n *\n * @param date the Date object to format\n * @return returns a date string with \"dd.mm.yyyy\"-format\n */\nexport function formatInput(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n return `${day}.${month}.${date.getFullYear()}`;\n}\n\n/**\n * Get the date segments from a string of unknown format\n *\n * @param input date as a string with unknown format\n * @returns an array of string elements [day, month, year]\n */\nconst getDateSegmentsFromString = (input: string): string[] | undefined => {\n const dayMonthYear = dayMonthYearRegex.exec(input);\n\n if (dayMonthYear) {\n return dayMonthYear.slice(1, 4);\n }\n\n const yearMonthDay = yearMonthDayRegex.exec(input);\n\n if (!yearMonthDay) {\n return undefined;\n }\n\n // reverse to get the correct ordering\n const slicedDateSegments = yearMonthDay.slice(1, 4);\n slicedDateSegments.reverse();\n\n return slicedDateSegments;\n};\n\n/**\n * Convert a date string to a Date object\n *\n * @param dateString date as string with format dd.mm.yyyy\n * @return a Date object representing the given date\n */\nexport function parseDateString(dateString?: string): Date | undefined {\n if (!dateString) {\n return undefined;\n }\n\n const inputDateSegments = getDateSegmentsFromString(dateString);\n\n if (!inputDateSegments) {\n return undefined;\n }\n\n const currentTwoDigitYear = parseInt(\n new Date().toLocaleString(\"no-NB\", { year: \"2-digit\" }),\n );\n const parseTwoDigitYear = (year: number) =>\n year > currentTwoDigitYear ? year + 1900 : year + 2000;\n\n const day = parseInt(inputDateSegments[0], 10);\n const month = parseInt(inputDateSegments[1], 10) - 1;\n const yearIn = parseInt(inputDateSegments[2], 10);\n const year = yearIn > 99 ? yearIn : parseTwoDigitYear(yearIn);\n\n const generatedDate = new Date(year, month, day, 0, 0, 0);\n // Days can \"overflow\" to next month/year in Date(). Return undefined if it does:\n return generatedDate.getMonth() === month &&\n generatedDate.getFullYear() === year\n ? generatedDate\n : undefined;\n}\n\n/**\n * Hjelpefunksjon for å se om en onBlur går utenfor DatePicker,\n * eller om den går til et interaktivt element inni DatePickeren.\n * @param {React.FocusEvent<HTMLButtonElement | HTMLInputElement>} e - Eventet fra onBlur og action.onBlur\n * @returns {boolean} true hvis e.relatedTarget er utenfor DatePicker\n */\nexport function isBlurTargetOutside(\n e: React.FocusEvent<HTMLButtonElement | HTMLInputElement>,\n): boolean {\n if (!e.relatedTarget) {\n return true;\n }\n\n const targetRoot = e.target.closest(\".jkl-datepicker__input-wrapper\");\n const relatedTargetRoot = e.relatedTarget.closest(\n \".jkl-datepicker__input-wrapper\",\n );\n\n return relatedTargetRoot !== targetRoot;\n}\n"],"names":["dayMonthYearRegex","yearMonthDayRegex","formatInput","date","getDate","padStart","getMonth","getFullYear","parseDateString","dateString","inputDateSegments","input","dayMonthYear","exec","slice","yearMonthDay","slicedDateSegments","reverse","getDateSegmentsFromString","currentTwoDigitYear","parseInt","Date","toLocaleString","year","day","month","yearIn","generatedDate","isBlurTargetOutside","e","relatedTarget","targetRoot","target","closest"],"mappings":"AAEO,MAAMA,EAAoB,wCAC3BC,EAAoB,wCAQnB,SAASC,EAAYC,GAGxB,MAAO,GAFK,GAAGA,EAAKC,YAAYC,SAAS,EAAG,QAC9B,GAAGF,EAAKG,WAAa,IAAID,SAAS,EAAG,QACzBF,EAAKI,eACnC,CAkCO,SAASC,EAAgBC,GAC5B,IAAKA,EACM,OAGLC,MAAAA,EA/BwB,CAACC,IACzBC,MAAAA,EAAeZ,EAAkBa,KAAKF,GAExCC,GAAAA,EACOA,OAAAA,EAAaE,MAAM,EAAG,GAG3BC,MAAAA,EAAed,EAAkBY,KAAKF,GAE5C,IAAKI,EACM,OAIX,MAAMC,EAAqBD,EAAaD,MAAM,EAAG,GACjDE,OAAAA,EAAmBC,UAEZD,CAAAA,EAcmBE,CAA0BT,GAEpD,IAAKC,EACM,OAGX,MAAMS,EAAsBC,UACxB,IAAIC,MAAOC,eAAe,QAAS,CAAEC,KAAM,aAKzCC,EAAMJ,SAASV,EAAkB,GAAI,IACrCe,EAAQL,SAASV,EAAkB,GAAI,IAAM,EAC7CgB,EAASN,SAASV,EAAkB,GAAI,IACxCa,EAAOG,EAAS,GAAKA,GANAH,EAM2BG,GAL3CP,EAAsBI,EAAO,KAAOA,EAAO,IAOhDI,EAAgB,IAAIN,KAAKE,EAAME,EAAOD,EAAK,EAAG,EAAG,GAR7B,IAACD,EAUpBI,OAAAA,EAAcrB,aAAemB,GAChCE,EAAcpB,gBAAkBgB,EAC9BI,OACA,CACV,CAQO,SAASC,EACZC,GAEI,IAACA,EAAEC,cACI,OAAA,EAGX,MAAMC,EAAaF,EAAEG,OAAOC,QAAQ,kCAKpC,OAJ0BJ,EAAEC,cAAcG,QACtC,oCAGyBF,CACjC"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/datepicker/utils.ts"],"sourcesContent":["import React from \"react\";\n\nconst dayMonthYearRegex = /^(\\d\\d?)[\\W](\\d\\d?)[\\W](\\d{4}|\\d{2})$/;\nconst yearMonthDayRegex = /^(\\d{4}|\\d{2})[\\W](\\d\\d?)[\\W](\\d\\d?)$/;\n\n/**\n * Format a Date object as a string in the format DatePicker expects.\n *\n * @param date the Date object to format\n * @return returns a date string with \"dd.mm.yyyy\"-format\n */\nexport function formatInput(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n return `${day}.${month}.${date.getFullYear()}`;\n}\n\n/**\n * Get the date segments from a string of unknown format\n *\n * @param input date as a string with unknown format\n * @returns an array of string elements [day, month, year]\n */\nconst getDateSegmentsFromString = (input: string): string[] | undefined => {\n const dayMonthYear = dayMonthYearRegex.exec(input);\n\n if (dayMonthYear) {\n return dayMonthYear.slice(1, 4);\n }\n\n const yearMonthDay = yearMonthDayRegex.exec(input);\n\n if (!yearMonthDay) {\n return undefined;\n }\n\n // reverse to get the correct ordering\n const slicedDateSegments = yearMonthDay.slice(1, 4);\n slicedDateSegments.reverse();\n\n return slicedDateSegments;\n};\n\n/**\n * Convert a date string to a Date object\n *\n * @param dateString date as string with format dd.mm.yyyy\n * @return a Date object representing the given date\n */\nexport function parseDateString(dateString?: string): Date | undefined {\n if (!dateString) {\n return undefined;\n }\n\n const inputDateSegments = getDateSegmentsFromString(dateString);\n\n if (!inputDateSegments) {\n return undefined;\n }\n\n const currentTwoDigitYear = parseInt(\n new Date().toLocaleString(\"no-NB\", { year: \"2-digit\" }),\n );\n const parseTwoDigitYear = (year: number) =>\n year > currentTwoDigitYear ? year + 1900 : year + 2000;\n\n const day = parseInt(inputDateSegments[0], 10);\n const month = parseInt(inputDateSegments[1], 10) - 1;\n const yearIn = parseInt(inputDateSegments[2], 10);\n const year = yearIn > 99 ? yearIn : parseTwoDigitYear(yearIn);\n\n const generatedDate = new Date(year, month, day, 0, 0, 0);\n // Days can \"overflow\" to next month/year in Date(). Return undefined if it does:\n return generatedDate.getMonth() === month &&\n generatedDate.getFullYear() === year\n ? generatedDate\n : undefined;\n}\n\n/**\n * Hjelpefunksjon for å se om en onBlur går utenfor DatePicker,\n * eller om den går til et interaktivt element inni DatePickeren.\n * @param {React.FocusEvent<HTMLButtonElement | HTMLInputElement>} e - Eventet fra onBlur og action.onBlur\n * @returns {boolean} true hvis e.relatedTarget er utenfor DatePicker\n */\nexport function isBlurTargetOutside(\n e: React.FocusEvent<HTMLButtonElement | HTMLInputElement>,\n): boolean {\n if (!e.relatedTarget) {\n return true;\n }\n\n const targetRoot = e.target.closest(\".jkl-datepicker__input-wrapper\");\n const relatedTargetRoot = e.relatedTarget.closest(\n \".jkl-datepicker__input-wrapper\",\n );\n\n return relatedTargetRoot !== targetRoot;\n}\n"],"names":["dayMonthYearRegex","yearMonthDayRegex","formatInput","date","getDate","padStart","getMonth","getFullYear","parseDateString","dateString","inputDateSegments","input","dayMonthYear","exec","slice","yearMonthDay","slicedDateSegments","reverse","getDateSegmentsFromString","currentTwoDigitYear","parseInt","Date","toLocaleString","year","day","month","yearIn","generatedDate","isBlurTargetOutside","e","relatedTarget","targetRoot","target","closest"],"mappings":"AAEA,MAAMA,EAAoB,wCACpBC,EAAoB,wCAQnB,SAASC,EAAYC,GAGxB,MAAO,GAFK,GAAGA,EAAKC,YAAYC,SAAS,EAAG,QAC9B,GAAGF,EAAKG,WAAa,IAAID,SAAS,EAAG,QACzBF,EAAKI,eACnC,CAkCO,SAASC,EAAgBC,GAC5B,IAAKA,EACM,OAGLC,MAAAA,EA/BwB,CAACC,IACzBC,MAAAA,EAAeZ,EAAkBa,KAAKF,GAExCC,GAAAA,EACOA,OAAAA,EAAaE,MAAM,EAAG,GAG3BC,MAAAA,EAAed,EAAkBY,KAAKF,GAE5C,IAAKI,EACM,OAIX,MAAMC,EAAqBD,EAAaD,MAAM,EAAG,GACjDE,OAAAA,EAAmBC,UAEZD,CAAAA,EAcmBE,CAA0BT,GAEpD,IAAKC,EACM,OAGX,MAAMS,EAAsBC,UACxB,IAAIC,MAAOC,eAAe,QAAS,CAAEC,KAAM,aAKzCC,EAAMJ,SAASV,EAAkB,GAAI,IACrCe,EAAQL,SAASV,EAAkB,GAAI,IAAM,EAC7CgB,EAASN,SAASV,EAAkB,GAAI,IACxCa,EAAOG,EAAS,GAAKA,GANAH,EAM2BG,GAL3CP,EAAsBI,EAAO,KAAOA,EAAO,IAOhDI,EAAgB,IAAIN,KAAKE,EAAME,EAAOD,EAAK,EAAG,EAAG,GAR7B,IAACD,EAUpBI,OAAAA,EAAcrB,aAAemB,GAChCE,EAAcpB,gBAAkBgB,EAC9BI,OACA,CACV,CAQO,SAASC,EACZC,GAEI,IAACA,EAAEC,cACI,OAAA,EAGX,MAAMC,EAAaF,EAAEG,OAAOC,QAAQ,kCAKpC,OAJ0BJ,EAAEC,cAAcG,QACtC,oCAGyBF,CACjC"}
@@ -1,11 +1,4 @@
1
+ import { ComparisonOptions } from './types.js';
1
2
  export declare function isCorrectFormat(value: string | undefined): boolean;
2
- type ComparisonOptions = {
3
- /**
4
- * Kontroller om testen skal godkjennes om verdien er lik
5
- * @default false
6
- */
7
- inclusive: boolean;
8
- };
9
3
  export declare function isWithinLowerBound(value: Date | string | undefined, minDate: Date, options?: ComparisonOptions): boolean;
10
4
  export declare function isWithinUpperBound(value: Date | string | undefined, maxDate: Date, options?: ComparisonOptions): boolean;
11
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sources":["../../../../src/components/datepicker/validation.ts"],"sourcesContent":["import { parseDateString } from \"./utils.js\";\n\nexport function isCorrectFormat(value: string | undefined): boolean {\n if (!value) {\n return false;\n }\n const val = parseDateString(value);\n return Boolean(val);\n}\n\ntype ComparisonOptions = {\n /**\n * Kontroller om testen skal godkjennes om verdien er lik\n * @default false\n */\n inclusive: boolean;\n};\n\nexport function isWithinLowerBound(\n value: Date | string | undefined,\n minDate: Date,\n options: ComparisonOptions = { inclusive: false },\n): boolean {\n const val = typeof value === \"string\" ? parseDateString(value) : value;\n\n if (!val) {\n return false;\n }\n\n if (options.inclusive) {\n return val >= minDate;\n }\n\n return val > minDate;\n}\n\nexport function isWithinUpperBound(\n value: Date | string | undefined,\n maxDate: Date,\n options: ComparisonOptions = { inclusive: false },\n): boolean {\n const val = typeof value === \"string\" ? parseDateString(value) : value;\n\n if (!val) {\n return false;\n }\n\n if (options.inclusive) {\n return val <= maxDate;\n }\n\n return val < maxDate;\n}\n"],"names":["isCorrectFormat","value","parseDateString","isWithinLowerBound","minDate","options","inclusive","val","isWithinUpperBound","maxDate"],"mappings":"6CAEO,SAASA,EAAgBC,GAC5B,QAAKA,KAGOC,EAAgBD,EAEhC,CAUO,SAASE,EACZF,EACAG,EACAC,EAA6B,CAAEC,WAAW,IAE1C,MAAMC,EAAuB,iBAAVN,EAAqBC,EAAgBD,GAASA,EAEjE,QAAKM,IAIDF,EAAQC,UACDC,GAAOH,EAGXG,EAAMH,EACjB,CAEO,SAASI,EACZP,EACAQ,EACAJ,EAA6B,CAAEC,WAAW,IAE1C,MAAMC,EAAuB,iBAAVN,EAAqBC,EAAgBD,GAASA,EAEjE,QAAKM,IAIDF,EAAQC,UACDC,GAAOE,EAGXF,EAAME,EACjB"}
1
+ {"version":3,"file":"validation.js","sources":["../../../../src/components/datepicker/validation.ts"],"sourcesContent":["import { ComparisonOptions } from \"./types.js\";\nimport { parseDateString } from \"./utils.js\";\n\nexport function isCorrectFormat(value: string | undefined): boolean {\n if (!value) {\n return false;\n }\n const val = parseDateString(value);\n return Boolean(val);\n}\n\nexport function isWithinLowerBound(\n value: Date | string | undefined,\n minDate: Date,\n options: ComparisonOptions = { inclusive: false },\n): boolean {\n const val = typeof value === \"string\" ? parseDateString(value) : value;\n\n if (!val) {\n return false;\n }\n\n if (options.inclusive) {\n return val >= minDate;\n }\n\n return val > minDate;\n}\n\nexport function isWithinUpperBound(\n value: Date | string | undefined,\n maxDate: Date,\n options: ComparisonOptions = { inclusive: false },\n): boolean {\n const val = typeof value === \"string\" ? parseDateString(value) : value;\n\n if (!val) {\n return false;\n }\n\n if (options.inclusive) {\n return val <= maxDate;\n }\n\n return val < maxDate;\n}\n"],"names":["isCorrectFormat","value","parseDateString","isWithinLowerBound","minDate","options","inclusive","val","isWithinUpperBound","maxDate"],"mappings":"6CAGO,SAASA,EAAgBC,GAC5B,QAAKA,KAGOC,EAAgBD,EAEhC,CAEO,SAASE,EACZF,EACAG,EACAC,EAA6B,CAAEC,WAAW,IAE1C,MAAMC,EAAuB,iBAAVN,EAAqBC,EAAgBD,GAASA,EAEjE,QAAKM,IAIDF,EAAQC,UACDC,GAAOH,EAGXG,EAAMH,EACjB,CAEO,SAASI,EACZP,EACAQ,EACAJ,EAA6B,CAAEC,WAAW,IAE1C,MAAMC,EAAuB,iBAAVN,EAAqBC,EAAgBD,GAASA,EAEjE,QAAKM,IAIDF,EAAQC,UACDC,GAAOE,EAGXF,EAAME,EACjB"}
@@ -1 +1 @@
1
- export * from './DescriptionList.js';
1
+ export { DescriptionList, DescriptionTerm, DescriptionDetail, type DescriptionListProps, type DescriptionTermProps, type DescriptionDetailProps, } from './DescriptionList.js';