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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/CHANGELOG.md +142 -1
  2. package/README.md +98 -50
  3. package/dist/components/Accordion/Accordion.d.ts +14 -14
  4. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -14
  5. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
  6. package/dist/components/Button/Button.d.ts +13 -8
  7. package/dist/components/Button/ButtonTypes.d.ts +3 -1
  8. package/dist/components/Card/Card.d.ts +36 -52
  9. package/dist/components/Card/CardTypes.d.ts +2 -17
  10. package/dist/components/Checkbox/Checkbox.d.ts +17 -13
  11. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +45 -0
  12. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
  13. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
  14. package/dist/components/DatePicker/DatePicker.d.ts +37 -35
  15. package/dist/components/Fieldset/Fieldset.d.ts +25 -0
  16. package/dist/components/Form/Form.d.ts +13 -8
  17. package/dist/components/Form/FormTypes.d.ts +2 -8
  18. package/dist/components/Grid/GridTypes.d.ts +9 -0
  19. package/dist/components/Grid/SimpleGrid.d.ts +14 -0
  20. package/dist/components/Heading/Heading.d.ts +4 -4
  21. package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
  22. package/dist/components/Hero/Hero.d.ts +19 -14
  23. package/dist/components/Hero/HeroTypes.d.ts +10 -5
  24. package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
  25. package/dist/components/Icons/Icon.d.ts +19 -14
  26. package/dist/components/Icons/IconSvgs.d.ts +11 -0
  27. package/dist/components/Icons/IconTypes.d.ts +89 -64
  28. package/dist/components/Image/Image.d.ts +19 -9
  29. package/dist/components/Image/ImageTypes.d.ts +20 -0
  30. package/dist/components/Label/Label.d.ts +5 -17
  31. package/dist/components/Link/Link.d.ts +12 -12
  32. package/dist/components/List/List.d.ts +19 -14
  33. package/dist/components/Notification/Notification.d.ts +37 -16
  34. package/dist/components/Pagination/Pagination.d.ts +16 -13
  35. package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
  36. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
  37. package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
  38. package/dist/components/Radio/Radio.d.ts +2 -0
  39. package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
  40. package/dist/components/SearchBar/SearchBar.d.ts +45 -27
  41. package/dist/components/Select/Select.d.ts +34 -35
  42. package/dist/components/Select/SelectTypes.d.ts +4 -0
  43. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
  44. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
  45. package/dist/components/Slider/Slider.d.ts +57 -0
  46. package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
  47. package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
  48. package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
  49. package/dist/components/Tabs/Tabs.d.ts +1 -1
  50. package/dist/components/Template/Template.d.ts +91 -0
  51. package/dist/components/Text/Text.d.ts +16 -0
  52. package/dist/components/Text/TextTypes.d.ts +6 -0
  53. package/dist/components/TextInput/TextInput.d.ts +44 -31
  54. package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
  55. package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
  56. package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
  57. package/dist/design-system-react-components.cjs.development.js +6473 -2630
  58. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  59. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  60. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  61. package/dist/design-system-react-components.esm.js +6463 -2631
  62. package/dist/design-system-react-components.esm.js.map +1 -1
  63. package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
  64. package/dist/hooks/useCarouselStyles.d.ts +16 -0
  65. package/dist/hooks/useNYPLTheme.d.ts +54 -0
  66. package/dist/hooks/useWindowSize.d.ts +10 -0
  67. package/dist/index.d.ts +19 -7
  68. package/dist/resources.scss +180 -170
  69. package/dist/styles.css +1 -1
  70. package/dist/theme/components/accordion.d.ts +25 -0
  71. package/dist/theme/components/breadcrumb.d.ts +90 -0
  72. package/dist/theme/components/button.d.ts +39 -15
  73. package/dist/theme/components/card.d.ts +168 -0
  74. package/dist/theme/components/checkbox.d.ts +12 -8
  75. package/dist/theme/components/checkboxGroup.d.ts +12 -0
  76. package/dist/theme/components/componentWrapper.d.ts +11 -0
  77. package/dist/theme/components/datePicker.d.ts +16 -0
  78. package/dist/theme/components/fieldset.d.ts +27 -0
  79. package/dist/theme/components/global.d.ts +65 -0
  80. package/dist/theme/components/globalMixins.d.ts +23 -0
  81. package/dist/theme/components/heading.d.ts +55 -20
  82. package/dist/theme/components/helperErrorText.d.ts +10 -0
  83. package/dist/theme/components/hero.d.ts +493 -0
  84. package/dist/theme/components/horizontalRule.d.ts +14 -0
  85. package/dist/theme/components/icon.d.ts +13 -0
  86. package/dist/theme/components/image.d.ts +31 -0
  87. package/dist/theme/components/label.d.ts +18 -0
  88. package/dist/theme/components/link.d.ts +49 -0
  89. package/dist/theme/components/list.d.ts +89 -0
  90. package/dist/theme/components/notification.d.ts +75 -0
  91. package/dist/theme/components/pagination.d.ts +19 -0
  92. package/dist/theme/components/progressIndicator.d.ts +50 -0
  93. package/dist/theme/components/radio.d.ts +8 -7
  94. package/dist/theme/components/radioGroup.d.ts +12 -0
  95. package/dist/theme/components/searchBar.d.ts +20 -0
  96. package/dist/theme/components/select.d.ts +67 -0
  97. package/dist/theme/components/skeletonLoader.d.ts +98 -0
  98. package/dist/theme/components/slider.d.ts +51 -0
  99. package/dist/theme/components/statusBadge.d.ts +25 -0
  100. package/dist/theme/components/tabs.d.ts +63 -12
  101. package/dist/theme/components/template.d.ts +105 -0
  102. package/dist/theme/components/text.d.ts +20 -0
  103. package/dist/theme/components/textInput.d.ts +112 -0
  104. package/dist/theme/components/videoPlayer.d.ts +40 -0
  105. package/dist/theme/foundations/breakpoints.d.ts +8 -8
  106. package/dist/theme/foundations/global.d.ts +8 -0
  107. package/dist/theme/foundations/radii.d.ts +5 -0
  108. package/dist/theme/foundations/shadows.d.ts +4 -0
  109. package/dist/theme/foundations/spacing.d.ts +16 -16
  110. package/dist/utils/utils.d.ts +6 -0
  111. package/package.json +72 -82
  112. package/src/__tests__/setup.ts +2 -2
  113. package/src/components/Accordion/Accordion.stories.mdx +223 -34
  114. package/src/components/Accordion/Accordion.test.tsx +135 -19
  115. package/src/components/Accordion/Accordion.tsx +81 -56
  116. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -4
  117. package/src/components/Autosuggest/Autosuggest.stories.tsx +3 -2
  118. package/src/components/Autosuggest/_Autosuggest.scss +5 -5
  119. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +48 -50
  120. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +54 -25
  121. package/src/components/Breadcrumbs/Breadcrumbs.tsx +75 -73
  122. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
  123. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -0
  124. package/src/components/Button/Button.stories.mdx +45 -36
  125. package/src/components/Button/Button.test.tsx +37 -11
  126. package/src/components/Button/Button.tsx +22 -34
  127. package/src/components/Button/ButtonTypes.tsx +2 -0
  128. package/src/components/Button/__snapshots__/Button.test.tsx.snap +50 -8
  129. package/src/components/Card/Card.stories.mdx +314 -273
  130. package/src/components/Card/Card.test.tsx +157 -91
  131. package/src/components/Card/Card.tsx +195 -145
  132. package/src/components/Card/CardTypes.tsx +2 -19
  133. package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
  134. package/src/components/CardEdition/CardEdition.stories.tsx +26 -53
  135. package/src/components/CardEdition/CardEdition.test.tsx +23 -31
  136. package/src/components/CardEdition/_CardEdition.scss +22 -23
  137. package/src/components/Chakra/Box.stories.mdx +15 -16
  138. package/src/components/Chakra/Center.stories.mdx +56 -24
  139. package/src/components/Chakra/Grid.stories.mdx +92 -0
  140. package/src/components/Chakra/Stack.stories.mdx +38 -21
  141. package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
  142. package/src/components/Checkbox/Checkbox.test.tsx +47 -2
  143. package/src/components/Checkbox/Checkbox.tsx +44 -41
  144. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +92 -7
  145. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +329 -0
  146. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +372 -0
  147. package/src/components/CheckboxGroup/CheckboxGroup.tsx +152 -0
  148. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
  149. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1326 -0
  150. package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
  151. package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
  152. package/src/components/DatePicker/DatePicker.test.tsx +264 -64
  153. package/src/components/DatePicker/DatePicker.tsx +165 -134
  154. package/src/components/DatePicker/_DatePicker.scss +33 -66
  155. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
  156. package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
  157. package/src/components/Fieldset/Fieldset.test.tsx +125 -0
  158. package/src/components/Fieldset/Fieldset.tsx +52 -0
  159. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
  160. package/src/components/Form/Form.stories.mdx +70 -27
  161. package/src/components/Form/Form.test.tsx +58 -45
  162. package/src/components/Form/Form.tsx +50 -21
  163. package/src/components/Form/FormTypes.tsx +3 -8
  164. package/src/components/Form/__snapshots__/Form.test.tsx.snap +24 -14
  165. package/src/components/Grid/GridTypes.tsx +9 -0
  166. package/src/components/Grid/SimpleGrid.stories.mdx +268 -0
  167. package/src/components/Grid/SimpleGrid.test.tsx +66 -0
  168. package/src/components/Grid/SimpleGrid.tsx +37 -0
  169. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
  170. package/src/components/Heading/Heading.stories.mdx +3 -3
  171. package/src/components/Heading/Heading.tsx +12 -6
  172. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
  173. package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
  174. package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
  175. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
  176. package/src/components/Hero/Hero.stories.mdx +198 -121
  177. package/src/components/Hero/Hero.test.tsx +537 -107
  178. package/src/components/Hero/Hero.tsx +79 -92
  179. package/src/components/Hero/HeroTypes.tsx +18 -5
  180. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
  181. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
  182. package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
  183. package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
  184. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
  185. package/src/components/Icons/Icon.stories.mdx +94 -77
  186. package/src/components/Icons/Icon.test.tsx +48 -22
  187. package/src/components/Icons/Icon.tsx +78 -61
  188. package/src/components/Icons/IconSvgs.tsx +22 -0
  189. package/src/components/Icons/IconTypes.tsx +91 -64
  190. package/src/components/Image/Image.stories.mdx +220 -0
  191. package/src/components/Image/Image.test.tsx +131 -29
  192. package/src/components/Image/Image.tsx +84 -56
  193. package/src/components/Image/ImageTypes.ts +22 -0
  194. package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
  195. package/src/components/Input/Input.stories.tsx +23 -67
  196. package/src/components/Input/Input.test.tsx +4 -4
  197. package/src/components/Input/_Input.scss +23 -14
  198. package/src/components/Label/Label.stories.mdx +28 -7
  199. package/src/components/Label/Label.test.tsx +43 -12
  200. package/src/components/Label/Label.tsx +21 -34
  201. package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
  202. package/src/components/Link/Link.stories.mdx +41 -41
  203. package/src/components/Link/Link.test.tsx +33 -44
  204. package/src/components/Link/Link.tsx +117 -100
  205. package/src/components/List/List.stories.mdx +124 -51
  206. package/src/components/List/List.test.tsx +142 -63
  207. package/src/components/List/List.tsx +89 -93
  208. package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
  209. package/src/components/Modal/Modal.stories.mdx +3 -3
  210. package/src/components/Modal/_Modal.scss +2 -2
  211. package/src/components/Notification/Notification.stories.mdx +119 -111
  212. package/src/components/Notification/Notification.test.tsx +102 -126
  213. package/src/components/Notification/Notification.tsx +157 -161
  214. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
  215. package/src/components/Pagination/Pagination.stories.mdx +26 -27
  216. package/src/components/Pagination/Pagination.stories.tsx +11 -16
  217. package/src/components/Pagination/Pagination.test.tsx +276 -140
  218. package/src/components/Pagination/Pagination.tsx +174 -154
  219. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
  220. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
  221. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
  222. package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
  223. package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
  224. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
  225. package/src/components/Radio/Radio.test.tsx +20 -4
  226. package/src/components/Radio/Radio.tsx +6 -3
  227. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
  228. package/src/components/RadioGroup/RadioGroup.stories.mdx +4 -5
  229. package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
  230. package/src/components/RadioGroup/RadioGroup.tsx +21 -29
  231. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
  232. package/src/components/SearchBar/SearchBar.Test.tsx +170 -16
  233. package/src/components/SearchBar/SearchBar.stories.mdx +294 -219
  234. package/src/components/SearchBar/SearchBar.tsx +161 -46
  235. package/src/components/Select/Select.stories.mdx +188 -170
  236. package/src/components/Select/Select.test.tsx +132 -375
  237. package/src/components/Select/Select.tsx +121 -165
  238. package/src/components/Select/SelectTypes.tsx +5 -0
  239. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +33 -76
  240. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
  241. package/src/components/SkeletonLoader/SkeletonLoader.tsx +75 -70
  242. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
  243. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
  244. package/src/components/Slider/Slider.stories.mdx +529 -0
  245. package/src/components/Slider/Slider.test.tsx +653 -0
  246. package/src/components/Slider/Slider.tsx +303 -0
  247. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
  248. package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
  249. package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
  250. package/src/components/StatusBadge/StatusBadge.tsx +24 -25
  251. package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
  252. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
  253. package/src/components/StyleGuide/Bidirectionality.stories.mdx +17 -17
  254. package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
  255. package/src/components/StyleGuide/Buttons.stories.mdx +102 -86
  256. package/src/components/StyleGuide/ColorCard.tsx +46 -0
  257. package/src/components/StyleGuide/Colors.stories.mdx +196 -0
  258. package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
  259. package/src/components/StyleGuide/Forms.stories.mdx +9 -7
  260. package/src/components/StyleGuide/Iconography.stories.mdx +119 -127
  261. package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
  262. package/src/components/StyleGuide/Typography.stories.mdx +202 -189
  263. package/src/components/StyleGuide/UIDocCard.tsx +1 -1
  264. package/src/components/Tabs/Tabs.stories.mdx +73 -11
  265. package/src/components/Tabs/Tabs.tsx +88 -67
  266. package/src/components/Template/Template.stories.mdx +572 -0
  267. package/src/components/Template/Template.test.tsx +124 -0
  268. package/src/components/Template/Template.tsx +226 -0
  269. package/src/components/Text/Text.stories.mdx +70 -0
  270. package/src/components/Text/Text.test.tsx +63 -0
  271. package/src/components/Text/Text.tsx +55 -0
  272. package/src/components/Text/TextTypes.tsx +6 -0
  273. package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
  274. package/src/components/TextInput/TextInput.stories.mdx +89 -90
  275. package/src/components/TextInput/TextInput.test.tsx +84 -85
  276. package/src/components/TextInput/TextInput.tsx +121 -95
  277. package/src/components/TextInput/TextInputTypes.tsx +8 -0
  278. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
  279. package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
  280. package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
  281. package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
  282. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
  283. package/src/docs/Chakra.stories.mdx +246 -65
  284. package/src/docs/Intro.stories.mdx +18 -13
  285. package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
  286. package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
  287. package/src/hooks/useCarouselStyles.ts +34 -0
  288. package/src/hooks/useNYPLTheme.ts +67 -0
  289. package/src/hooks/useWindowSize.ts +40 -0
  290. package/src/index.ts +39 -16
  291. package/src/resources.scss +5 -5
  292. package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
  293. package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
  294. package/src/styles/base/_03-base.scss +25 -0
  295. package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
  296. package/src/styles/base/_place-holder.scss +14 -3
  297. package/src/styles/{03-space → space}/_space-inline.scss +14 -14
  298. package/src/styles/{03-space → space}/_space-inset.scss +10 -10
  299. package/src/styles/space/_space-stack.scss +116 -0
  300. package/src/styles.scss +13 -62
  301. package/src/theme/components/accordion.ts +30 -0
  302. package/src/theme/components/breadcrumb.ts +77 -0
  303. package/src/theme/components/button.ts +91 -71
  304. package/src/theme/components/card.ts +174 -0
  305. package/src/theme/components/checkbox.ts +22 -29
  306. package/src/theme/components/checkboxGroup.ts +8 -0
  307. package/src/theme/components/componentWrapper.ts +10 -0
  308. package/src/theme/components/datePicker.ts +17 -0
  309. package/src/theme/components/fieldset.ts +18 -0
  310. package/src/theme/components/global.ts +82 -0
  311. package/src/theme/components/globalMixins.ts +24 -0
  312. package/src/theme/components/heading.ts +25 -13
  313. package/src/theme/components/helperErrorText.ts +9 -0
  314. package/src/theme/components/hero.ts +240 -0
  315. package/src/theme/components/horizontalRule.ts +13 -0
  316. package/src/theme/components/icon.ts +79 -0
  317. package/src/theme/components/image.ts +116 -0
  318. package/src/theme/components/label.ts +10 -0
  319. package/src/theme/components/link.ts +51 -0
  320. package/src/theme/components/list.ts +73 -0
  321. package/src/theme/components/notification.ts +93 -0
  322. package/src/theme/components/pagination.ts +20 -0
  323. package/src/theme/components/progressIndicator.ts +62 -0
  324. package/src/theme/components/radio.ts +22 -33
  325. package/src/theme/components/radioGroup.ts +8 -0
  326. package/src/theme/components/searchBar.ts +21 -0
  327. package/src/theme/components/select.ts +53 -0
  328. package/src/theme/components/skeletonLoader.ts +107 -0
  329. package/src/theme/components/slider.ts +79 -0
  330. package/src/theme/components/statusBadge.ts +26 -0
  331. package/src/theme/components/tabs.ts +102 -69
  332. package/src/theme/components/template.ts +114 -0
  333. package/src/theme/components/text.ts +31 -0
  334. package/src/theme/components/textInput.ts +62 -0
  335. package/src/theme/components/videoPlayer.ts +49 -0
  336. package/src/theme/foundations/breakpoints.ts +8 -8
  337. package/src/theme/foundations/colors.ts +29 -13
  338. package/src/theme/foundations/global.ts +8 -0
  339. package/src/theme/foundations/radii.ts +6 -0
  340. package/src/theme/foundations/shadows.ts +5 -0
  341. package/src/theme/foundations/spacing.ts +24 -24
  342. package/src/theme/index.ts +74 -13
  343. package/src/utils/componentCategories.ts +12 -5
  344. package/src/utils/utils.ts +13 -0
  345. package/dist/components/Accordion/Accordion.stories.d.ts +0 -6
  346. package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
  347. package/dist/components/Image/Image.stories.d.ts +0 -18
  348. package/dist/components/List/List.stories.d.ts +0 -7
  349. package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
  350. package/dist/components/StyleGuide/Colors.stories.d.ts +0 -25
  351. package/dist/components/Template/Template.stories.d.ts +0 -30
  352. package/dist/theme/components/customRadioGroup.d.ts +0 -17
  353. package/src/components/Accordion/Accordion.stories.tsx +0 -66
  354. package/src/components/Accordion/_Accordion.scss +0 -81
  355. package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
  356. package/src/components/Button/_Button.scss +0 -56
  357. package/src/components/Card/_Card.scss +0 -308
  358. package/src/components/Form/_Form.scss +0 -67
  359. package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
  360. package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
  361. package/src/components/Hero/_Hero.scss +0 -256
  362. package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
  363. package/src/components/Icons/_Icons.scss +0 -116
  364. package/src/components/Image/Image.stories.tsx +0 -54
  365. package/src/components/Image/_Image.scss +0 -38
  366. package/src/components/Label/_Label.scss +0 -22
  367. package/src/components/Link/_Link.scss +0 -73
  368. package/src/components/List/List.stories.tsx +0 -139
  369. package/src/components/List/_List.scss +0 -76
  370. package/src/components/Notification/_Notification.scss +0 -110
  371. package/src/components/Pagination/_Pagination.scss +0 -40
  372. package/src/components/SearchBar/_SearchBar.scss +0 -16
  373. package/src/components/Select/_Select.scss +0 -82
  374. package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
  375. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -34
  376. package/src/components/StatusBadge/_StatusBadge.scss +0 -23
  377. package/src/components/StyleGuide/Colors.stories.tsx +0 -289
  378. package/src/components/Template/Template.stories.tsx +0 -86
  379. package/src/components/Template/_Template.scss +0 -63
  380. package/src/components/TextInput/_TextInput.scss +0 -59
  381. package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
  382. package/src/styles/01-colors/_colors-brand.scss +0 -56
  383. package/src/styles/01-colors/_colors-utility.scss +0 -65
  384. package/src/styles/02-typography/_type-scale.css +0 -11
  385. package/src/styles/02-typography/_type-weight.css +0 -7
  386. package/src/styles/02-typography/_typefaces.css +0 -4
  387. package/src/styles/03-space/_space-stack.scss +0 -116
  388. package/src/styles/03-space/_space.css +0 -30
  389. package/src/styles/base/_04-base.scss +0 -19
  390. package/src/styles/base/_card-grid.scss +0 -78
  391. package/src/styles/base/_typography.scss +0 -11
  392. package/src/theme/components/customRadioGroup.ts +0 -18
