@navikt/ds-react 3.4.2 → 4.1.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 (529) hide show
  1. package/_docs.json +5912 -3911
  2. package/cjs/accordion/Accordion.js +22 -2
  3. package/cjs/alert/Alert.js +9 -0
  4. package/cjs/button/Button.js +10 -0
  5. package/cjs/chat/Chat.js +16 -0
  6. package/cjs/chips/Chips.js +27 -0
  7. package/cjs/chips/Toggle.js +4 -6
  8. package/cjs/copybutton/CopyButton.js +11 -0
  9. package/cjs/date/DateInput.js +1 -1
  10. package/cjs/date/datepicker/DatePicker.js +22 -0
  11. package/cjs/date/hooks/index.js +4 -4
  12. package/cjs/date/hooks/useDatepicker.js +13 -0
  13. package/cjs/date/hooks/useMonthPicker.js +13 -0
  14. package/cjs/date/hooks/useRangeDatepicker.js +12 -0
  15. package/cjs/date/index.js +6 -6
  16. package/cjs/date/monthpicker/MonthPicker.js +22 -0
  17. package/cjs/dropdown/Dropdown.js +88 -0
  18. package/cjs/dropdown/Menu/Divider.js +47 -0
  19. package/cjs/dropdown/Menu/GroupedList/Heading.js +47 -0
  20. package/cjs/dropdown/Menu/GroupedList/Item.js +54 -0
  21. package/cjs/dropdown/Menu/GroupedList/index.js +51 -0
  22. package/cjs/dropdown/Menu/GroupedList/package.json +6 -0
  23. package/cjs/dropdown/Menu/List/Item.js +54 -0
  24. package/cjs/dropdown/Menu/List/index.js +49 -0
  25. package/cjs/dropdown/Menu/List/package.json +6 -0
  26. package/cjs/dropdown/Menu/index.js +64 -0
  27. package/cjs/dropdown/Menu/package.json +6 -0
  28. package/cjs/dropdown/Toggle.js +66 -0
  29. package/cjs/dropdown/index.js +23 -0
  30. package/cjs/dropdown/package.json +6 -0
  31. package/cjs/expansion-card/ExpansionCard.js +18 -0
  32. package/cjs/form/ConfirmationPanel.js +18 -0
  33. package/cjs/form/Select.js +16 -0
  34. package/cjs/form/Switch.js +11 -0
  35. package/cjs/form/TextField.js +11 -0
  36. package/cjs/form/Textarea.js +11 -0
  37. package/cjs/form/checkbox/CheckboxGroup.js +15 -0
  38. package/cjs/form/error-summary/ErrorSummary.js +18 -0
  39. package/cjs/form/radio/RadioGroup.js +10 -0
  40. package/cjs/form/search/Search.js +13 -0
  41. package/cjs/guide-panel/GuidePanel.js +15 -0
  42. package/cjs/help-text/HelpText.js +13 -0
  43. package/cjs/index.js +4 -0
  44. package/cjs/internal-header/InternalHeader.js +83 -0
  45. package/cjs/internal-header/InternalHeaderButton.js +47 -0
  46. package/cjs/internal-header/InternalHeaderTitle.js +48 -0
  47. package/cjs/internal-header/InternalHeaderUser.js +51 -0
  48. package/cjs/internal-header/InternalHeaderUserButton.js +54 -0
  49. package/cjs/internal-header/index.js +8 -0
  50. package/cjs/internal-header/package.json +6 -0
  51. package/cjs/link/Link.js +13 -0
  52. package/cjs/link-panel/LinkPanel.js +17 -0
  53. package/cjs/loader/Loader.js +11 -0
  54. package/cjs/modal/Modal.js +27 -0
  55. package/cjs/pagination/Pagination.js +17 -0
  56. package/cjs/panel/Panel.js +19 -0
  57. package/cjs/popover/Popover.js +20 -0
  58. package/cjs/provider/Provider.js +13 -0
  59. package/cjs/read-more/ReadMore.js +17 -0
  60. package/cjs/skeleton/Skeleton.js +51 -0
  61. package/cjs/skeleton/index.js +8 -0
  62. package/cjs/skeleton/package.json +6 -0
  63. package/cjs/stepper/Step.js +3 -4
  64. package/cjs/stepper/Stepper.js +24 -0
  65. package/cjs/table/Table.js +32 -0
  66. package/cjs/tabs/Tabs.js +27 -1
  67. package/cjs/tag/Tag.js +11 -0
  68. package/cjs/timeline/AxisLabels.js +90 -0
  69. package/cjs/timeline/Pin.js +106 -0
  70. package/cjs/timeline/Timeline.js +180 -0
  71. package/cjs/timeline/TimelineRow.js +86 -0
  72. package/cjs/timeline/hooks/usePeriodContext.js +16 -0
  73. package/cjs/timeline/hooks/useRowContext.js +18 -0
  74. package/cjs/timeline/hooks/useTimelineContext.js +23 -0
  75. package/cjs/timeline/hooks/useTimelineRows.js +79 -0
  76. package/cjs/timeline/index.js +8 -0
  77. package/cjs/timeline/package.json +6 -0
  78. package/cjs/timeline/period/ClickablePeriod.js +120 -0
  79. package/cjs/timeline/period/NonClickablePeriod.js +18 -0
  80. package/cjs/timeline/period/index.js +46 -0
  81. package/cjs/timeline/period/package.json +6 -0
  82. package/cjs/timeline/utils/calc.js +19 -0
  83. package/cjs/timeline/utils/filter.js +18 -0
  84. package/cjs/timeline/utils/index.js +7 -0
  85. package/cjs/timeline/utils/package.json +6 -0
  86. package/cjs/timeline/utils/period.js +40 -0
  87. package/cjs/timeline/utils/sort.js +10 -0
  88. package/cjs/timeline/utils/timeline.js +79 -0
  89. package/cjs/timeline/utils/types.external.js +2 -0
  90. package/cjs/timeline/utils/types.internal.js +2 -0
  91. package/cjs/timeline/zoom/ZoomButton.js +68 -0
  92. package/cjs/timeline/zoom/index.js +50 -0
  93. package/cjs/timeline/zoom/package.json +6 -0
  94. package/cjs/toggle-group/ToggleGroup.js +17 -2
  95. package/cjs/tooltip/Tooltip.js +13 -0
  96. package/cjs/typography/BodyLong.js +14 -0
  97. package/cjs/typography/BodyShort.js +14 -0
  98. package/cjs/typography/Detail.js +14 -0
  99. package/cjs/typography/ErrorMessage.js +14 -0
  100. package/cjs/typography/Heading.js +14 -0
  101. package/cjs/typography/Ingress.js +14 -0
  102. package/cjs/typography/Label.js +14 -0
  103. package/esm/accordion/Accordion.d.ts +40 -6
  104. package/esm/accordion/Accordion.js +22 -2
  105. package/esm/accordion/Accordion.js.map +1 -1
  106. package/esm/accordion/AccordionContent.d.ts +1 -2
  107. package/esm/accordion/AccordionContent.js.map +1 -1
  108. package/esm/accordion/AccordionHeader.d.ts +1 -2
  109. package/esm/accordion/AccordionHeader.js.map +1 -1
  110. package/esm/accordion/AccordionItem.d.ts +1 -2
  111. package/esm/accordion/AccordionItem.js.map +1 -1
  112. package/esm/alert/Alert.d.ts +9 -0
  113. package/esm/alert/Alert.js +9 -0
  114. package/esm/alert/Alert.js.map +1 -1
  115. package/esm/button/Button.d.ts +10 -0
  116. package/esm/button/Button.js +10 -0
  117. package/esm/button/Button.js.map +1 -1
  118. package/esm/chat/Bubble.d.ts +1 -2
  119. package/esm/chat/Bubble.js.map +1 -1
  120. package/esm/chat/Chat.d.ts +21 -2
  121. package/esm/chat/Chat.js +16 -0
  122. package/esm/chat/Chat.js.map +1 -1
  123. package/esm/chips/Chips.d.ts +42 -4
  124. package/esm/chips/Chips.js +27 -0
  125. package/esm/chips/Chips.js.map +1 -1
  126. package/esm/chips/Removable.d.ts +0 -2
  127. package/esm/chips/Removable.js.map +1 -1
  128. package/esm/chips/Toggle.d.ts +11 -3
  129. package/esm/chips/Toggle.js +4 -6
  130. package/esm/chips/Toggle.js.map +1 -1
  131. package/esm/copybutton/CopyButton.d.ts +11 -0
  132. package/esm/copybutton/CopyButton.js +11 -0
  133. package/esm/copybutton/CopyButton.js.map +1 -1
  134. package/esm/date/DateInput.d.ts +2 -3
  135. package/esm/date/DateInput.js +1 -1
  136. package/esm/date/DateInput.js.map +1 -1
  137. package/esm/date/datepicker/DatePicker.d.ts +38 -2
  138. package/esm/date/datepicker/DatePicker.js +22 -0
  139. package/esm/date/datepicker/DatePicker.js.map +1 -1
  140. package/esm/date/hooks/index.d.ts +3 -3
  141. package/esm/date/hooks/index.js +3 -3
  142. package/esm/date/hooks/index.js.map +1 -1
  143. package/esm/date/hooks/useDatepicker.d.ts +13 -0
  144. package/esm/date/hooks/useDatepicker.js +13 -0
  145. package/esm/date/hooks/useDatepicker.js.map +1 -1
  146. package/esm/date/hooks/useMonthPicker.d.ts +13 -0
  147. package/esm/date/hooks/useMonthPicker.js +13 -0
  148. package/esm/date/hooks/useMonthPicker.js.map +1 -1
  149. package/esm/date/hooks/useRangeDatepicker.d.ts +12 -0
  150. package/esm/date/hooks/useRangeDatepicker.js +12 -0
  151. package/esm/date/hooks/useRangeDatepicker.js.map +1 -1
  152. package/esm/date/index.d.ts +3 -3
  153. package/esm/date/index.js +3 -3
  154. package/esm/date/index.js.map +1 -1
  155. package/esm/date/monthpicker/MonthPicker.d.ts +34 -4
  156. package/esm/date/monthpicker/MonthPicker.js +22 -0
  157. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  158. package/esm/dropdown/Dropdown.d.ts +74 -0
  159. package/esm/dropdown/Dropdown.js +60 -0
  160. package/esm/dropdown/Dropdown.js.map +1 -0
  161. package/esm/dropdown/Menu/Divider.d.ts +3 -0
  162. package/esm/dropdown/Menu/Divider.js +19 -0
  163. package/esm/dropdown/Menu/Divider.js.map +1 -0
  164. package/esm/dropdown/Menu/GroupedList/Heading.d.ts +9 -0
  165. package/esm/dropdown/Menu/GroupedList/Heading.js +19 -0
  166. package/esm/dropdown/Menu/GroupedList/Heading.js.map +1 -0
  167. package/esm/dropdown/Menu/GroupedList/Item.d.ts +10 -0
  168. package/esm/dropdown/Menu/GroupedList/Item.js +26 -0
  169. package/esm/dropdown/Menu/GroupedList/Item.js.map +1 -0
  170. package/esm/dropdown/Menu/GroupedList/index.d.ts +23 -0
  171. package/esm/dropdown/Menu/GroupedList/index.js +23 -0
  172. package/esm/dropdown/Menu/GroupedList/index.js.map +1 -0
  173. package/esm/dropdown/Menu/List/Item.d.ts +10 -0
  174. package/esm/dropdown/Menu/List/Item.js +26 -0
  175. package/esm/dropdown/Menu/List/Item.js.map +1 -0
  176. package/esm/dropdown/Menu/List/index.d.ts +18 -0
  177. package/esm/dropdown/Menu/List/index.js +21 -0
  178. package/esm/dropdown/Menu/List/index.js.map +1 -0
  179. package/esm/dropdown/Menu/index.d.ts +35 -0
  180. package/esm/dropdown/Menu/index.js +36 -0
  181. package/esm/dropdown/Menu/index.js.map +1 -0
  182. package/esm/dropdown/Toggle.d.ts +9 -0
  183. package/esm/dropdown/Toggle.js +38 -0
  184. package/esm/dropdown/Toggle.js.map +1 -0
  185. package/esm/dropdown/index.d.ts +2 -0
  186. package/esm/dropdown/index.js +3 -0
  187. package/esm/dropdown/index.js.map +1 -0
  188. package/esm/expansion-card/ExpansionCard.d.ts +40 -8
  189. package/esm/expansion-card/ExpansionCard.js +18 -0
  190. package/esm/expansion-card/ExpansionCard.js.map +1 -1
  191. package/esm/expansion-card/ExpansionCardContent.d.ts +1 -2
  192. package/esm/expansion-card/ExpansionCardContent.js.map +1 -1
  193. package/esm/expansion-card/ExpansionCardDescription.d.ts +2 -4
  194. package/esm/expansion-card/ExpansionCardDescription.js.map +1 -1
  195. package/esm/expansion-card/ExpansionCardHeader.d.ts +1 -2
  196. package/esm/expansion-card/ExpansionCardHeader.js.map +1 -1
  197. package/esm/expansion-card/ExpansionCardTitle.d.ts +2 -4
  198. package/esm/expansion-card/ExpansionCardTitle.js.map +1 -1
  199. package/esm/form/ConfirmationPanel.d.ts +18 -0
  200. package/esm/form/ConfirmationPanel.js +18 -0
  201. package/esm/form/ConfirmationPanel.js.map +1 -1
  202. package/esm/form/Select.d.ts +16 -0
  203. package/esm/form/Select.js +16 -0
  204. package/esm/form/Select.js.map +1 -1
  205. package/esm/form/Switch.d.ts +11 -0
  206. package/esm/form/Switch.js +11 -0
  207. package/esm/form/Switch.js.map +1 -1
  208. package/esm/form/TextField.d.ts +11 -0
  209. package/esm/form/TextField.js +11 -0
  210. package/esm/form/TextField.js.map +1 -1
  211. package/esm/form/Textarea.d.ts +11 -0
  212. package/esm/form/Textarea.js +11 -0
  213. package/esm/form/Textarea.js.map +1 -1
  214. package/esm/form/checkbox/CheckboxGroup.d.ts +15 -0
  215. package/esm/form/checkbox/CheckboxGroup.js +15 -0
  216. package/esm/form/checkbox/CheckboxGroup.js.map +1 -1
  217. package/esm/form/error-summary/ErrorSummary.d.ts +18 -0
  218. package/esm/form/error-summary/ErrorSummary.js +18 -0
  219. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  220. package/esm/form/radio/RadioGroup.d.ts +10 -0
  221. package/esm/form/radio/RadioGroup.js +10 -0
  222. package/esm/form/radio/RadioGroup.js.map +1 -1
  223. package/esm/form/search/Search.d.ts +13 -0
  224. package/esm/form/search/Search.js +13 -0
  225. package/esm/form/search/Search.js.map +1 -1
  226. package/esm/guide-panel/GuidePanel.d.ts +15 -0
  227. package/esm/guide-panel/GuidePanel.js +15 -0
  228. package/esm/guide-panel/GuidePanel.js.map +1 -1
  229. package/esm/help-text/HelpText.d.ts +13 -0
  230. package/esm/help-text/HelpText.js +13 -0
  231. package/esm/help-text/HelpText.js.map +1 -1
  232. package/esm/index.d.ts +4 -0
  233. package/esm/index.js +4 -0
  234. package/esm/index.js.map +1 -1
  235. package/esm/internal-header/InternalHeader.d.ts +60 -0
  236. package/esm/internal-header/InternalHeader.js +55 -0
  237. package/esm/internal-header/InternalHeader.js.map +1 -0
  238. package/esm/internal-header/InternalHeaderButton.d.ts +10 -0
  239. package/esm/internal-header/InternalHeaderButton.js +19 -0
  240. package/esm/internal-header/InternalHeaderButton.js.map +1 -0
  241. package/esm/internal-header/InternalHeaderTitle.d.ts +10 -0
  242. package/esm/internal-header/InternalHeaderTitle.js +20 -0
  243. package/esm/internal-header/InternalHeaderTitle.js.map +1 -0
  244. package/esm/internal-header/InternalHeaderUser.d.ts +13 -0
  245. package/esm/internal-header/InternalHeaderUser.js +23 -0
  246. package/esm/internal-header/InternalHeaderUser.js.map +1 -0
  247. package/esm/internal-header/InternalHeaderUserButton.d.ts +14 -0
  248. package/esm/internal-header/InternalHeaderUserButton.js +26 -0
  249. package/esm/internal-header/InternalHeaderUserButton.js.map +1 -0
  250. package/esm/internal-header/index.d.ts +5 -0
  251. package/esm/internal-header/index.js +2 -0
  252. package/esm/internal-header/index.js.map +1 -0
  253. package/esm/link/Link.d.ts +13 -0
  254. package/esm/link/Link.js +13 -0
  255. package/esm/link/Link.js.map +1 -1
  256. package/esm/link-panel/LinkPanel.d.ts +28 -4
  257. package/esm/link-panel/LinkPanel.js +17 -0
  258. package/esm/link-panel/LinkPanel.js.map +1 -1
  259. package/esm/link-panel/LinkPanelDescription.d.ts +2 -4
  260. package/esm/link-panel/LinkPanelDescription.js.map +1 -1
  261. package/esm/link-panel/LinkPanelTitle.d.ts +2 -4
  262. package/esm/link-panel/LinkPanelTitle.js.map +1 -1
  263. package/esm/list/List.d.ts +5 -2
  264. package/esm/list/List.js.map +1 -1
  265. package/esm/list/ListItem.d.ts +1 -3
  266. package/esm/list/ListItem.js.map +1 -1
  267. package/esm/loader/Loader.d.ts +11 -0
  268. package/esm/loader/Loader.js +11 -0
  269. package/esm/loader/Loader.js.map +1 -1
  270. package/esm/modal/Modal.d.ts +27 -0
  271. package/esm/modal/Modal.js +27 -0
  272. package/esm/modal/Modal.js.map +1 -1
  273. package/esm/pagination/Pagination.d.ts +17 -0
  274. package/esm/pagination/Pagination.js +17 -0
  275. package/esm/pagination/Pagination.js.map +1 -1
  276. package/esm/panel/Panel.d.ts +19 -0
  277. package/esm/panel/Panel.js +19 -0
  278. package/esm/panel/Panel.js.map +1 -1
  279. package/esm/popover/Popover.d.ts +20 -0
  280. package/esm/popover/Popover.js +20 -0
  281. package/esm/popover/Popover.js.map +1 -1
  282. package/esm/provider/Provider.d.ts +13 -0
  283. package/esm/provider/Provider.js +13 -0
  284. package/esm/provider/Provider.js.map +1 -1
  285. package/esm/read-more/ReadMore.d.ts +17 -0
  286. package/esm/read-more/ReadMore.js +17 -0
  287. package/esm/read-more/ReadMore.js.map +1 -1
  288. package/esm/skeleton/Skeleton.d.ts +18 -0
  289. package/esm/skeleton/Skeleton.js +23 -0
  290. package/esm/skeleton/Skeleton.js.map +1 -0
  291. package/esm/skeleton/index.d.ts +2 -0
  292. package/esm/skeleton/index.js +2 -0
  293. package/esm/skeleton/index.js.map +1 -0
  294. package/esm/stepper/Step.d.ts +1 -4
  295. package/esm/stepper/Step.js +1 -2
  296. package/esm/stepper/Step.js.map +1 -1
  297. package/esm/stepper/Stepper.d.ts +31 -2
  298. package/esm/stepper/Stepper.js +24 -0
  299. package/esm/stepper/Stepper.js.map +1 -1
  300. package/esm/table/Table.d.ts +32 -0
  301. package/esm/table/Table.js +32 -0
  302. package/esm/table/Table.js.map +1 -1
  303. package/esm/tabs/Tab.d.ts +1 -2
  304. package/esm/tabs/Tab.js.map +1 -1
  305. package/esm/tabs/TabList.d.ts +1 -2
  306. package/esm/tabs/TabList.js.map +1 -1
  307. package/esm/tabs/TabPanel.d.ts +1 -2
  308. package/esm/tabs/TabPanel.js.map +1 -1
  309. package/esm/tabs/Tabs.d.ts +43 -6
  310. package/esm/tabs/Tabs.js +27 -1
  311. package/esm/tabs/Tabs.js.map +1 -1
  312. package/esm/tag/Tag.d.ts +11 -0
  313. package/esm/tag/Tag.js +11 -0
  314. package/esm/tag/Tag.js.map +1 -1
  315. package/esm/timeline/AxisLabels.d.ts +6 -0
  316. package/esm/timeline/AxisLabels.js +81 -0
  317. package/esm/timeline/AxisLabels.js.map +1 -0
  318. package/esm/timeline/Pin.d.ts +17 -0
  319. package/esm/timeline/Pin.js +81 -0
  320. package/esm/timeline/Pin.js.map +1 -0
  321. package/esm/timeline/Timeline.d.ts +63 -0
  322. package/esm/timeline/Timeline.js +152 -0
  323. package/esm/timeline/Timeline.js.map +1 -0
  324. package/esm/timeline/TimelineRow.d.ts +22 -0
  325. package/esm/timeline/TimelineRow.js +58 -0
  326. package/esm/timeline/TimelineRow.js.map +1 -0
  327. package/esm/timeline/hooks/usePeriodContext.d.ts +9 -0
  328. package/esm/timeline/hooks/usePeriodContext.js +13 -0
  329. package/esm/timeline/hooks/usePeriodContext.js.map +1 -0
  330. package/esm/timeline/hooks/useRowContext.d.ts +11 -0
  331. package/esm/timeline/hooks/useRowContext.js +15 -0
  332. package/esm/timeline/hooks/useRowContext.js.map +1 -0
  333. package/esm/timeline/hooks/useTimelineContext.d.ts +15 -0
  334. package/esm/timeline/hooks/useTimelineContext.js +20 -0
  335. package/esm/timeline/hooks/useTimelineContext.js.map +1 -0
  336. package/esm/timeline/hooks/useTimelineRows.d.ts +4 -0
  337. package/esm/timeline/hooks/useTimelineRows.js +74 -0
  338. package/esm/timeline/hooks/useTimelineRows.js.map +1 -0
  339. package/esm/timeline/index.d.ts +6 -0
  340. package/esm/timeline/index.js +2 -0
  341. package/esm/timeline/index.js.map +1 -0
  342. package/esm/timeline/period/ClickablePeriod.d.ts +9 -0
  343. package/esm/timeline/period/ClickablePeriod.js +93 -0
  344. package/esm/timeline/period/ClickablePeriod.js.map +1 -0
  345. package/esm/timeline/period/NonClickablePeriod.d.ts +7 -0
  346. package/esm/timeline/period/NonClickablePeriod.js +14 -0
  347. package/esm/timeline/period/NonClickablePeriod.js.map +1 -0
  348. package/esm/timeline/period/index.d.ts +57 -0
  349. package/esm/timeline/period/index.js +18 -0
  350. package/esm/timeline/period/index.js.map +1 -0
  351. package/esm/timeline/utils/calc.d.ts +5 -0
  352. package/esm/timeline/utils/calc.js +15 -0
  353. package/esm/timeline/utils/calc.js.map +1 -0
  354. package/esm/timeline/utils/filter.d.ts +10 -0
  355. package/esm/timeline/utils/filter.js +11 -0
  356. package/esm/timeline/utils/filter.js.map +1 -0
  357. package/esm/timeline/utils/index.d.ts +1 -0
  358. package/esm/timeline/utils/index.js +2 -0
  359. package/esm/timeline/utils/index.js.map +1 -0
  360. package/esm/timeline/utils/period.d.ts +2 -0
  361. package/esm/timeline/utils/period.js +33 -0
  362. package/esm/timeline/utils/period.js.map +1 -0
  363. package/esm/timeline/utils/sort.d.ts +4 -0
  364. package/esm/timeline/utils/sort.js +5 -0
  365. package/esm/timeline/utils/sort.js.map +1 -0
  366. package/esm/timeline/utils/timeline.d.ts +12 -0
  367. package/esm/timeline/utils/timeline.js +73 -0
  368. package/esm/timeline/utils/timeline.js.map +1 -0
  369. package/esm/timeline/utils/types.external.d.ts +53 -0
  370. package/esm/timeline/utils/types.external.js +2 -0
  371. package/esm/timeline/utils/types.external.js.map +1 -0
  372. package/esm/timeline/utils/types.internal.d.ts +61 -0
  373. package/esm/timeline/utils/types.internal.js +2 -0
  374. package/esm/timeline/utils/types.internal.js.map +1 -0
  375. package/esm/timeline/zoom/ZoomButton.d.ts +19 -0
  376. package/esm/timeline/zoom/ZoomButton.js +43 -0
  377. package/esm/timeline/zoom/ZoomButton.js.map +1 -0
  378. package/esm/timeline/zoom/index.d.ts +11 -0
  379. package/esm/timeline/zoom/index.js +22 -0
  380. package/esm/timeline/zoom/index.js.map +1 -0
  381. package/esm/toggle-group/ToggleGroup.d.ts +20 -2
  382. package/esm/toggle-group/ToggleGroup.js +17 -2
  383. package/esm/toggle-group/ToggleGroup.js.map +1 -1
  384. package/esm/toggle-group/ToggleItem.d.ts +1 -2
  385. package/esm/toggle-group/ToggleItem.js.map +1 -1
  386. package/esm/tooltip/Tooltip.d.ts +13 -0
  387. package/esm/tooltip/Tooltip.js +13 -0
  388. package/esm/tooltip/Tooltip.js.map +1 -1
  389. package/esm/typography/BodyLong.d.ts +14 -0
  390. package/esm/typography/BodyLong.js +14 -0
  391. package/esm/typography/BodyLong.js.map +1 -1
  392. package/esm/typography/BodyShort.d.ts +14 -0
  393. package/esm/typography/BodyShort.js +14 -0
  394. package/esm/typography/BodyShort.js.map +1 -1
  395. package/esm/typography/Detail.d.ts +14 -0
  396. package/esm/typography/Detail.js +14 -0
  397. package/esm/typography/Detail.js.map +1 -1
  398. package/esm/typography/ErrorMessage.d.ts +14 -0
  399. package/esm/typography/ErrorMessage.js +14 -0
  400. package/esm/typography/ErrorMessage.js.map +1 -1
  401. package/esm/typography/Heading.d.ts +14 -0
  402. package/esm/typography/Heading.js +14 -0
  403. package/esm/typography/Heading.js.map +1 -1
  404. package/esm/typography/Ingress.d.ts +14 -0
  405. package/esm/typography/Ingress.js +14 -0
  406. package/esm/typography/Ingress.js.map +1 -1
  407. package/esm/typography/Label.d.ts +14 -0
  408. package/esm/typography/Label.js +14 -0
  409. package/esm/typography/Label.js.map +1 -1
  410. package/package.json +2 -2
  411. package/src/accordion/Accordion.tsx +49 -7
  412. package/src/accordion/AccordionContent.tsx +1 -5
  413. package/src/accordion/AccordionHeader.tsx +1 -5
  414. package/src/accordion/AccordionItem.tsx +1 -5
  415. package/src/accordion/accordion.stories.tsx +4 -2
  416. package/src/alert/Alert.tsx +9 -0
  417. package/src/button/Button.tsx +10 -0
  418. package/src/chat/Bubble.tsx +1 -5
  419. package/src/chat/Chat.tsx +23 -2
  420. package/src/chips/Chips.tsx +42 -4
  421. package/src/chips/Removable.tsx +1 -4
  422. package/src/chips/Toggle.tsx +47 -11
  423. package/src/chips/chips.stories.tsx +73 -20
  424. package/src/copybutton/CopyButton.tsx +11 -0
  425. package/src/date/DateInput.tsx +105 -115
  426. package/src/date/datepicker/DatePicker.tsx +40 -2
  427. package/src/date/datepicker/datepicker.stories.tsx +19 -21
  428. package/src/date/datepicker/datepicker.test.tsx +5 -5
  429. package/src/date/hooks/index.ts +3 -3
  430. package/src/date/hooks/useDatepicker.tsx +13 -0
  431. package/src/date/hooks/useMonthPicker.tsx +13 -0
  432. package/src/date/hooks/useRangeDatepicker.test.tsx +6 -6
  433. package/src/date/hooks/useRangeDatepicker.tsx +13 -1
  434. package/src/date/index.ts +5 -5
  435. package/src/date/monthpicker/MonthPicker.tsx +36 -4
  436. package/src/date/monthpicker/monthpicker.stories.tsx +5 -5
  437. package/src/date/utils/__tests__/get-dates.test.ts +0 -1
  438. package/src/dropdown/Dropdown.tsx +119 -0
  439. package/src/dropdown/Menu/Divider.tsx +15 -0
  440. package/src/dropdown/Menu/GroupedList/Heading.tsx +28 -0
  441. package/src/dropdown/Menu/GroupedList/Item.tsx +41 -0
  442. package/src/dropdown/Menu/GroupedList/index.tsx +43 -0
  443. package/src/dropdown/Menu/List/Item.tsx +38 -0
  444. package/src/dropdown/Menu/List/index.tsx +32 -0
  445. package/src/dropdown/Menu/index.tsx +96 -0
  446. package/src/dropdown/Toggle.tsx +48 -0
  447. package/src/dropdown/dropdown.stories.tsx +91 -0
  448. package/src/dropdown/index.ts +2 -0
  449. package/src/expansion-card/ExpansionCard.tsx +46 -8
  450. package/src/expansion-card/ExpansionCardContent.tsx +25 -28
  451. package/src/expansion-card/ExpansionCardDescription.tsx +22 -24
  452. package/src/expansion-card/ExpansionCardHeader.tsx +31 -34
  453. package/src/expansion-card/ExpansionCardTitle.tsx +3 -5
  454. package/src/form/ConfirmationPanel.tsx +18 -0
  455. package/src/form/Select.tsx +16 -0
  456. package/src/form/Switch.tsx +11 -0
  457. package/src/form/TextField.tsx +11 -0
  458. package/src/form/Textarea.tsx +11 -0
  459. package/src/form/checkbox/CheckboxGroup.tsx +15 -0
  460. package/src/form/error-summary/ErrorSummary.tsx +18 -0
  461. package/src/form/radio/RadioGroup.tsx +10 -0
  462. package/src/form/search/Search.tsx +13 -0
  463. package/src/guide-panel/GuidePanel.tsx +15 -0
  464. package/src/help-text/HelpText.tsx +13 -0
  465. package/src/index.ts +4 -0
  466. package/src/internal-header/InternalHeader.tsx +93 -0
  467. package/src/internal-header/InternalHeaderButton.tsx +23 -0
  468. package/src/internal-header/InternalHeaderTitle.tsx +27 -0
  469. package/src/internal-header/InternalHeaderUser.tsx +35 -0
  470. package/src/internal-header/InternalHeaderUserButton.tsx +40 -0
  471. package/src/internal-header/header.stories.tsx +225 -0
  472. package/src/internal-header/index.ts +8 -0
  473. package/src/link/Link.tsx +13 -0
  474. package/src/link-panel/LinkPanel.tsx +30 -4
  475. package/src/link-panel/LinkPanelDescription.tsx +12 -15
  476. package/src/link-panel/LinkPanelTitle.tsx +15 -18
  477. package/src/list/List.tsx +7 -2
  478. package/src/list/ListItem.tsx +1 -6
  479. package/src/loader/Loader.tsx +11 -0
  480. package/src/modal/Modal.tsx +27 -0
  481. package/src/pagination/Pagination.tsx +17 -0
  482. package/src/panel/Panel.tsx +19 -0
  483. package/src/popover/Popover.tsx +20 -0
  484. package/src/provider/Provider.tsx +13 -0
  485. package/src/read-more/ReadMore.tsx +17 -0
  486. package/src/skeleton/Skeleton.tsx +48 -0
  487. package/src/skeleton/index.ts +2 -0
  488. package/src/skeleton/skeleton.stories.tsx +118 -0
  489. package/src/stepper/Step.tsx +57 -60
  490. package/src/stepper/Stepper.tsx +31 -2
  491. package/src/table/Table.tsx +32 -0
  492. package/src/tabs/Tab.tsx +38 -39
  493. package/src/tabs/TabList.tsx +1 -5
  494. package/src/tabs/TabPanel.tsx +1 -5
  495. package/src/tabs/Tabs.tsx +48 -7
  496. package/src/tag/Tag.tsx +11 -0
  497. package/src/timeline/AxisLabels.tsx +143 -0
  498. package/src/timeline/Pin.tsx +169 -0
  499. package/src/timeline/Timeline.tsx +237 -0
  500. package/src/timeline/TimelineRow.tsx +122 -0
  501. package/src/timeline/hooks/usePeriodContext.tsx +22 -0
  502. package/src/timeline/hooks/useRowContext.tsx +26 -0
  503. package/src/timeline/hooks/useTimelineContext.tsx +37 -0
  504. package/src/timeline/hooks/useTimelineRows.ts +161 -0
  505. package/src/timeline/index.ts +6 -0
  506. package/src/timeline/period/ClickablePeriod.tsx +193 -0
  507. package/src/timeline/period/NonClickablePeriod.tsx +46 -0
  508. package/src/timeline/period/index.tsx +130 -0
  509. package/src/timeline/timeline.stories.tsx +444 -0
  510. package/src/timeline/utils/calc.ts +26 -0
  511. package/src/timeline/utils/filter.ts +32 -0
  512. package/src/timeline/utils/index.ts +6 -0
  513. package/src/timeline/utils/period.ts +48 -0
  514. package/src/timeline/utils/sort.ts +11 -0
  515. package/src/timeline/utils/timeline.ts +83 -0
  516. package/src/timeline/utils/types.external.ts +67 -0
  517. package/src/timeline/utils/types.internal.ts +76 -0
  518. package/src/timeline/zoom/ZoomButton.tsx +83 -0
  519. package/src/timeline/zoom/index.tsx +30 -0
  520. package/src/toggle-group/ToggleGroup.tsx +23 -3
  521. package/src/toggle-group/ToggleItem.tsx +1 -5
  522. package/src/tooltip/Tooltip.tsx +13 -0
  523. package/src/typography/BodyLong.tsx +14 -0
  524. package/src/typography/BodyShort.tsx +14 -0
  525. package/src/typography/Detail.tsx +14 -0
  526. package/src/typography/ErrorMessage.tsx +14 -0
  527. package/src/typography/Heading.tsx +14 -0
  528. package/src/typography/Ingress.tsx +14 -0
  529. package/src/typography/Label.tsx +14 -0
