@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,40 @@
1
+ declare const VideoPlayer: {
2
+ baseStyle: {
3
+ inside: {
4
+ height: string;
5
+ overflow: string;
6
+ paddingBottom: string;
7
+ position: string;
8
+ };
9
+ iframe: {
10
+ height: string;
11
+ left: string;
12
+ margin: string;
13
+ position: string;
14
+ top: string;
15
+ width: string;
16
+ };
17
+ helperText: {
18
+ marginBottom: string;
19
+ marginTop: string;
20
+ };
21
+ };
22
+ variants: {
23
+ fourByThree: {
24
+ inside: {
25
+ paddingBottom: string;
26
+ };
27
+ };
28
+ invalid: {
29
+ backgroundColor: string;
30
+ height: string;
31
+ padding: string;
32
+ };
33
+ square: {
34
+ inside: {
35
+ paddingBottom: string;
36
+ };
37
+ };
38
+ };
39
+ };
40
+ export default VideoPlayer;
@@ -0,0 +1,23 @@
1
+ declare const _default: import("@chakra-ui/theme-tools").Breakpoints<{
2
+ sm: string;
3
+ md: string;
4
+ lg: string;
5
+ xl: string;
6
+ "2xl": string;
7
+ }>;
8
+ /**
9
+ * Breakpoints from "src/styles/base/_01-breakpoints.scss"
10
+ * How to use Chakra responsive styles: https://chakra-ui.com/docs/features/responsive-styles
11
+ *
12
+ * Chakra Value | DS Variable | EM/PX value
13
+ * ------------------------------------------------------
14
+ * sm | --nypl-breakpoint-small | 20em/320px
15
+ * md | --nypl-breakpoint-medium | 38em/600px
16
+ * lg | --nypl-breakpoint-large | 60em/960px
17
+ * xl | --nypl-breakpoint-xl | 80em/1280px
18
+ * 2xl | N/A | 96em/1536px
19
+ *
20
+ * @Note Chakra provides a 2xl option while the DS does not. We don't
21
+ * recommend using this value until further notice.
22
+ */
23
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import { Colors } from "@chakra-ui/react";
2
+ declare const colors: Colors;
3
+ export default colors;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * These rules affect all the global elements on the `body` element of the
3
+ * page when the `DSProvider` component is used.
4
+ */
5
+ declare const global: {
6
+ body: {
7
+ boxSizing: string;
8
+ bg: string;
9
+ color: string;
10
+ fontFamily: string;
11
+ fontSize: string;
12
+ fontWeight: string;
13
+ lineHeight: string;
14
+ overflowX: string;
15
+ };
16
+ a: {
17
+ color: string;
18
+ };
19
+ svg: {
20
+ display: string;
21
+ };
22
+ "button, select, input, textarea": {
23
+ "&:not([disabled])": {
24
+ _focus: {
25
+ boxShadow: string;
26
+ outline: string;
27
+ outlineOffset: string;
28
+ outlineColor: string;
29
+ zIndex: string;
30
+ };
31
+ };
32
+ };
33
+ "iframe, [href], [tabindex], [contentEditable='true']": {
34
+ _focus: {
35
+ boxShadow: string;
36
+ outline: string;
37
+ outlineOffset: string;
38
+ outlineColor: string;
39
+ zIndex: string;
40
+ };
41
+ };
42
+ p: {
43
+ margin: string;
44
+ marginBottom: string;
45
+ };
46
+ ul: {
47
+ margin: string;
48
+ marginBottom: string;
49
+ };
50
+ ol: {
51
+ margin: string;
52
+ marginBottom: string;
53
+ };
54
+ "*, *::before, &::after": {
55
+ boxSizing: string;
56
+ };
57
+ };
58
+ export default global;
@@ -0,0 +1,6 @@
1
+ declare const radii: {
2
+ checkbox: string;
3
+ pill: string;
4
+ round: string;
5
+ };
6
+ export default radii;
@@ -0,0 +1,4 @@
1
+ declare const shadows: {
2
+ outline: string;
3
+ };
4
+ export default shadows;
@@ -0,0 +1,82 @@
1
+ export declare const spacing: {
2
+ xxxs: string;
3
+ xxs: string;
4
+ xs: string;
5
+ s: string;
6
+ m: string;
7
+ l: string;
8
+ xl: string;
9
+ xxl: string;
10
+ xxxl: string;
11
+ input: {
12
+ group: {
13
+ button: {
14
+ hstack: string;
15
+ vstack: string;
16
+ };
17
+ default: {
18
+ hstack: string;
19
+ vstack: string;
20
+ };
21
+ };
22
+ };
23
+ inset: {
24
+ default: string;
25
+ extranarrow: string;
26
+ extrawide: string;
27
+ narrow: string;
28
+ wide: string;
29
+ };
30
+ grid: {
31
+ default: string;
32
+ xxs: string;
33
+ xs: string;
34
+ s: string;
35
+ m: string;
36
+ l: string;
37
+ xl: string;
38
+ xxl: string;
39
+ };
40
+ page: {
41
+ hstack: string;
42
+ vstack: string;
43
+ };
44
+ table: {
45
+ column: string;
46
+ row: string;
47
+ };
48
+ px: string;
49
+ 0: string;
50
+ 0.5: string;
51
+ 1: string;
52
+ 1.5: string;
53
+ 2: string;
54
+ 2.5: string;
55
+ 3: string;
56
+ 3.5: string;
57
+ 4: string;
58
+ 5: string;
59
+ 6: string;
60
+ 7: string;
61
+ 8: string;
62
+ 9: string;
63
+ 10: string;
64
+ 12: string;
65
+ 14: string;
66
+ 16: string;
67
+ 20: string;
68
+ 24: string;
69
+ 28: string;
70
+ 32: string;
71
+ 36: string;
72
+ 40: string;
73
+ 44: string;
74
+ 48: string;
75
+ 52: string;
76
+ 56: string;
77
+ 60: string;
78
+ 64: string;
79
+ 72: string;
80
+ 80: string;
81
+ 96: string;
82
+ };
@@ -0,0 +1,8 @@
1
+ import { Dict } from "../types";
2
+ declare type Typography = {
3
+ fonts: Dict;
4
+ fontSizes: Dict;
5
+ fontWeights: Dict;
6
+ };
7
+ declare const typography: Typography;
8
+ export default typography;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * See Chakra default theme for shape of theme object:
3
+ * https://github.com/chakra-ui/chakra-ui/tree/main/packages/theme
4
+ *
5
+ * The following are using the default configuration from Chakra:
6
+ * - z-indices
7
+ * - radii
8
+ * - blur
9
+ * - shadows
10
+ * - borders
11
+ * - transitions
12
+ *
13
+ * Theme extensions exist for:
14
+ * - breakpoints
15
+ * - colors
16
+ * - typography (font, font size, font weight)
17
+ * - spacing
18
+ */
19
+ declare const theme: Record<string, any>;
20
+ export default theme;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ declare const DSProvider: ({ children }: React.PropsWithChildren<{}>) => JSX.Element;
3
+ export default DSProvider;
@@ -0,0 +1 @@
1
+ export declare type Dict<T = any> = Record<string, T>;
@@ -0,0 +1 @@
1
+ export declare const getCategory: (component: string) => string;
@@ -0,0 +1,5 @@
1
+ export interface AriaAttributes {
2
+ "aria-label"?: string;
3
+ "aria-describedby"?: string;
4
+ "aria-labelledby"?: string;
5
+ }
@@ -0,0 +1,31 @@
1
+ import { HelperErrorTextType } from "../components/HelperErrorText/HelperErrorText";
2
+ import { AriaAttributes } from "./interfaces";
3
+ /**
4
+ * range
5
+ * Get an array of values from `start` to `stop` - 1 with an optional
6
+ * `step` between values.
7
+ */
8
+ export declare const range: (start: number, stop: number, step?: number) => number[];
9
+ /**
10
+ * Given a pagination's pageCount, this will return (1) a page number,
11
+ * derived from the current URL, and (2) a function that, when passed to
12
+ * Pagination component, makes the URL change and refreshes the page.
13
+ * @NOTE this is only used for Storybook documentation.
14
+ */
15
+ export declare const getStorybookHrefProps: (pageCount: number) => {
16
+ computedCurrentPage: number;
17
+ getPageHref: (selectedPage: number) => string;
18
+ };
19
+ interface GetAriaAttrsProps {
20
+ footnote: HelperErrorTextType;
21
+ id: string;
22
+ labelText: HelperErrorTextType;
23
+ name: string;
24
+ showLabel: boolean;
25
+ }
26
+ /**
27
+ * Get aria-* attributes for input components. This sets the `aria-label` and
28
+ * `aria-describedby` attributes, based on the label and footnote values.
29
+ */
30
+ export declare const getAriaAttrs: ({ footnote, id, labelText, name, showLabel, }: GetAriaAttrsProps) => AriaAttributes;
31
+ export {};
package/package.json CHANGED
@@ -1,31 +1,144 @@
1
1
  {
2
2
  "name": "@nypl/design-system-react-components",
3
- "version": "1.0.1",
4
- "description": "Design System React Components",
3
+ "version": "1.0.2",
4
+ "description": "NYPL Reservoir Design System React Components",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "https://github.com/NYPL/nypl-design-system/tree/development/src/react-components"
7
+ "url": "https://github.com/NYPL/nypl-design-system/"
8
+ },
9
+ "main": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "module": "dist/design-system-react-components.esm.js",
12
+ "files": [
13
+ "dist",
14
+ "src"
15
+ ],
16
+ "engines": {
17
+ "node": ">10"
8
18
  },
