@amsterdam/design-system-react 0.15.0 → 1.0.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 (566) hide show
  1. package/README.md +1 -1
  2. package/dist/Accordion/Accordion.d.ts +3 -0
  3. package/dist/Accordion/Accordion.js +7 -1
  4. package/dist/Accordion/Accordion.test.d.ts +4 -0
  5. package/dist/Accordion/Accordion.test.js +23 -3
  6. package/dist/Accordion/AccordionSection.test.d.ts +4 -0
  7. package/dist/Accordion/AccordionSection.test.js +5 -1
  8. package/dist/Accordion/index.d.ts +4 -0
  9. package/dist/Accordion/index.js +4 -0
  10. package/dist/ActionGroup/ActionGroup.d.ts +3 -0
  11. package/dist/ActionGroup/ActionGroup.js +3 -0
  12. package/dist/ActionGroup/ActionGroup.test.d.ts +4 -0
  13. package/dist/ActionGroup/ActionGroup.test.js +5 -1
  14. package/dist/ActionGroup/index.d.ts +4 -0
  15. package/dist/ActionGroup/index.js +4 -0
  16. package/dist/Alert/Alert.d.ts +3 -0
  17. package/dist/Alert/Alert.js +8 -5
  18. package/dist/Alert/Alert.test.d.ts +4 -0
  19. package/dist/Alert/Alert.test.js +5 -1
  20. package/dist/Alert/index.d.ts +4 -0
  21. package/dist/Alert/index.js +4 -0
  22. package/dist/Avatar/Avatar.d.ts +3 -0
  23. package/dist/Avatar/Avatar.js +5 -2
  24. package/dist/Avatar/Avatar.test.d.ts +4 -0
  25. package/dist/Avatar/Avatar.test.js +5 -1
  26. package/dist/Avatar/index.d.ts +4 -0
  27. package/dist/Avatar/index.js +4 -0
  28. package/dist/Badge/Badge.d.ts +3 -0
  29. package/dist/Badge/Badge.js +3 -0
  30. package/dist/Badge/Badge.test.d.ts +4 -0
  31. package/dist/Badge/Badge.test.js +5 -1
  32. package/dist/Badge/index.d.ts +4 -0
  33. package/dist/Badge/index.js +4 -0
  34. package/dist/Blockquote/Blockquote.d.ts +3 -0
  35. package/dist/Blockquote/Blockquote.js +3 -0
  36. package/dist/Blockquote/Blockquote.test.d.ts +4 -0
  37. package/dist/Blockquote/Blockquote.test.js +7 -4
  38. package/dist/Blockquote/index.d.ts +4 -0
  39. package/dist/Blockquote/index.js +4 -0
  40. package/dist/Breadcrumb/Breadcrumb.d.ts +3 -0
  41. package/dist/Breadcrumb/Breadcrumb.js +3 -0
  42. package/dist/Breadcrumb/Breadcrumb.test.d.ts +4 -0
  43. package/dist/Breadcrumb/Breadcrumb.test.js +5 -1
  44. package/dist/Breadcrumb/BreadcrumbLink.test.d.ts +4 -0
  45. package/dist/Breadcrumb/BreadcrumbLink.test.js +5 -1
  46. package/dist/Breadcrumb/index.d.ts +4 -0
  47. package/dist/Breadcrumb/index.js +4 -0
  48. package/dist/Breakout/Breakout.d.ts +3 -0
  49. package/dist/Breakout/Breakout.js +3 -0
  50. package/dist/Breakout/Breakout.test.d.ts +4 -0
  51. package/dist/Breakout/Breakout.test.js +15 -19
  52. package/dist/Breakout/BreakoutCell.d.ts +3 -1
  53. package/dist/Breakout/BreakoutCell.js +1 -0
  54. package/dist/Breakout/BreakoutCell.test.d.ts +4 -0
  55. package/dist/Breakout/BreakoutCell.test.js +24 -16
  56. package/dist/Breakout/index.d.ts +4 -0
  57. package/dist/Breakout/index.js +4 -0
  58. package/dist/Button/Button.d.ts +3 -0
  59. package/dist/Button/Button.js +3 -0
  60. package/dist/Button/Button.test.d.ts +4 -0
  61. package/dist/Button/Button.test.js +12 -1
  62. package/dist/Button/index.d.ts +4 -0
  63. package/dist/Button/index.js +4 -0
  64. package/dist/Card/Card.d.ts +13 -0
  65. package/dist/Card/Card.js +11 -1
  66. package/dist/Card/Card.test.d.ts +4 -0
  67. package/dist/Card/Card.test.js +5 -1
  68. package/dist/Card/CardHeading.d.ts +11 -0
  69. package/dist/Card/CardHeading.js +10 -0
  70. package/dist/Card/CardHeading.test.d.ts +5 -0
  71. package/dist/Card/CardHeading.test.js +38 -0
  72. package/dist/Card/CardHeadingGroup.test.d.ts +4 -0
  73. package/dist/Card/CardHeadingGroup.test.js +5 -1
  74. package/dist/Card/CardImage.d.ts +7 -0
  75. package/dist/Card/CardImage.js +10 -0
  76. package/dist/Card/CardImage.test.d.ts +5 -0
  77. package/dist/{Footer/FooterSpotlight.test.js → Card/CardImage.test.js} +13 -9
  78. package/dist/Card/CardLink.test.d.ts +4 -0
  79. package/dist/Card/CardLink.test.js +5 -1
  80. package/dist/Card/index.d.ts +4 -0
  81. package/dist/Card/index.js +4 -0
  82. package/dist/CharacterCount/CharacterCount.d.ts +3 -0
  83. package/dist/CharacterCount/CharacterCount.js +3 -0
  84. package/dist/CharacterCount/CharacterCount.test.d.ts +4 -0
  85. package/dist/CharacterCount/CharacterCount.test.js +5 -1
  86. package/dist/CharacterCount/index.d.ts +4 -0
  87. package/dist/CharacterCount/index.js +4 -0
  88. package/dist/Checkbox/Checkbox.d.ts +9 -2
  89. package/dist/Checkbox/Checkbox.js +6 -2
  90. package/dist/Checkbox/Checkbox.test.d.ts +4 -0
  91. package/dist/Checkbox/Checkbox.test.js +12 -3
  92. package/dist/Checkbox/CheckboxIcon.d.ts +7 -0
  93. package/dist/Checkbox/CheckboxIcon.js +3 -0
  94. package/dist/Checkbox/index.d.ts +4 -0
  95. package/dist/Checkbox/index.js +4 -0
  96. package/dist/Column/Column.d.ts +7 -3
  97. package/dist/Column/Column.js +5 -1
  98. package/dist/Column/Column.test.d.ts +4 -0
  99. package/dist/Column/Column.test.js +14 -12
  100. package/dist/Column/index.d.ts +4 -0
  101. package/dist/Column/index.js +4 -0
  102. package/dist/DateInput/DateInput.d.ts +3 -0
  103. package/dist/DateInput/DateInput.js +3 -0
  104. package/dist/DateInput/DateInput.test.d.ts +4 -0
  105. package/dist/DateInput/DateInput.test.js +5 -1
  106. package/dist/DateInput/index.d.ts +4 -0
  107. package/dist/DateInput/index.js +4 -0
  108. package/dist/DescriptionList/DescriptionList.d.ts +3 -0
  109. package/dist/DescriptionList/DescriptionList.js +3 -0
  110. package/dist/DescriptionList/DescriptionList.test.d.ts +4 -0
  111. package/dist/DescriptionList/DescriptionList.test.js +5 -1
  112. package/dist/DescriptionList/DescriptionListDescription.test.d.ts +4 -0
  113. package/dist/DescriptionList/DescriptionListDescription.test.js +5 -1
  114. package/dist/DescriptionList/DescriptionListSection.test.d.ts +4 -0
  115. package/dist/DescriptionList/DescriptionListSection.test.js +5 -1
  116. package/dist/DescriptionList/DescriptionListTerm.test.d.ts +4 -0
  117. package/dist/DescriptionList/DescriptionListTerm.test.js +5 -1
  118. package/dist/DescriptionList/index.d.ts +4 -0
  119. package/dist/DescriptionList/index.js +4 -0
  120. package/dist/Dialog/Dialog.d.ts +3 -0
  121. package/dist/Dialog/Dialog.js +3 -0
  122. package/dist/Dialog/Dialog.test.d.ts +4 -0
  123. package/dist/Dialog/Dialog.test.js +5 -1
  124. package/dist/Dialog/index.d.ts +4 -0
  125. package/dist/Dialog/index.js +4 -0
  126. package/dist/ErrorMessage/ErrorMessage.d.ts +3 -0
  127. package/dist/ErrorMessage/ErrorMessage.js +5 -2
  128. package/dist/ErrorMessage/ErrorMessage.test.d.ts +4 -0
  129. package/dist/ErrorMessage/ErrorMessage.test.js +5 -1
  130. package/dist/ErrorMessage/index.d.ts +4 -0
  131. package/dist/ErrorMessage/index.js +4 -0
  132. package/dist/Field/Field.d.ts +3 -0
  133. package/dist/Field/Field.js +3 -0
  134. package/dist/Field/Field.test.d.ts +4 -0
  135. package/dist/Field/Field.test.js +5 -1
  136. package/dist/Field/index.d.ts +4 -0
  137. package/dist/Field/index.js +4 -0
  138. package/dist/FieldSet/FieldSet.d.ts +3 -0
  139. package/dist/FieldSet/FieldSet.js +3 -0
  140. package/dist/FieldSet/FieldSet.test.d.ts +4 -0
  141. package/dist/FieldSet/FieldSet.test.js +5 -1
  142. package/dist/FieldSet/index.d.ts +4 -0
  143. package/dist/FieldSet/index.js +4 -0
  144. package/dist/Figure/Figure.d.ts +3 -0
  145. package/dist/Figure/Figure.js +3 -0
  146. package/dist/Figure/Figure.test.d.ts +4 -0
  147. package/dist/Figure/Figure.test.js +5 -1
  148. package/dist/Figure/FigureCaption.test.d.ts +4 -0
  149. package/dist/Figure/FigureCaption.test.js +5 -1
  150. package/dist/Figure/index.d.ts +4 -0
  151. package/dist/Figure/index.js +4 -0
  152. package/dist/FileInput/FileInput.d.ts +3 -0
  153. package/dist/FileInput/FileInput.js +3 -0
  154. package/dist/FileInput/FileInput.test.d.ts +4 -0
  155. package/dist/FileInput/FileInput.test.js +5 -1
  156. package/dist/FileInput/index.d.ts +4 -0
  157. package/dist/FileInput/index.js +4 -0
  158. package/dist/FileList/FileList.d.ts +3 -0
  159. package/dist/FileList/FileList.js +3 -0
  160. package/dist/FileList/FileList.test.d.ts +4 -0
  161. package/dist/FileList/FileList.test.js +5 -1
  162. package/dist/FileList/FileListItem.test.d.ts +4 -0
  163. package/dist/FileList/FileListItem.test.js +5 -1
  164. package/dist/FileList/index.d.ts +4 -0
  165. package/dist/FileList/index.js +4 -0
  166. package/dist/Grid/Grid.d.ts +11 -5
  167. package/dist/Grid/Grid.js +5 -0
  168. package/dist/Grid/Grid.test.d.ts +4 -0
  169. package/dist/Grid/Grid.test.js +17 -29
  170. package/dist/Grid/GridCell.test.d.ts +4 -0
  171. package/dist/Grid/GridCell.test.js +6 -8
  172. package/dist/Grid/index.d.ts +4 -0
  173. package/dist/Grid/index.js +4 -0
  174. package/dist/Grid/paddingClasses.d.ts +6 -2
  175. package/dist/Grid/paddingClasses.js +4 -0
  176. package/dist/Heading/Heading.d.ts +3 -1
  177. package/dist/Heading/Heading.js +7 -0
  178. package/dist/Heading/Heading.test.d.ts +4 -0
  179. package/dist/Heading/Heading.test.js +21 -11
  180. package/dist/Heading/getHeadingTag.d.ts +4 -0
  181. package/dist/Heading/getHeadingTag.js +4 -0
  182. package/dist/Heading/index.d.ts +4 -0
  183. package/dist/Heading/index.js +4 -0
  184. package/dist/Hint/Hint.test.d.ts +4 -0
  185. package/dist/Hint/Hint.test.js +5 -1
  186. package/dist/Hint/index.d.ts +4 -0
  187. package/dist/Hint/index.js +4 -0
  188. package/dist/Icon/Icon.d.ts +5 -3
  189. package/dist/Icon/Icon.js +8 -0
  190. package/dist/Icon/Icon.test.d.ts +4 -0
  191. package/dist/Icon/Icon.test.js +15 -12
  192. package/dist/Icon/index.d.ts +4 -0
  193. package/dist/Icon/index.js +4 -0
  194. package/dist/IconButton/IconButton.d.ts +5 -2
  195. package/dist/IconButton/IconButton.js +4 -1
  196. package/dist/IconButton/IconButton.test.d.ts +4 -0
  197. package/dist/IconButton/IconButton.test.js +5 -1
  198. package/dist/IconButton/index.d.ts +4 -0
  199. package/dist/IconButton/index.js +4 -0
  200. package/dist/Image/Image.d.ts +7 -8
  201. package/dist/Image/Image.js +3 -0
  202. package/dist/Image/Image.test.d.ts +4 -0
  203. package/dist/Image/Image.test.js +5 -1
  204. package/dist/Image/generateAspectRatioClass.d.ts +4 -0
  205. package/dist/Image/generateAspectRatioClass.js +4 -0
  206. package/dist/Image/index.d.ts +4 -0
  207. package/dist/Image/index.js +4 -0
  208. package/dist/ImageSlider/ImageSlider.d.ts +3 -0
  209. package/dist/ImageSlider/ImageSlider.js +3 -0
  210. package/dist/ImageSlider/ImageSlider.test.d.ts +4 -0
  211. package/dist/ImageSlider/ImageSlider.test.js +5 -1
  212. package/dist/ImageSlider/ImageSliderControls.js +3 -3
  213. package/dist/ImageSlider/ImageSliderControls.test.d.ts +4 -0
  214. package/dist/ImageSlider/ImageSliderControls.test.js +4 -0
  215. package/dist/ImageSlider/ImageSliderItem.test.d.ts +4 -0
  216. package/dist/ImageSlider/ImageSliderItem.test.js +5 -1
  217. package/dist/ImageSlider/ImageSliderScroller.test.d.ts +4 -0
  218. package/dist/ImageSlider/ImageSliderScroller.test.js +5 -1
  219. package/dist/ImageSlider/ImageSliderThumbnails.js +1 -1
  220. package/dist/ImageSlider/ImageSliderThumbnails.test.d.ts +4 -0
  221. package/dist/ImageSlider/ImageSliderThumbnails.test.js +5 -1
  222. package/dist/ImageSlider/index.d.ts +4 -0
  223. package/dist/ImageSlider/index.js +4 -0
  224. package/dist/InvalidFormAlert/InvalidFormAlert.d.ts +3 -0
  225. package/dist/InvalidFormAlert/InvalidFormAlert.js +3 -0
  226. package/dist/InvalidFormAlert/InvalidFormAlert.test.d.ts +4 -0
  227. package/dist/InvalidFormAlert/InvalidFormAlert.test.js +5 -1
  228. package/dist/InvalidFormAlert/index.d.ts +4 -0
  229. package/dist/InvalidFormAlert/index.js +4 -0
  230. package/dist/InvalidFormAlert/useAddErrorCountToDocumentTitle.d.ts +4 -0
  231. package/dist/InvalidFormAlert/useAddErrorCountToDocumentTitle.js +4 -0
  232. package/dist/Label/Label.d.ts +3 -1
  233. package/dist/Label/Label.js +7 -0
  234. package/dist/Label/Label.test.d.ts +4 -0
  235. package/dist/Label/Label.test.js +7 -4
  236. package/dist/Label/index.d.ts +4 -0
  237. package/dist/Label/index.js +4 -0
  238. package/dist/Link/Link.d.ts +3 -6
  239. package/dist/Link/Link.js +4 -1
  240. package/dist/Link/Link.test.d.ts +4 -0
  241. package/dist/Link/Link.test.js +26 -29
  242. package/dist/Link/index.d.ts +4 -0
  243. package/dist/Link/index.js +4 -0
  244. package/dist/LinkList/LinkList.d.ts +3 -0
  245. package/dist/LinkList/LinkList.js +3 -0
  246. package/dist/LinkList/LinkList.test.d.ts +4 -0
  247. package/dist/LinkList/LinkList.test.js +5 -1
  248. package/dist/LinkList/LinkListLink.js +2 -2
  249. package/dist/LinkList/LinkListLink.test.d.ts +4 -0
  250. package/dist/LinkList/LinkListLink.test.js +5 -1
  251. package/dist/LinkList/index.d.ts +4 -0
  252. package/dist/LinkList/index.js +4 -0
  253. package/dist/Logo/Logo.d.ts +3 -0
  254. package/dist/Logo/Logo.js +3 -0
  255. package/dist/Logo/Logo.test.d.ts +4 -0
  256. package/dist/Logo/Logo.test.js +6 -3
  257. package/dist/Logo/brand/LogoAmsterdam.d.ts +4 -0
  258. package/dist/Logo/brand/LogoAmsterdam.js +4 -0
  259. package/dist/Logo/brand/LogoGgdAmsterdam.d.ts +4 -0
  260. package/dist/Logo/brand/LogoGgdAmsterdam.js +4 -0
  261. package/dist/Logo/brand/LogoMuseumWeesp.d.ts +4 -0
  262. package/dist/Logo/brand/LogoMuseumWeesp.js +4 -0
  263. package/dist/Logo/brand/LogoStadsarchief.d.ts +4 -0
  264. package/dist/Logo/brand/LogoStadsarchief.js +4 -0
  265. package/dist/Logo/brand/LogoStadsbankVanLening.d.ts +4 -0
  266. package/dist/Logo/brand/LogoStadsbankVanLening.js +4 -0
  267. package/dist/Logo/brand/LogoVgaVerzekeringen.d.ts +4 -0
  268. package/dist/Logo/brand/LogoVgaVerzekeringen.js +4 -0
  269. package/dist/Logo/brand/index.d.ts +4 -0
  270. package/dist/Logo/brand/index.js +4 -0
  271. package/dist/Logo/index.d.ts +4 -0
  272. package/dist/Logo/index.js +4 -0
  273. package/dist/Mark/Mark.d.ts +3 -0
  274. package/dist/Mark/Mark.js +3 -0
  275. package/dist/Mark/Mark.test.d.ts +4 -0
  276. package/dist/Mark/Mark.test.js +5 -1
  277. package/dist/Mark/index.d.ts +4 -0
  278. package/dist/Mark/index.js +4 -0
  279. package/dist/OrderedList/OrderedList.d.ts +3 -0
  280. package/dist/OrderedList/OrderedList.js +3 -0
  281. package/dist/OrderedList/OrderedList.test.d.ts +4 -0
  282. package/dist/OrderedList/OrderedList.test.js +5 -1
  283. package/dist/OrderedList/OrderedListItem.test.d.ts +4 -0
  284. package/dist/OrderedList/OrderedListItem.test.js +5 -1
  285. package/dist/OrderedList/index.d.ts +4 -0
  286. package/dist/OrderedList/index.js +4 -0
  287. package/dist/Overlap/Overlap.d.ts +3 -0
  288. package/dist/Overlap/Overlap.js +3 -0
  289. package/dist/Overlap/Overlap.test.d.ts +4 -0
  290. package/dist/Overlap/Overlap.test.js +5 -1
  291. package/dist/Overlap/index.d.ts +4 -0
  292. package/dist/Overlap/index.js +4 -0
  293. package/dist/Page/Page.d.ts +12 -0
  294. package/dist/Page/Page.js +12 -0
  295. package/dist/Page/Page.test.d.ts +5 -0
  296. package/dist/{MegaMenu/MegaMenu.test.js → Page/Page.test.js} +13 -9
  297. package/dist/Page/index.d.ts +6 -0
  298. package/dist/Page/index.js +5 -0
  299. package/dist/{Footer/Footer.d.ts → PageFooter/PageFooter.d.ts} +5 -2
  300. package/dist/PageFooter/PageFooter.js +20 -0
  301. package/dist/PageFooter/PageFooter.test.d.ts +5 -0
  302. package/dist/{Footer/Footer.test.js → PageFooter/PageFooter.test.js} +13 -9
  303. package/dist/{Footer/FooterMenu.d.ts → PageFooter/PageFooterMenu.d.ts} +2 -2
  304. package/dist/PageFooter/PageFooterMenu.js +9 -0
  305. package/dist/PageFooter/PageFooterMenu.test.d.ts +5 -0
  306. package/dist/{Footer/FooterMenu.test.js → PageFooter/PageFooterMenu.test.js} +13 -9
  307. package/dist/{Footer/FooterMenuLink.d.ts → PageFooter/PageFooterMenuLink.d.ts} +2 -2
  308. package/dist/PageFooter/PageFooterMenuLink.js +9 -0
  309. package/dist/PageFooter/PageFooterMenuLink.test.d.ts +5 -0
  310. package/dist/{Footer/FooterMenuLink.test.js → PageFooter/PageFooterMenuLink.test.js} +13 -9
  311. package/dist/{Footer/FooterSpotlight.d.ts → PageFooter/PageFooterSpotlight.d.ts} +2 -2
  312. package/dist/PageFooter/PageFooterSpotlight.js +9 -0
  313. package/dist/PageFooter/PageFooterSpotlight.test.d.ts +5 -0
  314. package/dist/{MegaMenu/MegaMenuListCategory.test.js → PageFooter/PageFooterSpotlight.test.js} +13 -9
  315. package/dist/PageFooter/index.d.ts +9 -0
  316. package/dist/PageFooter/index.js +5 -0
  317. package/dist/{Header/Header.d.ts → PageHeader/PageHeader.d.ts} +13 -6
  318. package/dist/PageHeader/PageHeader.js +35 -0
  319. package/dist/{Header/Header.test.d.ts → PageHeader/PageHeader.test.d.ts} +4 -0
  320. package/dist/{Header/Header.test.js → PageHeader/PageHeader.test.js} +47 -38
  321. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.d.ts +6 -0
  322. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.js +10 -0
  323. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.test.d.ts +5 -0
  324. package/dist/{Header/HeaderGridCellNarrowWindowOnly.test.js → PageHeader/PageHeaderGridCellNarrowWindowOnly.test.js} +14 -10
  325. package/dist/PageHeader/PageHeaderMenuIcon.d.ts +6 -0
  326. package/dist/PageHeader/PageHeaderMenuIcon.js +2 -0
  327. package/dist/{Header/HeaderMenuLink.d.ts → PageHeader/PageHeaderMenuLink.d.ts} +6 -2
  328. package/dist/PageHeader/PageHeaderMenuLink.js +9 -0
  329. package/dist/PageHeader/PageHeaderMenuLink.test.d.ts +5 -0
  330. package/dist/{Header/HeaderMenuLink.test.js → PageHeader/PageHeaderMenuLink.test.js} +17 -13
  331. package/dist/PageHeader/index.d.ts +7 -0
  332. package/dist/PageHeader/index.js +5 -0
  333. package/dist/PageHeader/matchMedia.mock.d.ts +4 -0
  334. package/dist/{Header → PageHeader}/matchMedia.mock.js +4 -0
  335. package/dist/PageHeading/PageHeading.d.ts +3 -0
  336. package/dist/PageHeading/PageHeading.js +3 -0
  337. package/dist/PageHeading/PageHeading.test.d.ts +4 -0
  338. package/dist/PageHeading/PageHeading.test.js +6 -3
  339. package/dist/PageHeading/index.d.ts +4 -0
  340. package/dist/PageHeading/index.js +4 -0
  341. package/dist/Pagination/LinkItem.d.ts +4 -0
  342. package/dist/Pagination/Pagination.d.ts +3 -0
  343. package/dist/Pagination/Pagination.js +5 -2
  344. package/dist/Pagination/Pagination.test.d.ts +4 -0
  345. package/dist/Pagination/Pagination.test.js +5 -1
  346. package/dist/Pagination/Spacer.d.ts +4 -0
  347. package/dist/Pagination/Spacer.js +4 -0
  348. package/dist/Pagination/getRange.d.ts +4 -0
  349. package/dist/Pagination/getRange.js +4 -0
  350. package/dist/Pagination/index.d.ts +4 -0
  351. package/dist/Pagination/index.js +4 -0
  352. package/dist/Paragraph/Paragraph.d.ts +3 -1
  353. package/dist/Paragraph/Paragraph.js +7 -0
  354. package/dist/Paragraph/Paragraph.test.d.ts +4 -0
  355. package/dist/Paragraph/Paragraph.test.js +5 -1
  356. package/dist/Paragraph/index.d.ts +4 -0
  357. package/dist/Paragraph/index.js +4 -0
  358. package/dist/PasswordInput/PasswordInput.d.ts +3 -0
  359. package/dist/PasswordInput/PasswordInput.js +3 -0
  360. package/dist/PasswordInput/PasswordInput.test.d.ts +4 -0
  361. package/dist/PasswordInput/PasswordInput.test.js +5 -1
  362. package/dist/PasswordInput/index.d.ts +4 -0
  363. package/dist/PasswordInput/index.js +4 -0
  364. package/dist/Radio/Radio.d.ts +3 -0
  365. package/dist/Radio/Radio.js +3 -0
  366. package/dist/Radio/Radio.test.d.ts +4 -0
  367. package/dist/Radio/Radio.test.js +7 -3
  368. package/dist/Radio/RadioIcon.d.ts +4 -0
  369. package/dist/Radio/RadioIcon.js +1 -1
  370. package/dist/Radio/index.d.ts +4 -0
  371. package/dist/Radio/index.js +4 -0
  372. package/dist/Row/Row.d.ts +7 -3
  373. package/dist/Row/Row.js +5 -1
  374. package/dist/Row/Row.test.d.ts +4 -0
  375. package/dist/Row/Row.test.js +14 -12
  376. package/dist/Row/index.d.ts +4 -0
  377. package/dist/Row/index.js +4 -0
  378. package/dist/SearchField/SearchField.d.ts +5 -0
  379. package/dist/SearchField/SearchField.js +3 -0
  380. package/dist/SearchField/SearchField.test.d.ts +4 -0
  381. package/dist/SearchField/SearchField.test.js +6 -3
  382. package/dist/SearchField/SearchFieldInput.test.d.ts +4 -0
  383. package/dist/SearchField/SearchFieldInput.test.js +6 -3
  384. package/dist/SearchField/index.d.ts +4 -0
  385. package/dist/SearchField/index.js +4 -0
  386. package/dist/Select/Select.d.ts +3 -0
  387. package/dist/Select/Select.js +3 -0
  388. package/dist/Select/Select.test.d.ts +4 -0
  389. package/dist/Select/Select.test.js +5 -1
  390. package/dist/Select/SelectOption.test.d.ts +4 -0
  391. package/dist/Select/SelectOption.test.js +5 -1
  392. package/dist/Select/SelectOptionGroup.test.d.ts +4 -0
  393. package/dist/Select/SelectOptionGroup.test.js +5 -1
  394. package/dist/Select/index.d.ts +4 -0
  395. package/dist/Select/index.js +4 -0
  396. package/dist/SkipLink/SkipLink.d.ts +3 -0
  397. package/dist/SkipLink/SkipLink.js +3 -0
  398. package/dist/SkipLink/SkipLink.test.d.ts +4 -0
  399. package/dist/SkipLink/SkipLink.test.js +5 -1
  400. package/dist/SkipLink/index.d.ts +4 -0
  401. package/dist/SkipLink/index.js +4 -0
  402. package/dist/Spotlight/Spotlight.d.ts +7 -2
  403. package/dist/Spotlight/Spotlight.js +4 -0
  404. package/dist/Spotlight/Spotlight.test.d.ts +4 -0
  405. package/dist/Spotlight/Spotlight.test.js +15 -9
  406. package/dist/Spotlight/index.d.ts +4 -0
  407. package/dist/Spotlight/index.js +4 -0
  408. package/dist/StandaloneLink/StandaloneLink.d.ts +20 -0
  409. package/dist/StandaloneLink/StandaloneLink.js +13 -0
  410. package/dist/StandaloneLink/StandaloneLink.test.d.ts +5 -0
  411. package/dist/StandaloneLink/StandaloneLink.test.js +44 -0
  412. package/dist/StandaloneLink/index.d.ts +6 -0
  413. package/dist/StandaloneLink/index.js +5 -0
  414. package/dist/Switch/Switch.d.ts +3 -0
  415. package/dist/Switch/Switch.js +3 -0
  416. package/dist/Switch/Switch.test.d.ts +4 -0
  417. package/dist/Switch/Switch.test.js +5 -1
  418. package/dist/Switch/index.d.ts +4 -0
  419. package/dist/Switch/index.js +4 -0
  420. package/dist/Table/Table.d.ts +3 -0
  421. package/dist/Table/Table.js +3 -0
  422. package/dist/Table/Table.test.d.ts +4 -0
  423. package/dist/Table/Table.test.js +5 -1
  424. package/dist/Table/TableBody.test.d.ts +4 -0
  425. package/dist/Table/TableBody.test.js +5 -1
  426. package/dist/Table/TableCaption.d.ts +1 -2
  427. package/dist/Table/TableCaption.js +4 -0
  428. package/dist/Table/TableCaption.test.d.ts +4 -0
  429. package/dist/Table/TableCaption.test.js +5 -1
  430. package/dist/Table/TableCell.test.d.ts +4 -0
  431. package/dist/Table/TableCell.test.js +5 -1
  432. package/dist/Table/TableFooter.test.d.ts +4 -0
  433. package/dist/Table/TableFooter.test.js +5 -1
  434. package/dist/Table/TableHeader.test.d.ts +4 -0
  435. package/dist/Table/TableHeader.test.js +5 -1
  436. package/dist/Table/TableHeaderCell.test.d.ts +4 -0
  437. package/dist/Table/TableHeaderCell.test.js +5 -1
  438. package/dist/Table/TableRow.test.d.ts +4 -0
  439. package/dist/Table/TableRow.test.js +5 -1
  440. package/dist/Table/index.d.ts +4 -0
  441. package/dist/Table/index.js +4 -0
  442. package/dist/TableOfContents/TableOfContents.d.ts +3 -0
  443. package/dist/TableOfContents/TableOfContents.js +3 -0
  444. package/dist/TableOfContents/TableOfContents.test.d.ts +4 -0
  445. package/dist/TableOfContents/TableOfContents.test.js +5 -1
  446. package/dist/TableOfContents/TableOfContentsLink.test.d.ts +4 -0
  447. package/dist/TableOfContents/TableOfContentsLink.test.js +5 -1
  448. package/dist/TableOfContents/TableOfContentsList.test.d.ts +4 -0
  449. package/dist/TableOfContents/TableOfContentsList.test.js +5 -1
  450. package/dist/TableOfContents/index.d.ts +4 -0
  451. package/dist/TableOfContents/index.js +4 -0
  452. package/dist/Tabs/Tabs.d.ts +9 -6
  453. package/dist/Tabs/Tabs.js +9 -6
  454. package/dist/Tabs/Tabs.test.d.ts +4 -0
  455. package/dist/Tabs/Tabs.test.js +25 -6
  456. package/dist/Tabs/TabsButton.d.ts +4 -4
  457. package/dist/Tabs/TabsButton.js +7 -4
  458. package/dist/Tabs/TabsButton.test.d.ts +4 -0
  459. package/dist/Tabs/TabsButton.test.js +24 -10
  460. package/dist/Tabs/TabsContext.d.ts +2 -7
  461. package/dist/Tabs/TabsContext.js +0 -1
  462. package/dist/Tabs/TabsList.js +1 -1
  463. package/dist/Tabs/TabsList.test.d.ts +4 -0
  464. package/dist/Tabs/TabsList.test.js +5 -1
  465. package/dist/Tabs/TabsPanel.d.ts +4 -4
  466. package/dist/Tabs/TabsPanel.js +4 -4
  467. package/dist/Tabs/TabsPanel.test.d.ts +4 -0
  468. package/dist/Tabs/TabsPanel.test.js +14 -12
  469. package/dist/Tabs/index.d.ts +4 -0
  470. package/dist/Tabs/index.js +4 -0
  471. package/dist/TextArea/TextArea.d.ts +3 -0
  472. package/dist/TextArea/TextArea.js +3 -0
  473. package/dist/TextArea/TextArea.test.d.ts +4 -0
  474. package/dist/TextArea/TextArea.test.js +5 -1
  475. package/dist/TextArea/index.d.ts +4 -0
  476. package/dist/TextArea/index.js +4 -0
  477. package/dist/TextInput/TextInput.d.ts +3 -0
  478. package/dist/TextInput/TextInput.js +3 -0
  479. package/dist/TextInput/TextInput.test.d.ts +4 -0
  480. package/dist/TextInput/TextInput.test.js +6 -3
  481. package/dist/TextInput/index.d.ts +4 -0
  482. package/dist/TextInput/index.js +4 -0
  483. package/dist/TimeInput/TimeInput.d.ts +3 -0
  484. package/dist/TimeInput/TimeInput.js +3 -0
  485. package/dist/TimeInput/TimeInput.test.d.ts +4 -0
  486. package/dist/TimeInput/TimeInput.test.js +5 -1
  487. package/dist/TimeInput/index.d.ts +4 -0
  488. package/dist/TimeInput/index.js +4 -0
  489. package/dist/UnorderedList/UnorderedList.d.ts +3 -0
  490. package/dist/UnorderedList/UnorderedList.js +3 -0
  491. package/dist/UnorderedList/UnorderedList.test.d.ts +4 -0
  492. package/dist/UnorderedList/UnorderedList.test.js +5 -1
  493. package/dist/UnorderedList/UnorderedListItem.test.d.ts +4 -0
  494. package/dist/UnorderedList/UnorderedListItem.test.js +5 -1
  495. package/dist/UnorderedList/index.d.ts +4 -0
  496. package/dist/UnorderedList/index.js +4 -0
  497. package/dist/common/accessibility.d.ts +9 -1
  498. package/dist/common/formatFileSize.test.d.ts +4 -0
  499. package/dist/common/formatFileSize.test.js +4 -0
  500. package/dist/common/formatFileType.test.d.ts +4 -0
  501. package/dist/common/formatFileType.test.js +4 -0
  502. package/dist/common/types.d.ts +4 -0
  503. package/dist/common/types.js +4 -0
  504. package/dist/common/useIsAfterBreakpoint.d.ts +4 -0
  505. package/dist/common/useIsAfterBreakpoint.js +4 -0
  506. package/dist/common/useKeyboardFocus.test.d.ts +4 -0
  507. package/dist/common/useKeyboardFocus.test.js +4 -0
  508. package/dist/index.cjs.js +1307 -1105
  509. package/dist/index.cjs.js.map +1 -1
  510. package/dist/index.d.ts +358 -197
  511. package/dist/index.esm.js +1306 -1102
  512. package/dist/index.esm.js.map +1 -1
  513. package/dist/index.js +4 -6
  514. package/dist/tsconfig.tsbuildinfo +1 -1
  515. package/package.json +15 -15
  516. package/dist/Footer/Footer.js +0 -17
  517. package/dist/Footer/Footer.test.d.ts +0 -1
  518. package/dist/Footer/FooterMenu.js +0 -9
  519. package/dist/Footer/FooterMenu.test.d.ts +0 -1
  520. package/dist/Footer/FooterMenuLink.js +0 -9
  521. package/dist/Footer/FooterMenuLink.test.d.ts +0 -1
  522. package/dist/Footer/FooterSpotlight.js +0 -9
  523. package/dist/Footer/FooterSpotlight.test.d.ts +0 -1
  524. package/dist/Footer/index.d.ts +0 -5
  525. package/dist/Footer/index.js +0 -1
  526. package/dist/Header/Header.js +0 -31
  527. package/dist/Header/HeaderGridCellNarrowWindowOnly.d.ts +0 -2
  528. package/dist/Header/HeaderGridCellNarrowWindowOnly.js +0 -6
  529. package/dist/Header/HeaderGridCellNarrowWindowOnly.test.d.ts +0 -1
  530. package/dist/Header/HeaderMenuIcon.d.ts +0 -2
  531. package/dist/Header/HeaderMenuIcon.js +0 -2
  532. package/dist/Header/HeaderMenuLink.js +0 -5
  533. package/dist/Header/HeaderMenuLink.test.d.ts +0 -1
  534. package/dist/Header/index.d.ts +0 -3
  535. package/dist/Header/index.js +0 -1
  536. package/dist/Header/matchMedia.mock.d.ts +0 -0
  537. package/dist/MegaMenu/MegaMenu.d.ts +0 -14
  538. package/dist/MegaMenu/MegaMenu.js +0 -12
  539. package/dist/MegaMenu/MegaMenu.test.d.ts +0 -1
  540. package/dist/MegaMenu/MegaMenuListCategory.d.ts +0 -9
  541. package/dist/MegaMenu/MegaMenuListCategory.js +0 -9
  542. package/dist/MegaMenu/MegaMenuListCategory.test.d.ts +0 -1
  543. package/dist/MegaMenu/index.d.ts +0 -3
  544. package/dist/MegaMenu/index.js +0 -1
  545. package/dist/PageMenu/PageMenu.d.ts +0 -25
  546. package/dist/PageMenu/PageMenu.js +0 -12
  547. package/dist/PageMenu/PageMenu.test.d.ts +0 -1
  548. package/dist/PageMenu/PageMenu.test.js +0 -45
  549. package/dist/PageMenu/PageMenuLink.d.ts +0 -13
  550. package/dist/PageMenu/PageMenuLink.js +0 -10
  551. package/dist/PageMenu/PageMenuLink.test.d.ts +0 -1
  552. package/dist/PageMenu/PageMenuLink.test.js +0 -40
  553. package/dist/PageMenu/index.d.ts +0 -3
  554. package/dist/PageMenu/index.js +0 -1
  555. package/dist/Screen/Screen.d.ts +0 -21
  556. package/dist/Screen/Screen.js +0 -9
  557. package/dist/Screen/Screen.test.d.ts +0 -1
  558. package/dist/Screen/Screen.test.js +0 -40
  559. package/dist/Screen/index.d.ts +0 -2
  560. package/dist/Screen/index.js +0 -1
  561. package/dist/TopTaskLink/TopTaskLink.d.ts +0 -17
  562. package/dist/TopTaskLink/TopTaskLink.js +0 -9
  563. package/dist/TopTaskLink/TopTaskLink.test.d.ts +0 -1
  564. package/dist/TopTaskLink/TopTaskLink.test.js +0 -42
  565. package/dist/TopTaskLink/index.d.ts +0 -1
  566. package/dist/TopTaskLink/index.js +0 -1