@@ -0,0 +1,48 @@
1
+ import React, { forwardRef } from "react";
2
+ import cl from "clsx";
3
+
4
+ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
5
+ children?: React.ReactNode;
6
+ /**
7
+ * @default text
8
+ */
9
+ variant?: "circle" | "rectangle" | "rounded" | "text";
10
+ /**
11
+ * When not inferring height from children, you must specify height
12
+ */
13
+ height?: number | string;
14
+ /**
15
+ * When not infering width from children, you must specify width
16
+ */
17
+ width?: number | string;
18
+ }
19
+
20
+ export const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(
21
+ (
22
+ { className, children, height, width, style, variant = "text", ...rest },
23
+ ref
24
+ ) => {
25
+ return (
26
+ <div
27
+ {...rest}
28
+ ref={ref}
29
+ className={cl(
30
+ "navds-skeleton",
31
+ className,
32
+ `navds-skeleton--${variant}`,
33
+ {
34
+ "navds-skeleton--has-children": Boolean(children),
35
+ "navds-skeleton--no-height": !height,
36
+ "navds-skeleton--no-width": !width,
37
+ }
38
+ )}
39
+ style={{ ...style, width, height }}
40
+ aria-hidden
41
+ >
42
+ {children}
43
+ </div>
44
+ );
45
+ }
46
+ );
47
+
48
+ export default Skeleton;
@@ -0,0 +1,2 @@
1
+ export { default as Skeleton } from "./Skeleton";
2
+ export type { SkeletonProps } from "./Skeleton";
@@ -0,0 +1,118 @@
1
+ import React from "react";
2
+ import { Skeleton } from ".";
3
+ import { Alert } from "../alert";
4
+ import { Button } from "../button";
5
+ import { Checkbox } from "../form";
6
+ import { BodyLong, Heading } from "../typography";
7
+
8
+ export default {
9
+ title: "ds-react/Skeleton",
10
+ component: Skeleton,
11
+ decorators: [
12
+ (Story) => (
13
+ <div style={{ display: "grid", gap: "0.5rem" }}>
14
+ <Story />
15
+ </div>
16
+ ),
17
+ ],
18
+ };
19
+
20
+ export const Default = {
21
+ render: () => (
22
+ <div>
23
+ <Skeleton>
24
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur
25
+ voluptas sint dolore omnis quia consequatur beatae vero cum officia
26
+ debitis. Quidem debitis omnis reprehenderit nobis rerum. Nulla, magnam?
27
+ Saepe, eveniet? Test
28
+ </Skeleton>
29
+ <Skeleton>
30
+ <Alert variant="info">
31
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur
32
+ voluptas sint dolore omnis quia consequatur beatae vero cum officia
33
+ debitis. Quidem debitis omnis reprehenderit nobis rerum. Nulla,
34
+ magnam? Saepe, eveniet?
35
+ </Alert>
36
+ </Skeleton>
37
+ <Skeleton>
38
+ <BodyLong>
39
+ Quidem debitis omnis reprehenderit nobis rerum. Nulla, magnam? Saepe,
40
+ eveniet?
41
+ </BodyLong>
42
+ <Checkbox value="test">Valg 1</Checkbox>
43
+ <Checkbox value="tes2">Valg 2</Checkbox>
44
+ <div style={{ display: "flex", gap: "2rem" }}>
45
+ <Button>Send inn</Button>
46
+ <Button>Tilbake</Button>
47
+ </div>
48
+ </Skeleton>
49
+ </div>
50
+ ),
51
+ };
52
+
53
+ export const Shapes = {
54
+ render: () => (
55
+ <>
56
+ <Skeleton variant="text"></Skeleton>
57
+ <Skeleton variant="circle" width={60} height={60}></Skeleton>
58
+ <Skeleton variant="rectangle" width={200} height={40}></Skeleton>
59
+ <Skeleton variant="rounded" width={200} height={40}></Skeleton>
60
+ </>
61
+ ),
62
+ };
63
+
64
+ export const WrappingComponents = {
65
+ render: () => (
66
+ <Skeleton style={{ display: "grid", gap: "0.5rem" }}>
67
+ <BodyLong>
68
+ Quidem debitis omnis reprehenderit nobis rerum. Nulla, magnam? Saepe,
69
+ eveniet?
70
+ </BodyLong>
71
+ <Checkbox value="test">Valg 1</Checkbox>
72
+ <Checkbox value="tes2">Valg 2</Checkbox>
73
+ <div style={{ display: "flex", gap: "2rem" }}>
74
+ <Button>Send inn</Button>
75
+ <Button>Tilbake</Button>
76
+ </div>
77
+ </Skeleton>
78
+ ),
79
+ };
80
+
81
+ export const TextSizing = {
82
+ render: () => (
83
+ <div style={{ display: "grid", width: 300 }}>
84
+ <Skeleton>
85
+ <Heading level="1" size="xlarge">
86
+ Placeholder
87
+ </Heading>
88
+ </Skeleton>
89
+ <Skeleton>
90
+ <BodyLong>Placeholder</BodyLong>
91
+ </Skeleton>
92
+ <BodyLong as={Skeleton}>Placeholder</BodyLong>
93
+ </div>
94
+ ),
95
+ };
96
+
97
+ export const NativeText = {
98
+ render: () => (
99
+ <div>
100
+ <h1>
101
+ <Skeleton>
102
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur
103
+ voluptas sint dolore omnis quia consequatur beatae vero cum officia
104
+ debitis. Quidem debitis omnis reprehenderit nobis rerum. Nulla,
105
+ magnam? Saepe, eveniet? Test
106
+ </Skeleton>
107
+ </h1>
108
+ <Skeleton>
109
+ <p>
110
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur
111
+ voluptas sint dolore omnis quia consequatur beatae vero cum officia
112
+ debitis. Quidem debitis omnis reprehenderit nobis rerum. Nulla,
113
+ magnam? Saepe, eveniet? Test
114
+ </p>
115
+ </Skeleton>
116
+ </div>
117
+ ),
118
+ };
@@ -45,69 +45,66 @@ const CompletedIcon = () => (
45
45
  </svg>
46
46
  );
