@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,218 +1,238 @@
1
- import * as React from "react";
1
+ import React, { useState } from "react";
2
+ import { Box, useMultiStyleConfig } from "@chakra-ui/react";
2
3
 
3
4
  import Link from "../Link/Link";
4
- import bem from "../../utils/bem";
5
+ import List from "../List/List";
6
+ import { ListTypes } from "../List/ListTypes";
5
7
  import { range } from "../../utils/utils";
8
+ import generateUUID from "../../helpers/generateUUID";
6
9
 
7
10
  export interface PaginationProps {
8
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
9
- blockName?: string;
10
- /** Additional className for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
11
+ /** Additional className. */
11
12
  className?: string;
12
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
13
- modifiers?: string[];
14
- /** The total number of pages. */
15
- pageCount: number;
13
+ /** The callback function that takes a page number and returns a string
14
+ * to use for a link's `href` attribute. This is used when the current
15
+ * page should refresh when navigating. */
16
+ getPageHref?: undefined | ((pageNumber: number) => string);
17
+ /** ID that other components can cross reference for accessibility purposes. */
18
+ id?: string;
16
19
  /** The current page selected. */
17
- currentPage: number;
18
- /** A method that returns a Link component given the target page */
19
- getPageHref?: (pageNumber: number) => string;
20
- /** The method to callback when an item is selected. Passes the selected page to the consuming app as an argument. */
20
+ initialPage: number;
21
+ /** The callback function called when an item is selected and the current
22
+ * page should not refresh. */
21
23
  onPageChange?: (selected: number) => void;
24
+ /** The total number of pages. */
25
+ pageCount: number;
22
26
  }
23
27
 
24
- /** A component that provides a navigational list of page items. */
28
+ /**
29
+ * A component that provides a navigational list of page items.
30
+ */
25
31
  const Pagination: React.FC<PaginationProps> = (props: PaginationProps) => {
26
32
  const {
27
- blockName,
28
33
  className,
29
- modifiers = [],
30
- pageCount,
31
- currentPage = 1,
34
+ initialPage = 1,
32
35
  getPageHref,
33
- onPageChange,
36
+ id = generateUUID(),
37
+ onPageChange = () => {},
38
+ pageCount,
34
39
  } = props;
40
+ const [currentPage, setCurrentPage] = useState<number>(initialPage);
41
+ const styles = useMultiStyleConfig("Pagination", {});
42
+ const previousPageNumber = currentPage - 1;
43
+ const nextPageNumber = currentPage + 1;
35
44
 
36
- // If there are 0 or 1 pages, the pagination should not show.
45
+ // If there are 0 or 1 page, the pagination should not show.
37
46
  if (pageCount <= 1) {
38
47
  return null;
39
48
  }
40
-
41
49
  if (getPageHref && onPageChange) {
42
50
  console.warn(
43
- "Both onPageHref and onPageChange are passed. Will default to using `onPageHref`."
51
+ "Props for both `getPageHref` and `onPageChange` are passed. Will default to using `getPageHref`."
44
52
  );
45
53
  }
46
54
 
55
+ // If `getPageHref` was passed, then links should go to a new page.
47
56
  const changeUrls =
48
57
  typeof getPageHref !== "undefined" && typeof getPageHref === "function";
49
-
50
- const selectPage = (evt: Event, item: number) => {
51
- const runCallback = (selectedItem: number) => {
52
- evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);
53
-
54
- if (
55
- typeof onPageChange !== "undefined" &&
56
- typeof onPageChange === "function"
57
- ) {
58
- onPageChange(selectedItem);
59
- }
60
- };
61
-
62
- evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);
63
- if (currentPage === item) return;
64
-
65
- // Invoke the callback with the new selected item.
66
- runCallback(item);
58
+ /**
59
+ * This function is only called when clicking on a link should
60
+ * not update the URL or refresh the page.
61
+ */
62
+ const selectPage = (e: Event, selectedPage: number) => {
63
+ e.preventDefault && e.preventDefault();
64
+ if (currentPage === selectedPage) return;
65
+ setCurrentPage(selectedPage);
66
+ onPageChange(selectedPage);
67
67
  };
68
-
69
- const previousPage = (evt: Event) => {
70
- evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);
68
+ // Select the previous page.
69
+ const previousPage = (e: Event) => {
71
70
  if (currentPage > 1) {
72
- selectPage(evt, currentPage - 1);
71
+ selectPage(e, previousPageNumber);
73
72
  }
74
73
  };