@@ -1,4 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
2
6
  import { render, screen } from '@testing-library/react';
3
7
  import { createRef } from 'react';
4
8
  import { TableOfContents } from './TableOfContents';
@@ -26,7 +30,7 @@ describe('Table of contents', () => {
26
30
  const component = container.querySelector(':only-child');
27
31
  expect(component).toHaveClass('ams-table-of-contents');
28
32
  });
29
- it('renders an additional class name', () => {
33
+ it('renders an extra class name', () => {
30
34
  const { container } = render(_jsx(TableOfContents, { className: "extra" }));
31
35
  const component = container.querySelector(':only-child');
32
36
  expect(component).toHaveClass('ams-table-of-contents extra');
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  import '@testing-library/jest-dom';
@@ -1,4 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
2
6
  import '@testing-library/jest-dom';
3
7
  import { render, screen } from '@testing-library/react';
4
8
  import { createRef } from 'react';
@@ -16,7 +20,7 @@ describe('Table of Contents link', () => {
16
20
  const component = screen.getByRole('link');
17
21
  expect(component).toHaveClass('ams-table-of-contents__link');
18
22
  });
19
- it('renders an additional class name', () => {
23
+ it('renders an extra class name', () => {
20
24
  render(_jsx(TableOfContents.Link, { className: "extra", href: "#", label: "Test" }));
21
25
  const component = screen.getByRole('link');
22
26
  expect(component).toHaveClass('ams-table-of-contents__link extra');
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  import '@testing-library/jest-dom';
@@ -1,4 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
2
6
  import { render, screen } from '@testing-library/react';
3
7
  import { createRef } from 'react';
4
8
  import { TableOfContents } from './TableOfContents';
@@ -14,7 +18,7 @@ describe('Table of Contents list', () => {
14
18
  const component = screen.getByRole('list');
15
19
  expect(component).toHaveClass('ams-table-of-contents__list');
16
20
  });
17
- it('renders an additional class name', () => {
21
+ it('renders an extra class name', () => {
18
22
  render(_jsx(TableOfContents.List, { className: "extra" }));
19
23
  const component = screen.getByRole('list');
20
24
  expect(component).toHaveClass('ams-table-of-contents__list extra');
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  export { TableOfContents } from './TableOfContents';
2
6
  export type { TableOfContentsProps } from './TableOfContents';
3
7
  export type { TableOfContentsLinkProps } from './TableOfContentsLink';
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  export { TableOfContents } from './TableOfContents';
@@ -4,19 +4,22 @@
4
4
  */
5
5
  import type { HTMLAttributes, PropsWithChildren } from 'react';
6
6
  export type TabsProps = {
7
- /** The identifier of the initially active tab. Corresponds to its `tab` value. */
7
+ /** The identifier of the initially active Tab. Corresponds to its Panel `id` value. */
8
8
  activeTab?: string;
9
- onTabChange?: (tabId: string) => void;
9
+ onTabChange?: (panelId: string) => void;
10
10
  } & PropsWithChildren<HTMLAttributes<HTMLDivElement>>;
11
+ /**
12
+ * @see {@link https://designsystem.amsterdam/?path=/docs/components-containers-tabs--docs Tabs docs at Amsterdam Design System}
13
+ */
11
14
  export declare const Tabs: import("react").ForwardRefExoticComponent<{
12
- /** The identifier of the initially active tab. Corresponds to its `tab` value. */
15
+ /** The identifier of the initially active Tab. Corresponds to its Panel `id` value. */
13
16
  activeTab?: string;
14
- onTabChange?: (tabId: string) => void;
17
+ onTabChange?: (panelId: string) => void;
15
18
  } & HTMLAttributes<HTMLDivElement> & {
16
19
  children?: import("react").ReactNode | undefined;
17
20
  } & import("react").RefAttributes<HTMLDivElement>> & {
18
21
  Button: import("react").ForwardRefExoticComponent<{
19
- tab: string;
22
+ 'aria-controls': string;
20
23
  } & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
21
24
  children?: import("react").ReactNode | undefined;
22
25
  } & import("react").RefAttributes<HTMLButtonElement>>;
@@ -24,7 +27,7 @@ export declare const Tabs: import("react").ForwardRefExoticComponent<{
24
27
  children?: import("react").ReactNode | undefined;
25
28
  } & import("react").RefAttributes<HTMLDivElement>>;
26
29
  Panel: import("react").ForwardRefExoticComponent<{
27
- tab: string;
30
+ id: string;
28
31
  } & HTMLAttributes<HTMLDivElement> & {
29
32
  children?: import("react").ReactNode | undefined;
30
33
  } & import("react").RefAttributes<HTMLDivElement>>;
package/dist/Tabs/Tabs.js CHANGED
@@ -4,14 +4,14 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  * Copyright Gemeente Amsterdam
5
5
  */
6
6
  import clsx from 'clsx';
7
- import { forwardRef, useEffect, useId, useMemo, useState } from 'react';
7
+ import { forwardRef, useEffect, useMemo, useState } from 'react';
8
8
  import { TabsButton } from './TabsButton';
9
9
  import { TabsContext } from './TabsContext';
10
10
  import { TabsList } from './TabsList';
11
11
  import { TabsPanel } from './TabsPanel';
12
12
  const TabsRoot = forwardRef(({ activeTab, children, className, onTabChange, ...restProps }, ref) => {
13
- const tabsId = useId();
14
13
  const [activeTabId, setActiveTabId] = useState();
14
+ // Get all tab ids from TabsButtons on first render
15
15
  const allTabIds = useMemo(() => {
16
16
  if (!Array.isArray(children))
17
17
  return [];
@@ -22,15 +22,15 @@ const TabsRoot = forwardRef(({ activeTab, children, className, onTabChange, ...r
22
22
  // TabsList can have 0, 1, or more children
23
23
  // If there is only 1 child, it will be an object
24
24
  if (tabsListChildren.props) {
25
- return [tabsListChildren.props.tab];
25
+ return [tabsListChildren.props['aria-controls']];
26
26
  }
27
27
  // If there is more than 1 child, it will be an array
28
28
  if (Array.isArray(tabsListChildren)) {
29
- return tabsListChildren.map((child) => child.props.tab);
29
+ return tabsListChildren.map((child) => child.props['aria-controls']);
30
30
  }
31
31
  // If there are no children, return an empty array
32
32
  return [];
33
- }, [children]);
33
+ }, []);
34
34
  useEffect(() => {
35
35
  if (!activeTab) {
36
36
  setActiveTabId(allTabIds[0]);
@@ -47,9 +47,12 @@ const TabsRoot = forwardRef(({ activeTab, children, className, onTabChange, ...r
47
47
  setActiveTabId(tab);
48
48
  onTabChange?.(tab);
49
49
  };
50
- return (_jsx(TabsContext.Provider, { value: { activeTabId, tabsId, updateTab }, children: _jsx("div", { ...restProps, className: clsx('ams-tabs', className), ref: ref, children: children }) }));
50
+ return (_jsx(TabsContext.Provider, { value: { activeTabId, updateTab }, children: _jsx("div", { ...restProps, className: clsx('ams-tabs', className), ref: ref, children: children }) }));
51
51
  });
52
52
  TabsRoot.displayName = 'Tabs';
53
+ /**
54
+ * @see {@link https://designsystem.amsterdam/?path=/docs/components-containers-tabs--docs Tabs docs at Amsterdam Design System}
55
+ */
53
56
  export const Tabs = Object.assign(TabsRoot, {
54
57
  Button: TabsButton,
55
58
  List: TabsList,
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  import '@testing-library/jest-dom';
@@ -1,4 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
2
6
  import { render, screen } from '@testing-library/react';
3
7
  import userEvent from '@testing-library/user-event';
4
8
  import { createRef } from 'react';
@@ -16,7 +20,7 @@ describe('Tabs', () => {
16
20
  const component = container.querySelector(':only-child');
17
21
  expect(component).toHaveClass('ams-tabs');
18
22
  });
19
- it('renders an additional class name', () => {
23
+ it('renders an extra class name', () => {
20
24
  const { container } = render(_jsx(Tabs, { className: "extra" }));
21
25
  const component = container.querySelector(':only-child');
22
26
  expect(component).toHaveClass('ams-tabs extra');
@@ -28,14 +32,14 @@ describe('Tabs', () => {
28
32
  expect(ref.current).toBe(component);
29
33
  });
30
34
  it('supports children', () => {
31
- render(_jsxs(Tabs, { children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { tab: "one", children: "Tab 1" }), _jsx(Tabs.Button, { tab: "two", children: "Tab 2" })] }), _jsx(Tabs.Panel, { tab: "one", children: "Content 1" }), _jsx(Tabs.Panel, { tab: "two", children: "Content 2" })] }));
35
+ render(_jsxs(Tabs, { children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { "aria-controls": "one", children: "Tab 1" }), _jsx(Tabs.Button, { "aria-controls": "two", children: "Tab 2" })] }), _jsx(Tabs.Panel, { id: "one", children: "Content 1" }), _jsx(Tabs.Panel, { id: "two", children: "Content 2" })] }));
32
36
  expect(screen.getByRole('tablist')).toBeInTheDocument();
33
37
  expect(screen.getByRole('tab', { selected: true })).toBeInTheDocument();
34
38
  expect(screen.getByRole('tabpanel')).toBeInTheDocument();
35
39
  });
36
40
  it('should select a tab when clicked', async () => {
37
41
  const user = userEvent.setup();
38
- render(_jsxs(Tabs, { children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { tab: "one", children: "Tab 1" }), _jsx(Tabs.Button, { tab: "two", children: "Tab 2" })] }), _jsx(Tabs.Panel, { tab: "one", children: "Content 1" }), _jsx(Tabs.Panel, { tab: "two", children: "Content 2" })] }));
42
+ render(_jsxs(Tabs, { children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { "aria-controls": "one", children: "Tab 1" }), _jsx(Tabs.Button, { "aria-controls": "two", children: "Tab 2" })] }), _jsx(Tabs.Panel, { id: "one", children: "Content 1" }), _jsx(Tabs.Panel, { id: "two", children: "Content 2" })] }));
39
43
  const tabOne = screen.getByRole('tab', { name: 'Tab 1' });
40
44
  const tabTwo = screen.getByRole('tab', { name: 'Tab 2' });
41
45
  expect(tabOne).toHaveAttribute('aria-selected', 'true');
@@ -55,13 +59,13 @@ describe('Tabs', () => {
55
59
  it('calls onTabChange with the newly activated tab', async () => {
56
60
  const user = userEvent.setup();
57
61
  const onTabChange = jest.fn();
58
- render(_jsx(Tabs, { onTabChange: onTabChange, children: _jsx(Tabs.List, { children: _jsx(Tabs.Button, { tab: "one", children: "Tab 1" }) }) }));
62
+ render(_jsx(Tabs, { onTabChange: onTabChange, children: _jsx(Tabs.List, { children: _jsx(Tabs.Button, { "aria-controls": "one", children: "Tab 1" }) }) }));
59
63
  const button = screen.getByRole('tab', { name: 'Tab 1' });
60
64
  await user.click(button);
61
65
  expect(onTabChange).toHaveBeenCalledWith('one');
62
66
  });
63
67
  it('should be able to set the initially active tab', () => {
64
- render(_jsxs(Tabs, { activeTab: "three", children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { tab: "one", children: "Tab 1" }), _jsx(Tabs.Button, { tab: "two", children: "Tab 2" }), _jsx(Tabs.Button, { tab: "three", children: "Tab 3" }), _jsx(Tabs.Button, { tab: "four", children: "Tab 4" })] }), _jsx(Tabs.Panel, { tab: "one", children: "Content 1" }), _jsx(Tabs.Panel, { tab: "two", children: "Content 2" }), _jsx(Tabs.Panel, { tab: "three", children: "Content 3" }), _jsx(Tabs.Panel, { tab: "four", children: "Content 4" })] }));
68
+ render(_jsxs(Tabs, { activeTab: "three", children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { "aria-controls": "one", children: "Tab 1" }), _jsx(Tabs.Button, { "aria-controls": "two", children: "Tab 2" }), _jsx(Tabs.Button, { "aria-controls": "three", children: "Tab 3" }), _jsx(Tabs.Button, { "aria-controls": "four", children: "Tab 4" })] }), _jsx(Tabs.Panel, { id: "one", children: "Content 1" }), _jsx(Tabs.Panel, { id: "two", children: "Content 2" }), _jsx(Tabs.Panel, { id: "three", children: "Content 3" }), _jsx(Tabs.Panel, { id: "four", children: "Content 4" })] }));
65
69
  const tabOne = screen.getByRole('tab', { name: 'Tab 1' });
