@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
@@ -1,39 +1,44 @@
1
- /* eslint-disable camelcase */
2
1
  import * as React from "react";
3
- import bem from "../../utils/bem";
4
- import generateUUID from "../../helpers/generateUUID";
2
+ import { Icon as ChakraIcon, Box, useStyleConfig } from "@chakra-ui/react";
5
3
 
4
+ import generateUUID from "../../helpers/generateUUID";
6
5
  import {
7
- IconRotationTypes,
8
- IconNames,
9
- LogoNames,
6
+ IconAlign,
10
7
  IconColors,
8
+ IconNames,
9
+ IconRotationTypes,
11
10
  IconSizes,
11
+ IconTypes,
12
+ LogoNames,
12
13
  } from "./IconTypes";
13
-
14
14
  import iconSvgs from "./IconSvgs";
15
15
 
16
16
  export interface IconProps {
17
- /** Additional attributes to pass to the `<svg>` tag. */
18
- attributes?: { [key: string]: any };
19
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
20
- blockName?: string;
21
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
22
- modifiers?: string[];
17
+ /** Optionally pass in additional Chakra-based styles. */
18
+ additionalStyles?: { [key: string]: any };
19
+ /** Aligns the icon. */
20
+ align?: IconAlign;
23
21
  /** className that appears in addition to "icon" */
24
22
  className?: string;
25
- /** Icons designated as decorative will be ignored by screenreaders */
23
+ /** Overrides default icon color (black). */
24
+ color?: IconColors;
25
+ /** Icons designated as decorative will be ignored by screenreaders. True
26
+ * by default. */
26
27
  decorative?: boolean;
27
- /** This text will be added as a child `<title>` element inside the `<svg>` tag. It is recommended to do this for increased accessibility. */
28
- titleText?: string;
29
28
  /** Rotates the icon clockwise in increments of 90deg */
30
29
  iconRotation?: IconRotationTypes;
31
- /** Overrides default icon color (black). */
32
- color?: IconColors;
33
- /** Sets the icon size. */
34
- size?: IconSizes;
30
+ /** ID that other components can cross reference for accessibility purposes */
31
+ id?: string;
35
32
  /** The name of the icon you want to use. */
36
33
  name?: IconNames | LogoNames;
34
+ /** Sets the icon size. */
35
+ size?: IconSizes;
36
+ /** For accessibility purposes, the text passed in the `title` prop gets
37
+ * rendered in a `title` element in the SVG. This descriptive text is not
38
+ * visible but is needed for screenreaders to describe the graphic. */
39
+ title?: string;
40
+ /** Sets the icon variant type. */
41
+ type?: IconTypes;
37
42
  }
38
43
 
39
44
  /**
@@ -41,63 +46,75 @@ export interface IconProps {
41
46
  */
