@nypl/design-system-react-components 0.25.0 → 0.25.4

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 (392) hide show
  1. package/CHANGELOG.md +142 -1
  2. package/README.md +98 -50
  3. package/dist/components/Accordion/Accordion.d.ts +14 -14
  4. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -14
  5. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
  6. package/dist/components/Button/Button.d.ts +13 -8
  7. package/dist/components/Button/ButtonTypes.d.ts +3 -1
  8. package/dist/components/Card/Card.d.ts +36 -52
  9. package/dist/components/Card/CardTypes.d.ts +2 -17
  10. package/dist/components/Checkbox/Checkbox.d.ts +17 -13
  11. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +45 -0
  12. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
  13. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
  14. package/dist/components/DatePicker/DatePicker.d.ts +37 -35
  15. package/dist/components/Fieldset/Fieldset.d.ts +25 -0
  16. package/dist/components/Form/Form.d.ts +13 -8
  17. package/dist/components/Form/FormTypes.d.ts +2 -8
  18. package/dist/components/Grid/GridTypes.d.ts +9 -0
  19. package/dist/components/Grid/SimpleGrid.d.ts +14 -0
  20. package/dist/components/Heading/Heading.d.ts +4 -4
  21. package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
  22. package/dist/components/Hero/Hero.d.ts +19 -14
  23. package/dist/components/Hero/HeroTypes.d.ts +10 -5
  24. package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
  25. package/dist/components/Icons/Icon.d.ts +19 -14
  26. package/dist/components/Icons/IconSvgs.d.ts +11 -0
  27. package/dist/components/Icons/IconTypes.d.ts +89 -64
  28. package/dist/components/Image/Image.d.ts +19 -9
  29. package/dist/components/Image/ImageTypes.d.ts +20 -0
  30. package/dist/components/Label/Label.d.ts +5 -17
  31. package/dist/components/Link/Link.d.ts +12 -12
  32. package/dist/components/List/List.d.ts +19 -14
  33. package/dist/components/Notification/Notification.d.ts +37 -16
  34. package/dist/components/Pagination/Pagination.d.ts +16 -13
  35. package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
  36. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
  37. package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
  38. package/dist/components/Radio/Radio.d.ts +2 -0
  39. package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
  40. package/dist/components/SearchBar/SearchBar.d.ts +45 -27
  41. package/dist/components/Select/Select.d.ts +34 -35
  42. package/dist/components/Select/SelectTypes.d.ts +4 -0
  43. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
  44. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
  45. package/dist/components/Slider/Slider.d.ts +57 -0
  46. package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
  47. package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
  48. package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
  49. package/dist/components/Tabs/Tabs.d.ts +1 -1
  50. package/dist/components/Template/Template.d.ts +91 -0
  51. package/dist/components/Text/Text.d.ts +16 -0
  52. package/dist/components/Text/TextTypes.d.ts +6 -0
  53. package/dist/components/TextInput/TextInput.d.ts +44 -31
  54. package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
  55. package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
  56. package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
  57. package/dist/design-system-react-components.cjs.development.js +6473 -2630
  58. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  59. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  60. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  61. package/dist/design-system-react-components.esm.js +6463 -2631
  62. package/dist/design-system-react-components.esm.js.map +1 -1
  63. package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
  64. package/dist/hooks/useCarouselStyles.d.ts +16 -0
  65. package/dist/hooks/useNYPLTheme.d.ts +54 -0
  66. package/dist/hooks/useWindowSize.d.ts +10 -0
  67. package/dist/index.d.ts +19 -7
  68. package/dist/resources.scss +180 -170
  69. package/dist/styles.css +1 -1
  70. package/dist/theme/components/accordion.d.ts +25 -0
  71. package/dist/theme/components/breadcrumb.d.ts +90 -0
  72. package/dist/theme/components/button.d.ts +39 -15
  73. package/dist/theme/components/card.d.ts +168 -0
  74. package/dist/theme/components/checkbox.d.ts +12 -8
  75. package/dist/theme/components/checkboxGroup.d.ts +12 -0
  76. package/dist/theme/components/componentWrapper.d.ts +11 -0
  77. package/dist/theme/components/datePicker.d.ts +16 -0
  78. package/dist/theme/components/fieldset.d.ts +27 -0
  79. package/dist/theme/components/global.d.ts +65 -0
  80. package/dist/theme/components/globalMixins.d.ts +23 -0
  81. package/dist/theme/components/heading.d.ts +55 -20
  82. package/dist/theme/components/helperErrorText.d.ts +10 -0
  83. package/dist/theme/components/hero.d.ts +493 -0
  84. package/dist/theme/components/horizontalRule.d.ts +14 -0
  85. package/dist/theme/components/icon.d.ts +13 -0
  86. package/dist/theme/components/image.d.ts +31 -0
  87. package/dist/theme/components/label.d.ts +18 -0
  88. package/dist/theme/components/link.d.ts +49 -0
  89. package/dist/theme/components/list.d.ts +89 -0
  90. package/dist/theme/components/notification.d.ts +75 -0
  91. package/dist/theme/components/pagination.d.ts +19 -0
  92. package/dist/theme/components/progressIndicator.d.ts +50 -0
  93. package/dist/theme/components/radio.d.ts +8 -7
  94. package/dist/theme/components/radioGroup.d.ts +12 -0
  95. package/dist/theme/components/searchBar.d.ts +20 -0
  96. package/dist/theme/components/select.d.ts +67 -0
  97. package/dist/theme/components/skeletonLoader.d.ts +98 -0
  98. package/dist/theme/components/slider.d.ts +51 -0
  99. package/dist/theme/components/statusBadge.d.ts +25 -0
  100. package/dist/theme/components/tabs.d.ts +63 -12
  101. package/dist/theme/components/template.d.ts +105 -0
  102. package/dist/theme/components/text.d.ts +20 -0
  103. package/dist/theme/components/textInput.d.ts +112 -0
  104. package/dist/theme/components/videoPlayer.d.ts +40 -0
  105. package/dist/theme/foundations/breakpoints.d.ts +8 -8
  106. package/dist/theme/foundations/global.d.ts +8 -0
  107. package/dist/theme/foundations/radii.d.ts +5 -0
  108. package/dist/theme/foundations/shadows.d.ts +4 -0
  109. package/dist/theme/foundations/spacing.d.ts +16 -16
  110. package/dist/utils/utils.d.ts +6 -0
  111. package/package.json +72 -82
  112. package/src/__tests__/setup.ts +2 -2
  113. package/src/components/Accordion/Accordion.stories.mdx +223 -34
  114. package/src/components/Accordion/Accordion.test.tsx +135 -19
  115. package/src/components/Accordion/Accordion.tsx +81 -56
  116. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -4
  117. package/src/components/Autosuggest/Autosuggest.stories.tsx +3 -2
  118. package/src/components/Autosuggest/_Autosuggest.scss +5 -5
  119. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +48 -50
  120. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +54 -25
  121. package/src/components/Breadcrumbs/Breadcrumbs.tsx +75 -73
  122. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
  123. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -0
  124. package/src/components/Button/Button.stories.mdx +45 -36
  125. package/src/components/Button/Button.test.tsx +37 -11
  126. package/src/components/Button/Button.tsx +22 -34
  127. package/src/components/Button/ButtonTypes.tsx +2 -0
  128. package/src/components/Button/__snapshots__/Button.test.tsx.snap +50 -8
  129. package/src/components/Card/Card.stories.mdx +314 -273
  130. package/src/components/Card/Card.test.tsx +157 -91
  131. package/src/components/Card/Card.tsx +195 -145
  132. package/src/components/Card/CardTypes.tsx +2 -19
  133. package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
  134. package/src/components/CardEdition/CardEdition.stories.tsx +26 -53
  135. package/src/components/CardEdition/CardEdition.test.tsx +23 -31
  136. package/src/components/CardEdition/_CardEdition.scss +22 -23
  137. package/src/components/Chakra/Box.stories.mdx +15 -16
  138. package/src/components/Chakra/Center.stories.mdx +56 -24
  139. package/src/components/Chakra/Grid.stories.mdx +92 -0
  140. package/src/components/Chakra/Stack.stories.mdx +38 -21
  141. package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
  142. package/src/components/Checkbox/Checkbox.test.tsx +47 -2
  143. package/src/components/Checkbox/Checkbox.tsx +44 -41
  144. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +92 -7
  145. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +329 -0
  146. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +372 -0
  147. package/src/components/CheckboxGroup/CheckboxGroup.tsx +152 -0
  148. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
  149. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1326 -0
  150. package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
  151. package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
  152. package/src/components/DatePicker/DatePicker.test.tsx +264 -64
  153. package/src/components/DatePicker/DatePicker.tsx +165 -134
  154. package/src/components/DatePicker/_DatePicker.scss +33 -66
  155. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
  156. package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
  157. package/src/components/Fieldset/Fieldset.test.tsx +125 -0
  158. package/src/components/Fieldset/Fieldset.tsx +52 -0
  159. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
  160. package/src/components/Form/Form.stories.mdx +70 -27
  161. package/src/components/Form/Form.test.tsx +58 -45
  162. package/src/components/Form/Form.tsx +50 -21
  163. package/src/components/Form/FormTypes.tsx +3 -8
  164. package/src/components/Form/__snapshots__/Form.test.tsx.snap +24 -14
  165. package/src/components/Grid/GridTypes.tsx +9 -0
  166. package/src/components/Grid/SimpleGrid.stories.mdx +268 -0
  167. package/src/components/Grid/SimpleGrid.test.tsx +66 -0
  168. package/src/components/Grid/SimpleGrid.tsx +37 -0
  169. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
  170. package/src/components/Heading/Heading.stories.mdx +3 -3
  171. package/src/components/Heading/Heading.tsx +12 -6
  172. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
  173. package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
  174. package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
  175. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
  176. package/src/components/Hero/Hero.stories.mdx +198 -121
  177. package/src/components/Hero/Hero.test.tsx +537 -107
  178. package/src/components/Hero/Hero.tsx +79 -92
  179. package/src/components/Hero/HeroTypes.tsx +18 -5
  180. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
  181. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
  182. package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
  183. package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
  184. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
  185. package/src/components/Icons/Icon.stories.mdx +94 -77
  186. package/src/components/Icons/Icon.test.tsx +48 -22
  187. package/src/components/Icons/Icon.tsx +78 -61
  188. package/src/components/Icons/IconSvgs.tsx +22 -0
  189. package/src/components/Icons/IconTypes.tsx +91 -64
  190. package/src/components/Image/Image.stories.mdx +220 -0
  191. package/src/components/Image/Image.test.tsx +131 -29
  192. package/src/components/Image/Image.tsx +84 -56
  193. package/src/components/Image/ImageTypes.ts +22 -0
  194. package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
  195. package/src/components/Input/Input.stories.tsx +23 -67
  196. package/src/components/Input/Input.test.tsx +4 -4
  197. package/src/components/Input/_Input.scss +23 -14
  198. package/src/components/Label/Label.stories.mdx +28 -7
  199. package/src/components/Label/Label.test.tsx +43 -12
  200. package/src/components/Label/Label.tsx +21 -34
  201. package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
  202. package/src/components/Link/Link.stories.mdx +41 -41
  203. package/src/components/Link/Link.test.tsx +33 -44
  204. package/src/components/Link/Link.tsx +117 -100
  205. package/src/components/List/List.stories.mdx +124 -51
  206. package/src/components/List/List.test.tsx +142 -63
  207. package/src/components/List/List.tsx +89 -93
  208. package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
  209. package/src/components/Modal/Modal.stories.mdx +3 -3
  210. package/src/components/Modal/_Modal.scss +2 -2
  211. package/src/components/Notification/Notification.stories.mdx +119 -111
  212. package/src/components/Notification/Notification.test.tsx +102 -126
  213. package/src/components/Notification/Notification.tsx +157 -161
  214. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
  215. package/src/components/Pagination/Pagination.stories.mdx +26 -27
  216. package/src/components/Pagination/Pagination.stories.tsx +11 -16
  217. package/src/components/Pagination/Pagination.test.tsx +276 -140
  218. package/src/components/Pagination/Pagination.tsx +174 -154
  219. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
  220. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
  221. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
  222. package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
  223. package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
  224. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
  225. package/src/components/Radio/Radio.test.tsx +20 -4
  226. package/src/components/Radio/Radio.tsx +6 -3
  227. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
  228. package/src/components/RadioGroup/RadioGroup.stories.mdx +4 -5
  229. package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
  230. package/src/components/RadioGroup/RadioGroup.tsx +21 -29
  231. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
  232. package/src/components/SearchBar/SearchBar.Test.tsx +170 -16
  233. package/src/components/SearchBar/SearchBar.stories.mdx +294 -219
  234. package/src/components/SearchBar/SearchBar.tsx +161 -46
  235. package/src/components/Select/Select.stories.mdx +188 -170
  236. package/src/components/Select/Select.test.tsx +132 -375
  237. package/src/components/Select/Select.tsx +121 -165
  238. package/src/components/Select/SelectTypes.tsx +5 -0
  239. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +33 -76
  240. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
  241. package/src/components/SkeletonLoader/SkeletonLoader.tsx +75 -70
  242. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
  243. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
  244. package/src/components/Slider/Slider.stories.mdx +529 -0
  245. package/src/components/Slider/Slider.test.tsx +653 -0
  246. package/src/components/Slider/Slider.tsx +303 -0
  247. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
  248. package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
  249. package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
  250. package/src/components/StatusBadge/StatusBadge.tsx +24 -25
  251. package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
  252. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
  253. package/src/components/StyleGuide/Bidirectionality.stories.mdx +17 -17
  254. package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
  255. package/src/components/StyleGuide/Buttons.stories.mdx +102 -86
  256. package/src/components/StyleGuide/ColorCard.tsx +46 -0
  257. package/src/components/StyleGuide/Colors.stories.mdx +196 -0
  258. package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
  259. package/src/components/StyleGuide/Forms.stories.mdx +9 -7
  260. package/src/components/StyleGuide/Iconography.stories.mdx +119 -127
  261. package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
  262. package/src/components/StyleGuide/Typography.stories.mdx +202 -189
  263. package/src/components/StyleGuide/UIDocCard.tsx +1 -1
  264. package/src/components/Tabs/Tabs.stories.mdx +73 -11
  265. package/src/components/Tabs/Tabs.tsx +88 -67
  266. package/src/components/Template/Template.stories.mdx +572 -0
  267. package/src/components/Template/Template.test.tsx +124 -0
  268. package/src/components/Template/Template.tsx +226 -0
  269. package/src/components/Text/Text.stories.mdx +70 -0
  270. package/src/components/Text/Text.test.tsx +63 -0
  271. package/src/components/Text/Text.tsx +55 -0
  272. package/src/components/Text/TextTypes.tsx +6 -0
  273. package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
  274. package/src/components/TextInput/TextInput.stories.mdx +89 -90
  275. package/src/components/TextInput/TextInput.test.tsx +84 -85
  276. package/src/components/TextInput/TextInput.tsx +121 -95
  277. package/src/components/TextInput/TextInputTypes.tsx +8 -0
  278. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
  279. package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
  280. package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
  281. package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
  282. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
  283. package/src/docs/Chakra.stories.mdx +246 -65
  284. package/src/docs/Intro.stories.mdx +18 -13
  285. package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
  286. package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
  287. package/src/hooks/useCarouselStyles.ts +34 -0
  288. package/src/hooks/useNYPLTheme.ts +67 -0
  289. package/src/hooks/useWindowSize.ts +40 -0
  290. package/src/index.ts +39 -16
  291. package/src/resources.scss +5 -5
  292. package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
  293. package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
  294. package/src/styles/base/_03-base.scss +25 -0
  295. package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
  296. package/src/styles/base/_place-holder.scss +14 -3
  297. package/src/styles/{03-space → space}/_space-inline.scss +14 -14
  298. package/src/styles/{03-space → space}/_space-inset.scss +10 -10
  299. package/src/styles/space/_space-stack.scss +116 -0
  300. package/src/styles.scss +13 -62
  301. package/src/theme/components/accordion.ts +30 -0
  302. package/src/theme/components/breadcrumb.ts +77 -0
  303. package/src/theme/components/button.ts +91 -71
  304. package/src/theme/components/card.ts +174 -0
  305. package/src/theme/components/checkbox.ts +22 -29
  306. package/src/theme/components/checkboxGroup.ts +8 -0
  307. package/src/theme/components/componentWrapper.ts +10 -0
  308. package/src/theme/components/datePicker.ts +17 -0
  309. package/src/theme/components/fieldset.ts +18 -0
  310. package/src/theme/components/global.ts +82 -0
  311. package/src/theme/components/globalMixins.ts +24 -0
  312. package/src/theme/components/heading.ts +25 -13
  313. package/src/theme/components/helperErrorText.ts +9 -0
  314. package/src/theme/components/hero.ts +240 -0
  315. package/src/theme/components/horizontalRule.ts +13 -0
  316. package/src/theme/components/icon.ts +79 -0
  317. package/src/theme/components/image.ts +116 -0
  318. package/src/theme/components/label.ts +10 -0
  319. package/src/theme/components/link.ts +51 -0
  320. package/src/theme/components/list.ts +73 -0
  321. package/src/theme/components/notification.ts +93 -0
  322. package/src/theme/components/pagination.ts +20 -0
  323. package/src/theme/components/progressIndicator.ts +62 -0
  324. package/src/theme/components/radio.ts +22 -33
  325. package/src/theme/components/radioGroup.ts +8 -0
  326. package/src/theme/components/searchBar.ts +21 -0
  327. package/src/theme/components/select.ts +53 -0
  328. package/src/theme/components/skeletonLoader.ts +107 -0
  329. package/src/theme/components/slider.ts +79 -0
  330. package/src/theme/components/statusBadge.ts +26 -0
  331. package/src/theme/components/tabs.ts +102 -69
  332. package/src/theme/components/template.ts +114 -0
  333. package/src/theme/components/text.ts +31 -0
  334. package/src/theme/components/textInput.ts +62 -0
  335. package/src/theme/components/videoPlayer.ts +49 -0
  336. package/src/theme/foundations/breakpoints.ts +8 -8
  337. package/src/theme/foundations/colors.ts +29 -13
  338. package/src/theme/foundations/global.ts +8 -0
  339. package/src/theme/foundations/radii.ts +6 -0
  340. package/src/theme/foundations/shadows.ts +5 -0
  341. package/src/theme/foundations/spacing.ts +24 -24
  342. package/src/theme/index.ts +74 -13
  343. package/src/utils/componentCategories.ts +12 -5
  344. package/src/utils/utils.ts +13 -0
  345. package/dist/components/Accordion/Accordion.stories.d.ts +0 -6
  346. package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
  347. package/dist/components/Image/Image.stories.d.ts +0 -18
  348. package/dist/components/List/List.stories.d.ts +0 -7
  349. package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
  350. package/dist/components/StyleGuide/Colors.stories.d.ts +0 -25
  351. package/dist/components/Template/Template.stories.d.ts +0 -30
  352. package/dist/theme/components/customRadioGroup.d.ts +0 -17
  353. package/src/components/Accordion/Accordion.stories.tsx +0 -66
  354. package/src/components/Accordion/_Accordion.scss +0 -81
  355. package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
  356. package/src/components/Button/_Button.scss +0 -56
  357. package/src/components/Card/_Card.scss +0 -308
  358. package/src/components/Form/_Form.scss +0 -67
  359. package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
  360. package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
  361. package/src/components/Hero/_Hero.scss +0 -256
  362. package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
  363. package/src/components/Icons/_Icons.scss +0 -116
  364. package/src/components/Image/Image.stories.tsx +0 -54
  365. package/src/components/Image/_Image.scss +0 -38
  366. package/src/components/Label/_Label.scss +0 -22
  367. package/src/components/Link/_Link.scss +0 -73
  368. package/src/components/List/List.stories.tsx +0 -139
  369. package/src/components/List/_List.scss +0 -76
  370. package/src/components/Notification/_Notification.scss +0 -110
  371. package/src/components/Pagination/_Pagination.scss +0 -40
  372. package/src/components/SearchBar/_SearchBar.scss +0 -16
  373. package/src/components/Select/_Select.scss +0 -82
  374. package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
  375. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -34
  376. package/src/components/StatusBadge/_StatusBadge.scss +0 -23
  377. package/src/components/StyleGuide/Colors.stories.tsx +0 -289
  378. package/src/components/Template/Template.stories.tsx +0 -86
  379. package/src/components/Template/_Template.scss +0 -63
  380. package/src/components/TextInput/_TextInput.scss +0 -59
  381. package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
  382. package/src/styles/01-colors/_colors-brand.scss +0 -56
  383. package/src/styles/01-colors/_colors-utility.scss +0 -65
  384. package/src/styles/02-typography/_type-scale.css +0 -11
  385. package/src/styles/02-typography/_type-weight.css +0 -7
  386. package/src/styles/02-typography/_typefaces.css +0 -4
  387. package/src/styles/03-space/_space-stack.scss +0 -116
  388. package/src/styles/03-space/_space.css +0 -30
  389. package/src/styles/base/_04-base.scss +0 -19
  390. package/src/styles/base/_card-grid.scss +0 -78
  391. package/src/styles/base/_typography.scss +0 -11
  392. package/src/theme/components/customRadioGroup.ts +0 -18