66
70
  const tabThree = screen.getByRole('tab', { name: 'Tab 3' });
67
71
  expect(tabOne).toHaveAttribute('aria-selected', 'false');
@@ -73,7 +77,7 @@ describe('Tabs', () => {
73
77
  it('should set the first tab as the initially active tab when the supplied active tab does not exist', async () => {
74
78
  // Disable console.warn for this test, to prevent it from cluttering the test output
75
79
  jest.spyOn(console, 'warn').mockImplementation(() => { });
76
- render(_jsxs(Tabs, { activeTab: "unknown", children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { tab: "one", children: "Tab 1" }), _jsx(Tabs.Button, { tab: "two", children: "Tab 2" }), _jsx(Tabs.Button, { tab: "three", children: "Tab 3" }), _jsx(Tabs.Button, { tab: "four", children: "Tab 4" })] }), _jsx(Tabs.Panel, { tab: "one", children: "Content 1" }), _jsx(Tabs.Panel, { tab: "two", children: "Content 2" }), _jsx(Tabs.Panel, { tab: "three", children: "Content 3" }), _jsx(Tabs.Panel, { tab: "four", children: "Content 4" })] }));
80
+ render(_jsxs(Tabs, { activeTab: "unknown", children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { "aria-controls": "one", children: "Tab 1" }), _jsx(Tabs.Button, { "aria-controls": "two", children: "Tab 2" }), _jsx(Tabs.Button, { "aria-controls": "three", children: "Tab 3" }), _jsx(Tabs.Button, { "aria-controls": "four", children: "Tab 4" })] }), _jsx(Tabs.Panel, { id: "one", children: "Content 1" }), _jsx(Tabs.Panel, { id: "two", children: "Content 2" }), _jsx(Tabs.Panel, { id: "three", children: "Content 3" }), _jsx(Tabs.Panel, { id: "four", children: "Content 4" })] }));
77
81
  const firstTab = screen.getByRole('tab', { name: 'Tab 1' });
