@nypl/design-system-react-components 0.25.0 → 0.25.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/CHANGELOG.md +142 -1
  2. package/README.md +98 -50
  3. package/dist/components/Accordion/Accordion.d.ts +14 -14
  4. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -14
  5. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
  6. package/dist/components/Button/Button.d.ts +13 -8
  7. package/dist/components/Button/ButtonTypes.d.ts +3 -1
  8. package/dist/components/Card/Card.d.ts +36 -52
  9. package/dist/components/Card/CardTypes.d.ts +2 -17
  10. package/dist/components/Checkbox/Checkbox.d.ts +17 -13
  11. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +45 -0
  12. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
  13. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
  14. package/dist/components/DatePicker/DatePicker.d.ts +37 -35
  15. package/dist/components/Fieldset/Fieldset.d.ts +25 -0
  16. package/dist/components/Form/Form.d.ts +13 -8
  17. package/dist/components/Form/FormTypes.d.ts +2 -8
  18. package/dist/components/Grid/GridTypes.d.ts +9 -0
  19. package/dist/components/Grid/SimpleGrid.d.ts +14 -0
  20. package/dist/components/Heading/Heading.d.ts +4 -4
  21. package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
  22. package/dist/components/Hero/Hero.d.ts +19 -14
  23. package/dist/components/Hero/HeroTypes.d.ts +10 -5
  24. package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
  25. package/dist/components/Icons/Icon.d.ts +19 -14
  26. package/dist/components/Icons/IconSvgs.d.ts +11 -0
  27. package/dist/components/Icons/IconTypes.d.ts +89 -64
  28. package/dist/components/Image/Image.d.ts +19 -9
  29. package/dist/components/Image/ImageTypes.d.ts +20 -0
  30. package/dist/components/Label/Label.d.ts +5 -17
  31. package/dist/components/Link/Link.d.ts +12 -12
  32. package/dist/components/List/List.d.ts +19 -14
  33. package/dist/components/Notification/Notification.d.ts +37 -16
  34. package/dist/components/Pagination/Pagination.d.ts +16 -13
  35. package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
  36. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
  37. package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
  38. package/dist/components/Radio/Radio.d.ts +2 -0
  39. package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
  40. package/dist/components/SearchBar/SearchBar.d.ts +45 -27
  41. package/dist/components/Select/Select.d.ts +34 -35
  42. package/dist/components/Select/SelectTypes.d.ts +4 -0
  43. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
  44. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
  45. package/dist/components/Slider/Slider.d.ts +57 -0
  46. package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
  47. package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
  48. package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
  49. package/dist/components/Tabs/Tabs.d.ts +1 -1
  50. package/dist/components/Template/Template.d.ts +91 -0
  51. package/dist/components/Text/Text.d.ts +16 -0
  52. package/dist/components/Text/TextTypes.d.ts +6 -0
  53. package/dist/components/TextInput/TextInput.d.ts +44 -31
  54. package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
  55. package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
  56. package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
  57. package/dist/design-system-react-components.cjs.development.js +6473 -2630
  58. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  59. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  60. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  61. package/dist/design-system-react-components.esm.js +6463 -2631
  62. package/dist/design-system-react-components.esm.js.map +1 -1
  63. package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
  64. package/dist/hooks/useCarouselStyles.d.ts +16 -0
  65. package/dist/hooks/useNYPLTheme.d.ts +54 -0
  66. package/dist/hooks/useWindowSize.d.ts +10 -0
  67. package/dist/index.d.ts +19 -7
  68. package/dist/resources.scss +180 -170
  69. package/dist/styles.css +1 -1
  70. package/dist/theme/components/accordion.d.ts +25 -0
  71. package/dist/theme/components/breadcrumb.d.ts +90 -0
  72. package/dist/theme/components/button.d.ts +39 -15
  73. package/dist/theme/components/card.d.ts +168 -0
  74. package/dist/theme/components/checkbox.d.ts +12 -8
  75. package/dist/theme/components/checkboxGroup.d.ts +12 -0
  76. package/dist/theme/components/componentWrapper.d.ts +11 -0
  77. package/dist/theme/components/datePicker.d.ts +16 -0
  78. package/dist/theme/components/fieldset.d.ts +27 -0
  79. package/dist/theme/components/global.d.ts +65 -0
  80. package/dist/theme/components/globalMixins.d.ts +23 -0
  81. package/dist/theme/components/heading.d.ts +55 -20
  82. package/dist/theme/components/helperErrorText.d.ts +10 -0
  83. package/dist/theme/components/hero.d.ts +493 -0
  84. package/dist/theme/components/horizontalRule.d.ts +14 -0
  85. package/dist/theme/components/icon.d.ts +13 -0
  86. package/dist/theme/components/image.d.ts +31 -0
  87. package/dist/theme/components/label.d.ts +18 -0
  88. package/dist/theme/components/link.d.ts +49 -0
  89. package/dist/theme/components/list.d.ts +89 -0
  90. package/dist/theme/components/notification.d.ts +75 -0
  91. package/dist/theme/components/pagination.d.ts +19 -0
  92. package/dist/theme/components/progressIndicator.d.ts +50 -0
  93. package/dist/theme/components/radio.d.ts +8 -7
  94. package/dist/theme/components/radioGroup.d.ts +12 -0
  95. package/dist/theme/components/searchBar.d.ts +20 -0
  96. package/dist/theme/components/select.d.ts +67 -0
  97. package/dist/theme/components/skeletonLoader.d.ts +98 -0
  98. package/dist/theme/components/slider.d.ts +51 -0
  99. package/dist/theme/components/statusBadge.d.ts +25 -0
  100. package/dist/theme/components/tabs.d.ts +63 -12
  101. package/dist/theme/components/template.d.ts +105 -0
  102. package/dist/theme/components/text.d.ts +20 -0
  103. package/dist/theme/components/textInput.d.ts +112 -0
  104. package/dist/theme/components/videoPlayer.d.ts +40 -0
  105. package/dist/theme/foundations/breakpoints.d.ts +8 -8
  106. package/dist/theme/foundations/global.d.ts +8 -0
  107. package/dist/theme/foundations/radii.d.ts +5 -0
  108. package/dist/theme/foundations/shadows.d.ts +4 -0
  109. package/dist/theme/foundations/spacing.d.ts +16 -16
  110. package/dist/utils/utils.d.ts +6 -0
  111. package/package.json +72 -82
  112. package/src/__tests__/setup.ts +2 -2
  113. package/src/components/Accordion/Accordion.stories.mdx +223 -34
  114. package/src/components/Accordion/Accordion.test.tsx +135 -19
  115. package/src/components/Accordion/Accordion.tsx +81 -56
  116. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -4
  117. package/src/components/Autosuggest/Autosuggest.stories.tsx +3 -2
  118. package/src/components/Autosuggest/_Autosuggest.scss +5 -5
  119. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +48 -50
  120. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +54 -25
  121. package/src/components/Breadcrumbs/Breadcrumbs.tsx +75 -73
  122. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
  123. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -0
  124. package/src/components/Button/Button.stories.mdx +45 -36
  125. package/src/components/Button/Button.test.tsx +37 -11
  126. package/src/components/Button/Button.tsx +22 -34
  127. package/src/components/Button/ButtonTypes.tsx +2 -0
  128. package/src/components/Button/__snapshots__/Button.test.tsx.snap +50 -8
  129. package/src/components/Card/Card.stories.mdx +314 -273
  130. package/src/components/Card/Card.test.tsx +157 -91
  131. package/src/components/Card/Card.tsx +195 -145
  132. package/src/components/Card/CardTypes.tsx +2 -19
  133. package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
  134. package/src/components/CardEdition/CardEdition.stories.tsx +26 -53
  135. package/src/components/CardEdition/CardEdition.test.tsx +23 -31
  136. package/src/components/CardEdition/_CardEdition.scss +22 -23
  137. package/src/components/Chakra/Box.stories.mdx +15 -16
  138. package/src/components/Chakra/Center.stories.mdx +56 -24
  139. package/src/components/Chakra/Grid.stories.mdx +92 -0
  140. package/src/components/Chakra/Stack.stories.mdx +38 -21
  141. package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
  142. package/src/components/Checkbox/Checkbox.test.tsx +47 -2
  143. package/src/components/Checkbox/Checkbox.tsx +44 -41
  144. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +92 -7
  145. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +329 -0
  146. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +372 -0
  147. package/src/components/CheckboxGroup/CheckboxGroup.tsx +152 -0
  148. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
  149. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1326 -0
  150. package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
  151. package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
  152. package/src/components/DatePicker/DatePicker.test.tsx +264 -64
  153. package/src/components/DatePicker/DatePicker.tsx +165 -134
  154. package/src/components/DatePicker/_DatePicker.scss +33 -66
  155. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
  156. package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
  157. package/src/components/Fieldset/Fieldset.test.tsx +125 -0
  158. package/src/components/Fieldset/Fieldset.tsx +52 -0
  159. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
  160. package/src/components/Form/Form.stories.mdx +70 -27
  161. package/src/components/Form/Form.test.tsx +58 -45
  162. package/src/components/Form/Form.tsx +50 -21
  163. package/src/components/Form/FormTypes.tsx +3 -8
  164. package/src/components/Form/__snapshots__/Form.test.tsx.snap +24 -14
  165. package/src/components/Grid/GridTypes.tsx +9 -0
  166. package/src/components/Grid/SimpleGrid.stories.mdx +268 -0
  167. package/src/components/Grid/SimpleGrid.test.tsx +66 -0
  168. package/src/components/Grid/SimpleGrid.tsx +37 -0
  169. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
  170. package/src/components/Heading/Heading.stories.mdx +3 -3
  171. package/src/components/Heading/Heading.tsx +12 -6
  172. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
  173. package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
  174. package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
  175. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
  176. package/src/components/Hero/Hero.stories.mdx +198 -121
  177. package/src/components/Hero/Hero.test.tsx +537 -107
  178. package/src/components/Hero/Hero.tsx +79 -92
  179. package/src/components/Hero/HeroTypes.tsx +18 -5
  180. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
  181. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
  182. package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
  183. package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
  184. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
  185. package/src/components/Icons/Icon.stories.mdx +94 -77
  186. package/src/components/Icons/Icon.test.tsx +48 -22
  187. package/src/components/Icons/Icon.tsx +78 -61
  188. package/src/components/Icons/IconSvgs.tsx +22 -0
  189. package/src/components/Icons/IconTypes.tsx +91 -64
  190. package/src/components/Image/Image.stories.mdx +220 -0
  191. package/src/components/Image/Image.test.tsx +131 -29
  192. package/src/components/Image/Image.tsx +84 -56
  193. package/src/components/Image/ImageTypes.ts +22 -0
  194. package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
  195. package/src/components/Input/Input.stories.tsx +23 -67
  196. package/src/components/Input/Input.test.tsx +4 -4
  197. package/src/components/Input/_Input.scss +23 -14
  198. package/src/components/Label/Label.stories.mdx +28 -7
  199. package/src/components/Label/Label.test.tsx +43 -12
  200. package/src/components/Label/Label.tsx +21 -34
  201. package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
  202. package/src/components/Link/Link.stories.mdx +41 -41
  203. package/src/components/Link/Link.test.tsx +33 -44
  204. package/src/components/Link/Link.tsx +117 -100
  205. package/src/components/List/List.stories.mdx +124 -51
  206. package/src/components/List/List.test.tsx +142 -63
  207. package/src/components/List/List.tsx +89 -93
  208. package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
  209. package/src/components/Modal/Modal.stories.mdx +3 -3
  210. package/src/components/Modal/_Modal.scss +2 -2
  211. package/src/components/Notification/Notification.stories.mdx +119 -111
  212. package/src/components/Notification/Notification.test.tsx +102 -126
  213. package/src/components/Notification/Notification.tsx +157 -161
  214. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
  215. package/src/components/Pagination/Pagination.stories.mdx +26 -27
  216. package/src/components/Pagination/Pagination.stories.tsx +11 -16
  217. package/src/components/Pagination/Pagination.test.tsx +276 -140
  218. package/src/components/Pagination/Pagination.tsx +174 -154
  219. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
  220. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
  221. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
  222. package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
  223. package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
  224. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
  225. package/src/components/Radio/Radio.test.tsx +20 -4
  226. package/src/components/Radio/Radio.tsx +6 -3
  227. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
  228. package/src/components/RadioGroup/RadioGroup.stories.mdx +4 -5
  229. package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
  230. package/src/components/RadioGroup/RadioGroup.tsx +21 -29
  231. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
  232. package/src/components/SearchBar/SearchBar.Test.tsx +170 -16
  233. package/src/components/SearchBar/SearchBar.stories.mdx +294 -219
  234. package/src/components/SearchBar/SearchBar.tsx +161 -46
  235. package/src/components/Select/Select.stories.mdx +188 -170
  236. package/src/components/Select/Select.test.tsx +132 -375
  237. package/src/components/Select/Select.tsx +121 -165
  238. package/src/components/Select/SelectTypes.tsx +5 -0
  239. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +33 -76
  240. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
  241. package/src/components/SkeletonLoader/SkeletonLoader.tsx +75 -70
  242. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
  243. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
  244. package/src/components/Slider/Slider.stories.mdx +529 -0
  245. package/src/components/Slider/Slider.test.tsx +653 -0
  246. package/src/components/Slider/Slider.tsx +303 -0
  247. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
  248. package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
  249. package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
  250. package/src/components/StatusBadge/StatusBadge.tsx +24 -25
  251. package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
  252. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
  253. package/src/components/StyleGuide/Bidirectionality.stories.mdx +17 -17
  254. package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
  255. package/src/components/StyleGuide/Buttons.stories.mdx +102 -86
  256. package/src/components/StyleGuide/ColorCard.tsx +46 -0
  257. package/src/components/StyleGuide/Colors.stories.mdx +196 -0
  258. package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
  259. package/src/components/StyleGuide/Forms.stories.mdx +9 -7
  260. package/src/components/StyleGuide/Iconography.stories.mdx +119 -127
  261. package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
  262. package/src/components/StyleGuide/Typography.stories.mdx +202 -189
  263. package/src/components/StyleGuide/UIDocCard.tsx +1 -1
  264. package/src/components/Tabs/Tabs.stories.mdx +73 -11
  265. package/src/components/Tabs/Tabs.tsx +88 -67
  266. package/src/components/Template/Template.stories.mdx +572 -0
  267. package/src/components/Template/Template.test.tsx +124 -0
  268. package/src/components/Template/Template.tsx +226 -0
  269. package/src/components/Text/Text.stories.mdx +70 -0
  270. package/src/components/Text/Text.test.tsx +63 -0
  271. package/src/components/Text/Text.tsx +55 -0
  272. package/src/components/Text/TextTypes.tsx +6 -0
  273. package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
  274. package/src/components/TextInput/TextInput.stories.mdx +89 -90
  275. package/src/components/TextInput/TextInput.test.tsx +84 -85
  276. package/src/components/TextInput/TextInput.tsx +121 -95
  277. package/src/components/TextInput/TextInputTypes.tsx +8 -0
  278. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
  279. package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
  280. package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
  281. package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
  282. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
  283. package/src/docs/Chakra.stories.mdx +246 -65
  284. package/src/docs/Intro.stories.mdx +18 -13
  285. package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
  286. package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
  287. package/src/hooks/useCarouselStyles.ts +34 -0
  288. package/src/hooks/useNYPLTheme.ts +67 -0
  289. package/src/hooks/useWindowSize.ts +40 -0
  290. package/src/index.ts +39 -16
  291. package/src/resources.scss +5 -5
  292. package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
  293. package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
  294. package/src/styles/base/_03-base.scss +25 -0
  295. package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
  296. package/src/styles/base/_place-holder.scss +14 -3
  297. package/src/styles/{03-space → space}/_space-inline.scss +14 -14
  298. package/src/styles/{03-space → space}/_space-inset.scss +10 -10
  299. package/src/styles/space/_space-stack.scss +116 -0
  300. package/src/styles.scss +13 -62
  301. package/src/theme/components/accordion.ts +30 -0
  302. package/src/theme/components/breadcrumb.ts +77 -0
  303. package/src/theme/components/button.ts +91 -71
  304. package/src/theme/components/card.ts +174 -0
  305. package/src/theme/components/checkbox.ts +22 -29
  306. package/src/theme/components/checkboxGroup.ts +8 -0
  307. package/src/theme/components/componentWrapper.ts +10 -0
  308. package/src/theme/components/datePicker.ts +17 -0
  309. package/src/theme/components/fieldset.ts +18 -0
  310. package/src/theme/components/global.ts +82 -0
  311. package/src/theme/components/globalMixins.ts +24 -0
  312. package/src/theme/components/heading.ts +25 -13
  313. package/src/theme/components/helperErrorText.ts +9 -0
  314. package/src/theme/components/hero.ts +240 -0
  315. package/src/theme/components/horizontalRule.ts +13 -0
  316. package/src/theme/components/icon.ts +79 -0
  317. package/src/theme/components/image.ts +116 -0
  318. package/src/theme/components/label.ts +10 -0
  319. package/src/theme/components/link.ts +51 -0
  320. package/src/theme/components/list.ts +73 -0
  321. package/src/theme/components/notification.ts +93 -0
  322. package/src/theme/components/pagination.ts +20 -0
  323. package/src/theme/components/progressIndicator.ts +62 -0
  324. package/src/theme/components/radio.ts +22 -33
  325. package/src/theme/components/radioGroup.ts +8 -0
  326. package/src/theme/components/searchBar.ts +21 -0
  327. package/src/theme/components/select.ts +53 -0
  328. package/src/theme/components/skeletonLoader.ts +107 -0
  329. package/src/theme/components/slider.ts +79 -0
  330. package/src/theme/components/statusBadge.ts +26 -0
  331. package/src/theme/components/tabs.ts +102 -69
  332. package/src/theme/components/template.ts +114 -0
  333. package/src/theme/components/text.ts +31 -0
  334. package/src/theme/components/textInput.ts +62 -0
  335. package/src/theme/components/videoPlayer.ts +49 -0
  336. package/src/theme/foundations/breakpoints.ts +8 -8
  337. package/src/theme/foundations/colors.ts +29 -13
  338. package/src/theme/foundations/global.ts +8 -0
  339. package/src/theme/foundations/radii.ts +6 -0
  340. package/src/theme/foundations/shadows.ts +5 -0
  341. package/src/theme/foundations/spacing.ts +24 -24
  342. package/src/theme/index.ts +74 -13
  343. package/src/utils/componentCategories.ts +12 -5
  344. package/src/utils/utils.ts +13 -0
  345. package/dist/components/Accordion/Accordion.stories.d.ts +0 -6
  346. package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
  347. package/dist/components/Image/Image.stories.d.ts +0 -18
  348. package/dist/components/List/List.stories.d.ts +0 -7
  349. package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
  350. package/dist/components/StyleGuide/Colors.stories.d.ts +0 -25
  351. package/dist/components/Template/Template.stories.d.ts +0 -30
  352. package/dist/theme/components/customRadioGroup.d.ts +0 -17
  353. package/src/components/Accordion/Accordion.stories.tsx +0 -66
  354. package/src/components/Accordion/_Accordion.scss +0 -81
  355. package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
  356. package/src/components/Button/_Button.scss +0 -56
  357. package/src/components/Card/_Card.scss +0 -308
  358. package/src/components/Form/_Form.scss +0 -67
  359. package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
  360. package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
  361. package/src/components/Hero/_Hero.scss +0 -256
  362. package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
  363. package/src/components/Icons/_Icons.scss +0 -116
  364. package/src/components/Image/Image.stories.tsx +0 -54
  365. package/src/components/Image/_Image.scss +0 -38
  366. package/src/components/Label/_Label.scss +0 -22
  367. package/src/components/Link/_Link.scss +0 -73
  368. package/src/components/List/List.stories.tsx +0 -139
  369. package/src/components/List/_List.scss +0 -76
  370. package/src/components/Notification/_Notification.scss +0 -110
  371. package/src/components/Pagination/_Pagination.scss +0 -40
  372. package/src/components/SearchBar/_SearchBar.scss +0 -16
  373. package/src/components/Select/_Select.scss +0 -82
  374. package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
  375. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -34
  376. package/src/components/StatusBadge/_StatusBadge.scss +0 -23
  377. package/src/components/StyleGuide/Colors.stories.tsx +0 -289
  378. package/src/components/Template/Template.stories.tsx +0 -86
  379. package/src/components/Template/_Template.scss +0 -63
  380. package/src/components/TextInput/_TextInput.scss +0 -59
  381. package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
  382. package/src/styles/01-colors/_colors-brand.scss +0 -56
  383. package/src/styles/01-colors/_colors-utility.scss +0 -65
  384. package/src/styles/02-typography/_type-scale.css +0 -11
  385. package/src/styles/02-typography/_type-weight.css +0 -7
  386. package/src/styles/02-typography/_typefaces.css +0 -4
  387. package/src/styles/03-space/_space-stack.scss +0 -116
  388. package/src/styles/03-space/_space.css +0 -30
  389. package/src/styles/base/_04-base.scss +0 -19
  390. package/src/styles/base/_card-grid.scss +0 -78
  391. package/src/styles/base/_typography.scss +0 -11
  392. package/src/theme/components/customRadioGroup.ts +0 -18
