@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,91 @@
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
+ import { VStack } from "@chakra-ui/react";
10
+
11
+ import StatusBadge from "./StatusBadge";
12
+ import { StatusBadgeTypes } from "./StatusBadgeTypes";
13
+ import getCSSVariable from "../../helpers/getCSSVariable";
14
+ import { getCategory } from "../../utils/componentCategories";
15
+ import DSProvider from "../../theme/provider";
16
+
17
+ <Meta
18
+ title={getCategory("StatusBadge")}
19
+ component={StatusBadge}
20
+ decorators={[withDesign]}
21
+ parameters={{
22
+ design: {
23
+ type: "figma",
24
+ url:
25
+ "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11256%3A0",
26
+ },
27
+ jest: ["StatusBadge.test.tsx"],
28
+ }}
29
+ argTypes={{
30
+ className: { table: { disable: true } },
31
+ id: { table: { disable: true } },
32
+ level: {
33
+ control: {
34
+ type: "select",
35
+ },
36
+ options: Object.values(StatusBadgeTypes).map((value) => value),
37
+ },
38
+ }}
39
+ />
40
+
41
+ # StatusBadge
42
+
43
+ | Component Version | DS Version |
44
+ | ----------------- | ---------- |
45
+ | Added | `0.18.7` |
46
+ | Latest | `0.25.1` |
47
+
48
+ <Description of={StatusBadge} />
49
+
50
+ <Canvas withToolbar>
51
+ <Story
52
+ name="Basic with props"
53
+ args={{ level: StatusBadgeTypes.Low, text: "Registration Required" }}
54
+ >
55
+ {(args) => <StatusBadge {...args}>{args.text}</StatusBadge>}
56
+ </Story>
57
+ </Canvas>
58
+
59
+ <ArgsTable story="Basic with props" />
60
+
61
+ ## Patterns
62
+
63
+ ### Higher Barrier
64
+
65
+ Used in instances where the associated message is the highest barrier. Use
66
+ `"high"` and `"medium"` for these levels.
67
+
68
+ <Canvas>
69
+ <DSProvider>
70
+ <VStack spacing="s" align="stretch">
71
+ <StatusBadge level={StatusBadgeTypes.High}>
72
+ On-Site Access Only
73
+ </StatusBadge>
74
+ <StatusBadge level={StatusBadgeTypes.Medium}>Cancelled</StatusBadge>
75
+ </VStack>
76
+ </DSProvider>
77
+ </Canvas>
78
+
79
+ ### Lower Barrier
80
+
81
+ Used in instances where the associated message is the lower barrier. Use
82
+ `"low"` for this level which is the default.
83
+
84
+ <Canvas>
85
+ <DSProvider>
86
+ <VStack spacing="s" align="stretch">
87
+ <StatusBadge>Library Card Required</StatusBadge>
88
+ <StatusBadge>Registration Required</StatusBadge>
89
+ </VStack>
90
+ </DSProvider>
91
+ </Canvas>
@@ -1,25 +1,53 @@
1
1
  import * as React from "react";
2
2
  import { render, screen } from "@testing-library/react";
3
3
  import { axe } from "jest-axe";
4
+ import renderer from "react-test-renderer";
4
5
 
5
6
  import StatusBadge from "./StatusBadge";
7
+ import { StatusBadgeTypes } from "./StatusBadgeTypes";
6
8
 
7
9
  describe("StatusBadge Accessibility", () => {
8
10
  it("passes axe accessibility test", async () => {
9
11
  const { container } = render(
10
- <StatusBadge level={"low"}>Registration Required</StatusBadge>
12
+ <StatusBadge>Registration Required</StatusBadge>
11
13
  );
12
14
  expect(await axe(container)).toHaveNoViolations();
13
15
  });
14
16
  });
15
17
 