78
82
  const lastTab = screen.getByRole('tab', { name: 'Tab 4' });
79
83
  expect(firstTab).toHaveAttribute('aria-selected', 'true');
@@ -82,4 +86,19 @@ describe('Tabs', () => {
82
86
  expect(lastTab).toHaveAttribute('tabindex', '-1');
83
87
  expect(screen.getByRole('tabpanel')).toHaveTextContent('Content 1');
84
88
  });
89
+ it('sets focus on Tabs buttons when using arrow keys', async () => {
90
+ const user = userEvent.setup();
91
+ render(_jsxs(Tabs, { children: [_jsxs(Tabs.List, { children: [_jsx(Tabs.Button, { "aria-controls": "one", children: "Tab 1" }), _jsx(Tabs.Button, { "aria-controls": "two", children: "Tab 2" }), _jsx(Tabs.Button, { "aria-controls": "three", children: "Tab 3" })] }), _jsx(Tabs.Panel, { id: "one" }), _jsx(Tabs.Panel, { id: "two" }), _jsx(Tabs.Panel, { id: "three" })] }));
92
+ const firstButton = screen.getByRole('tab', { name: 'Tab 1' });
93
+ const thirdButton = screen.getByRole('tab', { name: 'Tab 3' });
94
+ await user.click(firstButton);
95
+ expect(firstButton).toHaveFocus();
96
+ // Click the right arrow key twice
97
+ await user.keyboard('{ArrowRight}');
98
+ await user.keyboard('{ArrowRight}');
99
+ expect(thirdButton).toHaveFocus();
100
+ expect(firstButton).not.toHaveFocus();
101
+ await user.keyboard('{ArrowRight}');
102
+ expect(firstButton).toHaveFocus();
103
+ });
85
104
  });