47
47
 
48
- export interface StepperStepType
49
- extends OverridableComponent<StepperStepProps, HTMLAnchorElement> {}
48
+ export const Step: OverridableComponent<StepperStepProps, HTMLAnchorElement> =
49
+ forwardRef(
50
+ (
51
+ {
52
+ className,
53
+ children,
54
+ as: Component = "a",
55
+ unsafe_index = 0,
56
+ completed = false,
57
+ interactive,
58
+ ...rest
59
+ },
60
+ ref
61
+ ) => {
62
+ const context = useContext(StepperContext);
63
+ if (context === null) {
64
+ console.error("<Stepper.Step> has to be used within <Stepper>");
65
+ return null;
66
+ }
67
+ const { activeStep } = context;
50
68
 
51
- export const StepComponent: OverridableComponent<
52
- StepperStepProps,
53
- HTMLAnchorElement
54
- > = forwardRef(
55
- (
56
- {
57
- className,
58
- children,
59
- as: Component = "a",
60
- unsafe_index = 0,
61
- completed = false,
62
- interactive,
63
- ...rest
64
- },
65
- ref
66
- ) => {
67
- const context = useContext(StepperContext);
68
- if (context === null) {
69
- console.error("<Stepper.Step> has to be used within <Stepper>");
70
- return null;
71
- }
72
- const { activeStep } = context;
73
-
74
- const isInteractive = interactive ?? context?.interactive;
69
+ const isInteractive = interactive ?? context?.interactive;
75
70
 
76
- const Comp = isInteractive ? Component : "div";
71
+ const Comp = isInteractive ? Component : "div";
77
72
 
78
- return (
79
- <Comp
80
- {...rest}
81
- aria-current={activeStep === unsafe_index}
82
- ref={ref}
83
- className={cl("navds-stepper__step", className, {
84
- "navds-stepper__step--active": activeStep === unsafe_index,
85
- "navds-stepper__step--behind": activeStep > unsafe_index,
86
- "navds-stepper__step--non-interactive": !isInteractive,
87
- "navds-stepper__step--completed": completed,
88
- })}
89
- onClick={(e) => {
90
- isInteractive && context.onStepChange(unsafe_index + 1);
91
- rest?.onClick?.(e);
92
- }}
93
- >
94
- {completed ? (
95
- <span className="navds-stepper__circle navds-stepper__circle--success">
96
- <CompletedIcon />
97
- </span>
98
- ) : (
99
- <Label className="navds-stepper__circle" as="span" aria-hidden="true">
100
- {unsafe_index + 1}
73
+ return (
74
+ <Comp
75
+ {...rest}
76
+ aria-current={activeStep === unsafe_index}
77
+ ref={ref}
78
+ className={cl("navds-stepper__step", className, {
79
+ "navds-stepper__step--active": activeStep === unsafe_index,
80
+ "navds-stepper__step--behind": activeStep > unsafe_index,
81
+ "navds-stepper__step--non-interactive": !isInteractive,
82
+ "navds-stepper__step--completed": completed,
83
+ })}
84
+ onClick={(e) => {
85
+ isInteractive && context.onStepChange(unsafe_index + 1);
86
+ rest?.onClick?.(e);
87
+ }}
88
+ >
89
+ {completed ? (
90
+ <span className="navds-stepper__circle navds-stepper__circle--success">
91
+ <CompletedIcon />
92
+ </span>
93
+ ) : (
94
+ <Label
95
+ className="navds-stepper__circle"
96
+ as="span"
97
+ aria-hidden="true"
98
+ >
99
+ {unsafe_index + 1}
100
+ </Label>
101
+ )}
102
+ <Label as="span" className="navds-stepper__content">
103
+ {children}
101
104
  </Label>
102
- )}
103
- <Label as="span" className="navds-stepper__content">
104
- {children}
105
- </Label>
106
- </Comp>
107
- );
108
- }
109
- );
110
-
111
- const Step = StepComponent as StepperStepType;
105
+ </Comp>
106
+ );
107
+ }
108
+ );
112
109
 