16
- describe("StatusBadge Test", () => {
17
- it("Shows status badge", () => {
18
- render(<StatusBadge level={"low"}>Registration Required</StatusBadge>);
18
+ describe("StatusBadge", () => {
19
+ it("renders a status badge and text", () => {
20
+ render(<StatusBadge>Registration Required</StatusBadge>);
19
21
  expect(screen.getByText("Registration Required")).toBeInTheDocument();
20
22
  });
21
- it("Can pass status badge content as child", () => {
22
- render(<StatusBadge level={"medium"}>Cancelled</StatusBadge>);
23
- expect(screen.getByText("Cancelled")).toBeInTheDocument();
23
+
24
+ it("throws a warning when no children are passed", () => {
25
+ const warn = jest.spyOn(console, "warn");
26
+ render(<StatusBadge></StatusBadge>);
27
+ expect(warn).toHaveBeenCalledWith("Status Badge has no children.");
28
+ });
29
+
30
+ it("renders the UI snapshot correctly", () => {
31
+ const low = renderer
32
+ .create(<StatusBadge id="low">Registration Required</StatusBadge>)
33
+ .toJSON();
34
+ const medium = renderer
35
+ .create(
36
+ <StatusBadge id="medium" level={StatusBadgeTypes.Medium}>
37
+ Registration Required
38
+ </StatusBadge>
39
+ )
40
+ .toJSON();
41
+ const high = renderer
42
+ .create(
43
+ <StatusBadge id="high" level={StatusBadgeTypes.High}>
44
+ Registration Required
45
+ </StatusBadge>
46
+ )
47
+ .toJSON();
48
+
49
+ expect(low).toMatchSnapshot();
50
+ expect(medium).toMatchSnapshot();
51
+ expect(high).toMatchSnapshot();
24
52
  });
25
53
  });
@@ -1,37 +1,36 @@
1
1
  import * as React from "react";
2
- import bem from "../../utils/bem";
2
+ import { Box, useStyleConfig } from "@chakra-ui/react";
3
+
4
+ import { StatusBadgeTypes } from "./StatusBadgeTypes";
5
+ import generateUUID from "../../helpers/generateUUID";
3
6
 
4
7
  export interface StatusBadgeProps {
5
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
6
- blockName?: string;
7
- /** ClassName that appears in addition to "status-badge" */
8
+ /** Additional class for the component */
8
9
  className?: string;
9
- /** Level of badge **/
10
- level?: "low" | "medium" | "high";
10
+ /** ID that other components can cross reference for accessibility purposes */
11
+ id?: string;
12
+ /** Level of the status badge through StatusBadgeTypes. */
13
+ level?: StatusBadgeTypes;
11
14
  }
12
15
 
13
- export default function StatusBadge(
14
- props: React.PropsWithChildren<StatusBadgeProps>
15
- ) {
16
- const { blockName, className, level } = props;
17
-
18
- const baseClass = "status-badge";
19
-
20
- let statusBadgeModifiers = ["low"];
16
+ function StatusBadge(props: React.PropsWithChildren<StatusBadgeProps>) {
17
+ const {
18
+ children,
19
+ className,
20
+ id = generateUUID(),
21
+ level = StatusBadgeTypes.Low,
22
+ } = props;
23
+ const styles = useStyleConfig("StatusBadge", { variant: level });
21
24
 
22
- if (!props.children) {
23
- console.warn("Status Badge has no children");
24
- }
25
-
26
- if (level) {
27
- statusBadgeModifiers = [level];
25
+ if (!children) {
26
+ console.warn("Status Badge has no children.");
28
27
  }
29
28
 
30
29
  return (
31
- <div
32
- className={bem(baseClass, statusBadgeModifiers, blockName, [className])}
33
- >
34
- {props.children}
35
- </div>
30
+ <Box id={id} className={className} __css={styles}>
31
+ {children}
32
+ </Box>
36
33
  );
37
34
  }
35
+
36
+ export default StatusBadge;
@@ -0,0 +1,5 @@
1
+ export enum StatusBadgeTypes {
2
+ Low = "low",
3
+ Medium = "medium",
4
+ High = "high",
5
+ }
@@ -0,0 +1,28 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`StatusBadge renders the UI snapshot correctly 1`] = `
4
+ <div
5
+ className="css-0"
6
+ id="low"
7
+ >
8
+ Registration Required
9
+ </div>
10
+ `;
11
+
12
+ exports[`StatusBadge renders the UI snapshot correctly 2`] = `
13
+ <div
14
+ className="css-0"
15
+ id="medium"
16
+ >
17
+ Registration Required
18
+ </div>
19
+ `;
20
+
21
+ exports[`StatusBadge renders the UI snapshot correctly 3`] = `
22
+ <div
23
+ className="css-0"
24
+ id="high"
25
+ >
26
+ Registration Required
27
+ </div>
28
+ `;
@@ -4,7 +4,7 @@ import SearchBar from "../SearchBar/SearchBar";
4
4
  import Input from "../Input/Input";
5
5
  import { InputTypes } from "../Input/InputTypes";
6
6
  import Icon from "../Icons/Icon";
7
- import { IconNames } from "../Icons/IconTypes";
7
+ import { IconNames, IconSizes, IconAlign } from "../Icons/IconTypes";
8
8
  import Button from "../Button/Button";
9
9
  import { ButtonTypes } from "../Button/ButtonTypes";
10
10
  import HelperErrorText from "../HelperErrorText/HelperErrorText";
@@ -132,9 +132,9 @@ won't hurt.
132
132
  />
133
133
  <Button buttonType={ButtonTypes.Primary} id="button-ex1" type="submit">
134
134
  <Icon
135
- name={IconNames.search}
136
- decorative={true}
137
- modifiers={["small", "icon-left"]}
135
+ name={IconNames.Search}
136
+ size={IconSizes.Small}
137
+ align={IconAlign.Left}
138
138
  />
139
139
  Search
140
140
  </Button>
@@ -170,9 +170,9 @@ block to see its code implementation.
170
170
  type="submit"
171
171
  >
172
172
  <Icon
173
- name={IconNames.search}
174
- decorative={true}
175
- modifiers={["small", "icon-left"]}
173
+ name={IconNames.Search}
174
+ size={IconSizes.Small}
175
+ align={IconAlign.Left}
176
176
  />
177
177
  يبحث
178
178
  </Button>
@@ -209,9 +209,9 @@ block to see its code implementation.
209
209
  type="submit"
210
210
  >
211
211
  <Icon
212
- name={IconNames.search}
213
- decorative={true}
214
- modifiers={["small", "icon-left"]}
212
+ name={IconNames.Search}
213
+ size={IconSizes.Small}
214
+ align={IconAlign.Left}
215
215
  />
216
216
  يبحث
217
217
  </Button>
@@ -237,14 +237,14 @@ help reduce any visual mistakes.
237
237
 
238
238
  <Canvas>
239
239
  <DSProvider>
240
- <div style={{ display: "flex", "flex-direction": "column" }}>
240
+ <div style={{ display: "flex", flexDirection: "column" }}>
241
241
  <div style={{ width: "300px" }}>
242
242
  A regular button:
243
243
  <Button buttonType={ButtonTypes.Primary} id="button-ex4" type="submit">
244
244
  <Icon
245
- name={IconNames.search}
246
- decorative={true}
247
- modifiers={["small", "icon-left"]}
245
+ name={IconNames.Search}
246
+ size={IconSizes.Small}
247
+ align={IconAlign.Left}
248
248
  />
249
249
  Search
250
250
  </Button>
@@ -258,9 +258,9 @@ help reduce any visual mistakes.
258
258
  type="submit"
259
259
  >
260
260
  <Icon
261
- name={IconNames.search}
262
- decorative={true}
263
- modifiers={["small", "icon-left"]}
261
+ name={IconNames.Search}
262
+ size={IconSizes.Small}
263
+ align={IconAlign.Left}
264
264
  />
265
265
  Search
266
266
  </Button>
@@ -18,24 +18,48 @@ import { getCategory } from "../../utils/componentCategories";
18
18
 
19
19
  # Breakpoints
20
20
 
21
+ | Table of Contents |
22
+ | ---------------------------------------------- |
23
+ | 1. [General Information](#general-information) |
24
+ | 2. [CSS Variables](#css-variables) |
25
+ | 3. [Figma Reference](#figma-reference) |
26
+
27
+ ## General Information
28
+
21
29
  The DS adheres to four global breakpoints for responsive layouts and typography.
22
30
 
23
- - Desktop: 1280px
24
- - Tablet Landscape: 960px
25
- - Tablet Portrait: 600px
26
31
  - Mobile: 320px
32
+ - Tablet Portrait: 600px
33
+ - Tablet Landscape: 960px
34
+ - Desktop: 1280px
27
35
 
28
- ### CSS Variables
36
+ ## CSS Variables
29
37
 
30
38
  The following CSS variables are available through the DS.
31
39
 
40
+ ```scss
41
+ --nypl-breakpoint-small: 320px;
42
+ --nypl-breakpoint-medium: 600px;
43
+ --nypl-breakpoint-large: 960px;
44
+ --nypl-breakpoint-xl: 1280px;
32
45
  ```
33
- --breakpoint-xl: 1280px;
34
- --breakpoint-large: 960px;
35
- --breakpoint-medium: 600px;
36
- --breakpoint-small: 320px;
46
+
47
+ ## SCSS Variables
48
+
49
+ If you are using SCSS and imported the NYPL Design System `/dist/resources.scss`
50
+ file, then you can use the following SCSS variables in your media queries or
51
+ SCSS `breakpoint` function (if used).
52
+
53
+ ```scss
54
+ $nypl-breakpoint-small: 320px;
55
+ $nypl-breakpoint-medium: 600px;
56
+ $nypl-breakpoint-large: 960px;
57
+ $nypl-breakpoint-xl: 1280px;
58
+ $nypl-max-width: $nypl-breakpoint-xl;
37
59
  ```
38
60
 
39
- ### Design System Figma Reference
61
+ ## Figma Reference
62
+
63
+ For additional spacing information, please refer to the Figma Main file.
40
64
 
41
- https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17983%3A60146
65
+ - https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=17983%3A60146
@@ -6,18 +6,19 @@ import {
6
6
  Description,
7
7
  } from "@storybook/addon-docs/blocks";
8
8
  import { withDesign } from "storybook-addon-designs";
9
+ import { ButtonGroup } from "@chakra-ui/react";
9
10
 
10
- import { getCategory } from "../../utils/componentCategories";
11
- import Button, { ButtonGroup } from "../Button/Button";
11
+ import Button from "../Button/Button";
12
12
  import { ButtonTypes } from "../Button/ButtonTypes";
13
13
  import Icon from "../Icons/Icon";
14
14
  import {
15
- IconColors,
15
+ IconAlign,
16
16
  IconNames,
17
17
  IconRotationTypes,
18
18
  IconSizes,
19
19
  } from "../Icons/IconTypes";
20
20
  import getCSSVariable from "../../helpers/getCSSVariable";
21
+ import { getCategory } from "../../utils/componentCategories";
21
22
  import DSProvider from "../../theme/provider";
22
23
 
23
24
  <Meta
@@ -26,15 +27,26 @@ import DSProvider from "../../theme/provider";
26
27
  parameters={{
27
28
  design: {
28
29
  type: "figma",
29
- url:
30
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11477%3A2298",
30
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11477%3A2298",
31
31
  },
32
32
  }}
33
33
  />
34
34
 
35
35
  # Buttons
36
36
 
37
- Use the NYPL Design System [Button](https://nypl.github.io/nypl-design-system/storybook-static/?path=/docs/form-elements-button--basic) component to render form buttons.
37
+ | Table of Contents |
38
+ | ---------------------------------------------- |
39
+ | 1. [General Information](#general-information) |
40
+ | 2. [Guidelines](#guidelines) |
41
+ | 3. [Button Groups](#button-groups) |
42
+ | 4. [Button Types](#button-types) |
43
+ | 5. [Patterns](#patterns) |
44
+ | 6. [Figma Reference](#figma-reference) |
45
+
46
+ ## General Information
47
+
48
+ Use the NYPL Design System [Button](https://nypl.github.io/nypl-design-system/storybook-static/?path=/docs/form-elements-button--basic)
49
+ component to render form buttons.
38
50
 
39
51
  ```jsx
40
52
  import { Button, ButtonTypes } from "@nypl/design-system-react-components";
@@ -42,86 +54,53 @@ import { Button, ButtonTypes } from "@nypl/design-system-react-components";
42
54
  <Button buttonType={ButtonTypes.Primary}>Button Text</Button>;
43
55
  ```
44
56
 
45
- ## Style Guide Topics
46
-
47
- For information about using the `Button` component, please see below.
48
-
49
- - [General Guidelines](#general-guidelines)
50
- - [Spacing](#spacing)
51
- - [Button Types](#button-types)
52
- - [Patterns](#patterns)
53
- - [Figma Reference](#figma-reference)
54
-
55
- ## General Guidelines
57
+ ## Guidelines
56
58
 
57
59
  - Button text is optional.
58
60
  - Button text should be title case.
59
61
  - Button icon is optional.
60
62
  - Buttons may have an icon on either the left or the right.
61
- - Buttons by default are blue. However, Donation buttons are red.
62
- - Buttons used for Back to Top actions have a Secondary button style with an arrow icon pointing up.
63
- - When buttons are used in a set (where the user can move forward or backward), the `Primary` button is on the right and the `Secondary` button on the left (i.e. cancel = secondary, submit = primary).
63
+ - Buttons by default are blue. However, Donation callout buttons are red.
64
+ - Buttons used for Back to Top actions have a Secondary button style with an
65
+ arrow icon pointing up.
66
+ - When buttons are used in a group, they should be wrapped in a `ButtonGroup`.
67
+ - When buttons are used in a group where the user can move forward or backward,
68
+ the `Primary` button is on the right and the `Secondary` button on the left
69
+ (i.e. cancel = secondary, submit = primary).
70
+
71
+ ## Button Groups
64
72
 
65
- ## Spacing
73
+ When `Button` components are displayed in a group, use the `ButtonGroup`
74
+ component to handle the spacing and layout. The `ButtonGroup` component will use
75
+ `--nypl-space-xs` (0.5rem) for spacing in horizontal group layouts.
66
76
 
67
- Buttons should use `--space-xs` (0.5rem) for spacing in situations where multiple buttons are aligned in horizontal or vertical layouts. Buttons should use `--space-l` (2rem) for all other spacing situations.
77
+ Standalone `Button` components and the `ButtonGroup` component should use
78
+ `--nypl-space-l` (2rem) for spacing between all other UI elements. This spacing
79
+ can be achieved by using the `Form` component to wrap the `Button`s.
68
80
 
69
81
  <Canvas>
70
82
  <DSProvider>
71
83
  <ButtonGroup>
72
- <Button
73
- buttonType={ButtonTypes.Primary}
74
- attributes={{
75
- style: {
76
- marginRight: getCSSVariable("--space-xs"),
77
- },
78
- }}
79
- >
80
- Button Text
81
- </Button>
82
- <Button
83
- buttonType={ButtonTypes.Primary}
84
- attributes={{
85
- style: {
86
- marginRight: getCSSVariable("--space-xs"),
87
- },
88
- }}
89
- >
90
- <Icon decorative modifiers={["small", "icon-left"]} name="search" />
91
- Button Text
92
- </Button>
93
- <Button
94
- buttonType={ButtonTypes.Primary}
95
- attributes={{
96
- style: {
97
- marginRight: getCSSVariable("--space-xs"),
98
- },
99
- }}
100
- >
84
+ <Button buttonType={ButtonTypes.Primary}>Button Text</Button>
85
+ <Button buttonType={ButtonTypes.Primary}>
101
86
  <Icon
102
- name={IconNames.close}
103
- decorative={true}
104
- size={IconSizes.medium}
87
+ name={IconNames.Search}
88
+ size={IconSizes.Small}
89
+ align={IconAlign.Left}
105
90
  />
106
- </Button>
107
- <Button
108
- buttonType={ButtonTypes.Primary}
109
- attributes={{
110
- style: {
111
- backgroundColor: getCSSVariable("--section-books-and-more-primary"),
112
- marginRight: getCSSVariable("--space-xs"),
113
- },
114
- }}
115
- >
116
91
  Button Text
117
92
  </Button>
93
+ <Button buttonType={ButtonTypes.Primary}>
94
+ <Icon name={IconNames.Close} size={IconSizes.Medium} />
95
+ </Button>
96
+ <Button buttonType={ButtonTypes.Callout}>Donate</Button>
118
97
  <Button buttonType={ButtonTypes.Secondary}>
119
98
  Back to Top
120
99
  <Icon
121
- name={IconNames.arrow}
122
- decorative={true}
123
- iconRotation={IconRotationTypes.rotate180}
124
- modifiers={["small", "icon-right"]}
100
+ name={IconNames.Arrow}
101
+ size={IconSizes.Small}
102
+ align={IconAlign.Right}
103
+ iconRotation={IconRotationTypes.Rotate180}
125
104
  />
126
105
  </Button>
127
106
  </ButtonGroup>
@@ -130,15 +109,20 @@ Buttons should use `--space-xs` (0.5rem) for spacing in situations where multipl
130
109
 
131
110
  ## Button Types
132
111
 
133
- The `buttonType` prop should be used to render various forms of the button component.
112
+ The `buttonType` prop should be used to render various forms of the button
113
+ component. Note that the `SearchBar` type is only used internally in the
114
+ `SearchBar` component.
134
115
 
135
116
  <Canvas>
136
117
  <DSProvider>
137
118
  <ButtonGroup>
138
119
  <Button buttonType={ButtonTypes.Primary}>Primary Button</Button>
139
120
  <Button buttonType={ButtonTypes.Secondary}>Secondary Button</Button>
121
+ <Button buttonType={ButtonTypes.Callout}>Callout Button</Button>
140
122
  <Button buttonType={ButtonTypes.Pill}>Pill Button</Button>
141
123
  <Button buttonType={ButtonTypes.Link}>Link Button</Button>
124
+ <Button buttonType={ButtonTypes.SearchBar}>SearchBar Button</Button>
125
+ <Button buttonType={ButtonTypes.NoBrand}>NoBrand Button</Button>
142
126
  </ButtonGroup>
143
127
  </DSProvider>
144
128
  </Canvas>
@@ -154,6 +138,11 @@ The `buttonType` prop should be used to render various forms of the button compo
154
138
  - often paired with a Primary button
155
139
  - Visual Treatment: rectangular, outlined
156
140
 
141
+ ### ButtonTypes.Callout
142
+
143
+ - used for call to actions such as donation buttons
144
+ - Visual Treatment: rectangular, NYPL red background
145
+
157
146
  ### ButtonTypes.Pill
158
147
 
159
148
  - used for equally weighted actions
@@ -165,31 +154,58 @@ The `buttonType` prop should be used to render various forms of the button compo
165
154
  - used for equally weighted actions
166
155
  - Visual Treatment: text link with underline
167
156
 
157
+ ### ButtonTypes.SearchBar
158
+
159
+ - used internally in the `SearchBar` component for visual flow when it is next
160
+ to the `TextInput` component
161
+ - Visual Treatment: rectangular, filled, no border radius on the left side
162
+
163
+ ### ButtonTypes.NoBrand
164
+
165
+ - used in cases where there is no brand color
166
+ - Visual Treatment: rectangular, filled with a black background
167
+
168
168
  ## Patterns
169
169
 
170
- Buttons are blue by default but should be red when it is intended as a call out.
171
- The "Back to Top" button must be of `ButtonTypes` `Secondary` and must include an up arrow icon.
170
+ - Buttons are blue by default.
171
+ - Buttons that are intended as a call out (i.e. Donation buttons) should be set
172
+ as `ButtonTypes.Callout`.
173
+ - The "Back to Top" button must be set as `ButtonTypes.Secondary` and must
174
+ include an up arrow icon.
175
+ - Previous and Next buttons should be set as `ButtonTypes.Secondary` and be
176
+ wrapped in a `ButtonGroup`.
177
+ - Only use the `ButtonTypes.NoBrand` style where there is no brand color. _This
178
+ should be rarely used._
172
179
 
173
180
  <Canvas>
174
181
  <DSProvider>
175
182
  <ButtonGroup>
176
- <Button
177
- buttonType={ButtonTypes.Primary}
178
- attributes={{
179
- style: {
180
- backgroundColor: getCSSVariable("--section-books-and-more-primary"),
181
- },
182
- }}
183
- >
184
- Donate to this library
185
- </Button>
183
+ <Button buttonType={ButtonTypes.Callout}>Donate to this library</Button>
186
184
  <Button buttonType={ButtonTypes.Secondary}>
187
185
  Back to Top
188
186
  <Icon
189
- name={IconNames.arrow}
190
- decorative={true}
191
- iconRotation={IconRotationTypes.rotate180}
192
- modifiers={["small", "icon-right"]}
187
+ name={IconNames.Arrow}
188
+ iconRotation={IconRotationTypes.Rotate180}
189
+ size={IconSizes.Small}
190
+ align={IconAlign.Right}
191
+ />
192
+ </Button>
193
+ <Button buttonType={ButtonTypes.Secondary}>
194
+ <Icon
195
+ name={IconNames.Arrow}
196
+ iconRotation={IconRotationTypes.Rotate90}
197
+ align={IconAlign.Left}
198
+ size={IconSizes.Small}
199
+ />
200
+ Previous
201
+ </Button>
202
+ <Button buttonType={ButtonTypes.Secondary}>
203
+ Next
204
+ <Icon
205
+ name={IconNames.Arrow}
206
+ iconRotation={IconRotationTypes.Rotate270}
207
+ align={IconAlign.Right}
208
+ size={IconSizes.Small}
193
209
  />
194
210
  </Button>
195
211
  </ButtonGroup>
@@ -200,4 +216,4 @@ The "Back to Top" button must be of `ButtonTypes` `Secondary` and must include a
200
216
 
201
217
  For more styling information, please refer to the Figma Main file.
202
218
 
203
- https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11477%3A2298
219
+ - https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11477%3A2298