@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
@@ -3,24 +3,17 @@ import {
3
3
  Story,
4
4
  Canvas,
5
5
  ArgsTable,
6
- Preview,
7
6
  Description,
8
7
  } from "@storybook/addon-docs/blocks";
9
8
  import { withDesign } from "storybook-addon-designs";
10
- import Card from "../Card/Card";
9
+
11
10
  import Heading from "../Heading/Heading";
12
- import Icon from "../Icons/Icon";
13
- import { IconNames, IconRotationTypes } from "../Icons/IconTypes";
11
+ import { HeadingLevels } from "../Heading/HeadingTypes";
14
12
  import Image from "../Image/Image";
15
13
  import Link from "../Link/Link";
16
14
  import { LinkTypes } from "../Link/LinkTypes";
17
15
  import List from "./List";
18
16
  import { ListTypes } from "./ListTypes";
19
- import {
20
- animalCrossingDefinitions,
21
- cardsList,
22
- listRenderer,
23
- } from "./List.stories.tsx";
24
17
  import { getCategory } from "../../utils/componentCategories";
25
18
 
26
19
  <Meta
@@ -36,16 +29,15 @@ import { getCategory } from "../../utils/componentCategories";
36
29
  jest: ["List.test.tsx"],
37
30
  }}
38
31
  argTypes={{
39
- blockName: { table: { disable: true } },
40
- modifiers: { table: { disable: true } },
41
32
  children: { table: { disable: true } },
42
- definitions: { table: { disable: true } },
43
- itemGroups: { table: { disable: true } },
33
+ className: { table: { disable: true } },
34
+ id: { table: { disable: true } },
44
35
  listItems: { table: { disable: true } },
45
36
  type: {
46
37
  control: {
47
38
  type: "radio",
48
39
  },
40
+ options: Object.keys(ListTypes),
49
41
  },
50
42
  }}
51
43
  />
@@ -55,33 +47,119 @@ import { getCategory } from "../../utils/componentCategories";
55
47
  | Component Version | DS Version |
56
48
  | ----------------- | ---------- |
57
49
  | Added | `0.7.0` |
58
- | Latest | `0.23.2` |
50
+ | Latest | `0.25.2` |
59
51
 
60
52
  <Description of={List} />
61
53
 