@@ -1,17 +1,19 @@
1
- import React, { useEffect, useState } from "react";
1
+ import React from "react";
2
2
  import { Story } from "@storybook/react/types-6-0";
3
3
 
4
4
  import Pagination, { PaginationProps } from "./Pagination";
5
5
 
6
6
  /**
7
7
  * PaginationGetPageHref will refresh the browser as a new page is selected.
8
+ * In this example, `getPageHref` creates the `href` attribute for each
9
+ * page URL.
8
10
  */
9
11
  export const PaginationGetPageHref: Story<PaginationProps> = (args) => {
10
12
  // This uses the `addon-queryparams` Storybook addon.
11
13
  const urlParams = new URLSearchParams(document.location.search);
12
14
  const pageParam = urlParams.get("page");
13
15
  const getPageNumber = (page: number, pageCount: number) => {
14
- return page > 0 && page < pageCount ? page : 1;
16
+ return page > 0 && page <= pageCount ? page : 1;
15
17
  };
16
18
  const computedCurrentPage =
17
19
  pageParam &&
@@ -20,15 +22,14 @@ export const PaginationGetPageHref: Story<PaginationProps> = (args) => {
20
22
  const location = window.location;
21
23
  // Passing this function into `Pagination` makes the URL to change
22
24
  // and refreshes the page.
23
- const getPageHref = (page) => {
24
- const currentStoryId = urlParams.get("id");
25
- return `${location.origin}?path=/story/${currentStoryId}&page=${page}`;
25
+ const getPageHref = (selectedPage) => {
26
+ return `${location.href}&page=${selectedPage}`;
26
27
  };
27
28
 
28
29
  return (
29
30
  <Pagination
30
31
  pageCount={args.pageCount}
31
- currentPage={computedCurrentPage || args.currentPage}
32
+ initialPage={computedCurrentPage || args.initialPage}
32
33
  getPageHref={getPageHref}
33
34
  />
34
35
  );
@@ -39,20 +40,14 @@ export const PaginationGetPageHref: Story<PaginationProps> = (args) => {
39
40
  * selected but will not change the URL or refresh the page.
40
41
  */
41
42
  export const PaginationOnPageChange: Story<PaginationProps> = (args) => {
42
- const [computedCurrentPage, setComputedCurrentPage] = useState(
43
- args.currentPage
44
- );
45
- const onPageChange = (page: number) => setComputedCurrentPage(page);
46
-
47
- // Allows storybook controls to control `currentPage` prop.
48
- useEffect(() => {
49
- setComputedCurrentPage(args.currentPage);
50
- }, [args.currentPage]);
43
+ const onPageChange = (currentPage: number) => {
44
+ console.log(`Current page: ${currentPage}`);
45
+ };
51
46
 
52
47
  return (
53
48
  <Pagination
54
49
  pageCount={args.pageCount}
55
- currentPage={computedCurrentPage}
50
+ initialPage={args.initialPage}
56
51
  onPageChange={onPageChange}
57
52
  />
58
53
  );
@@ -1,172 +1,308 @@
1
1
  import * as React from "react";
2
- import { render, screen } from "@testing-library/react";
2
+ import { render, screen, within } from "@testing-library/react";
3
3
  import { axe } from "jest-axe";
4
4
  import userEvent from "@testing-library/user-event";
5
+ import renderer from "react-test-renderer";
5
6
 
6
7
  import Pagination from "./Pagination";
7
8
 
8
9
  describe("Pagination Accessibility", () => {
9
- it("passes axe accessibility test", async () => {
10
- const getPageHref = (page: number) => `page=${page}`;
10
+ const getPageHref = (page: number) => `page=${page}`;
11
+
12
+ it("passes axe accessibility on the first page", async () => {
11
13
  const { container } = render(
12
- <Pagination pageCount={20} currentPage={6} getPageHref={getPageHref} />
14
+ <Pagination pageCount={20} initialPage={1} getPageHref={getPageHref} />
15
+ );
16
+ expect(await axe(container)).toHaveNoViolations();
17
+ });
18
+ it("passes axe accessibility on a middle page", async () => {
19
+ const { container } = render(
20
+ <Pagination pageCount={20} initialPage={10} getPageHref={getPageHref} />
21
+ );
22
+ expect(await axe(container)).toHaveNoViolations();
23
+ });
24
+ it("passes axe accessibility on the last page", async () => {
25
+ const { container } = render(
26
+ <Pagination pageCount={20} initialPage={20} getPageHref={getPageHref} />
13
27
  );
14
28
  expect(await axe(container)).toHaveNoViolations();
15
29
  });
16
30
  });
17
31
 
18
- describe("Pagination with getPageHref", () => {
32
+ describe("Pagination", () => {
19
33
  const getPageHref = (page: number) => `page=${page}`;
20
34
 
21
- it("Renders a nav element with items and links", () => {
22
- render(
23
- <Pagination pageCount={20} currentPage={6} getPageHref={getPageHref} />
24
- );
35
+ describe("Rendering", () => {
36
+ it("renders a nav element with an unordered list and links", () => {
37
+ render(
38
+ <Pagination pageCount={5} initialPage={3} getPageHref={getPageHref} />
39
+ );
40
+ const nav = screen.getByRole("navigation");
25
41
 
26
- expect(screen.getByRole("navigation")).toBeInTheDocument();
27
- expect(screen.getByRole("list")).toBeInTheDocument();
28
- // Previous/Next buttons + truncated item list = 11 total items
29
- expect(screen.getAllByRole("listitem")).toHaveLength(11);
30
- // Each element links to anotherpage.
31
- // Each link has a `role="button"` attribute.
32
- const links = screen.getAllByRole("button");
33
-
34
- // Pagination should show
35
- // Previous 1 ... 4 5 6 7 8 ... 20 Next
36
- expect(links).toHaveLength(9);
37
- // Previous Page
38
- expect(links[0]).toHaveAttribute("href", "page=5");
39
- expect(links[1]).toHaveAttribute("href", "page=1");
40
- expect(links[2]).toHaveAttribute("href", "page=4");
41
- expect(links[3]).toHaveAttribute("href", "page=5");
42
- expect(links[4]).toHaveAttribute("href", "page=6");
43
- expect(links[5]).toHaveAttribute("href", "page=7");
44
- expect(links[6]).toHaveAttribute("href", "page=8");
45
- expect(links[7]).toHaveAttribute("href", "page=20");
46
- // Next Page
47
- expect(links[8]).toHaveAttribute("href", "page=7");
48
- });
42
+ expect(nav).toBeInTheDocument();
43
+ expect(nav).toHaveAttribute("aria-label", "Pagination");
44
+ // Chakra renders other lists so we only want the list we
45
+ // created within the nav element.
46
+ const { getByRole } = within(nav);
47
+ expect(getByRole("list")).toBeInTheDocument();
48
+ // Previous/Next links + truncated item list = 7 total items
49
+ expect(screen.getAllByRole("listitem")).toHaveLength(7);
50
+ // Pagination should show:
51
+ // Previous 1 2 3 4 5 Next
52
+ expect(screen.getAllByRole("link")).toHaveLength(7);
53
+ });
49
54
 
50
- it("Previous link is disabled when on the first page item", () => {
51
- render(
52
- <Pagination pageCount={11} currentPage={1} getPageHref={getPageHref} />
53
- );
54
- const links = screen.getAllByRole("button");
55
- expect(links[0]).toHaveAttribute("aria-disabled");
56
- expect(links[0]).toHaveAttribute("class", "link pagination__link disabled");
57
- });
55
+ it("does not render the Previous link on the first page", () => {
56
+ render(
57
+ <Pagination pageCount={5} initialPage={1} getPageHref={getPageHref} />
58
+ );
59
+ // Pagination should show:
60
+ // 1 2 3 4 5 Next
61
+ const links = screen.getAllByRole("link");
58
62
 
59
- it("Next link is disabled when on the last page item", () => {
60
- render(
61
- <Pagination pageCount={11} currentPage={11} getPageHref={getPageHref} />
62
- );
63
- const links = screen.getAllByRole("button");
64
- expect(links[9]).toHaveAttribute("aria-disabled");
65
- expect(links[9]).toHaveAttribute("class", "link pagination__link disabled");
66
- });
63
+ expect(links).toHaveLength(6);
64
+ expect(screen.queryByText("Previous")).not.toBeInTheDocument();
65
+ expect(screen.getByText("Next")).toBeInTheDocument();
66
+ });
67
67
 
68
- it("Current page item has active class", () => {
69
- render(
70
- <Pagination pageCount={11} currentPage={5} getPageHref={getPageHref} />
71
- );
72
- const links = screen.getAllByRole("button");
73
- expect(links[5]).toHaveAttribute("class", "link pagination__link selected");
74
- });
68
+ it("does not render the Next link on the last page", () => {
69
+ render(
70
+ <Pagination pageCount={5} initialPage={5} getPageHref={getPageHref} />
71
+ );
72
+ // Pagination should show:
73
+ // Previous 1 2 3 4 5
74
+ const links = screen.getAllByRole("link");
75
75
 
76
- it("When pagination has 1 element, pagination is not shown", () => {
77
- render(
78
- <Pagination pageCount={1} currentPage={1} getPageHref={getPageHref} />
79
- );
80
- expect(screen.queryByRole("navigation")).not.toBeInTheDocument();
81
- });
76
+ expect(links).toHaveLength(6);
77
+ expect(screen.getByText("Previous")).toBeInTheDocument();
78
+ expect(screen.queryByText("Next")).not.toBeInTheDocument();
79
+ });
82
80
 
83
- it("When pagination has 0 elements, pagination is not shown", () => {
84
- render(
85
- <Pagination pageCount={0} currentPage={1} getPageHref={getPageHref} />
86
- );
87
- expect(screen.queryByRole("navigation")).not.toBeInTheDocument();
88
- });
89
- });
81
+ it("renders an ellipsis at the end of the list", () => {
82
+ render(
83
+ <Pagination pageCount={10} initialPage={1} getPageHref={getPageHref} />
84
+ );
85
+ // Pagination should show:
86
+ // 1 2 3 4 5 ... 10 Next
87
+ const listitem = screen.getAllByRole("listitem");
90
88
 
91
- describe("Pagination with changeCallback", () => {
92
- const changeCallback = jest.fn();
89
+ expect(listitem).toHaveLength(8);
90
+ // The ellipsis is not a link
91
+ expect(screen.getAllByRole("link")).toHaveLength(7);
92
+ expect(listitem[4].textContent).toEqual("5");
93
+ expect(listitem[5].textContent).toEqual("...");
94
+ expect(listitem[6].textContent).toEqual("10");
95
+ expect(screen.getByText("...")).toBeInTheDocument();
96
+ });
93
97
 
94
- it("Renders a nav element with an unordered list of items", () => {
95
- render(
96
- <Pagination
97
- pageCount={11}
98
- currentPage={6}
99
- onPageChange={changeCallback}
100
- />
101
- );
102
- expect(screen.getByRole("navigation")).toBeInTheDocument();
103
- expect(screen.getByRole("list")).toBeInTheDocument();
104
- expect(screen.getAllByRole("listitem")).toHaveLength(11);
105
- });
98
+ it("renders an ellipsis at the start of the list", () => {
99
+ render(
100
+ <Pagination pageCount={10} initialPage={10} getPageHref={getPageHref} />
101
+ );
102
+ // Pagination should show:
103
+ // Previous 1 ... 6 7 8 9 10
104
+ const listitem = screen.getAllByRole("listitem");
106
105
 
107
- it("Previous link is disabled when on the first page item", () => {
108
- render(
109
- <Pagination
110
- pageCount={11}
111
- currentPage={1}
112
- onPageChange={changeCallback}
113
- />
114
- );
115
- const links = screen.getAllByRole("button");
116
- expect(links[0]).toHaveAttribute("aria-disabled");
117
- expect(links[0]).toHaveAttribute("class", "link pagination__link disabled");
118
- });
106
+ expect(listitem).toHaveLength(8);
107
+ // The ellipsis is not a link
108
+ expect(screen.getAllByRole("link")).toHaveLength(7);
109
+ expect(listitem[1].textContent).toEqual("1");
110
+ expect(listitem[2].textContent).toEqual("...");
111
+ expect(listitem[3].textContent).toEqual("6");
112
+ expect(screen.getByText("...")).toBeInTheDocument();
113
+ });
119
114
 
120
- it("Next link is disabled when on the last page item", () => {
121
- render(
122
- <Pagination
123
- pageCount={11}
124
- currentPage={11}
125
- onPageChange={changeCallback}
126
- />
127
- );
128
- const links = screen.getAllByRole("button");
129
- expect(links[9]).toHaveAttribute("aria-disabled");
130
- expect(links[9]).toHaveAttribute("class", "link pagination__link disabled");
131
- });
115
+ it("renders two ellipsis when the current page is in the middle", () => {
116
+ render(
117
+ <Pagination pageCount={10} initialPage={5} getPageHref={getPageHref} />
118
+ );
119
+ // Pagination should show:
120
+ // Previous 1 ... 4 5 6 ... 10 Next
121
+ const listitem = screen.getAllByRole("listitem");
132
122
 
133
- it("Current page item has active class", () => {
134
- render(
135
- <Pagination
136
- pageCount={11}
137
- currentPage={5}
138
- onPageChange={changeCallback}
139
- />
140
- );
141
- const links = screen.getAllByRole("button");
142
- expect(links[5]).toHaveAttribute("class", "link pagination__link selected");
143
- });
123
+ expect(listitem).toHaveLength(9);
124
+ // The ellipses are not links
125
+ expect(screen.getAllByRole("link")).toHaveLength(7);
126
+ expect(listitem[0].textContent).toEqual("Previous");
127
+ expect(listitem[1].textContent).toEqual("1");
128
+ expect(listitem[2].textContent).toEqual("...");
129
+ expect(listitem[3].textContent).toEqual("4");
130
+ expect(listitem[4].textContent).toEqual("5");
131
+ expect(listitem[5].textContent).toEqual("6");
132
+ expect(listitem[6].textContent).toEqual("...");
133
+ expect(listitem[7].textContent).toEqual("10");
134
+ expect(listitem[8].textContent).toEqual("Next");
135
+ expect(screen.getAllByText("...")).toHaveLength(2);
136
+ });
144
137
 
145
- it("When page item is selected, runs the onPageChange callback", () => {
146
- render(
147
- <Pagination
148
- pageCount={11}
149
- currentPage={5}
150
- onPageChange={changeCallback}
151
- />
152
- );
153
- const links = screen.getAllByRole("button");
154
- expect(changeCallback).toHaveBeenCalledTimes(0);
155
- userEvent.click(links[2]);
156
- expect(changeCallback).toHaveBeenCalledTimes(1);
157
- });
138
+ it("adds aria-current to the active page", () => {
139
+ render(
140
+ <Pagination pageCount={5} initialPage={3} getPageHref={getPageHref} />
141
+ );
142
+ // Pagination should show:
143
+ // Previous 1 2 3 4 5 Next
144
+ const links = screen.getAllByRole("link");
145
+ const page2 = links[2].getAttribute("aria-current");
146
+ const page3 = links[3].getAttribute("aria-current");
147
+ const page4 = links[4].getAttribute("aria-current");
158
148
 
159
- it("When pagination has 1 element, pagination is not shown", () => {
160
- render(
161
- <Pagination pageCount={1} currentPage={1} onPageChange={changeCallback} />
162
- );
163
- expect(screen.queryByRole("navigation")).not.toBeInTheDocument();
149
+ expect(page2).toEqual(null);
150
+ // Only the current page has `aria-current="page"` for accessibility.
151
+ expect(page3).toEqual("page");
152
+ expect(page4).toEqual(null);
153
+ });
154
+
155
+ it("When pagination has 1 element, pagination is not shown", () => {
156
+ render(
157
+ <Pagination pageCount={1} initialPage={1} getPageHref={getPageHref} />
158
+ );
159
+ expect(screen.queryByRole("navigation")).not.toBeInTheDocument();
160
+ });
161
+
162
+ it("When pagination has 0 elements, pagination is not shown", () => {
163
+ render(
164
+ <Pagination pageCount={0} initialPage={1} getPageHref={getPageHref} />
165
+ );
166
+ expect(screen.queryByRole("navigation")).not.toBeInTheDocument();
167
+ });
168
+
169
+ it("Renders the UI snapshot correctly", () => {
170
+ const firstPage = renderer
171
+ .create(
172
+ <Pagination
173
+ id="firstPage"
174
+ pageCount={10}
175
+ initialPage={1}
176
+ getPageHref={getPageHref}
177
+ />
178
+ )
179
+ .toJSON();
180
+ const lastPage = renderer
181
+ .create(
182
+ <Pagination
183
+ id="lastPage"
184
+ pageCount={10}
185
+ initialPage={10}
186
+ getPageHref={getPageHref}
187
+ />
188
+ )
189
+ .toJSON();
190
+ const middlePage = renderer
191
+ .create(
192
+ <Pagination
193
+ id="middlePage"
194
+ pageCount={10}
195
+ initialPage={5}
196
+ getPageHref={getPageHref}
197
+ />
198
+ )
199
+ .toJSON();
200
+
201
+ expect(firstPage).toMatchSnapshot();
202
+ expect(lastPage).toMatchSnapshot();
203
+ expect(middlePage).toMatchSnapshot();
204
+ });
164
205
  });
165
206
 
166
- it("When pagination has 0 elements, pagination is not shown", () => {
167
- render(
168
- <Pagination pageCount={0} currentPage={1} onPageChange={changeCallback} />
169
- );
170
- expect(screen.queryByRole("navigation")).not.toBeInTheDocument();
207
+ describe("Behavior", () => {
208
+ it("updates the links href value when getPageHref is used", () => {
209
+ const getPageHref = (page: number) => `?page=${page}`;
210
+ render(
211
+ <Pagination pageCount={10} initialPage={5} getPageHref={getPageHref} />
212
+ );
213
+ // Pagination should show:
214
+ // Previous 1 ... 4 5 6 ... 10 Next
215
+ const links = screen.getAllByRole("link");
216
+
217
+ expect(screen.getByText("Previous")).toBeInTheDocument();
218
+ expect(screen.getByText("Next")).toBeInTheDocument();
219
+
220
+ // Previous link
221
+ expect(links[0].getAttribute("href")).toEqual("?page=4");
222
+ expect(links[1].getAttribute("href")).toEqual("?page=1");
223
+ expect(links[2].getAttribute("href")).toEqual("?page=4");
224
+ expect(links[3].getAttribute("href")).toEqual("?page=5");
225
+ expect(links[4].getAttribute("href")).toEqual("?page=6");
226
+ expect(links[5].getAttribute("href")).toEqual("?page=10");
227
+ // Next link
228
+ expect(links[6].getAttribute("href")).toEqual("?page=6");
229
+ });
230
+
231
+ // In this scenario, we need to update the current page ourselves
232
+ // since we stay on the same page.
233
+ it("When page item is selected, runs the onPageChange callback", () => {
234
+ const onPageChange = (page: number) => (currentPage = page);
235
+ let currentPage = 5;
236
+ const { rerender } = render(
237
+ <Pagination
238
+ pageCount={10}
239
+ initialPage={currentPage}
240
+ onPageChange={onPageChange}
241
+ />
242
+ );
243
+ // Pagination should show:
244
+ // Previous 1 ... 4 5 6 ... 10 Next
245
+ let links = screen.getAllByRole("link");
246
+
247
+ // Links all have "#" for their href value.
248
+ // Previous link
249
+ expect(links[0].getAttribute("href")).toEqual("#");
250
+ expect(links[1].getAttribute("href")).toEqual("#");
251
+ expect(links[2].getAttribute("href")).toEqual("#");
252
+ expect(links[3].getAttribute("href")).toEqual("#");
253
+ expect(links[4].getAttribute("href")).toEqual("#");
254
+ expect(links[5].getAttribute("href")).toEqual("#");
255
+ // Next link
256
+ expect(links[6].getAttribute("href")).toEqual("#");
257
+
258
+ // Page 4
259
+ userEvent.click(links[2]);
260
+ expect(currentPage).toEqual(4);
261
+
262
+ rerender(
263
+ <Pagination
264
+ pageCount={10}
265
+ initialPage={currentPage}
266
+ onPageChange={onPageChange}
267
+ />
268
+ );
269
+ // Pagination should show:
270
+ // Previous 1 2 3 4 5 ... 10 Next
271
+ links = screen.getAllByRole("link");
272
+
273
+ // Previous link
274
+ userEvent.click(links[0]);
275
+ expect(currentPage).toEqual(3);
276
+
277
+ rerender(
278
+ <Pagination
279
+ pageCount={10}
280
+ initialPage={currentPage}
281
+ onPageChange={onPageChange}
282
+ />
283
+ );
284
+ // Pagination should show:
285
+ // Previous 1 2 3 4 5 ... 10 Next
286
+ links = screen.getAllByRole("link");
287
+
288
+ // Page 10
289
+ userEvent.click(links[6]);
290
+ expect(currentPage).toEqual(10);
291
+
292
+ rerender(
293
+ <Pagination
294
+ pageCount={10}
295
+ initialPage={currentPage}
296
+ onPageChange={onPageChange}
297
+ />
298
+ );
299
+ // Pagination should show:
300
+ // Previous 1 ... 6 7 8 9 10
301
+ links = screen.getAllByRole("link");
302
+
303
+ // Page 6
304
+ userEvent.click(links[2]);
305
+ expect(currentPage).toEqual(6);
306
+ });
171
307
  });
172
308
  });