42
47
  export default function Icon(props: React.PropsWithChildren<IconProps>) {
43
48
  const {
44
- blockName,
45
- decorative = false,
49
+ additionalStyles = {},
50
+ align = "none",
51
+ children,
46
52
  className,
47
- titleText,
48
- iconRotation,
49
- color,
50
- size,
51
- modifiers = [],
53
+ color = IconColors.UiBlack,
54
+ decorative = true,
55
+ iconRotation = IconRotationTypes.Rotate0,
56
+ id = generateUUID(),
52
57
  name,
53
- children,
54
- attributes = [],
58
+ size = IconSizes.Medium,
59
+ title = `${name} icon`,
60
+ type = IconTypes.Default,
55
61
  } = props;
56
-
57
- if (iconRotation) {
58
- modifiers.push(iconRotation);
59
- }
60
-
61
- if (color) {
62
- modifiers.push(color);
63
- }
64
-
65
- if (size) {
66
- modifiers.push(size);
67
- }
68
-
69
- const iconID = generateUUID();
62
+ const styles = useStyleConfig("Icon", {
63
+ align,
64
+ color,
65
+ iconRotation,
66
+ size,
67
+ variant: type,
68
+ });
70
69
  const iconProps = {
71
- className: bem("icon", modifiers, blockName, [className]),
72
- id: iconID,
73
- role: "img",
74
- title: titleText || null,
75
70
  "aria-hidden": decorative,
76
- ...attributes,
71
+ className,
72
+ id,
73
+ role: "img",
74
+ title,
77
75
  };
78
-
79
- // Apply icon props to SVG that was passed as a child.
80
- const renderChildren = () =>
81
- React.Children.map(children, (child) =>
82
- React.cloneElement(child as JSX.Element, { ...iconProps })
83
- );
76
+ let childSVG = null;
84
77
 
85
78
  // Component prop validation
86
79
  if (name && children) {
87
- throw new Error("Icon accepts either a name or children, not both");
80
+ console.warn(
81
+ "Icon accepts either a `name` prop or an `svg` element child, not both."
82
+ );
83
+ return null;
88
84
  } else if (!name && !children) {
89
85
  console.warn(
90
- "Pass a name or any children to Icon to ensure an icon appears"
86
+ "Pass an icon `name` prop or an SVG child to `Icon` to ensure an icon appears."
91
87
  );
88
+ return null;
92
89
  }
93
90
 
94
91
  // The user wants to render an existing icon. Load the icon and render it
95
- // as a component. Otherwise, we're just going to render the children that
96
- // were passed to this component.
92
+ // as a component through Chakra's Icon component. Otherwise, we're going to
93
+ // render the SVG child with NYPL-theme styling.
97
94
  if (name) {
98
- const SvgComponent = iconSvgs[name];
99
- return <SvgComponent {...iconProps} />;
95
+ const SvgComponent: any = iconSvgs[name];
96
+ return (
97
+ <ChakraIcon
98
+ as={SvgComponent}
99
+ {...iconProps}
100
+ __css={{ ...styles, ...additionalStyles }}
101
+ />
102
+ );
103
+ }
104
+
105
+ // If no `name` prop was passed, we expect a child SVG element to be passed.
106
+ // Apply icon props to the SVG child.
107
+ if (
108
+ (children as JSX.Element).type === "svg" ||
109
+ (children as JSX.Element).props.type === "svg" ||
110
+ (children as JSX.Element).props.mdxType === "svg"
111
+ ) {
112
+ childSVG = React.cloneElement(children as JSX.Element, {
113
+ ...iconProps,
114
+ });
115
+ } else {
116
+ console.warn("You must pass an `svg` element to the `Icon` component.");
100
117
  }
101
118
 
102
- return <>{renderChildren()}</>;
119
+ return <Box __css={styles}>{childSVG}</Box>;
103
120
  }
@@ -1,11 +1,22 @@
1
1
  /* eslint-disable camelcase */
2
2
  import accessibility_full from "../../../icons/svg/accessibility_full.svg";
3
3
  import accessibility_partial from "../../../icons/svg/accessibility_partial.svg";
4
+ import action_check_circle from "../../../icons/svg/action_check_circle.svg";
5
+ import action_help_default from "../../../icons/svg/action_help_default.svg";
6
+ import action_help_outline from "../../../icons/svg/action_help_outline.svg";
7
+ import action_launch from "../../../icons/svg/action_launch.svg";
4
8
  import arrow from "../../../icons/svg/arrow.svg";
5
9
  import brooklyn from "../../../icons/svg/brooklyn.svg";
6
10
  import check from "../../../icons/svg/check.svg";
7
11
  import clock from "../../../icons/svg/clock.svg";
8
12
  import close from "../../../icons/svg/close.svg";
13
+ import file_type_audio from "../../../icons/svg/file_type_audio.svg";
14
+ import file_type_doc from "../../../icons/svg/file_type_doc.svg";
15
+ import file_type_generic_doc from "../../../icons/svg/file_type_generic_doc.svg";
16
+ import file_type_image from "../../../icons/svg/file_type_image.svg";
17
+ import file_type_pdf from "../../../icons/svg/file_type_pdf.svg";
18
+ import file_type_spreadsheet from "../../../icons/svg/file_type_spreadsheet.svg";
19
+ import file_type_video from "../../../icons/svg/file_type_video.svg";
9
20
  import download from "../../../icons/svg/download.svg";
10
21
  import error_filled from "../../../icons/svg/error_filled.svg";
11
22
  import error_outline from "../../../icons/svg/error_outline.svg";
