@nypl/design-system-react-components 1.0.1 → 1.0.2

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 (396) hide show
  1. package/CHANGELOG.md +1428 -3
  2. package/README.md +391 -3
  3. package/dist/__tests__/fileMock.d.ts +4 -0
  4. package/dist/__tests__/setup.d.ts +2 -0
  5. package/{lib/stories/0-Welcome.stories.d.ts → dist/__tests__/utils/utils.test.d.ts} +1 -1
  6. package/dist/components/Accordion/Accordion.d.ts +21 -0
  7. package/dist/components/Autosuggest/Autosuggest.stories.d.ts +4 -0
  8. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +18 -0
  9. package/dist/components/Button/Button.d.ts +25 -0
  10. package/dist/components/ButtonGroup/ButtonGroup.d.ts +22 -0
  11. package/dist/components/Card/Card.d.ts +49 -0
  12. package/dist/components/Checkbox/Checkbox.d.ts +47 -0
  13. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +49 -0
  14. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +29 -0
  15. package/dist/components/DatePicker/DatePicker.d.ts +81 -0
  16. package/dist/components/Fieldset/Fieldset.d.ts +22 -0
  17. package/dist/components/Form/Form.d.ts +29 -0
  18. package/dist/components/Grid/SimpleGrid.d.ts +17 -0
  19. package/dist/components/Heading/Heading.d.ts +27 -0
  20. package/dist/components/HelperErrorText/HelperErrorText.d.ts +29 -0
  21. package/dist/components/Hero/Hero.d.ts +40 -0
  22. package/dist/components/HorizontalRule/HorizontalRule.d.ts +11 -0
  23. package/dist/components/Icons/Icon.d.ts +37 -0
  24. package/dist/components/Icons/IconSvgs.d.ts +33 -0
  25. package/dist/components/Image/Image.d.ts +61 -0
  26. package/dist/components/Label/Label.d.ts +20 -0
  27. package/dist/components/Link/Link.d.ts +20 -0
  28. package/dist/components/List/List.d.ts +35 -0
  29. package/dist/components/Logo/Logo.d.ts +26 -0
  30. package/dist/components/Logo/LogoSvgs.d.ts +46 -0
  31. package/dist/components/Modal/Modal.d.ts +33 -0
  32. package/dist/components/Notification/Notification.d.ts +50 -0
  33. package/dist/components/Pagination/Pagination.d.ts +27 -0
  34. package/dist/components/Placeholder/Placeholder.d.ts +10 -0
  35. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +30 -0
  36. package/dist/components/Radio/Radio.d.ts +43 -0
  37. package/dist/components/RadioGroup/RadioGroup.d.ts +51 -0
  38. package/dist/components/SearchBar/SearchBar.d.ts +61 -0
  39. package/dist/components/Select/Select.d.ts +57 -0
  40. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +39 -0
  41. package/dist/components/SkipNavigation/SkipNavigation.d.ts +17 -0
  42. package/dist/components/Slider/Slider.d.ts +60 -0
  43. package/dist/components/StatusBadge/StatusBadge.d.ts +16 -0
  44. package/dist/components/StructuredContent/StructuredContent.d.ts +28 -0
  45. package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
  46. package/dist/components/Table/Table.d.ts +29 -0
  47. package/dist/components/Tabs/Tabs.d.ts +26 -0
  48. package/dist/components/Template/Template.d.ts +126 -0
  49. package/dist/components/Text/Text.d.ts +16 -0
  50. package/dist/components/TextInput/TextInput.d.ts +78 -0
  51. package/dist/components/Toggle/Toggle.d.ts +42 -0
  52. package/dist/components/VideoPlayer/VideoPlayer.d.ts +38 -0
  53. package/dist/design-system-react-components.cjs.development.js +11305 -0
  54. package/dist/design-system-react-components.cjs.development.js.map +1 -0
  55. package/dist/design-system-react-components.cjs.production.min.js +2 -0
  56. package/dist/design-system-react-components.cjs.production.min.js.map +1 -0
  57. package/dist/design-system-react-components.esm.js +11150 -0
  58. package/dist/design-system-react-components.esm.js.map +1 -0
  59. package/dist/helpers/types.d.ts +1 -0
  60. package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
  61. package/dist/hooks/useCarouselStyles.d.ts +17 -0
  62. package/dist/hooks/useNYPLTheme.d.ts +66 -0
  63. package/dist/hooks/useWindowSize.d.ts +10 -0
  64. package/dist/index.d.ts +48 -0
  65. package/dist/index.js +8 -0
  66. package/dist/resources.scss +386 -0
  67. package/dist/styles.css +3 -0
  68. package/dist/theme/components/accordion.d.ts +20 -0
  69. package/dist/theme/components/breadcrumb.d.ts +105 -0
  70. package/dist/theme/components/button.d.ts +120 -0
  71. package/dist/theme/components/buttonGroup.d.ts +11 -0
  72. package/dist/theme/components/card.d.ts +381 -0
  73. package/dist/theme/components/checkbox.d.ts +95 -0
  74. package/dist/theme/components/checkboxGroup.d.ts +14 -0
  75. package/dist/theme/components/componentWrapper.d.ts +12 -0
  76. package/dist/theme/components/customTable.d.ts +136 -0
  77. package/dist/theme/components/datePicker.d.ts +16 -0
  78. package/dist/theme/components/fieldset.d.ts +20 -0
  79. package/dist/theme/components/global.d.ts +73 -0
  80. package/dist/theme/components/globalMixins.d.ts +23 -0
  81. package/dist/theme/components/heading.d.ts +160 -0
  82. package/dist/theme/components/helperErrorText.d.ts +12 -0
  83. package/dist/theme/components/hero.d.ts +499 -0
  84. package/dist/theme/components/horizontalRule.d.ts +15 -0
  85. package/dist/theme/components/icon.d.ts +47755 -0
  86. package/dist/theme/components/image.d.ts +590 -0
  87. package/dist/theme/components/label.d.ts +18 -0
  88. package/dist/theme/components/link.d.ts +62 -0
  89. package/dist/theme/components/list.d.ts +182 -0
  90. package/dist/theme/components/logo.d.ts +477 -0
  91. package/dist/theme/components/notification.d.ts +95 -0
  92. package/dist/theme/components/pagination.d.ts +16 -0
  93. package/dist/theme/components/progressIndicator.d.ts +52 -0
  94. package/dist/theme/components/radio.d.ts +99 -0
  95. package/dist/theme/components/radioGroup.d.ts +14 -0
  96. package/dist/theme/components/searchBar.d.ts +18 -0
  97. package/dist/theme/components/select.d.ts +87 -0
  98. package/dist/theme/components/skeletonLoader.d.ts +102 -0
  99. package/dist/theme/components/skipNavigation.d.ts +25 -0
  100. package/dist/theme/components/slider.d.ts +59 -0
  101. package/dist/theme/components/statusBadge.d.ts +25 -0
  102. package/dist/theme/components/structuredContent.d.ts +226 -0
  103. package/dist/theme/components/tabs.d.ts +136 -0
  104. package/dist/theme/components/template.d.ts +105 -0
  105. package/dist/theme/components/text.d.ts +26 -0
  106. package/dist/theme/components/textInput.d.ts +124 -0
  107. package/dist/theme/components/toggle.d.ts +92 -0
  108. package/dist/theme/components/videoPlayer.d.ts +40 -0
  109. package/dist/theme/foundations/breakpoints.d.ts +23 -0
  110. package/dist/theme/foundations/colors.d.ts +3 -0
  111. package/dist/theme/foundations/global.d.ts +58 -0
  112. package/dist/theme/foundations/radii.d.ts +6 -0
  113. package/dist/theme/foundations/shadows.d.ts +4 -0
  114. package/dist/theme/foundations/spacing.d.ts +82 -0
  115. package/dist/theme/foundations/typography.d.ts +8 -0
  116. package/dist/theme/index.d.ts +20 -0
  117. package/dist/theme/provider.d.ts +3 -0
  118. package/dist/theme/types.d.ts +1 -0
  119. package/dist/utils/componentCategories.d.ts +1 -0
  120. package/dist/utils/interfaces.d.ts +5 -0
  121. package/dist/utils/utils.d.ts +31 -0
  122. package/package.json +133 -20
  123. package/src/__tests__/fileMock.ts +6 -0
  124. package/src/__tests__/setup.ts +27 -0
  125. package/src/__tests__/utils/utils.test.ts +18 -0
  126. package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +42 -0
  127. package/src/components/Accordion/Accordion.stories.mdx +333 -0
  128. package/src/components/Accordion/Accordion.test.tsx +237 -0
  129. package/src/components/Accordion/Accordion.tsx +137 -0
  130. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +734 -0
  131. package/src/components/Autosuggest/Autosuggest.stories.mdx +75 -0
  132. package/src/components/Autosuggest/Autosuggest.stories.tsx +211 -0
  133. package/src/components/Autosuggest/_Autosuggest.scss +51 -0
  134. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +231 -0
  135. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +144 -0
  136. package/src/components/Breadcrumbs/Breadcrumbs.tsx +98 -0
  137. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +695 -0
  138. package/src/components/Button/Button.stories.mdx +320 -0
  139. package/src/components/Button/Button.test.tsx +184 -0
  140. package/src/components/Button/Button.tsx +95 -0
  141. package/src/components/Button/__snapshots__/Button.test.tsx.snap +106 -0
  142. package/src/components/ButtonGroup/ButtonGroup.stories.mdx +178 -0
  143. package/src/components/ButtonGroup/ButtonGroup.test.tsx +141 -0
  144. package/src/components/ButtonGroup/ButtonGroup.tsx +100 -0
  145. package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +117 -0
  146. package/src/components/Card/Card.stories.mdx +1041 -0
  147. package/src/components/Card/Card.test.tsx +388 -0
  148. package/src/components/Card/Card.tsx +346 -0
  149. package/src/components/Card/__snapshots__/Card.test.tsx.snap +568 -0
  150. package/src/components/Chakra/Box.stories.mdx +52 -0
  151. package/src/components/Chakra/Center.stories.mdx +96 -0
  152. package/src/components/Chakra/Flex.stories.mdx +111 -0
  153. package/src/components/Chakra/Grid.stories.mdx +89 -0
  154. package/src/components/Chakra/Stack.stories.mdx +109 -0
  155. package/src/components/Checkbox/Checkbox.stories.mdx +243 -0
  156. package/src/components/Checkbox/Checkbox.test.tsx +350 -0
  157. package/src/components/Checkbox/Checkbox.tsx +152 -0
  158. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +661 -0
  159. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +462 -0
  160. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +492 -0
  161. package/src/components/CheckboxGroup/CheckboxGroup.tsx +173 -0
  162. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1842 -0
  163. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +163 -0
  164. package/src/components/ComponentWrapper/ComponentWrapper.tsx +76 -0
  165. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +103 -0
  166. package/src/components/DatePicker/DatePicker.stories.mdx +452 -0
  167. package/src/components/DatePicker/DatePicker.test.tsx +940 -0
  168. package/src/components/DatePicker/DatePicker.tsx +450 -0
  169. package/src/components/DatePicker/_DatePicker.scss +100 -0
  170. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +908 -0
  171. package/src/components/Fieldset/Fieldset.stories.mdx +96 -0
  172. package/src/components/Fieldset/Fieldset.test.tsx +155 -0
  173. package/src/components/Fieldset/Fieldset.tsx +55 -0
  174. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +89 -0
  175. package/src/components/Form/Form.stories.mdx +426 -0
  176. package/src/components/Form/Form.test.tsx +234 -0
  177. package/src/components/Form/Form.tsx +124 -0
  178. package/src/components/Form/__snapshots__/Form.test.tsx.snap +115 -0
  179. package/src/components/Grid/SimpleGrid.stories.mdx +336 -0
  180. package/src/components/Grid/SimpleGrid.test.tsx +79 -0
  181. package/src/components/Grid/SimpleGrid.tsx +49 -0
  182. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +23 -0
  183. package/src/components/Heading/Heading.stories.mdx +187 -0
  184. package/src/components/Heading/Heading.test.tsx +171 -0
  185. package/src/components/Heading/Heading.tsx +104 -0
  186. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +90 -0
  187. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +172 -0
  188. package/src/components/HelperErrorText/HelperErrorText.test.tsx +114 -0
  189. package/src/components/HelperErrorText/HelperErrorText.tsx +62 -0
  190. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +93 -0
  191. package/src/components/Hero/Hero.stories.mdx +378 -0
  192. package/src/components/Hero/Hero.test.tsx +611 -0
  193. package/src/components/Hero/Hero.tsx +203 -0
  194. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +379 -0
  195. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +73 -0
  196. package/src/components/HorizontalRule/HorizontalRule.test.tsx +54 -0
  197. package/src/components/HorizontalRule/HorizontalRule.tsx +27 -0
  198. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +44 -0
  199. package/src/components/Icons/Icon.stories.mdx +413 -0
  200. package/src/components/Icons/Icon.test.tsx +120 -0
  201. package/src/components/Icons/Icon.tsx +187 -0
  202. package/src/components/Icons/IconSvgs.tsx +64 -0
  203. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
  204. package/src/components/Image/Image.stories.mdx +332 -0
  205. package/src/components/Image/Image.test.tsx +155 -0
  206. package/src/components/Image/Image.tsx +171 -0
  207. package/src/components/Image/__snapshots__/Image.test.tsx.snap +269 -0
  208. package/src/components/Label/Label.stories.mdx +100 -0
  209. package/src/components/Label/Label.test.tsx +116 -0
  210. package/src/components/Label/Label.tsx +55 -0
  211. package/src/components/Label/__snapshots__/Label.test.tsx.snap +45 -0
  212. package/src/components/Link/Link.stories.mdx +249 -0
  213. package/src/components/Link/Link.test.tsx +224 -0
  214. package/src/components/Link/Link.tsx +178 -0
  215. package/src/components/Link/__snapshots__/Link.test.tsx.snap +286 -0
  216. package/src/components/List/List.stories.mdx +393 -0
  217. package/src/components/List/List.test.tsx +265 -0
  218. package/src/components/List/List.tsx +156 -0
  219. package/src/components/List/__snapshots__/List.test.tsx.snap +213 -0
  220. package/src/components/Logo/Logo.stories.mdx +295 -0
  221. package/src/components/Logo/Logo.test.tsx +116 -0
  222. package/src/components/Logo/Logo.tsx +151 -0
  223. package/src/components/Logo/LogoSvgs.tsx +90 -0
  224. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +142 -0
  225. package/src/components/Modal/Modal.stories.mdx +294 -0
  226. package/src/components/Modal/Modal.test.tsx +157 -0
  227. package/src/components/Modal/Modal.tsx +154 -0
  228. package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +25 -0
  229. package/src/components/Notification/Notification.stories.mdx +358 -0
  230. package/src/components/Notification/Notification.test.tsx +279 -0
  231. package/src/components/Notification/Notification.tsx +224 -0
  232. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +525 -0
  233. package/src/components/Pagination/Pagination.stories.mdx +184 -0
  234. package/src/components/Pagination/Pagination.test.tsx +419 -0
  235. package/src/components/Pagination/Pagination.tsx +269 -0
  236. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +544 -0
  237. package/src/components/Placeholder/Placeholder.tsx +19 -0
  238. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +360 -0
  239. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +298 -0
  240. package/src/components/ProgressIndicator/ProgressIndicator.tsx +132 -0
  241. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +434 -0
  242. package/src/components/Radio/Radio.stories.mdx +216 -0
  243. package/src/components/Radio/Radio.test.tsx +247 -0
  244. package/src/components/Radio/Radio.tsx +119 -0
  245. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +451 -0
  246. package/src/components/RadioGroup/RadioGroup.stories.mdx +479 -0
  247. package/src/components/RadioGroup/RadioGroup.test.tsx +471 -0
  248. package/src/components/RadioGroup/RadioGroup.tsx +171 -0
  249. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1550 -0
  250. package/src/components/SearchBar/SearchBar.stories.mdx +518 -0
  251. package/src/components/SearchBar/SearchBar.test.tsx +435 -0
  252. package/src/components/SearchBar/SearchBar.tsx +210 -0
  253. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1049 -0
  254. package/src/components/Select/Select.stories.mdx +439 -0
  255. package/src/components/Select/Select.test.tsx +358 -0
  256. package/src/components/Select/Select.tsx +183 -0
  257. package/src/components/Select/__snapshots__/Select.test.tsx.snap +895 -0
  258. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +142 -0
  259. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +116 -0
  260. package/src/components/SkeletonLoader/SkeletonLoader.tsx +123 -0
  261. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +898 -0
  262. package/src/components/SkipNavigation/SkipNavigation.stories.mdx +90 -0
  263. package/src/components/SkipNavigation/SkipNavigation.test.tsx +63 -0
  264. package/src/components/SkipNavigation/SkipNavigation.tsx +51 -0
  265. package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +130 -0
  266. package/src/components/Slider/Slider.stories.mdx +628 -0
  267. package/src/components/Slider/Slider.test.tsx +736 -0
  268. package/src/components/Slider/Slider.tsx +322 -0
  269. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +2186 -0
  270. package/src/components/StatusBadge/StatusBadge.stories.mdx +109 -0
  271. package/src/components/StatusBadge/StatusBadge.test.tsx +70 -0
  272. package/src/components/StatusBadge/StatusBadge.tsx +35 -0
  273. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +47 -0
  274. package/src/components/StructuredContent/StructuredContent.stories.mdx +567 -0
  275. package/src/components/StructuredContent/StructuredContent.test.tsx +435 -0
  276. package/src/components/StructuredContent/StructuredContent.tsx +139 -0
  277. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +368 -0
  278. package/src/components/StyleGuide/Bidirectionality.stories.mdx +206 -0
  279. package/src/components/StyleGuide/Breakpoints.stories.mdx +55 -0
  280. package/src/components/StyleGuide/Buttons.stories.mdx +194 -0
  281. package/src/components/StyleGuide/ColorCard.tsx +43 -0
  282. package/src/components/StyleGuide/Colors.stories.mdx +201 -0
  283. package/src/components/StyleGuide/DesignTokens.stories.mdx +193 -0
  284. package/src/components/StyleGuide/Forms.stories.mdx +94 -0
  285. package/src/components/StyleGuide/Iconography.stories.mdx +142 -0
  286. package/src/components/StyleGuide/Spacing.stories.mdx +116 -0
  287. package/src/components/StyleGuide/Typography.stories.mdx +419 -0
  288. package/src/components/Table/Table.stories.mdx +272 -0
  289. package/src/components/Table/Table.test.tsx +241 -0
  290. package/src/components/Table/Table.tsx +152 -0
  291. package/src/components/Table/__snapshots__/Table.test.tsx.snap +1703 -0
  292. package/src/components/Tabs/Tabs.stories.mdx +338 -0
  293. package/src/components/Tabs/Tabs.test.tsx +298 -0
  294. package/src/components/Tabs/Tabs.tsx +264 -0
  295. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +584 -0
  296. package/src/components/Template/Template.stories.mdx +695 -0
  297. package/src/components/Template/Template.test.tsx +309 -0
  298. package/src/components/Template/Template.tsx +326 -0
  299. package/src/components/Template/__snapshots__/Template.test.tsx.snap +342 -0
  300. package/src/components/Text/Text.stories.mdx +103 -0
  301. package/src/components/Text/Text.test.tsx +63 -0
  302. package/src/components/Text/Text.tsx +50 -0
  303. package/src/components/Text/__snapshots__/Text.test.tsx.snap +50 -0
  304. package/src/components/TextInput/TextInput.stories.mdx +268 -0
  305. package/src/components/TextInput/TextInput.test.tsx +451 -0
  306. package/src/components/TextInput/TextInput.tsx +240 -0
  307. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +274 -0
  308. package/src/components/Toggle/Toggle.stories.mdx +237 -0
  309. package/src/components/Toggle/Toggle.test.tsx +170 -0
  310. package/src/components/Toggle/Toggle.tsx +128 -0
  311. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +470 -0
  312. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +212 -0
  313. package/src/components/VideoPlayer/VideoPlayer.test.tsx +308 -0
  314. package/src/components/VideoPlayer/VideoPlayer.tsx +188 -0
  315. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +192 -0
  316. package/src/docs/Chakra.stories.mdx +563 -0
  317. package/src/docs/Welcome.stories.mdx +148 -0
  318. package/src/helpers/types.ts +1 -0
  319. package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
  320. package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
  321. package/src/hooks/useCarouselStyles.stories.mdx +30 -0
  322. package/src/hooks/useCarouselStyles.ts +35 -0
  323. package/src/hooks/useNYPLTheme.stories.mdx +98 -0
  324. package/src/hooks/useNYPLTheme.ts +91 -0
  325. package/src/hooks/useWindowSize.stories.mdx +23 -0
  326. package/src/hooks/useWindowSize.ts +40 -0
  327. package/src/index.ts +136 -0
  328. package/src/resources.scss +6 -0
  329. package/src/styles/base/_01-breakpoints.scss +27 -0
  330. package/src/styles/base/_02-mixins.scss +103 -0
  331. package/src/styles/base/_place-holder.scss +33 -0
  332. package/src/styles/space/_space-inline.scss +79 -0
  333. package/src/styles/space/_space-inset.scss +57 -0
  334. package/src/styles/space/_space-stack.scss +116 -0
  335. package/src/styles.scss +23 -0
  336. package/src/theme/components/accordion.ts +25 -0
  337. package/src/theme/components/breadcrumb.ts +94 -0
  338. package/src/theme/components/button.ts +133 -0
  339. package/src/theme/components/buttonGroup.ts +10 -0
  340. package/src/theme/components/card.ts +237 -0
  341. package/src/theme/components/checkbox.ts +110 -0
  342. package/src/theme/components/checkboxGroup.ts +10 -0
  343. package/src/theme/components/componentWrapper.ts +14 -0
  344. package/src/theme/components/customTable.ts +77 -0
  345. package/src/theme/components/datePicker.ts +17 -0
  346. package/src/theme/components/fieldset.ts +23 -0
  347. package/src/theme/components/global.ts +91 -0
  348. package/src/theme/components/globalMixins.ts +24 -0
  349. package/src/theme/components/heading.ts +79 -0
  350. package/src/theme/components/helperErrorText.ts +14 -0
  351. package/src/theme/components/hero.ts +238 -0
  352. package/src/theme/components/horizontalRule.ts +17 -0
  353. package/src/theme/components/icon.ts +88 -0
  354. package/src/theme/components/image.ts +136 -0
  355. package/src/theme/components/label.ts +15 -0
  356. package/src/theme/components/link.ts +63 -0
  357. package/src/theme/components/list.ts +88 -0
  358. package/src/theme/components/logo.ts +58 -0
  359. package/src/theme/components/notification.ts +132 -0
  360. package/src/theme/components/pagination.ts +17 -0
  361. package/src/theme/components/progressIndicator.ts +67 -0
  362. package/src/theme/components/radio.ts +103 -0
  363. package/src/theme/components/radioGroup.ts +10 -0
  364. package/src/theme/components/searchBar.ts +19 -0
  365. package/src/theme/components/select.ts +72 -0
  366. package/src/theme/components/skeletonLoader.ts +113 -0
  367. package/src/theme/components/skipNavigation.ts +29 -0
  368. package/src/theme/components/slider.ts +95 -0
  369. package/src/theme/components/statusBadge.ts +26 -0
  370. package/src/theme/components/structuredContent.ts +149 -0
  371. package/src/theme/components/tabs.ts +109 -0
  372. package/src/theme/components/template.ts +114 -0
  373. package/src/theme/components/text.ts +38 -0
  374. package/src/theme/components/textInput.ts +65 -0
  375. package/src/theme/components/toggle.ts +109 -0
  376. package/src/theme/components/videoPlayer.ts +47 -0
  377. package/src/theme/foundations/breakpoints.ts +24 -0
  378. package/src/theme/foundations/colors.ts +212 -0
  379. package/src/theme/foundations/global.ts +43 -0
  380. package/src/theme/foundations/radii.ts +7 -0
  381. package/src/theme/foundations/shadows.ts +5 -0
  382. package/src/theme/foundations/spacing.ts +136 -0
  383. package/src/theme/foundations/typography.ts +107 -0
  384. package/src/theme/index.ts +131 -0
  385. package/src/theme/provider.tsx +9 -0
  386. package/src/theme/types.ts +1 -0
  387. package/src/utils/componentCategories.ts +152 -0
  388. package/src/utils/interfaces.ts +5 -0
  389. package/src/utils/utils.ts +84 -0
  390. package/lib/components/Button/Button.d.ts +0 -17
  391. package/lib/components/Button/Button.js +0 -42
  392. package/lib/index.d.ts +0 -1
  393. package/lib/index.js +0 -6
  394. package/lib/stories/0-Welcome.stories.js +0 -19
  395. package/lib/stories/1-Button.stories.d.ts +0 -6
  396. package/lib/stories/1-Button.stories.js +0 -20