@@ -4,12 +4,12 @@
4
4
  */
5
5
  import type { ButtonHTMLAttributes, PropsWithChildren } from 'react';
6
6
  export type TabsButtonProps = {
7
- /** An identifier. */
8
- tab: string;
7
+ /** The identifier of the corresponding tab panel. */
8
+ 'aria-controls': string;
9
9
  } & PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>>;
10
10
  export declare const TabsButton: import("react").ForwardRefExoticComponent<{
11
- /** An identifier. */
12
- tab: string;
11
+ /** The identifier of the corresponding tab panel. */
12
+ 'aria-controls': string;
13
13
  } & ButtonHTMLAttributes<HTMLButtonElement> & {
14
14
  children?: import("react").ReactNode | undefined;
15
15
  } & import("react").RefAttributes<HTMLButtonElement>>;
@@ -6,14 +6,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  import clsx from 'clsx';
7
7
  import { forwardRef, startTransition, useContext } from 'react';
8
8
  import { TabsContext } from './TabsContext';
9
- export const TabsButton = forwardRef(({ children, className, onClick, tab, ...restProps }, ref) => {
10
- const { activeTabId, tabsId, updateTab } = useContext(TabsContext);
9
+ export const TabsButton = forwardRef(({ 'aria-controls': ariaControls, children, className, onClick, ...restProps }, ref) => {
10
+ const { activeTabId, updateTab } = useContext(TabsContext);
11
11
  const handleClick = (event) => {
12
12
  onClick?.(event);
13
+ // Allow preventDefault to stop the tab from updating
14
+ if (event.defaultPrevented)
15
+ return;
13
16
  startTransition(() => {
14
- updateTab(tab);
17
+ updateTab(ariaControls);
15
18
  });
16
19
  };
17
- return (_jsxs("button", { ...restProps, "aria-controls": `${tabsId}-panel-${tab}`, "aria-selected": activeTabId === tab, className: clsx('ams-tabs__button', className), id: `${tabsId}-tab-${tab}`, onClick: handleClick, ref: ref, role: "tab", tabIndex: activeTabId === tab ? 0 : -1, children: [_jsx("span", { "aria-hidden": "true", className: "ams-tabs__button-label-hidden", children: children }), _jsx("span", { className: "ams-tabs__button-label", children: children })] }));
20
+ return (_jsxs("button", { ...restProps, "aria-controls": ariaControls, "aria-selected": activeTabId === ariaControls, className: clsx('ams-tabs__button', className), id: `button-${ariaControls}`, onClick: handleClick, ref: ref, role: "tab", tabIndex: activeTabId === ariaControls ? 0 : -1, type: "button", children: [_jsx("span", { "aria-hidden": "true", className: "ams-tabs__button-label-hidden", children: children }), _jsx("span", { className: "ams-tabs__button-label", children: children })] }));
18
21
  });
19
22
  TabsButton.displayName = 'Tabs.Button';
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  import '@testing-library/jest-dom';
@@ -1,42 +1,56 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
2
6
  import { render, screen } from '@testing-library/react';
7
+ import userEvent from '@testing-library/user-event';
3
8
  import { createRef } from 'react';
4
9
  import { TabsButton } from './TabsButton';
5
10
  import '@testing-library/jest-dom';
11
+ import { TabsContext } from './TabsContext';
6
12
  describe('Tabs button', () => {
7
13
  it('renders', () => {
8
- render(_jsx(TabsButton, { tab: "one" }));
14
+ render(_jsx(TabsButton, { "aria-controls": "one" }));
9
15
  const component = screen.getByRole('tab');
10
16
  expect(component).toBeInTheDocument();
11
17
  });
12
18
  it('renders a design system BEM class name', () => {
13
- render(_jsx(TabsButton, { tab: "one" }));
19
+ render(_jsx(TabsButton, { "aria-controls": "one" }));
14
20
  const component = screen.getByRole('tab');
15
21
  expect(component).toHaveClass('ams-tabs__button');
16
22
  });
17
- it('renders an additional class name', () => {
18
- render(_jsx(TabsButton, { className: "extra", tab: "one" }));
23
+ it('renders an extra class name', () => {
24
+ render(_jsx(TabsButton, { "aria-controls": "one", className: "extra" }));
19
25
  const component = screen.getByRole('tab');
20
26
  expect(component).toHaveClass('ams-tabs__button extra');
21
27
  });
22
28
  it('renders a label', () => {
23
- render(_jsx(TabsButton, { tab: "one", children: "Label" }));
29
+ render(_jsx(TabsButton, { "aria-controls": "one", children: "Label" }));
24
30
  const component = screen.getByRole('tab', { name: 'Label' });
25
31
  expect(component).toBeInTheDocument();
26
32
  });
27
33
  it('renders the correct id based on the tabs prop', () => {
28
- const { container } = render(_jsx(TabsButton, { tab: "one" }));
29
- const component = container.querySelector('#-tab-one');
34
+ const { container } = render(_jsx(TabsButton, { "aria-controls": "one" }));
35
+ const component = container.querySelector('#button-one');
30
36
  expect(component).toBeInTheDocument();
31
37
  });
32
38
  it('should associate the button with the correct tab', () => {
33
- render(_jsx(TabsButton, { tab: "one" }));
39
+ render(_jsx(TabsButton, { "aria-controls": "one" }));
34
40
  const component = screen.getByRole('tab');
35
- expect(component).toHaveAttribute('aria-controls', '-panel-one');
41
+ expect(component).toHaveAttribute('aria-controls', 'one');
42
+ });
43
+ it('does not call updateTab if event.preventDefault is invoked', async () => {
44
+ const user = userEvent.setup();
45
+ const mockUpdateTab = jest.fn();
46
+ render(_jsx(TabsContext.Provider, { value: { updateTab: mockUpdateTab }, children: _jsx(TabsButton, { "aria-controls": "one", onClick: (event) => event.preventDefault(), children: "Label" }) }));
47
+ const button = screen.getByRole('tab', { name: 'Label' });
48
+ await user.click(button);
49
+ expect(mockUpdateTab).not.toHaveBeenCalled();
36
50
  });
37
51
  it('supports ForwardRef in React', () => {
38
52
  const ref = createRef();
39
- render(_jsx(TabsButton, { ref: ref, tab: "one" }));
53
+ render(_jsx(TabsButton, { "aria-controls": "one", ref: ref }));
40
54
  const component = screen.getByRole('tab');
41
55
  expect(ref.current).toBe(component);
42
56
  });
@@ -3,14 +3,9 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
  export type TabsContextValue = {
6
- /** The identifier of the active tab. */
6
+ /** The identifier of the active Tab. */
7
7
  activeTabId?: string;
8
- /**
9
- * The generated identifier for the entire Tabs component.
10
- * This lets you have several Tabs components, possibly with the same tabs, on one page.
11
- */
12
- tabsId: string;
13
- /** A function to update the active tab. */
8
+ /** A function to update the active Tab. */
14
9
  updateTab: (tab: string) => void;
15
10
  };
16
11
  export declare const TabsContext: import("react").Context<TabsContextValue>;
@@ -5,7 +5,6 @@
5
5
  import { createContext } from 'react';
6
6
  const defaultValues = {
7
7
  activeTabId: undefined,
8
- tabsId: '',
9
8
  updateTab: () => { },
10
9
  };
11
10
  export const TabsContext = createContext(defaultValues);
@@ -11,7 +11,7 @@ export const TabsList = forwardRef(({ children, className, ...restProps }, ref)
11
11
  // Use a passed ref if it's there, otherwise use innerRef
12
12
  useImperativeHandle(ref, () => innerRef.current);
13
13
  const { keyDown } = useKeyboardFocus(innerRef, {
14
- focusableElements: ['button[role="tab"]'],
14
+ focusableElements: ['.ams-tabs__button:not([disabled])'],
15
15
  horizontally: true,
16
16
  rotating: true,
17
17
  });
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  import '@testing-library/jest-dom';
@@ -1,4 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
2
6
  import { render, screen } from '@testing-library/react';
3
7
  import { createRef } from 'react';
4
8
  import { TabsList } from './TabsList';
@@ -14,7 +18,7 @@ describe('Tabs list', () => {
14
18
  const component = screen.getByRole('tablist');
15
19
  expect(component).toHaveClass('ams-tabs__list');
16
20
  });
17
- it('renders an additional class name', () => {
21
+ it('renders an extra class name', () => {
18
22
  render(_jsx(TabsList, { className: "extra" }));
19
23
  const component = screen.getByRole('tablist');
20
24
  expect(component).toHaveClass('ams-tabs__list extra');
@@ -4,12 +4,12 @@
4
4
  */
5
5
  import type { HTMLAttributes, PropsWithChildren } from 'react';
6
6
  export type TabsPanelProps = {
7
- /** The identifier of the corresponding Tab. */
8
- tab: string;
7
+ /** The identifier of the Tab Panel. */
8
+ id: string;
9
9
  } & PropsWithChildren<HTMLAttributes<HTMLDivElement>>;
10
10
  export declare const TabsPanel: import("react").ForwardRefExoticComponent<{
11
- /** The identifier of the corresponding Tab. */
12
- tab: string;
11
+ /** The identifier of the Tab Panel. */
12
+ id: string;
13
13
  } & HTMLAttributes<HTMLDivElement> & {
14
14
  children?: import("react").ReactNode | undefined;
15
15
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -6,11 +6,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
6
6
  import clsx from 'clsx';
7
7
  import { forwardRef, useContext } from 'react';
8
8
  import { TabsContext } from './TabsContext';
9
- export const TabsPanel = forwardRef(({ children, className, tab, ...restProps }, ref) => {
10
- const { activeTabId, tabsId } = useContext(TabsContext);
11
- if (tab !== activeTabId) {
9
+ export const TabsPanel = forwardRef(({ children, className, id, ...restProps }, ref) => {
10
+ const { activeTabId } = useContext(TabsContext);
11
+ if (id !== activeTabId) {
12
12
  return null;
13
13
  }
14
- return (_jsx("div", { ...restProps, "aria-labelledby": `${tabsId}-tab-${tab}`, className: clsx('ams-tabs__panel', className), id: `${tabsId}-panel-${tab}`, ref: ref, role: "tabpanel", tabIndex: 0, children: children }));
14
+ return (_jsx("div", { ...restProps, "aria-labelledby": `button-${id}`, className: clsx('ams-tabs__panel', className), id: id, ref: ref, role: "tabpanel", tabIndex: 0, children: children }));
15
15
  });
16
16
  TabsPanel.displayName = 'Tabs.Panel';
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  import '@testing-library/jest-dom';
@@ -1,39 +1,41 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
2
6
  import { render, screen } from '@testing-library/react';
3
7
  import { createRef } from 'react';
4
8
  import { Tabs } from './Tabs';
5
9
  import '@testing-library/jest-dom';
6
10
  describe('Tabs Panel', () => {
7
11
  it('renders', () => {
8
- render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { tab: "one" }) }), _jsx(Tabs.Panel, { tab: "one" })] }));
12
+ render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { "aria-controls": "one" }) }), _jsx(Tabs.Panel, { id: "one" })] }));
9
13
  const component = screen.getByRole('tabpanel');
10
14
  expect(component).toBeInTheDocument();
11
15
  });
12
16
  it('renders a design system BEM class name', () => {
13
- render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { tab: "one" }) }), _jsx(Tabs.Panel, { tab: "one" })] }));
17
+ render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { "aria-controls": "one" }) }), _jsx(Tabs.Panel, { id: "one" })] }));
14
18
  const component = screen.getByRole('tabpanel');
