@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,419 @@
1
+ import { Canvas, Meta } from "@storybook/addon-docs";
2
+
3
+ import Heading from "../Heading/Heading";
4
+ import List from "../List/List";
5
+ import Text from "../Text/Text";
6
+ import { getCategory } from "../../utils/componentCategories";
7
+ import DSProvider from "../../theme/provider";
8
+
9
+ <Meta title={getCategory("Typography")} />
10
+
11
+ # Typography
12
+
13
+ | Table of Contents |
14
+ | ---------------------------------------------- |
15
+ | 1. [General Information](#general-information) |
16
+ | 2. [Heading Component](#heading-component) |
17
+ | 3. [Text Component](#text-component) |
18
+ | 4. [Font Family](#font-family) |
19
+ | 5. [Font Color](#font-color) |
20
+ | 6. [Font Weight](#font-weight) |
21
+ | 7. [Font Sizes](#font-sizes) |
22
+ | 8. [Text Case](#text-case) |
23
+ | 9. [Character Count](#character-count) |
24
+ | 10. [Figma Reference](#figma-reference) |
25
+
26
+ ## General Information
27
+
28
+ Consuming applications should utilize the Reservoir Design System (DS) standard
29
+ text components as much as possible. In cases where that is not possible, the
30
+ DS exposes CSS variables to assist with formatting text elements.
31
+
32
+ The sizing of all text elements in the Design System is based on `1rem` being
33
+ equal to `16px`.
34
+
35
+ ## Heading Component
36
+
37
+ Use the DS [Heading](/docs/components-typography-styles-heading--heading-props)
38
+ component to render a standard HTML `<h>` tag. The `level` prop can be used to
39
+ set the specific `<h>` tag that you require.
40
+
41
+ <Canvas>
42
+ <DSProvider>
43
+ <Heading level="one">Heading Level 1</Heading>
44
+ <Heading level="two">Heading Level 2</Heading>
45
+ <Heading level="three">Heading Level 3</Heading>
46
+ <Heading level="four">Heading Level 4</Heading>
47
+ </DSProvider>
48
+ </Canvas>
49
+
50
+ #### Heading Display Sizes
51
+
52
+ <DSProvider>
53
+
54
+ Each heading level has a default style and size, but those styles can be overridden
55
+ using the `size` prop. The display sizes are separate from semantic elements and
56
+ may be used to override the default size and styling of the semantic HTML heading
57
+ elements. For example, the `h1` element has the `Primary` style applied by default,
58
+ but a new style can be applied through the `size` prop. Any `size` style can be
59
+ applied to any `Heading` element.
60
+
61
+ <Heading level="one" size="primary">
62
+ Primary Heading
63
+ </Heading>
64
+
65
+ | | Value | JS Theme Object | CSS Variable |
66
+ | --------------- | --------- | ------------------------------- | ------------------------------------------------------ |
67
+ | **Font Size** | `2.25rem` | `fontSize: "heading.primary"` | `font-size: var(--nypl-fontSizes-heading-primary)` |
68
+ | **Font Weight** | `300` | `fontWeight: "heading.primary"` | `font-weight: var(--nypl-fontWeights-heading-primary)` |
69
+ | **Line Height** | `1.1` | n/a | n/a |
70
+
71
+ <Heading level="one" size="secondary">
72
+ Secondary Heading
73
+ </Heading>
74
+
75
+ | | Value | JS Theme Object | CSS Variable |
76
+ | --------------- | --------- | --------------------------------- | -------------------------------------------------------- |
77
+ | **Font Size** | `1.75rem` | `fontSize: "heading.secondary"` | `font-size: var(--nypl-fontSizes-heading-secondary)` |
78
+ | **Font Weight** | `500` | `fontWeight: "heading.secondary"` | `font-weight: var(--nypl-fontWeights-heading-secondary)` |
79
+ | **Line Height** | `1.25` | n/a | n/a |
80
+
81
+ <Heading level="one" size="tertiary">
82
+ Tertiary Heading
83
+ </Heading>
84
+
85
+ | | Value | JS Theme Object | CSS Variable |
86
+ | --------------- | ---------- | -------------------------------- | ------------------------------------------------------- |
87
+ | **Font Size** | `1.375rem` | `fontSize: "heading.tertiary"` | `font-size: var(--nypl-fontSizes-heading-tertiary)` |
88
+ | **Font Weight** | `500` | `fontWeight: "heading.tertiary"` | `font-weight: var(--nypl-fontWeights-heading-tertiary)` |
89
+ | **Line Height** | `1.25` | n/a | n/a |
90
+
91
+ <Heading level="one" size="callout">
92
+ Callout Heading
93
+ </Heading>
94
+
95
+ | | Value | JS Theme Object | CSS Variable |
96
+ | --------------- | --------- | ------------------------------- | ------------------------------------------------------ |
97
+ | **Font Size** | `1.25rem` | `fontSize: "heading.callout"` | `font-size: var(--nypl-fontSizes-heading-callout)` |
98
+ | **Font Weight** | `500` | `fontWeight: "heading.callout"` | `font-weight: var(--nypl-fontWeights-heading-callout)` |
99
+ | **Line Height** | `1.25` | n/a | n/a |
100
+
101
+ </DSProvider>
102
+
103
+ ## Text Component
104
+
105
+ Use the DS [Text](/docs/components-typography-styles-text--text)
106
+ component to render a standard HTML `<p>` tag. The Text component is generally
107
+ used for body copy, captions and secondary captions.
108
+
109
+ <Canvas>
110
+ <DSProvider>
111
+ <Text>
112
+ Curabitur blandit tempus porttitor. Cras mattis consectetur purus sit amet
113
+ fermentum. Nullam id dolor id nibh ultricies vehicula ut id elit. Maecenas
114
+ faucibus mollis interdum. Morbi leo risus, porta ac consectetur ac,
115
+ vestibulum at eros.
116
+ </Text>
117
+ </DSProvider>
118
+ </Canvas>
119
+
120
+ ### Text Display Sizes
121
+
122
+ <DSProvider>
123
+
124
+ The `size` prop can be used to render a specific style from the DS default text styles.
125
+
126
+ - [Typography: Body Styles](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10975%3A52)
127
+ - [Typography: Other Styles](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10975%3A100)
128
+
129
+ <Text size="default">Default</Text>
130
+
131
+ | | Value | JS Theme Object | CSS Variable |
132
+ | --------------- | ------ | ---------------------------- | --------------------------------------------------- |
133
+ | **Font Size** | `1rem` | `fontSize: "text.default"` | `font-size: var(--nypl-fontSizes-text-default)` |
134
+ | **Font Weight** | `300` | `fontWeight: "text.default"` | `font-weight: var(--nypl-fontWeights-text-default)` |
135
+ | **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
136
+
137
+ <Text size="caption">Caption</Text>
138
+
139
+ | | Value | JS Theme Object | CSS Variable |
140
+ | --------------- | ---------- | ---------------------------- | --------------------------------------------------- |
141
+ | **Font Size** | `0.875rem` | `fontSize: "text.caption"` | `font-size: var(--nypl-fontSizes-text-caption)` |
142
+ | **Font Weight** | `300` | `fontWeight: "text.caption"` | `font-weight: var(--nypl-fontWeights-text-caption)` |
143
+ | **Line Height** | `1.25` | `fontWeight: 1.25` | `font-weight: 1.25` |
144
+
145
+ <Text size="tag">Tag</Text>
146
+
147
+ | | Value | JS Theme Object | CSS Variable |
148
+ | --------------- | --------- | ------------------------ | ----------------------------------------------- |
149
+ | **Font Size** | `0.75rem` | `fontSize: "text.tag"` | `font-size: var(--nypl-fontSizes-text-tag)` |
150
+ | **Font Weight** | `400` | `fontWeight: "text.tag"` | `font-weight: var(--nypl-fontWeights-text-tag)` |
151
+ | **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
152
+
153
+ <Text size="mini">Mini</Text>
154
+
155
+ | | Value | JS Theme Object | CSS Variable |
156
+ | --------------- | ---------- | ------------------------- | ------------------------------------------------ |
157
+ | **Font Size** | `0.625rem` | `fontSize: "text.mini"` | `font-size: var(--nypl-fontSizes-text-mini)` |
158
+ | **Font Weight** | `400` | `fontWeight: "text.mini"` | `font-weight: var(--nypl-fontWeights-text-mini)` |
159
+ | **Line Height** | `1.5` | `fontWeight: 1.5` | `font-weight: 1.5` |
160
+
161
+ </DSProvider>
162
+
163
+ ## Font Family
164
+
165
+ With website accessibility in mind, font choices for the DS were made with an
166
+ eye toward clarity and readability. Headings and body content use the
167
+ following font family assignment:
168
+
169
+ <Canvas>
170
+ <DSProvider>
171
+ <Text>system-ui, sans-serif</Text>
172
+ </DSProvider>
173
+ </Canvas>
174
+
175
+ The following CSS variables are available through the DS.
176
+
177
+ ```
178
+ --nypl-fonts-heading: system-ui, sans-serif;
179
+ --nypl-fonts-body: system-ui, sans-serif;
180
+ ```
181
+
182
+ > **RECOMMENDATIONS**
183
+ > When making font selections for project based components outside the DS,
184
+ > sans serif fonts display better on computers and mobile devices. Avoid
185
+ > decorative or overly stylized fonts, as they are often difficult to read even
186
+ > for users without visual impairments or reading Standard Text Default
187
+
188
+ ## Font Color
189
+
190
+ All text within a project, unless specifically noted in mockups, should be
191
+ black on a white background.
192
+
193
+ <Canvas>
194
+ <DSProvider>
195
+ <Heading level="three">Default Heading Color</Heading>
196
+ <Text>
197
+ This paragraph shows the default body text color. Curabitur blandit tempus
198
+ porttitor. Praesent commodo cursus magna, vel scelerisque nisl consectetur
199
+ et. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
200
+ Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget
201
+ lacinia odio sem nec elit.
202
+ </Text>
203
+ </DSProvider>
204
+ </Canvas>
205
+
206
+ In cases where specific colors must be applied to text elements, the DS
207
+ provides CSS variables for the full NYPL color palette. Refer to the
208
+ [Colors](https://nypl.github.io/nypl-design-system/reservoir/v1/?path=/docs/style-guide-colors--page)
209
+ section of the Style Guide for details.
210
+
211
+ ## Font Weight
212
+
213
+ The DS uses four font weights to render text. The default font-weight is 300.
214
+
215
+ <Canvas>
216
+ <>
217
+ <p
218
+ style={{
219
+ fontSize: "var(--nypl-fontSizes-0)",
220
+ fontWeight: "var(--nypl-fontWeights-light)",
221
+ fontFamily: "var(--nypl-fonts-body)",
222
+ }}
223
+ >
224
+ Light / 300 (default)
225
+ </p>
226
+ <p
227
+ style={{
228
+ fontSize: "var(--nypl-fontSizes-0)",
229
+ fontWeight: "var(--nypl-fontWeights-regular)",
230
+ fontFamily: "var(--nypl-fonts-body)",
231
+ }}
232
+ >
233
+ Regular / 400
234
+ </p>
235
+ <p
236
+ style={{
237
+ fontSize: "var(--nypl-fontSizes-0)",
238
+ fontWeight: "var(--nypl-fontWeights-medium)",
239
+ fontFamily: "var(--nypl-fonts-body)",
240
+ }}
241
+ >
242
+ Medium / 500
243
+ </p>
244
+ <p
245
+ style={{
246
+ fontSize: "var(--nypl-fontSizes-0)",
247
+ fontWeight: "var(--nypl-fontWeights-bold)",
248
+ fontFamily: "var(--nypl-fonts-body)",
249
+ }}
250
+ >
251
+ Bold / 700
252
+ </p>
253
+ </>
254
+ </Canvas>
255
+
256
+ The following design tokens are available through the DS.
257
+
258
+ | | Value | JS Theme Object | CSS Variable |
259
+ | ----------- | ----- | ----------------------- | ---------------------------------------------- |
260
+ | **Light** | `300` | `fontWeight: "light"` | `font-weight: var(--nypl-fontWeights-light)` |
261
+ | **Regular** | `400` | `fontWeight: "regular"` | `font-weight: var(--nypl-fontWeights-regular)` |
262
+ | **Medium** | `500` | `fontWeight: "medium"` | `font-weight: var(--nypl-fontWeights-medium)` |
263
+ | **Bold** | `700` | `fontWeight: "bold"` | `font-weight: var(--nypl-fontWeights-bold)` |
264
+
265
+ ## Font Sizes
266
+
267
+ Font sizing is based on a root font size of 16px (1rem = 16px).
268
+
269
+ <Canvas>
270
+ <>
271
+ <p
272
+ style={{
273
+ fontSize: "var(--nypl-fontSizes--3)",
274
+ fontWeight: "var(--nypl-fontWeights-light)",
275
+ }}
276
+ >
277
+ Font size -3
278
+ </p>
279
+ <p
280
+ style={{
281
+ fontSize: "var(--nypl-fontSizes--2)",
282
+ fontWeight: "var(--nypl-fontWeights-light)",
283
+ }}
284
+ >
285
+ Font size -2
286
+ </p>
287
+ <p
288
+ style={{
289
+ fontSize: "var(--nypl-fontSizes--1)",
290
+ fontWeight: "var(--nypl-fontWeights-light)",
291
+ }}
292
+ >
293
+ Font size -1
294
+ </p>
295
+ <p
296
+ style={{
297
+ fontSize: "var(--nypl-fontSizes-0)",
298
+ fontWeight: "var(--nypl-fontWeights-light)",
299
+ }}
300
+ >
301
+ Font size 0 (default)
302
+ </p>
303
+ <p
304
+ style={{
305
+ fontSize: "var(--nypl-fontSizes-1)",
306
+ fontWeight: "var(--nypl-fontWeights-light)",
307
+ }}
308
+ >
309
+ Font size 1
310
+ </p>
311
+ <p
312
+ style={{
313
+ fontSize: "var(--nypl-fontSizes-2)",
314
+ fontWeight: "var(--nypl-fontWeights-light)",
315
+ }}
316
+ >
317
+ Font size 2
318
+ </p>
319
+ <p
320
+ style={{
321
+ fontSize: "var(--nypl-fontSizes-3)",
322
+ fontWeight: "var(--nypl-fontWeights-light)",
323
+ }}
324
+ >
325
+ Font size 3
326
+ </p>
327
+ <p
328
+ style={{
329
+ fontSize: "var(--nypl-fontSizes-4)",
330
+ fontWeight: "var(--nypl-fontWeights-light)",
331
+ }}
332
+ >
333
+ Font size 4
334
+ </p>
335
+ </>
336
+ </Canvas>
337
+
338
+ The following font size design tokens are available through the DS.
339
+
340
+ | | Value | JS Theme Object | CSS Variable |
341
+ | ------ | ---------- | ---------------- | ------------------------------------- |
342
+ | **-3** | `0.625rem` | `fontSize: "-3"` | `font-size: var(--nypl-fontSizes--3)` |
343
+ | **-2** | `0.75rem` | `fontSize: "-2"` | `font-size: var(--nypl-fontSizes--2)` |
344
+ | **-1** | `0.875rem` | `fontSize: "-1"` | `font-size: var(--nypl-fontSizes--1)` |
345
+ | **0** | `1rem` | `fontSize: "0"` | `font-size: var(--nypl-fontSizes-0)` |
346
+ | **1** | `1.125rem` | `fontSize: "1"` | `font-size: var(--nypl-fontSizes-1)` |
347
+ | **2** | `1.375rem` | `fontSize: "2"` | `font-size: var(--nypl-fontSizes-2)` |
348
+ | **3** | `1.75rem` | `fontSize: "3"` | `font-size: var(--nypl-fontSizes-3)` |
349
+ | **4** | `2.25rem` | `fontSize: "4"` | `font-size: var(--nypl-fontSizes-4)` |
350
+
351
+ ## Text Case
352
+
353
+ In general, the New York Public Library uses Title Case for titles. This means
354
+ only using capital letters for the principal words. Articles, conjunctions, and
355
+ prepositions do not get capital letters unless they start the title. For example:
356
+
357
+ <Canvas>
358
+ <DSProvider>
359
+ <List type="ul">
360
+ <li>Snow White and the Seven Dwarfs</li>
361
+ <li>The Last of the Mohicans</li>
362
+ <li>Spooky Books for Kids: The Ultimate Creepy Guide</li>
363
+ <li>The Future Teen Stars of America Live on TikTok</li>
364
+ <li>How Jacqueline Woodson Captures Every Side of Brooklyn</li>
365
+ </List>
366
+ </DSProvider>
367
+ </Canvas>
368
+
369
+ ## Character Count
370
+
371
+ ### Titles
372
+
373
+ 80 characters max, 60 characters recommended
374
+
375
+ <Canvas>
376
+ <DSProvider>
377
+ <Heading level="three">
378
+ This is a Long Title to Show What 58 Characters Looks Like
379
+ </Heading>
380
+ </DSProvider>
381
+ </Canvas>
382
+
383
+ ### Summaries
384
+
385
+ 140 characters max<br />
386
+ Note: Online Exhibitions, with their longer, legacy summaries are an exception
387
+ to this.
388
+
389
+ <Canvas>
390
+ <DSProvider>
391
+ <Text>
392
+ This block of text shows what 140 chacters and spaces looks like. Integer
393
+ posuere erat a ante venenatis dapibus posueret aliquet nullas non.
394
+ </Text>
395
+ </DSProvider>
396
+ </Canvas>
397
+
398
+ ### Page Intros
399
+
400
+ No max character count, 200 characters recommended
401
+
402
+ <Canvas>
403
+ <DSProvider>
404
+ <Text>
405
+ This block of text shows what 200 chacters and spaces looks like. Integer
406
+ posuere erat a ante venenatis dapibus posueret aliquet nullas non. Aenean
407
+ eu leo quam. Pellentesque ornare sem quam venenatis.
408
+ </Text>
409
+ </DSProvider>
410
+ </Canvas>
411
+
412
+ ## Figma Reference
413
+
414
+ For additional spacing information, please refer to the Figma Main file.
415
+
416
+ - [Typeface](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10975%3A0)
417
+ - [Heading Styles](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10975%3A16)
418
+ - [Text Styles (Part 1)](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10975%3A52)
419
+ - [Text Styles (Part 2)](https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10975%3A100)
@@ -0,0 +1,272 @@
1
+ import {
2
+ Meta,
3
+ Story,
4
+ Canvas,
5
+ ArgsTable,
6
+ Description,
7
+ } from "@storybook/addon-docs";
8
+ import { withDesign } from "storybook-addon-designs";
9
+
10
+ import Image from "../Image/Image";
11
+ import Table from "./Table";
12
+ import DSProvider from "../../theme/provider";
13
+ import { getCategory } from "../../utils/componentCategories";
14
+
15
+ <Meta
16
+ title={getCategory("Table")}
17
+ component={Table}
18
+ decorators={[withDesign]}
19
+ parameters={{
20
+ design: {
21
+ type: "figma",
22
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=46780%3A27675",
23
+ },
24
+ jest: ["Table.test.tsx"],
25
+ }}
26
+ argTypes={{
27
+ columnHeaders: { control: { disable: true } },
28
+ columnHeadersBackgroundColor: { control: { type: "color" } },
29
+ columnHeadersTextColor: { control: { type: "color" } },
30
+ id: { control: false },
31
+ tableData: { control: false },
32
+ }}
33
+ />
34
+
35
+ # Table
36
+
37
+ | Component Version | DS Version |
38
+ | ----------------- | ---------- |
39
+ | Added | `0.25.9` |
40
+ | Latest | `1.0.2` |
41
+
42
+ ## Table of Contents
43
+
44
+ - [Overview](#overview)
45
+ - [Component Props](#component-props)
46
+ - [Accessibility](#accessibility)
47
+ - [With a title](#with-a-title)
48
+ - [With Row Dividers](#with-row-dividers)
49
+ - [With Row Headers](#with-row-headers)
50
+ - [With Custom Header Colors](#with-custom-header-colors)
51
+ - [With JSX Elements](#with-jsx-elements)
52
+
53
+ ## Overview
54
+
55
+ <Description of={Table} />
56
+
57
+ export const columnHeaders = [
58
+ "First Name",
59
+ "Last Name",
60
+ "Nick Name",
61
+ "Address1",
62
+ "City",
63
+ "State",
64
+ "Zipcode",
65
+ ];
66
+ export const tableData = [
67
+ ["Tom", "Nook", "Tanukichi", "Main Street", "New York", "NY", "23458"],
68
+ ["Isabelle", "-", "Shizue", "Walnut Street", "New York", "NY", "23458"],
69
+ ["K.K.", "Slider", "Totakeke", "Niper Place", "New York", "NY", "98765"],
70
+ [
71
+ "Sonny",
72
+ "Resetti",
73
+ "Risetto san",
74
+ "Village Road",
75
+ "New York",
76
+ "NY",
77
+ "09873",
78
+ ],
79
+ ];
80
+
81
+ ## Component Props
82
+
83
+ <Canvas withToolbar>
84
+ <Story
85
+ name="Table"
86
+ args={{
87
+ className: undefined,
88
+ columnHeaders,
89
+ columnHeadersBackgroundColor: undefined,
90
+ columnHeadersTextColor: undefined,
91
+ id: undefined,
92
+ showRowDividers: false,
93
+ tableData,
94
+ titleText: undefined,
95
+ useRowHeaders: false,
96
+ }}
97
+ >
98
+ {(args) => <Table {...args}></Table>}
99
+ </Story>
100
+ </Canvas>
101
+
102
+ <ArgsTable story="Table" />
103
+
104
+ ## Accessibility
105
+
106
+ Internally, the HTML for the `Table` element is structured with proper semantic
107
+ use of the `table`, `caption`, `thead`, `tbody`, `tr`, and `td` HTML elements.
108
+ When titles are added through the `titleText` prop, the `caption` element will
109
+ be rendered above the `thead` element.
110
+
111
+ This component should be used to render tabular data only and not used for layout
112
+ purposes.
113
+
114
+ The first row and/or the first cell in a `tr` row can be headers. Each `th`
115
+ header cell has an appropriate scope attribute set to either `scope="col"` or
116
+ `scope="row"`. For example, every `th` cell in a `thead` `tr` row will have
117
+ `scope="col"`. Every `th` cell in a `tbody` `tr` row will have `scope="row"`.
118
+ These headers are visually different from the data. Use the `useRowHeaders`
119
+ prop to render the first cell in every row as a header. If a table has two levels
120
+ of headers (such as two levels of horizontal headers), break the data into two
121
+ separate tables.
122
+
123
+ Resources:
124
+
125
+ - [W3C Tables Tutorial](https://www.w3.org/WAI/tutorials/tables/)
126
+ - [MDN table: The Table element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table)
127
+ - [MDN HTML table advance features and accessibility](https://developer.mozilla.org/en-US/docs/Learn/HTML/Tables/Advanced)
128
+ - [Chakra UI Table](https://chakra-ui.com/docs/components/data-display/table)
129
+
130
+ ## With a title
131
+
132
+ Use the `titleText` prop to add a title to the table.
133
+
134
+ <Canvas>
135
+ <DSProvider>
136
+ <Table
137
+ columnHeaders={columnHeaders}
138
+ id="title-table"
139
+ tableData={tableData}
140
+ titleText="Table with a title"
141
+ />
142
+ </DSProvider>
143
+ </Canvas>
144
+
145
+ ## With Row Dividers
146
+
147
+ Use the `showRowDividers` prop to render a divider between each row.
148
+
149
+ <Canvas>
150
+ <DSProvider>
151
+ <Table
152
+ columnHeaders={columnHeaders}
153
+ id="showRowDividers-table"
154
+ showRowDividers
155
+ tableData={tableData}
156
+ />
157
+ </DSProvider>
158
+ </Canvas>
159
+
160
+ ## With Row Headers
161
+
162
+ Use the `useRowHeaders` prop to render the first cell in every row as a header.
163
+ Notice that they turn bold.
164
+
165
+ <Canvas>
166
+ <DSProvider>
167
+ <Table
168
+ columnHeaders={columnHeaders}
169
+ id="rowHeaders-table"
170
+ tableData={tableData}
171
+ useRowHeaders
172
+ />
173
+ </DSProvider>
174
+ </Canvas>
175
+
176
+ ## With Custom Header Colors
177
+
178
+ It's possible to customize the header colors by using the `columnHeadersBackgroundColor`
179
+ and `columnHeadersTextColor` props. Note that the colors need to have sufficient
180
+ color contrast.
181
+
182
+ <Canvas>
183
+ <DSProvider>
184
+ <Table
185
+ columnHeaders={columnHeaders}
186
+ columnHeadersBackgroundColor="var(--nypl-colors-ui-link-secondary)"
187
+ columnHeadersTextColor="var(--nypl-colors-ui-white)"
188
+ id="rowHeaders-table"
189
+ showRowDividers
190
+ tableData={tableData}
191
+ useRowHeaders
192
+ />
193
+ </DSProvider>
194
+ </Canvas>
195
+
196
+ ## With JSX Elements
197
+
198
+ export const characterHeaders = ["First Name", "Last Name", "Avatar"];
199
+ export const charactersData = [
200
+ [
201
+ "Tom",
202
+ "Nook",
203
+ <Image
204
+ alt="Tom Nook"
205
+ size="small"
206
+ src="https://play.nintendo.com/images/AC_Tom_FRYtwIN.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
207
+ />,
208
+ ],
209
+ [
210
+ "Isabelle",
211
+ "-",
212
+ <Image
213
+ alt="Isabelle"
214
+ size="small"
215
+ src="https://play.nintendo.com/images/AC_Isabelle_7XU6aGu.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
216
+ />,
217
+ ],
218
+ [
219
+ "K.K.",
220
+ "Slider",
221
+ <Image
222
+ alt="K.K Slider"
223
+ size="small"
224
+ src="https://play.nintendo.com/images/AC_KK_jh4yj5t.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
225
+ />,
226
+ ],
227
+ ];
228
+
229
+ It's possible to pass in JSX elements in the `tableData` prop.
230
+
231
+ ```jsx
232
+ export const charactersData = [
233
+ [
234
+ "Tom",
235
+ "Nook",
236
+ <Image
237
+ alt="Tom Nook"
238
+ size="small"
239
+ src="https://play.nintendo.com/images/AC_Tom_FRYtwIN.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
240
+ />,
241
+ ],
242
+ [
243
+ "Isabelle",
244
+ "-",
245
+ <Image
246
+ alt="Isabelle"
247
+ size="small"
248
+ src="https://play.nintendo.com/images/AC_Isabelle_7XU6aGu.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
249
+ />,
250
+ ],
251
+ [
252
+ "K.K.",
253
+ "Slider",
254
+ <Image
255
+ alt="K.K Slider"
256
+ size="small"
257
+ src="https://play.nintendo.com/images/AC_KK_jh4yj5t.17345b1513ac044897cfc243542899dce541e8dc.9afde10b.png"
258
+ />,
259
+ ],
260
+ ];
261
+ ```
262
+
263
+ <Canvas>
264
+ <DSProvider>
265
+ <Table
266
+ columnHeaders={characterHeaders}
267
+ id="jsx-example"
268
+ showRowDividers
269
+ tableData={charactersData}
270
+ />
271
+ </DSProvider>
272
+ </Canvas>