@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 +1 @@
1
- {"version":3,"file":"useDescendant.js","sourceRoot":"","sources":["../../../../src/util/hooks/descendants/useDescendant.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useDescendant.js","sourceRoot":"","sources":["../../../../src/util/hooks/descendants/useDescendant.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAqB,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B;;;GAGG;AACH,SAAS,cAAc;IAIrB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,kBAAkB,EAAQ,CAAC,CAAC,OAAO,CAAC;IAEnE,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,GAAG,aAAa,CAEvE;IACA,IAAI,EAAE,qBAAqB;IAC3B,YAAY,EAAE,+DAA+D;CAC9E,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAS,aAAa,CAGpB,OAA8B;IAC9B,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,MAAM,CAAI,IAAI,CAAC,CAAC;IAE5B,qBAAqB,CAAC,GAAG,EAAE;QACzB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,OAAO;YACzB,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,qBAAqB,CAAC,GAAG,EAAE;QACzB,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,IAAI,KAAK,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,IAAI,CAAuB,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,IAAI,CAAuB,WAAW,CAAC,QAAQ,CAAC,CAAC;IAErD,OAAO;QACL,WAAW;QACX,KAAK;QACL,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;QACrD,QAAQ,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IAIrC,MAAM,eAAe,GAAG,IAAI,CAC1B,CAAC,KAAK,EAAE,EAAE,CAAC,CACT,oBAAC,0BAA0B,oBAAK,KAAK,CAAC,KAAK,GACxC,KAAK,CAAC,QAAQ,CACY,CAC9B,CACF,CAAC;IAEF,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAClC,IAAI,CAA2B,qBAAqB,EAAE,CAAC,CAAC;IAE1D,MAAM,cAAc,GAAG,CAAC,OAA8B,EAAE,EAAE,CACxD,aAAa,CAAO,OAAO,CAAC,CAAC;IAE/B,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,cAAc,EAAQ,CAAC;IAErD,OAAO;QACL,mBAAmB;QACnB,eAAe;QACf,+CAA+C;QAC/C,sBAAsB;QACtB,8EAA8E;QAC9E,eAAe;QACf,+BAA+B;QAC/B,cAAc;KACN,CAAC;AACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navikt/ds-react",
3
- "version": "6.4.1",
3
+ "version": "6.6.0",
4
4
  "description": "React components from the Norwegian Labour and Welfare Administration.",
5
5
  "author": "Aksel, a team part of the Norwegian Labour and Welfare Administration.",
6
6
  "license": "MIT",
@@ -24,7 +24,8 @@
24
24
  "/cjs",
25
25
  "/esm",
26
26
  "/src",
27
- "!**/*.tsbuildinfo"
27
+ "!**/*.tsbuildinfo",
28
+ "!**/*.stories.*"
28
29
  ],
29
30
  "main": "./cjs/index.js",
30
31
  "module": "./esm/index.js",
@@ -549,6 +550,16 @@
549
550
  "default": "./cjs/form/file-upload/index.js"
550
551
  }
551
552
  },
553
+ "./FormSummary": {
554
+ "import": {
555
+ "types": "./esm/form/form-summary/index.d.ts",
556
+ "default": "./esm/form/form-summary/index.js"
557
+ },
558
+ "require": {
559
+ "types": "./cjs/form/form-summary/index.d.ts",
560
+ "default": "./cjs/form/form-summary/index.js"
561
+ }
562
+ },
552
563
  "./package.json": "./package.json"
553
564
  },
554
565
  "scripts": {
@@ -562,10 +573,8 @@
562
573
  },