62
- <Preview withToolbar>
54
+ export const animalCrossingDefinitions = [
55
+ {
56
+ term: "Mahi-mahi",
57
+ definition:
58
+ 'The mahi-mahi is an ocean fish known for its wide, somewhat-cute face. It can reach over six feet long. It is known by different names including "dolphinfish," even though it has no relation to dolphins. They live in only in warm, tropical waters...which perhaps explains the relaxed, happy look on their faces.',
59
+ },
60
+ {
61
+ term: "Golden trout",
62
+ definition:
63
+ "The golden trout is a beautifully colored fish that can only live in very clean waters. They are difficult to come across since they are found only in high mountain streams. As a side note, I find it much easier to appreciate fish that aren't such prima donnas about everything.",
64
+ },
65
+ {
66
+ term: "Rainbowfish",
67
+ definition:
68
+ 'The rainbowfish is a tropical fish known for its metallic colors and beautiful fins. There are over 50 different species, each unique and pleasing color. I must say, it does make me wish for feathers of a more exciting hue than "underbaked brownie."',
69
+ },
70
+ {
71
+ term: "Suckerfish",
72
+ definition:
73
+ "The suckerfish is a curious fish that likes to attach itself with its sucker mouth to larger marine animals. The benefit to the suckerfish is that it gets to eat smaller parasites and dead skin off the host's body. Amusingly, some people have used suckerfish on cords to catch large turtles with the fish's own suction! I imagine this practice is the cause of some awkward conversations between fish and turtle, eh wot?",
74
+ },
75
+ ];
76
+ export const itemGroups = [
77
+ "Art",
78
+ "Bushes",
79
+ "Clothing",
80
+ "DIY Recipes",
81
+ "Flowers",
82
+ "Fossils",
83
+ "Fruits",
84
+ "Furniture",
85
+ "Materials",
86
+ "NPC",
87
+ "Songs",
88
+ "Tools",
89
+ "Villagers",
90
+ ];
91
+ export const definitions = [
92
+ {
93
+ term: "Balrogs",
94
+ definition:
95
+ 'Demonic creatures of fire and shadow, Balrogs were fallen Maiar, loyal to the first Dark Lord, Morgoth. They participated in the wars of the First Age of Middle-earth but were mostly destroyed during the War of Wrath which ended the Age. By the Third Age, the only remaining Balrog was "Durin\'s Bane," the Balrog of Moria, killed by Gandalf.',
96
+ },
97
+ {
98
+ term: "Dwarves",
99
+ definition:
100
+ "The race of Dwarves preferred to live in mountains and caves, settling in places such as Erebor (the Lonely Mountain), the Iron Hills, the Blue Mountains, and Moria (Khazad-dûm) in the Misty Mountains. Aulë the Smith created Dwarves; he also invented the Dwarven language, known as Khuzdul. Dwarves mined and worked precious metals throughout the mountains of Middle-earth. The seven different groups of Dwarf-folk originated in the locations where the Seven Fathers of the Dwarves first awoke before the First Age.",
101
+ },
102
+ {
103
+ term: "Elves",
104
+ definition:
105
+ 'The Elves, or Firstborn, were the first of Eru\'s Children to awaken. Born under the stars before the ascension of the Moon and the Sun, they retain a special love for light and an inner spirit endowed with unique gifts. They call themselves the Quendi, or "Speakers", for they were the first to utter words; and, even now, no race understands language and song like the Firstborn. Fair and fine featured, brilliant and proud, immortal and strong, tall and agile, they are the most blessed of the Free Peoples. They can see as well under moon or starlight as a man at the height of day. They cannot become sick or scarred, but if an Elf should die, from violence or losing the will to live from grief, their spirit goes to the halls of Mandos, and as they are bound to Arda and cannot leave until the world is broken and remade. Elven skill and agility is legendary: for instance, walking atop freshly fallen snow without leaving a trace of their passing. On a clear day they can see ten miles with perfect clarity and detail up to 100 miles. These gifts come at great cost, though: they are strongly bound to Fate (see Mandos) and hated by Morgoth. No other race has been blessed and cursed more than the Quendi.',
106
+ },
107
+ {
108
+ term: "Ents",
109
+ definition:
110
+ "Ents were an ancient race of tree-like creatures, having become like the trees that they shepherd. They were created by Yavanna and given life by Ilúvatar. By the Third Age, they were a dwindling race, having long ago lost their mates, the Entwives.",
111
+ },
112
+ {
113
+ term: "Hobbits",
114
+ definition:
115
+ 'Hobbits are a race of Middle-earth, also known as "halflings" on account of their short stature, roughly half the size of men. They are characterized by curly hair on their heads and leathery feet that have furry insteps, for which they did not wear shoes. Many hobbits live in the Shire as well as Bree, and they once lived in the vales of the Anduin. They are fond of an unadventurous life of farming, eating, and socializing. There were three types of Hobbits: The Harfoots were the most numerous. The Stoors had an affinity for water, boats and swimming; the Fallohides were an adventurous people. The origin of hobbits is unclear, but of all the races they have the closest affinity to men, and in the Prologue to The Lord of the Rings Tolkien calls them relatives of men.',
116
+ },
117
+ ];
118
+
119
+ <Canvas withToolbar>
63
120
  <Story
64
121
  name="List"
65
122
  args={{
66
123
  id: "nypl-list",
124
+ noStyling: false,
125
+ title: "Middle-Earth Peoples",
67
126
  type: ListTypes.Unordered,
68
- title: "",
69
127
  }}
70
128
  >
71
- {(args) => listRenderer(args)}}
129
+ {(args) => (
130
+ <List {...args} type={ListTypes[args.type]}>
131
+ {ListTypes[args.type] !== ListTypes.Definition
132
+ ? itemGroups.map((item, i) => <li key={i}>{item}</li>)
133
+ : definitions.map((item, i) => [
134
+ <dt key={`dt_${i}`}>{item.term}</dt>,
135
+ <dd key={`dd_${i}`}>{item.definition}</dd>,
136
+ ])}
137
+ </List>
138
+ )}
72
139
  </Story>
