@navikt/ds-react 6.4.1 → 6.6.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 (349) hide show
  1. package/cjs/date/datepicker/parts/DayButton.js +1 -1
  2. package/cjs/date/datepicker/parts/DayButton.js.map +1 -1
  3. package/cjs/date/hooks/useDatepicker.js +4 -1
  4. package/cjs/date/hooks/useDatepicker.js.map +1 -1
  5. package/cjs/date/hooks/useMonthPicker.js +4 -1
  6. package/cjs/date/hooks/useMonthPicker.js.map +1 -1
  7. package/cjs/date/monthpicker/MonthButton.js +1 -1
  8. package/cjs/date/monthpicker/MonthButton.js.map +1 -1
  9. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
  10. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  11. package/cjs/form/combobox/Input/Input.js +6 -1
  12. package/cjs/form/combobox/Input/Input.js.map +1 -1
  13. package/cjs/form/form-summary/FormSummary.d.ts +82 -0
  14. package/cjs/form/form-summary/FormSummary.js +81 -0
  15. package/cjs/form/form-summary/FormSummary.js.map +1 -0
  16. package/cjs/form/form-summary/FormSummaryAnswer.d.ts +11 -0
  17. package/cjs/form/form-summary/FormSummaryAnswer.js +25 -0
  18. package/cjs/form/form-summary/FormSummaryAnswer.js.map +1 -0
  19. package/cjs/form/form-summary/FormSummaryAnswers.d.ts +9 -0
  20. package/cjs/{toggle-group/ToggleItem.js → form/form-summary/FormSummaryAnswers.js} +6 -10
  21. package/cjs/form/form-summary/FormSummaryAnswers.js.map +1 -0
  22. package/cjs/form/form-summary/FormSummaryEditLink.d.ts +17 -0
  23. package/cjs/form/form-summary/FormSummaryEditLink.js +49 -0
  24. package/cjs/form/form-summary/FormSummaryEditLink.js.map +1 -0
  25. package/cjs/form/form-summary/FormSummaryHeader.d.ts +9 -0
  26. package/cjs/{tabs/TabPanel.js → form/form-summary/FormSummaryHeader.js} +6 -6
  27. package/cjs/form/form-summary/FormSummaryHeader.js.map +1 -0
  28. package/cjs/form/form-summary/FormSummaryHeading.d.ts +14 -0
  29. package/cjs/form/form-summary/FormSummaryHeading.js +31 -0
  30. package/cjs/form/form-summary/FormSummaryHeading.js.map +1 -0
  31. package/cjs/form/form-summary/FormSummaryLabel.d.ts +6 -0
  32. package/cjs/form/form-summary/FormSummaryLabel.js +45 -0
  33. package/cjs/form/form-summary/FormSummaryLabel.js.map +1 -0
  34. package/cjs/form/form-summary/FormSummaryValue.d.ts +6 -0
  35. package/cjs/form/form-summary/FormSummaryValue.js +49 -0
  36. package/cjs/form/form-summary/FormSummaryValue.js.map +1 -0
  37. package/cjs/form/form-summary/index.d.ts +8 -0
  38. package/cjs/form/form-summary/index.js +24 -0
  39. package/cjs/form/form-summary/index.js.map +1 -0
  40. package/cjs/index.d.ts +3 -2
  41. package/cjs/index.js +5 -3
  42. package/cjs/index.js.map +1 -1
  43. package/cjs/tabs/Tabs.context.d.ts +30 -0
  44. package/cjs/tabs/Tabs.context.js +14 -0
  45. package/cjs/tabs/Tabs.context.js.map +1 -0
  46. package/cjs/tabs/Tabs.d.ts +8 -43
  47. package/cjs/tabs/Tabs.js +19 -12
  48. package/cjs/tabs/Tabs.js.map +1 -1
  49. package/cjs/tabs/Tabs.types.d.ts +41 -0
  50. package/cjs/tabs/Tabs.types.js +3 -0
  51. package/cjs/tabs/Tabs.types.js.map +1 -0
  52. package/cjs/tabs/index.d.ts +5 -4
  53. package/cjs/tabs/index.js +6 -6
  54. package/cjs/tabs/index.js.map +1 -1
  55. package/cjs/tabs/parts/tab/Tab.d.ts +25 -0
  56. package/cjs/tabs/parts/tab/Tab.js +64 -0
  57. package/cjs/tabs/parts/tab/Tab.js.map +1 -0
  58. package/cjs/tabs/parts/tab/useTab.d.ts +20 -0
  59. package/cjs/tabs/parts/tab/useTab.js +29 -0
  60. package/cjs/tabs/parts/tab/useTab.js.map +1 -0
  61. package/cjs/tabs/parts/tablist/ScrollButtons.d.ts +8 -0
  62. package/cjs/tabs/parts/tablist/ScrollButtons.js +15 -0
  63. package/cjs/tabs/parts/tablist/ScrollButtons.js.map +1 -0
  64. package/{esm/tabs → cjs/tabs/parts/tablist}/TabList.d.ts +1 -1
  65. package/cjs/tabs/parts/tablist/TabList.js +61 -0
  66. package/cjs/tabs/parts/tablist/TabList.js.map +1 -0
  67. package/cjs/tabs/parts/tablist/useScrollButtons.d.ts +12 -0
  68. package/cjs/tabs/parts/tablist/useScrollButtons.js +61 -0
  69. package/cjs/tabs/parts/tablist/useScrollButtons.js.map +1 -0
  70. package/cjs/tabs/parts/tablist/useTabList.d.ts +7 -0
  71. package/cjs/tabs/parts/tablist/useTabList.js +66 -0
  72. package/cjs/tabs/parts/tablist/useTabList.js.map +1 -0
  73. package/cjs/tabs/parts/tabpanel/TabPanel.d.ts +25 -0
  74. package/cjs/tabs/{Tab.js → parts/tabpanel/TabPanel.js} +7 -20
  75. package/cjs/tabs/parts/tabpanel/TabPanel.js.map +1 -0
  76. package/cjs/tabs/parts/tabpanel/useTabPanel.d.ts +12 -0
  77. package/cjs/tabs/parts/tabpanel/useTabPanel.js +17 -0
  78. package/cjs/tabs/parts/tabpanel/useTabPanel.js.map +1 -0
  79. package/cjs/tabs/useTabs.d.ts +14 -0
  80. package/cjs/tabs/useTabs.js +43 -0
  81. package/cjs/tabs/useTabs.js.map +1 -0
  82. package/cjs/toggle-group/ToggleGroup.context.d.ts +31 -0
  83. package/cjs/toggle-group/ToggleGroup.context.js +16 -0
  84. package/cjs/toggle-group/ToggleGroup.context.js.map +1 -0
  85. package/cjs/toggle-group/ToggleGroup.d.ts +5 -36
  86. package/cjs/toggle-group/ToggleGroup.js +24 -24
  87. package/cjs/toggle-group/ToggleGroup.js.map +1 -1
  88. package/cjs/toggle-group/ToggleGroup.types.d.ts +38 -0
  89. package/cjs/toggle-group/ToggleGroup.types.js +3 -0
  90. package/cjs/toggle-group/ToggleGroup.types.js.map +1 -0
  91. package/cjs/toggle-group/index.d.ts +3 -2
  92. package/cjs/toggle-group/index.js +1 -1
  93. package/cjs/toggle-group/index.js.map +1 -1
  94. package/cjs/toggle-group/{ToggleItem.d.ts → parts/ToggleItem.d.ts} +2 -2
  95. package/cjs/toggle-group/parts/ToggleItem.js +53 -0
  96. package/cjs/toggle-group/parts/ToggleItem.js.map +1 -0
  97. package/cjs/toggle-group/parts/useToggleItem.d.ts +20 -0
  98. package/cjs/toggle-group/parts/useToggleItem.js +76 -0
  99. package/cjs/toggle-group/parts/useToggleItem.js.map +1 -0
  100. package/cjs/toggle-group/useToggleGroup.d.ts +8 -0
  101. package/cjs/toggle-group/useToggleGroup.js +29 -0
  102. package/cjs/toggle-group/useToggleGroup.js.map +1 -0
  103. package/cjs/util/hooks/descendants/descendant.js +10 -1
  104. package/cjs/util/hooks/descendants/descendant.js.map +1 -1
  105. package/cjs/util/hooks/descendants/useDescendant.js +0 -5
  106. package/cjs/util/hooks/descendants/useDescendant.js.map +1 -1
  107. package/esm/date/datepicker/parts/DayButton.js +1 -1
  108. package/esm/date/datepicker/parts/DayButton.js.map +1 -1
  109. package/esm/date/hooks/useDatepicker.js +4 -1
  110. package/esm/date/hooks/useDatepicker.js.map +1 -1
  111. package/esm/date/hooks/useMonthPicker.js +4 -1
  112. package/esm/date/hooks/useMonthPicker.js.map +1 -1
  113. package/esm/date/monthpicker/MonthButton.js +1 -1
  114. package/esm/date/monthpicker/MonthButton.js.map +1 -1
  115. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
  116. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  117. package/esm/form/combobox/Input/Input.js +6 -1
  118. package/esm/form/combobox/Input/Input.js.map +1 -1
  119. package/esm/form/form-summary/FormSummary.d.ts +82 -0
  120. package/esm/form/form-summary/FormSummary.js +52 -0
  121. package/esm/form/form-summary/FormSummary.js.map +1 -0
  122. package/esm/form/form-summary/FormSummaryAnswer.d.ts +11 -0
  123. package/esm/form/form-summary/FormSummaryAnswer.js +19 -0
  124. package/esm/form/form-summary/FormSummaryAnswer.js.map +1 -0
  125. package/esm/form/form-summary/FormSummaryAnswers.d.ts +9 -0
  126. package/esm/{tabs/TabPanel.js → form/form-summary/FormSummaryAnswers.js} +5 -6
  127. package/esm/form/form-summary/FormSummaryAnswers.js.map +1 -0
  128. package/esm/form/form-summary/FormSummaryEditLink.d.ts +17 -0
  129. package/esm/form/form-summary/FormSummaryEditLink.js +20 -0
  130. package/esm/form/form-summary/FormSummaryEditLink.js.map +1 -0
  131. package/esm/form/form-summary/FormSummaryHeader.d.ts +9 -0
  132. package/esm/form/form-summary/FormSummaryHeader.js +19 -0
  133. package/esm/form/form-summary/FormSummaryHeader.js.map +1 -0
  134. package/esm/form/form-summary/FormSummaryHeading.d.ts +14 -0
  135. package/esm/form/form-summary/FormSummaryHeading.js +5 -0
  136. package/esm/form/form-summary/FormSummaryHeading.js.map +1 -0
  137. package/esm/form/form-summary/FormSummaryLabel.d.ts +6 -0
  138. package/esm/form/form-summary/FormSummaryLabel.js +19 -0
  139. package/esm/form/form-summary/FormSummaryLabel.js.map +1 -0
  140. package/esm/form/form-summary/FormSummaryValue.d.ts +6 -0
  141. package/esm/form/form-summary/FormSummaryValue.js +20 -0
  142. package/esm/form/form-summary/FormSummaryValue.js.map +1 -0
  143. package/esm/form/form-summary/index.d.ts +8 -0
  144. package/esm/form/form-summary/index.js +10 -0
  145. package/esm/form/form-summary/index.js.map +1 -0
  146. package/esm/index.d.ts +3 -2
  147. package/esm/index.js +2 -1
  148. package/esm/index.js.map +1 -1
  149. package/esm/tabs/Tabs.context.d.ts +30 -0
  150. package/esm/tabs/Tabs.context.js +10 -0
  151. package/esm/tabs/Tabs.context.js.map +1 -0
  152. package/esm/tabs/Tabs.d.ts +8 -43
  153. package/esm/tabs/Tabs.js +19 -12
  154. package/esm/tabs/Tabs.js.map +1 -1
  155. package/esm/tabs/Tabs.types.d.ts +41 -0
  156. package/esm/tabs/Tabs.types.js +2 -0
  157. package/esm/tabs/Tabs.types.js.map +1 -0
  158. package/esm/tabs/index.d.ts +5 -4
  159. package/esm/tabs/index.js +3 -3
  160. package/esm/tabs/index.js.map +1 -1
  161. package/esm/tabs/parts/tab/Tab.d.ts +25 -0
  162. package/esm/tabs/parts/tab/Tab.js +35 -0
  163. package/esm/tabs/parts/tab/Tab.js.map +1 -0
  164. package/esm/tabs/parts/tab/useTab.d.ts +20 -0
  165. package/esm/tabs/parts/tab/useTab.js +25 -0
  166. package/esm/tabs/parts/tab/useTab.js.map +1 -0
  167. package/esm/tabs/parts/tablist/ScrollButtons.d.ts +8 -0
  168. package/esm/tabs/parts/tablist/ScrollButtons.js +10 -0
  169. package/esm/tabs/parts/tablist/ScrollButtons.js.map +1 -0
  170. package/{cjs/tabs → esm/tabs/parts/tablist}/TabList.d.ts +1 -1
  171. package/esm/tabs/parts/tablist/TabList.js +32 -0
  172. package/esm/tabs/parts/tablist/TabList.js.map +1 -0
  173. package/esm/tabs/parts/tablist/useScrollButtons.d.ts +12 -0
  174. package/esm/tabs/parts/tablist/useScrollButtons.js +57 -0
  175. package/esm/tabs/parts/tablist/useScrollButtons.js.map +1 -0
  176. package/esm/tabs/parts/tablist/useTabList.d.ts +7 -0
  177. package/esm/tabs/parts/tablist/useTabList.js +62 -0
  178. package/esm/tabs/parts/tablist/useTabList.js.map +1 -0
  179. package/esm/tabs/parts/tabpanel/TabPanel.d.ts +25 -0
  180. package/esm/tabs/parts/tabpanel/TabPanel.js +22 -0
  181. package/esm/tabs/parts/tabpanel/TabPanel.js.map +1 -0
  182. package/esm/tabs/parts/tabpanel/useTabPanel.d.ts +12 -0
  183. package/esm/tabs/parts/tabpanel/useTabPanel.js +13 -0
  184. package/esm/tabs/parts/tabpanel/useTabPanel.js.map +1 -0
  185. package/esm/tabs/useTabs.d.ts +14 -0
  186. package/esm/tabs/useTabs.js +39 -0
  187. package/esm/tabs/useTabs.js.map +1 -0
  188. package/esm/toggle-group/ToggleGroup.context.d.ts +31 -0
  189. package/esm/toggle-group/ToggleGroup.context.js +12 -0
  190. package/esm/toggle-group/ToggleGroup.context.js.map +1 -0
  191. package/esm/toggle-group/ToggleGroup.d.ts +5 -36
  192. package/esm/toggle-group/ToggleGroup.js +24 -24
  193. package/esm/toggle-group/ToggleGroup.js.map +1 -1
  194. package/esm/toggle-group/ToggleGroup.types.d.ts +38 -0
  195. package/esm/toggle-group/ToggleGroup.types.js +2 -0
  196. package/esm/toggle-group/ToggleGroup.types.js.map +1 -0
  197. package/esm/toggle-group/index.d.ts +3 -2
  198. package/esm/toggle-group/index.js +1 -1
  199. package/esm/toggle-group/index.js.map +1 -1
  200. package/esm/toggle-group/{ToggleItem.d.ts → parts/ToggleItem.d.ts} +2 -2
  201. package/esm/toggle-group/parts/ToggleItem.js +25 -0
  202. package/esm/toggle-group/parts/ToggleItem.js.map +1 -0
  203. package/esm/toggle-group/parts/useToggleItem.d.ts +20 -0
  204. package/esm/toggle-group/parts/useToggleItem.js +72 -0
  205. package/esm/toggle-group/parts/useToggleItem.js.map +1 -0
  206. package/esm/toggle-group/useToggleGroup.d.ts +8 -0
  207. package/esm/toggle-group/useToggleGroup.js +25 -0
  208. package/esm/toggle-group/useToggleGroup.js.map +1 -0
  209. package/esm/util/hooks/descendants/descendant.js +10 -1
  210. package/esm/util/hooks/descendants/descendant.js.map +1 -1
  211. package/esm/util/hooks/descendants/useDescendant.js +0 -5
  212. package/esm/util/hooks/descendants/useDescendant.js.map +1 -1
  213. package/package.json +15 -6
  214. package/src/date/datepicker/parts/DayButton.tsx +2 -0
  215. package/src/date/hooks/useDatepicker.tsx +5 -1
  216. package/src/date/hooks/useMonthPicker.tsx +5 -1
  217. package/src/date/monthpicker/MonthButton.tsx +1 -0
  218. package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +9 -1
  219. package/src/form/combobox/Input/Input.tsx +5 -0
  220. package/src/form/form-summary/FormSummary.tsx +106 -0
  221. package/src/form/form-summary/FormSummaryAnswer.tsx +27 -0
  222. package/src/form/form-summary/FormSummaryAnswers.tsx +25 -0
  223. package/src/form/form-summary/FormSummaryEditLink.tsx +35 -0
  224. package/src/form/form-summary/FormSummaryHeader.tsx +25 -0
  225. package/src/form/form-summary/FormSummaryHeading.tsx +23 -0
  226. package/src/form/form-summary/FormSummaryLabel.tsx +17 -0
  227. package/src/form/form-summary/FormSummaryValue.tsx +24 -0
  228. package/src/form/form-summary/index.ts +30 -0
  229. package/src/index.ts +16 -15
  230. package/src/tabs/Tabs.context.ts +24 -0
  231. package/src/tabs/Tabs.test.tsx +99 -37
  232. package/src/tabs/Tabs.tsx +48 -70
  233. package/src/tabs/Tabs.types.ts +43 -0
  234. package/src/tabs/index.ts +11 -4
  235. package/src/tabs/parts/tab/Tab.tsx +93 -0
  236. package/src/tabs/parts/tab/useTab.ts +52 -0
  237. package/src/tabs/parts/tablist/ScrollButtons.tsx +29 -0
  238. package/src/tabs/parts/tablist/TabList.tsx +56 -0
  239. package/src/tabs/parts/tablist/useScrollButtons.ts +69 -0
  240. package/src/tabs/parts/tablist/useTabList.ts +68 -0
  241. package/src/tabs/parts/tabpanel/TabPanel.tsx +50 -0
  242. package/src/tabs/parts/tabpanel/useTabPanel.ts +18 -0
  243. package/src/tabs/useTabs.ts +51 -0
  244. package/src/toggle-group/ToggleGroup.context.ts +31 -0
  245. package/src/toggle-group/ToggleGroup.test.tsx +57 -16
  246. package/src/toggle-group/ToggleGroup.tsx +63 -90
  247. package/src/toggle-group/ToggleGroup.types.ts +40 -0
  248. package/src/toggle-group/index.ts +3 -2
  249. package/src/toggle-group/parts/ToggleItem.tsx +55 -0
  250. package/src/toggle-group/parts/useToggleItem.ts +104 -0
  251. package/src/toggle-group/useToggleGroup.ts +33 -0
  252. package/src/util/hooks/descendants/descendant.ts +15 -1
  253. package/src/util/hooks/descendants/useDescendant.tsx +0 -5
  254. package/cjs/tabs/Tab.d.ts +0 -18
  255. package/cjs/tabs/Tab.js.map +0 -1
  256. package/cjs/tabs/TabList.js +0 -111
  257. package/cjs/tabs/TabList.js.map +0 -1
  258. package/cjs/tabs/TabPanel.d.ts +0 -13
  259. package/cjs/tabs/TabPanel.js.map +0 -1
  260. package/cjs/tabs/context.d.ts +0 -8
  261. package/cjs/tabs/context.js +0 -6
  262. package/cjs/tabs/context.js.map +0 -1
  263. package/cjs/toggle-group/ToggleItem.js.map +0 -1
  264. package/cjs/toggle-group/context.d.ts +0 -6
  265. package/cjs/toggle-group/context.js +0 -6
  266. package/cjs/toggle-group/context.js.map +0 -1
  267. package/esm/tabs/Tab.d.ts +0 -18
  268. package/esm/tabs/Tab.js +0 -34
  269. package/esm/tabs/Tab.js.map +0 -1
  270. package/esm/tabs/TabList.js +0 -82
  271. package/esm/tabs/TabList.js.map +0 -1
  272. package/esm/tabs/TabPanel.d.ts +0 -13
  273. package/esm/tabs/TabPanel.js.map +0 -1
  274. package/esm/tabs/context.d.ts +0 -8
  275. package/esm/tabs/context.js +0 -3
  276. package/esm/tabs/context.js.map +0 -1
  277. package/esm/toggle-group/ToggleItem.js +0 -24
  278. package/esm/toggle-group/ToggleItem.js.map +0 -1
  279. package/esm/toggle-group/context.d.ts +0 -6
  280. package/esm/toggle-group/context.js +0 -3
  281. package/esm/toggle-group/context.js.map +0 -1
  282. package/src/accordion/accordion.stories.tsx +0 -286
  283. package/src/alert/alert.stories.tsx +0 -306
  284. package/src/button/button.stories.tsx +0 -185
  285. package/src/chat/chat.stories.tsx +0 -341
  286. package/src/chips/chips.stories.tsx +0 -260
  287. package/src/copybutton/copy-button.stories.tsx +0 -261
  288. package/src/date/datepicker/datepicker.stories.tsx +0 -575
  289. package/src/date/monthpicker/monthpicker.stories.tsx +0 -204
  290. package/src/dropdown/dropdown.stories.tsx +0 -124
  291. package/src/expansion-card/expansion-card.stories.tsx +0 -282
  292. package/src/form/checkbox/checkbox.stories.tsx +0 -281
  293. package/src/form/combobox/combobox.stories.tsx +0 -626
  294. package/src/form/confirmation-panel/confirmation-panel.stories.tsx +0 -128
  295. package/src/form/error-summary/error-summary.stories.tsx +0 -81
  296. package/src/form/fieldset/fieldset.stories.tsx +0 -157
  297. package/src/form/file-upload/file-upload-dropzone.stories.tsx +0 -123
  298. package/src/form/file-upload/file-upload-item.stories.tsx +0 -148
  299. package/src/form/file-upload/file-upload.stories.tsx +0 -248
  300. package/src/form/radio/radio.stories.tsx +0 -230
  301. package/src/form/search/search.stories.tsx +0 -238
  302. package/src/form/select/select.stories.tsx +0 -172
  303. package/src/form/switch/switch.stories.tsx +0 -171
  304. package/src/form/textarea/textarea.stories.tsx +0 -254
  305. package/src/form/textfield/text-field.stories.tsx +0 -143
  306. package/src/guide-panel/guidepanel.stories.tsx +0 -90
  307. package/src/help-text/help-text.stories.tsx +0 -91
  308. package/src/internal-header/header.stories.tsx +0 -229
  309. package/src/layout/bleed/Bleed.stories.tsx +0 -395
  310. package/src/layout/box/Box.stories.tsx +0 -380
  311. package/src/layout/grid/h-grid.stories.tsx +0 -122
  312. package/src/layout/page/Page.stories.tsx +0 -271
  313. package/src/layout/responsive/hide.stories.tsx +0 -80
  314. package/src/layout/responsive/show.stories.tsx +0 -80
  315. package/src/layout/sidemal-test/navno-sidemal.stories.tsx +0 -69
  316. package/src/layout/stack/stack.stories.tsx +0 -183
  317. package/src/link/stories/link.stories.tsx +0 -304
  318. package/src/link-panel/link-panel.stories.tsx +0 -59
  319. package/src/list/list.stories.tsx +0 -280
  320. package/src/loader/loader.stories.tsx +0 -82
  321. package/src/modal/modal.stories.tsx +0 -395
  322. package/src/pagination/pagination.stories.tsx +0 -110
  323. package/src/popover/popover.stories.tsx +0 -113
  324. package/src/portal/Portal.stories.tsx +0 -102
  325. package/src/read-more/readmore.stories.tsx +0 -91
  326. package/src/skeleton/skeleton.stories.tsx +0 -130
  327. package/src/stepper/stepper.stories.tsx +0 -200
  328. package/src/table/stories/table-1.stories.tsx +0 -292
  329. package/src/table/stories/table-2-expandable.stories.tsx +0 -298
  330. package/src/table/stories/table-3-async.stories.tsx +0 -179
  331. package/src/table/stories/tests/table.stories.tsx +0 -102
  332. package/src/tabs/Tab.tsx +0 -66
  333. package/src/tabs/TabList.tsx +0 -128
  334. package/src/tabs/TabPanel.tsx +0 -26
  335. package/src/tabs/Tabs.stories.tsx +0 -191
  336. package/src/tabs/context.ts +0 -9
  337. package/src/tag/tag.stories.tsx +0 -126
  338. package/src/timeline/timeline.stories.tsx +0 -445
  339. package/src/toggle-group/ToggleGroup.stories.tsx +0 -137
  340. package/src/toggle-group/ToggleItem.tsx +0 -41
  341. package/src/toggle-group/context.ts +0 -9
  342. package/src/tooltip/tooltip.stories.tsx +0 -101
  343. package/src/typography/stories/bodylong.stories.tsx +0 -209
  344. package/src/typography/stories/bodyshort.stories.tsx +0 -208
  345. package/src/typography/stories/detail.stories.tsx +0 -115
  346. package/src/typography/stories/error-message.stories.tsx +0 -122
  347. package/src/typography/stories/heading.stories.tsx +0 -169
  348. package/src/typography/stories/label.stories.tsx +0 -131
  349. package/src/util/hooks/descendants/descendant.stories.tsx +0 -147