9
- "main": "lib/index.js",
10
- "types": "lib/index.d.ts",
11
19
  "author": "NYPL",
12
20
  "license": "Apache-2.0",
13
- "scripts": {
14
- "prepare": "npm run build",
15
- "prepublishOnly": "npm run lint && npm run test",
16
- "build": "tsc",
17
- "lint": "tslint -c tslint.json 'src/**/*.ts?(x)'",
18
- "test": "mocha --require lib/__tests__/*.js lib/__tests__/**/*.js",
19
- "storybook": "start-storybook -p 6006",
20
- "build-storybook": "build-storybook"
21
- },
22
- "keywords": [],
23
- "devDependencies": {
24
- "tslint": "^6.0.0-beta0",
25
- "typescript": "^3.6.4"
26
- },
27
- "gitHead": "591d619c4b7a6caebc1e8d0410067f03ed374549",
28
21
  "publishConfig": {
29
22
  "access": "public"
23
+ },
24
+ "scripts": {
25
+ "start": "tsdx watch",
26
+ "build": "tsdx build && npm run generate-sass-resources",
27
+ "test": "tsdx test --passWithNoTests",
28
+ "test:watch": "tsdx test - --watch",
29
+ "test:generate-output": "tsdx test --json --outputFile=.jest-test-results.json || true",
30
+ "lint": "tsdx lint",
31
+ "prepare": "npm run build && husky install",
32
+ "size": "size-limit",
33
+ "analyze": "size-limit --why",
34
+ "generate-sass-resources": "gulp",
35
+ "storybook": "start-storybook -p 6006 -s ./.storybook/public",
36
+ "build-storybook:v1": "npm run prebuild:storybook && build-storybook -c .storybook -o ./reservoir/v1",
37
+ "prebuild:storybook": "npm run test:generate-output"
38
+ },
39
+ "lint-staged": {
40
+ "*.{jsx,ts,tsx}": "eslint src --ext=jsx,ts,tsx --cache --fix",
41
+ "*.{js,jsx,ts,tsx,css,md}": "prettier --write"
42
+ },
43
+ "prettier": {
44
+ "printWidth": 80,
45
+ "semi": true,
46
+ "singleQuote": false,
47
+ "trailingComma": "es5"
48
+ },
49
+ "size-limit": [
50
+ {
51
+ "path": "dist/design-system-react-components.cjs.production.min.js",
52
+ "limit": "300 KB"
53
+ },
54
+ {
55
+ "path": "dist/design-system-react-components.esm.js",
56
+ "limit": "300 KB"
57
+ }
58
+ ],
59
+ "dependencies": {
60
+ "@chakra-ui/react": ">=1.8.5 <=1.8.8",
61
+ "@chakra-ui/system": ">=1.11.0 <=1.12.1",
62
+ "@emotion/react": ">=11.4.1",
63
+ "@emotion/styled": ">=11.3.0",
64
+ "framer-motion": "^4.1.17",
65
+ "he": "1.2.0",
66
+ "react-datepicker": "4.1.1",
67
+ "system-font-css": "2.0.2",
68
+ "typescript": "4.3.5"
69
+ },
70
+ "peerDependencies": {
71
+ "@chakra-ui/react": ">=1.8.5 <=1.8.8",
72
+ "@chakra-ui/system": ">=1.11.0 <=1.12.1",
73
+ "@emotion/react": ">=11.4.1",
74
+ "@emotion/styled": ">=11.3.0",
75
+ "framer-motion": "^4.1.17",
76
+ "react": ">=16.13.0",
77
+ "react-dom": ">=16.13.0"
78
+ },
79
+ "devDependencies": {
80
+ "@babel/core": "7.14.6",
81
+ "@chakra-ui/storybook-addon": "1.0.3",
82
+ "@mdx-js/react": "1.6.22",
83
+ "@size-limit/preset-small-lib": "5.0.1",
84
+ "@storybook/addon-a11y": "6.4.19",
85
+ "@storybook/addon-actions": "6.4.19",
86
+ "@storybook/addon-docs": "6.4.19",
87
+ "@storybook/addon-essentials": "6.4.19",
88
+ "@storybook/addon-jest": "6.4.19",
89
+ "@storybook/addon-links": "6.4.19",
90
+ "@storybook/addons": "6.4.19",
91
+ "@storybook/react": "6.4.19",
92
+ "@svgr/rollup": "5.5.0",
93
+ "@svgr/webpack": "5.5.0",
94
+ "@testing-library/jest-dom": "5.14.1",
95
+ "@testing-library/react": "12.0.0",
96
+ "@testing-library/react-hooks": "7.0.2",
97
+ "@testing-library/user-event": "13.2.1",
98
+ "@types/jest": "26.0.20",
99
+ "@types/jest-axe": "3.5.3",
100
+ "@types/jsdom": "12.2.4",
101
+ "@types/node": "12.7.12",
102
+ "@types/react": "16.14.21",
103
+ "@types/testing-library__jest-dom": "5.14.1",
104
+ "@typescript-eslint/eslint-plugin": "4.33.0",
105
+ "@typescript-eslint/parser": "4.33.0",
106
+ "autoprefixer": "9.8.8",
107
+ "babel-loader": "8.2.2",
108
+ "breakpoint-sass": "2.7.1",
109
+ "css-loader": "5.2.7",
110
+ "cssnano": "5.0.7",
111
+ "eslint": "7.31.0",
112
+ "eslint-config-react-app": "6.0.0",
113
+ "eslint-plugin-flowtype": "5.8.2",
114
+ "eslint-plugin-react-hooks": "4.2.0",
115
+ "eslint-plugin-storybook": "^0.5.6",
116
+ "gulp": "4.0.2",
117
+ "gulp-concat": "^2.6.1",
118
+ "husky": "^7.0.4",
119
+ "import-glob-loader": "1.1.0",
120
+ "jest": "27.3.1",
121
+ "jest-axe": "5.0.1",
122
+ "jsdom": "15.2.1",
123
+ "lint-staged": "10.5.4",
124
+ "node-sass-glob-importer": "5.3.2",
125
+ "normalize.css": "8.0.1",
126
+ "prettier": "2.4.1",
127
+ "react": "17.0.2",
128
+ "react-autosuggest": "10.0.2",
129
+ "react-docgen-typescript-loader": "3.7.2",
130
+ "react-dom": "17.0.2",
131
+ "react-test-renderer": "17.0.2",
132
+ "rollup-plugin-postcss": "4.0.0",
133
+ "rollup-plugin-svg": "2.0.0",
134
+ "sass": "1.35.1",
135
+ "sass-loader": "10.0.0",
136
+ "semantic-release-slack-bot": "2.1.0",
137
+ "size-limit": "5.0.1",
138
+ "storybook-addon-designs": "6.2.1",
139
+ "style-loader": "2.0.0",
140
+ "ts-jest": "27.0.4",
141
+ "tsdx": "0.14.1",
142
+ "tslib": "2.3.0"
30
143
  }