15
19
  expect(component).toHaveClass('ams-tabs__panel');
16
20
  });
17
- it('renders an additional class name', () => {
18
- render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { tab: "one" }) }), _jsx(Tabs.Panel, { className: "extra", tab: "one" })] }));
21
+ it('renders an extra class name', () => {
22
+ render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { "aria-controls": "one" }) }), _jsx(Tabs.Panel, { className: "extra", id: "one" })] }));
19
23
  const component = screen.getByRole('tabpanel');
20
24
  expect(component).toHaveClass('ams-tabs__panel extra');
21
25
  });
22
26
  it('renders the correct id based on the tabs prop', () => {
23
- const { container } = render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { tab: "one" }) }), _jsx(Tabs.Panel, { tab: "one" })] }));
24
- // The start of the id is generated by useId, so we only check the end of the id
25
- const component = container.querySelector('[id$="panel-one"]');
26
- expect(component).toBeInTheDocument();
27
+ render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { "aria-controls": "one" }) }), _jsx(Tabs.Panel, { id: "one" })] }));
28
+ const component = screen.getByRole('tabpanel');
29
+ expect(component).toHaveAttribute('id', 'one');
27
30
  });
28
31
  it('should associate the tab with the correct button', () => {
29
- render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { tab: "one" }) }), _jsx(Tabs.Panel, { tab: "one" })] }));
32
+ render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { "aria-controls": "one" }) }), _jsx(Tabs.Panel, { id: "one" })] }));
30
33
  const component = screen.getByRole('tabpanel');