73
- </Preview>
140
+ </Canvas>
74
141
 
75
142
  <ArgsTable story="List" />
76
143
 
77
144
  ## Definition List
78
145
 
79
- <Preview withToolbar>
146
+ To render a definition list, pass in `ListTypes.Definition` to the `type` prop.
147
+ The optional `title` prop will now render above the definition list element.
148
+ This type of list renders `dt` and `dd` elements.
149
+
150
+ ```jsx
151
+ <List type={ListTypes.Definition}>
152
+ <dt>Term</dt>
153
+ <dd>Definition</dd>
154
+ </List>
155
+ ```
156
+
157
+ <Canvas>
80
158
  <Story
81
159
  name="Definition List"
82
160
  args={{
83
161
  id: "nypl-list2",
84
- type: ListTypes.Definition,
162
+ noStyling: false,
85
163
  title: "Middle-Earth Peoples",
86
164
  }}
87
165
  argTypes={{
@@ -95,39 +173,30 @@ import { getCategory } from "../../utils/componentCategories";
95
173
  },
96
174
  }}
97
175
  >
98
- {(args) => listRenderer(args)}}
99
- </Story>
100
- </Preview>
101
-
102
- ## Ordered Card List
103
-
104
- <Preview withToolbar>
105
- <Story
106
- name="Ordered Card List"
107
- args={{
108
- id: "nypl-list3",
109
- }}
110
- argTypes={{
111
- type: { table: { disable: true } },
112
- title: { table: { disable: true } },
113
- }}
114
- >
115
- {(args) => <List type={ListTypes.Ordered}>{cardsList}</List>}
176
+ {(args) => (
177
+ <List {...args} type={ListTypes.Definition}>
178
+ {definitions.map((item, i) => [
179
+ <dt key={`dt_${i}`}>{item.term}</dt>,
180
+ <dd key={`dd_${i}`}>{item.definition}</dd>,
181
+ ])}
182
+ </List>
183
+ )}
116
184
  </Story>
117
- </Preview>
185
+ </Canvas>
118
186
 
119
187
  ## Definition List of Links
120
188
 
121
- <Preview withToolbar>
189
+ An example with HTML elements inside of the `dd` elements.
190
+
191
+ <Canvas>
122
192
  <Story
123
193
  name="Definition List of Links"
124
194
  args={{
125
- type: ListTypes.Definition,
195
+ noStyling: false,
126
196
  title: "Details",
127
197
  }}
128
198
  argTypes={{
129
199
  type: { table: { disable: true } },
130
- title: { table: { disable: true } },
131
200
  }}