75
-
76
- const nextPage = (evt: Event) => {
77
- evt.preventDefault ? evt.preventDefault() : (evt.returnValue = false);
74
+ // Select the next page.
75
+ const nextPage = (e: Event) => {
78
76
  if (currentPage < pageCount) {
79
- selectPage(evt, currentPage + 1);
77
+ selectPage(e, nextPageNumber);
80
78
  }
81
79
  };
82
-
83
- const getPageElement = (item: number) => {
84
- const pageAttributes = {
85
- "aria-label": null,
86
- onClick: !changeUrls ? (evt) => selectPage(evt, item) : undefined,
87
- role: "button",
88
- tabIndex: 0,
80
+ /**
81
+ * All `Link` components have similar attributes but we need to differentiate
82
+ * between the "previous", "next", and regular number links.
83
+ * 1. If `getPageHref` is passed, this means that the page refreshes and the
84
+ * URL changes. In this case, the parent component returns the `href` URL
85
+ * and the `onClick` callback is undefined.
86
+ * 2. Otherwise, we stay on the same page by setting the `href` attribute to
87
+ * "#" and call the `onPageChange` prop through the `onClick` callback.
88
+ */
89
+ const getLinkElement = (type: string, item?: number) => {
90
+ const isCurrentPage = currentPage === item;
91
+ // The current page link has different styles.
92
+ const currentStyles = isCurrentPage
93
+ ? {
94
+ color: "ui.black",
95
+ pointerEvent: "none",
96
+ }
97
+ : {};
98
+ const allAttrs = {
99
+ items: {
100
+ href: changeUrls ? getPageHref(item) : "#",
101
+ attributes: {
102
+ "aria-label": `Page ${item}`,
103
+ "aria-current": isCurrentPage ? "page" : null,
104
+ onClick: changeUrls ? undefined : (e) => selectPage(e, item),
105
+ },
106
+ text: item,
107
+ },
108
+ previous: {
109
+ href: changeUrls ? getPageHref(previousPageNumber) : "#",
110
+ attributes: {
111
+ "aria-label": "Previous page",
112
+ onClick: changeUrls ? undefined : previousPage,
113
+ },
114
+ text: "Previous",
115
+ },
116
+ next: {
117
+ href: changeUrls ? getPageHref(nextPageNumber) : "#",
118
+ attributes: {
119
+ "aria-label": "Next page",
120
+ onClick: changeUrls ? undefined : nextPage,
121
+ },
122
+ text: "Next",
123
+ },
89
124
  };
90
-
91
- pageAttributes["aria-label"] = item ? item : null;
92
-
93
- const pageClass = currentPage === item ? "selected" : null;
94
-
125
+ const linkAttrs = allAttrs[type];
95
126
  return (
96
127
  <Link
97
- attributes={{ ...pageAttributes }}
98
- className={bem("link", modifiers, "pagination", [pageClass])}
99
- href={changeUrls ? getPageHref(item) : "#"}
128
+ additionalStyles={{
129
+ ...styles.link,
130
+ ...currentStyles,
131
+ }}
132
+ attributes={linkAttrs.attributes}
133
+ href={linkAttrs.href}
134
+ id={`${id}-${linkAttrs.text}`}
100
135
  >
101
- {item}
136
+ {linkAttrs.text}
102
137
  </Link>
103
138
  );
104
139
  };
105
140
 
106
- const pagination = (selected: number) => {
107
- // 1, (2 or ...), pageStart - pageEnd, (next to last item or ...), pageCount
108
- const pageStart = Math.max(
109
- 3, // if near the beginning, inner pages start at 3
141
+ /**
142
+ * This function returns an array of `li` elements with numbers based on the
143
+ * total pages that `Pagination` should display. When there are many pages to
144
+ * display, ellipsis are shown to signify that the intermediate page numbers
145
+ * are hidden.
146
+ * For a small number of pages, the array will be simple.
147
+ * For a large number of pages, the resulting array will be in the shape of:
148
+ * [
149
+ * 1, this always displays
150
+ * 2 or an ellipsis,
151
+ * a range of numbers in the middle of the total count,
152
+ * pageCount - 1 or an ellipsis,
153
+ * pageCount, the total number of pages
154
+ * ]
155
+ */
156
+ const getPaginationNumbers = (selected: number) => {
157
+ // Where should the middle range of numbers start at?
158
+ const middleRangeStart = Math.max(
159
+ // Start at three if the current page is near the beginning.
160
+ 3,
110
161
  Math.min(
111
- // If in the middle, inner pages begin two items before the selected page
112
- selected - 2,
113
- // If near the end, count back and show 7 items
114
- pageCount - 6
162
+ // If the current page is in the middle, start the range
163
+ // one number before the current page.
164
+ selected - 1,
165
+ // If the current page is near the end, show the last five items.
166
+ pageCount - 4
115
167
  )
116
168
  );
117
-
118
- const pageEnd = Math.min(
119
- // if near the end, inner pages end just before next to last item (or ellipse)
169
+ // Where should the middle range of numbers end at?
170
+ const middleRangeEnd = Math.min(
171
+ // If the current page is near the end, end the range
172
+ // two place before the last page number.
120
173
  pageCount - 2,
121
174
  Math.max(
122
- // If in the middle, inner pages end two items after the selected page
123
- selected + 2,
124
- // If near the beginning, show the first 7 items
125
- 7
175
+ // If the current page is in the middle, end the range
176
+ // one number after the current page.
177
+ selected + 1,
178
+ // If the current page is near the end, show the first five items.
179
+ 5
126
180
  )
127
181
  );
128
- const truncatedList =
182
+ const itemList =
129
183
  pageCount < 4
130
- ? Array.from({ length: pageCount }, (_, i) => i + 1)
131
- : [
132
- // list always starts at and displays the first page item
184
+ ? // Get a short array with 2 or 3 items: [1, 2] or [1, 2, 3]
185
+ Array.from({ length: pageCount }, (_, i) => i + 1)
186
+ : // Otherwise, create the longer array of items.
187
+ [
188
+ // Always display the first page.
133
189
  1,
134
- // second item will either be item 2 or an ellipse
135
- pageStart > 3 ? "ellipse-start" : 2,
136
- // Adding + 1 here since range() doesn't include the last item passed to it
137
- ...range(pageStart, pageEnd + 1),
138
- // next to last item will either be an ellipse or the next to last page number
139
- pageEnd < pageCount - 2 ? "ellipse-end" : pageCount - 1,
140
- // list always ends at and displays the last page number in the pageCount
190
+ // The second item will be 2 or an ellipse.
191
+ middleRangeStart > 3 ? "ellipse-start" : 2,
192
+ // The middle range of page numbers to display.
193
+ // Add +1 to the end since range() doesn't include the last number.
194
+ ...range(middleRangeStart, middleRangeEnd + 1),
195
+ // The next to last item will be the next to last
196
+ // number or an ellipse.
197
+ middleRangeEnd < pageCount - 2 ? "ellipse-end" : pageCount - 1,
198
+ // Always display the last page.
141
199
  pageCount,
142
200
  ];
143
- const pageItems = truncatedList.map((item) => {
144
- // if it's a number, render that page item, otherwise return the ellipse
201
+ // If it's a number, render an `li` element with a link page item,
202
+ // otherwise return the `li` with the ellipse for a break.
203
+ const pageLiItems = itemList.map((item) => {
145
204
  const itemElement =
146
- typeof item === "number" ? getPageElement(item) : "...";
147
- return (
148
- <li key={item} className={bem("item", modifiers, "pagination")}>
149
- {itemElement}
150
- </li>
151
- );
205
+ typeof item === "number" ? getLinkElement("items", item) : "...";
206
+ return <li key={item}>{itemElement}</li>;
152
207
  });
153
208
 
154
- return pageItems;
155
- };
156
-
157
- // When at the beginning, disable Previous. When at the end, disable Next.
158
- const prevDisabled = currentPage === 1;
159
- const nextDisabled = currentPage === pageCount;
160
-
161
- // Attributes for Previous and Next Buttons
162
- const prevAttributes = {
163
- "aria-disabled": prevDisabled ? "true" : null,
164
- "aria-label": "Previous page",
165
- role: "button",
166
- onClick: changeUrls ? undefined : previousPage,
167
- tabIndex: prevDisabled ? -1 : 0,
168
- };
169
-
170
- const nextAttributes = {
171
- "aria-disabled": nextDisabled ? "true" : null,
172
- "aria-label": "Next page",
173
- role: "button",
174
- onClick: changeUrls ? undefined : nextPage,
175
- tabIndex: nextDisabled ? -1 : null,
209
+ return pageLiItems;
176
210
  };
177
211
 
178
- const prevClass = prevDisabled ? "disabled" : null;
179
- const nextClass = nextDisabled ? "disabled" : null;
212
+ // Don't display the previous link when you're on the first page.
213
+ const previousLiLink = currentPage !== 1 && (
214
+ <li key="previous">{getLinkElement("previous")}</li>
215
+ );
216
+ /// Don't display the next link when you're on the last page.
217
+ const nextLiLink = currentPage !== pageCount && (
218
+ <li key="next">{getLinkElement("next")}</li>
219
+ );
180
220
 
181
221
  return (
182
- <nav
222
+ <Box
223
+ as="nav"
224
+ id={id}
183
225
  aria-label="Pagination"
184
- className={bem("pagination", modifiers, blockName, [className])}
226
+ role="navigation"
227
+ className={className}
228
+ __css={styles}
185
229
  >
186
- <ul className={bem("list", modifiers, "pagination")}>
187
- <li key="previous" className={bem("item", modifiers, "pagination")}>
188
- <Link
189
- attributes={{ ...prevAttributes }}
190
- className={bem("link", modifiers, "pagination", [prevClass])}
191
- href={
192
- !prevDisabled && changeUrls ? getPageHref(currentPage - 1) : "#"
193
- }
194
- >
195
- Previous
196
- </Link>
197
- </li>
198
-
199
- {pagination(currentPage)}
200
-
201
- <li key="next" className={bem("item", modifiers, "pagination")}>
202
- <Link
203
- attributes={{
204
- ...nextAttributes,
205
- }}
206
- className={bem("link", modifiers, "pagination", [nextClass])}
207
- href={
208
- !nextDisabled && changeUrls ? getPageHref(currentPage + 1) : "#"
209
- }
210
- >
211
- Next
212
- </Link>
213
- </li>
214
- </ul>
215
- </nav>
230
+ <List type={ListTypes.Unordered} inline noStyling id={`${id}-list`}>
231
+ {previousLiLink}
232
+ {getPaginationNumbers(currentPage)}
233
+ {nextLiLink}
234
+ </List>
235
+ </Box>
216
236
  );
217
237
  };
218
238
 
@@ -0,0 +1,285 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Pagination Rendering Renders the UI snapshot correctly 1`] = `
4
+ <nav
5
+ aria-label="Pagination"
6
+ className="css-0"
7
+ id="firstPage"
8
+ role="navigation"
9
+ >
10
+ <ul
11
+ className="css-0"
12
+ id="firstPage-list"
13
+ >
14
+ <li>
15
+ <a
16
+ aria-current="page"
17
+ aria-label="Page 1"
18
+ className="css-1858g8z"
19
+ href="page=1"
20
+ id="firstPage-1"
21
+ >
22
+ 1
23
+ </a>
24
+ </li>
25
+ <li>
26
+ <a
27
+ aria-current={null}
28
+ aria-label="Page 2"
29
+ className="css-0"
30
+ href="page=2"
31
+ id="firstPage-2"
32
+ >
33
+ 2
34
+ </a>
35
+ </li>
36
+ <li>
37
+ <a
38
+ aria-current={null}
39
+ aria-label="Page 3"
40
+ className="css-0"
41
+ href="page=3"
42
+ id="firstPage-3"
43
+ >
44
+ 3
45
+ </a>
46
+ </li>
47
+ <li>
48
+ <a
49
+ aria-current={null}
50
+ aria-label="Page 4"
51
+ className="css-0"
52
+ href="page=4"
53
+ id="firstPage-4"
54
+ >
55
+ 4
56
+ </a>
57
+ </li>
58
+ <li>
59
+ <a
60
+ aria-current={null}
61
+ aria-label="Page 5"
62
+ className="css-0"
63
+ href="page=5"
64
+ id="firstPage-5"
65
+ >
66
+ 5
67
+ </a>
68
+ </li>
69
+ <li>
70
+ ...
71
+ </li>
72
+ <li>
73
+ <a
74
+ aria-current={null}
75
+ aria-label="Page 10"
76
+ className="css-0"
77
+ href="page=10"
78
+ id="firstPage-10"
79
+ >
80
+ 10
81
+ </a>
82
+ </li>
83
+ <li>
84
+ <a
85
+ aria-label="Next page"
86
+ className="css-0"
87
+ href="page=2"
88
+ id="firstPage-Next"
89
+ >
90
+ Next
91
+ </a>
92
+ </li>
93
+ </ul>
94
+ </nav>
95
+ `;
96
+
97
+ exports[`Pagination Rendering Renders the UI snapshot correctly 2`] = `
98
+ <nav
99
+ aria-label="Pagination"
100
+ className="css-0"
101
+ id="lastPage"
102
+ role="navigation"
103
+ >
104
+ <ul
105
+ className="css-0"
106
+ id="lastPage-list"
107
+ >
108
+ <li>
109
+ <a
110
+ aria-label="Previous page"
111
+ className="css-0"
112
+ href="page=9"
113
+ id="lastPage-Previous"
114
+ >
115
+ Previous
116
+ </a>
117
+ </li>
118
+ <li>
119
+ <a
120
+ aria-current={null}
121
+ aria-label="Page 1"
122
+ className="css-0"
123
+ href="page=1"
124
+ id="lastPage-1"
125
+ >
126
+ 1
127
+ </a>
128
+ </li>
129
+ <li>
130
+ ...
131
+ </li>
132
+ <li>
133
+ <a
134
+ aria-current={null}
135
+ aria-label="Page 6"
136
+ className="css-0"
137
+ href="page=6"
138
+ id="lastPage-6"
139
+ >
140
+ 6
141
+ </a>
142
+ </li>
143
+ <li>
144
+ <a
145
+ aria-current={null}
146
+ aria-label="Page 7"
147
+ className="css-0"
148
+ href="page=7"
149
+ id="lastPage-7"
150
+ >
151
+ 7
152
+ </a>
153
+ </li>
154
+ <li>
155
+ <a
156
+ aria-current={null}
157
+ aria-label="Page 8"
158
+ className="css-0"
159
+ href="page=8"
160
+ id="lastPage-8"
161
+ >
162
+ 8
163
+ </a>
164
+ </li>
165
+ <li>
166
+ <a
167
+ aria-current={null}
168
+ aria-label="Page 9"
169
+ className="css-0"
170
+ href="page=9"
171
+ id="lastPage-9"
172
+ >
173
+ 9
174
+ </a>
175
+ </li>
176
+ <li>
177
+ <a
178
+ aria-current="page"
179
+ aria-label="Page 10"
180
+ className="css-1858g8z"
181
+ href="page=10"
182
+ id="lastPage-10"
183
+ >
184
+ 10
185
+ </a>
186
+ </li>
187
+ </ul>
188
+ </nav>
189
+ `;
190
+
191
+ exports[`Pagination Rendering Renders the UI snapshot correctly 3`] = `
192
+ <nav
193
+ aria-label="Pagination"
194
+ className="css-0"
195
+ id="middlePage"
196
+ role="navigation"
197
+ >
198
+ <ul
199
+ className="css-0"
200
+ id="middlePage-list"
201
+ >
202
+ <li>
203
+ <a
204
+ aria-label="Previous page"
205
+ className="css-0"
206
+ href="page=4"
207
+ id="middlePage-Previous"
208
+ >
209
+ Previous
210
+ </a>
211
+ </li>
212
+ <li>
213
+ <a
214
+ aria-current={null}
215
+ aria-label="Page 1"
216
+ className="css-0"
217
+ href="page=1"
218
+ id="middlePage-1"
219
+ >
220
+ 1
221
+ </a>
222
+ </li>
223
+ <li>
224
+ ...
225
+ </li>
226
+ <li>
227
+ <a
228
+ aria-current={null}
229
+ aria-label="Page 4"
230
+ className="css-0"
231
+ href="page=4"
232
+ id="middlePage-4"
233
+ >
234
+ 4
235
+ </a>
236
+ </li>
237
+ <li>
238
+ <a
239
+ aria-current="page"
240
+ aria-label="Page 5"
241
+ className="css-1858g8z"
242
+ href="page=5"
243
+ id="middlePage-5"
244
+ >
245
+ 5
246
+ </a>
247
+ </li>
248
+ <li>
249
+ <a
250
+ aria-current={null}
251
+ aria-label="Page 6"
252
+ className="css-0"
253
+ href="page=6"
254
+ id="middlePage-6"
255
+ >
256
+ 6
257
+ </a>
258
+ </li>
259
+ <li>
260
+ ...
261
+ </li>
262
+ <li>
263
+ <a
264
+ aria-current={null}
265
+ aria-label="Page 10"
266
+ className="css-0"
267
+ href="page=10"
268
+ id="middlePage-10"
269
+ >
270
+ 10
271
+ </a>
272
+ </li>
273
+ <li>
274
+ <a
275
+ aria-label="Next page"
276
+ className="css-0"
277
+ href="page=6"
278
+ id="middlePage-Next"
279
+ >
280
+ Next
281
+ </a>
282
+ </li>
283
+ </ul>
284
+ </nav>
285
+ `;