@@ -0,0 +1,55 @@
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
+
10
+ import Fieldset from "./Fieldset";
11
+ import { getCategory } from "../../utils/componentCategories";
12
+ import DSProvider from "../../theme/provider";
13
+
14
+ <Meta
15
+ title={getCategory("Fieldset")}
16
+ component={Fieldset}
17
+ decorators={[withDesign]}
18
+ parameters={{
19
+ jest: ["Fieldset.test.tsx"],
20
+ }}
21
+ argTypes={{
22
+ children: { table: { disable: true } },
23
+ className: { table: { disable: true } },
24
+ id: { table: { disable: true } },
25
+ }}
26
+ />
27
+
28
+ # Fieldset
29
+
30
+ | Component Version | DS Version |
31
+ | ----------------- | ---------- |
32
+ | Added | `0.25.3` |
33
+ | Latest | `0.25.3` |
34
+
35
+ <Description of={Fieldset} />
36
+
37
+ <Canvas withToolbar>
38
+ <Story
39
+ name="Basic"
40
+ args={{
41
+ isLegendHidden: false,
42
+ isRequired: false,
43
+ legendText: "This is the legend text",
44
+ optReqFlag: true,
45
+ }}
46
+ >
47
+ {(args) => (
48
+ <Fieldset {...args}>
49
+ <p>Text children in the Fieldset component.</p>
50
+ </Fieldset>
51
+ )}
52
+ </Story>
53
+ </Canvas>
54
+
55
+ <ArgsTable story="Basic" />
@@ -0,0 +1,125 @@
1
+ import * as React from "react";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { axe } from "jest-axe";
4
+ import renderer from "react-test-renderer";
5
+
6
+ import Fieldset from "./Fieldset";
7
+
8
+ describe("Fieldset Accessibility", () => {
9
+ it("passes axe accessibility", async () => {
10
+ const { container } = render(
11
+ <Fieldset legendText="Legend Text">
12
+ <p>Some other fields</p>
13
+ </Fieldset>
14
+ );
15
+ expect(await axe(container)).toHaveNoViolations();
16
+ });
17
+
18
+ it("passes axe accessibility with the legend hidden", async () => {
19
+ const { container } = render(
20
+ <Fieldset legendText="Legend Text" isLegendHidden>
21
+ <p>Some other fields</p>
22
+ </Fieldset>
23
+ );
24
+ expect(await axe(container)).toHaveNoViolations();
25
+ });
26
+ });
27
+
28
+ describe("Fieldset", () => {
29
+ it("renders text in a legend and fieldset along with its children", () => {
30
+ render(
31
+ <Fieldset legendText="Legend Text">
32
+ <p>Some other fields</p>
33
+ </Fieldset>
34
+ );
35
+
36
+ expect(screen.getByRole("group")).toBeInTheDocument();
37
+ // `legend` has no HTML role
38
+ expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
39
+ expect(screen.getByText("Some other fields")).toBeInTheDocument();
40
+ });
41
+
42
+ it("renders 'Optional' text by default in the legend", () => {
43
+ render(
44
+ <Fieldset legendText="Legend Text">
45
+ <p>Some other fields</p>
46
+ </Fieldset>
47
+ );
48
+
49
+ expect(screen.getByText(/Optional/i)).toBeInTheDocument();
50
+ });
51
+
52
+ it("renders 'Required' text in the legend", () => {
53
+ render(
54
+ <Fieldset legendText="Legend Text" isRequired>
55
+ <p>Some other fields</p>
56
+ </Fieldset>
57
+ );
58
+
59
+ expect(screen.getByText(/Required/i)).toBeInTheDocument();
60
+ });
61
+
62
+ it("can hide the 'Required'/'Optional' text in the legend but still show the main text", () => {
63
+ const { rerender } = render(
64
+ <Fieldset legendText="Legend Text" isRequired>
65
+ <p>Some other fields</p>
66
+ </Fieldset>
67
+ );
68
+
69
+ expect(screen.getByText(/Required/i)).toBeInTheDocument();
70
+
71
+ rerender(
72
+ <Fieldset legendText="Legend Text" optReqFlag={false}>
73
+ <p>Some other fields</p>
74
+ </Fieldset>
75
+ );
76
+
77
+ expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
78
+ expect(screen.queryByText(/Optional/i)).not.toBeInTheDocument();
79
+
80
+ rerender(
81
+ <Fieldset legendText="Legend Text" isRequired optReqFlag={false}>
82
+ <p>Some other fields</p>
83
+ </Fieldset>
84
+ );
85
+
86
+ expect(screen.getByText(/Legend Text/i)).toBeInTheDocument();
87
+ expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
88
+ });
89
+
90
+ it("renders the UI snapshot correctly", () => {
91
+ const basic = renderer
92
+ .create(
93
+ <Fieldset legendText="Legend Text">
94
+ <p>Some other fields</p>
95
+ </Fieldset>
96
+ )
97
+ .toJSON();
98
+ const required = renderer
99
+ .create(
100
+ <Fieldset legendText="Legend Text" isRequired>
101
+ <p>Some other fields</p>
102
+ </Fieldset>
103
+ )
104
+ .toJSON();
105
+ const hiddenHelperText = renderer
106
+ .create(
107
+ <Fieldset legendText="Legend Text" isRequired optReqFlag={false}>
108
+ <p>Some other fields</p>
109
+ </Fieldset>
110
+ )
111
+ .toJSON();
112
+ const hiddenLegend = renderer
113
+ .create(
114
+ <Fieldset legendText="Legend Text" isLegendHidden>
115
+ <p>Some other fields</p>
116
+ </Fieldset>
117
+ )
118
+ .toJSON();
119
+
120
+ expect(basic).toMatchSnapshot();
121
+ expect(required).toMatchSnapshot();
122
+ expect(hiddenHelperText).toMatchSnapshot();
123
+ expect(hiddenLegend).toMatchSnapshot();
124
+ });
125
+ });
@@ -0,0 +1,52 @@
1
+ import React from "react";
2
+ import { Box, useMultiStyleConfig } from "@chakra-ui/react";
3
+
4
+ interface FieldsetProps {
5
+ /** Children to render. Typically form-related components are used. */
6
+ children: React.ReactNode;
7
+ /** Additional class name to add. */
8
+ className?: string;
9
+ /** ID that other components can cross reference for accessibility purposes */
10
+ id?: string;
11
+ /** Flag to show or hide the text in the `legend` element. False by default. */
12
+ isLegendHidden?: boolean;
13
+ /** Flag to render "Required" or "Optional" in the `legend`.
14
+ * False/"Optional" by default. */
15
+ isRequired?: boolean;
16
+ /** Text to display in the `legend` element. */
17
+ legendText?: string;
18
+ /** Flag to show or hide the "Required"/"Optional" text in the `legend`.
19
+ * True by default. */
20
+ optReqFlag?: boolean;
21
+ }
22
+
23
+ /**
24
+ * A wrapper component that renders a `fieldset` element along with a `legend`
25
+ * element as its first child. Commonly used to wrap form components.
26
+ */
27
+ const Fieldset: React.FC<FieldsetProps> = ({
28
+ children,
29
+ className,
30
+ id,
31
+ isLegendHidden = false,
32
+ isRequired = false,
33
+ legendText,
34
+ optReqFlag = true,
35
+ }) => {
36
+ const styles = useMultiStyleConfig("Fieldset", { isLegendHidden });
37
+ return (
38
+ <Box as="fieldset" id={id} __css={styles} className={className}>
39
+ <legend>
40
+ {legendText}
41
+ {optReqFlag && (
42
+ <Box __css={styles.helper}>
43
+ {isRequired ? "Required" : "Optional"}
44
+ </Box>
45
+ )}
46
+ </legend>
47
+ {children}
48
+ </Box>
49
+ );
50
+ };
51
+
52
+ export default Fieldset;
@@ -0,0 +1,68 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Fieldset renders the UI snapshot correctly 1`] = `
4
+ <fieldset
5
+ className="css-0"
6
+ >
7
+ <legend>
8
+ Legend Text
9
+ <div
10
+ className="css-0"
11
+ >
12
+ Optional
13
+ </div>
14
+ </legend>
15
+ <p>
16
+ Some other fields
17
+ </p>
18
+ </fieldset>
19
+ `;
20
+
21
+ exports[`Fieldset renders the UI snapshot correctly 2`] = `
22
+ <fieldset
23
+ className="css-0"
24
+ >
25
+ <legend>
26
+ Legend Text
27
+ <div
28
+ className="css-0"
29
+ >
30
+ Required
31
+ </div>
32
+ </legend>
33
+ <p>
34
+ Some other fields
35
+ </p>
36
+ </fieldset>
37
+ `;
38
+
39
+ exports[`Fieldset renders the UI snapshot correctly 3`] = `
40
+ <fieldset
41
+ className="css-0"
42
+ >
43
+ <legend>
44
+ Legend Text
45
+ </legend>
46
+ <p>
47
+ Some other fields
48
+ </p>
49
+ </fieldset>
50
+ `;
51
+
52
+ exports[`Fieldset renders the UI snapshot correctly 4`] = `
53
+ <fieldset
54
+ className="css-0"
55
+ >
56
+ <legend>
57
+ Legend Text
58
+ <div
59
+ className="css-0"
60
+ >
61
+ Optional
62
+ </div>
63
+ </legend>
64
+ <p>
65
+ Some other fields
66
+ </p>
67
+ </fieldset>
68
+ `;
@@ -3,7 +3,6 @@ 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";
@@ -13,15 +12,21 @@ import Form, { FormRow, FormField } from "./Form";
13
12
  import { FormSpacing } from "./FormTypes";
14
13
  import TextInput from "../TextInput/TextInput";
15
14
  import Radio from "../Radio/Radio";
15
+ import RadioGroup from "../RadioGroup/RadioGroup";
16
16
  import Checkbox from "../Checkbox/Checkbox";
17
+ import CheckboxGroup from "../CheckboxGroup/CheckboxGroup";
17
18
  import Label from "../Label/Label";
18
19
  import Button from "../Button/Button";
19
20
  import Select from "../Select/Select";
20
21
  import Heading from "../Heading/Heading";
21
22
  import { HeadingLevels } from "../Heading/HeadingTypes";
22
23
  import HorizontalRule from "../HorizontalRule/HorizontalRule";
24
+ import DatePicker from "../DatePicker/DatePicker";
25
+ import { DatePickerTypes } from "../DatePicker/DatePickerTypes";
23
26
  import { action } from "@storybook/addon-actions";
24
27
 
28
+ import SimpleGrid from "../Grid/SimpleGrid";
29
+
25
30
  <Meta
26
31
  title={getCategory("Form")}
27
32
  component={Form}
@@ -41,7 +46,7 @@ import { action } from "@storybook/addon-actions";
41
46
  | Component Version | DS Version |
42
47
  | ----------------- | ---------- |
43
48
  | Added | `0.23.2` |
44
- | Latest | `0.24.1` |
49
+ | Latest | `0.25.1` |
45
50
 
46
51
  <Description of={Form} />
47
52
 
@@ -51,7 +56,7 @@ The `Form` component renders a standard `<form>` element and should be used to h
51
56
 
52
57
  `FormRow` should be used as a parent of multiple `FormField` components when you need to render multiple input components in a horizontal row.
53
58
 
54
- <Preview withToolbar>
59
+ <Canvas withToolbar>
55
60
  <Story
56
61
  name="Form"
57
62
  args={{
@@ -70,18 +75,51 @@ The `Form` component renders a standard `<form>` element and should be used to h
70
75
  >
71
76
  {(args) => (
72
77
  <Form {...args}>
78
+ <FormRow>
79
+ <FormField>
80
+ <TextInput
81
+ labelText="First Name"
82
+ helperText="Make sure to complete this field."
83
+ isRequired
84
+ />
85
+ </FormField>
86
+ <FormField>
87
+ <TextInput
88
+ labelText="Last Name"
89
+ helperText="Make sure to complete this field."
90
+ isRequired
91
+ />
92
+ </FormField>
93
+ <FormField>
94
+ <DatePicker
95
+ id="date-range"
96
+ dateType={DatePickerTypes.Full}
97
+ dateFormat="yyyy-MM-dd"
98
+ dateRange={true}
99
+ minDate="1/1/2021"
100
+ maxDate="1/1/2022"
101
+ labelText="Select the date range you want to visit NYPL"
102
+ nameFrom="visit-dates"
103
+ helperTextFrom="From this date."
104
+ helperTextTo="To this date."
105
+ helperText="Select a valid date range."
106
+ invalidText="Please select a valid date range."
107
+ showLabel={false}
108
+ />
109
+ </FormField>
110
+ </FormRow>
73
111
  <FormField>
74
112
  <TextInput
75
113
  labelText="Username"
76
114
  helperText="Make sure to complete this field."
77
- required
115
+ isRequired
78
116
  />
79
117
  </FormField>
80
118
  <FormField>
81
119
  <TextInput
82
120
  labelText="Password"
83
121
  helperText="Make sure to complete this field."
84
- required
122
+ isRequired
85
123
  />
86
124
  </FormField>
87
125
  <FormRow>
@@ -109,24 +147,24 @@ The `Form` component renders a standard `<form>` element and should be used to h
109
147
  </FormRow>
110
148
  <FormRow>
111
149
  <FormField>
112
- <Label>Checkbox Group</Label>
113
- <Checkbox labelText="Checkbox 1" showLabel />
114
- <br />
115
- <Checkbox labelText="Checkbox 1" showLabel />
116
- <br />
117
- <Checkbox labelText="Checkbox 1" showLabel />
118
- <br />
119
- <Checkbox labelText="Checkbox 1" showLabel />
150
+ <CheckboxGroup
151
+ labelText="Checkbox Group"
152
+ name="cbg1"
153
+ optReqFlag={false}
154
+ >
155
+ <Checkbox labelText="Checkbox 1" showLabel />
156
+ <Checkbox labelText="Checkbox 2" showLabel />
157
+ <Checkbox labelText="Checkbox 3" showLabel />
158
+ <Checkbox labelText="Checkbox 4" showLabel />
159
+ </CheckboxGroup>
120
160
  </FormField>
121
161
  <FormField>
122
- <Label>Radio Group</Label>
123
- <Radio labelText="Radio 1" showLabel />
124
- <br />
125
- <Radio labelText="Radio 2" showLabel />
126
- <br />
127
- <Radio labelText="Radio 3" showLabel />
128
- <br />
129
- <Radio labelText="Radio 4" showLabel />
162
+ <RadioGroup labelText="Radio Group" name="rg1" optReqFlag={false}>
163
+ <Radio labelText="Radio 1" showLabel />
164
+ <Radio labelText="Radio 2" showLabel />
165
+ <Radio labelText="Radio 3" showLabel />
166
+ <Radio labelText="Radio 4" showLabel />
167
+ </RadioGroup>
130
168
  </FormField>
131
169
  <FormField>
132
170
  <Select
@@ -137,6 +175,8 @@ The `Form` component renders a standard `<form>` element and should be used to h
137
175
  <option>Option 1</option>
138
176
  <option>Option 2</option>
139
177
  <option>Option 3</option>
178
+ <option>Option 4</option>
179
+ <option>Option 5</option>
140
180
  </Select>
141
181
  </FormField>
142
182
  </FormRow>
@@ -146,7 +186,7 @@ The `Form` component renders a standard `<form>` element and should be used to h
146
186
  </Form>
147
187
  )}
148
188
  </Story>
149
- </Preview>
189
+ </Canvas>
150
190
 
151
191
  <ArgsTable story="Form" />
152
192
 
@@ -168,6 +208,7 @@ export const formRow = (size) => {
168
208
  <option>Option 1</option>
169
209
  <option>Option 2</option>
170
210
  <option>Option 3</option>
211
+ <option>Option 4</option>
171
212
  </Select>
172
213
  </FormField>
173
214
  <FormField>
@@ -179,6 +220,7 @@ export const formRow = (size) => {
179
220
  <option>Option 1</option>
180
221
  <option>Option 2</option>
181
222
  <option>Option 3</option>
223
+ <option>Option 4</option>
182
224
  </Select>
183
225
  </FormField>
184
226
  <FormField>
@@ -190,6 +232,7 @@ export const formRow = (size) => {
190
232
  <option>Option 1</option>
191
233
  <option>Option 2</option>
192
234
  <option>Option 3</option>
235
+ <option>Option 4</option>
193
236
  </Select>
194
237
  </FormField>
195
238
  </FormRow>
@@ -204,13 +247,13 @@ for (const formSpacing in FormSpacing) {
204
247
  }
205
248
  export const getForms = (list) => <ul style={{ listStyle: "none" }}>{list}</ul>;
206
249
 
207
- By default, the `Form` component will handle the NYPL spacing around form input elements. The default spacing value is `large`, which corresponds to the CSS variable `--space-l` (2rem / 32px).
250
+ By default, the `Form` component will handle the NYPL spacing around form input elements. The default spacing value is `large`, which corresponds to the CSS variable `--nypl-space-l` (2rem / 32px).
208
251
 
209
252
  **IMPORTANT:** The default spacing should not be overwritten without a very good reason.
210
253
 
211
254
  Below are the spacing variants available with the `FormSpacing` enum.
212
255
 
213
- <Preview>
256
+ <Canvas>
214
257
  <Story
215
258
  name="Spacing Variants"
216
259
  args={{
@@ -219,7 +262,7 @@ Below are the spacing variants available with the `FormSpacing` enum.
219
262
  >
220
263
  {getForms(sizes)}
221
264
  </Story>
222
- </Preview>
265
+ </Canvas>
223
266
 
224
267
  ## Example Code
225
268
 
@@ -231,14 +274,14 @@ Below are the spacing variants available with the `FormSpacing` enum.
231
274
  <TextInput
232
275
  labelText="Username"
233
276
  helperText="Make sure to complete this field."
234
- required
277
+ isRequired
235
278
  />
236
279
  </FormField>
237
280
  <FormField>
238
281
  <TextInput
239
282
  labelText="Password"
240
283
  helperText="Make sure to complete this field."
241
- required
284
+ isRequired
242
285
  />
243
286
  </FormField>
244
287
  <FormRow>
@@ -1,10 +1,10 @@
1
1
  import * as React from "react";
2
- import { render } from "@testing-library/react";
2
+ import { render, screen } from "@testing-library/react";
3
3
  import { axe } from "jest-axe";
4
4
  import renderer from "react-test-renderer";
5
5
 
6
6
  import Form, { FormRow, FormField } from "./Form";
7
- import { FormSpacing } from "./FormTypes";
7
+ // import { FormSpacing } from "./FormTypes";
8
8
  import TextInput from "../TextInput/TextInput";
9
9
 
10
10
  describe("Form Accessibility", () => {
@@ -32,40 +32,43 @@ describe("Form Snapshot", () => {
32
32
  });
33
33
 
34
34
  describe("Form", () => {
35
- let container;
36
35
  it("Renders a <form> element", () => {
37
- const utils = render(<Form />);
38
- container = utils.container;
39
-
40
- expect(container.querySelector(".form")).toBeInTheDocument();
36
+ render(<Form />);
37
+ expect(screen.getByRole("form")).toBeInTheDocument();
41
38
  });
42
39
 
43
- it("Renders a <form> element with child .form-row element", () => {
44
- const utils = render(
40
+ it("Renders a <form> element with child FormRow element", () => {
41
+ render(
45
42
  <Form>
46
43
  <FormRow />
47
44
  </Form>
48
45
  );
49
- container = utils.container;
50
-
51
- expect(container.querySelector(".form")).toBeInTheDocument();
52
- expect(container.querySelector(".form-row")).toBeInTheDocument();
46
+ const form = screen.getByRole("form");
47
+ const formRow = form.firstChild;
48
+ expect(form).toBeInTheDocument();
49
+ expect(formRow).toBeInTheDocument();
50
+ expect(formRow).toHaveStyle({
51
+ display: "grid",
52
+ });
53
53
  });
54
54
 
55
- it("Renders a <form> element with child .form-field element", () => {
56
- const utils = render(
55
+ it("Renders a <form> element with child FormField element", () => {
56
+ render(
57
57
  <Form>
58
58
  <FormField />
59
59
  </Form>
60
60
  );
61
- container = utils.container;
62
-
63
- expect(container.querySelector(".form")).toBeInTheDocument();
64
- expect(container.querySelector(".form-field")).toBeInTheDocument();
61
+ const form = screen.getByRole("form");
62
+ const formField = form.firstChild;
63
+ expect(form).toBeInTheDocument();
64
+ expect(formField).toBeInTheDocument();
65
+ expect(formField).toHaveStyle({
66
+ display: "grid",
67
+ });
65
68
  });
66
69
 
67
- it("Renders a <form> element with .form-row, .form-field and input elements properly nested", () => {
68
- const utils = render(
70
+ it("Renders a <form> element with FormRow, FormField and input elements properly nested", () => {
71
+ render(
69
72
  <Form>
70
73
  <FormRow>
71
74
  <FormField>
@@ -74,33 +77,43 @@ describe("Form", () => {
74
77
  </FormRow>
75
78
  </Form>
76
79
  );
77
- container = utils.container;
78
-
79
- expect(container.querySelector(".form")).toBeInTheDocument();
80
- expect(container.querySelector(".form-row")).toBeInTheDocument();
81
- expect(container.querySelector(".form-field")).toBeInTheDocument();
82
- expect(container.querySelector(".textinput")).toBeInTheDocument();
80
+ const form = screen.getByRole("form");
81
+ const formRow = form.firstChild;
82
+ const formField = formRow.firstChild;
83
+ const textInput = screen.getByRole("textbox");
84
+ expect(form).toBeInTheDocument();
85
+ expect(formRow).toBeInTheDocument();
86
+ expect(formRow).toHaveStyle({
87
+ display: "grid",
88
+ });
89
+ expect(formField).toBeInTheDocument();
90
+ expect(formField).toHaveStyle({
91
+ display: "grid",
92
+ });
93
+ expect(textInput).toBeInTheDocument();
83
94
  });
84
95
 
85
96
  it("Renders a <form> element with custom `action` and `method` attributes", () => {
86
- const utils = render(<Form action="/end/point" method="get" />);
87
- container = utils.container;
88
-
89
- expect(container.querySelector(".form")).toBeInTheDocument();
90
- expect(container.querySelector(".form")).toHaveAttribute(
91
- "action",
92
- "/end/point"
93
- );
94
- expect(container.querySelector(".form")).toHaveAttribute("method", "get");
97
+ render(<Form action="/end/point" method="get" />);
98
+ const form = screen.getByRole("form");
99
+ expect(form).toBeInTheDocument();
100
+ expect(form).toHaveAttribute("action", "/end/point");
101
+ expect(form).toHaveAttribute("method", "get");
95
102
  });
96
103
 
97
- it("Renders a <form> element with spacing variant applied", () => {
98
- const utils = render(<Form spacing={FormSpacing.ExtraSmall} />);
99
- container = utils.container;
100
-
101
- expect(container.querySelector(".form")).toBeInTheDocument();
102
- expect(
103
- container.querySelector(".form--spacing-extra-small")
104
- ).toBeInTheDocument();
105
- });
104
+ // TO DO: There's somethign weird about checking for the "grid-gap" style.
105
+ // Other styles can be validated, but "grid-gap" is being ellusive.
106
+ // it("Renders a <form> element with spacing variant applied", () => {
107
+ // render(
108
+ // <Form spacing={FormSpacing.ExtraSmall}>
109
+ // <FormRow />
110
+ // </Form>
111
+ // );
112
+ // const form = screen.getByRole("form");
113
+ // const formRow = form.firstChild;
114
+ // expect(form).toBeInTheDocument();
115
+ // expect(formRow).toHaveStyle({
116
+ // "grid-gap": "var(--nypl-space-xs)",
117
+ // });
118
+ // });
106
119
  });