31
- // The start of the attribute value is generated by useId, so we only check the end of the value
32
- expect(component).toHaveAttribute('aria-labelledby', expect.stringMatching(/-tab-one$/));
34
+ expect(component).toHaveAttribute('aria-labelledby', 'button-one');
33
35
  });
34
36
  it('supports ForwardRef in React', () => {
35
37
  const ref = createRef();
36
- render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { tab: "one" }) }), _jsx(Tabs.Panel, { ref: ref, tab: "one" })] }));
38
+ render(_jsxs(Tabs, { children: [_jsx(Tabs.List, { children: _jsx(Tabs.Button, { "aria-controls": "one" }) }), _jsx(Tabs.Panel, { id: "one", ref: ref })] }));
37
39
  const component = screen.getByRole('tabpanel');
38
40
  expect(ref.current).toBe(component);
39
41
  });
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  export { Tabs } from './Tabs';
2
6
  export type { TabsProps } from './Tabs';
3
7
  export type { TabsPanelProps } from './TabsPanel';
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  export { Tabs } from './Tabs';
@@ -9,6 +9,9 @@ export type TextAreaProps = {
9
9
  /** Allows the user to resize the text box. The default is resizing in both directions. */
10
10
  resize?: 'none' | 'horizontal' | 'vertical';
11
11
  } & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'aria-invalid'>;
