@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,82 +0,0 @@
1
- import { Meta } from "@storybook/react";
2
- import React from "react";
3
- import Loader, { LoaderProps } from "./Loader";
4
-
5
- export default {
6
- title: "ds-react/Loader",
7
- component: Loader,
8
- argTypes: {
9
- size: {
10
- control: {
11
- type: "radio",
12
- options: [
13
- "3xlarge",
14
- "2xlarge",
15
- "xlarge",
16
- "large",
17
- "medium",
18
- "small",
19
- "xsmall",
20
- ],
21
- },
22
- },
23
- variant: {
24
- control: {
25
- type: "radio",
26
- options: ["neutral", "interaction", "inverted"],
27
- },
28
- },
29
- },
30
- } as Meta;
31
-
32
- export const Default = {
33
- render: (props: LoaderProps) => {
34
- return <Loader {...props} />;
35
- },
36
-
37
- args: {
38
- transparent: false,
39
- },
40
- };
41
-
42
- export const Size = () => (
43
- <div>
44
- <Loader size="3xlarge" />
45
- <Loader size="2xlarge" />
46
- <Loader size="xlarge" />
47
- <Loader size="large" />
48
- <Loader size="medium" />
49
- <Loader size="small" />
50
- <Loader size="xsmall" />
51
- </div>
52
- );
53
-
54
- export const Variant = () => (
55
- <div className="colgap">
56
- <div>
57
- <Loader size="3xlarge" variant="neutral" />
58
- <Loader size="3xlarge" variant="inverted" />
59
- <Loader size="3xlarge" variant="interaction" />
60
- </div>
61
- <div style={{ backgroundColor: "#23262a" }}>
62
- <Loader size="3xlarge" variant="neutral" />
63
- <Loader size="3xlarge" variant="inverted" />
64
- <Loader size="3xlarge" variant="interaction" />
65
- </div>
66
- </div>
67
- );
68
-
69
- export const Transparent = () => (
70
- <div className="colgap">
71
- <div>
72
- <Loader size="3xlarge" transparent variant="neutral" />
73
- <Loader size="3xlarge" transparent variant="inverted" />
74
- <Loader size="3xlarge" transparent variant="interaction" />
75
- </div>
76
- <div style={{ backgroundColor: "#23262a" }}>
77
- <Loader size="3xlarge" transparent variant="neutral" />
78
- <Loader size="3xlarge" transparent variant="inverted" />
79
- <Loader size="3xlarge" transparent variant="interaction" />
80
- </div>
81
- </div>
82
- );
@@ -1,395 +0,0 @@
1
- import { Meta, StoryFn } from "@storybook/react";
2
- import React, { useRef, useState } from "react";
3
- import { FileIcon } from "@navikt/aksel-icons";
4
- import { Button } from "../button";
5
- import { Checkbox, CheckboxGroup } from "../form/checkbox";
6
- import { VStack } from "../layout/stack";
7
- import { Tooltip } from "../tooltip";
8
- import { BodyLong, Heading } from "../typography";
9
- import Modal from "./Modal";
10
-
11
- const meta: Meta<typeof Modal> = {
12
- title: "ds-react/Modal",
13
- component: Modal,
14
- parameters: {
15
- chromatic: { pauseAnimationAtEnd: true },
16
- },
17
- };
18
- export default meta;
19
-
20
- export const WithUseRef: StoryFn = () => {
21
- const ref = useRef<HTMLDialogElement>(null);
22
- const ref2 = useRef<HTMLDialogElement>(null);
23
-
24
- return (
25
- <div>
26
- <Button onClick={() => ref.current?.showModal()}>Open Modal</Button>
27
- <Modal
28
- open={ref.current ? undefined : true /* initially open */}
29
- onClose={() => null}
30
- ref={ref}
31
- header={{
32
- label: "Optional label",
33
- icon: <FileIcon aria-hidden />,
34
- heading: "Title",
35
- size: "small",
36
- }}
37
- closeOnBackdropClick
38
- >
39
- <Modal.Body>
40
- <BodyLong spacing>
41
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
42
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
43
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
44
- aliquip ex ea commodo consequat. Duis aute irure dolor in
45
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
46
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
47
- culpa qui officia deserunt mollit anim id est laborum.
48
- </BodyLong>
49
-
50
- {/* Nested modal */}
51
- <Modal
52
- ref={ref2}
53
- onBeforeClose={() =>
54
- window.confirm("Are you sure you want to close the modal?")
55
- }
56
- closeOnBackdropClick
57
- aria-labelledby="heading123"
58
- >
59
- <Modal.Header>
60
- <Heading size="medium" level="2" id="heading123">
61
- Custom header
62
- </Heading>
63
- </Modal.Header>
64
- <Modal.Body>
65
- Nesting modals is not recommended, but works in most cases.
66
- </Modal.Body>
67
- <Modal.Footer>
68
- <Button onClick={() => ref2.current?.close()}>
69
- Close w/o confirm
70
- </Button>
71
- </Modal.Footer>
72
- </Modal>
73
-
74
- <BodyLong>
75
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
76
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
77
- ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
78
- aliquip ex ea commodo consequat. Duis aute irure dolor in
79
- reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
80
- pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
81
- culpa qui officia deserunt mollit anim id est laborum.
82
- </BodyLong>
83
- </Modal.Body>
84
- <Modal.Footer>
85
- <Button>Primary</Button>
86
- <Button variant="secondary" onClick={() => ref2.current?.showModal()}>
87
- Secondary
88
- </Button>
89
- <Button variant="tertiary">Tertiary</Button>
90
- </Modal.Footer>
91
- </Modal>
92
- </div>
93
- );
94
- };
95
- WithUseRef.storyName = "With useRef";
96
-
97
- export const WithUseState: StoryFn = () => {
98
- const [open, setOpen] = useState(true);
99
- const [open2, setOpen2] = useState(false);
100
-
101
- return (
102
- <div style={{ minHeight: "1000px", display: "flex", alignItems: "center" }}>
103
- <div style={{ display: "flex", gap: "1em" }}>
104
- <Button variant="secondary">Button</Button>
105
- <Button onClick={() => setOpen(true)}>Open Modal</Button>
106
- <Button variant="secondary">Button</Button>
107
- </div>
108
- <Modal
109
- header={{ heading: "Simple header" }}
110
- open={open}
111
- onClose={() => setOpen(false)}
112
- width={400}
113
- >
114
- <Modal.Body>
115
- This modal has width set to 400.
116
- {/* Nested modal */}
117
- <Modal
118
- open={open2}
119
- onClose={(e) => {
120
- e.stopPropagation(); // onClose wil propagate to parent modal if not stopped
121
- setOpen2(false);
122
- }}
123
- closeOnBackdropClick
124
- aria-label="Nested modal"
125
- width={800}
126
- >
127
- <Modal.Body>
128
- <BodyLong spacing>
129
- Nesting modals is not recommended, but works in most cases. This
130
- one does not have header or footer, but is bigger than the
131
- parent modal.
132
- </BodyLong>
133
- <BodyLong spacing>Width is set to 800.</BodyLong>
134
- <Button onClick={() => setOpen2(false)}>Close</Button>
135
- </Modal.Body>
136
- </Modal>
137
- </Modal.Body>
138
- <Modal.Footer>
139
- <Button onClick={() => setOpen2(true)}>Primary</Button>
140
- <Button variant="secondary" onClick={() => setOpen(false)}>
141
- Cancel
142
- </Button>
143
- </Modal.Footer>
144
- </Modal>
145
- </div>
146
- );
147
- };
148
- WithUseState.storyName = "With useState";
149
-
150
- export const EmptyHeader: StoryFn = () => (
151
- <Modal open onClose={() => null} aria-label="Modal with empty header">
152
- <Modal.Header />
153
- <Modal.Body>
154
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
155
- tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
156
- veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
157
- commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
158
- velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
159
- cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
160
- est laborum.
161
- </Modal.Body>
162
- </Modal>
163
- );
164
-
165
- export const Small: StoryFn = () => (
166
- <Modal
167
- open
168
- onClose={() => null}
169
- width="small"
170
- header={{ heading: "Simple header" }}
171
- >
172
- <Modal.Body>Lorem ipsum dolor sit amet.</Modal.Body>
173
- </Modal>
174
- );
175
- Small.storyName = "Size = Small";
176
-
177
- export const MediumWithPortal: StoryFn = () => (
178
- <Modal
179
- open
180
- onClose={() => null}
181
- portal
182
- width="medium"
183
- header={{ heading: "Simple header" }}
184
- >
185
- <Modal.Body>Lorem ipsum dolor sit amet.</Modal.Body>
186
- </Modal>
187
- );
188
- MediumWithPortal.storyName = "Size = Medium (with portal)";
189
-
190
- export const Large800: StoryFn = () => (
191
- <Modal
192
- open
193
- onClose={() => null}
194
- width={800}
195
- header={{ heading: "Simple header" }}
196
- >
197
- <Modal.Body>Lorem ipsum dolor sit amet.</Modal.Body>
198
- </Modal>
199
- );
200
- Large800.storyName = "Size = 800px";
201
-
202
- export const WithTooltip: StoryFn = () => {
203
- const ref = useRef<HTMLDialogElement>(null);
204
-
205
- return (
206
- <div>
207
- <Button onClick={() => ref.current?.showModal()}>Open Modal</Button>
208
- <Modal
209
- open={ref.current ? undefined : true /* initially open */}
210
- onClose={() => null}
211
- ref={ref}
212
- aria-label="Tooltip test"
213
- >
214
- <Modal.Body>
215
- <div style={{ marginBottom: "1rem" }}>
216
- <Tooltip content="This_is_the_first_tooltip">
217
- <Button>Test 1</Button>
218
- </Tooltip>
219
- </div>
220
- <Tooltip content="This is the second tooltip">
221
- <Button>Test 2</Button>
222
- </Tooltip>
223
- </Modal.Body>
224
- </Modal>
225
- </div>
226
- );
227
- };
228
-
229
- export const WithSrOnlyElement: StoryFn = () => (
230
- <Modal
231
- open
232
- onClose={() => null}
233
- width={300}
234
- header={{ heading: "Simple header" }}
235
- >
236
- <Modal.Body>
237
- <VStack gap="16">
238
- <BodyLong>
239
- The modal body needs to have position:relative to make sr-only
240
- elements position themselves correctly when the modal body is
241
- overflowing (i.e. has a scrollbar).
242
- </BodyLong>
243
- <BodyLong>
244
- If the modal body (and other parents of the sr-only element inside the
245
- modal body) does not have position:relative (or equivalent), the
246
- sr-only element is pushed downwards relative to the height of the
247
- overflowing content.
248
- </BodyLong>
249
- <BodyLong>
250
- In the most extreme cases, an additional scrollbar appears bc. the
251
- dialog element (parent of modal body) starts overflowing. (We have
252
- overflow:auto on the dialog element in case you are on a small screen
253
- and header/footer has a lot of content.)
254
- </BodyLong>
255
- <BodyLong>Example: CheckboxGroup with a hidden legend:</BodyLong>
256
- <CheckboxGroup legend="What fruits do you like?" hideLegend>
257
- <Checkbox>Banana</Checkbox>
258
- <Checkbox>Apple</Checkbox>
259
- <Checkbox>Orange</Checkbox>
260
- <Checkbox>Pear</Checkbox>
261
- </CheckboxGroup>
262
- <BodyLong>
263
- Try to remove position:relative from the modal body and see what
264
- happens. (Use DevTools to find the legend element.) You might need to
265
- make the viewport shorter to get the full effect (double scrollbar).
266
- </BodyLong>
267
- <BodyLong>
268
- Note: The large amount of gap has been added on purpose to force
269
- overflow.
270
- </BodyLong>
271
- </VStack>
272
- </Modal.Body>
273
- <Modal.Footer>
274
- <Button variant="secondary">Dummy button</Button>
275
- </Modal.Footer>
276
- </Modal>
277
- );
278
-
279
- export const ChromaticViewportTesting: StoryFn = () => (
280
- <div id="modal-story-wrapper" style={{ width: "100vw", height: "100vh" }}>
281
- <style>{`#storybook-root { padding: 0 !important }`}</style>
282
- <Modal
283
- open
284
- onClose={() => null}
285
- header={{ heading: "Chromatic Viewports Testing", label: "Test" }}
286
- >
287
- <Modal.Body>
288
- <BodyLong spacing>
289
- This story is tailored for testing the breakpoints with Chromatic.
290
- </BodyLong>
291
- <BodyLong spacing>
292
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
293
- eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
294
- minim veniam, quis nostrud exercitation ullamco laboris nisi ut
295
- aliquip ex ea commodo consequat.
296
- </BodyLong>
297
- <BodyLong spacing>
298
- Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
299
- dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
300
- proident, sunt in culpa qui officia deserunt mollit anim id est
301
- laborum.
302
- </BodyLong>
303
- <BodyLong>
304
- Sed ut perspiciatis unde omnis iste natus error sit voluptatem
305
- accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae
306
- ab illo inventore veritatis et quasi architecto beatae vitae dicta
307
- sunt explicabo.
308
- </BodyLong>
309
- </Modal.Body>
310
- <Modal.Footer>
311
- <Button>Primary</Button>
312
- <Button variant="secondary">Secondary</Button>
313
- <Button variant="tertiary">Tertiary</Button>
314
- </Modal.Footer>
315
- </Modal>
316
- </div>
317
- );
318
- ChromaticViewportTesting.parameters = {
319
- chromatic: {
320
- modes: {
321
- mobile_portrait: {
322
- viewport: {
323
- width: 400,
324
- height: 850,
325
- },
326
- },
327
- mobile_landscape: {
328
- viewport: {
329
- width: 850,
330
- height: 400,
331
- },
332
- },
333
- desktop: {
334
- viewport: {
335
- width: 1280,
336
- height: 960,
337
- },
338
- },
339
- },
340
- },
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
- }; */
@@ -1,110 +0,0 @@
1
- import React, { useState } from "react";
2
- import { Link, HashRouter as Router } from "react-router-dom";
3
- import Pagination from "./Pagination";
4
-
5
- export default {
6
- title: "ds-react/Pagination",
7
- component: Pagination,
8
- argTypes: {
9
- size: {
10
- control: {
11
- type: "radio",
12
- options: ["medium", "small", "xsmall"],
13
- },
14
- },
15
- },
16
- };
17
-
18
- export const Default = (props: any) => {
19
- const [page, setPage] = useState(props.page);
20
- return <Pagination {...props} page={page} onPageChange={setPage} />;
21
- };
22
- Default.args = {
23
- page: 2,
24
- count: 8,
25
- siblingCount: 1,
26
- boundaryCount: 1,
27
- prevNextTexts: false,
28
- };
29
-
30
- export const PrevNextText = () => {
31
- const [page, setPage] = useState(1);
32
- const props = {
33
- page: 1,
34
- count: 8,
35
- siblingCount: 1,
36
- boundaryCount: 1,
37
- };
38
- return (
39
- <div className="colgap" style={{ alignItems: "center" }}>
40
- <Pagination {...props} page={page} onPageChange={setPage} prevNextTexts />
41
- <Pagination
42
- {...props}
43
- page={page}
44
- onPageChange={setPage}
45
- prevNextTexts
46
- size="small"
47
- />
48
- <Pagination
49
- {...props}
50
- page={page}
51
- onPageChange={setPage}
52
- prevNextTexts
53
- size="xsmall"
54
- />
55
- </div>
56
- );
57
- };
58
-
59
- export const Small = () => {
60
- const [page, setPage] = useState(1);
61
- const props = {
62
- page: 1,
63
- count: 8,
64
- siblingCount: 1,
65
- boundaryCount: 1,
66
- };
67
- return (
68
- <Pagination {...props} page={page} onPageChange={setPage} size="small" />
69
- );
70
- };
71
-
72
- export const XSmall = () => {
73
- const [page, setPage] = useState(1);
74
- const props = {
75
- page: 1,
76
- count: 8,
77
- siblingCount: 1,
78
- boundaryCount: 1,
79
- };
80
- return (
81
- <Pagination {...props} page={page} onPageChange={setPage} size="xsmall" />
82
- );
83
- };
84
-
85
- export const AsLink = () => {
86
- const [page, setPage] = useState(1);
87
- const props = {
88
- page: 1,
89
- count: 8,
90
- siblingCount: 1,
91
- boundaryCount: 1,
92
- };
93
- return (
94
- <Pagination
95
- {...props}
96
- page={page}
97
- onPageChange={setPage}
98
- renderItem={(item) => (
99
- <Pagination.Item {...item} as={Link} to={`?page=${item.page}`} />
100
- )}
101
- />
102
- );
103
- };
104
- AsLink.decorators = [
105
- (Story) => (
106
- <Router>
107
- <Story />
108
- </Router>
109
- ),
110
- ];
@@ -1,113 +0,0 @@
1
- import React, { useState } from "react";
2
- import { Button } from "../button";
3
- import Popover from "./Popover";
4
-
5
- const placements = [
6
- "top",
7
- "bottom",
8
- "right",
9
- "left",
10
- "top-start",
11
- "top-end",
12
- "bottom-start",
13
- "bottom-end",
14
- "right-start",
15
- "right-end",
16
- "left-start",
17
- "left-end",
18
- ];
19
- export default {
20
- title: "ds-react/Popover",
21
- component: Popover,
22
- parameters: {
23
- chromatic: { disable: true },
24
- },
25
- argTypes: {
26
- open: {
27
- control: { type: "boolean" },
28
- },
29
- arrow: {
30
- control: { type: "boolean" },
31
- },
32
- offset: {
33
- control: { type: "number" },
34
- },
35
- strategy: {
36
- defaultValue: "absolute",
37
- options: ["fixed", "absolute"],
38
- control: { type: "radio" },
39
- },
40
- placement: {
41
- defaultValue: "right",
42
- options: placements,
43
- control: { type: "radio" },
44
- },
45
- },
46
- };
47
-
48
- export const Default = (props: any) => {
49
- const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>();
50
- const [open, setOpen] = useState(false);
51
- return (
52
- <div tabIndex={-1}>
53
- <Button ref={(el) => setAnchorEl(el)} onClick={() => setOpen((x) => !x)}>
54
- Open
55
- </Button>
56
- <Popover
57
- {...props}
58
- open={props.open ?? open}
59
- anchorEl={anchorEl}
60
- onClose={() => setOpen(false)}
61
- >
62
- <Popover.Content>Velit in consequat</Popover.Content>
63
- </Popover>
64
- &nbsp;
65
- <Button variant="secondary">Another button</Button>
66
- </div>
67
- );
68
- };
69
-
70
- const Template = (props) => {
71
- const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);
72
-
73
- return (
74
- <>
75
- <Button ref={(el) => setAnchorEl(el)}>X</Button>
76
- <Popover {...props} open anchorEl={anchorEl}>
77
- <Popover.Content>
78
- Velit in consequat Lorem
79
- <br />
80
- {props.placement}
81
- </Popover.Content>
82
- </Popover>
83
- </>
84
- );
85
- };
86
-
87
- export const Placement = () => {
88
- return (
89
- <div className="colgap" style={{ gap: "12rem" }}>
90
- {placements.map((placement) => (
91
- <Template key={placement} placement={placement} />
92
- ))}
93
- </div>
94
- );
95
- };
96
-
97
- export const Arrow = () => {
98
- return (
99
- <div className="colgap" style={{ gap: "12rem" }}>
100
- <Template arrow />
101
- <Template arrow={false} />
102
- </div>
103
- );
104
- };
105
-
106
- export const Offset = () => {
107
- return (
108
- <div className="colgap" style={{ gap: "12rem" }}>
109
- <Template arrow offset={30} />
110
- <Template arrow={false} offset={30} />
111
- </div>
112
- );
113
- };