@navikt/ds-react 6.0.0 → 6.1.1

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 (695) hide show
  1. package/cjs/accordion/index.d.ts +3 -0
  2. package/cjs/accordion/index.js +8 -1
  3. package/cjs/accordion/index.js.map +1 -1
  4. package/cjs/alert/index.d.ts +1 -2
  5. package/cjs/alert/index.js +1 -0
  6. package/cjs/alert/index.js.map +1 -1
  7. package/cjs/button/index.d.ts +1 -2
  8. package/cjs/button/index.js +1 -0
  9. package/cjs/button/index.js.map +1 -1
  10. package/cjs/chat/Bubble.d.ts +2 -2
  11. package/cjs/chat/index.d.ts +1 -0
  12. package/cjs/chat/index.js +4 -1
  13. package/cjs/chat/index.js.map +1 -1
  14. package/cjs/chips/Chips.d.ts +4 -4
  15. package/cjs/chips/Removable.d.ts +2 -2
  16. package/cjs/chips/Toggle.d.ts +2 -2
  17. package/cjs/chips/index.d.ts +2 -0
  18. package/cjs/chips/index.js +6 -1
  19. package/cjs/chips/index.js.map +1 -1
  20. package/cjs/copybutton/index.js +1 -0
  21. package/cjs/copybutton/index.js.map +1 -1
  22. package/cjs/date/datepicker/index.d.ts +4 -0
  23. package/cjs/date/datepicker/index.js +17 -0
  24. package/cjs/date/datepicker/index.js.map +1 -0
  25. package/cjs/date/datepicker/parts/DropdownCaption.js +3 -3
  26. package/cjs/date/monthpicker/MonthCaption.js +2 -2
  27. package/cjs/date/monthpicker/index.d.ts +5 -0
  28. package/cjs/date/monthpicker/index.js +16 -0
  29. package/cjs/date/monthpicker/index.js.map +1 -0
  30. package/cjs/dropdown/Dropdown.d.ts +2 -2
  31. package/cjs/dropdown/Dropdown.js.map +1 -1
  32. package/cjs/dropdown/Menu/index.d.ts +3 -3
  33. package/cjs/dropdown/Toggle.d.ts +3 -3
  34. package/cjs/dropdown/Toggle.js +3 -3
  35. package/cjs/dropdown/Toggle.js.map +1 -1
  36. package/cjs/dropdown/index.d.ts +8 -0
  37. package/cjs/dropdown/index.js +18 -1
  38. package/cjs/dropdown/index.js.map +1 -1
  39. package/cjs/expansion-card/ExpansionCardDescription.d.ts +1 -0
  40. package/cjs/expansion-card/ExpansionCardDescription.js +1 -0
  41. package/cjs/expansion-card/ExpansionCardDescription.js.map +1 -1
  42. package/cjs/expansion-card/ExpansionCardTitle.d.ts +1 -0
  43. package/cjs/expansion-card/ExpansionCardTitle.js +1 -0
  44. package/cjs/expansion-card/ExpansionCardTitle.js.map +1 -1
  45. package/cjs/expansion-card/index.d.ts +4 -0
  46. package/cjs/expansion-card/index.js +10 -1
  47. package/cjs/expansion-card/index.js.map +1 -1
  48. package/cjs/form/checkbox/CheckboxGroup.d.ts +1 -1
  49. package/cjs/form/checkbox/CheckboxGroup.js +4 -3
  50. package/cjs/form/checkbox/CheckboxGroup.js.map +1 -1
  51. package/cjs/form/checkbox/index.js +1 -0
  52. package/cjs/form/checkbox/index.js.map +1 -1
  53. package/cjs/form/combobox/index.d.ts +1 -1
  54. package/cjs/form/combobox/index.js +3 -2
  55. package/cjs/form/combobox/index.js.map +1 -1
  56. package/cjs/form/{ConfirmationPanel.d.ts → confirmation-panel/ConfirmationPanel.d.ts} +1 -1
  57. package/cjs/form/{ConfirmationPanel.js → confirmation-panel/ConfirmationPanel.js} +4 -4
  58. package/cjs/form/confirmation-panel/ConfirmationPanel.js.map +1 -0
  59. package/cjs/form/confirmation-panel/index.d.ts +1 -0
  60. package/cjs/form/confirmation-panel/index.js +10 -0
  61. package/cjs/form/confirmation-panel/index.js.map +1 -0
  62. package/cjs/form/error-summary/index.d.ts +2 -2
  63. package/cjs/form/error-summary/index.js +4 -1
  64. package/cjs/form/error-summary/index.js.map +1 -1
  65. package/cjs/form/{Fieldset → fieldset}/Fieldset.js.map +1 -1
  66. package/cjs/form/{Fieldset → fieldset}/context.js.map +1 -1
  67. package/cjs/form/{Fieldset → fieldset}/index.d.ts +0 -1
  68. package/cjs/form/{Fieldset → fieldset}/index.js +2 -3
  69. package/cjs/form/fieldset/index.js.map +1 -0
  70. package/cjs/form/{Fieldset → fieldset}/useFieldset.js.map +1 -1
  71. package/cjs/form/radio/RadioGroup.d.ts +1 -1
  72. package/cjs/form/radio/RadioGroup.js +4 -3
  73. package/cjs/form/radio/RadioGroup.js.map +1 -1
  74. package/cjs/form/radio/index.js +1 -0
  75. package/cjs/form/radio/index.js.map +1 -1
  76. package/cjs/form/search/index.d.ts +1 -0
  77. package/cjs/form/search/index.js +4 -1
  78. package/cjs/form/search/index.js.map +1 -1
  79. package/cjs/form/{Select.d.ts → select/Select.d.ts} +1 -1
  80. package/cjs/form/{Select.js → select/Select.js} +4 -4
  81. package/cjs/form/select/Select.js.map +1 -0
  82. package/cjs/form/select/index.d.ts +1 -0
  83. package/cjs/form/select/index.js +10 -0
  84. package/cjs/form/select/index.js.map +1 -0
  85. package/cjs/form/{Switch.d.ts → switch/Switch.d.ts} +1 -1
  86. package/cjs/form/{Switch.js → switch/Switch.js} +5 -5
  87. package/cjs/form/switch/Switch.js.map +1 -0
  88. package/cjs/form/switch/index.d.ts +1 -0
  89. package/cjs/form/switch/index.js +10 -0
  90. package/cjs/form/switch/index.js.map +1 -0
  91. package/{esm/form → cjs/form/textarea}/Textarea.d.ts +1 -1
  92. package/cjs/form/{Textarea.js → textarea/Textarea.js} +7 -7
  93. package/cjs/form/textarea/Textarea.js.map +1 -0
  94. package/cjs/form/{TextareaCounter.js → textarea/TextareaCounter.js} +2 -2
  95. package/cjs/form/textarea/TextareaCounter.js.map +1 -0
  96. package/cjs/form/textarea/index.d.ts +1 -0
  97. package/cjs/form/textarea/index.js +10 -0
  98. package/cjs/form/textarea/index.js.map +1 -0
  99. package/cjs/form/{TextField.d.ts → textfield/TextField.d.ts} +1 -1
  100. package/cjs/form/{TextField.js → textfield/TextField.js} +4 -4
  101. package/cjs/form/textfield/TextField.js.map +1 -0
  102. package/cjs/form/textfield/index.d.ts +1 -0
  103. package/cjs/form/textfield/index.js +10 -0
  104. package/cjs/form/textfield/index.js.map +1 -0
  105. package/cjs/form/useFormField.js +1 -1
  106. package/cjs/guide-panel/index.d.ts +1 -1
  107. package/cjs/guide-panel/index.js +3 -2
  108. package/cjs/guide-panel/index.js.map +1 -1
  109. package/cjs/help-text/index.d.ts +1 -2
  110. package/cjs/help-text/index.js +1 -0
  111. package/cjs/help-text/index.js.map +1 -1
  112. package/cjs/index.d.ts +54 -40
  113. package/cjs/index.js +127 -54
  114. package/cjs/index.js.map +1 -1
  115. package/cjs/internal-header/index.d.ts +4 -4
  116. package/cjs/internal-header/index.js +10 -1
  117. package/cjs/internal-header/index.js.map +1 -1
  118. package/cjs/layout/bleed/Bleed.d.ts +1 -0
  119. package/cjs/layout/bleed/Bleed.js +1 -0
  120. package/cjs/layout/bleed/Bleed.js.map +1 -1
  121. package/cjs/layout/bleed/index.d.ts +1 -1
  122. package/cjs/layout/bleed/index.js +5 -1
  123. package/cjs/layout/bleed/index.js.map +1 -1
  124. package/cjs/layout/box/Box.d.ts +1 -0
  125. package/cjs/layout/box/Box.js +1 -0
  126. package/cjs/layout/box/Box.js.map +1 -1
  127. package/cjs/layout/box/index.d.ts +1 -1
  128. package/cjs/layout/box/index.js +5 -1
  129. package/cjs/layout/box/index.js.map +1 -1
  130. package/cjs/layout/grid/index.js +1 -0
  131. package/cjs/layout/grid/index.js.map +1 -1
  132. package/cjs/layout/page/index.d.ts +1 -1
  133. package/cjs/layout/page/index.js +4 -1
  134. package/cjs/layout/page/index.js.map +1 -1
  135. package/cjs/layout/page/parts/PageBlock.d.ts +1 -0
  136. package/cjs/layout/page/parts/PageBlock.js +1 -0
  137. package/cjs/layout/page/parts/PageBlock.js.map +1 -1
  138. package/cjs/layout/responsive/index.js +1 -0
  139. package/cjs/layout/responsive/index.js.map +1 -1
  140. package/cjs/layout/sidemal-test/Filter.js +4 -4
  141. package/cjs/layout/sidemal-test/Filter.js.map +1 -1
  142. package/cjs/layout/stack/HStack.d.ts +1 -0
  143. package/cjs/layout/stack/HStack.js +1 -0
  144. package/cjs/layout/stack/HStack.js.map +1 -1
  145. package/cjs/layout/stack/Spacer.d.ts +1 -0
  146. package/cjs/layout/stack/Spacer.js +1 -0
  147. package/cjs/layout/stack/Spacer.js.map +1 -1
  148. package/cjs/layout/stack/Stack.d.ts +1 -0
  149. package/cjs/layout/stack/Stack.js +1 -0
  150. package/cjs/layout/stack/Stack.js.map +1 -1
  151. package/cjs/layout/stack/VStack.d.ts +1 -0
  152. package/cjs/layout/stack/VStack.js +1 -0
  153. package/cjs/layout/stack/VStack.js.map +1 -1
  154. package/cjs/layout/stack/index.d.ts +4 -4
  155. package/cjs/layout/stack/index.js +8 -4
  156. package/cjs/layout/stack/index.js.map +1 -1
  157. package/cjs/link/index.d.ts +1 -2
  158. package/cjs/link/index.js +1 -0
  159. package/cjs/link/index.js.map +1 -1
  160. package/cjs/link-panel/LinkPanelDescription.d.ts +1 -0
  161. package/cjs/link-panel/LinkPanelDescription.js +1 -0
  162. package/cjs/link-panel/LinkPanelDescription.js.map +1 -1
  163. package/cjs/link-panel/LinkPanelTitle.d.ts +1 -0
  164. package/cjs/link-panel/LinkPanelTitle.js +1 -0
  165. package/cjs/link-panel/LinkPanelTitle.js.map +1 -1
  166. package/cjs/link-panel/index.d.ts +3 -2
  167. package/cjs/link-panel/index.js +6 -1
  168. package/cjs/link-panel/index.js.map +1 -1
  169. package/cjs/list/index.d.ts +1 -0
  170. package/cjs/list/index.js +4 -1
  171. package/cjs/list/index.js.map +1 -1
  172. package/cjs/loader/index.js +1 -0
  173. package/cjs/loader/index.js.map +1 -1
  174. package/cjs/modal/Modal.js +31 -13
  175. package/cjs/modal/Modal.js.map +1 -1
  176. package/cjs/modal/ModalHeader.js +1 -1
  177. package/cjs/modal/ModalHeader.js.map +1 -1
  178. package/cjs/modal/ModalUtils.d.ts +6 -1
  179. package/cjs/modal/ModalUtils.js +13 -3
  180. package/cjs/modal/ModalUtils.js.map +1 -1
  181. package/cjs/modal/index.d.ts +3 -3
  182. package/cjs/modal/index.js +8 -1
  183. package/cjs/modal/index.js.map +1 -1
  184. package/cjs/modal/types.d.ts +14 -3
  185. package/cjs/modal/types.test-d.d.ts +1 -0
  186. package/cjs/modal/types.test-d.js +67 -0
  187. package/cjs/modal/types.test-d.js.map +1 -0
  188. package/cjs/pagination/index.d.ts +1 -0
  189. package/cjs/pagination/index.js +4 -1
  190. package/cjs/pagination/index.js.map +1 -1
  191. package/cjs/popover/index.d.ts +1 -1
  192. package/cjs/popover/index.js +4 -1
  193. package/cjs/popover/index.js.map +1 -1
  194. package/cjs/{overlays/portal → portal}/Portal.d.ts +1 -1
  195. package/cjs/{overlays/portal → portal}/Portal.js +3 -3
  196. package/cjs/portal/Portal.js.map +1 -0
  197. package/cjs/portal/index.d.ts +1 -0
  198. package/cjs/portal/index.js +10 -0
  199. package/cjs/portal/index.js.map +1 -0
  200. package/cjs/provider/index.d.ts +1 -1
  201. package/cjs/provider/index.js +2 -2
  202. package/cjs/provider/index.js.map +1 -1
  203. package/cjs/read-more/index.d.ts +1 -2
  204. package/cjs/read-more/index.js +1 -0
  205. package/cjs/read-more/index.js.map +1 -1
  206. package/cjs/skeleton/index.d.ts +1 -2
  207. package/cjs/skeleton/index.js +1 -0
  208. package/cjs/skeleton/index.js.map +1 -1
  209. package/cjs/stepper/index.d.ts +1 -0
  210. package/cjs/stepper/index.js +4 -1
  211. package/cjs/stepper/index.js.map +1 -1
  212. package/cjs/table/index.d.ts +7 -7
  213. package/cjs/table/index.js +16 -1
  214. package/cjs/table/index.js.map +1 -1
  215. package/cjs/tabs/index.d.ts +3 -3
  216. package/cjs/tabs/index.js +8 -1
  217. package/cjs/tabs/index.js.map +1 -1
  218. package/cjs/tag/index.js +1 -0
  219. package/cjs/tag/index.js.map +1 -1
  220. package/cjs/timeline/index.d.ts +5 -6
  221. package/cjs/timeline/index.js +10 -1
  222. package/cjs/timeline/index.js.map +1 -1
  223. package/cjs/toggle-group/ToggleGroup.d.ts +3 -3
  224. package/cjs/toggle-group/ToggleGroup.js.map +1 -1
  225. package/cjs/toggle-group/ToggleItem.d.ts +2 -2
  226. package/cjs/toggle-group/index.d.ts +1 -1
  227. package/cjs/toggle-group/index.js +4 -1
  228. package/cjs/toggle-group/index.js.map +1 -1
  229. package/cjs/tooltip/Tooltip.js +2 -2
  230. package/cjs/tooltip/Tooltip.js.map +1 -1
  231. package/cjs/tooltip/index.js +1 -0
  232. package/cjs/tooltip/index.js.map +1 -1
  233. package/cjs/typography/index.js +1 -0
  234. package/cjs/typography/index.js.map +1 -1
  235. package/cjs/util/debounce.js +1 -0
  236. package/cjs/util/debounce.js.map +1 -1
  237. package/cjs/util/hooks/useClientLayoutEffect.js +1 -0
  238. package/cjs/util/hooks/useClientLayoutEffect.js.map +1 -1
  239. package/cjs/util/hooks/useEventListener.js +1 -0
  240. package/cjs/util/hooks/useEventListener.js.map +1 -1
  241. package/cjs/util/hooks/useId.js +1 -0
  242. package/cjs/util/hooks/useId.js.map +1 -1
  243. package/cjs/util/index.d.ts +2 -2
  244. package/cjs/util/index.js +3 -16
  245. package/cjs/util/index.js.map +1 -1
  246. package/cjs/util/omit.d.ts +1 -1
  247. package/cjs/util/omit.js +5 -3
  248. package/cjs/util/omit.js.map +1 -1
  249. package/esm/accordion/index.d.ts +3 -0
  250. package/esm/accordion/index.js +4 -0
  251. package/esm/accordion/index.js.map +1 -1
  252. package/esm/alert/index.d.ts +1 -2
  253. package/esm/alert/index.js +1 -0
  254. package/esm/alert/index.js.map +1 -1
  255. package/esm/button/index.d.ts +1 -2
  256. package/esm/button/index.js +1 -0
  257. package/esm/button/index.js.map +1 -1
  258. package/esm/chat/Bubble.d.ts +2 -2
  259. package/esm/chat/index.d.ts +1 -0
  260. package/esm/chat/index.js +2 -0
  261. package/esm/chat/index.js.map +1 -1
  262. package/esm/chips/Chips.d.ts +4 -4
  263. package/esm/chips/Removable.d.ts +2 -2
  264. package/esm/chips/Toggle.d.ts +2 -2
  265. package/esm/chips/index.d.ts +2 -0
  266. package/esm/chips/index.js +3 -0
  267. package/esm/chips/index.js.map +1 -1
  268. package/esm/copybutton/index.js +1 -0
  269. package/esm/copybutton/index.js.map +1 -1
  270. package/esm/date/datepicker/index.d.ts +4 -0
  271. package/esm/date/datepicker/index.js +6 -0
  272. package/esm/date/datepicker/index.js.map +1 -0
  273. package/esm/date/datepicker/parts/DropdownCaption.js +1 -1
  274. package/esm/date/monthpicker/MonthCaption.js +1 -1
  275. package/esm/date/monthpicker/index.d.ts +5 -0
  276. package/esm/date/monthpicker/index.js +6 -0
  277. package/esm/date/monthpicker/index.js.map +1 -0
  278. package/esm/dropdown/Dropdown.d.ts +2 -2
  279. package/esm/dropdown/Dropdown.js.map +1 -1
  280. package/esm/dropdown/Menu/index.d.ts +3 -3
  281. package/esm/dropdown/Toggle.d.ts +3 -3
  282. package/esm/dropdown/Toggle.js +2 -2
  283. package/esm/dropdown/Toggle.js.map +1 -1
  284. package/esm/dropdown/index.d.ts +8 -0
  285. package/esm/dropdown/index.js +9 -0
  286. package/esm/dropdown/index.js.map +1 -1
  287. package/esm/expansion-card/ExpansionCardDescription.d.ts +1 -0
  288. package/esm/expansion-card/ExpansionCardDescription.js +1 -0
  289. package/esm/expansion-card/ExpansionCardDescription.js.map +1 -1
  290. package/esm/expansion-card/ExpansionCardTitle.d.ts +1 -0
  291. package/esm/expansion-card/ExpansionCardTitle.js +1 -0
  292. package/esm/expansion-card/ExpansionCardTitle.js.map +1 -1
  293. package/esm/expansion-card/index.d.ts +4 -0
  294. package/esm/expansion-card/index.js +5 -0
  295. package/esm/expansion-card/index.js.map +1 -1
  296. package/esm/form/checkbox/CheckboxGroup.d.ts +1 -1
  297. package/esm/form/checkbox/CheckboxGroup.js +2 -1
  298. package/esm/form/checkbox/CheckboxGroup.js.map +1 -1
  299. package/esm/form/checkbox/index.js +1 -0
  300. package/esm/form/checkbox/index.js.map +1 -1
  301. package/esm/form/combobox/index.d.ts +1 -1
  302. package/esm/form/combobox/index.js +2 -1
  303. package/esm/form/combobox/index.js.map +1 -1
  304. package/esm/form/{ConfirmationPanel.d.ts → confirmation-panel/ConfirmationPanel.d.ts} +1 -1
  305. package/esm/form/{ConfirmationPanel.js → confirmation-panel/ConfirmationPanel.js} +4 -4
  306. package/esm/form/confirmation-panel/ConfirmationPanel.js.map +1 -0
  307. package/esm/form/confirmation-panel/index.d.ts +1 -0
  308. package/esm/form/confirmation-panel/index.js +3 -0
  309. package/esm/form/confirmation-panel/index.js.map +1 -0
  310. package/esm/form/error-summary/index.d.ts +2 -2
  311. package/esm/form/error-summary/index.js +3 -1
  312. package/esm/form/error-summary/index.js.map +1 -1
  313. package/esm/form/{Fieldset → fieldset}/Fieldset.js.map +1 -1
  314. package/esm/form/{Fieldset → fieldset}/context.js.map +1 -1
  315. package/esm/form/{Fieldset → fieldset}/index.d.ts +0 -1
  316. package/esm/form/fieldset/index.js +3 -0
  317. package/esm/form/fieldset/index.js.map +1 -0
  318. package/esm/form/{Fieldset → fieldset}/useFieldset.js.map +1 -1
  319. package/esm/form/radio/RadioGroup.d.ts +1 -1
  320. package/esm/form/radio/RadioGroup.js +2 -1
  321. package/esm/form/radio/RadioGroup.js.map +1 -1
  322. package/esm/form/radio/index.js +1 -0
  323. package/esm/form/radio/index.js.map +1 -1
  324. package/esm/form/search/index.d.ts +1 -0
  325. package/esm/form/search/index.js +2 -0
  326. package/esm/form/search/index.js.map +1 -1
  327. package/esm/form/{Select.d.ts → select/Select.d.ts} +1 -1
  328. package/esm/form/{Select.js → select/Select.js} +4 -4
  329. package/esm/form/select/Select.js.map +1 -0
  330. package/esm/form/select/index.d.ts +1 -0
  331. package/esm/form/select/index.js +3 -0
  332. package/esm/form/select/index.js.map +1 -0
  333. package/esm/form/{Switch.d.ts → switch/Switch.d.ts} +1 -1
  334. package/esm/form/{Switch.js → switch/Switch.js} +5 -5
  335. package/esm/form/switch/Switch.js.map +1 -0
  336. package/esm/form/switch/index.d.ts +1 -0
  337. package/esm/form/switch/index.js +3 -0
  338. package/esm/form/switch/index.js.map +1 -0
  339. package/{cjs/form → esm/form/textarea}/Textarea.d.ts +1 -1
  340. package/esm/form/{Textarea.js → textarea/Textarea.js} +7 -7
  341. package/esm/form/textarea/Textarea.js.map +1 -0
  342. package/esm/form/{TextareaCounter.js → textarea/TextareaCounter.js} +2 -2
  343. package/esm/form/textarea/TextareaCounter.js.map +1 -0
  344. package/esm/form/textarea/index.d.ts +1 -0
  345. package/esm/form/textarea/index.js +3 -0
  346. package/esm/form/textarea/index.js.map +1 -0
  347. package/esm/form/{TextField.d.ts → textfield/TextField.d.ts} +1 -1
  348. package/esm/form/{TextField.js → textfield/TextField.js} +4 -4
  349. package/esm/form/textfield/TextField.js.map +1 -0
  350. package/esm/form/textfield/index.d.ts +1 -0
  351. package/esm/form/textfield/index.js +3 -0
  352. package/esm/form/textfield/index.js.map +1 -0
  353. package/esm/form/useFormField.js +1 -1
  354. package/esm/guide-panel/index.d.ts +1 -1
  355. package/esm/guide-panel/index.js +2 -1
  356. package/esm/guide-panel/index.js.map +1 -1
  357. package/esm/help-text/index.d.ts +1 -2
  358. package/esm/help-text/index.js +1 -0
  359. package/esm/help-text/index.js.map +1 -1
  360. package/esm/index.d.ts +54 -40
  361. package/esm/index.js +54 -40
  362. package/esm/index.js.map +1 -1
  363. package/esm/internal-header/index.d.ts +4 -4
  364. package/esm/internal-header/index.js +5 -0
  365. package/esm/internal-header/index.js.map +1 -1
  366. package/esm/layout/bleed/Bleed.d.ts +1 -0
  367. package/esm/layout/bleed/Bleed.js +1 -0
  368. package/esm/layout/bleed/Bleed.js.map +1 -1
  369. package/esm/layout/bleed/index.d.ts +1 -1
  370. package/esm/layout/bleed/index.js +2 -1
  371. package/esm/layout/bleed/index.js.map +1 -1
  372. package/esm/layout/box/Box.d.ts +1 -0
  373. package/esm/layout/box/Box.js +1 -0
  374. package/esm/layout/box/Box.js.map +1 -1
  375. package/esm/layout/box/index.d.ts +1 -1
  376. package/esm/layout/box/index.js +2 -1
  377. package/esm/layout/box/index.js.map +1 -1
  378. package/esm/layout/grid/index.js +1 -0
  379. package/esm/layout/grid/index.js.map +1 -1
  380. package/esm/layout/page/index.d.ts +1 -1
  381. package/esm/layout/page/index.js +2 -0
  382. package/esm/layout/page/index.js.map +1 -1
  383. package/esm/layout/page/parts/PageBlock.d.ts +1 -0
  384. package/esm/layout/page/parts/PageBlock.js +1 -0
  385. package/esm/layout/page/parts/PageBlock.js.map +1 -1
  386. package/esm/layout/responsive/index.js +1 -0
  387. package/esm/layout/responsive/index.js.map +1 -1
  388. package/esm/layout/sidemal-test/Filter.js +1 -1
  389. package/esm/layout/sidemal-test/Filter.js.map +1 -1
  390. package/esm/layout/stack/HStack.d.ts +1 -0
  391. package/esm/layout/stack/HStack.js +1 -0
  392. package/esm/layout/stack/HStack.js.map +1 -1
  393. package/esm/layout/stack/Spacer.d.ts +1 -0
  394. package/esm/layout/stack/Spacer.js +1 -0
  395. package/esm/layout/stack/Spacer.js.map +1 -1
  396. package/esm/layout/stack/Stack.d.ts +1 -0
  397. package/esm/layout/stack/Stack.js +1 -0
  398. package/esm/layout/stack/Stack.js.map +1 -1
  399. package/esm/layout/stack/VStack.d.ts +1 -0
  400. package/esm/layout/stack/VStack.js +1 -0
  401. package/esm/layout/stack/VStack.js.map +1 -1
  402. package/esm/layout/stack/index.d.ts +4 -4
  403. package/esm/layout/stack/index.js +5 -4
  404. package/esm/layout/stack/index.js.map +1 -1
  405. package/esm/link/index.d.ts +1 -2
  406. package/esm/link/index.js +1 -0
  407. package/esm/link/index.js.map +1 -1
  408. package/esm/link-panel/LinkPanelDescription.d.ts +1 -0
  409. package/esm/link-panel/LinkPanelDescription.js +1 -0
  410. package/esm/link-panel/LinkPanelDescription.js.map +1 -1
  411. package/esm/link-panel/LinkPanelTitle.d.ts +1 -0
  412. package/esm/link-panel/LinkPanelTitle.js +1 -0
  413. package/esm/link-panel/LinkPanelTitle.js.map +1 -1
  414. package/esm/link-panel/index.d.ts +3 -2
  415. package/esm/link-panel/index.js +3 -0
  416. package/esm/link-panel/index.js.map +1 -1
  417. package/esm/list/index.d.ts +1 -0
  418. package/esm/list/index.js +2 -0
  419. package/esm/list/index.js.map +1 -1
  420. package/esm/loader/index.js +1 -0
  421. package/esm/loader/index.js.map +1 -1
  422. package/esm/modal/Modal.js +31 -13
  423. package/esm/modal/Modal.js.map +1 -1
  424. package/esm/modal/ModalHeader.js +1 -1
  425. package/esm/modal/ModalHeader.js.map +1 -1
  426. package/esm/modal/ModalUtils.d.ts +6 -1
  427. package/esm/modal/ModalUtils.js +11 -2
  428. package/esm/modal/ModalUtils.js.map +1 -1
  429. package/esm/modal/index.d.ts +3 -3
  430. package/esm/modal/index.js +4 -0
  431. package/esm/modal/index.js.map +1 -1
  432. package/esm/modal/types.d.ts +14 -3
  433. package/esm/modal/types.test-d.d.ts +1 -0
  434. package/esm/modal/types.test-d.js +65 -0
  435. package/esm/modal/types.test-d.js.map +1 -0
  436. package/esm/pagination/index.d.ts +1 -0
  437. package/esm/pagination/index.js +2 -0
  438. package/esm/pagination/index.js.map +1 -1
  439. package/esm/popover/index.d.ts +1 -1
  440. package/esm/popover/index.js +2 -0
  441. package/esm/popover/index.js.map +1 -1
  442. package/esm/{overlays/portal → portal}/Portal.d.ts +1 -1
  443. package/esm/{overlays/portal → portal}/Portal.js +2 -2
  444. package/esm/portal/Portal.js.map +1 -0
  445. package/esm/portal/index.d.ts +1 -0
  446. package/esm/portal/index.js +3 -0
  447. package/esm/portal/index.js.map +1 -0
  448. package/esm/provider/index.d.ts +1 -1
  449. package/esm/provider/index.js +2 -1
  450. package/esm/provider/index.js.map +1 -1
  451. package/esm/read-more/index.d.ts +1 -2
  452. package/esm/read-more/index.js +1 -0
  453. package/esm/read-more/index.js.map +1 -1
  454. package/esm/skeleton/index.d.ts +1 -2
  455. package/esm/skeleton/index.js +1 -0
  456. package/esm/skeleton/index.js.map +1 -1
  457. package/esm/stepper/index.d.ts +1 -0
  458. package/esm/stepper/index.js +2 -0
  459. package/esm/stepper/index.js.map +1 -1
  460. package/esm/table/index.d.ts +7 -7
  461. package/esm/table/index.js +8 -0
  462. package/esm/table/index.js.map +1 -1
  463. package/esm/tabs/index.d.ts +3 -3
  464. package/esm/tabs/index.js +4 -0
  465. package/esm/tabs/index.js.map +1 -1
  466. package/esm/tag/index.js +1 -0
  467. package/esm/tag/index.js.map +1 -1
  468. package/esm/timeline/index.d.ts +5 -6
  469. package/esm/timeline/index.js +5 -0
  470. package/esm/timeline/index.js.map +1 -1
  471. package/esm/toggle-group/ToggleGroup.d.ts +3 -3
  472. package/esm/toggle-group/ToggleGroup.js.map +1 -1
  473. package/esm/toggle-group/ToggleItem.d.ts +2 -2
  474. package/esm/toggle-group/index.d.ts +1 -1
  475. package/esm/toggle-group/index.js +2 -0
  476. package/esm/toggle-group/index.js.map +1 -1
  477. package/esm/tooltip/Tooltip.js +1 -1
  478. package/esm/tooltip/Tooltip.js.map +1 -1
  479. package/esm/tooltip/index.js +1 -0
  480. package/esm/tooltip/index.js.map +1 -1
  481. package/esm/typography/index.js +1 -0
  482. package/esm/typography/index.js.map +1 -1
  483. package/esm/util/debounce.js +1 -0
  484. package/esm/util/debounce.js.map +1 -1
  485. package/esm/util/hooks/useClientLayoutEffect.js +1 -0
  486. package/esm/util/hooks/useClientLayoutEffect.js.map +1 -1
  487. package/esm/util/hooks/useEventListener.js +1 -0
  488. package/esm/util/hooks/useEventListener.js.map +1 -1
  489. package/esm/util/hooks/useId.js +1 -0
  490. package/esm/util/hooks/useId.js.map +1 -1
  491. package/esm/util/index.d.ts +2 -2
  492. package/esm/util/index.js +1 -1
  493. package/esm/util/index.js.map +1 -1
  494. package/esm/util/omit.d.ts +1 -1
  495. package/esm/util/omit.js +5 -3
  496. package/esm/util/omit.js.map +1 -1
  497. package/package.json +512 -13
  498. package/src/accordion/index.ts +13 -0
  499. package/src/alert/index.ts +2 -2
  500. package/src/button/index.ts +2 -2
  501. package/src/chat/Bubble.tsx +2 -2
  502. package/src/chat/chat.stories.tsx +2 -2
  503. package/src/chat/index.ts +2 -0
  504. package/src/chips/Chips.tsx +4 -4
  505. package/src/chips/Removable.tsx +2 -2
  506. package/src/chips/Toggle.tsx +2 -2
  507. package/src/chips/chips.stories.tsx +39 -1
  508. package/src/chips/index.ts +6 -0
  509. package/src/copybutton/copy-button.stories.tsx +49 -0
  510. package/src/copybutton/index.ts +1 -0
  511. package/src/date/datepicker/datepicker.stories.tsx +99 -0
  512. package/src/date/datepicker/datepicker.test.tsx +5 -3
  513. package/src/date/datepicker/index.ts +13 -0
  514. package/src/date/datepicker/parts/DropdownCaption.tsx +1 -1
  515. package/src/date/hooks/useRangeDatepicker.test.tsx +5 -3
  516. package/src/date/monthpicker/MonthCaption.tsx +1 -1
  517. package/src/date/monthpicker/index.ts +9 -0
  518. package/src/date/monthpicker/monthpicker.stories.tsx +27 -1
  519. package/src/date/utils/__tests__/check-dates.test.ts +1 -0
  520. package/src/date/utils/__tests__/dates-disabled.test.ts +1 -0
  521. package/src/date/utils/__tests__/format-dates.test.ts +1 -0
  522. package/src/date/utils/__tests__/get-dates.test.ts +1 -0
  523. package/src/date/utils/__tests__/get-initial-year.test.ts +1 -0
  524. package/src/date/utils/__tests__/get-month-weeks.test.ts +1 -0
  525. package/src/date/utils/__tests__/is-match.test.ts +1 -0
  526. package/src/date/utils/__tests__/parse-dates.test.ts +13 -3
  527. package/src/dropdown/Dropdown.tsx +2 -4
  528. package/src/dropdown/Menu/index.tsx +3 -3
  529. package/src/dropdown/Toggle.tsx +39 -40
  530. package/src/dropdown/index.ts +9 -0
  531. package/src/expansion-card/ExpansionCardDescription.tsx +2 -0
  532. package/src/expansion-card/ExpansionCardTitle.tsx +2 -0
  533. package/src/expansion-card/expansion-card.stories.tsx +32 -1
  534. package/src/expansion-card/index.ts +5 -0
  535. package/src/form/checkbox/Checkbox.test.tsx +6 -4
  536. package/src/form/checkbox/CheckboxGroup.tsx +2 -1
  537. package/src/form/checkbox/checkbox.stories.tsx +58 -2
  538. package/src/form/checkbox/index.ts +1 -0
  539. package/src/form/combobox/combobox.stories.tsx +3 -1
  540. package/src/form/combobox/combobox.test.tsx +6 -5
  541. package/src/form/combobox/index.ts +2 -1
  542. package/src/form/{ConfirmationPanel.test.tsx → confirmation-panel/ConfirmationPanel.test.tsx} +1 -0
  543. package/src/form/{ConfirmationPanel.tsx → confirmation-panel/ConfirmationPanel.tsx} +4 -4
  544. package/src/form/{stories → confirmation-panel}/confirmation-panel.stories.tsx +33 -2
  545. package/src/form/confirmation-panel/index.ts +5 -0
  546. package/src/form/error-summary/index.ts +9 -2
  547. package/src/form/{stories → fieldset}/fieldset.stories.tsx +2 -2
  548. package/src/form/{Fieldset → fieldset}/index.ts +1 -1
  549. package/src/form/radio/Radio.test.tsx +9 -3
  550. package/src/form/radio/RadioGroup.tsx +2 -1
  551. package/src/form/radio/index.ts +1 -0
  552. package/src/form/radio/radio.stories.tsx +51 -2
  553. package/src/form/search/index.ts +6 -0
  554. package/src/form/search/search.stories.tsx +53 -2
  555. package/src/form/{Select.tsx → select/Select.tsx} +4 -4
  556. package/src/form/select/index.ts +2 -0
  557. package/src/form/{stories → select}/select.stories.tsx +45 -2
  558. package/src/form/{Switch.tsx → switch/Switch.tsx} +5 -5
  559. package/src/form/switch/index.ts +2 -0
  560. package/src/form/{stories → switch}/switch.stories.tsx +1 -1
  561. package/src/form/{Textarea.tsx → textarea/Textarea.tsx} +7 -7
  562. package/src/form/{TextareaCounter.tsx → textarea/TextareaCounter.tsx} +2 -2
  563. package/src/form/textarea/index.ts +2 -0
  564. package/src/form/{stories → textarea}/textarea.stories.tsx +30 -1
  565. package/src/form/{TextField.tsx → textfield/TextField.tsx} +4 -4
  566. package/src/form/textfield/index.ts +2 -0
  567. package/src/form/{stories → textfield}/text-field.stories.tsx +45 -2
  568. package/src/form/useFormField.ts +1 -1
  569. package/src/guide-panel/guidepanel.stories.tsx +3 -1
  570. package/src/guide-panel/index.ts +2 -1
  571. package/src/help-text/index.ts +2 -2
  572. package/src/index.ts +143 -40
  573. package/src/internal-header/index.ts +17 -4
  574. package/src/layout/bleed/Bleed.tsx +2 -0
  575. package/src/layout/bleed/index.ts +2 -1
  576. package/src/layout/box/Box.tsx +2 -0
  577. package/src/layout/box/index.ts +2 -1
  578. package/src/layout/grid/index.ts +1 -0
  579. package/src/layout/page/index.ts +2 -1
  580. package/src/layout/page/parts/PageBlock.tsx +2 -0
  581. package/src/layout/responsive/index.ts +1 -0
  582. package/src/layout/sidemal-test/Filter.tsx +1 -1
  583. package/src/layout/stack/HStack.tsx +2 -0
  584. package/src/layout/stack/Spacer.tsx +2 -0
  585. package/src/layout/stack/Stack.tsx +2 -0
  586. package/src/layout/stack/VStack.tsx +2 -0
  587. package/src/layout/stack/index.ts +5 -4
  588. package/src/link/index.ts +2 -2
  589. package/src/link/stories/link.stories.tsx +188 -97
  590. package/src/link-panel/LinkPanelDescription.tsx +2 -0
  591. package/src/link-panel/LinkPanelTitle.tsx +2 -0
  592. package/src/link-panel/index.ts +10 -2
  593. package/src/list/index.ts +2 -0
  594. package/src/loader/index.ts +1 -0
  595. package/src/modal/Modal.test.tsx +1 -0
  596. package/src/modal/Modal.tsx +51 -12
  597. package/src/modal/ModalHeader.tsx +1 -1
  598. package/src/modal/ModalUtils.ts +17 -1
  599. package/src/modal/index.ts +4 -3
  600. package/src/modal/modal.stories.tsx +54 -0
  601. package/src/modal/types.test-d.ts +78 -0
  602. package/src/modal/types.ts +17 -3
  603. package/src/pagination/index.ts +5 -0
  604. package/src/pagination/steps.test.ts +9 -8
  605. package/src/popover/Popover.test.tsx +9 -8
  606. package/src/popover/index.ts +5 -1
  607. package/src/popover/popover.stories.tsx +1 -1
  608. package/src/{overlays/portal → portal}/Portal.stories.tsx +8 -5
  609. package/src/{overlays/portal → portal}/Portal.tsx +3 -3
  610. package/src/portal/index.ts +2 -0
  611. package/src/provider/index.ts +2 -1
  612. package/src/read-more/index.ts +2 -2
  613. package/src/skeleton/index.ts +2 -2
  614. package/src/skeleton/skeleton.stories.tsx +1 -1
  615. package/src/stepper/index.ts +2 -0
  616. package/src/table/index.ts +14 -7
  617. package/src/table/stories/table-1.stories.tsx +1 -1
  618. package/src/table/stories/table-2-expandable.stories.tsx +1 -1
  619. package/src/tabs/Tabs.test.tsx +1 -0
  620. package/src/tabs/index.ts +4 -3
  621. package/src/tag/index.ts +1 -0
  622. package/src/timeline/index.ts +9 -6
  623. package/src/toggle-group/ToggleGroup.stories.tsx +1 -1
  624. package/src/toggle-group/ToggleGroup.test.tsx +1 -0
  625. package/src/toggle-group/ToggleGroup.tsx +3 -3
  626. package/src/toggle-group/ToggleItem.tsx +2 -2
  627. package/src/toggle-group/index.ts +5 -1
  628. package/src/tooltip/Tooltip.test.tsx +5 -4
  629. package/src/tooltip/Tooltip.tsx +1 -1
  630. package/src/tooltip/index.ts +1 -0
  631. package/src/tooltip/tooltip.stories.tsx +1 -1
  632. package/src/typography/index.ts +1 -0
  633. package/src/util/__tests__/Slot.test.tsx +7 -6
  634. package/src/util/__tests__/useMedia.test.tsx +1 -0
  635. package/src/util/debounce.ts +1 -0
  636. package/src/util/hooks/useClientLayoutEffect.ts +2 -0
  637. package/src/util/hooks/useEventListener.ts +2 -0
  638. package/src/util/hooks/useId.ts +2 -0
  639. package/src/util/index.ts +2 -2
  640. package/src/util/omit.ts +8 -4
  641. package/cjs/date/index.d.ts +0 -7
  642. package/cjs/date/index.js +0 -15
  643. package/cjs/date/index.js.map +0 -1
  644. package/cjs/form/ConfirmationPanel.js.map +0 -1
  645. package/cjs/form/Fieldset/index.js.map +0 -1
  646. package/cjs/form/Select.js.map +0 -1
  647. package/cjs/form/Switch.js.map +0 -1
  648. package/cjs/form/TextField.js.map +0 -1
  649. package/cjs/form/Textarea.js.map +0 -1
  650. package/cjs/form/TextareaCounter.js.map +0 -1
  651. package/cjs/form/index.d.ts +0 -11
  652. package/cjs/form/index.js +0 -32
  653. package/cjs/form/index.js.map +0 -1
  654. package/cjs/overlays/index.d.ts +0 -2
  655. package/cjs/overlays/index.js +0 -6
  656. package/cjs/overlays/index.js.map +0 -1
  657. package/cjs/overlays/portal/Portal.js.map +0 -1
  658. package/esm/date/index.d.ts +0 -7
  659. package/esm/date/index.js +0 -4
  660. package/esm/date/index.js.map +0 -1
  661. package/esm/form/ConfirmationPanel.js.map +0 -1
  662. package/esm/form/Fieldset/index.js +0 -3
  663. package/esm/form/Fieldset/index.js.map +0 -1
  664. package/esm/form/Select.js.map +0 -1
  665. package/esm/form/Switch.js.map +0 -1
  666. package/esm/form/TextField.js.map +0 -1
  667. package/esm/form/Textarea.js.map +0 -1
  668. package/esm/form/TextareaCounter.js.map +0 -1
  669. package/esm/form/index.d.ts +0 -11
  670. package/esm/form/index.js +0 -12
  671. package/esm/form/index.js.map +0 -1
  672. package/esm/overlays/index.d.ts +0 -2
  673. package/esm/overlays/index.js +0 -2
  674. package/esm/overlays/index.js.map +0 -1
  675. package/esm/overlays/portal/Portal.js.map +0 -1
  676. package/src/date/index.ts +0 -17
  677. package/src/form/index.ts +0 -24
  678. package/src/overlays/index.ts +0 -2
  679. /package/cjs/form/{Fieldset → fieldset}/Fieldset.d.ts +0 -0
  680. /package/cjs/form/{Fieldset → fieldset}/Fieldset.js +0 -0
  681. /package/cjs/form/{Fieldset → fieldset}/context.d.ts +0 -0
  682. /package/cjs/form/{Fieldset → fieldset}/context.js +0 -0
  683. /package/cjs/form/{Fieldset → fieldset}/useFieldset.d.ts +0 -0
  684. /package/cjs/form/{Fieldset → fieldset}/useFieldset.js +0 -0
  685. /package/cjs/form/{TextareaCounter.d.ts → textarea/TextareaCounter.d.ts} +0 -0
  686. /package/esm/form/{Fieldset → fieldset}/Fieldset.d.ts +0 -0
  687. /package/esm/form/{Fieldset → fieldset}/Fieldset.js +0 -0
  688. /package/esm/form/{Fieldset → fieldset}/context.d.ts +0 -0
  689. /package/esm/form/{Fieldset → fieldset}/context.js +0 -0
  690. /package/esm/form/{Fieldset → fieldset}/useFieldset.d.ts +0 -0
  691. /package/esm/form/{Fieldset → fieldset}/useFieldset.js +0 -0
  692. /package/esm/form/{TextareaCounter.d.ts → textarea/TextareaCounter.d.ts} +0 -0
  693. /package/src/form/{Fieldset → fieldset}/Fieldset.tsx +0 -0
  694. /package/src/form/{Fieldset → fieldset}/context.ts +0 -0
  695. /package/src/form/{Fieldset → fieldset}/useFieldset.ts +0 -0