@@ -0,0 +1,241 @@
1
+ import * as React from "react";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { axe } from "jest-axe";
4
+ import renderer from "react-test-renderer";
5
+
6
+ import Image from "../Image/Image";
7
+ import Table from "./Table";
8
+
9
+ export const columnHeaders = [
10
+ "First Name",
11
+ "Last Name",
12
+ "Nick Name",
13
+ "Address1",
14
+ "City",
15
+ "Zipcode",
16
+ "State",
17
+ ];
18
+ export const columnHeadersUneven = [
19
+ "First Name",
20
+ "Last Name",
21
+ "Nick Name",
22
+ "Address1",
23
+ "City",
24
+ "Zipcode",
25
+ ];
26
+ export const tableData = [
27
+ ["Tom", "Nook", "Tanukichi", "Main Street", "New York", "23458", "NY"],
28
+ ["Isabelle", "-", "Shizue", "Walnut Street", "New York", "23458", "NY"],
29
+ ["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "98765", "NY"],
30
+ [
31
+ "Sonny",
32
+ "Resetti",
33
+ "Risetto san",
34
+ "Village Road",
35
+ "New York",
36
+ "09873",
37
+ "NY",
38
+ ],
39
+ ];
40
+ export const tableDataUneven = [
41
+ ["Tom", "Nook", "Tanukichi", "Main Street", "New York", "23458", "NY"],
42
+ ["Isabelle", "-", "Shizue", "Walnut Street", "New York", "23458", "NY"],
43
+ ["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "98765", "NY"],
44
+ ["Sonny", "Resetti", "Risetto san", "Village Road", "New York", "09873"],
45
+ ];
46
+ export const characterHeaders = ["First Name", "Last Name", "Avatar"];
47
+ export const charactersData = [
48
+ [
49
+ "Tom",
50
+ "Nook",
51
+ <Image
52
+ alt="Tom Nook"
53
+ key="tom"
54
+ size="small"
55
+ src="https://play.nintendo.com/images/AC_Tom_FRYtwIN.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
56
+ />,
57
+ ],
58
+ [
59
+ "Isabelle",
60
+ "-",
61
+ ,
62
+ <Image
63
+ alt="Isabelle"
64
+ key="isa"
65
+ size="small"
66
+ src="https://play.nintendo.com/images/AC_Isabelle_7XU6aGu.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
67
+ />,
68
+ ],
69
+ [
70
+ "K.K.",
71
+ "Slider",
72
+ ,
73
+ <Image
74
+ alt="K.K Slider"
75
+ key="kk"
76
+ size="small"
77
+ src="https://play.nintendo.com/images/AC_KK_jh4yj5t.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
78
+ />,
79
+ ],
80
+ ];
81
+
82
+ describe("Table Accessibility", () => {
83
+ it("passes axe accessibility test with the columnHeaders and tableData prop", async () => {
84
+ const { container } = render(
85
+ <Table columnHeaders={columnHeaders} tableData={tableData} />
86
+ );
87
+ expect(await axe(container)).toHaveNoViolations();
88
+ });
89
+
90
+ it("passes axe accessibility test with tableData prop", async () => {
91
+ const { container } = render(<Table tableData={tableData} />);
92
+ expect(await axe(container)).toHaveNoViolations();
93
+ });
94
+ });
95
+
96
+ describe("Table", () => {
97
+ it("renders a caption", () => {
98
+ render(<Table tableData={tableData} titleText="this is the caption" />);
99
+ expect(screen.getByText("this is the caption")).toBeInTheDocument();
100
+ });
101
+
102
+ it("renders a table header", () => {
103
+ render(
104
+ <Table
105
+ columnHeaders={columnHeaders}
106
+ tableData={tableData}
107
+ titleText="this is the caption"
108
+ />
109
+ );
110
+
111
+ expect(screen.getByText("First Name")).toBeInTheDocument();
112
+ expect(screen.getByText("Last Name")).toBeInTheDocument();
113
+ expect(screen.getByText("Nick Name")).toBeInTheDocument();
114
+ });
115
+
116
+ it("renders table data", () => {
117
+ render(<Table tableData={tableData} columnHeaders={columnHeaders} />);
118
+
119
+ expect(screen.getByText("Tom")).toBeInTheDocument();
120
+ expect(screen.getByText("Nook")).toBeInTheDocument();
121
+ expect(screen.getByText("Village Road")).toBeInTheDocument();
122
+ });
123
+
124
+ it("logs a warning when the `tableData` prop is an empty array", async () => {
125
+ const warn = jest.spyOn(console, "warn");
126
+ render(<Table tableData={[]} />);
127
+ expect(warn).toHaveBeenCalledWith(
128
+ "NYPL Reservoir Table: Data in the `tableData` prop must be a two dimensional array."
129
+ );
130
+ });
131
+
132
+ it("logs a warning when the columns in each `tableData` row are not identical", async () => {
133
+ const warn = jest.spyOn(console, "warn");
134
+ render(<Table tableData={tableDataUneven} columnHeaders={columnHeaders} />);
135
+ expect(warn).toHaveBeenCalledWith(
136
+ "NYPL Reservoir Table: The number of columns in each row of the data table are not identical. " +
137
+ "The `Table` component may not render properly."
138
+ );
139
+ });
140
+
141
+ it("logs a warning when the column headers `columnHeaders` is not equal the number of columns in the data table", async () => {
142
+ const warn = jest.spyOn(console, "warn");
143
+ render(<Table tableData={tableData} columnHeaders={columnHeadersUneven} />);
144
+ expect(warn).toHaveBeenCalledWith(
145
+ "NYPL Reservoir Table: The number of column headers in the `columnHeaders` prop is not equal " +
146
+ "to the number of columns in the data table. " +
147
+ "The `Table` component may not render properly."
148
+ );
149
+ });
150
+
151
+ it("renders JSX elements from the data array", () => {
152
+ render(
153
+ <Table
154
+ columnHeaders={characterHeaders}
155
+ id="jsx-example"
156
+ tableData={charactersData}
157
+ />
158
+ );
159
+ expect(screen.getAllByRole("img")).toHaveLength(3);
160
+ });
161
+
162
+ it("renders the UI snapshot correctly", () => {
163
+ const basic = renderer
164
+ .create(<Table id="basic" tableData={tableData} />)
165
+ .toJSON();
166
+ const withCaption = renderer
167
+ .create(
168
+ <Table
169
+ id="withCaption"
170
+ tableData={tableData}
171
+ titleText="this is the caption"
172
+ />
173
+ )
174
+ .toJSON();
175
+ const withHeaders = renderer
176
+ .create(
177
+ <Table
178
+ columnHeaders={columnHeaders}
179
+ id="withHeaders"
180
+ tableData={tableData}
181
+ titleText="this is the caption"
182
+ />
183
+ )
184
+ .toJSON();
185
+ const withRowHeaders = renderer
186
+ .create(
187
+ <Table
188
+ columnHeaders={columnHeaders}
189
+ id="withHeaders"
190
+ tableData={tableData}
191
+ titleText="this is the caption"
192
+ useRowHeaders
193
+ />
194
+ )
195
+ .toJSON();
196
+ const withCustomHeaderColors = renderer
197
+ .create(
198
+ <Table
199
+ columnHeadersBackgroundColor="var(--nypl-colors-ui-link-primary)"
200
+ columnHeadersTextColor="var(--nypl-colors-ui-white)"
201
+ columnHeaders={columnHeaders}
202
+ id="withHeaders"
203
+ tableData={tableData}
204
+ titleText="this is the caption"
205
+ useRowHeaders
206
+ />
207
+ )
208
+ .toJSON();
209
+ const withChakraProps = renderer
210
+ .create(
211
+ <Table
212
+ id="chakra"
213
+ tableData={tableData}
214
+ p="20px"
215
+ color="ui.error.primary"
216
+ />
217
+ )
218
+ .toJSON();
219
+ const withOtherProps = renderer
220
+ .create(<Table id="props" tableData={tableData} data-testid="props" />)
221
+ .toJSON();
222
+ const withJSXData = renderer
223
+ .create(
224
+ <Table
225
+ columnHeaders={characterHeaders}
226
+ id="jsx-example"
227
+ tableData={charactersData}
228
+ />
229
+ )
230
+ .toJSON();
231
+
232
+ expect(basic).toMatchSnapshot();
233
+ expect(withCaption).toMatchSnapshot();
234
+ expect(withHeaders).toMatchSnapshot();
235
+ expect(withRowHeaders).toMatchSnapshot();
236
+ expect(withCustomHeaderColors).toMatchSnapshot();
237
+ expect(withChakraProps).toMatchSnapshot();
238
+ expect(withOtherProps).toMatchSnapshot();
239
+ expect(withJSXData).toMatchSnapshot();
240
+ });
241
+ });
@@ -0,0 +1,152 @@
1
+ import {
2
+ chakra,
3
+ Table as ChakraTable,
4
+ TableCaption as ChakraTableCaption,
5
+ Tbody as ChakraTbody,
6
+ Thead as ChakraTHead,
7
+ Td as ChakraTd,
8
+ Th as ChakraTh,
9
+ Tr as ChakraTr,
10
+ useMultiStyleConfig,
11
+ } from "@chakra-ui/react";
12
+ import * as React from "react";
13
+
14
+ interface CustomColors {
15
+ backgroundColor?: string;
16
+ color?: string;
17
+ }
18
+ export interface TableProps {
19
+ /** Additional class name for the `Table` component. */
20
+ className?: string;
21
+ /** Array of string values used to populate the `Table` column headers. */
22
+ columnHeaders?: string[];
23
+ /** Hex value to set the background color of the column headers. */
24
+ columnHeadersBackgroundColor?: string;
25
+ /** Hex value to set the text color of the column headers. */
26
+ columnHeadersTextColor?: string;
27
+ /** ID that other components can cross reference for accessibility purposes. */
28
+ id?: string;
29
+ /** If true, a border will be displayed between each row in the `Table`
30
+ * component. The default value is false. */
31
+ showRowDividers?: boolean;
32
+ /** Two-dimensional array used to populate the table rows. */
33
+ tableData: (string | JSX.Element)[][];
34
+ /** Displays `Table` title element. */
35
+ titleText?: string;
36
+ /** If true, the first cell of each row in the `Table` component will be
37
+ * visually styled as a header. The default value is false */
38
+ useRowHeaders?: boolean;
39
+ }
40
+
41
+ /**
42
+ * Basic `Table` component used to organize and display tabular data in
43
+ * rows and columns.
44
+ */
45
+ export const Table = chakra((props: React.PropsWithChildren<TableProps>) => {
46
+ const {
47
+ className,
48
+ columnHeaders = [],
49
+ columnHeadersBackgroundColor,
50
+ columnHeadersTextColor,
51
+ id,
52
+ showRowDividers = false,
53
+ tableData,
54
+ titleText,
55
+ useRowHeaders = false,
56
+ ...rest
57
+ } = props;
58
+ const customColors: CustomColors = {};
59
+
60
+ columnHeadersBackgroundColor &&
61
+ (customColors["backgroundColor"] = columnHeadersBackgroundColor);
62
+ columnHeadersTextColor && (customColors["color"] = columnHeadersTextColor);
63
+
64
+ const styles = useMultiStyleConfig("CustomTable", {
65
+ columnHeadersTextColor,
66
+ showRowDividers,
67
+ useRowHeaders,
68
+ });
69
+
70
+ const tableCaption = titleText && (
71
+ <ChakraTableCaption>{titleText}</ChakraTableCaption>
72
+ );
73
+
74
+ const columnHeadersElems = columnHeaders?.length > 0 && (
75
+ <ChakraTHead>
76
+ <ChakraTr>
77
+ {columnHeaders.map((child, key) => (
78
+ <ChakraTh key={key} scope="col" sx={customColors}>
79
+ {child}
80
+ </ChakraTh>
81
+ ))}
82
+ </ChakraTr>
83
+ </ChakraTHead>
84
+ );
85
+
86
+ /**
87
+ * This renders a normal `tbody` DOM element structure if the `tableData`
88
+ * passed is a two-dimensional array. This is to render the appropriate
89
+ * row and column structure for a table.
90
+ */
91
+ const tableBodyElems = () => {
92
+ if (
93
+ !Array.isArray(tableData) ||
94
+ tableData.length <= 0 ||
95
+ tableData[0].constructor !== Array
96
+ ) {
97
+ console.warn(
98
+ "NYPL Reservoir Table: Data in the `tableData` prop must be a two dimensional array."
99
+ );
100
+ return null;
101
+ }
102
+
103
+ for (let i = 1; i < tableData.length; i++) {
104
+ if (tableData[0].length !== tableData[i].length) {
105
+ console.warn(
106
+ "NYPL Reservoir Table: The number of columns in each row of the data table are not identical. " +
107
+ "The `Table` component may not render properly."
108
+ );
109
+ break;
110
+ }
111
+ }
112
+
113
+ return (
114
+ <ChakraTbody>
115
+ {tableData.map((row, index) => (
116
+ <ChakraTr key={index}>
117
+ {row.map((column, key) =>
118
+ key === 0 && useRowHeaders ? (
119
+ <ChakraTh scope="row" key={key}>
120
+ {column}
121
+ </ChakraTh>
122
+ ) : (
123
+ <ChakraTd key={key}>{column}</ChakraTd>
124
+ )
125
+ )}
126
+ </ChakraTr>
127
+ ))}
128
+ </ChakraTbody>
129
+ );
130
+ };
131
+
132
+ for (let j = 0; j < tableData.length; j++) {
133
+ if (columnHeaders.length !== tableData[j].length) {
134
+ console.warn(
135
+ "NYPL Reservoir Table: The number of column headers in the `columnHeaders` prop is not equal " +
136
+ "to the number of columns in the data table. " +
137
+ "The `Table` component may not render properly."
138
+ );
139
+ break;
140
+ }
141
+ }
142
+
143
+ return (
144
+ <ChakraTable id={id} sx={styles} className={className} {...rest}>
145
+ {tableCaption}
146
+ {columnHeadersElems}
147
+ {tableBodyElems()}
148
+ </ChakraTable>
149
+ );
150
+ });
151
+
152
+ export default Table;