563
574
  "dependencies": {
564
575
  "@floating-ui/react": "0.25.4",
565
- "@navikt/aksel-icons": "^6.4.1",
566
- "@navikt/ds-tokens": "^6.4.1",
567
- "@radix-ui/react-tabs": "1.0.0",
568
- "@radix-ui/react-toggle-group": "1.0.0",
576
+ "@navikt/aksel-icons": "^6.6.0",
577
+ "@navikt/ds-tokens": "^6.6.0",
569
578
  "clsx": "^2.1.0",
570
579
  "date-fns": "^3.0.0",
571
580
  "react-day-picker": "8.10.0"
@@ -23,6 +23,8 @@ const DayButton = (props: DayProps) => {
23
23
  role={undefined}
24
24
  aria-label={dateTime}
25
25
  aria-hidden={dayRender.activeModifiers.outside}
26
+ aria-selected={undefined}
27
+ aria-pressed={!!dayRender.activeModifiers.selected}
26
28
  />
27
29
  );
28
30
  };
@@ -229,12 +229,16 @@ export const useDatepicker = (
229
229
 
230
230
  /* Only allow de-selecting if not required */
231
231
  const handleDayClick: DayClickEventHandler = (day, { selected }) => {
232
+ if (selected && required) {
233
+ return;
234
+ }
235
+
232
236
  if (day && !selected) {
233
237
  handleOpen(false);
234
238
  anchorRef?.focus();
235
239
  }
236
240
 
237
- if (!required && selected) {
241
+ if (selected) {
238
242
  updateDate(undefined);
239
243
  setInputValue("");
240
244
  updateValidation({ isValidDate: false, isEmpty: true });
@@ -225,13 +225,17 @@ export const useMonthpicker = (
225
225
 
226
226
  /* Only allow de-selecting if not required */
227
227
  const handleMonthClick = (month?: Date) => {
228
+ if (!month && required) {
229
+ return;
230
+ }
231
+
228
232
  if (month) {
229
233
  handleOpen(false);
230
234
  setYear(month);
231
235
  anchorRef?.focus();
232
236
  }
233
237
 
234
- if (!required && !month) {
238
+ if (!month) {
235
239
  updateMonth(undefined);
236
240
  updateValidation({ isValidMonth: false, isEmpty: true });
237
241
  setInputValue("");
@@ -66,6 +66,7 @@ export const MonthButton = ({
66
66
  type="button"
67
67
  onClick={() => onSelect(isSelected ? undefined : month)}
68
68
  disabled={isDisabled}
69
+ aria-pressed={!!isSelected}
69
70
  className={cl("navds-date__month-button", {
70
71
  "rdp-day_today": dateIsInCurrentMonth(month, year),
71
72
  "rdp-day_selected": isSelected,
@@ -97,9 +97,17 @@ export const FilteredOptionsProvider = ({
97
97
  [filteredOptionsUtils.getAddNewOptionId(id)]: allowNewValues
98
98
  ? toComboboxOption(value)
99
99
  : undefined,
100
+ ...customOptions.reduce(
101
+ (acc, customOption) => ({
102
+ ...acc,
103
+ [filteredOptionsUtils.getOptionId(id, customOption.label)]:
104
+ customOption,
105
+ }),
106
+ {},
107
+ ),
100
108
  },
101
109
  ),
102
- [allowNewValues, id, options, value],
110
+ [allowNewValues, customOptions, id, options, value],
103
111
  );
104
112
 
105
113
  useClientLayoutEffect(() => {
@@ -128,6 +128,10 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
128
128
  removeSelectedOption(lastSelectedOption);
129
129
  }
130
130
  }
131
+ } else if (e.key === "Enter" || e.key === "Accept") {
132
+ if (activeDecendantId || value) {
133
+ e.preventDefault();
134
+ }
131
135
  } else if (e.key === "ArrowDown") {
132
136
  // Check that cursor position is at the end of the input field,
133
137
  // so we don't interfere with text editing
@@ -182,6 +186,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
182
186
  {...omit(inputProps, ["aria-invalid"])}
183
187
  ref={ref}
184
188
  value={value}
189
+ onBlur={() => virtualFocus.moveFocusToTop()}
185
190
  onChange={onChangeHandler}
186
191
  type="text"
187
192
  role="combobox"
@@ -0,0 +1,106 @@
1
+ import cl from "clsx";
2
+ import React, { HTMLAttributes, forwardRef } from "react";
3
+ import FormSummaryAnswer from "./FormSummaryAnswer";
4
+ import FormSummaryAnswers from "./FormSummaryAnswers";
5
+ import FormSummaryEditLink from "./FormSummaryEditLink";
6
+ import FormSummaryHeader from "./FormSummaryHeader";
7
+ import FormSummaryHeading from "./FormSummaryHeading";
8
+ import FormSummaryLabel from "./FormSummaryLabel";
9
+ import FormSummaryValue from "./FormSummaryValue";
10
+
11
+ interface FormSummaryComponent
12
+ extends React.ForwardRefExoticComponent<
13
+ FormSummaryProps & React.RefAttributes<HTMLDivElement>
14
+ > {
15
+ /**
16
+ * Must include `<FormSummary.Heading>` and optionally `<FormSummary.EditLink>`.
17
+ */
18
+ Header: typeof FormSummaryHeader;
19
+ /**
20
+ * Typographic Heading to use in the `FormSummary.Header` component.
21
+ */
22
+ Heading: typeof FormSummaryHeading;
23
+ /**
24
+ * Link to edit the answers to use in the `FormSummary.Header` component. Should link to the relevant part of the form.
25
+ */
26
+ EditLink: typeof FormSummaryEditLink;
27
+ /**
28
+ * Wrapper component for the answers.
29
+ */
30
+ Answers: typeof FormSummaryAnswers;
31
+ /**
32
+ * Wrapper component for each answer. To be used in the `FormSummary.Answers` component.
33
+ */
34
+ Answer: typeof FormSummaryAnswer;
35
+ /**
36
+ * Corresponds to the question in the form. To be used in the `FormSummary.Answer` component.
37
+ */
38
+ Label: typeof FormSummaryLabel;
39
+ /**
40
+ * Corresponds to the answer in the form. To be used in the `FormSummary.Answer` component.
41
+ */
42
+ Value: typeof FormSummaryValue;
43
+ }
44
+
45
+ export interface FormSummaryProps extends HTMLAttributes<HTMLDivElement> {
46
+ /**
47
+ * Must include:
48
+ *
49
+ * - `<FormSummary.Header>`
50
+ * - `<FormSummary.Answers>`
51
+ *
52
+ * @example
53
+ * <FormSummary>
54
+ * <FormSummary.Header>
55
+ * <FormSummary.Heading level="2">HeadingTekst</FormSummary.Heading>
56
+ * <FormSummary.EditLink href="#" />
57
+ * </FormSummary.Header>
58
+ * <FormSummary.Answers>
59
+ * <FormSummary.Answer>
60
+ * <FormSummary.Label>Navn</FormSummary.Label>
61
+ * <FormSummary.Value>Ola Nordmann</FormSummary.Value>
62
+ * </FormSummary.Answer>
63
+ * </FormSummary.Answers>
64
+ * </FormSummary>
65
+ */
66
+ children: React.ReactNode;
67
+ }
68
+
69
+ /**
70
+ * A summary of a previously answered form.
71
+ *
72
+ * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/formsummary)
73
+ *
74
+ * @example
75
+ * <FormSummary>
76
+ * <FormSummary.Header>
77
+ * <FormSummary.Heading level="2">HeadingTekst</FormSummary.Heading>
78
+ * <FormSummary.EditLink href="#" />
79
+ * </FormSummary.Header>
80
+ * <FormSummary.Answers>
81
+ * <FormSummary.Answer>
82
+ * <FormSummary.Label>Navn</FormSummary.Label>
83
+ * <FormSummary.Value>Ola Nordmann</FormSummary.Value>
84
+ * </FormSummary.Answer>
85
+ * </FormSummary.Answers>
86
+ * </FormSummary>
87
+ */
88
+ export const FormSummary = forwardRef<HTMLDivElement, FormSummaryProps>(
89
+ ({ children, className, ...rest }, ref) => {
90
+ return (
91
+ <div ref={ref} {...rest} className={cl("navds-form-summary", className)}>
92
+ {children}
93
+ </div>
94
+ );
95
+ },
96
+ ) as FormSummaryComponent;
97
+
98
+ FormSummary.Header = FormSummaryHeader;
99
+ FormSummary.Heading = FormSummaryHeading;
100
+ FormSummary.EditLink = FormSummaryEditLink;
101
+ FormSummary.Answers = FormSummaryAnswers;
102
+ FormSummary.Answer = FormSummaryAnswer;
103
+ FormSummary.Label = FormSummaryLabel;
104
+ FormSummary.Value = FormSummaryValue;
105
+
106
+ export default FormSummary;
@@ -0,0 +1,27 @@
1
+ import cl from "clsx";
2
+ import React from "react";
3
+
4
+ export interface FormSummaryAnswerProps
5
+ extends React.HTMLAttributes<HTMLDivElement> {
6
+ /**
7
+ * Must include:
8
+ * - `<FormSummary.Label>`
9
+ * - `<FormSummary.Value>`
10
+ */
11
+ children: React.ReactNode;
12
+ }
13
+
14
+ export const FormSummaryAnswer = React.forwardRef<
15
+ HTMLDivElement,
16
+ FormSummaryAnswerProps
17
+ >(({ children, className, ...rest }, ref) => (
18
+ <div
19
+ ref={ref}
20
+ {...rest}
21
+ className={cl("navds-form-summary__answer", className)}
22
+ >
23
+ {children}
24
+ </div>
25
+ ));
26
+
27
+ export default FormSummaryAnswer;
@@ -0,0 +1,25 @@
1
+ import cl from "clsx";
2
+ import React, { forwardRef } from "react";
3
+
4
+ export interface FormSummaryAnswersProps
5
+ extends React.HTMLAttributes<HTMLDListElement> {
6
+ /**
7
+ * Must include one or more of `<FormSummary.Answer>`.
8
+ */
9
+ children: React.ReactNode;
10
+ }
11
+
12
+ export const FormSummaryAnswers = forwardRef<
13
+ HTMLDListElement,
14
+ FormSummaryAnswersProps
15
+ >(({ children, className, ...rest }: FormSummaryAnswersProps, ref) => (
16
+ <dl
17
+ ref={ref}
18
+ {...rest}
19
+ className={cl("navds-form-summary__answers", className)}
20
+ >
21
+ {children}
22
+ </dl>
23
+ ));
24
+
25
+ export default FormSummaryAnswers;
@@ -0,0 +1,35 @@
1
+ import cl from "clsx";
2
+ import React, { forwardRef } from "react";
3
+ import { Link } from "../../link";
4
+ import { OverridableComponent } from "../../util/types";
5
+
6
+ // export type FormSummaryEditProps = Partial<LinkProps>;
7
+ export interface FormSummaryEditProps
8
+ extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
9
+ /**
10
+ * URL to the relevant part of the form, where the answers can be edited.
11
+ */
12
+ href?: string;
13
+ /**
14
+ * Link text.
15
+ *
16
+ * [How to write good links](https://aksel.nav.no/god-praksis/artikler/lenker).
17
+ * @default "Endre svar"
18
+ */
19
+ children?: React.ReactNode;
20
+ }
21
+
22
+ export const FormSummaryEditLink: OverridableComponent<
23
+ FormSummaryEditProps,
24
+ HTMLAnchorElement
25
+ > = forwardRef(({ children = "Endre svar", className, ...rest }, ref) => (
26
+ <Link
27
+ ref={ref}
28
+ {...rest}
29
+ className={cl("navds-form-summary__edit", className)}
30
+ >
31
+ {children}
32
+ </Link>
33
+ ));
34
+
35
+ export default FormSummaryEditLink;
@@ -0,0 +1,25 @@
1
+ import cl from "clsx";
2
+ import React, { forwardRef } from "react";
3
+
4
+ export interface FormSummaryHeaderProps
5
+ extends React.HTMLAttributes<HTMLDivElement> {
6
+ /**
7
+ * Must include `<FormSummary.Heading>` and optionally `<FormSummary.EditLink>`.
8
+ */
9
+ children: React.ReactNode;
10
+ }
11
+
12
+ export const FormSummaryHeader = forwardRef<
13
+ HTMLDivElement,
14
+ FormSummaryHeaderProps
15
+ >(({ children, className, ...rest }, ref) => (
16
+ <header
17
+ ref={ref}
18
+ {...rest}
19
+ className={cl("navds-form-summary__header", className)}
20
+ >
21
+ {children}
22
+ </header>
23
+ ));
24
+
25
+ export default FormSummaryHeader;
@@ -0,0 +1,23 @@
1
+ import React, { forwardRef } from "react";
2
+ import { Heading, HeadingProps } from "../../typography";
3
+
4
+ export interface FormSummaryHeadingProps
5
+ extends React.HTMLAttributes<HTMLHeadingElement> {
6
+ /**
7
+ * Heading text.
8
+ */
9
+ children: React.ReactNode;
10
+ /**
11
+ * The heading level.
12
+ */
13
+ level: Exclude<HeadingProps["level"], "1">;
14
+ }
15
+
16
+ export const FormSummaryHeading = forwardRef<
17
+ HTMLHeadingElement,
18
+ FormSummaryHeadingProps
19
+ >((props: FormSummaryHeadingProps, ref) => (
20
+ <Heading ref={ref} {...props} size="medium" />
21
+ ));
22
+
23
+ export default FormSummaryHeading;
@@ -0,0 +1,17 @@
1
+ import React, { forwardRef } from "react";
2
+ import { Label } from "../../typography";
3
+
4
+ export interface FormSummaryLabelProps
5
+ extends React.HTMLAttributes<HTMLElement> {
6
+ children: React.ReactNode;
7
+ }
8
+
9
+ export const FormSummaryLabel = forwardRef<HTMLElement, FormSummaryLabelProps>(
10
+ ({ children, ...rest }, ref) => (
11
+ <Label ref={ref} {...rest} as="dt">
12
+ {children}
13
+ </Label>
14
+ ),
15
+ );
16
+
17
+ export default FormSummaryLabel;
@@ -0,0 +1,24 @@
1
+ import cl from "clsx";
2
+ import React, { forwardRef } from "react";
3
+ import { BodyLong } from "../../typography";
4
+
5
+ export interface FormSummaryValueProps
6
+ extends React.HTMLAttributes<HTMLDivElement> {
7
+ children: React.ReactNode;
8
+ }
9
+
10
+ export const FormSummaryValue = forwardRef<
11
+ HTMLDivElement,
12
+ FormSummaryValueProps
13
+ >(({ children, className, ...rest }, ref) => (
14
+ <BodyLong
15
+ ref={ref}
16
+ {...rest}
17
+ as="dd"
18
+ className={cl("navds-form-summary__value", className)}
19
+ >
20
+ {children}
21
+ </BodyLong>
22
+ ));
23
+
24
+ export default FormSummaryValue;
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ export { default as FormSummary, type FormSummaryProps } from "./FormSummary";
3
+ export {
4
+ default as FormSummaryAnswer,
5
+ type FormSummaryAnswerProps,
6
+ } from "./FormSummaryAnswer";
7
+ export {
8
+ default as FormSummaryAnswers,
9
+ type FormSummaryAnswersProps,
10
+ } from "./FormSummaryAnswers";
11
+ export {
12
+ default as FormSummaryEditLink,
13
+ type FormSummaryEditProps,
14
+ } from "./FormSummaryEditLink";
15
+ export {
16
+ default as FormSummaryHeader,
17
+ type FormSummaryHeaderProps,
18
+ } from "./FormSummaryHeader";
19
+ export {
20
+ default as FormSummaryHeading,
21
+ type FormSummaryHeadingProps,
22
+ } from "./FormSummaryHeading";
23
+ export {
24
+ default as FormSummaryLabel,
25
+ type FormSummaryLabelProps,
26
+ } from "./FormSummaryLabel";
27
+ export {
28
+ default as FormSummaryValue,
29
+ type FormSummaryValueProps,
30
+ } from "./FormSummaryValue";
package/src/index.ts CHANGED
@@ -26,8 +26,8 @@ export { Dropdown, type DropdownProps } from "./dropdown";
26
26
  export { ExpansionCard, type ExpansionCardProps } from "./expansion-card";
27
27
  export {
28
28
  GuidePanel,
29
- type GuidePanelProps,
30
29
  GuidePanelDefaultIllustration,
30
+ type GuidePanelProps,
31
31
  } from "./guide-panel";
32
32
  export { HelpText, type HelpTextProps } from "./help-text";
33
33
  export {
@@ -125,6 +125,21 @@ export {
125
125
  } from "./form/confirmation-panel";
126
126
  export { ErrorSummary, type ErrorSummaryProps } from "./form/error-summary";
127
127
  export { Fieldset, type FieldsetProps } from "./form/fieldset";
128
+ export {
129
+ UNSAFE_FileUpload,
130
+ type FileAccepted,
131
+ type FileItem,
132
+ type FileMetadata,
133
+ type FileObject,
134
+ type FileRejected,
135
+ type FileRejectedPartitioned,
136
+ type FileRejectionReason,
137
+ type FileUploadDropzoneProps,
138
+ type FileUploadItemProps,
139
+ type FileUploadTriggerProps,
140
+ type FilesPartitioned,
141
+ } from "./form/file-upload";
142
+ export { FormSummary, type FormSummaryProps } from "./form/form-summary";
128
143
  export {
129
144
  Radio,
130
145
  RadioGroup,
@@ -136,20 +151,6 @@ export { Select, type SelectProps } from "./form/select";
136
151
  export { Switch, type SwitchProps } from "./form/switch";
137
152
  export { Textarea, type TextareaProps } from "./form/textarea";
138
153
  export { TextField, type TextFieldProps } from "./form/textfield";
139
- export {
140
- UNSAFE_FileUpload,
141
- type FileUploadDropzoneProps,
142
- type FileUploadTriggerProps,
143
- type FileObject,
144
- type FileRejected,
145
- type FileAccepted,
146
- type FileRejectedPartitioned,
147
- type FilesPartitioned,
148
- type FileRejectionReason,
149
- type FileUploadItemProps,
150
- type FileItem,
151
- type FileMetadata,
152
- } from "./form/file-upload";
153
154
 
154
155
  /**
155
156
  * @deprecated
@@ -0,0 +1,24 @@
1
+ import { createContext } from "../util/create-context";
2
+ import { createDescendantContext } from "../util/hooks/descendants/useDescendant";
3
+ import { TabsProps } from "./Tabs.types";
4
+ import { useTabs } from "./useTabs";
5
+
6
+ export const [
7
+ TabsDescendantsProvider,
8
+ useTabsDescendantsContext,
9
+ useTabsDescendants,
10
+ useTabsDescendant,
11
+ ] = createDescendantContext<HTMLButtonElement, { value: string }>();
12
+
13
+ type TabsProviderProps = ReturnType<typeof useTabs> &
14
+ Pick<
15
+ TabsProps,
16
+ "selectionFollowsFocus" | "loop" | "size" | "iconPosition" | "fill"
17
+ >;
18
+
19
+ /* State context */
20
+ export const [TabsProvider, useTabsContext] = createContext<TabsProviderProps>({
21
+ name: "TabsContext",
22
+ hookName: "useTabsContext",
23
+ providerName: "TabsProvider",
24
+ });