@amsterdam/design-system-react 0.14.1 → 0.16.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 (591) hide show
  1. package/README.md +1 -1
  2. package/dist/Accordion/Accordion.d.ts +35 -0
  3. package/dist/Accordion/Accordion.js +22 -0
  4. package/dist/Accordion/Accordion.test.d.ts +1 -0
  5. package/dist/Accordion/Accordion.test.js +40 -0
  6. package/dist/Accordion/AccordionContext.d.ts +12 -0
  7. package/dist/Accordion/AccordionContext.js +11 -0
  8. package/dist/Accordion/AccordionSection.d.ts +19 -0
  9. package/dist/Accordion/AccordionSection.js +22 -0
  10. package/dist/Accordion/AccordionSection.test.d.ts +1 -0
  11. package/dist/Accordion/AccordionSection.test.js +83 -0
  12. package/dist/Accordion/index.d.ts +3 -0
  13. package/dist/Accordion/index.js +1 -0
  14. package/dist/ActionGroup/ActionGroup.d.ts +9 -0
  15. package/dist/ActionGroup/ActionGroup.js +9 -0
  16. package/dist/ActionGroup/ActionGroup.test.d.ts +1 -0
  17. package/dist/ActionGroup/ActionGroup.test.js +29 -0
  18. package/dist/ActionGroup/index.d.ts +2 -0
  19. package/dist/ActionGroup/index.js +1 -0
  20. package/dist/Alert/Alert.d.ts +46 -0
  21. package/dist/Alert/Alert.js +22 -0
  22. package/dist/Alert/Alert.test.d.ts +1 -0
  23. package/dist/Alert/Alert.test.js +59 -0
  24. package/dist/Alert/index.d.ts +2 -0
  25. package/dist/Alert/index.js +1 -0
  26. package/dist/Avatar/Avatar.d.ts +24 -0
  27. package/dist/Avatar/Avatar.js +25 -0
  28. package/dist/Avatar/Avatar.test.d.ts +1 -0
  29. package/dist/Avatar/Avatar.test.js +58 -0
  30. package/dist/Avatar/index.d.ts +2 -0
  31. package/dist/Avatar/index.js +1 -0
  32. package/dist/Badge/Badge.d.ts +20 -0
  33. package/dist/Badge/Badge.js +10 -0
  34. package/dist/Badge/Badge.test.d.ts +1 -0
  35. package/dist/Badge/Badge.test.js +39 -0
  36. package/dist/Badge/index.d.ts +2 -0
  37. package/dist/Badge/index.js +1 -0
  38. package/dist/Blockquote/Blockquote.d.ts +15 -0
  39. package/dist/Blockquote/Blockquote.js +9 -0
  40. package/dist/Blockquote/Blockquote.test.d.ts +1 -0
  41. package/dist/Blockquote/Blockquote.test.js +42 -0
  42. package/dist/Blockquote/index.d.ts +2 -0
  43. package/dist/Blockquote/index.js +1 -0
  44. package/dist/Breadcrumb/Breadcrumb.d.ts +11 -0
  45. package/dist/Breadcrumb/Breadcrumb.js +11 -0
  46. package/dist/Breadcrumb/Breadcrumb.test.d.ts +1 -0
  47. package/dist/Breadcrumb/Breadcrumb.test.js +41 -0
  48. package/dist/Breadcrumb/BreadcrumbLink.d.ts +7 -0
  49. package/dist/Breadcrumb/BreadcrumbLink.js +9 -0
  50. package/dist/Breadcrumb/BreadcrumbLink.test.d.ts +1 -0
  51. package/dist/Breadcrumb/BreadcrumbLink.test.js +36 -0
  52. package/dist/Breadcrumb/index.d.ts +3 -0
  53. package/dist/Breadcrumb/index.js +1 -0
  54. package/dist/Breakout/Breakout.d.ts +15 -0
  55. package/dist/Breakout/Breakout.js +12 -0
  56. package/dist/Breakout/Breakout.test.d.ts +1 -0
  57. package/dist/Breakout/Breakout.test.js +58 -0
  58. package/dist/Breakout/BreakoutCell.d.ts +37 -0
  59. package/dist/Breakout/BreakoutCell.js +11 -0
  60. package/dist/Breakout/BreakoutCell.test.d.ts +1 -0
  61. package/dist/Breakout/BreakoutCell.test.js +124 -0
  62. package/dist/Breakout/breakoutCellClasses.d.ts +6 -0
  63. package/dist/Breakout/breakoutCellClasses.js +11 -0
  64. package/dist/Breakout/index.d.ts +3 -0
  65. package/dist/Breakout/index.js +1 -0
  66. package/dist/Button/Button.d.ts +31 -0
  67. package/dist/Button/Button.js +10 -0
  68. package/dist/Button/Button.test.d.ts +1 -0
  69. package/dist/Button/Button.test.js +110 -0
  70. package/dist/Button/index.d.ts +2 -0
  71. package/dist/Button/index.js +1 -0
  72. package/dist/Card/Card.d.ts +28 -0
  73. package/dist/Card/Card.js +19 -0
  74. package/dist/Card/Card.test.d.ts +1 -0
  75. package/dist/Card/Card.test.js +29 -0
  76. package/dist/Card/CardHeading.d.ts +11 -0
  77. package/dist/Card/CardHeading.js +10 -0
  78. package/dist/Card/CardHeading.test.d.ts +1 -0
  79. package/dist/Card/CardHeading.test.js +34 -0
  80. package/dist/Card/CardHeadingGroup.d.ts +15 -0
  81. package/dist/Card/CardHeadingGroup.js +10 -0
  82. package/dist/Card/CardHeadingGroup.test.d.ts +1 -0
  83. package/dist/Card/CardHeadingGroup.test.js +34 -0
  84. package/dist/Card/CardImage.d.ts +7 -0
  85. package/dist/Card/CardImage.js +10 -0
  86. package/dist/Card/CardImage.test.d.ts +1 -0
  87. package/dist/Card/CardImage.test.js +29 -0
  88. package/dist/Card/CardLink.d.ts +9 -0
  89. package/dist/Card/CardLink.js +9 -0
  90. package/dist/Card/CardLink.test.d.ts +1 -0
  91. package/dist/Card/CardLink.test.js +29 -0
  92. package/dist/Card/index.d.ts +4 -0
  93. package/dist/Card/index.js +1 -0
  94. package/dist/CharacterCount/CharacterCount.d.ts +17 -0
  95. package/dist/CharacterCount/CharacterCount.js +9 -0
  96. package/dist/CharacterCount/CharacterCount.test.d.ts +1 -0
  97. package/dist/CharacterCount/CharacterCount.test.js +34 -0
  98. package/dist/CharacterCount/index.d.ts +2 -0
  99. package/dist/CharacterCount/index.js +1 -0
  100. package/dist/Checkbox/Checkbox.d.ts +19 -0
  101. package/dist/Checkbox/Checkbox.js +24 -0
  102. package/dist/Checkbox/Checkbox.test.d.ts +1 -0
  103. package/dist/Checkbox/Checkbox.test.js +123 -0
  104. package/dist/Checkbox/index.d.ts +2 -0
  105. package/dist/Checkbox/index.js +1 -0
  106. package/dist/Column/Column.d.ts +57 -0
  107. package/dist/Column/Column.js +11 -0
  108. package/dist/Column/Column.test.d.ts +1 -0
  109. package/dist/Column/Column.test.js +55 -0
  110. package/dist/Column/index.d.ts +2 -0
  111. package/dist/Column/index.js +1 -0
  112. package/dist/DateInput/DateInput.d.ts +20 -0
  113. package/dist/DateInput/DateInput.js +10 -0
  114. package/dist/DateInput/DateInput.test.d.ts +1 -0
  115. package/dist/DateInput/DateInput.test.js +54 -0
  116. package/dist/DateInput/index.d.ts +2 -0
  117. package/dist/DateInput/index.js +1 -0
  118. package/dist/DescriptionList/DescriptionList.d.ts +30 -0
  119. package/dist/DescriptionList/DescriptionList.js +18 -0
  120. package/dist/DescriptionList/DescriptionList.test.d.ts +1 -0
  121. package/dist/DescriptionList/DescriptionList.test.js +39 -0
  122. package/dist/DescriptionList/DescriptionListDescription.d.ts +9 -0
  123. package/dist/DescriptionList/DescriptionListDescription.js +9 -0
  124. package/dist/DescriptionList/DescriptionListDescription.test.d.ts +1 -0
  125. package/dist/DescriptionList/DescriptionListDescription.test.js +29 -0
  126. package/dist/DescriptionList/DescriptionListSection.d.ts +9 -0
  127. package/dist/DescriptionList/DescriptionListSection.js +9 -0
  128. package/dist/DescriptionList/DescriptionListSection.test.d.ts +1 -0
  129. package/dist/DescriptionList/DescriptionListSection.test.js +29 -0
  130. package/dist/DescriptionList/DescriptionListTerm.d.ts +9 -0
  131. package/dist/DescriptionList/DescriptionListTerm.js +9 -0
  132. package/dist/DescriptionList/DescriptionListTerm.test.d.ts +1 -0
  133. package/dist/DescriptionList/DescriptionListTerm.test.js +29 -0
  134. package/dist/DescriptionList/index.d.ts +4 -0
  135. package/dist/DescriptionList/index.js +1 -0
  136. package/dist/Dialog/Dialog.d.ts +27 -0
  137. package/dist/Dialog/Dialog.js +17 -0
  138. package/dist/Dialog/Dialog.test.d.ts +1 -0
  139. package/dist/Dialog/Dialog.test.js +78 -0
  140. package/dist/Dialog/index.d.ts +2 -0
  141. package/dist/Dialog/index.js +1 -0
  142. package/dist/ErrorMessage/ErrorMessage.d.ts +19 -0
  143. package/dist/ErrorMessage/ErrorMessage.js +11 -0
  144. package/dist/ErrorMessage/ErrorMessage.test.d.ts +1 -0
  145. package/dist/ErrorMessage/ErrorMessage.test.js +49 -0
  146. package/dist/ErrorMessage/index.d.ts +2 -0
  147. package/dist/ErrorMessage/index.js +1 -0
  148. package/dist/Field/Field.d.ts +15 -0
  149. package/dist/Field/Field.js +9 -0
  150. package/dist/Field/Field.test.d.ts +1 -0
  151. package/dist/Field/Field.test.js +34 -0
  152. package/dist/Field/index.d.ts +2 -0
  153. package/dist/Field/index.js +1 -0
  154. package/dist/FieldSet/FieldSet.d.ts +23 -0
  155. package/dist/FieldSet/FieldSet.js +12 -0
  156. package/dist/FieldSet/FieldSet.test.d.ts +1 -0
  157. package/dist/FieldSet/FieldSet.test.js +59 -0
  158. package/dist/FieldSet/index.d.ts +2 -0
  159. package/dist/FieldSet/index.js +1 -0
  160. package/dist/Figure/Figure.d.ts +15 -0
  161. package/dist/Figure/Figure.js +11 -0
  162. package/dist/Figure/Figure.test.d.ts +1 -0
  163. package/dist/Figure/Figure.test.js +29 -0
  164. package/dist/Figure/FigureCaption.d.ts +15 -0
  165. package/dist/Figure/FigureCaption.js +9 -0
  166. package/dist/Figure/FigureCaption.test.d.ts +1 -0
  167. package/dist/Figure/FigureCaption.test.js +34 -0
  168. package/dist/Figure/index.d.ts +2 -0
  169. package/dist/Figure/index.js +1 -0
  170. package/dist/FileInput/FileInput.d.ts +7 -0
  171. package/dist/FileInput/FileInput.js +9 -0
  172. package/dist/FileInput/FileInput.test.d.ts +1 -0
  173. package/dist/FileInput/FileInput.test.js +29 -0
  174. package/dist/FileInput/index.d.ts +2 -0
  175. package/dist/FileInput/index.js +1 -0
  176. package/dist/FileList/FileList.d.ts +17 -0
  177. package/dist/FileList/FileList.js +13 -0
  178. package/dist/FileList/FileList.test.d.ts +1 -0
  179. package/dist/FileList/FileList.test.js +29 -0
  180. package/dist/FileList/FileListItem.d.ts +13 -0
  181. package/dist/FileList/FileListItem.js +14 -0
  182. package/dist/FileList/FileListItem.test.d.ts +1 -0
  183. package/dist/FileList/FileListItem.test.js +40 -0
  184. package/dist/FileList/index.d.ts +2 -0
  185. package/dist/FileList/index.js +1 -0
  186. package/dist/Grid/Grid.d.ts +40 -0
  187. package/dist/Grid/Grid.js +15 -0
  188. package/dist/Grid/Grid.test.d.ts +1 -0
  189. package/dist/Grid/Grid.test.js +65 -0
  190. package/dist/Grid/GridCell.d.ts +25 -0
  191. package/dist/Grid/GridCell.js +11 -0
  192. package/dist/Grid/GridCell.test.d.ts +1 -0
  193. package/dist/Grid/GridCell.test.js +80 -0
  194. package/dist/Grid/gridCellClasses.d.ts +8 -0
  195. package/dist/Grid/gridCellClasses.js +18 -0
  196. package/dist/Grid/index.d.ts +3 -0
  197. package/dist/Grid/index.js +1 -0
  198. package/dist/Grid/paddingClasses.d.ts +2 -0
  199. package/dist/Grid/paddingClasses.js +13 -0
  200. package/dist/Heading/Heading.d.ts +24 -0
  201. package/dist/Heading/Heading.js +15 -0
  202. package/dist/Heading/Heading.test.d.ts +1 -0
  203. package/dist/Heading/Heading.test.js +68 -0
  204. package/dist/Heading/getHeadingTag.d.ts +2 -0
  205. package/dist/Heading/getHeadingTag.js +13 -0
  206. package/dist/Heading/index.d.ts +2 -0
  207. package/dist/Heading/index.js +1 -0
  208. package/dist/Hint/Hint.d.ts +16 -0
  209. package/dist/Hint/Hint.js +21 -0
  210. package/dist/Hint/Hint.test.d.ts +1 -0
  211. package/dist/Hint/Hint.test.js +49 -0
  212. package/dist/Hint/index.d.ts +2 -0
  213. package/dist/Hint/index.js +1 -0
  214. package/dist/Icon/Icon.d.ts +30 -0
  215. package/dist/Icon/Icon.js +12 -0
  216. package/dist/Icon/Icon.test.d.ts +1 -0
  217. package/dist/Icon/Icon.test.js +51 -0
  218. package/dist/Icon/index.d.ts +2 -0
  219. package/dist/Icon/index.js +1 -0
  220. package/dist/IconButton/IconButton.d.ts +26 -0
  221. package/dist/IconButton/IconButton.js +11 -0
  222. package/dist/IconButton/IconButton.test.d.ts +1 -0
  223. package/dist/IconButton/IconButton.test.js +44 -0
  224. package/dist/IconButton/index.d.ts +2 -0
  225. package/dist/IconButton/index.js +1 -0
  226. package/dist/Image/Image.d.ts +14 -0
  227. package/dist/Image/Image.js +10 -0
  228. package/dist/Image/Image.test.d.ts +1 -0
  229. package/dist/Image/Image.test.js +39 -0
  230. package/dist/Image/generateAspectRatioClass.d.ts +1 -0
  231. package/dist/Image/generateAspectRatioClass.js +1 -0
  232. package/dist/Image/index.d.ts +3 -0
  233. package/dist/Image/index.js +2 -0
  234. package/dist/ImageSlider/ImageSlider.d.ts +49 -0
  235. package/dist/ImageSlider/ImageSlider.js +98 -0
  236. package/dist/ImageSlider/ImageSlider.test.d.ts +1 -0
  237. package/dist/ImageSlider/ImageSlider.test.js +66 -0
  238. package/dist/ImageSlider/ImageSliderContext.d.ts +13 -0
  239. package/dist/ImageSlider/ImageSliderContext.js +14 -0
  240. package/dist/ImageSlider/ImageSliderControls.d.ts +17 -0
  241. package/dist/ImageSlider/ImageSliderControls.js +17 -0
  242. package/dist/ImageSlider/ImageSliderControls.test.d.ts +1 -0
  243. package/dist/ImageSlider/ImageSliderControls.test.js +21 -0
  244. package/dist/ImageSlider/ImageSliderItem.d.ts +15 -0
  245. package/dist/ImageSlider/ImageSliderItem.js +15 -0
  246. package/dist/ImageSlider/ImageSliderItem.test.d.ts +1 -0
  247. package/dist/ImageSlider/ImageSliderItem.test.js +33 -0
  248. package/dist/ImageSlider/ImageSliderScroller.d.ts +9 -0
  249. package/dist/ImageSlider/ImageSliderScroller.js +9 -0
  250. package/dist/ImageSlider/ImageSliderScroller.test.d.ts +1 -0
  251. package/dist/ImageSlider/ImageSliderScroller.test.js +33 -0
  252. package/dist/ImageSlider/ImageSliderThumbnails.d.ts +14 -0
  253. package/dist/ImageSlider/ImageSliderThumbnails.js +32 -0
  254. package/dist/ImageSlider/ImageSliderThumbnails.test.d.ts +1 -0
  255. package/dist/ImageSlider/ImageSliderThumbnails.test.js +48 -0
  256. package/dist/ImageSlider/index.d.ts +3 -0
  257. package/dist/ImageSlider/index.js +1 -0
  258. package/dist/InvalidFormAlert/InvalidFormAlert.d.ts +68 -0
  259. package/dist/InvalidFormAlert/InvalidFormAlert.js +20 -0
  260. package/dist/InvalidFormAlert/InvalidFormAlert.test.d.ts +1 -0
  261. package/dist/InvalidFormAlert/InvalidFormAlert.test.js +104 -0
  262. package/dist/InvalidFormAlert/InvalidFormAlertWithErrors.d.ts +12 -0
  263. package/dist/InvalidFormAlert/InvalidFormAlertWithErrors.js +22 -0
  264. package/dist/InvalidFormAlert/index.d.ts +2 -0
  265. package/dist/InvalidFormAlert/index.js +1 -0
  266. package/dist/InvalidFormAlert/useAddErrorCountToDocumentTitle.d.ts +11 -0
  267. package/dist/InvalidFormAlert/useAddErrorCountToDocumentTitle.js +26 -0
  268. package/dist/Label/Label.d.ts +14 -0
  269. package/dist/Label/Label.js +13 -0
  270. package/dist/Label/Label.test.d.ts +1 -0
  271. package/dist/Label/Label.test.js +73 -0
  272. package/dist/Label/index.d.ts +1 -0
  273. package/dist/Label/index.js +1 -0
  274. package/dist/Link/Link.d.ts +13 -0
  275. package/dist/Link/Link.js +9 -0
  276. package/dist/Link/Link.test.d.ts +1 -0
  277. package/dist/Link/Link.test.js +39 -0
  278. package/dist/Link/index.d.ts +2 -0
  279. package/dist/Link/index.js +1 -0
  280. package/dist/LinkList/LinkList.d.ts +17 -0
  281. package/dist/LinkList/LinkList.js +14 -0
  282. package/dist/LinkList/LinkList.test.d.ts +1 -0
  283. package/dist/LinkList/LinkList.test.js +29 -0
  284. package/dist/LinkList/LinkListLink.d.ts +24 -0
  285. package/dist/LinkList/LinkListLink.js +14 -0
  286. package/dist/LinkList/LinkListLink.test.d.ts +1 -0
  287. package/dist/LinkList/LinkListLink.test.js +50 -0
  288. package/dist/LinkList/index.d.ts +3 -0
  289. package/dist/LinkList/index.js +1 -0
  290. package/dist/Logo/Logo.d.ts +11 -0
  291. package/dist/Logo/Logo.js +21 -0
  292. package/dist/Logo/Logo.test.d.ts +1 -0
  293. package/dist/Logo/Logo.test.js +29 -0
  294. package/dist/Logo/brand/LogoAmsterdam.d.ts +3 -0
  295. package/dist/Logo/brand/LogoAmsterdam.js +5 -0
  296. package/dist/Logo/brand/LogoGgdAmsterdam.d.ts +3 -0
  297. package/dist/Logo/brand/LogoGgdAmsterdam.js +5 -0
  298. package/dist/Logo/brand/LogoMuseumWeesp.d.ts +3 -0
  299. package/dist/Logo/brand/LogoMuseumWeesp.js +5 -0
  300. package/dist/Logo/brand/LogoStadsarchief.d.ts +3 -0
  301. package/dist/Logo/brand/LogoStadsarchief.js +5 -0
  302. package/dist/Logo/brand/LogoStadsbankVanLening.d.ts +3 -0
  303. package/dist/Logo/brand/LogoStadsbankVanLening.js +5 -0
  304. package/dist/Logo/brand/LogoVgaVerzekeringen.d.ts +3 -0
  305. package/dist/Logo/brand/LogoVgaVerzekeringen.js +5 -0
  306. package/dist/Logo/brand/index.d.ts +6 -0
  307. package/dist/Logo/brand/index.js +6 -0
  308. package/dist/Logo/index.d.ts +2 -0
  309. package/dist/Logo/index.js +1 -0
  310. package/dist/Mark/Mark.d.ts +9 -0
  311. package/dist/Mark/Mark.js +9 -0
  312. package/dist/Mark/Mark.test.d.ts +1 -0
  313. package/dist/Mark/Mark.test.js +29 -0
  314. package/dist/Mark/index.d.ts +2 -0
  315. package/dist/Mark/index.js +1 -0
  316. package/dist/OrderedList/OrderedList.d.ts +27 -0
  317. package/dist/OrderedList/OrderedList.js +11 -0
  318. package/dist/OrderedList/OrderedList.test.d.ts +1 -0
  319. package/dist/OrderedList/OrderedList.test.js +51 -0
  320. package/dist/OrderedList/OrderedListItem.d.ts +9 -0
  321. package/dist/OrderedList/OrderedListItem.js +9 -0
  322. package/dist/OrderedList/OrderedListItem.test.d.ts +1 -0
  323. package/dist/OrderedList/OrderedListItem.test.js +28 -0
  324. package/dist/OrderedList/index.d.ts +3 -0
  325. package/dist/OrderedList/index.js +1 -0
  326. package/dist/Overlap/Overlap.d.ts +9 -0
  327. package/dist/Overlap/Overlap.js +9 -0
  328. package/dist/Overlap/Overlap.test.d.ts +1 -0
  329. package/dist/Overlap/Overlap.test.js +34 -0
  330. package/dist/Overlap/index.d.ts +2 -0
  331. package/dist/Overlap/index.js +1 -0
  332. package/dist/Page/Page.d.ts +9 -0
  333. package/dist/Page/Page.js +9 -0
  334. package/dist/Page/Page.test.d.ts +1 -0
  335. package/dist/Page/Page.test.js +29 -0
  336. package/dist/Page/index.d.ts +2 -0
  337. package/dist/Page/index.js +1 -0
  338. package/dist/PageFooter/PageFooter.d.ts +19 -0
  339. package/dist/PageFooter/PageFooter.js +17 -0
  340. package/dist/PageFooter/PageFooter.test.d.ts +1 -0
  341. package/dist/PageFooter/PageFooter.test.js +29 -0
  342. package/dist/PageFooter/PageFooterMenu.d.ts +9 -0
  343. package/dist/PageFooter/PageFooterMenu.js +9 -0
  344. package/dist/PageFooter/PageFooterMenu.test.d.ts +1 -0
  345. package/dist/PageFooter/PageFooterMenu.test.js +31 -0
  346. package/dist/PageFooter/PageFooterMenuLink.d.ts +9 -0
  347. package/dist/PageFooter/PageFooterMenuLink.js +9 -0
  348. package/dist/PageFooter/PageFooterMenuLink.test.d.ts +1 -0
  349. package/dist/PageFooter/PageFooterMenuLink.test.js +29 -0
  350. package/dist/PageFooter/PageFooterSpotlight.d.ts +9 -0
  351. package/dist/PageFooter/PageFooterSpotlight.js +9 -0
  352. package/dist/PageFooter/PageFooterSpotlight.test.d.ts +1 -0
  353. package/dist/PageFooter/PageFooterSpotlight.test.js +29 -0
  354. package/dist/PageFooter/index.d.ts +5 -0
  355. package/dist/PageFooter/index.js +1 -0
  356. package/dist/PageHeader/PageHeader.d.ts +49 -0
  357. package/dist/PageHeader/PageHeader.js +31 -0
  358. package/dist/PageHeader/PageHeader.test.d.ts +2 -0
  359. package/dist/PageHeader/PageHeader.test.js +120 -0
  360. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.d.ts +2 -0
  361. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.js +6 -0
  362. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.test.d.ts +1 -0
  363. package/dist/PageHeader/PageHeaderGridCellNarrowWindowOnly.test.js +34 -0
  364. package/dist/PageHeader/PageHeaderMenuIcon.d.ts +2 -0
  365. package/dist/PageHeader/PageHeaderMenuIcon.js +2 -0
  366. package/dist/PageHeader/PageHeaderMenuLink.d.ts +9 -0
  367. package/dist/PageHeader/PageHeaderMenuLink.js +5 -0
  368. package/dist/PageHeader/PageHeaderMenuLink.test.d.ts +1 -0
  369. package/dist/PageHeader/PageHeaderMenuLink.test.js +41 -0
  370. package/dist/PageHeader/index.d.ts +3 -0
  371. package/dist/PageHeader/index.js +1 -0
  372. package/dist/PageHeader/matchMedia.mock.d.ts +0 -0
  373. package/dist/PageHeader/matchMedia.mock.js +15 -0
  374. package/dist/PageHeading/PageHeading.d.ts +15 -0
  375. package/dist/PageHeading/PageHeading.js +9 -0
  376. package/dist/PageHeading/PageHeading.test.d.ts +1 -0
  377. package/dist/PageHeading/PageHeading.test.js +36 -0
  378. package/dist/PageHeading/index.d.ts +2 -0
  379. package/dist/PageHeading/index.js +1 -0
  380. package/dist/Pagination/LinkItem.d.ts +7 -0
  381. package/dist/Pagination/LinkItem.js +7 -0
  382. package/dist/Pagination/Pagination.d.ts +59 -0
  383. package/dist/Pagination/Pagination.js +23 -0
  384. package/dist/Pagination/Pagination.test.d.ts +1 -0
  385. package/dist/Pagination/Pagination.test.js +120 -0
  386. package/dist/Pagination/Spacer.d.ts +1 -0
  387. package/dist/Pagination/Spacer.js +2 -0
  388. package/dist/Pagination/getRange.d.ts +16 -0
  389. package/dist/Pagination/getRange.js +41 -0
  390. package/dist/Pagination/index.d.ts +2 -0
  391. package/dist/Pagination/index.js +1 -0
  392. package/dist/Paragraph/Paragraph.d.ts +20 -0
  393. package/dist/Paragraph/Paragraph.js +10 -0
  394. package/dist/Paragraph/Paragraph.test.d.ts +1 -0
  395. package/dist/Paragraph/Paragraph.test.js +58 -0
  396. package/dist/Paragraph/index.d.ts +2 -0
  397. package/dist/Paragraph/index.js +1 -0
  398. package/dist/PasswordInput/PasswordInput.d.ts +13 -0
  399. package/dist/PasswordInput/PasswordInput.js +9 -0
  400. package/dist/PasswordInput/PasswordInput.test.d.ts +1 -0
  401. package/dist/PasswordInput/PasswordInput.test.js +85 -0
  402. package/dist/PasswordInput/index.d.ts +2 -0
  403. package/dist/PasswordInput/index.js +1 -0
  404. package/dist/Radio/Radio.d.ts +19 -0
  405. package/dist/Radio/Radio.js +16 -0
  406. package/dist/Radio/Radio.test.d.ts +1 -0
  407. package/dist/Radio/Radio.test.js +121 -0
  408. package/dist/Radio/RadioIcon.d.ts +3 -0
  409. package/dist/Radio/RadioIcon.js +3 -0
  410. package/dist/Radio/index.d.ts +2 -0
  411. package/dist/Radio/index.js +1 -0
  412. package/dist/Row/Row.d.ts +67 -0
  413. package/dist/Row/Row.js +11 -0
  414. package/dist/Row/Row.test.d.ts +1 -0
  415. package/dist/Row/Row.test.js +60 -0
  416. package/dist/Row/index.d.ts +2 -0
  417. package/dist/Row/index.js +1 -0
  418. package/dist/SearchField/SearchField.d.ts +294 -0
  419. package/dist/SearchField/SearchField.js +14 -0
  420. package/dist/SearchField/SearchField.test.d.ts +1 -0
  421. package/dist/SearchField/SearchField.test.js +46 -0
  422. package/dist/SearchField/SearchFieldButton.d.ts +8 -0
  423. package/dist/SearchField/SearchFieldButton.js +10 -0
  424. package/dist/SearchField/SearchFieldInput.d.ts +11 -0
  425. package/dist/SearchField/SearchFieldInput.js +12 -0
  426. package/dist/SearchField/SearchFieldInput.test.d.ts +1 -0
  427. package/dist/SearchField/SearchFieldInput.test.js +61 -0
  428. package/dist/SearchField/index.d.ts +2 -0
  429. package/dist/SearchField/index.js +1 -0
  430. package/dist/Select/Select.d.ts +22 -0
  431. package/dist/Select/Select.js +12 -0
  432. package/dist/Select/Select.test.d.ts +1 -0
  433. package/dist/Select/Select.test.js +70 -0
  434. package/dist/Select/SelectOption.d.ts +9 -0
  435. package/dist/Select/SelectOption.js +9 -0
  436. package/dist/Select/SelectOption.test.d.ts +1 -0
  437. package/dist/Select/SelectOption.test.js +41 -0
  438. package/dist/Select/SelectOptionGroup.d.ts +9 -0
  439. package/dist/Select/SelectOptionGroup.js +9 -0
  440. package/dist/Select/SelectOptionGroup.test.d.ts +1 -0
  441. package/dist/Select/SelectOptionGroup.test.js +41 -0
  442. package/dist/Select/index.d.ts +3 -0
  443. package/dist/Select/index.js +1 -0
  444. package/dist/SkipLink/SkipLink.d.ts +9 -0
  445. package/dist/SkipLink/SkipLink.js +9 -0
  446. package/dist/SkipLink/SkipLink.test.d.ts +1 -0
  447. package/dist/SkipLink/SkipLink.test.js +29 -0
  448. package/dist/SkipLink/index.d.ts +2 -0
  449. package/dist/SkipLink/index.js +1 -0
  450. package/dist/Spotlight/Spotlight.d.ts +24 -0
  451. package/dist/Spotlight/Spotlight.js +11 -0
  452. package/dist/Spotlight/Spotlight.test.d.ts +1 -0
  453. package/dist/Spotlight/Spotlight.test.js +42 -0
  454. package/dist/Spotlight/index.d.ts +2 -0
  455. package/dist/Spotlight/index.js +1 -0
  456. package/dist/StandaloneLink/StandaloneLink.d.ts +17 -0
  457. package/dist/StandaloneLink/StandaloneLink.js +10 -0
  458. package/dist/StandaloneLink/StandaloneLink.test.d.ts +1 -0
  459. package/dist/StandaloneLink/StandaloneLink.test.js +40 -0
  460. package/dist/StandaloneLink/index.d.ts +2 -0
  461. package/dist/StandaloneLink/index.js +1 -0
  462. package/dist/Switch/Switch.d.ts +9 -0
  463. package/dist/Switch/Switch.js +12 -0
  464. package/dist/Switch/Switch.test.d.ts +1 -0
  465. package/dist/Switch/Switch.test.js +65 -0
  466. package/dist/Switch/index.d.ts +2 -0
  467. package/dist/Switch/index.js +1 -0
  468. package/dist/Table/Table.d.ts +31 -0
  469. package/dist/Table/Table.js +25 -0
  470. package/dist/Table/Table.test.d.ts +1 -0
  471. package/dist/Table/Table.test.js +29 -0
  472. package/dist/Table/TableBody.d.ts +9 -0
  473. package/dist/Table/TableBody.js +9 -0
  474. package/dist/Table/TableBody.test.d.ts +1 -0
  475. package/dist/Table/TableBody.test.js +30 -0
  476. package/dist/Table/TableCaption.d.ts +10 -0
  477. package/dist/Table/TableCaption.js +10 -0
  478. package/dist/Table/TableCaption.test.d.ts +1 -0
  479. package/dist/Table/TableCaption.test.js +41 -0
  480. package/dist/Table/TableCell.d.ts +9 -0
  481. package/dist/Table/TableCell.js +9 -0
  482. package/dist/Table/TableCell.test.d.ts +1 -0
  483. package/dist/Table/TableCell.test.js +32 -0
  484. package/dist/Table/TableFooter.d.ts +9 -0
  485. package/dist/Table/TableFooter.js +9 -0
  486. package/dist/Table/TableFooter.test.d.ts +1 -0
  487. package/dist/Table/TableFooter.test.js +30 -0
  488. package/dist/Table/TableHeader.d.ts +9 -0
  489. package/dist/Table/TableHeader.js +9 -0
  490. package/dist/Table/TableHeader.test.d.ts +1 -0
  491. package/dist/Table/TableHeader.test.js +30 -0
  492. package/dist/Table/TableHeaderCell.d.ts +9 -0
  493. package/dist/Table/TableHeaderCell.js +9 -0
  494. package/dist/Table/TableHeaderCell.test.d.ts +1 -0
  495. package/dist/Table/TableHeaderCell.test.js +38 -0
  496. package/dist/Table/TableRow.d.ts +9 -0
  497. package/dist/Table/TableRow.js +9 -0
  498. package/dist/Table/TableRow.test.d.ts +1 -0
  499. package/dist/Table/TableRow.test.js +31 -0
  500. package/dist/Table/index.d.ts +2 -0
  501. package/dist/Table/index.js +1 -0
  502. package/dist/TableOfContents/TableOfContents.d.ts +33 -0
  503. package/dist/TableOfContents/TableOfContents.js +18 -0
  504. package/dist/TableOfContents/TableOfContents.test.d.ts +1 -0
  505. package/dist/TableOfContents/TableOfContents.test.js +40 -0
  506. package/dist/TableOfContents/TableOfContentsLink.d.ts +13 -0
  507. package/dist/TableOfContents/TableOfContentsLink.js +9 -0
  508. package/dist/TableOfContents/TableOfContentsLink.test.d.ts +1 -0
  509. package/dist/TableOfContents/TableOfContentsLink.test.js +30 -0
  510. package/dist/TableOfContents/TableOfContentsList.d.ts +9 -0
  511. package/dist/TableOfContents/TableOfContentsList.js +11 -0
  512. package/dist/TableOfContents/TableOfContentsList.test.d.ts +1 -0
  513. package/dist/TableOfContents/TableOfContentsList.test.js +36 -0
  514. package/dist/TableOfContents/index.d.ts +4 -0
  515. package/dist/TableOfContents/index.js +1 -0
  516. package/dist/Tabs/Tabs.d.ts +31 -0
  517. package/dist/Tabs/Tabs.js +56 -0
  518. package/dist/Tabs/Tabs.test.d.ts +1 -0
  519. package/dist/Tabs/Tabs.test.js +100 -0
  520. package/dist/Tabs/TabsButton.d.ts +15 -0
  521. package/dist/Tabs/TabsButton.js +19 -0
  522. package/dist/Tabs/TabsButton.test.d.ts +1 -0
  523. package/dist/Tabs/TabsButton.test.js +43 -0
  524. package/dist/Tabs/TabsContext.d.ts +11 -0
  525. package/dist/Tabs/TabsContext.js +10 -0
  526. package/dist/Tabs/TabsList.d.ts +9 -0
  527. package/dist/Tabs/TabsList.js +20 -0
  528. package/dist/Tabs/TabsList.test.d.ts +1 -0
  529. package/dist/Tabs/TabsList.test.js +28 -0
  530. package/dist/Tabs/TabsPanel.d.ts +15 -0
  531. package/dist/Tabs/TabsPanel.js +16 -0
  532. package/dist/Tabs/TabsPanel.test.d.ts +1 -0
  533. package/dist/Tabs/TabsPanel.test.js +38 -0
  534. package/dist/Tabs/index.d.ts +5 -0
  535. package/dist/Tabs/index.js +1 -0
  536. package/dist/TextArea/TextArea.d.ts +17 -0
  537. package/dist/TextArea/TextArea.js +9 -0
  538. package/dist/TextArea/TextArea.test.d.ts +1 -0
  539. package/dist/TextArea/TextArea.test.js +101 -0
  540. package/dist/TextArea/index.d.ts +2 -0
  541. package/dist/TextArea/index.js +1 -0
  542. package/dist/TextInput/TextInput.d.ts +20 -0
  543. package/dist/TextInput/TextInput.js +10 -0
  544. package/dist/TextInput/TextInput.test.d.ts +1 -0
  545. package/dist/TextInput/TextInput.test.js +88 -0
  546. package/dist/TextInput/index.d.ts +2 -0
  547. package/dist/TextInput/index.js +1 -0
  548. package/dist/TimeInput/TimeInput.d.ts +13 -0
  549. package/dist/TimeInput/TimeInput.js +9 -0
  550. package/dist/TimeInput/TimeInput.test.d.ts +1 -0
  551. package/dist/TimeInput/TimeInput.test.js +47 -0
  552. package/dist/TimeInput/index.d.ts +2 -0
  553. package/dist/TimeInput/index.js +1 -0
  554. package/dist/UnorderedList/UnorderedList.d.ts +27 -0
  555. package/dist/UnorderedList/UnorderedList.js +13 -0
  556. package/dist/UnorderedList/UnorderedList.test.d.ts +1 -0
  557. package/dist/UnorderedList/UnorderedList.test.js +51 -0
  558. package/dist/UnorderedList/UnorderedListItem.d.ts +9 -0
  559. package/dist/UnorderedList/UnorderedListItem.js +9 -0
  560. package/dist/UnorderedList/UnorderedListItem.test.d.ts +1 -0
  561. package/dist/UnorderedList/UnorderedListItem.test.js +28 -0
  562. package/dist/UnorderedList/index.d.ts +3 -0
  563. package/dist/UnorderedList/index.js +1 -0
  564. package/dist/common/accessibility.d.ts +13 -0
  565. package/dist/common/accessibility.js +13 -0
  566. package/dist/common/formatFileSize.d.ts +10 -0
  567. package/dist/common/formatFileSize.js +17 -0
  568. package/dist/common/formatFileSize.test.d.ts +1 -0
  569. package/dist/common/formatFileSize.test.js +18 -0
  570. package/dist/common/formatFileType.d.ts +10 -0
  571. package/dist/common/formatFileType.js +34 -0
  572. package/dist/common/formatFileType.test.d.ts +1 -0
  573. package/dist/common/formatFileType.test.js +23 -0
  574. package/dist/common/shortSize.d.ts +12 -0
  575. package/dist/common/shortSize.js +15 -0
  576. package/dist/common/types.d.ts +11 -0
  577. package/dist/common/types.js +9 -0
  578. package/dist/common/useIsAfterBreakpoint.d.ts +3 -0
  579. package/dist/common/useIsAfterBreakpoint.js +24 -0
  580. package/dist/common/useKeyboardFocus.d.ts +23 -0
  581. package/dist/common/useKeyboardFocus.js +56 -0
  582. package/dist/common/useKeyboardFocus.test.d.ts +1 -0
  583. package/dist/common/useKeyboardFocus.test.js +79 -0
  584. package/dist/index.cjs.js +1512 -1564
  585. package/dist/index.cjs.js.map +1 -1
  586. package/dist/index.d.ts +339 -345
  587. package/dist/index.esm.js +1509 -1560
  588. package/dist/index.esm.js.map +1 -1
  589. package/dist/index.js +64 -0
  590. package/dist/tsconfig.tsbuildinfo +1 -0
  591. package/package.json +23 -24
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from '@testing-library/react';
3
+ import { createRef } from 'react';
4
+ import { Hint } from '.';
5
+ import '@testing-library/jest-dom';
6
+ describe('Hint', () => {
7
+ it('renders', () => {
8
+ const { container } = render(_jsx(Hint, { hint: "hint" }));
9
+ const component = container.querySelector(':only-child');
10
+ expect(component).toBeInTheDocument();
11
+ expect(component).toBeVisible();
12
+ });
13
+ it('renders a design system BEM class name', () => {
14
+ const { container } = render(_jsx(Hint, { optional: true }));
15
+ const component = container.querySelector(':only-child');
16
+ expect(component).toHaveClass('ams-hint');
17
+ });
18
+ it('renders an extra class name', () => {
19
+ const { container } = render(_jsx(Hint, { className: "extra", optional: true }));
20
+ const component = container.querySelector(':only-child');
21
+ expect(component).toHaveClass('ams-hint extra');
22
+ });
23
+ it('supports ForwardRef in React', () => {
24
+ const ref = createRef();
25
+ const { container } = render(_jsx(Hint, { ref: ref }));
26
+ const component = container.querySelector(':only-child');
27
+ expect(ref.current).toBe(component);
28
+ });
29
+ it('renders the provided hint text', () => {
30
+ const { container } = render(_jsx(Hint, { hint: "hint text" }));
31
+ const component = container.querySelector(':only-child');
32
+ expect(component).toHaveTextContent('(hint text)');
33
+ });
34
+ it('renders the default hint text', () => {
35
+ const { container } = render(_jsx(Hint, { optional: true }));
36
+ const component = container.querySelector(':only-child');
37
+ expect(component).toHaveTextContent('(niet verplicht)');
38
+ });
39
+ it('renders the provided hint text when `optional` is set to `false`', () => {
40
+ const { container } = render(_jsx(Hint, { hint: "not required", optional: true }));
41
+ const component = container.querySelector(':only-child');
42
+ expect(component).toHaveTextContent('(not required)');
43
+ });
44
+ it('renders the provided hint text "required" while also being marked as not optional', () => {
45
+ const { container } = render(_jsx(Hint, { hint: "required", optional: false }));
46
+ const component = container.querySelector(':only-child');
47
+ expect(component).toHaveTextContent('(required)');
48
+ });
49
+ });
@@ -0,0 +1,2 @@
1
+ export { Hint } from './Hint';
2
+ export type { HintProps } from './Hint';
@@ -0,0 +1 @@
1
+ export { Hint } from './Hint';
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright (c) 2021 Gemeente Utrecht
4
+ * Copyright (c) 2021 Robbert Broersma
5
+ * Copyright Gemeente Amsterdam
6
+ */
7
+ import type { HTMLAttributes, ReactNode } from 'react';
8
+ export declare const iconSizes: readonly ["small", "large", "heading-3", "heading-4", "heading-5", "heading-6"];
9
+ type IconSize = (typeof iconSizes)[number];
10
+ export type IconProps = {
11
+ /** Changes the icon colour for readability on a dark background. */
12
+ color?: 'inverse';
13
+ /** The size of the icon. Choose the size of the corresponding body text or heading. */
14
+ size?: IconSize;
15
+ /** Whether the icon container should be made square. */
16
+ square?: boolean;
17
+ /** The component rendering the icon’s markup. */
18
+ svg: Function | ReactNode;
19
+ } & HTMLAttributes<HTMLSpanElement>;
20
+ export declare const Icon: import("react").ForwardRefExoticComponent<{
21
+ /** Changes the icon colour for readability on a dark background. */
22
+ color?: "inverse";
23
+ /** The size of the icon. Choose the size of the corresponding body text or heading. */
24
+ size?: IconSize;
25
+ /** Whether the icon container should be made square. */
26
+ square?: boolean;
27
+ /** The component rendering the icon’s markup. */
28
+ svg: Function | ReactNode;
29
+ } & HTMLAttributes<HTMLSpanElement> & import("react").RefAttributes<HTMLElement>>;
30
+ export {};
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright (c) 2021 Gemeente Utrecht
5
+ * Copyright (c) 2021 Robbert Broersma
6
+ * Copyright Gemeente Amsterdam
7
+ */
8
+ import clsx from 'clsx';
9
+ import { forwardRef } from 'react';
10
+ export const iconSizes = ['small', 'large', 'heading-3', 'heading-4', 'heading-5', 'heading-6'];
11
+ export const Icon = forwardRef(({ className, color, size, square, svg, ...restProps }, ref) => (_jsx("span", { className: clsx('ams-icon', color && `ams-icon--${color}`, size && `ams-icon--${size}`, square && 'ams-icon--square', className), ref: ref, ...restProps, children: typeof svg === 'function' ? svg() : svg })));
12
+ Icon.displayName = 'Icon';
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { AlertIcon } from '@amsterdam/design-system-react-icons';
3
+ import { render } from '@testing-library/react';
4
+ import { createRef } from 'react';
5
+ import { Icon, iconSizes } from './Icon';
6
+ import '@testing-library/jest-dom';
7
+ describe('Icon', () => {
8
+ it('renders a span element', () => {
9
+ const { container } = render(_jsx(Icon, { svg: AlertIcon }));
10
+ const icon = container.querySelector('span:only-child');
11
+ expect(icon).toBeInTheDocument();
12
+ });
13
+ it('renders a design system BEM class name', () => {
14
+ const { container } = render(_jsx(Icon, { svg: AlertIcon }));
15
+ const icon = container.querySelector(':only-child');
16
+ expect(icon).toHaveClass('ams-icon');
17
+ });
18
+ it('renders an svg child', () => {
19
+ const { container } = render(_jsx(Icon, { svg: AlertIcon }));
20
+ const svg = container.querySelector(':only-child svg');
21
+ expect(svg).toBeInTheDocument();
22
+ });
23
+ iconSizes.forEach((size) => {
24
+ it(`renders the correct class name for a ‘${size}’ icon`, () => {
25
+ const { container } = render(_jsx(Icon, { size: size, svg: AlertIcon }));
26
+ const icon = container.querySelector(':only-child');
27
+ expect(icon).toHaveClass(`ams-icon--${size}`);
28
+ });
29
+ });
30
+ it('renders the right square class', () => {
31
+ const { container } = render(_jsx(Icon, { square: true, svg: AlertIcon }));
32
+ const icon = container.querySelector('span:only-child');
33
+ expect(icon).toHaveClass('ams-icon--square');
34
+ });
35
+ it('renders the class name for inverse color', () => {
36
+ const { container } = render(_jsx(Icon, { color: "inverse", svg: AlertIcon }));
37
+ const icon = container.querySelector('span:only-child');
38
+ expect(icon).toHaveClass('ams-icon--inverse');
39
+ });
40
+ it('renders an extra class name', () => {
41
+ const { container } = render(_jsx(Icon, { className: "extra", svg: AlertIcon }));
42
+ const icon = container.querySelector(':only-child');
43
+ expect(icon).toHaveClass('ams-icon extra');
44
+ });
45
+ it('supports ForwardRef in React', () => {
46
+ const ref = createRef();
47
+ const { container } = render(_jsx(Icon, { ref: ref, svg: AlertIcon }));
48
+ const icon = container.querySelector(':only-child');
49
+ expect(ref.current).toBe(icon);
50
+ });
51
+ });
@@ -0,0 +1,2 @@
1
+ export { Icon } from './Icon';
2
+ export type { IconProps } from './Icon';
@@ -0,0 +1 @@
1
+ export { Icon } from './Icon';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+ import type { ButtonHTMLAttributes } from 'react';
6
+ import type { IconProps } from '../Icon';
7
+ export type IconButtonProps = {
8
+ /** Changes the text colour for readability on a light or dark background. */
9
+ color?: 'contrast' | 'inverse';
10
+ /** The accessible text for the button. Will be announced by screen readers. Should describe the button’s action. */
11
+ label: string;
12
+ /** The size of the icon. */
13
+ size?: IconProps['size'];
14
+ /** The component rendering the icon’s markup. */
15
+ svg?: IconProps['svg'];
16
+ } & ButtonHTMLAttributes<HTMLButtonElement>;
17
+ export declare const IconButton: import("react").ForwardRefExoticComponent<{
18
+ /** Changes the text colour for readability on a light or dark background. */
19
+ color?: "contrast" | "inverse";
20
+ /** The accessible text for the button. Will be announced by screen readers. Should describe the button’s action. */
21
+ label: string;
22
+ /** The size of the icon. */
23
+ size?: IconProps["size"];
24
+ /** The component rendering the icon’s markup. */
25
+ svg?: IconProps["svg"];
26
+ } & ButtonHTMLAttributes<HTMLButtonElement> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import { CloseIcon } from '@amsterdam/design-system-react-icons';
7
+ import clsx from 'clsx';
8
+ import { forwardRef } from 'react';
9
+ import { Icon } from '../Icon';
10
+ export const IconButton = forwardRef(({ className, color, label, size, svg = CloseIcon, type, ...restProps }, ref) => (_jsxs("button", { ...restProps, className: clsx('ams-icon-button', color && `ams-icon-button--${color}`, className), ref: ref, type: type || 'button', children: [_jsx("span", { className: "ams-visually-hidden", children: label }), _jsx(Icon, { size: size, square: true, svg: svg })] })));
11
+ IconButton.displayName = 'IconButton';
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render, screen } from '@testing-library/react';
3
+ import { createRef } from 'react';
4
+ import { IconButton } from './IconButton';
5
+ import '@testing-library/jest-dom';
6
+ describe('Icon button', () => {
7
+ it('renders', () => {
8
+ render(_jsx(IconButton, { label: "Test" }));
9
+ const component = screen.getByRole('button');
10
+ expect(component).toBeInTheDocument();
11
+ expect(component).toBeVisible();
12
+ });
13
+ it('renders a design system BEM class name', () => {
14
+ render(_jsx(IconButton, { label: "Test" }));
15
+ const component = screen.getByRole('button');
16
+ expect(component).toHaveClass('ams-icon-button');
17
+ });
18
+ it('renders an extra class name', () => {
19
+ render(_jsx(IconButton, { className: "extra", label: "Test" }));
20
+ const component = screen.getByRole('button');
21
+ expect(component).toHaveClass('ams-icon-button extra');
22
+ });
23
+ it('renders an accessible label', () => {
24
+ render(_jsx(IconButton, { className: "extra", label: "Test" }));
25
+ const component = screen.getByRole('button', { name: 'Test' });
26
+ expect(component).toBeInTheDocument();
27
+ });
28
+ it('renders the class name for contrast color', () => {
29
+ render(_jsx(IconButton, { color: "contrast", label: "Test" }));
30
+ const component = screen.getByRole('button');
31
+ expect(component).toHaveClass('ams-icon-button--contrast');
32
+ });
33
+ it('renders the class name for inverse color', () => {
34
+ render(_jsx(IconButton, { color: "inverse", label: "Test" }));
35
+ const component = screen.getByRole('button');
36
+ expect(component).toHaveClass('ams-icon-button--inverse');
37
+ });
38
+ it('supports ForwardRef in React', () => {
39
+ const ref = createRef();
40
+ render(_jsx(IconButton, { label: "Test", ref: ref }));
41
+ const component = screen.getByRole('button');
42
+ expect(ref.current).toBe(component);
43
+ });
44
+ });
@@ -0,0 +1,2 @@
1
+ export { IconButton } from './IconButton';
2
+ export type { IconButtonProps } from './IconButton';
@@ -0,0 +1 @@
1
+ export { IconButton } from './IconButton';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+ import type { ImgHTMLAttributes } from 'react';
6
+ import { AspectRatioProps } from '../common/types';
7
+ export type ImageProps = {
8
+ /** A textual description of the content of the image. */
9
+ alt: string;
10
+ } & AspectRatioProps & Omit<ImgHTMLAttributes<HTMLImageElement>, 'children'>;
11
+ export declare const Image: import("react").ForwardRefExoticComponent<{
12
+ /** A textual description of the content of the image. */
13
+ alt: string;
14
+ } & AspectRatioProps & Omit<ImgHTMLAttributes<HTMLImageElement>, "children"> & import("react").RefAttributes<HTMLImageElement>>;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import clsx from 'clsx';
7
+ import { forwardRef } from 'react';
8
+ import { generateAspectRatioClass } from './generateAspectRatioClass';
9
+ export const Image = forwardRef(({ aspectRatio, className, ...restProps }, ref) => (_jsx("img", { ...restProps, className: clsx('ams-image', generateAspectRatioClass(aspectRatio), className), ref: ref })));
10
+ Image.displayName = 'Image';
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from '@testing-library/react';
3
+ import { createRef } from 'react';
4
+ import { Image } from './Image';
5
+ import { generateAspectRatioClass } from './generateAspectRatioClass';
6
+ import { aspectRatioOptions } from '../common/types';
7
+ import '@testing-library/jest-dom';
8
+ describe('Image', () => {
9
+ it('renders', () => {
10
+ const { container } = render(_jsx(Image, { alt: "" }));
11
+ const component = container.querySelector(':only-child');
12
+ expect(component).toBeInTheDocument();
13
+ expect(component).toBeVisible();
14
+ });
15
+ it('renders a design system BEM class name', () => {
16
+ const { container } = render(_jsx(Image, { alt: "" }));
17
+ const component = container.querySelector(':only-child');
18
+ expect(component).toHaveClass('ams-image');
19
+ });
20
+ it('renders an extra class name', () => {
21
+ const { container } = render(_jsx(Image, { alt: "", className: "extra" }));
22
+ const component = container.querySelector(':only-child');
23
+ expect(component).toHaveClass('ams-image extra');
24
+ });
25
+ aspectRatioOptions.forEach((aspectRatio) => {
26
+ it(`renders class names to display the image in the ${aspectRatio} aspect ratio`, () => {
27
+ const { container } = render(_jsx(Image, { alt: "", aspectRatio: aspectRatio }));
28
+ const component = container.querySelector(':only-child');
29
+ const aspectRatioClass = generateAspectRatioClass(aspectRatio) || '';
30
+ expect(component).toHaveClass(aspectRatioClass);
31
+ });
32
+ });
33
+ it('supports ForwardRef in React', () => {
34
+ const ref = createRef();
35
+ const { container } = render(_jsx(Image, { alt: "", ref: ref }));
36
+ const component = container.querySelector(':only-child');
37
+ expect(ref.current).toBe(component);
38
+ });
39
+ });
@@ -0,0 +1 @@
1
+ export declare const generateAspectRatioClass: (aspectRatio?: string) => string | undefined;
@@ -0,0 +1 @@
1
+ export const generateAspectRatioClass = (aspectRatio) => aspectRatio && `ams-aspect-ratio-${aspectRatio.replace(':', '-')}`;
@@ -0,0 +1,3 @@
1
+ export { Image } from './Image';
2
+ export { generateAspectRatioClass } from './generateAspectRatioClass';
3
+ export type { ImageProps } from './Image';
@@ -0,0 +1,2 @@
1
+ export { Image } from './Image';
2
+ export { generateAspectRatioClass } from './generateAspectRatioClass';
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+ import type { HTMLAttributes } from 'react';
6
+ import { ImageProps } from '../Image/Image';
7
+ export type ImageSliderImageProps = ImageProps;
8
+ export type ImageSliderProps = {
9
+ /** Display buttons to navigate to the previous or next image. */
10
+ controls?: boolean;
11
+ /** Label for the image if you need to translate the alt text. */
12
+ imageLabel?: string;
13
+ /** The set of images to display. */
14
+ images: ImageSliderImageProps[];
15
+ /** The label for the ‘next’ button */
16
+ nextLabel?: string;
17
+ /** The label for the ‘previous’ button */
18
+ previousLabel?: string;
19
+ } & HTMLAttributes<HTMLDivElement>;
20
+ export declare const ImageSliderRoot: import("react").ForwardRefExoticComponent<{
21
+ /** Display buttons to navigate to the previous or next image. */
22
+ controls?: boolean;
23
+ /** Label for the image if you need to translate the alt text. */
24
+ imageLabel?: string;
25
+ /** The set of images to display. */
26
+ images: ImageSliderImageProps[];
27
+ /** The label for the ‘next’ button */
28
+ nextLabel?: string;
29
+ /** The label for the ‘previous’ button */
30
+ previousLabel?: string;
31
+ } & HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
32
+ export declare const ImageSlider: import("react").ForwardRefExoticComponent<{
33
+ /** Display buttons to navigate to the previous or next image. */
34
+ controls?: boolean;
35
+ /** Label for the image if you need to translate the alt text. */
36
+ imageLabel?: string;
37
+ /** The set of images to display. */
38
+ images: ImageSliderImageProps[];
39
+ /** The label for the ‘next’ button */
40
+ nextLabel?: string;
41
+ /** The label for the ‘previous’ button */
42
+ previousLabel?: string;
43
+ } & HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>> & {
44
+ Item: import("react").ForwardRefExoticComponent<{
45
+ slideId: number;
46
+ } & HTMLAttributes<HTMLDivElement> & {
47
+ children?: import("react").ReactNode | undefined;
48
+ } & import("react").RefAttributes<HTMLDivElement>>;
49
+ };
@@ -0,0 +1,98 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import clsx from 'clsx';
7
+ import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
8
+ import { ImageSliderContext } from './ImageSliderContext';
9
+ import { ImageSliderControls } from './ImageSliderControls';
10
+ import { ImageSliderItem } from './ImageSliderItem';
11
+ import { ImageSliderScroller } from './ImageSliderScroller';
12
+ import { ImageSliderThumbnails } from './ImageSliderThumbnails';
13
+ import { Image } from '../Image/Image';
14
+ export const ImageSliderRoot = forwardRef(({ className, controls, imageLabel = 'Afbeelding', images, nextLabel = 'Volgende', previousLabel = 'Vorige', ...restProps }, ref) => {
15
+ const [currentSlideId, setCurrentSlideId] = useState(0);
16
+ const [isAtStart, setIsAtStart] = useState(true);
17
+ const [isAtEnd, setIsAtEnd] = useState(false);
18
+ const targetRef = useRef(null);
19
+ const observerRef = useRef(null);
20
+ const inView = useCallback((observations) => {
21
+ const images = Array.from(targetRef.current?.children || []);
22
+ observations.forEach((observation) => {
23
+ if (observation.isIntersecting) {
24
+ setCurrentSlideId(images.indexOf(observation.target));
25
+ }
26
+ });
27
+ }, []);
28
+ const observerOptions = useMemo(() => ({
29
+ root: targetRef.current,
30
+ threshold: 0.6,
31
+ }), []);
32
+ const updateControls = useCallback(() => {
33
+ const sliderScrollerElement = targetRef.current;
34
+ if (!sliderScrollerElement)
35
+ return;
36
+ const { firstElementChild: firstElement, lastElementChild: lastElement } = sliderScrollerElement;
37
+ setIsAtStart(firstElement === sliderScrollerElement?.children[currentSlideId]);
38
+ setIsAtEnd(lastElement === sliderScrollerElement?.children[currentSlideId]);
39
+ }, [currentSlideId]);
40
+ useEffect(() => {
41
+ if (targetRef.current) {
42
+ observerRef.current = new IntersectionObserver(inView, observerOptions);
43
+ const observer = observerRef.current;
44
+ const slides = Array.from(targetRef.current.children);
45
+ slides.forEach((slide) => observer.observe(slide));
46
+ targetRef.current.addEventListener('scrollend', synchronise);
47
+ updateControls();
48
+ return () => {
49
+ slides.forEach((slide) => observer.unobserve(slide));
50
+ targetRef.current?.removeEventListener('scrollend', synchronise);
51
+ };
52
+ }
53
+ return undefined;
54
+ }, [inView, observerOptions, updateControls]);
55
+ const synchronise = useCallback(() => updateControls(), [updateControls]);
56
+ const goToSlide = useCallback((element) => {
57
+ const sliderScrollerElement = targetRef.current;
58
+ if (!sliderScrollerElement || !element)
59
+ return;
60
+ sliderScrollerElement.scrollTo({
61
+ left: sliderScrollerElement.scrollLeft + element.offsetLeft - sliderScrollerElement.scrollLeft,
62
+ });
63
+ }, []);
64
+ const goToSlideId = useCallback((id) => {
65
+ const element = targetRef.current?.children[id];
66
+ if (element)
67
+ goToSlide(element);
68
+ }, [goToSlide]);
69
+ const goToNextSlide = useCallback(() => {
70
+ const element = targetRef.current?.children[currentSlideId];
71
+ const nextElement = element?.nextElementSibling;
72
+ if (nextElement)
73
+ goToSlide(nextElement);
74
+ }, [currentSlideId, goToSlide]);
75
+ const goToPreviousSlide = useCallback(() => {
76
+ const element = targetRef.current?.children[currentSlideId];
77
+ const previousElement = element?.previousElementSibling;
78
+ if (previousElement)
79
+ goToSlide(previousElement);
80
+ }, [currentSlideId, goToSlide]);
81
+ useEffect(() => {
82
+ const handleResize = () => {
83
+ const sliderScrollerElement = targetRef.current;
84
+ const currentSlideElement = targetRef.current?.children[currentSlideId];
85
+ if (!sliderScrollerElement || !currentSlideElement)
86
+ return;
87
+ const expectedScrollLeft = currentSlideElement.offsetLeft;
88
+ if (Math.abs(sliderScrollerElement.scrollLeft - expectedScrollLeft) < 1)
89
+ return;
90
+ goToSlide(currentSlideElement);
91
+ };
92
+ window.addEventListener('resize', handleResize);
93
+ return () => window.removeEventListener('resize', handleResize);
94
+ }, [currentSlideId, goToSlide]);
95
+ return (_jsx(ImageSliderContext.Provider, { value: { currentSlideId, goToNextSlide, goToPreviousSlide, goToSlideId, isAtEnd, isAtStart }, children: _jsxs("div", { ...restProps, "aria-roledescription": "carousel", className: clsx('ams-image-slider', controls && 'ams-image-slider--controls', className), ref: ref, tabIndex: -1, children: [controls && _jsx(ImageSliderControls, { nextLabel: nextLabel, previousLabel: previousLabel }), _jsx(ImageSliderScroller, { "aria-live": "polite", ref: targetRef, role: "group", tabIndex: 0, children: images.map(({ alt, aspectRatio, sizes, src, srcSet }, index) => (_jsx(ImageSliderItem, { slideId: index, children: _jsx(Image, { alt: alt, aspectRatio: aspectRatio, sizes: sizes, src: src, srcSet: srcSet }) }, index))) }), _jsx(ImageSliderThumbnails, { imageLabel: imageLabel, thumbnails: images })] }) }));
96
+ });
97
+ ImageSliderRoot.displayName = 'ImageSlider';
98
+ export const ImageSlider = Object.assign(ImageSliderRoot, { Item: ImageSliderItem });
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render } from '@testing-library/react';
3
+ import { createRef } from 'react';
4
+ import { ImageSlider } from './ImageSlider';
5
+ import '@testing-library/jest-dom';
6
+ const observe = jest.fn();
7
+ const unobserve = jest.fn();
8
+ const disconnect = jest.fn();
9
+ const takeRecords = jest.fn();
10
+ // Mock implementation of IntersectionObserver
11
+ window.IntersectionObserver = jest.fn(() => ({
12
+ disconnect,
13
+ observe,
14
+ root: null,
15
+ rootMargin: '',
16
+ takeRecords,
17
+ thresholds: [],
18
+ unobserve,
19
+ }));
20
+ describe('Image Slider', () => {
21
+ const images = [
22
+ {
23
+ alt: 'Bridge',
24
+ src: 'https://picsum.photos/id/122/320/180',
25
+ },
26
+ {
27
+ alt: 'Bunker',
28
+ src: 'https://picsum.photos/id/101/320/180',
29
+ },
30
+ {
31
+ alt: 'Chairs',
32
+ src: 'https://picsum.photos/id/153/320/180',
33
+ },
34
+ ];
35
+ it('renders', () => {
36
+ const { container } = render(_jsx(ImageSlider, { images: images }));
37
+ const component = container.querySelector(':only-child');
38
+ expect(component).toBeInTheDocument();
39
+ expect(component).toBeVisible();
40
+ });
41
+ it('renders slides', () => {
42
+ const { container } = render(_jsx(ImageSlider, { images: images }));
43
+ const slides = Array.from(container.querySelectorAll('.ams-image-slider__item'));
44
+ expect(slides).toHaveLength(3);
45
+ });
46
+ it('renders a design system BEM class name', () => {
47
+ const { container } = render(_jsx(ImageSlider, { images: images }));
48
+ const component = container.querySelector(':only-child');
49
+ expect(component).toHaveClass('ams-image-slider');
50
+ });
51
+ it('renders an extra class name', () => {
52
+ const { container } = render(_jsx(ImageSlider, { className: "extra", images: images }));
53
+ const component = container.querySelector(':only-child');
54
+ expect(component).toHaveClass('ams-image-slider extra');
55
+ });
56
+ it('supports ForwardRef in React', () => {
57
+ const ref = createRef();
58
+ const { container } = render(_jsx(ImageSlider, { images: images, ref: ref }));
59
+ const component = container.querySelector(':only-child');
60
+ expect(ref.current).toBe(component);
61
+ });
62
+ it('renders thumbnails', () => {
63
+ const { container } = render(_jsx(ImageSlider, { images: images }));
64
+ expect(container.querySelector('.ams-image-slider__thumbnails')).toBeInTheDocument();
65
+ });
66
+ });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+ export type ImageSliderContextValue = {
6
+ currentSlideId: number;
7
+ goToNextSlide: () => void;
8
+ goToPreviousSlide: () => void;
9
+ goToSlideId: (id: number) => void;
10
+ isAtEnd: boolean;
11
+ isAtStart: boolean;
12
+ };
13
+ export declare const ImageSliderContext: import("react").Context<ImageSliderContextValue>;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+ import { createContext } from 'react';
6
+ const defaultValues = {
7
+ currentSlideId: 0,
8
+ goToNextSlide: () => { },
9
+ goToPreviousSlide: () => { },
10
+ goToSlideId: () => { },
11
+ isAtEnd: false,
12
+ isAtStart: true,
13
+ };
14
+ export const ImageSliderContext = createContext(defaultValues);
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license EUPL-1.2+
3
+ * Copyright Gemeente Amsterdam
4
+ */
5
+ import type { HTMLAttributes } from 'react';
6
+ export type ImageSliderControlsProps = {
7
+ /** The label for the ‘next’ button */
8
+ nextLabel: string;
9
+ /** The label for the ‘previous’ button */
10
+ previousLabel: string;
11
+ } & HTMLAttributes<HTMLDivElement>;
12
+ export declare const ImageSliderControls: import("react").ForwardRefExoticComponent<{
13
+ /** The label for the ‘next’ button */
14
+ nextLabel: string;
15
+ /** The label for the ‘previous’ button */
16
+ previousLabel: string;
17
+ } & HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license EUPL-1.2+
4
+ * Copyright Gemeente Amsterdam
5
+ */
6
+ import { ChevronLeftIcon, ChevronRightIcon } from '@amsterdam/design-system-react-icons';
7
+ import clsx from 'clsx';
8
+ import { forwardRef, useCallback, useContext } from 'react';
9
+ import { ImageSliderContext } from './ImageSliderContext';
10
+ import { IconButton } from '../IconButton';
11
+ export const ImageSliderControls = forwardRef(({ className, nextLabel, previousLabel, ...restProps }, ref) => {
12
+ const { goToNextSlide, goToPreviousSlide, isAtEnd, isAtStart } = useContext(ImageSliderContext);
13
+ const handleClickPrevious = useCallback(() => goToPreviousSlide(), [goToPreviousSlide]);
14
+ const handleClickNext = useCallback(() => goToNextSlide(), [goToNextSlide]);
15
+ return (_jsxs("div", { ...restProps, className: clsx('ams-image-slider__controls', className), ref: ref, children: [_jsx(IconButton, { className: "ams-image-slider__control ams-image-slider__control--previous", color: "inverse", disabled: isAtStart, label: previousLabel, onClick: handleClickPrevious, svg: ChevronLeftIcon }), _jsx(IconButton, { className: "ams-image-slider__control ams-image-slider__control--next", color: "inverse", disabled: isAtEnd, label: nextLabel, onClick: handleClickNext, svg: ChevronRightIcon })] }));
16
+ });
17
+ ImageSliderControls.displayName = 'ImageSliderControls';
@@ -0,0 +1 @@
1
+ import '@testing-library/jest-dom';