@@ -1,248 +0,0 @@
1
- import { Meta, StoryFn, StoryObj } from "@storybook/react";
2
- import React, { useEffect, useState } from "react";
3
- import { UploadIcon } from "@navikt/aksel-icons";
4
- import { UNSAFE_FileUpload as FileUpload, FileUploadItemProps } from ".";
5
- import { Alert } from "../../alert";
6
- import { Button } from "../../button";
7
- import { VStack } from "../../layout/stack";
8
- import { Heading } from "../../typography";
9
- import {
10
- FileObject,
11
- FileRejected,
12
- FileRejectionReason,
13
- } from "./FileUpload.types";
14
-
15
- const meta: Meta<typeof FileUpload.Dropzone> = {
16
- title: "ds-react/FileUpload",
17
- component: FileUpload.Dropzone,
18
- };
19
-
20
- export default meta;
21
-
22
- const MAX_FILES = 3;
23
- const MAX_SIZE_MB = 1;
24
- const MAX_SIZE = MAX_SIZE_MB * 1024 * 1024;
25
-
26
- const CustomItem = ({
27
- index,
28
- onDelete,
29
- ...props
30
- }: FileUploadItemProps & {
31
- index: number;
32
- onDelete: (event: React.MouseEvent<HTMLButtonElement>) => void;
33
- }) => {
34
- const [loading, setLoading] = useState(true);
35
-
36
- useEffect(() => {
37
- setTimeout(
38
- () => {
39
- setLoading(false);
40
- },
41
- 1700 * index + 1,
42
- );
43
- }, [index]);
44
-
45
- return (
46
- <FileUpload.Item
47
- {...props}
48
- status={loading ? "uploading" : "idle"}
49
- button={{
50
- action: "delete",
51
- onClick: onDelete,
52
- }}
53
- as="li"
54
- />
55
- );
56
- };
57
-
58
- export const Default: StoryFn = () => {
59
- const [files, setFiles] = useState<FileObject[]>([]);
60
-
61
- function addFiles(filesToAdd: FileObject[]) {
62
- setFiles([...files, ...filesToAdd]);
63
- }
64
-
65
- function removeFile(fileToRemove: FileObject) {
66
- setFiles(files.filter((file) => file !== fileToRemove));
67
- }
68
-
69
- const acceptedFiles = files.filter((file) => !file.error);
70
- const rejectedFiles = files.filter((f): f is FileRejected => f.error);
71
-
72
- return (
73
- <FileUpload style={{ width: 500, maxWidth: "100%", margin: "0 auto" }}>
74
- <VStack gap="6">
75
- <FileUpload.Dropzone
76
- label="Last opp filer til søknaden"
77
- description={`Maks størrelse ${MAX_SIZE_MB} MB`}
78
- accept=".doc,.docx,.xls,.xlsx,.pdf"
79
- maxSizeInBytes={MAX_SIZE}
80
- fileLimit={{ max: MAX_FILES, current: acceptedFiles.length }}
81
- onSelect={addFiles}
82
- />
83
-
84
- {getListError(acceptedFiles) && (
85
- <Alert variant="error">{getListError(acceptedFiles)}</Alert>
86
- )}
87
-
88
- {acceptedFiles.length > 0 && (
89
- <VStack gap="2">
90
- <Heading level="3" size="xsmall">
91
- {`Vedlegg (${acceptedFiles.length} av maks ${MAX_FILES})`}
92
- </Heading>
93
- <VStack as="ul" gap="3">
94
- {acceptedFiles.map((file, index) => (
95
- <CustomItem
96
- key={index}
97
- index={index}
98
- file={file.file}
99
- onDelete={() => removeFile(file)}
100
- />
101
- ))}
102
- </VStack>
103
- </VStack>
104
- )}
105
- {rejectedFiles.length > 0 && (
106
- <VStack gap="2">
107
- <Heading level="3" size="xsmall">
108
- Vedlegg med feil
109
- </Heading>
110
- <VStack as="ul" gap="3">
111
- {rejectedFiles.map((rejected, index) => (
112
- <CustomItem
113
- key={index}
114
- index={index}
115
- file={rejected.file}
116
- error={errors[rejected.reasons[0]]}
117
- onDelete={() => removeFile(rejected)}
118
- />
119
- ))}
120
- </VStack>
121
- </VStack>
122
- )}
123
- </VStack>
124
- </FileUpload>
125
- );
126
- };
127
- Default.parameters = {
128
- chromatic: { disable: true },
129
- layout: "padded",
130
- };
131
-
132
- const errors: Record<FileRejectionReason, string> = {
133
- fileType: "Filformatet støttes ikke",
134
- fileSize: `Filen er større enn ${MAX_SIZE_MB} MB`,
135
- };
136
-
137
- function getListError(acceptedFiles: FileObject[]) {
138
- const filesTooMany = acceptedFiles.length - MAX_FILES;
139
- if (filesTooMany === 1)
140
- return "Du har lagt ved en fil for mye, vennligst fjern en fil";
141
- if (filesTooMany > 1)
142
- return `Du har lagt ved ${filesTooMany} filer for mye, vennligst fjern ${filesTooMany} filer`;
143
- }
144
-
145
- export const Single: StoryFn = () => {
146
- const [files, setFiles] = useState<FileObject[]>([]);
147
-
148
- function addFiles(filesToAdd: FileObject[]) {
149
- setFiles(filesToAdd);
150
- }
151
-
152
- function removeFile() {
153
- setFiles([]);
154
- }
155
-
156
- return (
157
- <VStack gap="6" style={{ width: 500, maxWidth: "100%" }}>
158
- <FileUpload.Dropzone
159
- label="Last opp fil til søknaden"
160
- description={`Maks størrelse ${MAX_SIZE_MB} MB`}
161
- accept=".doc,.docx,.xls,.xlsx,.pdf"
162
- maxSizeInBytes={MAX_SIZE}
163
- fileLimit={{ max: 1, current: files.length }}
164
- multiple={false}
165
- onSelect={addFiles}
166
- />
167
- {files.map((file) => (
168
- <FileUpload.Item
169
- key={file.file.name}
170
- file={file.file}
171
- error={file.error ? errors[file.reasons[0]] : undefined}
172
- button={{
173
- action: "delete",
174
- onClick: removeFile,
175
- }}
176
- />
177
- ))}
178
- </VStack>
179
- );
180
- };
181
- Single.parameters = { chromatic: { disable: true } };
182
-
183
- export const Translation = () => (
184
- <FileUpload
185
- translations={{
186
- dropzone: {
187
- dragAndDropMultiple: "Dra og slipp bilder i format .png",
188
- buttonMultiple: "Velg bilder",
189
- or: "eventuelt",
190
- disabled: "Du kan ikke laste opp flere bilder",
191
- },
192
- item: {
193
- deleteButtonTitle: "Slett bilde",
194
- downloading: "Laster bilde...",
195
- uploading: "Laster opp bilde...",
196
- retryButtonTitle: "Last opp bilde på nytt",
197
- },
198
- }}
199
- >
200
- <VStack gap="3" style={{ width: 500, maxWidth: "100%" }}>
201
- <FileUpload.Dropzone label="Last opp bilder" onSelect={console.log} />
202
- <FileUpload.Item
203
- file={{ name: "eksempel.png", size: 200000 }}
204
- button={{
205
- action: "delete",
206
- onClick: () => null,
207
- }}
208
- />
209
- <FileUpload.Item
210
- file={{ name: "eksempel.png", size: 200000 }}
211
- button={{
212
- action: "retry",
213
- onClick: () => null,
214
- }}
215
- />
216
- <FileUpload.Item
217
- file={{ name: "eksempel.png", size: 200000 }}
218
- status="downloading"
219
- />
220
- <FileUpload.Item
221
- file={{ name: "eksempel.png", size: 200000 }}
222
- status="uploading"
223
- />
224
- <FileUpload.Item
225
- file={{ name: "eksempel.png", size: 200000 }}
226
- status="uploading"
227
- translations={{ uploading: "Sender bilde..." }}
228
- />
229
- </VStack>
230
- </FileUpload>
231
- );
232
-
233
- export const TriggerWithButton: StoryObj<typeof FileUpload.Trigger> = {
234
- render: (props) => {
235
- return (
236
- <FileUpload.Trigger {...props} onSelect={console.log}>
237
- <Button variant="secondary" icon={<UploadIcon aria-hidden />}>
238
- Last opp filer
239
- </Button>
240
- </FileUpload.Trigger>
241
- );
242
- },
243
- args: {
244
- multiple: true,
245
- accept: "",
246
- maxSizeInBytes: 0,
247
- },
248
- };
@@ -1,230 +0,0 @@
1
- import { Meta, StoryObj } from "@storybook/react";
2
- import React, { useState } from "react";
3
- import { Accordion } from "../../accordion";
4
- import AccordionContent from "../../accordion/AccordionContent";
5
- import AccordionHeader from "../../accordion/AccordionHeader";
6
- import AccordionItem from "../../accordion/AccordionItem";
7
- import Radio from "./Radio";
8
- import RadioGroup from "./RadioGroup";
9
-
10
- const meta: Meta<typeof Radio> = {
11
- title: "ds-react/Radio",
12
- component: Radio,
13
- argTypes: {
14
- size: {
15
- options: ["medium", "small"],
16
- control: { type: "radio" },
17
- },
18
- },
19
- parameters: {
20
- chromatic: { disable: true },
21
- },
22
- };
23
- export default meta;
24
-
25
- type Story = StoryObj<typeof Radio>;
26
-
27
- export const Default = (props) => {
28
- const [state, setState] = useState("radio1");
29
-
30
- return (
31
- <RadioGroup
32
- legend={props.legend}
33
- description={props.description}
34
- value={props.controlled ? state : undefined}
35
- onChange={props.controlled ? setState : undefined}
36
- hideLegend={props.hideLegend}
37
- error={props.error ? "Errormelding" : undefined}
38
- size={props?.size}
39
- >
40
- <Radio value="radio1">{props.children || "Apple"}</Radio>
41
- <Radio
42
- value="radio2"
43
- description={props.radioDescription ? "Orange description" : undefined}
44
- >
45
- {props.children || "Orange"}
46
- </Radio>
47
- <Radio value="radio3">{props.children || "Banana"}</Radio>
48
- <Radio value="radio4">{props.children || "Melon"}</Radio>
49
- </RadioGroup>
50
- );
51
- };
52
-
53
- Default.args = {
54
- controlled: false,
55
- error: false,
56
- size: "medium",
57
- legend: "Legend-tekst",
58
- radioDescription: false,
59
- hideLegend: false,
60
- children: "",
61
- description: "",
62
- };
63
-
64
- export const Group = () => (
65
- <RadioGroup legend="Group legend" defaultValue="tekst2">
66
- <Radio value="tekst">Radiotekst</Radio>
67
- <Radio value="tekst2">Radiotekst</Radio>
68
- </RadioGroup>
69
- );
70
-
71
- export const GroupError = () => {
72
- const [isValueSelected, setValueSelected] = useState(false);
73
- return (
74
- <>
75
- <button>Stop her</button>
76
- <RadioGroup
77
- legend="Velg din aldersgruppe"
78
- description="Informasjonen blir brukt for å gi deg bedre søketreff."
79
- error={!isValueSelected ? "Du må velge en aldersgruppe" : undefined}
80
- >
81
- <Radio onChange={() => setValueSelected(true)} value="0-20">
82
- 0-20 år
83
- </Radio>
84
- <Radio
85
- onChange={() => setValueSelected(true)}
86
- value="21-45"
87
- description="Gjelder fra året man blir 21"
88
- >
89
- 21-45 år
90
- </Radio>
91
- <Radio onChange={() => setValueSelected(true)} value="46-100">
92
- 46-100 år
93
- </Radio>
94
- </RadioGroup>
95
- </>
96
- );
97
- };
98
-
99
- export const GroupSmall = () => (
100
- <RadioGroup legend="Group legend" defaultValue="tekst2" size="small">
101
- <Radio value="tekst">Radiotekst</Radio>
102
- <Radio value="tekst2">Radiotekst</Radio>
103
- </RadioGroup>
104
- );
105
-
106
- export const GroupDescription = () => (
107
- <RadioGroup
108
- legend="Group legend"
109
- defaultValue="tekst2"
110
- description="Group description"
111
- >
112
- <Radio value="tekst" description="textdesc">
113
- Radiotekst
114
- </Radio>
115
- <Radio value="tekst2">Radiotekst</Radio>
116
- </RadioGroup>
117
- );
118
-
119
- export const UUDemo = () => (
120
- <div className="colgap">
121
- <RadioGroup
122
- legend="Hvilken frukt vil du ha?"
123
- description="Du kan bare velge en frukt"
124
- defaultValue="eple"
125
- readOnly
126
- >
127
- <Radio value="eple">Eple</Radio>
128
- <Radio value="banan" description="Bananer er importert fra X">
129
- Banan
130
- </Radio>
131
- <Radio value="druer">Druer</Radio>
132
- </RadioGroup>
133
- <RadioGroup
134
- legend="Når har du ferie?"
135
- defaultValue="1"
136
- readOnly
137
- error="du må velge en ferie"
138
- >
139
- <Radio value="1">August</Radio>
140
- <Radio value="2">Juli</Radio>
141
- <Radio value="3">Juni</Radio>
142
- </RadioGroup>
143
- </div>
144
- );
145
-
146
- /**
147
- * Added to test bug where Radio labels are sometimes omitted from accessibility tree in Chrome when inside of an Accordion.
148
- * It was not possible to replicate using a Storybook-test.
149
- *
150
- * See https://nav-it.slack.com/archives/C7NE7A8UF/p1695723000232659
151
- */
152
- export const TestInsideAccordion = () => (
153
- <Accordion>
154
- <AccordionItem>
155
- <AccordionHeader>Åpne for å velge</AccordionHeader>
156
- <AccordionContent>
157
- <RadioGroup legend="Velg én">
158
- <Radio value="1">Første valg</Radio>
159
- <Radio value="2">Andre valg</Radio>
160
- <Radio value="3">Tredje valg</Radio>
161
- </RadioGroup>
162
- </AccordionContent>
163
- </AccordionItem>
164
- </Accordion>
165
- );
166
-
167
- export const Readonly = () => (
168
- <div className="colgap">
169
- <RadioGroup
170
- legend="Hvilken frukt liker du?"
171
- defaultValue={["banan"]}
172
- readOnly
173
- >
174
- <Radio value="banan">Banan</Radio>
175
- <Radio value="eple">Eple</Radio>
176
- <Radio value="druer">Druer</Radio>
177
- </RadioGroup>
178
- <RadioGroup
179
- legend="Hvilken frukt liker du?"
180
- error="feilmelding"
181
- defaultValue="eple"
182
- readOnly
183
- >
184
- <Radio value="eple">Eple</Radio>
185
- <Radio value="banan">Banan</Radio>
186
- </RadioGroup>
187
- </div>
188
- );
189
-
190
- export const Chromatic: Story = {
191
- render: () => (
192
- <div>
193
- <div>
194
- <h2>Default</h2>
195
- <Default />
196
- </div>
197
- <div>
198
- <h2>Group</h2>
199
- <Group />
200
- </div>
201
- <div>
202
- <h2>GroupError</h2>
203
- <GroupError />
204
- </div>
205
- <div>
206
- <h2>GroupSmall</h2>
207
- <GroupSmall />
208
- </div>
209
- <div>
210
- <h2>GroupDescription</h2>
211
- <GroupDescription />
212
- </div>
213
- <div>
214
- <h2>UUDemo</h2>
215
- <UUDemo />
216
- </div>
217
- <div>
218
- <h2>TestInsideAccordion</h2>
219
- <TestInsideAccordion />
220
- </div>
221
- <div>
222
- <h2>Readonly</h2>
223
- <Readonly />
224
- </div>
225
- </div>
226
- ),
227
- parameters: {
228
- chromatic: { disable: false },
229
- },
230
- };
@@ -1,238 +0,0 @@
1
- import { Meta, StoryObj } from "@storybook/react";
2
- import React, { useState } from "react";
3
- import Search from "./Search";
4
-
5
- export default {
6
- title: "ds-react/Search",
7
- component: Search,
8
- argTypes: {
9
- clearButton: {
10
- control: {
11
- type: "boolean",
12
- },
13
- },
14
- size: {
15
- control: {
16
- type: "radio",
17
- options: ["medium", "small"],
18
- },
19
- },
20
- variant: {
21
- control: {
22
- type: "radio",
23
- options: ["primary", "secondary", "simple"],
24
- },
25
- },
26
- error: {
27
- control: {
28
- type: "text",
29
- },
30
- },
31
- },
32
- parameters: {
33
- chromatic: { disable: true },
34
- },
35
- } as Meta;
36
-
37
- type Story = StoryObj<typeof Search>;
38
-
39
- export const Default = (props) => {
40
- const [state, setState] = useState("");
41
- return (
42
- <div data-theme={props.darkmode ? "dark" : "light"}>
43
- <Search
44
- value={props.controlled ? state : undefined}
45
- onChange={props.controlled ? setState : undefined}
46
- label="Søk"
47
- size={props.size}
48
- clearButton={props.clearButton}
49
- variant={props.variant}
50
- hideLabel={props.hideLabel}
51
- error={props.error}
52
- onSearchClick={console.log}
53
- />
54
- </div>
55
- );
56
- };
57
- Default.args = {
58
- controlled: false,
59
- darkmode: false,
60
- hideLabel: true,
61
- };
62
-
63
- export const Small = () => (
64
- <div className="rowgap">
65
- <div className="colgap">
66
- <Search label="Søk" size="small" />
67
- <Search label="Søk" variant="secondary" size="small" />
68
- <Search label="Søk" variant="simple" size="small" />
69
- </div>
70
- <div className="colgap" data-theme="dark">
71
- <Search label="Søk" size="small" />
72
- <Search label="Søk" variant="secondary" size="small" />
73
- <Search label="Søk" variant="simple" size="small" />
74
- </div>
75
- </div>
76
- );
77
-
78
- export const Variants = () => (
79
- <div className="rowgap">
80
- <div className="colgap">
81
- <Search label="Søk" />
82
- <Search label="Søk" variant="secondary" />
83
- <Search label="Søk" variant="simple" />
84
- </div>
85
- <div className="colgap" data-theme="dark">
86
- <Search label="Søk" />
87
- <Search label="Søk" variant="secondary" />
88
- <Search label="Søk" variant="simple" />
89
- </div>
90
- </div>
91
- );
92
-
93
- export const ErrorVariants = () => (
94
- <div className="rowgap">
95
- <div className="colgap">
96
- <Search error="errormsg" label="Søk" />
97
- <Search error="errormsg" label="Søk" variant="secondary" />
98
- <Search error="errormsg" label="Søk" variant="simple" />
99
- </div>
100
- <div className="colgap" data-theme="dark">
101
- <Search error="errormsg" label="Søk" />
102
- <Search error="errormsg" label="Søk" variant="secondary" />
103
- <Search error="errormsg" label="Søk" variant="simple" />
104
- </div>
105
- </div>
106
- );
107
-
108
- export const Placeholder = () => (
109
- <div className="rowgap">
110
- <div className="colgap">
111
- <Search label="Søk" placeholder="Søk" />
112
- </div>
113
- <div className="colgap" data-theme="dark">
114
- <Search label="Søk" placeholder="Søk" />
115
- </div>
116
- </div>
117
- );
118
-
119
- export const Text = () => (
120
- <div className="rowgap">
121
- <div className="colgap">
122
- <Search label="Søk" value="Søketekst" />
123
- <Search label="Søk" variant="secondary" value="Søketekst" />
124
- <Search label="Søk" variant="simple" value="Søketekst" />
125
- </div>
126
- <div className="colgap" data-theme="dark">
127
- <Search label="Søk" value="Søketekst" />
128
- <Search label="Søk" variant="secondary" value="Søketekst" />
129
- <Search label="Søk" variant="simple" value="Søketekst" />
130
- </div>
131
- </div>
132
- );
133
-
134
- export const WLabel = () => (
135
- <div className="rowgap">
136
- <div className="colgap">
137
- <Search label="Label søk" variant="simple" hideLabel={false} />
138
- <Search
139
- label="Label søk"
140
- description="Description søk"
141
- variant="simple"
142
- hideLabel={false}
143
- />
144
- </div>
145
- <div className="colgap" data-theme="dark">
146
- <Search label="Label søk" variant="simple" hideLabel={false} />
147
- <Search
148
- label="Label søk"
149
- description="Description søk"
150
- variant="simple"
151
- hideLabel={false}
152
- />
153
- </div>
154
- </div>
155
- );
156
-
157
- export const NoClearButton = () => (
158
- <div className="colgap">
159
- <Search label="Label søk" clearButton={false} value="søketekst" />
160
- <Search
161
- label="Label søk"
162
- variant="simple"
163
- clearButton={false}
164
- value="søketekst"
165
- />
166
- </div>
167
- );
168
-
169
- export const HtmlSize = () => (
170
- <div className="colgap">
171
- <Search
172
- label="Lorem ipsum dolor sit amet"
173
- description="Saepe laborum delectus officia perferendis quaerat excepturi possimus hic enim dicta assumenda."
174
- hideLabel={false}
175
- htmlSize="20"
176
- />
177
- <Search
178
- label="Lorem ipsum dolor sit amet"
179
- description="Saepe laborum delectus officia perferendis quaerat excepturi possimus hic enim dicta assumenda."
180
- hideLabel={false}
181
- htmlSize="20"
182
- variant="secondary"
183
- />
184
- <Search
185
- label="Lorem ipsum dolor sit amet"
186
- description="Saepe laborum delectus officia perferendis quaerat excepturi possimus hic enim dicta assumenda."
187
- hideLabel={false}
188
- htmlSize="20"
189
- variant="simple"
190
- />
191
- </div>
192
- );
193
-
194
- export const Chromatic: Story = {
195
- render: (...props) => (
196
- <div>
197
- <div>
198
- <h2>Default</h2>
199
- <Default {...props} />
200
- </div>
201
- <div>
202
- <h2>Small</h2>
203
- <Small />
204
- </div>
205
- <div>
206
- <h2>Variants</h2>
207
- <Variants />
208
- </div>
209
- <div>
210
- <h2>ErrorVariants</h2>
211
- <ErrorVariants />
212
- </div>
213
- <div>
214
- <h2>Placeholder</h2>
215
- <Placeholder />
216
- </div>
217
- <div>
218
- <h2>Text</h2>
219
- <Text />
220
- </div>
221
- <div>
222
- <h2>WLabel</h2>
223
- <WLabel />
224
- </div>
225
- <div>
226
- <h2>NoClearButton</h2>
227
- <NoClearButton />
228
- </div>
229
- <div>
230
- <h2>HtmlSize</h2>
231
- <HtmlSize />
232
- </div>
233
- </div>
234
- ),
235
- parameters: {
236
- chromatic: { disable: false },
237
- },
238
- };