@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
@@ -25,11 +25,11 @@
25
25
  }
26
26
 
27
27
  .react-autosuggest__suggestions-container--open {
28
- background-color: var(--ui-white);
28
+ background-color: var(--nypl-colors-ui-white);
29
29
  display: block;
30
30
  font-weight: 300;
31
31
  margin-top: -6px; // accounts for the focus ring on the input
32
- outline: 1px solid var(--ui-gray-light);
32
+ outline: 1px solid var(--nypl-colors-ui-gray-light-cool);
33
33
  position: absolute;
34
34
  width: 100%;
35
35
  z-index: 2;
@@ -43,13 +43,13 @@
43
43
 
44
44
  .react-autosuggest__suggestion {
45
45
  cursor: pointer;
46
- padding: var(--space-xs);
46
+ padding: var(--nypl-space-xs);
47
47
  }
48
48
 
49
49
  .react-autosuggest__suggestion--highlighted {
50
- background-color: var(--ui-gray-light);
50
+ background-color: var(--nypl-colors-ui-gray-light-cool);
51
51
  }
52
52
 
53
53
  .auto-suggest-bottom {
54
- padding: var(--space-xs);
54
+ padding: var(--nypl-space-xs);
55
55
  }
@@ -3,16 +3,16 @@ import {
3
3
  Story,
4
4
  Canvas,
5
5
  ArgsTable,
6
- Preview,
7
6
  Description,
8
7
  } from "@storybook/addon-docs/blocks";
9
8
  import { withDesign } from "storybook-addon-designs";
10
9
 
11
10
  import Breadcrumbs from "./Breadcrumbs";
11
+ import { ColorVariants } from "./BreadcrumbsTypes";
12
+ import DSProvider from "../../theme/provider";
12
13
  import Heading from "../Heading/Heading";
13
14
  import { HeadingLevels } from "../Heading/HeadingTypes";
14
15
  import Link from "../Link/Link";
15
- import sections from "../../utils/siteSections";
16
16
  import { getCategory } from "../../utils/componentCategories";
17
17
 
18
18
  <Meta
@@ -22,15 +22,14 @@ import { getCategory } from "../../utils/componentCategories";
22
22
  parameters={{
23
23
  design: {
24
24
  type: "figma",
25
- url:
26
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11895%3A547",
25
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10766%3A1031",
27
26
  },
28
27
  jest: ["Breadcrumbs.test.tsx"],
29
28
  }}
30
29
  argTypes={{
31
- blockName: { table: { disable: true } },
30
+ additionalStyles: { control: false },
32
31
  className: { table: { disable: true } },
33
- modifiers: { table: { disable: true } },
32
+ id: { table: { disable: true } },
34
33
  }}
35
34
  />
36
35
 
@@ -39,72 +38,67 @@ import { getCategory } from "../../utils/componentCategories";
39
38
  | Component Version | DS Version |
40
39
  | ----------------- | ---------- |
41
40
  | Added | `0.0.3` |
42
- | Latest | `0.23.0` |
41
+ | Latest | `0.25.4` |
43
42
 
44
43
  <Description of={Breadcrumbs} />
45
44
 
46
45
  The `Breadcrumbs` component is a navigation element that provides a breadcrumb path that reflects the site structure and allows a user to navigate to any page available in the breadcrumb hierarchy.
47
46
 
48
- <Preview withToolbar>
47
+ <Canvas withToolbar>
49
48
  <Story
50
- name="Basic"
49
+ name="Breadcrumbs Props"
51
50
  args={{
52
- breadcrumbs: [
51
+ breadcrumbsData: [
53
52
  { url: "#", text: "Parent" },
54
53
  { url: "#", text: "Child" },
55
54
  { url: "#", text: "Grandchild" },
56
55
  ],
56
+ id: "init-breadcrumbs",
57
57
  }}
58
58
  >
59
59
  {(args) => <Breadcrumbs {...args} />}
60
60
  </Story>
61
- </Preview>
61
+ </Canvas>
62
62
 
63
- <ArgsTable story="Basic" />
63
+ <ArgsTable story="Breadcrumbs Props" />
64
64
 
65
65
  ### Long Titles
66
66
 
67
67
  <Canvas>
68
- <Breadcrumbs
69
- breadcrumbs={[
70
- { url: "#", text: "Parent with a Long Name" },
71
- { url: "#", text: "Child with an Even Longer Name" },
72
- {
73
- url: "#",
74
- text: "Grandchild with an Exceptionally Long Name",
75
- },
76
- {
77
- url: "#",
78
- text:
79
- "Great-Grandchild with the Longest Name That Will Wrap onto the Second Line of the Breadcrumb Component Under the Right Circumstances",
80
- },
81
- ]}
82
- />
68
+ <DSProvider>
69
+ <Breadcrumbs
70
+ breadcrumbsData={[
71
+ { url: "#", text: "Parent with a Long Name" },
72
+ { url: "#", text: "Child with an Even Longer Name" },
73
+ {
74
+ url: "#",
75
+ text: "Grandchild with an Exceptionally Long Name",
76
+ },
77
+ {
78
+ url: "#",
79
+ text: "Great-Grandchild with the Longest Name That Will Wrap onto the Second Line of the Breadcrumb Component Under the Right Circumstances",
80
+ },
81
+ ]}
82
+ />
83
+ </DSProvider>
83
84
  </Canvas>
84
85
 
85
86
  ## Color Variations
86
87
 
87
- The `Breadcrumbs` component background color will match the secondary section color of the website section it is placed into. See more about brand colors <Link href="?path=/story/colors--colors-brand">here</Link>.
88
+ The `Breadcrumbs` component background color can be set using the `colorVariant` prop and the `ColorVariants` enum. If the `colorVariant` prop is omitted, the default background color is `black`.
88
89
 
89
- <Preview>
90
+ <Canvas>
90
91
  <Story
91
92
  name="Color Variations"
92
93
  args={{
93
- breadcrumbs: [
94
- { url: "#", text: "Parent" },
95
- { url: "#", text: "Child" },
96
- {
97
- url: "#",
98
- text: "Grandchild",
99
- },
100
- ],
94
+ colorVariant: ColorVariants.BooksAndMore,
101
95
  }}
102
96
  >
103
97
  {(args) => (
104
- <div className="nypl--books-and-more">
98
+ <>
105
99
  <Heading level={HeadingLevels.Three}>Books and More</Heading>
106
100
  <Breadcrumbs
107
- breadcrumbs={[
101
+ breadcrumbsData={[
108
102
  { url: "#", text: "Parent" },
109
103
  { url: "#", text: "Child" },
110
104
  {
@@ -112,17 +106,18 @@ The `Breadcrumbs` component background color will match the secondary section co
112
106
  text: "Grandchild",
113
107
  },
114
108
  ]}
109
+ colorVariant={args.colorVariant}
115
110
  />
116
- </div>
111
+ </>
117
112
  )}
118
113
  </Story>
119
- </Preview>
114
+ </Canvas>
120
115
 
121
116
  <Canvas>
122
- <div className="nypl--locations">
117
+ <DSProvider>
123
118
  <Heading level={HeadingLevels.Three}>Locations</Heading>
124
119
  <Breadcrumbs
125
- breadcrumbs={[
120
+ breadcrumbsData={[
126
121
  { url: "#", text: "Parent" },
127
122
  { url: "#", text: "Child" },
128
123
  {
@@ -130,15 +125,16 @@ The `Breadcrumbs` component background color will match the secondary section co
130
125
  text: "Grandchild",
131
126
  },
132
127
  ]}
128
+ colorVariant={ColorVariants.Locations}
133
129
  />
134
- </div>
130
+ </DSProvider>
135
131
  </Canvas>
136
132
 
137
133
  <Canvas>
138
- <div className="nypl--research">
134
+ <DSProvider>
139
135
  <Heading level={HeadingLevels.Three}>Research</Heading>
140
136
  <Breadcrumbs
141
- breadcrumbs={[
137
+ breadcrumbsData={[
142
138
  { url: "#", text: "Parent" },
143
139
  { url: "#", text: "Child" },
144
140
  {
@@ -146,15 +142,16 @@ The `Breadcrumbs` component background color will match the secondary section co
146
142
  text: "Grandchild",
147
143
  },
148
144
  ]}
145
+ colorVariant={ColorVariants.Research}
149
146
  />
150
- </div>
147
+ </DSProvider>
151
148
  </Canvas>
152
149
 
153
150
  <Canvas>
154
- <div className="nypl--whats-on">
151
+ <DSProvider>
155
152
  <Heading level={HeadingLevels.Three}>What's On</Heading>
156
153
  <Breadcrumbs
157
- breadcrumbs={[
154
+ breadcrumbsData={[
158
155
  { url: "#", text: "Parent" },
159
156
  { url: "#", text: "Child" },
160
157
  {
@@ -162,6 +159,7 @@ The `Breadcrumbs` component background color will match the secondary section co
162
159
  text: "Grandchild",
163
160
  },
164
161
  ]}
162
+ colorVariant={ColorVariants.WhatsOn}
165
163
  />
166
- </div>
164
+ </DSProvider>
167
165
  </Canvas>
@@ -1,62 +1,91 @@
1
1
  import * as React from "react";
2
2
  import { render, screen } from "@testing-library/react";
3
+ import renderer from "react-test-renderer";
3
4
  import { axe } from "jest-axe";
4
5
 
5
6
  import Breadcrumbs from "./Breadcrumbs";
7
+ import { ColorVariants } from "./BreadcrumbsTypes";
6
8
 
7
9
  describe("Breadcrumbs Accessibility", () => {
8
- const breadcrumbString = [
10
+ const breadcrumbsData = [
9
11
  { url: "#string1", text: "string1" },
10
12
  { url: "#string2", text: "string2" },
11
13
  ];
12
14
  it("passes axe accessibility test", async () => {
13
15
  const { container } = render(
14
- <Breadcrumbs breadcrumbs={breadcrumbString} />
16
+ <Breadcrumbs breadcrumbsData={breadcrumbsData} />
15
17
  );
16
18
  expect(await axe(container)).toHaveNoViolations();
17
19
  });
18
20
  });
19
21
 
20
- describe("Breadcrumbs", () => {
21
- const breadcrumbString = [
22
+ describe("Breadcrumbs Snapshot", () => {
23
+ it("Renders the UI snapshot correctly", () => {
24
+ const breadcrumbsData = [
25
+ { url: "#string1", text: "string1" },
26
+ { url: "#string2", text: "string2" },
27
+ { url: "#string3", text: "string3" },
28
+ ];
29
+
30
+ const breadcrumbsSnapshot = renderer
31
+ .create(
32
+ <Breadcrumbs id="breadcrumbs-test" breadcrumbsData={breadcrumbsData} />
33
+ )
34
+ .toJSON();
35
+ const breadcrumbsVariantColor = renderer
36
+ .create(
37
+ <Breadcrumbs
38
+ breadcrumbsData={breadcrumbsData}
39
+ colorVariant={ColorVariants.BooksAndMore}
40
+ id="breadcrumbs-test"
41
+ />
42
+ )
43
+ .toJSON();
44
+ const breadcrumbsAdditionalStyles = renderer
45
+ .create(
46
+ <Breadcrumbs
47
+ additionalStyles={{
48
+ bg: "var(--nypl-colors-ui-error-primary)",
49
+ }}
50
+ breadcrumbsData={breadcrumbsData}
51
+ id="breadcrumbs-test"
52
+ />
53
+ )
54
+ .toJSON();
55
+
56
+ expect(breadcrumbsSnapshot).toMatchSnapshot();
57
+ expect(breadcrumbsVariantColor).toMatchSnapshot();
58
+ expect(breadcrumbsAdditionalStyles).toMatchSnapshot();
59
+ });
60
+ });
61
+
62
+ describe("Breadcrumbs Testing", () => {
63
+ const breadcrumbsData = [
22
64
  { url: "#string1", text: "string1" },
23
65
  { url: "#string2", text: "string2" },
24
- ];
25
- const breadcrumbComponent = [
26
- <a key="link1" href="#component1">
27
- <span>component1</span>
28
- </a>,
29
- <a key="link2" href="#component2">
30
- component2
31
- </a>,
66
+ { url: "#string3", text: "string3" },
32
67
  ];
33
68
 
34
69
  it("Renders a tag with custom text", () => {
35
- render(<Breadcrumbs breadcrumbs={breadcrumbString} />);
70
+ render(<Breadcrumbs breadcrumbsData={breadcrumbsData} />);
36
71
 
72
+ // The last breadcrumb (the active page) is not a link.
37
73
  expect(screen.getAllByRole("link")).toHaveLength(2);
38
74
  expect(screen.getAllByRole("link")[0]).toHaveTextContent("string1");
39
75
  expect(screen.getAllByRole("link")[1]).toHaveTextContent("string2");
40
- });
41
-
42
- it("Renders breadcrumb when passed components", () => {
43
- render(<Breadcrumbs breadcrumbs={breadcrumbComponent} />);
44
-
45
- expect(screen.getAllByRole("link")).toHaveLength(2);
46
- expect(screen.getAllByRole("link")[0]).toHaveTextContent("component1");
47
- expect(screen.getAllByRole("link")[1]).toHaveTextContent("component2");
76
+ expect(screen.getByText(/string3/)).toBeInTheDocument();
48
77
  });
49
78
 
50
79
  it("Renders icon", () => {
51
80
  const { container } = render(
52
- <Breadcrumbs breadcrumbs={breadcrumbComponent} />
81
+ <Breadcrumbs breadcrumbsData={breadcrumbsData} />
53
82
  );
54
- expect(container.querySelector(".breadcrumbs__icon")).toBeInTheDocument();
83
+ expect(container.querySelector(".breadcrumbs-icon")).toBeInTheDocument();
55
84
  });
56
85
 
57
86
  it("Throws error when nothing is passed into Breadcrumb", () => {
58
- expect(() => render(<Breadcrumbs breadcrumbs={[]} />)).toThrowError(
59
- "Breadcrumbs must contain a set of links. Breadcrumbs currently empty"
87
+ expect(() => render(<Breadcrumbs breadcrumbsData={[]} />)).toThrowError(
88
+ "You must use the `breadcrumbsData` prop to pass a data object to the Breadcrumbs component. That prop is current empty."
60
89
  );
61
90
  });
62
91
  });
@@ -1,92 +1,94 @@
1
1
  import * as React from "react";
2
- import bem from "../../utils/bem";
3
- import Icon from "../Icons/Icon";
4
- import { IconNames } from "../Icons/IconTypes";
2
+ import {
3
+ Breadcrumb as ChakraBreadcrumb,
4
+ BreadcrumbItem,
5
+ BreadcrumbLink,
6
+ useStyleConfig,
7
+ } from "@chakra-ui/react";
5
8
 
6
- type breadcrumb = { url: string; text: string };
9
+ import generateUUID from "../../helpers/generateUUID";
10
+ import { ColorVariants } from "./BreadcrumbsTypes";
11
+ import Icon from "../Icons/Icon";
12
+ import {
13
+ IconNames,
14
+ IconRotationTypes,
15
+ IconSizes,
16
+ IconTypes,
17
+ } from "../Icons/IconTypes";
18
+ import { getVariant } from "../../utils/utils";
7
19
 
8
- function isTextBreadcrumb(obj: breadcrumb | JSX.Element): obj is breadcrumb {
9
- return typeof (obj as breadcrumb).url === "string";
20
+ export interface BreadcrumbsDataProps {
21
+ url: string;
22
+ text: string | React.ReactNode;
10
23
  }
11
24
 
12
25
  export interface BreadcrumbProps {
13
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
14
- blockName?: string;
26
+ /** Optionally pass in additional Chakra-based styles. */
27
+ additionalStyles?: { [key: string]: any };
15
28
  /** Breadcrumb links as an array */
16
- breadcrumbs: breadcrumb[] | JSX.Element[];
29
+ breadcrumbsData: BreadcrumbsDataProps[];
17
30
  /** className you can add in addition to 'input' */
18
31
  className?: string;
19
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
20
- modifiers?: string[];
32
+ /** ID that other components can cross reference for accessibility purposes */
33
+ id?: string;
34
+ /** Used to control how the `Hero` component will be rendered. */
35
+ colorVariant?: ColorVariants;
21
36
  }
22
37
 
23
- export default class Breadcrumbs extends React.Component<BreadcrumbProps, any> {
24
- static defaultProps = {};
25
-
26
- constructor(props: BreadcrumbProps) {
27
- super(props);
38
+ const getElementsFromData = (data, breadcrumbsID) => {
39
+ if (!data?.length) {
40
+ return {};
28
41
  }
29
42
 
30
- render(): JSX.Element {
31
- const { breadcrumbs, className, blockName, modifiers } = this.props;
32
-
33
- const baseClass = "breadcrumbs";
43
+ const breadcrumbItems = data.map((breadcrumbData, index) => (
44
+ <BreadcrumbItem
45
+ key={index}
46
+ isCurrentPage={index === data.length - 1 ? true : false}
47
+ >
48
+ <BreadcrumbLink href={breadcrumbData.url}>
49
+ {index === data.length - 2 && (
50
+ <Icon
51
+ name={IconNames.Arrow}
52
+ size={IconSizes.Small}
53
+ iconRotation={IconRotationTypes.Rotate90}
54
+ id={`${breadcrumbsID}__backarrow`}
55
+ className="breadcrumbs-icon"
56
+ type={IconTypes.Breadcrumbs}
57
+ />
58
+ )}
59
+ <span className="breadcrumb-label">{breadcrumbData.text}</span>
60
+ </BreadcrumbLink>
61
+ </BreadcrumbItem>
62
+ ));
34
63
 
35
- const breadcrumbItems = [];
64
+ return breadcrumbItems;
65
+ };
36
66
 
37
- if (!breadcrumbs || breadcrumbs.length === 0) {
38
- throw new Error(
39
- "Breadcrumbs must contain a set of links. Breadcrumbs currently empty"
40
- );
41
- }
42
- breadcrumbs.forEach((item: breadcrumb | JSX.Element, index: number) => {
43
- const last = index === breadcrumbs.length - 1;
44
- let linkComponent: string | JSX.Element;
67
+ function Breadcrumbs(props: React.PropsWithChildren<BreadcrumbProps>) {
68
+ const {
69
+ additionalStyles = {},
70
+ breadcrumbsData,
71
+ className,
72
+ colorVariant,
73
+ id = generateUUID(),
74
+ } = props;
75
+ const variant = getVariant(colorVariant, ColorVariants);
45
76
 
46
- if (isTextBreadcrumb(item)) {
47
- linkComponent = item.url ? (
48
- <a href={item.url} className={bem("link", [], baseClass)}>
49
- {item.text}
50
- </a>
51
- ) : (
52
- item.text
53
- );
54
- } else {
55
- const props = {
56
- className: bem("link", [], baseClass),
57
- };
58
- linkComponent = React.createElement(
59
- item.type,
60
- { ...props, ...item.props },
61
- item.props.children
62
- );
63
- }
64
- breadcrumbItems.push(
65
- <li
66
- key={`${baseClass}-${index}`}
67
- className={bem("item", [], baseClass)}
68
- >
69
- {last && (
70
- <Icon
71
- name={IconNames.arrow}
72
- blockName={baseClass}
73
- modifiers={["small"]}
74
- decorative={true}
75
- />
76
- )}
77
- {linkComponent}
78
- </li>
79
- );
80
- });
81
-
82
- return (
83
- <nav
84
- className={bem(baseClass, modifiers, blockName, [className])}
85
- role="navigation"
86
- aria-label="Breadcrumbs"
87
- >
88
- <ul className={bem("list", [], baseClass)}>{breadcrumbItems}</ul>
89
- </nav>
77
+ if (!breadcrumbsData || breadcrumbsData.length === 0) {
78
+ throw new Error(
79
+ "You must use the `breadcrumbsData` prop to pass a data object to the Breadcrumbs component. That prop is current empty."
90
80
  );
91
81
  }
82
+
83
+ const styles = useStyleConfig("Breadcrumb", { variant });
84
+ const finalStyles = { ...styles, ...additionalStyles };
85
+ const breadcrumbItems = getElementsFromData(breadcrumbsData, id);
86
+
87
+ return (
88
+ <ChakraBreadcrumb className={className} __css={finalStyles} id={id}>
89
+ {breadcrumbItems}
90
+ </ChakraBreadcrumb>
91
+ );
92
92
  }
93
+
94
+ export default Breadcrumbs;
@@ -0,0 +1,6 @@
1
+ export enum ColorVariants {
2
+ BooksAndMore = "booksAndMore",
3
+ Locations = "locations",
4
+ Research = "research",
5
+ WhatsOn = "whatsOn",
6
+ }