113
110
  export default Step;
@@ -1,6 +1,7 @@
1
1
  import React, { createContext, forwardRef } from "react";
2
2
  import cl from "clsx";
3
- import Step, { StepperStepProps, StepperStepType } from "./Step";
3
+ import Step, { StepperStepProps } from "./Step";
4
+ import { OverridableComponent } from "../util/OverridableComponent";
4
5
 
5
6
  export interface StepperProps extends React.HTMLAttributes<HTMLOListElement> {
6
7
  /**
@@ -33,7 +34,11 @@ interface StepperComponent
33
34
  extends React.ForwardRefExoticComponent<
34
35
  StepperProps & React.RefAttributes<HTMLOListElement>
35
36
  > {
36
- Step: StepperStepType;
37
+ /**
38
+ * @see 🏷️ {@link StepperStepProps}
39
+ * @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
40
+ */
41
+ Step: OverridableComponent<StepperStepProps, HTMLAnchorElement>;
37
42
  }
38
43
 
39
44
  interface StepperContextProps {
@@ -46,6 +51,30 @@ interface StepperContextProps {
46
51
 
47
52
  export const StepperContext = createContext<StepperContextProps | null>(null);
48
53
 
54
+ /**
55
+ * A component that displays a stepper with clickable steps.
56
+ *
57
+ * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/stepper)
58
+ * @see 🏷️ {@link StepperProps}
59
+ *
60
+ * @example
61
+ * ```jsx
62
+ * <>
63
+ * <Heading size="medium" spacing level="2" id="stepper-heading">
64
+ * Søknadssteg
65
+ * </Heading>
66
+ * <Stepper
67
+ * aria-labelledby="stepper-heading"
68
+ * activeStep={activeStep}
69
+ * onStepChange={(x) => setActiveStep(x)}
70
+ * >
71
+ * <Stepper.Step href="#">Start søknad</Stepper.Step>
72
+ * <Stepper.Step href="#">Saksopplysninger</Stepper.Step>
73
+ * <Stepper.Step href="#">Vedlegg</Stepper.Step>
74
+ * </Stepper>
75
+ * </>
76
+ * ```
77
+ */
49
78
  export const Stepper: StepperComponent = forwardRef<
50
79
  HTMLOListElement,
51
80
  StepperProps
@@ -56,6 +56,38 @@ export interface TableContextProps {
56
56
 
57
57
  export const TableContext = createContext<TableContextProps | null>(null);
58
58
 
59
+ /**
60
+ * A component that displays a table with headers and rows.
61
+ *
62
+ * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/table)
63
+ * @see 🏷️ {@link TableProps}
64
+ *
65
+ * @example
66
+ * ```jsx
67
+ * <Table>
68
+ * <Table.Header>
69
+ * <Table.Row>
70
+ * <Table.HeaderCell scope="col">Navn</Table.HeaderCell>
71
+ * <Table.HeaderCell scope="col">Fødseslnr.</Table.HeaderCell>
72
+ * <Table.HeaderCell scope="col">Start</Table.HeaderCell>
73
+ * </Table.Row>
74
+ * </Table.Header>
75
+ * <Table.Body>
76
+ * {data.map(({ name, fnr, start }, i) => {
77
+ * return (
78
+ * <Table.Row key={i + fnr}>
79
+ * <Table.HeaderCell scope="row">{name}</Table.HeaderCell>
80
+ * <Table.DataCell>{fnr}</Table.DataCell>
81
+ * <Table.DataCell>
82
+ * {format(new Date(start), "dd.MM.yyyy")}
83
+ * </Table.DataCell>
84
+ * </Table.Row>
85
+ * );
86
+ * })}
87
+ * </Table.Body>
88
+ * </Table>
89
+ * ```
90
+ */
59
91
  export const Table = forwardRef(
60
92
  (
61
93
  {
package/src/tabs/Tab.tsx CHANGED
@@ -20,47 +20,46 @@ export interface TabProps
20
20
  value: string;
21
21
  }
22
22
 
23
- export type TabType = OverridableComponent<TabProps, HTMLButtonElement>;
23
+ export const Tab: OverridableComponent<TabProps, HTMLButtonElement> =
24
+ forwardRef(
25
+ (
26
+ { className, as: Component = "button", label, icon, value, ...rest },
27
+ ref
28
+ ) => {
29
+ const context = useContext(TabsContext);
24
30
 
25
- export const Tab: TabType = forwardRef(
26
- (
27
- { className, as: Component = "button", label, icon, value, ...rest },
28
- ref
29
- ) => {
30
- const context = useContext(TabsContext);
31
+ if (!label && !icon) {
32
+ console.error("<Tabs.Tab/> needs label/icon");
33
+ return null;
34
+ }
31
35
 
32
- if (!label && !icon) {
33
- console.error("<Tabs.Tab/> needs label/icon");
34
- return null;
35
- }
36
-
37
- return (
38
- <RadixTabs.Trigger value={value} asChild>
39
- <Component
40
- ref={ref}
41
- className={cl(
42
- "navds-tabs__tab",
43
- `navds-tabs__tab--${context?.size ?? "medium"}`,
44
- `navds-tabs__tab-icon--${context?.iconPosition}`,
45
- className,
46
- {
47
- "navds-tabs__tab--icon-only": icon && !label,
48
- }
49
- )}
50
- {...rest}
51
- >
52
- <BodyShort
53
- as="span"
54
- className="navds-tabs__tab-inner"
55
- size={context?.size}
36
+ return (
37
+ <RadixTabs.Trigger value={value} asChild>
38
+ <Component
39
+ ref={ref}
40
+ className={cl(
41
+ "navds-tabs__tab",
42
+ `navds-tabs__tab--${context?.size ?? "medium"}`,
43
+ `navds-tabs__tab-icon--${context?.iconPosition}`,
44
+ className,
45
+ {
46
+ "navds-tabs__tab--icon-only": icon && !label,
47
+ }
48
+ )}
49
+ {...rest}
56
50
  >
57
- {icon}
58
- {label}
59
- </BodyShort>
60
- </Component>
61
- </RadixTabs.Trigger>
62
- );
63
- }
64
- );
51
+ <BodyShort
52
+ as="span"
53
+ className="navds-tabs__tab-inner"
54
+ size={context?.size}
55
+ >
56
+ {icon}
57
+ {label}
58
+ </BodyShort>
59
+ </Component>
60
+ </RadixTabs.Trigger>
61
+ );
62
+ }
63
+ );
65
64
 
66
65
  export default Tab;
@@ -19,10 +19,6 @@ export interface TabListProps extends React.HTMLAttributes<HTMLDivElement> {
19
19
  children: React.ReactNode;
20
20
  }
21
21
 
22
- export type TabListType = React.ForwardRefExoticComponent<
23
- TabListProps & React.RefAttributes<HTMLDivElement>
24
- >;
25
-
26
22
  export const TabList = forwardRef<HTMLDivElement, TabListProps>(
27
23
  ({ className, ...rest }, ref) => {
28
24
  const context = useContext(TabsContext);
@@ -127,6 +123,6 @@ export const TabList = forwardRef<HTMLDivElement, TabListProps>(
127
123
  </div>
128
124
  );
129
125
  }
130
- ) as TabListType;
126
+ );
131
127
 
132
128
  export default TabList;
@@ -13,10 +13,6 @@ export interface TabPanelProps extends React.HTMLAttributes<HTMLDivElement> {
13
13
  value: string;
14
14
  }
15
15
 
16
- export type TabPanelType = React.ForwardRefExoticComponent<
17
- TabPanelProps & React.RefAttributes<HTMLDivElement>
18
- >;
19
-
20
16
  const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(
21
17
  ({ className, ...rest }, ref) => (
22
18
  <TabsContent
@@ -25,6 +21,6 @@ const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(
25
21
  className={cl("navds-tabs__tabpanel", className)}
26
22
  />
27
23
  )
28
- ) as TabPanelType;
24
+ );
29
25
 
30
26
  export default TabPanel;
package/src/tabs/Tabs.tsx CHANGED
@@ -1,9 +1,10 @@
1
+ import * as RadixTabs from "@radix-ui/react-tabs";
1
2
  import cl from "clsx";
2
3
  import React, { createContext, forwardRef, HTMLAttributes } from "react";
3
- import * as RadixTabs from "@radix-ui/react-tabs";
4
- import Tab, { TabType } from "./Tab";
5
- import TabList, { TabListType } from "./TabList";
6
- import TabPanel, { TabPanelType } from "./TabPanel";
4
+ import { OverridableComponent } from "../util/OverridableComponent";
5
+ import Tab, { TabProps } from "./Tab";
6
+ import TabList, { TabListProps } from "./TabList";
7
+ import TabPanel, { TabPanelProps } from "./TabPanel";
7
8
 
8
9
  export interface TabsProps
9
10
  extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "dir"> {
@@ -46,9 +47,23 @@ interface TabsComponent
46
47
  extends React.ForwardRefExoticComponent<
47
48
  TabsProps & React.RefAttributes<HTMLDivElement>
48
49
  > {
49
- Tab: TabType;
50
- List: TabListType;
51
- Panel: TabPanelType;
50
+ /**
51
+ * @see 🏷️ {@link TabProps}
52
+ * @see [🤖 OverridableComponent](https://aksel.nav.no/grunnleggende/kode/overridablecomponent) support
53
+ */
54
+ Tab: OverridableComponent<TabProps, HTMLButtonElement>;
55
+ /**
56
+ * @see 🏷️ {@link TabListProps}
57
+ */
58
+ List: React.ForwardRefExoticComponent<
59
+ TabListProps & React.RefAttributes<HTMLDivElement>
60
+ >;
61
+ /**
62
+ * @see 🏷️ {@link TabPanelProps}
63
+ */
64
+ Panel: React.ForwardRefExoticComponent<
65
+ TabPanelProps & React.RefAttributes<HTMLDivElement>
66
+ >;
52
67
  }
53
68
 
54
69
  interface TabsContextProps {
@@ -59,6 +74,32 @@ interface TabsContextProps {
59
74
 
60
75
  export const TabsContext = createContext<TabsContextProps | null>(null);
61
76
 
77
+ /**
78
+ * A component that displays a set of tabs that can be used to switch between different views.
79
+ *
80
+ * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/tabs)
81
+ * @see 🏷️ {@link TabsProps}
82
+ *
83
+ * @example
84
+ * ```jsx
85
+ * <Tabs defaultValue="logg">
86
+ * <Tabs.List>
87
+ * <Tabs.Tab value="logg" label="Logg" />
88
+ * <Tabs.Tab value="inbox" label="Inbox" />
89
+ * <Tabs.Tab value="sendt" label="Sendt" />
90
+ * </Tabs.List>
91
+ * <Tabs.Panel value="logg" className="h-24 w-full bg-gray-50 p-4">
92
+ * Logg-tab
93
+ * </Tabs.Panel>
94
+ * <Tabs.Panel value="inbox" className="h-24 w-full bg-gray-50 p-4">
95
+ * Inbox-tab
96
+ * </Tabs.Panel>
97
+ * <Tabs.Panel value="sendt" className="h-24 w-full bg-gray-50 p-4">
98
+ * Sendt-tab
99
+ * </Tabs.Panel>
100
+ * </Tabs>
101
+ * ```
102
+ */
62
103
  export const Tabs = forwardRef<HTMLDivElement, TabsProps>(
63
104
  (
64
105
  {
package/src/tag/Tag.tsx CHANGED
@@ -38,6 +38,17 @@ export interface TagProps extends HTMLAttributes<HTMLSpanElement> {
38
38
  size?: "medium" | "small" | "xsmall";
39
39
  }
40
40
 
41
+ /**
42
+ * A component that displays a small label with a text and a background color.
43
+ *
44
+ * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/tag)
45
+ * @see 🏷️ {@link TagProps}
46
+ *
47
+ * @example
48
+ * ```jsx
49
+ * <Tag variant="success">Success</Tag>
50
+ * ```
51
+ */
41
52
  export const Tag = forwardRef<HTMLSpanElement, TagProps>(
42
53
  ({ className, variant, size = "medium", ...rest }, ref) => (
43
54
  <BodyShort