31
144
  }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * This file is use to mock asset imports in TSX files, mostly
3
+ * used in our case to mock SVG files.
4
+ */
5
+
6
+ module.exports = "div";
@@ -0,0 +1,27 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
2
+ import "@testing-library/jest-dom";
3
+ // Import this to be able to call this jest-axe assertion for all test files:
4
+ // expect(...).toHaveNoViolations();
5
+ import "jest-axe/extend-expect";
6
+
7
+ const { JSDOM } = require("jsdom");
8
+
9
+ const jsdom = new JSDOM("<!doctype html><html><body></body></html>", {
10
+ url: "http://localhost",
11
+ });
12
+ const { window } = jsdom;
13
+ const exposedProperties = ["window", "navigator", "document"];
14
+
15
+ (global as any).window = window;
16
+ (global as any).document = window.document;
17
+ Object.keys((document as Document).defaultView).forEach((property) => {
18
+ if (typeof (global as any)[property] === "undefined") {
19
+ exposedProperties.push(property);
20
+ (global as any)[property] = (document as any).defaultView[property];
21
+ }
22
+ });
23
+
24
+ // We expect an error to be thrown and we do catch, but it still gets
25
+ // logged and we don't want to see expected errors while we test.
26
+ jest.spyOn(global.console, "error").mockImplementation(() => jest.fn());
27
+ jest.spyOn(global.console, "warn").mockImplementation(() => jest.fn());
@@ -0,0 +1,18 @@
1
+ import { range } from "../../utils/utils";
2
+
3
+ describe("range", () => {
4
+ it("returns an array of values not including the stop argument", () => {
5
+ expect(range(1, 2)).toEqual([1]);
6
+ expect(range(4, 7)).toEqual([4, 5, 6]);
7
+ expect(range(2, 9)).toEqual([2, 3, 4, 5, 6, 7, 8]);
8
+ });
9
+
10
+ it("returns an array of values skipping by the step argument", () => {
11
+ expect(range(1, 10, 2)).toEqual([1, 3, 5, 7, 9]);
12
+ expect(range(4, 8, 3)).toEqual([4, 7]);
13
+ expect(range(2, 20, 2)).toEqual([2, 4, 6, 8, 10, 12, 14, 16, 18]);
14
+ expect(range(2, 20, 4)).toEqual([2, 6, 10, 14, 18]);
15
+ expect(range(2, 6, 2)).toEqual([2, 4]);
16
+ expect(range(2, 20, 5)).toEqual([2, 7, 12, 17]);
17
+ });
18
+ });
@@ -0,0 +1,42 @@
1
+ import { Meta } from "@storybook/addon-docs";
2
+
3
+ import { getCategory } from "../../utils/componentCategories";
4
+
5
+ <Meta title={getCategory("Skip Navigation")} />
6
+
7
+ # Skip Navigation
8
+
9
+ | Table of Contents |
10
+ | ---------------------------------------------- |
11
+ | 1. [General Information](#general-information) |
12
+ | 2. [Resources](#resources) |
13
+
14
+ ## General Information
15
+
16
+ An application's "skip navigation" is used to skip to the primary or main
17
+ content of a page. This component usually contains one link that is located at
18
+ the top of the page and is visually hidden until a user focuses on the link.
19
+ In the case of NYPL applications, the skip navigation contains two links; the
20
+ first link points to the main content of the page and the second link points to
21
+ accessibility information on [NYPL.org/accessibility](https://nypl.org/accessibility).
22
+ For most digitial applications on the NYPL.org platform, the [NYPL Header](https://github.com/NYPL/dgx-header-component)
23
+ is used and this component already renders a skip navigation area with links.
24
+
25
+ In the Reservoir Design System (DS), the `SkipNavigation` component renders two
26
+ links.
27
+
28
+ The first link points to the `"#mainContent"` anchor which an NYPL page
29
+ is expected to have. The `TemplateAppContainer` component renders as a `main`
30
+ HTML element with a default `id` of `"mainContent"`. While it's possible to
31
+ update the target of the skip link and the id of the `<main>` element, this is
32
+ not recommended. When using the DS' `SkipNavigation` and `TemplateAppContainer`
33
+ components, this accessibility combination is automatically handled. When not
34
+ using the `TemplateAppContainer` component, make sure to render a `main` HTML
35
+ element with an `id` of `"mainContent"`.
36
+
37
+ The second link points to additional accessibility information on [NYPL.org/accessibility](https://nypl.org/accessibility).
38
+
39
+ ## Resources
40
+
41
+ - [WebAim Skip Navigation Link](https://webaim.org/techniques/skipnav/)
42
+ - [A11ymatters Skip Navigation Link](https://www.a11ymatters.com/pattern/skip-link/)