12
+ /**
13
+ * @see {@link https://designsystem.amsterdam/?path=/docs/components-forms-text-area--docs Text Area docs at Amsterdam Design System}
14
+ */
12
15
  export declare const TextArea: import("react").ForwardRefExoticComponent<{
13
16
  /** Whether the value fails a validation rule. */
14
17
  invalid?: boolean;
@@ -5,5 +5,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  */
6
6
  import clsx from 'clsx';
7
7
  import { forwardRef } from 'react';
8
+ /**
9
+ * @see {@link https://designsystem.amsterdam/?path=/docs/components-forms-text-area--docs Text Area docs at Amsterdam Design System}
10
+ */
8
11
  export const TextArea = forwardRef(({ className, dir, invalid, resize, ...restProps }, ref) => (_jsx("textarea", { ...restProps, "aria-invalid": invalid || undefined, className: clsx('ams-text-area', resize && `ams-text-area--resize-${resize}`, restProps.cols && 'ams-text-area--cols', className), dir: dir ?? 'auto', ref: ref })));
9
12
  TextArea.displayName = 'TextArea';
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  import '@testing-library/jest-dom';
@@ -1,4 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
2
6
  import { render, screen } from '@testing-library/react';
3
7
  import userEvent from '@testing-library/user-event';
4
8
  import { createRef, useState } from 'react';
@@ -16,7 +20,7 @@ describe('Text area', () => {
16
20
  const component = screen.getByRole('textbox');
17
21
  expect(component).toHaveClass('ams-text-area');
18
22
  });
19
- it('renders an additional class name', () => {
23
+ it('renders an extra class name', () => {
20
24
  render(_jsx(TextArea, { className: "extra" }));
21
25
  const component = screen.getByRole('textbox');
22
26
  expect(component).toHaveClass('ams-text-area extra');
@@ -1,2 +1,6 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  export { TextArea } from './TextArea';
2
6
  export type { TextAreaProps } from './TextArea';
@@ -1 +1,5 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
1
5
  export { TextArea } from './TextArea';