@@ -1,15 +1,22 @@
1
+ import { Meta } from "@storybook/react";
1
2
  import React from "react";
2
3
  import { PlusCircleFillIcon } from "@navikt/aksel-icons";
3
4
  import { Alert } from "../../alert";
4
- import { ConfirmationPanel } from "../../form";
5
+ import { ConfirmationPanel } from "../../form/confirmation-panel";
6
+ import { Box } from "../../layout/box";
7
+ import { VStack } from "../../layout/stack";
5
8
  import { BodyLong } from "../../typography";
6
9
  import Link from "../Link";
7
10
  import { RandomIcon } from "./RandomIcon";
8
11
 
9
- export default {
12
+ const meta: Meta<typeof Link> = {
10
13
  title: "ds-react/Link",
11
14
  component: Link,
15
+ parameters: {
16
+ chromatic: { disable: true },
17
+ },
12
18
  };
19
+ export default meta;
13
20
 
14
21
  const LinkWrapper = ({
15
22
  children = "Ex aliqua incididunt",
@@ -27,53 +34,38 @@ const LinkWrapper = ({
27
34
  variant={variant as "action" | "neutral" | "subtle"}
28
35
  inlineText={inlineText}
29
36
  >
30
- {iconLeft && (
31
- <>
32
- <RandomIcon />{" "}
33
- </>
34
- )}
37
+ {iconLeft && <RandomIcon />}
35
38
  {children}
36
- {iconRight && (
37
- <>
38
- {" "}
39
- <RandomIcon />
40
- </>
41
- )}
39
+ {iconRight && <RandomIcon />}
42
40
  </Link>{" "}
43
41
  </>
44
42
  );
45
43
 
46
44
  export const Default = {
47
- render: ({ icon, inline }) => {
45
+ render: ({ icon, inline, underline }) => {
48
46
  const LinkD = () => (
49
- <>
50
- {" "}
51
- <Link href="#" underline={!inline} inlineText={inline}>
52
- {icon && <PlusCircleFillIcon />}Ex aliqua incididunt
53
- {icon && <PlusCircleFillIcon />}
54
- </Link>{" "}
55
- </>
47
+ <Link href="#" underline={underline} inlineText={inline}>
48
+ {icon && <PlusCircleFillIcon />}Ex aliqua incididunt
49
+ {icon && <PlusCircleFillIcon />}
50
+ </Link>
56
51
  );
57
52
 
58
53
  if (inline) {
59
54
  return (
60
- <div
61
- className="colgap"
62
- style={{
63
- width: "800px",
64
- border: "1px solid black",
65
- borderRadius: "8px",
66
- }}
55
+ <Box
56
+ borderWidth="1"
57
+ borderRadius="large"
58
+ padding="4"
59
+ style={{ maxWidth: "800px" }}
67
60
  >
68
61
  <BodyLong>
69
- Incididunt laborum nisi nisi Lorem
70
- <LinkD />
71
- in. Laborum aute fugiat officia adipisicing non veniam dolor nulla
72
- non ex consectetur fugiat eiusmod aute. Culpa sit aute est duis
73
- minim in in voluptate velit fugiat. Laboris est id deserunt ut ea
74
- Lorem eu. Esse elit laboris aute commodo sint laborum fugiat aliqua.
62
+ Incididunt laborum nisi nisi Lorem <LinkD /> in. Laborum aute fugiat
63
+ officia adipisicing non veniam dolor nulla non ex consectetur fugiat
64
+ eiusmod aute. Culpa sit aute est duis minim in in voluptate velit
65
+ fugiat. Laboris est id deserunt ut ea Lorem eu. Esse elit laboris
66
+ aute commodo sint laborum fugiat aliqua.
75
67
  </BodyLong>
76
- </div>
68
+ </Box>
77
69
  );
78
70
  }
79
71
  return <LinkD />;
@@ -82,22 +74,21 @@ export const Default = {
82
74
  args: {
83
75
  icon: false,
84
76
  inline: false,
77
+ underline: true,
85
78
  },
86
79
  };
87
80
 
88
81
  export const InlineInsideBodyLong = {
89
82
  render: ({ iconLeft, iconRight }) => {
90
83
  return (
91
- <div
92
- className="colgap"
93
- style={{
94
- width: "800px",
95
- border: "1px solid black",
96
- borderRadius: "8px",
97
- }}
84
+ <Box
85
+ borderWidth="1"
86
+ borderRadius="large"
87
+ padding="4"
88
+ style={{ width: "800px" }}
98
89
  >
99
90
  <style>{`.storybook-custom-spacing { white-space: pre;}`}</style>
100
- <BodyLong>
91
+ <BodyLong spacing>
101
92
  <LinkWrapper underline iconLeft={iconLeft} iconRight={iconRight} />
102
93
  Eiusmod aute.
103
94
  <LinkWrapper underline iconLeft={iconLeft} iconRight={iconRight} />
@@ -119,7 +110,7 @@ export const InlineInsideBodyLong = {
119
110
  </LinkWrapper>
120
111
  {" "}spacing.
121
112
  </BodyLong>
122
- </div>
113
+ </Box>
123
114
  );
124
115
  },
125
116
  args: {
@@ -128,86 +119,186 @@ export const InlineInsideBodyLong = {
128
119
  },
129
120
  };
130
121
 
131
- const DemoLink = () => (
122
+ export const Varianter = {
123
+ render: ({ iconLeft, iconRight }) => {
124
+ return (
125
+ <VStack gap="3">
126
+ {["action", "neutral", "subtle"].map((variant) => (
127
+ <div key={variant}>
128
+ <LinkWrapper
129
+ iconLeft={iconLeft}
130
+ iconRight={iconRight}
131
+ variant={variant}
132
+ />
133
+ </div>
134
+ ))}
135
+ </VStack>
136
+ );
137
+ },
138
+ args: {
139
+ iconLeft: false,
140
+ iconRight: false,
141
+ },
142
+ };
143
+
144
+ const LinkWithIcon = () => (
132
145
  <Link href="#">
133
- <PlusCircleFillIcon aria-hidden /> Ex aliqua incididunt{" "}
146
+ <PlusCircleFillIcon aria-hidden />
147
+ Ex aliqua incididunt
134
148
  <PlusCircleFillIcon aria-hidden />
135
149
  </Link>
136
150
  );
137
151
 
138
- export const Icon = () => <DemoLink />;
152
+ export const Icon = () => <LinkWithIcon />;
153
+
154
+ const Variants = () => (
155
+ <VStack gap="3">
156
+ {["action", "neutral", "subtle"].map((variant) => (
157
+ <div key={variant}>
158
+ <LinkWrapper variant={variant} />
159
+ </div>
160
+ ))}
161
+ </VStack>
162
+ );
139
163
 
140
- export const InAlert = () => {
141
- return (
164
+ export const Chromatic = () => (
165
+ <>
166
+ <h2>Default</h2>
167
+ <Link href="#">Ex aliqua incididunt</Link>
168
+
169
+ <h2>With icon</h2>
170
+ <LinkWithIcon />
171
+
172
+ <h2>Variants (no underline)</h2>
173
+ <Variants />
174
+
175
+ <h2>Inline</h2>
176
+ <BodyLong style={{ width: 500 }}>
177
+ Culpa sit aute est duis minim in in voluptate{" "}
178
+ <Link href="#" inlineText>
179
+ dette er en veldig lang lenke som brekker over flere linjer
180
+ <PlusCircleFillIcon aria-hidden />
181
+ </Link>{" "}
182
+ Culpa sit aute est duis minim in in voluptate velit Incididunt laborum
183
+ nisi nisi{" "}
184
+ <Link href="#" inlineText>
185
+ dette er en veldig lang lenke som brekker over flere linjer
186
+ </Link>{" "}
187
+ Lorem officia adipisicing non veniam occaecat commodo id ad aliquip.
188
+ </BodyLong>
189
+
190
+ <h2>In Alert</h2>
142
191
  <div className="colgap">
143
192
  <Alert variant="info">
144
- <DemoLink />
193
+ <LinkWithIcon />
145
194
  </Alert>
146
195
  <Alert variant="success">
147
- <DemoLink />
196
+ <LinkWithIcon />
148
197
  </Alert>
149
198
  <Alert variant="warning">
150
- <DemoLink />
199
+ <LinkWithIcon />
151
200
  </Alert>
152
201
  <Alert variant="error">
153
- <DemoLink />
202
+ <LinkWithIcon />
154
203
  </Alert>
155
204
  </div>
156
- );
157
- };
158
205
 
159
- export const InConfirmationPanel = () => {
160
- return (
206
+ <h2>In ConfirmationPanel</h2>
161
207
  <div className="colgap">
162
208
  <ConfirmationPanel label="demo">
163
- <DemoLink />
209
+ <LinkWithIcon />
164
210
  </ConfirmationPanel>
165
211
  <ConfirmationPanel checked label="demo">
166
- <DemoLink />
212
+ <LinkWithIcon />
167
213
  </ConfirmationPanel>
168
214
  <ConfirmationPanel error="demo" label="demo">
169
- <DemoLink />
215
+ <LinkWithIcon />
216
+ </ConfirmationPanel>
217
+ </div>
218
+ </>
219
+ );
220
+ Chromatic.parameters = { chromatic: { disable: false } };
221
+
222
+ export const ChromaticHover = () => (
223
+ <>
224
+ <h2>With icon</h2>
225
+ <LinkWithIcon />
226
+
227
+ <h2>Variants (no underline)</h2>
228
+ <Variants />
229
+
230
+ <h2>In Alert</h2>
231
+ <div className="colgap">
232
+ <Alert variant="info">
233
+ <LinkWithIcon />
234
+ </Alert>
235
+ </div>
236
+
237
+ <h2>In ConfirmationPanel</h2>
238
+ <div className="colgap">
239
+ <ConfirmationPanel checked label="demo">
240
+ <LinkWithIcon />
170
241
  </ConfirmationPanel>
171
242
  </div>
172
- );
243
+ </>
244
+ );
245
+ ChromaticHover.parameters = {
246
+ chromatic: { disable: false },
247
+ pseudo: { hover: true },
173
248
  };
174
249
 
175
- export const Variants = {
176
- render: ({ iconLeft, iconRight }) => {
177
- return (
178
- <div className="colgap">
179
- {["action", "neutral", "subtle"].map((variant) => (
180
- <>
181
- <div>
182
- <LinkWrapper
183
- iconLeft={iconLeft}
184
- iconRight={iconRight}
185
- variant={variant}
186
- />
187
- </div>
188
- </>
189
- ))}
190
- </div>
191
- );
192
- },
193
- args: {
194
- iconLeft: false,
195
- iconRight: false,
196
- },
250
+ export const ChromaticFocusVisible = () => (
251
+ <>
252
+ <h2>With icon</h2>
253
+ <LinkWithIcon />
254
+
255
+ <h2>Variants (no underline)</h2>
256
+ <Variants />
257
+
258
+ <h2>In Alert</h2>
259
+ <div className="colgap">
260
+ <Alert variant="info">
261
+ <LinkWithIcon />
262
+ </Alert>
263
+ </div>
264
+
265
+ <h2>In ConfirmationPanel</h2>
266
+ <div className="colgap">
267
+ <ConfirmationPanel checked label="demo">
268
+ <LinkWithIcon />
269
+ </ConfirmationPanel>
270
+ </div>
271
+ </>
272
+ );
273
+ ChromaticFocusVisible.parameters = {
274
+ chromatic: { disable: false },
275
+ pseudo: { focusVisible: true },
197
276
  };
198
277
 
199
- export const InlineLink = {
200
- render: () => (
201
- <BodyLong>
202
- Officia incididunt Culpa sit aute est duis minim in in voluptate velit
203
- Incididunt laborum nisi nisi Lorem officia adipisicing non veniam{" "}
204
- <Link href="#" inlineText={true}>
205
- lenke til ny side
206
- <PlusCircleFillIcon aria-hidden />
207
- </Link>{" "}
208
- Culpa sit aute est duis minim in in voluptate velit Incididunt laborum
209
- nisi nisi Lorem officia adipisicing non veniam occaecat commodo id ad
210
- aliquip.
211
- </BodyLong>
212
- ),
278
+ export const ChromaticActive = () => (
279
+ <>
280
+ <h2>With icon</h2>
281
+ <LinkWithIcon />
282
+
283
+ <h2>Variants (no underline)</h2>
284
+ <Variants />
285
+
286
+ <h2>In Alert</h2>
287
+ <div className="colgap">
288
+ <Alert variant="info">
289
+ <LinkWithIcon />
290
+ </Alert>
291
+ </div>
292
+
293
+ <h2>In ConfirmationPanel</h2>
294
+ <div className="colgap">
295
+ <ConfirmationPanel checked label="demo">
296
+ <LinkWithIcon />
297
+ </ConfirmationPanel>
298
+ </div>
299
+ </>
300
+ );
301
+ ChromaticActive.parameters = {
302
+ chromatic: { disable: false },
303
+ pseudo: { active: true },
213
304
  };
@@ -18,3 +18,5 @@ export const LinkPanelDescription = forwardRef<
18
18
  className={cl("navds-link-panel__description", className)}
19
19
  />
20
20
  ));
21
+
22
+ export default LinkPanelDescription;
@@ -22,3 +22,5 @@ export const LinkPanelTitle: OverridableComponent<
22
22
  )}
23
23
  />
24
24
  ));
25
+
26
+ export default LinkPanelTitle;
@@ -1,2 +1,10 @@
1
- export { default as LinkPanel } from "./LinkPanel";
2
- export { type LinkPanelProps } from "./LinkPanel";
1
+ "use client";
2
+ export { default as LinkPanel, type LinkPanelProps } from "./LinkPanel";
3
+ export {
4
+ default as LinkPanelTitle,
5
+ type LinkPanelTitleProps,
6
+ } from "./LinkPanelTitle";
7
+ export {
8
+ default as LinkPanelDescription,
9
+ type LinkPanelDescriptionProps,
10
+ } from "./LinkPanelDescription";
package/src/list/index.ts CHANGED
@@ -1,2 +1,4 @@
1
+ "use client";
1
2
  export { default as List } from "./List";
2
3
  export type { ListProps } from "./types";
4
+ export { default as ListItem, type ListItemProps } from "./ListItem";
@@ -1,2 +1,3 @@
1
+ "use client";
1
2
  export { default as Loader } from "./Loader";
2
3
  export { type LoaderProps } from "./Loader";
@@ -1,5 +1,6 @@
1
1
  import { fireEvent, render, screen, waitFor } from "@testing-library/react";
2
2
  import React, { useState } from "react";
3
+ import { describe, expect, test } from "vitest";
3
4
  import { Button, Modal } from "..";
4
5
  import { BODY_CLASS } from "./ModalUtils";
5
6
 
@@ -3,7 +3,7 @@ import cl from "clsx";
3
3
  import React, { forwardRef, useContext, useEffect, useRef } from "react";
4
4
  import { createPortal } from "react-dom";
5
5
  import { DateContext } from "../date/context";
6
- import { useProvider } from "../provider";
6
+ import { useProvider } from "../provider/Provider";
7
7
  import { Detail, Heading } from "../typography";
8
8
  import { composeEventHandlers } from "../util/composeEventHandlers";
9
9
  import { useId } from "../util/hooks";
@@ -12,7 +12,12 @@ import { ModalContextProvider, useModalContext } from "./Modal.context";
12
12
  import ModalBody from "./ModalBody";
13
13
  import ModalFooter from "./ModalFooter";
14
14
  import ModalHeader from "./ModalHeader";
15
- import { getCloseHandler, useBodyScrollLock } from "./ModalUtils";
15
+ import {
16
+ MouseCoordinates,
17
+ coordsAreInside,
18
+ getCloseHandler,
19
+ useBodyScrollLock,
20
+ } from "./ModalUtils";
16
21
  import dialogPolyfill, { needPolyfill } from "./dialog-polyfill";
17
22
  import { ModalProps } from "./types";
18
23
 
@@ -86,6 +91,7 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
86
91
  "aria-labelledby": ariaLabelledby,
87
92
  style,
88
93
  onClick,
94
+ onMouseDown,
89
95
  ...rest
90
96
  }: ModalProps,
91
97
  ref,
@@ -98,8 +104,8 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
98
104
  const portalNode = useFloatingPortalNode({ root: rootElement });
99
105
 
100
106
  const dateContext = useContext(DateContext);
101
- const modalContext = useModalContext(false);
102
- if (modalContext && !dateContext) {
107
+ const isNested = useModalContext(false) !== undefined;
108
+ if (isNested && !dateContext) {
103
109
  console.error("Modals should not be nested");
104
110
  }
105
111
 
@@ -130,7 +136,7 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
130
136
  }
131
137
  }, [modalRef, portalNode, open]);
132
138
 
133
- useBodyScrollLock(modalRef, portalNode);
139
+ useBodyScrollLock(modalRef, portalNode, isNested);
134
140
 
135
141
  const isWidthPreset =
136
142
  typeof width === "string" && ["small", "medium"].includes(width);
@@ -146,18 +152,42 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
146
152
  ...(!isWidthPreset ? { width } : {}),
147
153
  };
148
154
 
155
+ const mouseClickStart = useRef<MouseCoordinates>({
156
+ clientX: 0,
157
+ clientY: 0,
158
+ });
159
+ const handleModalMouseDown: React.MouseEventHandler<HTMLDialogElement> = (
160
+ event,
161
+ ) => {
162
+ mouseClickStart.current = event;
163
+ };
164
+
165
+ const shouldHandleModalClick = closeOnBackdropClick && !needPolyfill;
166
+
149
167
  /**
150
168
  * @note `closeOnBackdropClick` has issues on polyfill when nesting modals (DatePicker)
151
169
  */
152
- const handleModalClick = (event: React.MouseEvent<HTMLDialogElement>) => {
170
+ const handleModalClick = (
171
+ endEvent: React.MouseEvent<HTMLDialogElement>,
172
+ ) => {
173
+ if (endEvent.target !== modalRef.current) {
174
+ return;
175
+ }
176
+
177
+ const modalRect = modalRef.current.getBoundingClientRect();
178
+
153
179
  if (
154
- closeOnBackdropClick &&
155
- !needPolyfill &&
156
- event.target === modalRef.current &&
157
- (!onBeforeClose || onBeforeClose() !== false)
180
+ coordsAreInside(mouseClickStart.current, modalRect) ||
181
+ coordsAreInside(endEvent, modalRect)
158
182
  ) {
159
- modalRef.current.close();
183
+ return;
184
+ }
185
+
186
+ if (onBeforeClose !== undefined && onBeforeClose() === false) {
187
+ return;
160
188
  }
189
+
190
+ modalRef.current.close();
161
191
  };
162
192
 
163
193
  /**
@@ -182,7 +212,16 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
182
212
  className={mergedClassName}
183
213
  style={mergedStyle}
184
214
  onCancel={composeEventHandlers(onCancel, handleModalCancel)}
185
- onClick={composeEventHandlers(onClick, handleModalClick)}
215
+ onClick={
216
+ shouldHandleModalClick
217
+ ? composeEventHandlers(onClick, handleModalClick)
218
+ : onClick
219
+ }
220
+ onMouseDown={
221
+ shouldHandleModalClick
222
+ ? composeEventHandlers(onMouseDown, handleModalMouseDown)
223
+ : onMouseDown
224
+ }
186
225
  aria-labelledby={mergedAriaLabelledBy}
187
226
  >
188
227
  <ModalContextProvider
@@ -26,7 +26,7 @@ const ModalHeader = forwardRef<HTMLDivElement, ModalHeaderProps>(
26
26
  size="small"
27
27
  variant="tertiary-neutral"
28
28
  onClick={context.closeHandler}
29
- icon={<XMarkIcon title="Lukk modalvindu" />}
29
+ icon={<XMarkIcon title="Lukk" />}
30
30
  />
31
31
  )}
32
32
  {children}
@@ -1,6 +1,20 @@
1
1
  import React from "react";
2
2
  import type { ModalProps } from "./types";
3
3
 
4
+ export interface MouseCoordinates {
5
+ clientX: number;
6
+ clientY: number;
7
+ }
8
+
9
+ export const coordsAreInside = (
10
+ { clientX, clientY }: MouseCoordinates,
11
+ { left, top, right, bottom }: DOMRect,
12
+ ) => {
13
+ if (clientX < left || clientY < top) return false;
14
+ if (clientX > right || clientY > bottom) return false;
15
+ return true;
16
+ };
17
+
4
18
  export function getCloseHandler(
5
19
  modalRef: React.RefObject<HTMLDialogElement>,
6
20
  header: ModalProps["header"],
@@ -18,8 +32,10 @@ export const BODY_CLASS = "navds-modal__document-body";
18
32
  export function useBodyScrollLock(
19
33
  modalRef: React.RefObject<HTMLDialogElement>,
20
34
  portalNode: HTMLElement | null,
35
+ isNested: boolean,
21
36
  ) {
22
37
  React.useEffect(() => {
38
+ if (isNested) return;
23
39
  if (!modalRef.current || !portalNode) return; // We check both to avoid running this twice when not using portal
24
40
  if (modalRef.current.open) document.body.classList.add(BODY_CLASS); // In case `open` is true initially
25
41
 
@@ -35,5 +51,5 @@ export function useBodyScrollLock(
35
51
  observer.disconnect();
36
52
  document.body.classList.remove(BODY_CLASS); // In case modal is unmounted before it's closed
37
53
  };
38
- }, [modalRef, portalNode]);
54
+ }, [modalRef, portalNode, isNested]);
39
55
  }
@@ -1,5 +1,6 @@
1
+ "use client";
1
2
  export { default as Modal } from "./Modal";
2
- export { type ModalBodyProps } from "./ModalBody";
3
- export { type ModalFooterProps } from "./ModalFooter";
4
- export { type ModalHeaderProps } from "./ModalHeader";
3
+ export { default as ModalBody, type ModalBodyProps } from "./ModalBody";
4
+ export { default as ModalFooter, type ModalFooterProps } from "./ModalFooter";
5
+ export { default as ModalHeader, type ModalHeaderProps } from "./ModalHeader";
5
6
  export { type ModalProps } from "./types";
@@ -339,3 +339,57 @@ ChromaticViewportTesting.parameters = {
339
339
  },
340
340
  },
341
341
  };
342
+
343
+ // For testing TS error messages:
344
+
345
+ /* const PropTypeTest = () => {
346
+ return (
347
+ <>
348
+ <Modal header={{ heading: "Label" }}>OK</Modal>
349
+
350
+ <Modal header={{ heading: "Label" }} aria-label="Label">
351
+ OK
352
+ </Modal>
353
+
354
+ <Modal header={{ heading: "Label" }} aria-labelledby="Label">
355
+ OK
356
+ </Modal>
357
+
358
+ <Modal aria-label="Label">OK</Modal>
359
+
360
+ <Modal aria-labelledby="Label">OK</Modal>
361
+
362
+ <Modal aria-label="Label" open onClose={() => null}>
363
+ OK
364
+ </Modal>
365
+
366
+ <Modal>Mangler label</Modal>
367
+
368
+ <Modal open>Mangler onClose eller label</Modal>
369
+
370
+ <Modal open aria-label="Label">
371
+ Mangler onClose
372
+ </Modal>
373
+
374
+ <Modal open onClose={() => null}>
375
+ Mangler label
376
+ </Modal>
377
+
378
+ <Modal header={{ heading: "Label" }} open>
379
+ Mangler onClose
380
+ </Modal>
381
+
382
+ <Modal
383
+ header={{ heading: "Label" }}
384
+ aria-label="Label"
385
+ aria-labelledby="Label"
386
+ >
387
+ For mange labels
388
+ </Modal>
389
+
390
+ <Modal aria-label="Label" aria-labelledby="Label">
391
+ For mange labels
392
+ </Modal>
393
+ </>
394
+ );
395
+ }; */