@@ -0,0 +1,572 @@
1
+ import {
2
+ Meta,
3
+ Story,
4
+ Canvas,
5
+ ArgsTable,
6
+ Description,
7
+ } from "@storybook/addon-docs/blocks";
8
+ import { withDesign } from "storybook-addon-designs";
9
+
10
+ import {
11
+ Template,
12
+ TemplateHeader,
13
+ TemplateBreakout,
14
+ TemplateContent,
15
+ TemplateContentTop,
16
+ TemplateContentPrimary,
17
+ TemplateContentSidebar,
18
+ TemplateFooter,
19
+ TemplateAppContainer,
20
+ } from "./Template";
21
+ import Placeholder from "../Placeholder/Placeholder";
22
+ import Hero from "../Hero/Hero";
23
+ import { HeroTypes } from "../Hero/HeroTypes";
24
+ import Image from "../Image/Image";
25
+ import { ImageRatios, ImageSizes } from "../Image/ImageTypes";
26
+ import Breadcrumbs from "../Breadcrumbs/Breadcrumbs";
27
+ import HorizontalRule from "../HorizontalRule/HorizontalRule";
28
+ import Heading from "../Heading/Heading";
29
+ import { HeadingLevels } from "../Heading/HeadingTypes";
30
+ import Notification, {
31
+ NotificationContent,
32
+ NotificationHeading,
33
+ NotificationProps,
34
+ } from "../Notification/Notification";
35
+ import Form, { FormRow, FormField } from "../Form/Form";
36
+ import TextInput from "../TextInput/TextInput";
37
+ import Button from "../Button/Button";
38
+ import Link from "../Link/Link";
39
+ import Card, { CardHeading, CardContent, CardActions } from "../Card/Card";
40
+ import Accordion from "../Accordion/Accordion";
41
+ import { faqContent } from "../Accordion/Accordion.stories.mdx";
42
+ import { NotificationTypes } from "../Notification/NotificationTypes";
43
+ import { getCategory } from "../../utils/componentCategories";
44
+
45
+ <Meta
46
+ title={getCategory("Template")}
47
+ component={TemplateAppContainer}
48
+ decorators={[withDesign]}
49
+ parameters={{
50
+ design: {
51
+ type: "figma",
52
+ url:
53
+ "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11982%3A47778",
54
+ },
55
+ }}
56
+ />
57
+
58
+ # Template
59
+
60
+ | Component Version | DS Version |
61
+ | ----------------- | ---------- |
62
+ | Added | `0.3.6` |
63
+ | Latest | `0.25.1` |
64
+
65
+ ## TemplateAppContainer Component
66
+
67
+ <Description of={TemplateAppContainer} />
68
+
69
+ <b>This is the recommended way to render an app page template.</b>
70
+
71
+ ```jsx
72
+ import { TemplateAppContainer } from "@nypl/design-system-react-components";
73
+
74
+ <TemplateAppContainer
75
+ header={<Placeholder modifiers={["short"]}>NYPL Header</Placeholder>}
76
+ breakout={
77
+ <>
78
+ <Placeholder modifiers={["short"]}>Breadcrumbs</Placeholder>
79
+ <Placeholder modifiers={["short"]}>Hero</Placeholder>
80
+ </>
81
+ }
82
+ sidebar="left"
83
+ contentTop={<Placeholder>Content Top</Placeholder>}
84
+ contentSidebar={<Placeholder>Left Sidebar</Placeholder>}
85
+ contentPrimary={
86
+ <>
87
+ <Placeholder>Main Content</Placeholder>
88
+ <Placeholder modifiers={["short"]}>More Content</Placeholder>
89
+ </>
90
+ }
91
+ footer={<Placeholder modifiers={["short"]}>Footer</Placeholder>}
92
+ />;
93
+ ```
94
+
95
+ <Canvas>
96
+ <Story
97
+ name="TemplateAppContainer Component"
98
+ args={{
99
+ header: <Placeholder modifiers={["short"]}>NYPL Header</Placeholder>,
100
+ breakout: (
101
+ <>
102
+ <Placeholder modifiers={["short"]}>Breadcrumbs</Placeholder>
103
+ <Placeholder modifiers={["short"]}>Hero</Placeholder>
104
+ </>
105
+ ),
106
+ sidebar: "left",
107
+ contentTop: <Placeholder>Content Top</Placeholder>,
108
+ contentSidebar: <Placeholder>Left Sidebar</Placeholder>,
109
+ contentPrimary: (
110
+ <>
111
+ <Placeholder>Main Content</Placeholder>
112
+ <Placeholder modifiers={["short"]}>More Content</Placeholder>
113
+ </>
114
+ ),
115
+ footer: <Placeholder modifiers={["short"]}>Footer</Placeholder>,
116
+ }}
117
+ argTypes={{
118
+ header: { control: false },
119
+ breakout: { control: false },
120
+ contentTop: { control: false },
121
+ contentSidebar: { control: false },
122
+ contentPrimary: { control: false },
123
+ footer: { control: false },
124
+ }}
125
+ >
126
+ {(args) => <TemplateAppContainer {...args} />}
127
+ </Story>
128
+ </Canvas>
129
+
130
+ <ArgsTable story="TemplateAppContainer Component" />
131
+
132
+ ## Template Children Components
133
+
134
+ The DS also provides a set of "template" components that work together to
135
+ render a consistent mobile and desktop layout. More information on individual
136
+ components and how they should be composed can be found below. Even though these
137
+ component are available for use, we recommend using the `TemplateAppContainer`
138
+ component and passing down children component as props as needed.
139
+
140
+ Basic "template" components structure:
141
+
142
+ ```
143
+ import {
144
+ Template,
145
+ TemplateHeader,
146
+ TemplateBreakout,
147
+ TemplateContent,
148
+ TemplateContentTop,
149
+ TemplateContentPrimary,
150
+ TemplateContentSidebar,
151
+ TemplateFooter,
152
+ } from "@nypl/design-system-react-components";
153
+
154
+
155
+ <Template>
156
+ <TemplateHeader>
157
+ // ...
158
+ <TemplateBreakout>
159
+ // ...
160
+ </TemplateBreakout>
161
+ </TemplateHeader>
162
+
163
+ <TemplateContent>
164
+ <TemplateContentTop>
165
+ // ...
166
+ </TemplateContentTop>
167
+
168
+ <TemplateContentPrimary>
169
+ // ...
170
+ </TemplateContentPrimary>
171
+ </TemplateContent>
172
+
173
+ <TemplateFooter>
174
+ // ...
175
+ </TemplateFooter>
176
+ </Template>
177
+ ```
178
+
179
+ <Canvas>
180
+ <Story
181
+ name="Template Children Components"
182
+ args={{
183
+ sidebar: "left",
184
+ }}
185
+ argTypes={{
186
+ breakout: { table: { disable: true } },
187
+ contentPrimary: { table: { disable: true } },
188
+ contentSidebar: { table: { disable: true } },
189
+ contentTop: { table: { disable: true } },
190
+ footer: { table: { disable: true } },
191
+ header: { table: { disable: true } },
192
+ }}
193
+ >
194
+ {(args) => (
195
+ <Template>
196
+ <TemplateHeader>
197
+ <Placeholder modifiers={["short"]}>NYPL Header</Placeholder>
198
+ <TemplateBreakout>
199
+ <Placeholder modifiers={["short"]}>Breadcrumbs</Placeholder>
200
+ <Placeholder modifiers={["short"]}>Hero</Placeholder>
201
+ </TemplateBreakout>
202
+ </TemplateHeader>
203
+ <TemplateContent sidebar={args.sidebar}>
204
+ <TemplateContentTop>
205
+ <Placeholder>Content Top</Placeholder>
206
+ </TemplateContentTop>
207
+ {args.sidebar === "left" && (
208
+ <TemplateContentSidebar>
209
+ <Placeholder>Left Sidebar</Placeholder>
210
+ </TemplateContentSidebar>
211
+ )}
212
+ <TemplateContentPrimary>
213
+ <Placeholder>Main Content</Placeholder>
214
+ <Placeholder modifiers={["short"]}>More Content</Placeholder>
215
+ </TemplateContentPrimary>
216
+ {args.sidebar === "right" && (
217
+ <TemplateContentSidebar>
218
+ <Placeholder>Right Sidebar</Placeholder>
219
+ </TemplateContentSidebar>
220
+ )}
221
+ </TemplateContent>
222
+ <TemplateFooter>
223
+ <Placeholder modifiers={["short"]}>Footer</Placeholder>
224
+ </TemplateFooter>
225
+ </Template>
226
+ )}
227
+ </Story>
228
+ </Canvas>
229
+
230
+ <ArgsTable story="Template Children Components" />
231
+
232
+ ### Template Components
233
+
234
+ The components consist of:
235
+
236
+ - `Template`
237
+ - `TemplateHeader`
238
+ - `TemplateBreakout`
239
+ - `TemplateContent`
240
+ - `TemplateContentTop`
241
+ - `TemplateContentPrimary`
242
+ - `TemplateContentSidebar`
243
+ - `TemplateFooter`
244
+
245
+ #### Template
246
+
247
+ ```
248
+ <Template>
249
+ // ...
250
+ </Template>
251
+ ```
252
+
253
+ <Description of={Template} />
254
+
255
+ #### TemplateHeader
256
+
257
+ ```
258
+ <Template>
259
+ <TemplateHeader>
260
+ // ...
261
+ </TemplateHeader>
262
+ <Template>
263
+ ```
264
+
265
+ <Description of={TemplateHeader} />
266
+
267
+ #### TemplateBreakout
268
+
269
+ ```
270
+ <Template>
271
+ <TemplateHeader>
272
+ <TemplateBreakout>
273
+ // ...
274
+ </TemplateBreakout>
275
+ </TemplateHeader>
276
+ <Template>
277
+ ```
278
+
279
+ <Description of={TemplateBreakout} />
280
+
281
+ #### TemplateContent
282
+
283
+ ```
284
+ <Template>
285
+ <TemplateHeader>...</TemplateHeader>
286
+ <TemplateContent sidebar="left">
287
+ // ...
288
+ </TemplateContent>
289
+ <Template>
290
+ ```
291
+
292
+ <Description of={TemplateContent} />
293
+
294
+ #### TemplateContentTop
295
+
296
+ ```
297
+ <Template>
298
+ <TemplateHeader>...</TemplateHeader>
299
+ <TemplateContent>
300
+ <TemplateContentTop>
301
+ // ...
302
+ </TemplateContent>
303
+ </TemplateContent>
304
+ <Template>
305
+ ```
306
+
307
+ <Description of={TemplateContentTop} />
308
+
309
+ #### TemplateContentPrimary
310
+
311
+ ```
312
+ <Template>
313
+ <TemplateHeader>...</TemplateHeader>
314
+ <TemplateContent>
315
+ <TemplateContentPrimary>
316
+ // ...
317
+ </TemplateContentPrimary>
318
+ </TemplateContent>
319
+ <Template>
320
+ ```
321
+
322
+ <Description of={TemplateContentPrimary} />
323
+
324
+ #### TemplateContentSidebar
325
+
326
+ ```
327
+ <Template>
328
+ <TemplateHeader>...</TemplateHeader>
329
+ <TemplateContent sidebar="right">
330
+ <TemplateContentPrimary>
331
+ // ...
332
+ </TemplateContentPrimary>
333
+ <TemplateContentSidebar>
334
+ // RIGHT SIDEBAR
335
+ </TemplateContentSidebar>
336
+ </TemplateContent>
337
+ <Template>
338
+
339
+ <Template>
340
+ <TemplateHeader>...</TemplateHeader>
341
+ <TemplateContent sidebar="left">
342
+ <TemplateContentSidebar>
343
+ // LEFT SIDEBAR
344
+ </TemplateContentSidebar>
345
+ <TemplateContentPrimary>
346
+ // ...
347
+ </TemplateContentPrimary>
348
+ </TemplateContent>
349
+ <Template>
350
+ ```
351
+
352
+ <Description of={TemplateContentSidebar} />
353
+
354
+ #### TemplateFooter
355
+
356
+ ```
357
+ <Template>
358
+ <TemplateHeader>
359
+ // ...
360
+ </TemplateHeader>
361
+ <TemplateContent sidebar="right">
362
+ //...
363
+ </TemplateContent>
364
+ <TemplateFooter>
365
+ // ...
366
+ </TemplateFooter>
367
+ <Template>
368
+ ```
369
+
370
+ <Description of={TemplateFooter} />
371
+
372
+ ### Template Children Components Sidebar Configuration
373
+
374
+ In order to render a sidebar, two steps must be taken.
375
+
376
+ 1. The `TemplateContent` component needs to be aware of it. Pass the location
377
+ of the sidebar to the `sidebar` prop as either "left" or "right".
378
+
379
+ ```jsx
380
+ <TemplateContent sidebar="left">
381
+ ```
382
+
383
+ 2. Render `TemplateContentSidebar` and `TemplateContentPrimary` next to each
384
+ other in the appropriate order. If the sidebar must show left, then
385
+ `TemplateContentSidebar` comes before `TemplateContentPrimary`. Otherwise,
386
+ `TemplateContentPrimary` must come before `TemplateContentSidebar`.
387
+
388
+ ```jsx
389
+ // Render left sidebar
390
+ <TemplateContent sidebar="left">
391
+ <TemplateContentSidebar>
392
+ // ...
393
+ </TemplateContentSidebar>
394
+ <TemplateContentPrimary>
395
+ // ...
396
+ </TemplateContentPrimary>
397
+ </TemplateContent>
398
+
399
+ // Render right sidebar
400
+ <TemplateContent sidebar="right">
401
+ <TemplateContentPrimary>
402
+ // ...
403
+ </TemplateContentPrimary>
404
+ <TemplateContentSidebar>
405
+ // ...
406
+ </TemplateContentSidebar>
407
+ </TemplateContent>
408
+ ```
409
+
410
+ ## Full Example with Template Children Components
411
+
412
+ export const otherSubHeaderText =
413
+ "With 92 locations across the Bronx, Manhattan, and Staten Island, The New York Public Library is an essential part of neighborhoods across the city. Visit us today.";
414
+
415
+ This is best viewed in the Storybook "Canvas" and not "Docs" section.
416
+
417
+ <Canvas>
418
+ <Story name="Full Example with Template Children Components">
419
+ <Template>
420
+ <TemplateHeader>
421
+ <TemplateBreakout>
422
+ <Breadcrumbs
423
+ breadcrumbsData={[
424
+ { url: "#", text: "Home" },
425
+ { url: "#", text: "Research" },
426
+ {
427
+ url: "#",
428
+ text: "Catalog",
429
+ },
430
+ ]}
431
+ />
432
+ <Hero
433
+ heroType={HeroTypes.Campaign}
434
+ heading={
435
+ <Heading level={HeadingLevels.One} id="1" text="Hero Campaign" />
436
+ }
437
+ subHeaderText={otherSubHeaderText}
438
+ backgroundImageSrc="https://placeimg.com/2400/800/nature/grayscale"
439
+ image={
440
+ <Image
441
+ src="https://placeimg.com/800/400/animals"
442
+ alt="Image example"
443
+ />
444
+ }
445
+ />
446
+ </TemplateBreakout>
447
+ </TemplateHeader>
448
+ <TemplateContent sidebar="right">
449
+ <TemplateContentTop>
450
+ <Notification
451
+ notificationType={NotificationTypes.Announcement}
452
+ notificationHeading="Announcement Notification"
453
+ notificationContent={
454
+ <>
455
+ This is an "announcement" Notification with a heading. Cras
456
+ mattis consectetur purus sit amet fermentum. Maecenas faucibus
457
+ mollis interdum. Morbi leo risus, porta ac consectetur ac,
458
+ vestibulum at eros. Cum sociis natoque penatibus et magnis dis
459
+ parturient montes, nascetur ridiculus mus. Vivamus sagittis
460
+ lacus vel augue laoreet rutrum faucibus dolor auctor.
461
+ </>
462
+ }
463
+ />
464
+ </TemplateContentTop>
465
+ <TemplateContentPrimary>
466
+ <p>This is the main content!</p>
467
+ <Accordion contentData={faqContent} />
468
+ <HorizontalRule />
469
+ <p>Fill out the form!</p>
470
+ <Form action="/end/point">
471
+ <FormField>
472
+ <TextInput
473
+ labelText="Username"
474
+ helperText="Make sure to complete this field."
475
+ required
476
+ />
477
+ </FormField>
478
+ <FormField>
479
+ <TextInput
480
+ labelText="Password"
481
+ helperText="Make sure to complete this field."
482
+ required
483
+ />
484
+ </FormField>
485
+ <FormRow>
486
+ <FormField>
487
+ <TextInput labelText="Phone Field" type="tel" />
488
+ </FormField>
489
+ <FormField>
490
+ <TextInput labelText="URL Field" type="url" />
491
+ </FormField>
492
+ <FormField>
493
+ <TextInput labelText="Age" type="number" />
494
+ </FormField>
495
+ </FormRow>
496
+ <FormField>
497
+ <Button>Submit</Button>
498
+ </FormField>
499
+ </Form>
500
+ </TemplateContentPrimary>
501
+ <TemplateContentSidebar>
502
+ <p>Sidebar information in a `Card` component.</p>
503
+ <Card
504
+ center
505
+ imageSrc="https://placeimg.com/400/200/animals"
506
+ imageAlt="Alt text"
507
+ imageAspectRatio={ImageRatios.Square}
508
+ imageSize={ImageSizes.Small}
509
+ >
510
+ <CardHeading level={HeadingLevels.Two} id="heading1">
511
+ Small Animal Image
512
+ </CardHeading>
513
+ <CardHeading level={HeadingLevels.Three} id="heading2">
514
+ Animal info
515
+ </CardHeading>
516
+ <CardContent>
517
+ Vestibulum id ligula porta felis euismod semper. Nulla vitae elit
518
+ libero, a pharetra augue.
519
+ </CardContent>
520
+ </Card>
521
+ </TemplateContentSidebar>
522
+ </TemplateContent>
523
+ <TemplateFooter>
524
+ <Card
525
+ id="custom-card"
526
+ imageAlt="Alt text"
527
+ imageSrc="https://cdn-d8.nypl.org/s3fs-public/2020-05/NYPL_MainFacadeRev2Cam2.png"
528
+ imageAspectRatio={ImageRatios.SixteenByNine}
529
+ layout="horizontal"
530
+ backgroundColor="#616161"
531
+ foregroundColor="#FFF"
532
+ >
533
+ <CardHeading id="heading1-footer" level={HeadingLevels.Two}>
534
+ Footer
535
+ </CardHeading>
536
+ <CardContent>
537
+ <p>This is an example footer using the `Card` component.</p>
538
+ <p>
539
+ © The New York Public Library, 2021 The New York Public Library is
540
+ a 501(c)(3) | EIN 13-1887440
541
+ </p>
542
+ </CardContent>
543
+ <CardActions>
544
+ <Link
545
+ attributes={{
546
+ style: { color: "#FFF", textDecoration: "underline" },
547
+ }}
548
+ href="#"
549
+ >
550
+ Facebook
551
+ </Link>
552
+ ,<Link
553
+ attributes={{
554
+ style: { color: "#FFF", textDecoration: "underline" },
555
+ }}
556
+ href="#"
557
+ >
558
+ Instagram
559
+ </Link>,<Link
560
+ attributes={{
561
+ style: { color: "#FFF", textDecoration: "underline" },
562
+ }}
563
+ href="#"
564
+ >
565
+ Twitter
566
+ </Link>
567
+ </CardActions>
568
+ </Card>
569
+ </TemplateFooter>
570
+ </Template>
571
+ </Story>
572
+ </Canvas>
@@ -0,0 +1,124 @@
1
+ import * as React from "react";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { axe } from "jest-axe";
4
+
5
+ import {
6
+ Template,
7
+ TemplateHeader,
8
+ TemplateBreakout,
9
+ TemplateContent,
10
+ TemplateContentTop,
11
+ TemplateContentPrimary,
12
+ TemplateContentSidebar,
13
+ TemplateFooter,
14
+ TemplateAppContainer,
15
+ } from "./Template";
16
+ import Placeholder from "../Placeholder/Placeholder";
17
+
18
+ const header = <Placeholder modifiers={["short"]}>NYPL Header</Placeholder>;
19
+ const breakout = (
20
+ <>
21
+ <Placeholder modifiers={["short"]}>Breadcrumbs</Placeholder>
22
+ <Placeholder modifiers={["short"]}>Hero</Placeholder>
23
+ </>
24
+ );
25
+ const sidebar = "left";
26
+ const contentTop = <Placeholder>Content Top</Placeholder>;
27
+ const contentSidebar = <Placeholder>Left Sidebar</Placeholder>;
28
+ const contentPrimary = (
29
+ <>
30
+ <Placeholder>Main Content</Placeholder>
31
+ <Placeholder modifiers={["short"]}>More Content</Placeholder>
32
+ </>
33
+ );
34
+ const footer = <Placeholder modifiers={["short"]}>Footer</Placeholder>;
35
+
36
+ describe("TemplateAppContainer accessibility", () => {
37
+ it("passes axe accessibility test", async () => {
38
+ const { container } = render(
39
+ <TemplateAppContainer
40
+ header={header}
41
+ breakout={breakout}
42
+ sidebar={sidebar}
43
+ contentTop={contentTop}
44
+ contentSidebar={contentSidebar}
45
+ contentPrimary={contentPrimary}
46
+ footer={footer}
47
+ />
48
+ );
49
+ expect(await axe(container)).toHaveNoViolations();
50
+ });
51
+ });
52
+
53
+ describe("Template components accessibility", () => {
54
+ it("passes axe accessibility test", async () => {
55
+ const { container } = render(
56
+ <Template>
57
+ <TemplateHeader>
58
+ {header}
59
+ <TemplateBreakout>{breakout}</TemplateBreakout>
60
+ </TemplateHeader>
61
+ <TemplateContent sidebar={sidebar}>
62
+ <TemplateContentTop>{contentTop}</TemplateContentTop>
63
+ <TemplateContentSidebar>{contentSidebar}</TemplateContentSidebar>
64
+ <TemplateContentPrimary>{contentPrimary}</TemplateContentPrimary>
65
+ </TemplateContent>
66
+ <TemplateFooter>{footer}</TemplateFooter>
67
+ </Template>
68
+ );
69
+ expect(await axe(container)).toHaveNoViolations();
70
+ });
71
+ });
72
+
73
+ describe("TemplateAppContainer component", () => {
74
+ it("renders each section", () => {
75
+ render(
76
+ <TemplateAppContainer
77
+ header={header}
78
+ breakout={breakout}
79
+ sidebar={sidebar}
80
+ contentTop={contentTop}
81
+ contentSidebar={contentSidebar}
82
+ contentPrimary={contentPrimary}
83
+ footer={footer}
84
+ />
85
+ );
86
+
87
+ expect(screen.getByText("NYPL Header")).toBeInTheDocument();
88
+ expect(screen.getByText("Breadcrumbs")).toBeInTheDocument();
89
+ expect(screen.getByText("Hero")).toBeInTheDocument();
90
+ expect(screen.getByText("Content Top")).toBeInTheDocument();
91
+ expect(screen.getByText("Left Sidebar")).toBeInTheDocument();
92
+ expect(screen.getByText("Main Content")).toBeInTheDocument();
93
+ expect(screen.getByText("More Content")).toBeInTheDocument();
94
+ expect(screen.getByText("Footer")).toBeInTheDocument();
95
+ });
96
+ });
97
+
98
+ describe("Template components", () => {
99
+ it("renders each section", () => {
100
+ render(
101
+ <Template>
102
+ <TemplateHeader>
103
+ {header}
104
+ <TemplateBreakout>{breakout}</TemplateBreakout>
105
+ </TemplateHeader>
106
+ <TemplateContent sidebar={sidebar}>
107
+ <TemplateContentTop>{contentTop}</TemplateContentTop>
108
+ <TemplateContentSidebar>{contentSidebar}</TemplateContentSidebar>
109
+ <TemplateContentPrimary>{contentPrimary}</TemplateContentPrimary>
110
+ </TemplateContent>
111
+ <TemplateFooter>{footer}</TemplateFooter>
112
+ </Template>
113
+ );
114
+
115
+ expect(screen.getByText("NYPL Header")).toBeInTheDocument();
116
+ expect(screen.getByText("Breadcrumbs")).toBeInTheDocument();
117
+ expect(screen.getByText("Hero")).toBeInTheDocument();
118
+ expect(screen.getByText("Content Top")).toBeInTheDocument();
119
+ expect(screen.getByText("Left Sidebar")).toBeInTheDocument();
120
+ expect(screen.getByText("Main Content")).toBeInTheDocument();
121
+ expect(screen.getByText("More Content")).toBeInTheDocument();
122
+ expect(screen.getByText("Footer")).toBeInTheDocument();
123
+ });
124
+ });