@@ -42,6 +53,10 @@ import utility_search from "../../../icons/svg/search.svg";
42
53
  export default {
43
54
  accessibility_full,
44
55
  accessibility_partial,
56
+ action_check_circle,
57
+ action_help_default,
58
+ action_help_outline,
59
+ action_launch,
45
60
  arrow,
46
61
  brooklyn,
47
62
  check,
@@ -50,6 +65,13 @@ export default {
50
65
  download,
51
66
  error_filled,
52
67
  error_outline,
68
+ file_type_audio,
69
+ file_type_doc,
70
+ file_type_generic_doc,
71
+ file_type_image,
72
+ file_type_pdf,
73
+ file_type_spreadsheet,
74
+ file_type_video,
53
75
  headset,
54
76
  logo_brooklyn,
55
77
  logo_nypl,
@@ -1,76 +1,103 @@
1
1
  /* eslint-disable camelcase */
2
- export enum IconRotationTypes {
3
- rotate0 = "rotate-0",
4
- rotate90 = "rotate-90",
5
- rotate180 = "rotate-180",
6
- rotate270 = "rotate-270",
2
+ export enum IconAlign {
3
+ Left = "left",
4
+ Right = "right",
5
+ None = "none",
7
6
  }
8
7
 
9
- export enum IconNames {
10
- accessibility_full = "accessibility_full",
11
- accessibility_partial = "accessibility_partial",
12
- arrow = "arrow",
13
- check = "check",
14
- clock = "clock",
15
- close = "close",
16
- download = "download",
17
- error_filled = "error_filled",
18
- error_outline = "error_outline",
19
- headset = "headset",
20
- minus = "minus",
21
- plus = "plus",
22
- search = "search",
23
- speaker_notes = "speaker_notes",
24
- utility_account_filled = "utility_account_filled",
25
- utility_account_unfilled = "utility_account_unfilled",
26
- utility_hamburger = "utility_hamburger",
27
- utility_search = "utility_search",
8
+ export enum IconTypes {
9
+ Default = "default",
10
+ Breadcrumbs = "breadcrumbs",
28
11
  }
29
12
 
30
- export enum LogoNames {
31
- brooklyn = "brooklyn",
32
- logo_brooklyn = "logo_brooklyn",
33
- logo_nypl = "logo_nypl",
34
- logo_nypl_negative = "logo_nypl_negative",
35
- logo_queens = "logo_queens",
36
- lpa_negative = "lpa_negative",
37
- lpa_positive = "lpa_positive",
38
- nypl_circle_negative = "nypl_circle_negative",
39
- nypl_circle_positive = "nypl_circle_positive",
40
- nypl_full_lock_up_negative = "nypl_full_lock_up_negative",
41
- nypl_full_lock_up = "nypl_full_lock_up",
42
- nypl_no_lion_negative = "nypl_no_lion_negative",
43
- nypl_no_lion_positive = "nypl_no_lion_positive",
44
- queens_long = "queens_long",
45
- queens_stacked = "queens_stacked",
46
- schomburg_circle = "schomburg_circle",
47
- schomburg_positive = "schomburg_positive",
48
- simplye_black = "simplye_black",
49
- simplye_color = "simplye_color",
50
- snfl_negative = "snfl_negative",
51
- snfl_positive = "snfl_positive",
13
+ export enum IconRotationTypes {
14
+ Rotate0 = "rotate0",
15
+ Rotate90 = "rotate90",
16
+ Rotate180 = "rotate180",
17
+ Rotate270 = "rotate270",
52
18
  }
53
19
 
54
20
  export enum IconColors {
55
- ui_black = "ui-black",
56
- ui_white = "ui-white",
57
- brand_primary = "brand-primary",
58
- brand_secondary = "brand-secondary",
59
- section_whats_on_primary = "section-whats-on-primary",
60
- section_books_and_more_primary = "section-books-and-more-primary",
61
- section_research_primary = "section-research-primary",
62
- section_research_secondary = "section-research-secondary",
63
- section_locations_primary = "section-locations-primary",
64
- section_research_library_lpa = "section-research-library-lpa",
65
- section_research_library_schomburg = "section-research-library-schomburg",
66
- section_research_library_schwartzman = "section-research-library-schwartzman",
21
+ UiBlack = "ui.black",
22
+ UiWhite = "ui.white",
23
+ BrandPrimary = "brand.primary",
24
+ BrandSecondary = "brand.secondary",
25
+ SectionWhatsOnPrimary = "section.whats-on.primary",
26
+ SectionWhatsOnSecondary = "section.whats-on.secondary",
27
+ SectionBooksAndMorePrimary = "section.books-and-more.primary",
28
+ SectionBooksAndMoreSecondary = "section.books-and-more.secondary",
29
+ SectionResearchPrimary = "section.research.primary",
30
+ SectionResearchSecondary = "section.research.secondary",
31
+ SectionLocationsPrimary = "section.locations.primary",
32
+ SectionLocationsSecondary = "section.locations.secondary",
33
+ SectionBlogsPrimary = "section.blogs.primary",
34
+ SectionBlogsSecondary = "section.blogs.secondary",
35
+ SectionResearchLibraryLpa = "section.research-library.lpa",
36
+ SectionResearchLibrarySchomburg = "section.research-library.schomburg",
37
+ SectionResearchLibrarySchwartzman = "section.research-library.schwartzman",
67
38
  }
68
39
 
69
40
  export enum IconSizes {
70
- small = "small",
71
- medium = "medium",
72
- large = "large",
73
- xlarge = "xlarge",
74
- xxlarge = "xxlarge",
75
- xxxlarge = "xxxlarge",
41
+ Small = "small",
42
+ Medium = "medium",
43
+ Large = "large",
44
+ ExtraLarge = "xlarge",
45
+ ExtraExtraLarge = "xxlarge",
46
+ ExtraExtraExtraLarge = "xxxlarge",
47
+ }
48
+
49
+ export enum IconNames {
50
+ AccessibilityFull = "accessibility_full",
51
+ AccessibilityPartial = "accessibility_partial",
52
+ ActionCheckCircle = "action_check_circle",
53
+ ActionHelpDefault = "action_help_default",
54
+ ActionHelpOutline = "action_help_outline",
55
+ ActionLaunch = "action_launch",
56
+ Arrow = "arrow",
57
+ Check = "check",
58
+ Clock = "clock",
59
+ Close = "close",
60
+ Download = "download",
61
+ ErrorFilled = "error_filled",
62
+ ErrorOutline = "error_outline",
63
+ FileTypeAudio = "file_type_audio",
64
+ FileTypeDoc = "file_type_doc",
65
+ FileTypeGenericDoc = "file_type_generic_doc",
66
+ FileTypeImage = "file_type_image",
67
+ FileTypePdf = "file_type_pdf",
68
+ FileTypeSpreadsheet = "file_type_spreadsheet",
69
+ FileTypeVideo = "file_type_video",
70
+ Headset = "headset",
71
+ Minus = "minus",
72
+ Plus = "plus",
73
+ Search = "search",
74
+ SpeakerNotes = "speaker_notes",
75
+ UtilityAccountFilled = "utility_account_filled",
76
+ UtilityAccountUnfilled = "utility_account_unfilled",
77
+ UtilityHamburger = "utility_hamburger",
78
+ UtilitySearch = "utility_search",
79
+ }
80
+
81
+ export enum LogoNames {
82
+ Brooklyn = "brooklyn",
83
+ LogoBrooklyn = "logo_brooklyn",
84
+ LogoNypl = "logo_nypl",
85
+ LogoNyplNegative = "logo_nypl_negative",
86
+ LogoQueens = "logo_queens",
87
+ LpaNegative = "lpa_negative",
88
+ LpaPositive = "lpa_positive",
89
+ NyplCircleNegative = "nypl_circle_negative",
90
+ NyplCirclePositive = "nypl_circle_positive",
91
+ NyplFullLockUpNegative = "nypl_full_lock_up_negative",
92
+ NyplFullLockUp = "nypl_full_lock_up",
93
+ NyplNoLionNegative = "nypl_no_lion_negative",
94
+ NyplNoLionPositive = "nypl_no_lion_positive",
95
+ QueensLong = "queens_long",
96
+ QueensStacked = "queens_stacked",
97
+ SchomburgCircle = "schomburg_circle",
98
+ SchomburgPositive = "schomburg_positive",
99
+ SimplyeBlack = "simplye_black",
100
+ SimplyeColor = "simplye_color",
101
+ SnflNegative = "snfl_negative",
102
+ SnflPositive = "snfl_positive",
76
103
  }
@@ -0,0 +1,220 @@
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 Image from "./Image";
12
+ import { ImageRatios, ImageSizes, ImageTypes } from "./ImageTypes";
13
+ import Heading from "../Heading/Heading";
14
+ import { getCategory } from "../../utils/componentCategories";
15
+
16
+ <Meta
17
+ title={getCategory("Image")}
18
+ component={Image}
19
+ decorators={[withDesign]}
20
+ parameters={{
21
+ design: {
22
+ type: "figma",
23
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11896%3A45379",
24
+ },
25
+ jest: ["Image.test.tsx"],
26
+ }}
27
+ argTypes={{
28
+ alt: { table: { disable: true } },
29
+ className: { table: { disable: true } },
30
+ component: { table: { disable: true } },
31
+ }}
32
+ />
33
+
34
+ # Image
35
+
36
+ | Component Version | DS Version |
37
+ | ----------------- | ---------- |
38
+ | Added | `0.0.6` |
39
+ | Latest | `0.25.3` |
40
+
41
+ <Description of={Image} />
42
+
43
+ <p>
44
+ If you want a simple HTML `img` element then don't pass in values for the
45
+ `imageAspectRatio` or `imageSize` props.
46
+ </p>
47
+
48
+ <Canvas>
49
+ <Story
50
+ name="Image Props"
51
+ args={{
52
+ alt: "Alt text",
53
+ imageAspectRatio: ImageRatios.TwoByOne,
54
+ imageCaption: "Image caption",
55
+ imageCredit: "Image credit",
56
+ imageSize: ImageSizes.Medium,
57
+ imageType: ImageTypes.Default,
58
+ src: "https://placeimg.com/400/300/animals",
59
+ }}
60
+ >
61
+ {(args) => <Image {...args} />}
62
+ </Story>
63
+ </Canvas>
64
+
65
+ <ArgsTable story="Image Props" />
66
+
67
+ ## Image Figure
68
+
69
+ By passing in `imageCredit` or `imageCaption`, the `Image` component will
70
+ render an HTML `figure` element and render an `img` element inside with the
71
+ proper props. If no `imageCredit` or `imageCaption` prop values are passed,
72
+ then an `img` element will be rendered with or without wrapper style divs.
73
+
74
+ <Canvas>
75
+ <Story
76
+ name="Figure and figcaption"
77
+ args={{
78
+ alt: "Alt text",
79
+ imageAspectRatio: ImageRatios.ThreeByTwo,
80
+ imageCaption: "Image caption",
81
+ imageCredit: "Image credit",
82
+ imageSize: ImageSizes.Medium,
83
+ imageType: ImageTypes.Default,
84
+ src: "https://placeimg.com/400/300/animals",
85
+ }}
86
+ argTypes={{
87
+ imageAspectRatio: { table: { disable: true } },
88
+ imageCaption: { table: { disable: true } },
89
+ imageCredit: { table: { disable: true } },
90
+ imageSize: { table: { disable: true } },
91
+ imageType: { table: { disable: true } },
92
+ src: { table: { disable: true } },
93
+ }}
94
+ >
95
+ {(args) => <Image {...args} />}
96
+ </Story>
97
+ </Canvas>
98
+
99
+ ## Image Sizes
100
+
101
+ Use the `ImageSizes` prop to set the desired size.
102
+
103
+ <Canvas>
104
+ <Story name="Image Sizes">
105
+ <VStack spacing="xs">
106
+ <Heading id="Small" text="ImageSizes.Small" />
107
+ <Image
108
+ alt="Alt text"
109
+ imageSize={ImageSizes.Small}
110
+ src="https://placeimg.com/400/300/animals"
111
+ />
112
+ <Heading id="Medium" text="ImageSizes.Medium" />
113
+ <Image
114
+ alt="Alt text"
115
+ imageSize={ImageSizes.Medium}
116
+ src="https://placeimg.com/400/300/animals"
117
+ />
118
+ <Heading id="Large" text="ImageSizes.Large" />
119
+ <Image
120
+ alt="Alt text"
121
+ imageSize={ImageSizes.Large}
122
+ src="https://placeimg.com/400/300/animals"
123
+ />
124
+ <Heading id="Default" text="ImageSizes.Default" />
125
+ <Image alt="Alt text" src="https://placeimg.com/400/300/animals" />
126
+ </VStack>
127
+ </Story>
128
+ </Canvas>
129
+
130
+ ## Image Aspect Ratios
131
+
132
+ Use the `imageAspectRatio` prop to set the desired aspect ratio. Note: the
133
+ following example has `imageSize` set to `ImageSizes.Small`.
134
+
135
+ For a better viewing experience, the `Image` components below have been wrapped
136
+ in an element with a fixed width value.
137
+
138
+ <Canvas>
139
+ <Story name="Image Aspect Ratios">
140
+ <VStack spacing="xs" maxWidth="360px" margin="auto">
141
+ <Heading id="fourbythree" text="ImageRatios.FourByThree" />
142
+ <Image
143
+ alt="Alt text"
144
+ imageAspectRatio={ImageRatios.FourByThree}
145
+ src="https://placeimg.com/400/300/animals"
146
+ />
147
+ <Heading id="onebytwo" text="ImageRatios.OneByTwo" />
148
+ <Image
149
+ alt="Alt text"
150
+ imageAspectRatio={ImageRatios.OneByTwo}
151
+ src="https://placeimg.com/400/300/animals"
152
+ />
153
+ <Heading id="original" text="ImageRatios.Original" />
154
+ <Image
155
+ alt="Alt text"
156
+ imageAspectRatio={ImageRatios.Original}
157
+ src="https://placeimg.com/400/300/animals"
158
+ />
159
+ <Heading id="sixteenbynine" text="ImageRatios.SixteenByNine" />
160
+ <Image
161
+ alt="Alt text"
162
+ imageAspectRatio={ImageRatios.SixteenByNine}
163
+ src="https://placeimg.com/400/300/animals"
164
+ />
165
+ <Heading id="square" text="ImageRatios.Square" />
166
+ <Image
167
+ alt="Alt text"
168
+ imageAspectRatio={ImageRatios.Square}
169
+ src="https://placeimg.com/400/300/animals"
170
+ />
171
+ <Heading id="threebyfour" text="ImageRatios.ThreeByFour" />
172
+ <Image
173
+ alt="Alt text"
174
+ imageAspectRatio={ImageRatios.ThreeByFour}
175
+ src="https://placeimg.com/400/300/animals"
176
+ />
177
+ <Heading id="threebytwo" text="ImageRatios.ThreeByTwo" />
178
+ <Image
179
+ alt="Alt text"
180
+ imageAspectRatio={ImageRatios.ThreeByTwo}
181
+ src="https://placeimg.com/400/300/animals"
182
+ />
183
+ <Heading id="twobyone" text="ImageRatios.TwoByOne" />
184
+ <Image
185
+ alt="Alt text"
186
+ imageAspectRatio={ImageRatios.TwoByOne}
187
+ src="https://placeimg.com/400/300/animals"
188
+ />
189
+ </VStack>
190
+ </Story>
191
+ </Canvas>
192
+
193
+ ## Image Types
194
+
195
+ Use the `imageType` prop to get an image variant. Note that to get a perfect
196
+ circle, the `imageAspectRatio` prop _must_ be set to `ImageRatios.Square`.
197
+
198
+ For a better viewing experience, the `Image` components below have been wrapped
199
+ in an element with a fixed width value.
200
+
201
+ <Canvas>
202
+ <Story name="Image Types">
203
+ <VStack spacing="xs" maxWidth="360px" margin="auto">
204
+ <Heading id="default" text="ImageTypes.Default" />
205
+ <Image
206
+ alt="Alt text"
207
+ imageAspectRatio={ImageRatios.Square}
208
+ imageType={ImageTypes.Default}
209
+ src="https://placeimg.com/400/400/animals"
210
+ />
211
+ <Heading id="circle" text="ImageTypes.Circle" />
212
+ <Image
213
+ alt="Alt text"
214
+ imageAspectRatio={ImageRatios.Square}
215
+ imageType={ImageTypes.Circle}
216
+ src="https://placeimg.com/400/400/animals"
217
+ />
218
+ </VStack>
219
+ </Story>
220
+ </Canvas>