132
201
  parameters={{
133
202
  design: {
@@ -138,7 +207,7 @@ import { getCategory } from "../../utils/componentCategories";
138
207
  }}
139
208
  >
140
209
  {(args) => (
141
- <List title="Details" type={ListTypes.Definition}>
210
+ <List {...args} type={ListTypes.Definition}>
142
211
  <dt>Authors</dt>
143
212
  <dd>
144
213
  <a href="#">Chirwa, Ephraim Wadonda, author</a>
@@ -177,7 +246,7 @@ import { getCategory } from "../../utils/componentCategories";
177
246
  </List>
178
247
  )}
179
248
  </Story>
180
- </Preview>
249
+ </Canvas>
181
250
 
182
251
  ## Lists with Data Props
183
252
 
@@ -185,6 +254,8 @@ If `li` or `dt`/`dd` elements cannot be passed as children to the `List` element
185
254
  an array with data can be passed into the `listItems` prop. Note: either
186
255
  children elements or the `listItems` prop should be passed but not both.
187
256
 
257
+ ### Unordered and Ordered
258
+
188
259
  For lists of type `ListTypes.Unordered` (ul) or `ListTypes.Ordered` (ol), `li`
189
260
  list item elements can be passed as children. If that's not possible but the
190
261
  data to render is stored as an array of strings, then that data array can be
@@ -204,6 +275,8 @@ const fishArray = ["Mahi-mahi", "Golden trout", "Rainbowfish", "Suckerfish"];
204
275
  <List type={ListTypes.Unordered} listItems={fishArray} />
205
276
  ```
206
277
 
278
+ ### Definition
279
+
207
280
  For lists of type `ListTypes.Definition` (dl), `dt` and `dd` elements can be
208
281
  passed as children. If that's not possible but the data to render is stored as
209
282
  an array of objects, then that data array can be passed into `listItems`. The
@@ -242,24 +315,24 @@ const fishDefinitions = [
242
315
  }
243
316
  ];
244
317
  <List
245
- type={ListTypes.Definition}
246
- title="Animal Crossing Fish"
247
318
  listItems={fishDefinitions}
319
+ title="Animal Crossing Fish"
320
+ type={ListTypes.Definition}
248
321
  />
249
322
  ```
250
323
 
251
- <Preview>
324
+ <Canvas>
252
325
  <Story
253
326
  name="List with Data Props"
254
327
  args={{
255
- type: ListTypes.Definition,
256
- title: "Animal Crossing Fish",
257
328
  listItems: animalCrossingDefinitions,
329
+ noStyling: false,
330
+ title: "Animal Crossing Fish",
258
331
  }}
259
332
  argTypes={{
260
333
  type: { table: { disable: true } },
261
334
  }}
262
335
  >
263
- {(args) => <List {...args} />}
336
+ {(args) => <List {...args} type={ListTypes.Definition} />}
264
337
  </Story>
265
- </Preview>
338
+ </Canvas>
@@ -1,53 +1,77 @@
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 List from "./List";
6
7
  import { ListTypes } from "./ListTypes";
7
8
 
8
- describe("Link Accessibility", () => {
9
- it("passes axe accessibility test", async () => {
10
- const { container } = render(
9
+ const fishArray = ["Mahi-mahi", "Golden trout", "Rainbowfish", "Suckerfish"];
10
+ const fishDefinitions = [
11
+ {
12
+ term: "Mahi-mahi",
13
+ definition: "The mahi-mahi is an ocean fish known...",
14
+ },
15
+ {
16
+ term: "Golden trout",
17
+ definition: "The golden trout is a beautifully colored fish...",
18
+ },
19
+ ];
20
+
21
+ describe("List Accessibility", () => {
22
+ it("passes axe accessibility test for unordered list", async () => {
23
+ const { container, rerender } = render(
11
24
  <List type={ListTypes.Unordered}>
12
25
  <li>Mahi-mahi</li>
13
26
  <li>Golden trout</li>
14
27
  </List>
15
28
  );
16
29
  expect(await axe(container)).toHaveNoViolations();
30
+
31
+ rerender(<List type={ListTypes.Unordered} listItems={fishArray} />);
32
+ expect(await axe(container)).toHaveNoViolations();
33
+ });
34
+ it("passes axe accessibility test for ordered list", async () => {
35
+ const { container, rerender } = render(
36
+ <List type={ListTypes.Ordered}>
37
+ <li>Mahi-mahi</li>
38
+ <li>Golden trout</li>
39
+ </List>
40
+ );
41
+ expect(await axe(container)).toHaveNoViolations();
42
+
43
+ rerender(<List type={ListTypes.Ordered} listItems={fishArray} />);
44
+ expect(await axe(container)).toHaveNoViolations();
45
+ });
46
+ it("passes axe accessibility test for definition list", async () => {
47
+ const { container } = render(
48
+ <List
49
+ type={ListTypes.Definition}
50
+ title="Animal Crossing Fish"
51
+ listItems={fishDefinitions}
52
+ />
53
+ );
54
+ expect(await axe(container)).toHaveNoViolations();
17
55
  });
18
56
  });
19
57
 
20
58
  describe("List", () => {
21
- const fishArray = ["Mahi-mahi", "Golden trout", "Rainbowfish", "Suckerfish"];
22
- const fishDefinitions = [
23
- {
24
- term: "Mahi-mahi",
25
- definition: "The mahi-mahi is an ocean fish known...",
26
- },
27
- {
28
- term: "Golden trout",
29
- definition: "The golden trout is a beautifully colored fish...",
30
- },
31
- ];
32
-
33
59
  it("renders unordered list", () => {
34
- const utils = render(
60
+ render(
35
61
  <List type={ListTypes.Unordered}>
36
62
  <li>Mahi-mahi</li>
37
63
  <li>Golden trout</li>
38
64
  </List>
39
65
  );
40
- expect(utils.container.querySelector(".list")).toBeInTheDocument();
66
+
41
67
  expect(screen.getAllByRole("listitem")).toHaveLength(2);
42
68
  expect(screen.getByText("Mahi-mahi")).toBeInTheDocument();
43
69
  expect(screen.getByText("Golden trout")).toBeInTheDocument();
44
70
  });
45
71
 
46
72
  it("renders unordered list with the `listItems` prop", () => {
47
- const utils = render(
48
- <List type={ListTypes.Unordered} listItems={fishArray} />
49
- );
50
- expect(utils.container.querySelector(".list")).toBeInTheDocument();
73
+ render(<List type={ListTypes.Unordered} listItems={fishArray} />);
74
+
51
75
  expect(screen.getAllByRole("listitem")).toHaveLength(4);
52
76
  expect(screen.getByText("Mahi-mahi")).toBeInTheDocument();
53
77
  expect(screen.getByText("Golden trout")).toBeInTheDocument();
@@ -56,23 +80,21 @@ describe("List", () => {
56
80
  });
57
81
 
58
82
  it("renders ordered list", () => {
59
- const utils = render(
83
+ render(
60
84
  <List type={ListTypes.Ordered}>
61
85
  <li>Mahi-mahi</li>
62
86
  <li>Golden trout</li>
63
87
  </List>
64
88
  );
65
- expect(utils.container.querySelector(".list")).toBeInTheDocument();
89
+
66
90
  expect(screen.getAllByRole("listitem")).toHaveLength(2);
67
91
  expect(screen.getByText("Mahi-mahi")).toBeInTheDocument();
68
92
  expect(screen.getByText("Golden trout")).toBeInTheDocument();
69
93
  });
70
94
 
71
95
  it("renders ordered list with the `listItems` prop", () => {
72
- const utils = render(
73
- <List type={ListTypes.Ordered} listItems={fishArray} />
74
- );
75
- expect(utils.container.querySelector(".list")).toBeInTheDocument();
96
+ render(<List type={ListTypes.Ordered} listItems={fishArray} />);
97
+
76
98
  expect(screen.getAllByRole("listitem")).toHaveLength(4);
77
99
  expect(screen.getByText("Mahi-mahi")).toBeInTheDocument();
78
100
  expect(screen.getByText("Golden trout")).toBeInTheDocument();
@@ -105,50 +127,107 @@ describe("List", () => {
105
127
  expect(screen.getAllByRole("definition")).toHaveLength(2);
106
128
  });
107
129
 
108
- it("throws an error when you pass an ordered or unordered list children that aren't <li>s", () => {
109
- expect(() =>
110
- render(
111
- <List type={ListTypes.Ordered}>
112
- <span>Mahi-mahi</span>
113
- <span>Golden trout</span>
114
- <span>Rainbowfish</span>
115
- </List>
116
- )
117
- ).toThrowError("Direct children of `List` (ordered) should be `<li>`s");
130
+ it("consoles a warning when children and the `listItems` prop are both passed", () => {
131
+ const warn = jest.spyOn(console, "warn");
132
+ render(
133
+ <List type={ListTypes.Ordered} listItems={fishArray}>
134
+ <li>Mahi-mahi</li>
135
+ <li>Golden trout</li>
136
+ <li>Rainbowfish</li>
137
+ <li>Suckerfish</li>
138
+ </List>
139
+ );
140
+ expect(warn).toHaveBeenCalledWith(
141
+ "Pass in either `<li>`, `<dt>`, or `<dd>` children or use the `listItems` data prop, but don't use both."
142
+ );
118
143
  });
119
144
 
120
- it("throws an error when you pass a definition list children that aren't `<dt>`s or `<dd>`s", () => {
121
- expect(() =>
122
- render(
123
- <List type={ListTypes.Definition}>
124
- <span>Mahi-mahi</span>
125
- <span>Golden trout</span>
126
- <span>Rainbowfish</span>
127
- </List>
128
- )
129
- ).toThrowError(
130
- "Direct children of `List` (definition) should be `<dt>`s or `<dd>`s"
145
+ it("consoles a warning when no children are passed or the `listItems` prop is not passed", () => {
146
+ const warn = jest.spyOn(console, "warn");
147
+ render(<List type={ListTypes.Ordered}></List>);
148
+ expect(warn).toHaveBeenCalledWith(
149
+ "Either `<li>` children or the `listItems` prop must be used."
131
150
  );
132
151
  });
133
152
 
134
- it("throws an error when no children are passed or the `listItems` prop is not passed", () => {
135
- expect(() => render(<List type={ListTypes.Ordered}></List>)).toThrowError(
136
- "Either `<li>` children or the `listItems` prop must be used."
153
+ it("consoles a warning when you pass an ordered or unordered list children that aren't <li>s", () => {
154
+ const warn = jest.spyOn(console, "warn");
155
+ render(
156
+ <List type={ListTypes.Ordered}>
157
+ <span>Mahi-mahi</span>
158
+ <span>Golden trout</span>
159
+ <span>Rainbowfish</span>
160
+ </List>
161
+ );
162
+ expect(warn).toHaveBeenCalledWith(
163
+ "Direct children of `List` (ol) should be `<li>`s."
137
164
  );
138
165
  });
139
166
 
140
- it("throws an error when children and the `listItems` prop are both passed", () => {
141
- expect(() =>
142
- render(
143
- <List type={ListTypes.Ordered} listItems={fishArray}>
144
- <li>Mahi-mahi</li>
145
- <li>Golden trout</li>
146
- <li>Rainbowfish</li>
147
- <li>Suckerfish</li>
148
- </List>
149
- )
150
- ).toThrowError(
151
- "Pass in either `<li>` children or use the `listItems` data prop, don't use both."
167
+ it("consoles a warning when you pass a definition list children that aren't `<dt>`s or `<dd>`s", () => {
168
+ const warn = jest.spyOn(console, "warn");
169
+ render(
170
+ <List type={ListTypes.Definition}>
171
+ <span>Mahi-mahi</span>
172
+ <span>Golden trout</span>
173
+ <span>Rainbowfish</span>
174
+ </List>
175
+ );
176
+ expect(warn).toHaveBeenCalledWith(
177
+ "Direct children of `List` (definition) should be `<dt>`s and `<dd>`s."
152
178
  );
153
179
  });
180
+
181
+ it("Renders the UI snapshot correctly", () => {
182
+ const unordered = renderer
183
+ .create(
184
+ <List id="unordered" type={ListTypes.Unordered} listItems={fishArray} />
185
+ )
186
+ .toJSON();
187
+ const unorderedNoStyling = renderer
188
+ .create(
189
+ <List
190
+ id="ordered"
191
+ type={ListTypes.Unordered}
192
+ listItems={fishArray}
193
+ noStyling
194
+ />
195
+ )
196
+ .toJSON();
197
+ const ordered = renderer
198
+ .create(
199
+ <List
200
+ id="unordered-no-styling"
201
+ type={ListTypes.Ordered}
202
+ listItems={fishArray}
203
+ />
204
+ )
205
+ .toJSON();
206
+ const orderedNoStyling = renderer
207
+ .create(
208
+ <List
209
+ id="ordered-no-styling"
210
+ type={ListTypes.Ordered}
211
+ listItems={fishArray}
212
+ noStyling
213
+ />
214
+ )
215
+ .toJSON();
216
+ const definition = renderer
217
+ .create(
218
+ <List
219
+ id="definition"
220
+ type={ListTypes.Definition}
221
+ title="Animal Crossing Fish"
222
+ listItems={fishDefinitions}
223
+ />
224
+ )
225
+ .toJSON();
226
+
227
+ expect(unordered).toMatchSnapshot();
228
+ expect(unorderedNoStyling).toMatchSnapshot();
229
+ expect(ordered).toMatchSnapshot();
230
+ expect(orderedNoStyling).toMatchSnapshot();
231
+ expect(definition).toMatchSnapshot();
232
+ });
154
233
  });