@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,6 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { render } from "@testing-library/react";
3
3
  import { axe } from "jest-axe";
4
+ import renderer from "react-test-renderer";
4
5
 
5
6
  import SkeletonLoader from "./SkeletonLoader";
6
7
  import {
@@ -16,189 +17,108 @@ describe("SkeletonLoader Accessibility", () => {
16
17
  });
17
18
 
18
19
  describe("SkeletonLoader", () => {
19
- let container;
20
-
21
- describe("layout", () => {
22
- it("renders default layout", () => {
23
- const utils = render(<SkeletonLoader />);
24
- container = utils.container;
25
-
26
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
27
- expect(container.querySelector(".skeleton-loader")).toHaveAttribute(
28
- "class",
29
- "skeleton-loader skeleton-loader--vertical "
30
- );
31
- expect(container.querySelector(".skeleton-loader")).not.toHaveAttribute(
32
- "class",
33
- "skeleton-loader skeleton-loader--portrait "
34
- );
35
- });
36
-
37
- it("renders vertical layout", () => {
38
- const utils = render(
39
- <SkeletonLoader layout={SkeletonLoaderLayouts.Vertical} />
40
- );
41
- container = utils.container;
42
-
43
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
44
- expect(
45
- container.querySelector(".skeleton-loader--vertical")
46
- ).toBeInTheDocument();
47
- });
48
-
49
- it("renders horizontal layout", () => {
50
- const utils = render(
51
- <SkeletonLoader layout={SkeletonLoaderLayouts.Horizontal} />
52
- );
53
- container = utils.container;
54
-
55
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
56
- expect(
57
- container.querySelector(".skeleton-loader--horizontal")
58
- ).toBeInTheDocument();
59
- });
20
+ it("renders default layout", () => {
21
+ const { container } = render(
22
+ <SkeletonLoader className="skeleton-loader" />
23
+ );
24
+
25
+ expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
60
26
  });
61
27
 
62
- describe("UI elements", () => {
63
- it("renders default elements", () => {
64
- const utils = render(<SkeletonLoader />);
65
- container = utils.container;
66
-
67
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
68
- expect(
69
- container.querySelector(".skeleton-loader-image")
70
- ).toBeInTheDocument();
71
- expect(
72
- container.querySelector(".skeleton-loader-heading")
73
- ).toBeInTheDocument();
74
- expect(
75
- container.querySelector(".skeleton-loader-content")
76
- ).toBeInTheDocument();
77
- expect(
78
- container.querySelector(".skeleton-loader-button")
79
- ).not.toBeInTheDocument();
80
- });
81
-
82
- it("renders without image", () => {
83
- const utils = render(<SkeletonLoader showImage={false} />);
84
- container = utils.container;
85
-
86
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
87
- expect(
88
- container.querySelector(".skeleton-loader-image")
89
- ).not.toBeInTheDocument();
90
- expect(
91
- container.querySelector(".skeleton-loader-heading")
92
- ).toBeInTheDocument();
93
- expect(
94
- container.querySelector(".skeleton-loader-content")
95
- ).toBeInTheDocument();
96
- expect(
97
- container.querySelector(".skeleton-loader-button")
98
- ).not.toBeInTheDocument();
99
- });
100
-
101
- it("renders without heading", () => {
102
- const utils = render(<SkeletonLoader showHeading={false} />);
103
- container = utils.container;
104
-
105
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
106
- expect(
107
- container.querySelector(".skeleton-loader-image")
108
- ).toBeInTheDocument();
109
- expect(
110
- container.querySelector(".skeleton-loader-heading")
111
- ).not.toBeInTheDocument();
112
- expect(
113
- container.querySelector(".skeleton-loader-content")
114
- ).toBeInTheDocument();
115
- expect(
116
- container.querySelector(".skeleton-loader-button")
117
- ).not.toBeInTheDocument();
118
- });
119
-
120
- it("renders without content", () => {
121
- const utils = render(<SkeletonLoader showContent={false} />);
122
- container = utils.container;
123
-
124
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
125
- expect(
126
- container.querySelector(".skeleton-loader-image")
127
- ).toBeInTheDocument();
128
- expect(
129
- container.querySelector(".skeleton-loader-heading")
130
- ).toBeInTheDocument();
131
- expect(
132
- container.querySelector(".skeleton-loader-content")
133
- ).not.toBeInTheDocument();
134
- expect(
135
- container.querySelector(".skeleton-loader-button")
136
- ).not.toBeInTheDocument();
137
- });
138
-
139
- it("renders with button", () => {
140
- const utils = render(<SkeletonLoader showButton={true} />);
141
- container = utils.container;
142
-
143
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
144
- expect(
145
- container.querySelector(".skeleton-loader-image")
146
- ).toBeInTheDocument();
147
- expect(
148
- container.querySelector(".skeleton-loader-heading")
149
- ).toBeInTheDocument();
150
- expect(
151
- container.querySelector(".skeleton-loader-content")
152
- ).toBeInTheDocument();
153
- expect(
154
- container.querySelector(".skeleton-loader-button")
155
- ).toBeInTheDocument();
156
- });
157
-
158
- it("renders with border", () => {
159
- const utils = render(<SkeletonLoader border />);
160
- container = utils.container;
161
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
162
- expect(
163
- container.querySelector(".skeleton-loader--border")
164
- ).toBeInTheDocument();
165
- });
28
+ it("renders in the column or row layout", () => {
29
+ const { container, rerender } = render(
30
+ <SkeletonLoader layout={SkeletonLoaderLayouts.Column} />
31
+ );
32
+
33
+ expect(container.querySelector(".column")).toBeInTheDocument();
34
+
35
+ rerender(<SkeletonLoader layout={SkeletonLoaderLayouts.Row} />);
36
+ expect(container.querySelector(".row")).toBeInTheDocument();
166
37
  });
167
38
 
168
- describe("image aspect ratio", () => {
169
- it("renders square image", () => {
170
- const utils = render(
171
- <SkeletonLoader imageAspectRatio={SkeletonLoaderImageRatios.Square} />
172
- );
173
- container = utils.container;
174
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
175
- expect(
176
- container.querySelector(".skeleton-loader-image--square")
177
- ).toBeInTheDocument();
178
- });
179
-
180
- it("renders portrait image", () => {
181
- const utils = render(
182
- <SkeletonLoader imageAspectRatio={SkeletonLoaderImageRatios.Portrait} />
183
- );
184
- container = utils.container;
185
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
186
- expect(
187
- container.querySelector(".skeleton-loader-image--portrait")
188
- ).toBeInTheDocument();
189
- });
190
-
191
- it("renders landscape image", () => {
192
- const utils = render(
39
+ it("renders default elements", () => {
40
+ const { container } = render(<SkeletonLoader />);
41
+
42
+ // By default, the `SkeletonLoader` renders one image, one heading, and
43
+ // three content elements.
44
+ expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(5);
45
+ });
46
+
47
+ it("renders without image", () => {
48
+ const { container } = render(<SkeletonLoader showImage={false} />);
49
+
50
+ // Only one image is rendered by default.
51
+ expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(4);
52
+ });
53
+
54
+ it("renders without heading", () => {
55
+ const { container } = render(<SkeletonLoader showHeading={false} />);
56
+
57
+ // Only one heading is rendered by default.
58
+ expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(4);
59
+ });
60
+
61
+ it("renders without content", () => {
62
+ const { container } = render(<SkeletonLoader showContent={false} />);
63
+
64
+ // Three content placeholders are rendered by default.
65
+ expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(2);
66
+ });
67
+
68
+ it("renders with button", () => {
69
+ const { container } = render(<SkeletonLoader showButton={true} />);
70
+
71
+ // Only one button is rendered by default.
72
+ expect(container.querySelectorAll(".chakra-skeleton")).toHaveLength(6);
73
+ });
74
+
75
+ it("renders the UI snapshot correctly", () => {
76
+ const basic = renderer.create(<SkeletonLoader />).toJSON();
77
+ const rowLayout = renderer
78
+ .create(<SkeletonLoader layout={SkeletonLoaderLayouts.Row} />)
79
+ .toJSON();
80
+ const columnLayout = renderer
81
+ .create(<SkeletonLoader layout={SkeletonLoaderLayouts.Column} />)
82
+ .toJSON();
83
+ const noImage = renderer
84
+ .create(<SkeletonLoader showImage={false} />)
85
+ .toJSON();
86
+ const noHeading = renderer
87
+ .create(<SkeletonLoader showHeading={false} />)
88
+ .toJSON();
89
+ const noContent = renderer
90
+ .create(<SkeletonLoader showContent={false} />)
91
+ .toJSON();
92
+ const withButton = renderer
93
+ .create(<SkeletonLoader showButton={true} />)
94
+ .toJSON();
95
+ const landscape = renderer
96
+ .create(
193
97
  <SkeletonLoader
194
98
  imageAspectRatio={SkeletonLoaderImageRatios.Landscape}
195
99
  />
196
- );
197
- container = utils.container;
198
- expect(container.querySelector(".skeleton-loader")).toBeInTheDocument();
199
- expect(
200
- container.querySelector(".skeleton-loader-image--landscape")
201
- ).toBeInTheDocument();
202
- });
100
+ )
101
+ .toJSON();
102
+ const portrait = renderer
103
+ .create(
104
+ <SkeletonLoader imageAspectRatio={SkeletonLoaderImageRatios.Portrait} />
105
+ )
106
+ .toJSON();
107
+ const square = renderer
108
+ .create(
109
+ <SkeletonLoader imageAspectRatio={SkeletonLoaderImageRatios.Square} />
110
+ )
111
+ .toJSON();
112
+
113
+ expect(basic).toMatchSnapshot();
114
+ expect(rowLayout).toMatchSnapshot();
115
+ expect(columnLayout).toMatchSnapshot();
116
+ expect(noImage).toMatchSnapshot();
117
+ expect(noHeading).toMatchSnapshot();
118
+ expect(noContent).toMatchSnapshot();
119
+ expect(withButton).toMatchSnapshot();
120
+ expect(landscape).toMatchSnapshot();
121
+ expect(portrait).toMatchSnapshot();
122
+ expect(square).toMatchSnapshot();
203
123
  });
204
124
  });
@@ -1,111 +1,116 @@
1
1
  import * as React from "react";
2
- import bem from "../../utils/bem";
2
+ import {
3
+ Box,
4
+ Skeleton as ChakraSkeleton,
5
+ useMultiStyleConfig,
6
+ } from "@chakra-ui/react";
7
+
3
8
  import {
4
9
  SkeletonLoaderImageRatios,
5
10
  SkeletonLoaderLayouts,
6
11
  } from "./SkeletonLoaderTypes";
7
12
 
8
13
  export interface SkeletonLoaderProps {
9
- /** Optional boolean value to control visibility of border around skeleton loader */
14
+ /** Optional boolean value to control visibility of border around skeleton loader. */
10
15
  border?: boolean;
11
- /** ClassName you can add in addition to `skeleton-loader` */
16
+ /** Additional class name for the Skeleton component. */
12
17
  className?: string;
13
- /** Optional numeric value to control the number of lines for content placeholder; default value is `3` */
18
+ /** Optional numeric value to control the number of lines for content placeholder; default value is `3`. */
14
19
  contentSize?: number;
15
- /** Optional numeric value to control the number of lines for heading placeholder; default value is `1` */
20
+ /** Optional numeric value to control the number of lines for heading placeholder; default value is `1`. */
16
21
  headingSize?: number;
17
- /** Optional value to control the aspect ratio of the image placeholder; default value is `square` */
22
+ /** Optional value to control the aspect ratio of the image placeholder; default value is `square`. */
18
23
  imageAspectRatio?: SkeletonLoaderImageRatios;
19
- /** Optional value to control the position of the image placeholder; default value is `vertical` */
24
+ /** Optional value to control the position of the image placeholder; default value is `column`. */
20
25
  layout?: SkeletonLoaderLayouts;
21
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
22
- modifiers?: string[];
23
- /** Optional boolean value to control visibility of button placeholder */
26
+ /** Optional boolean value to control visibility of button placeholder. */
24
27
  showButton?: boolean;
25
- /** Optional boolean value to control visibility of content placeholder */
28
+ /** Optional boolean value to control visibility of content placeholder. */
26
29
  showContent?: boolean;
27
- /** Optional boolean value to control visibility of image placeholder */
28
- showImage?: boolean;
29
- /** Optional boolean value to control visibility of heading placeholder */
30
+ /** Optional boolean value to control visibility of heading placeholder. */
30
31
  showHeading?: boolean;
31
- /** Optional width value. This value should be entered with the same formatting as a CSS width attribute (ex. `50%`, `640px`, `20rem`). If omitted, the skeleton loader will have a default width of 100%. */
32
+ /** Optional boolean value to control visibility of image placeholder. */
33
+ showImage?: boolean;
34
+ /** Optional width value. This value should be entered with the same
35
+ * formatting as a CSS width attribute (ex. `50%`, `640px`, `20rem`).
36
+ * If omitted, the skeleton loader will have a default width of 100%. */
32
37
  width?: string;
33
38
  }
34
39
 
40
+ /**
41
+ * The `SkeletonLoader` component renders a placeholder to be used while
42
+ * dynamic content is loading.
43
+ */
35
44
  export default function SkeletonLoader(
36
45
  props: React.PropsWithChildren<SkeletonLoaderProps>
37
46
  ) {
38
47
  const {
39
- border,
48
+ border = false,
40
49
  className,
41
50
  contentSize = 3,
42
51
  headingSize = 1,
43
52
  imageAspectRatio = SkeletonLoaderImageRatios.Square,
44
- layout = SkeletonLoaderLayouts.Vertical,
53
+ layout = SkeletonLoaderLayouts.Column,
45
54
  showButton = false,
46
55
  showContent = true,
47
- showImage = true,
48
56
  showHeading = true,
57
+ showImage = true,
49
58
  width,
50
- modifiers = [],
51
59
  } = props;
60
+ const styles = useMultiStyleConfig("SkeletonLoader", {
61
+ border,
62
+ imageAspectRatio,
63
+ showImage,
64
+ variant: layout,
65
+ });
52
66
 
53
- modifiers.push(layout);
54
- {
55
- border && modifiers.push("border");
56
- }
57
-
58
- const imageModifiers = [imageAspectRatio];
59
-
60
- const headingItems = [];
61
- for (let i = 0; i < headingSize; i++) {
62
- headingItems.push(
63
- <div
64
- className={bem("skeleton-loader-heading", imageModifiers, "", [
65
- "skeleton-element",
66
- ])}
67
- ></div>
68
- );
69
- }
70
-
71
- const contentItems = [];
72
- for (let i = 0; i < contentSize; i++) {
73
- contentItems.push(
74
- <div
75
- className={bem("skeleton-loader-content", imageModifiers, "", [
76
- "skeleton-element",
77
- ])}
78
- ></div>
79
- );
80
- }
67
+ /**
68
+ * Generates the Chakra skeleton loader `size` number of times for the
69
+ * "heading" and "content" areas defined by the `type` argument. The last
70
+ * element will have width of `lastWidth`.
71
+ */
72
+ const getSkeletonElements = (type, size = 1, lastWidth = "80%") => {
73
+ return new Array(size).fill(null).map((_, i) => {
74
+ const width = i === size - 1 ? lastWidth : "100%";
75
+ const marginBottomValue =
76
+ i === size - 1 && type === "content" ? "0" : null;
77
+ return (
78
+ <ChakraSkeleton key={`${type}-${i}`} width={width}>
79
+ <Box
80
+ __css={styles[type]}
81
+ style={{ marginBottom: marginBottomValue }}
82
+ />
83
+ </ChakraSkeleton>
84
+ );
85
+ });
86
+ };
81
87
 
82
88
  return (
83
- <div
84
- className={bem("skeleton-loader", modifiers, "", [className])}
85
- style={{ width: width }}
86
- >
89
+ <Box className={className} __css={styles} style={{ width: width }}>
87
90
  {showImage && (
88
- <div className="skeleton-section">
89
- <div
90
- className={bem("skeleton-loader-image", imageModifiers, "", [
91
- "skeleton-element",
92
- ])}
93
- ></div>
94
- </div>
91
+ <ChakraSkeleton>
92
+ <Box __css={{ ...styles.element, ...styles.image }} />
93
+ </ChakraSkeleton>
95
94
  )}
96
- <div style={{ width: "100%" }}>
97
- {showHeading && <div className="skeleton-section">{headingItems}</div>}
98
- {showContent && <div className="skeleton-section">{contentItems}</div>}
95
+ <Box className={layout} __css={styles.container}>
96
+ {showHeading && (
97
+ <Box __css={styles.section}>
98
+ {getSkeletonElements("heading", headingSize, "80%")}
99
+ </Box>
100
+ )}
101
+ {showContent && (
102
+ <Box __css={styles.section}>
103
+ {getSkeletonElements("content", contentSize, "30%")}
104
+ </Box>
105
+ )}
99
106
  {showButton && (
100
- <div className="skeleton-section">
101
- <div
102
- className={bem("skeleton-loader-button", imageModifiers, "", [
103
- "skeleton-element",
104
- ])}
105
- ></div>
106
- </div>
107
+ <Box __css={{ ...styles.section, ...styles.button }}>
108
+ <ChakraSkeleton borderRadius="16px">
109
+ <Box __css={styles.button} />
110
+ </ChakraSkeleton>
111
+ </Box>
107
112
  )}
108
- </div>
109
- </div>
113
+ </Box>
114
+ </Box>
110
115
  );
111
116
  }
@@ -1,6 +1,6 @@
1
1
  export enum SkeletonLoaderLayouts {
2
- Horizontal = "horizontal",
3
- Vertical = "vertical",
2
+ Row = "row",
3
+ Column = "column",
4
4
  }
5
5
 
6
6
  export enum SkeletonLoaderImageRatios {