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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. package/CHANGELOG.md +142 -1
  2. package/README.md +98 -50
  3. package/dist/components/Accordion/Accordion.d.ts +14 -14
  4. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +15 -14
  5. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
  6. package/dist/components/Button/Button.d.ts +13 -8
  7. package/dist/components/Button/ButtonTypes.d.ts +3 -1
  8. package/dist/components/Card/Card.d.ts +36 -52
  9. package/dist/components/Card/CardTypes.d.ts +2 -17
  10. package/dist/components/Checkbox/Checkbox.d.ts +17 -13
  11. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +45 -0
  12. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
  13. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
  14. package/dist/components/DatePicker/DatePicker.d.ts +37 -35
  15. package/dist/components/Fieldset/Fieldset.d.ts +25 -0
  16. package/dist/components/Form/Form.d.ts +13 -8
  17. package/dist/components/Form/FormTypes.d.ts +2 -8
  18. package/dist/components/Grid/GridTypes.d.ts +9 -0
  19. package/dist/components/Grid/SimpleGrid.d.ts +14 -0
  20. package/dist/components/Heading/Heading.d.ts +4 -4
  21. package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
  22. package/dist/components/Hero/Hero.d.ts +19 -14
  23. package/dist/components/Hero/HeroTypes.d.ts +10 -5
  24. package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
  25. package/dist/components/Icons/Icon.d.ts +19 -14
  26. package/dist/components/Icons/IconSvgs.d.ts +11 -0
  27. package/dist/components/Icons/IconTypes.d.ts +89 -64
  28. package/dist/components/Image/Image.d.ts +19 -9
  29. package/dist/components/Image/ImageTypes.d.ts +20 -0
  30. package/dist/components/Label/Label.d.ts +5 -17
  31. package/dist/components/Link/Link.d.ts +12 -12
  32. package/dist/components/List/List.d.ts +19 -14
  33. package/dist/components/Notification/Notification.d.ts +37 -16
  34. package/dist/components/Pagination/Pagination.d.ts +16 -13
  35. package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
  36. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
  37. package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
  38. package/dist/components/Radio/Radio.d.ts +2 -0
  39. package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
  40. package/dist/components/SearchBar/SearchBar.d.ts +45 -27
  41. package/dist/components/Select/Select.d.ts +34 -35
  42. package/dist/components/Select/SelectTypes.d.ts +4 -0
  43. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
  44. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
  45. package/dist/components/Slider/Slider.d.ts +57 -0
  46. package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
  47. package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
  48. package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
  49. package/dist/components/Tabs/Tabs.d.ts +1 -1
  50. package/dist/components/Template/Template.d.ts +91 -0
  51. package/dist/components/Text/Text.d.ts +16 -0
  52. package/dist/components/Text/TextTypes.d.ts +6 -0
  53. package/dist/components/TextInput/TextInput.d.ts +44 -31
  54. package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
  55. package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
  56. package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
  57. package/dist/design-system-react-components.cjs.development.js +6473 -2630
  58. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  59. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  60. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  61. package/dist/design-system-react-components.esm.js +6463 -2631
  62. package/dist/design-system-react-components.esm.js.map +1 -1
  63. package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
  64. package/dist/hooks/useCarouselStyles.d.ts +16 -0
  65. package/dist/hooks/useNYPLTheme.d.ts +54 -0
  66. package/dist/hooks/useWindowSize.d.ts +10 -0
  67. package/dist/index.d.ts +19 -7
  68. package/dist/resources.scss +180 -170
  69. package/dist/styles.css +1 -1
  70. package/dist/theme/components/accordion.d.ts +25 -0
  71. package/dist/theme/components/breadcrumb.d.ts +90 -0
  72. package/dist/theme/components/button.d.ts +39 -15
  73. package/dist/theme/components/card.d.ts +168 -0
  74. package/dist/theme/components/checkbox.d.ts +12 -8
  75. package/dist/theme/components/checkboxGroup.d.ts +12 -0
  76. package/dist/theme/components/componentWrapper.d.ts +11 -0
  77. package/dist/theme/components/datePicker.d.ts +16 -0
  78. package/dist/theme/components/fieldset.d.ts +27 -0
  79. package/dist/theme/components/global.d.ts +65 -0
  80. package/dist/theme/components/globalMixins.d.ts +23 -0
  81. package/dist/theme/components/heading.d.ts +55 -20
  82. package/dist/theme/components/helperErrorText.d.ts +10 -0
  83. package/dist/theme/components/hero.d.ts +493 -0
  84. package/dist/theme/components/horizontalRule.d.ts +14 -0
  85. package/dist/theme/components/icon.d.ts +13 -0
  86. package/dist/theme/components/image.d.ts +31 -0
  87. package/dist/theme/components/label.d.ts +18 -0
  88. package/dist/theme/components/link.d.ts +49 -0
  89. package/dist/theme/components/list.d.ts +89 -0
  90. package/dist/theme/components/notification.d.ts +75 -0
  91. package/dist/theme/components/pagination.d.ts +19 -0
  92. package/dist/theme/components/progressIndicator.d.ts +50 -0
  93. package/dist/theme/components/radio.d.ts +8 -7
  94. package/dist/theme/components/radioGroup.d.ts +12 -0
  95. package/dist/theme/components/searchBar.d.ts +20 -0
  96. package/dist/theme/components/select.d.ts +67 -0
  97. package/dist/theme/components/skeletonLoader.d.ts +98 -0
  98. package/dist/theme/components/slider.d.ts +51 -0
  99. package/dist/theme/components/statusBadge.d.ts +25 -0
  100. package/dist/theme/components/tabs.d.ts +63 -12
  101. package/dist/theme/components/template.d.ts +105 -0
  102. package/dist/theme/components/text.d.ts +20 -0
  103. package/dist/theme/components/textInput.d.ts +112 -0
  104. package/dist/theme/components/videoPlayer.d.ts +40 -0
  105. package/dist/theme/foundations/breakpoints.d.ts +8 -8
  106. package/dist/theme/foundations/global.d.ts +8 -0
  107. package/dist/theme/foundations/radii.d.ts +5 -0
  108. package/dist/theme/foundations/shadows.d.ts +4 -0
  109. package/dist/theme/foundations/spacing.d.ts +16 -16
  110. package/dist/utils/utils.d.ts +6 -0
  111. package/package.json +72 -82
  112. package/src/__tests__/setup.ts +2 -2
  113. package/src/components/Accordion/Accordion.stories.mdx +223 -34
  114. package/src/components/Accordion/Accordion.test.tsx +135 -19
  115. package/src/components/Accordion/Accordion.tsx +81 -56
  116. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -4
  117. package/src/components/Autosuggest/Autosuggest.stories.tsx +3 -2
  118. package/src/components/Autosuggest/_Autosuggest.scss +5 -5
  119. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +48 -50
  120. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +54 -25
  121. package/src/components/Breadcrumbs/Breadcrumbs.tsx +75 -73
  122. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
  123. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +298 -0
  124. package/src/components/Button/Button.stories.mdx +45 -36
  125. package/src/components/Button/Button.test.tsx +37 -11
  126. package/src/components/Button/Button.tsx +22 -34
  127. package/src/components/Button/ButtonTypes.tsx +2 -0
  128. package/src/components/Button/__snapshots__/Button.test.tsx.snap +50 -8
  129. package/src/components/Card/Card.stories.mdx +314 -273
  130. package/src/components/Card/Card.test.tsx +157 -91
  131. package/src/components/Card/Card.tsx +195 -145
  132. package/src/components/Card/CardTypes.tsx +2 -19
  133. package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
  134. package/src/components/CardEdition/CardEdition.stories.tsx +26 -53
  135. package/src/components/CardEdition/CardEdition.test.tsx +23 -31
  136. package/src/components/CardEdition/_CardEdition.scss +22 -23
  137. package/src/components/Chakra/Box.stories.mdx +15 -16
  138. package/src/components/Chakra/Center.stories.mdx +56 -24
  139. package/src/components/Chakra/Grid.stories.mdx +92 -0
  140. package/src/components/Chakra/Stack.stories.mdx +38 -21
  141. package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
  142. package/src/components/Checkbox/Checkbox.test.tsx +47 -2
  143. package/src/components/Checkbox/Checkbox.tsx +44 -41
  144. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +92 -7
  145. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +329 -0
  146. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +372 -0
  147. package/src/components/CheckboxGroup/CheckboxGroup.tsx +152 -0
  148. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
  149. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1326 -0
  150. package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
  151. package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
  152. package/src/components/DatePicker/DatePicker.test.tsx +264 -64
  153. package/src/components/DatePicker/DatePicker.tsx +165 -134
  154. package/src/components/DatePicker/_DatePicker.scss +33 -66
  155. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
  156. package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
  157. package/src/components/Fieldset/Fieldset.test.tsx +125 -0
  158. package/src/components/Fieldset/Fieldset.tsx +52 -0
  159. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
  160. package/src/components/Form/Form.stories.mdx +70 -27
  161. package/src/components/Form/Form.test.tsx +58 -45
  162. package/src/components/Form/Form.tsx +50 -21
  163. package/src/components/Form/FormTypes.tsx +3 -8
  164. package/src/components/Form/__snapshots__/Form.test.tsx.snap +24 -14
  165. package/src/components/Grid/GridTypes.tsx +9 -0
  166. package/src/components/Grid/SimpleGrid.stories.mdx +268 -0
  167. package/src/components/Grid/SimpleGrid.test.tsx +66 -0
  168. package/src/components/Grid/SimpleGrid.tsx +37 -0
  169. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
  170. package/src/components/Heading/Heading.stories.mdx +3 -3
  171. package/src/components/Heading/Heading.tsx +12 -6
  172. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
  173. package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
  174. package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
  175. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
  176. package/src/components/Hero/Hero.stories.mdx +198 -121
  177. package/src/components/Hero/Hero.test.tsx +537 -107
  178. package/src/components/Hero/Hero.tsx +79 -92
  179. package/src/components/Hero/HeroTypes.tsx +18 -5
  180. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
  181. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
  182. package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
  183. package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
  184. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
  185. package/src/components/Icons/Icon.stories.mdx +94 -77
  186. package/src/components/Icons/Icon.test.tsx +48 -22
  187. package/src/components/Icons/Icon.tsx +78 -61
  188. package/src/components/Icons/IconSvgs.tsx +22 -0
  189. package/src/components/Icons/IconTypes.tsx +91 -64
  190. package/src/components/Image/Image.stories.mdx +220 -0
  191. package/src/components/Image/Image.test.tsx +131 -29
  192. package/src/components/Image/Image.tsx +84 -56
  193. package/src/components/Image/ImageTypes.ts +22 -0
  194. package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
  195. package/src/components/Input/Input.stories.tsx +23 -67
  196. package/src/components/Input/Input.test.tsx +4 -4
  197. package/src/components/Input/_Input.scss +23 -14
  198. package/src/components/Label/Label.stories.mdx +28 -7
  199. package/src/components/Label/Label.test.tsx +43 -12
  200. package/src/components/Label/Label.tsx +21 -34
  201. package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
  202. package/src/components/Link/Link.stories.mdx +41 -41
  203. package/src/components/Link/Link.test.tsx +33 -44
  204. package/src/components/Link/Link.tsx +117 -100
  205. package/src/components/List/List.stories.mdx +124 -51
  206. package/src/components/List/List.test.tsx +142 -63
  207. package/src/components/List/List.tsx +89 -93
  208. package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
  209. package/src/components/Modal/Modal.stories.mdx +3 -3
  210. package/src/components/Modal/_Modal.scss +2 -2
  211. package/src/components/Notification/Notification.stories.mdx +119 -111
  212. package/src/components/Notification/Notification.test.tsx +102 -126
  213. package/src/components/Notification/Notification.tsx +157 -161
  214. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
  215. package/src/components/Pagination/Pagination.stories.mdx +26 -27
  216. package/src/components/Pagination/Pagination.stories.tsx +11 -16
  217. package/src/components/Pagination/Pagination.test.tsx +276 -140
  218. package/src/components/Pagination/Pagination.tsx +174 -154
  219. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
  220. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
  221. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
  222. package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
  223. package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
  224. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
  225. package/src/components/Radio/Radio.test.tsx +20 -4
  226. package/src/components/Radio/Radio.tsx +6 -3
  227. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
  228. package/src/components/RadioGroup/RadioGroup.stories.mdx +4 -5
  229. package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
  230. package/src/components/RadioGroup/RadioGroup.tsx +21 -29
  231. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
  232. package/src/components/SearchBar/SearchBar.Test.tsx +170 -16
  233. package/src/components/SearchBar/SearchBar.stories.mdx +294 -219
  234. package/src/components/SearchBar/SearchBar.tsx +161 -46
  235. package/src/components/Select/Select.stories.mdx +188 -170
  236. package/src/components/Select/Select.test.tsx +132 -375
  237. package/src/components/Select/Select.tsx +121 -165
  238. package/src/components/Select/SelectTypes.tsx +5 -0
  239. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +33 -76
  240. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
  241. package/src/components/SkeletonLoader/SkeletonLoader.tsx +75 -70
  242. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
  243. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
  244. package/src/components/Slider/Slider.stories.mdx +529 -0
  245. package/src/components/Slider/Slider.test.tsx +653 -0
  246. package/src/components/Slider/Slider.tsx +303 -0
  247. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
  248. package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
  249. package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
  250. package/src/components/StatusBadge/StatusBadge.tsx +24 -25
  251. package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
  252. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
  253. package/src/components/StyleGuide/Bidirectionality.stories.mdx +17 -17
  254. package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
  255. package/src/components/StyleGuide/Buttons.stories.mdx +102 -86
  256. package/src/components/StyleGuide/ColorCard.tsx +46 -0
  257. package/src/components/StyleGuide/Colors.stories.mdx +196 -0
  258. package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
  259. package/src/components/StyleGuide/Forms.stories.mdx +9 -7
  260. package/src/components/StyleGuide/Iconography.stories.mdx +119 -127
  261. package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
  262. package/src/components/StyleGuide/Typography.stories.mdx +202 -189
  263. package/src/components/StyleGuide/UIDocCard.tsx +1 -1
  264. package/src/components/Tabs/Tabs.stories.mdx +73 -11
  265. package/src/components/Tabs/Tabs.tsx +88 -67
  266. package/src/components/Template/Template.stories.mdx +572 -0
  267. package/src/components/Template/Template.test.tsx +124 -0
  268. package/src/components/Template/Template.tsx +226 -0
  269. package/src/components/Text/Text.stories.mdx +70 -0
  270. package/src/components/Text/Text.test.tsx +63 -0
  271. package/src/components/Text/Text.tsx +55 -0
  272. package/src/components/Text/TextTypes.tsx +6 -0
  273. package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
  274. package/src/components/TextInput/TextInput.stories.mdx +89 -90
  275. package/src/components/TextInput/TextInput.test.tsx +84 -85
  276. package/src/components/TextInput/TextInput.tsx +121 -95
  277. package/src/components/TextInput/TextInputTypes.tsx +8 -0
  278. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
  279. package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
  280. package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
  281. package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
  282. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
  283. package/src/docs/Chakra.stories.mdx +246 -65
  284. package/src/docs/Intro.stories.mdx +18 -13
  285. package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
  286. package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
  287. package/src/hooks/useCarouselStyles.ts +34 -0
  288. package/src/hooks/useNYPLTheme.ts +67 -0
  289. package/src/hooks/useWindowSize.ts +40 -0
  290. package/src/index.ts +39 -16
  291. package/src/resources.scss +5 -5
  292. package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
  293. package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
  294. package/src/styles/base/_03-base.scss +25 -0
  295. package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
  296. package/src/styles/base/_place-holder.scss +14 -3
  297. package/src/styles/{03-space → space}/_space-inline.scss +14 -14
  298. package/src/styles/{03-space → space}/_space-inset.scss +10 -10
  299. package/src/styles/space/_space-stack.scss +116 -0
  300. package/src/styles.scss +13 -62
  301. package/src/theme/components/accordion.ts +30 -0
  302. package/src/theme/components/breadcrumb.ts +77 -0
  303. package/src/theme/components/button.ts +91 -71
  304. package/src/theme/components/card.ts +174 -0
  305. package/src/theme/components/checkbox.ts +22 -29
  306. package/src/theme/components/checkboxGroup.ts +8 -0
  307. package/src/theme/components/componentWrapper.ts +10 -0
  308. package/src/theme/components/datePicker.ts +17 -0
  309. package/src/theme/components/fieldset.ts +18 -0
  310. package/src/theme/components/global.ts +82 -0
  311. package/src/theme/components/globalMixins.ts +24 -0
  312. package/src/theme/components/heading.ts +25 -13
  313. package/src/theme/components/helperErrorText.ts +9 -0
  314. package/src/theme/components/hero.ts +240 -0
  315. package/src/theme/components/horizontalRule.ts +13 -0
  316. package/src/theme/components/icon.ts +79 -0
  317. package/src/theme/components/image.ts +116 -0
  318. package/src/theme/components/label.ts +10 -0
  319. package/src/theme/components/link.ts +51 -0
  320. package/src/theme/components/list.ts +73 -0
  321. package/src/theme/components/notification.ts +93 -0
  322. package/src/theme/components/pagination.ts +20 -0
  323. package/src/theme/components/progressIndicator.ts +62 -0
  324. package/src/theme/components/radio.ts +22 -33
  325. package/src/theme/components/radioGroup.ts +8 -0
  326. package/src/theme/components/searchBar.ts +21 -0
  327. package/src/theme/components/select.ts +53 -0
  328. package/src/theme/components/skeletonLoader.ts +107 -0
  329. package/src/theme/components/slider.ts +79 -0
  330. package/src/theme/components/statusBadge.ts +26 -0
  331. package/src/theme/components/tabs.ts +102 -69
  332. package/src/theme/components/template.ts +114 -0
  333. package/src/theme/components/text.ts +31 -0
  334. package/src/theme/components/textInput.ts +62 -0
  335. package/src/theme/components/videoPlayer.ts +49 -0
  336. package/src/theme/foundations/breakpoints.ts +8 -8
  337. package/src/theme/foundations/colors.ts +29 -13
  338. package/src/theme/foundations/global.ts +8 -0
  339. package/src/theme/foundations/radii.ts +6 -0
  340. package/src/theme/foundations/shadows.ts +5 -0
  341. package/src/theme/foundations/spacing.ts +24 -24
  342. package/src/theme/index.ts +74 -13
  343. package/src/utils/componentCategories.ts +12 -5
  344. package/src/utils/utils.ts +13 -0
  345. package/dist/components/Accordion/Accordion.stories.d.ts +0 -6
  346. package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
  347. package/dist/components/Image/Image.stories.d.ts +0 -18
  348. package/dist/components/List/List.stories.d.ts +0 -7
  349. package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
  350. package/dist/components/StyleGuide/Colors.stories.d.ts +0 -25
  351. package/dist/components/Template/Template.stories.d.ts +0 -30
  352. package/dist/theme/components/customRadioGroup.d.ts +0 -17
  353. package/src/components/Accordion/Accordion.stories.tsx +0 -66
  354. package/src/components/Accordion/_Accordion.scss +0 -81
  355. package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
  356. package/src/components/Button/_Button.scss +0 -56
  357. package/src/components/Card/_Card.scss +0 -308
  358. package/src/components/Form/_Form.scss +0 -67
  359. package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
  360. package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
  361. package/src/components/Hero/_Hero.scss +0 -256
  362. package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
  363. package/src/components/Icons/_Icons.scss +0 -116
  364. package/src/components/Image/Image.stories.tsx +0 -54
  365. package/src/components/Image/_Image.scss +0 -38
  366. package/src/components/Label/_Label.scss +0 -22
  367. package/src/components/Link/_Link.scss +0 -73
  368. package/src/components/List/List.stories.tsx +0 -139
  369. package/src/components/List/_List.scss +0 -76
  370. package/src/components/Notification/_Notification.scss +0 -110
  371. package/src/components/Pagination/_Pagination.scss +0 -40
  372. package/src/components/SearchBar/_SearchBar.scss +0 -16
  373. package/src/components/Select/_Select.scss +0 -82
  374. package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
  375. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -34
  376. package/src/components/StatusBadge/_StatusBadge.scss +0 -23
  377. package/src/components/StyleGuide/Colors.stories.tsx +0 -289
  378. package/src/components/Template/Template.stories.tsx +0 -86
  379. package/src/components/Template/_Template.scss +0 -63
  380. package/src/components/TextInput/_TextInput.scss +0 -59
  381. package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
  382. package/src/styles/01-colors/_colors-brand.scss +0 -56
  383. package/src/styles/01-colors/_colors-utility.scss +0 -65
  384. package/src/styles/02-typography/_type-scale.css +0 -11
  385. package/src/styles/02-typography/_type-weight.css +0 -7
  386. package/src/styles/02-typography/_typefaces.css +0 -4
  387. package/src/styles/03-space/_space-stack.scss +0 -116
  388. package/src/styles/03-space/_space.css +0 -30
  389. package/src/styles/base/_04-base.scss +0 -19
  390. package/src/styles/base/_card-grid.scss +0 -78
  391. package/src/styles/base/_typography.scss +0 -11
  392. package/src/theme/components/customRadioGroup.ts +0 -18
@@ -1,192 +1,148 @@
1
1
  import React from "react";
2
- import bem from "../../utils/bem";
2
+ import {
3
+ Box,
4
+ Select as ChakraSelect,
5
+ useMultiStyleConfig,
6
+ } from "@chakra-ui/react";
7
+
3
8
  import Label from "../Label/Label";
4
9
  import HelperErrorText from "../HelperErrorText/HelperErrorText";
5
10
  import generateUUID from "../../helpers/generateUUID";
11
+ import { IconNames, IconSizes } from "../Icons/IconTypes";
12
+ import Icon from "../Icons/Icon";
13
+ import { SelectTypes } from "./SelectTypes";
6
14
 
7
15
  export interface SelectProps {
8
- /** DEPRECATED - When passed, will populate the aria-label on the select */
9
- ariaLabel?: string;
10
- /** Additional attributes passed to the <select> tag */
11
- attributes?: { [key: string]: any };
12
- /** BlockName for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
13
- blockName?: string;
14
- /** ClassName you can add in addition to 'select' */
16
+ /** A class name for the `div` parent element. */
15
17
  className?: string;
16
- children?: React.ReactNode;
17
- /** When true, disables the select */
18
- disabled?: boolean;
19
- /** Helper for modifiers array; adds 'errored' styling */
20
- errored?: boolean;
21
- /** Populates the HelperErrorText for error state */
22
- invalidText?: string;
23
- /** DEPRECATED - ID of associated HelperText */
24
- helperTextId?: string;
25
- /** Populates the HelperErrorText for standard state */
18
+ /** Optional string to populate the `HelperErrorText` for the standard state. */
26
19
  helperText?: string;
27
20
  /** ID that other components can cross reference for accessibility purposes */
28
21
  id?: string;
29
- /** DEPRECATED - Attribute indicating that an option with a non-empty string value must be selected */
22
+ /** Optional string to populate the `HelperErrorText` for the error state
23
+ * when `isInvalid` is true. */
24
+ invalidText?: string;
25
+ /** Adds the `disabled` and `aria-disabled` attributes to the select when true */
26
+ isDisabled?: boolean;
27
+ /** Adds the `aria-invalid` attribute to the select when true. This also makes
28
+ * the color theme "NYPL error" red for the select and text. */
29
+ isInvalid?: boolean;
30
+ /** Adds the `required` and `aria-required` attributes to the input when true. */
30
31
  isRequired?: boolean;
31
- /** DEPRECATED - ID of associated label */
32
- labelId?: string;
33
- /** Provides text for a `Label` component if `showLabel` is set to `true`; populates a `aria-label` attribute on the select input if `showLabel` is set to `false`. */
32
+ /** Provides text for a `Label` component if `showLabel` is set to `true`;
33
+ * populates an `aria-label` attribute on the select input if `showLabel` is
34
+ * set to `false`. */
34
35
  labelText: string;
35
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
36
- modifiers?: string[];
37
- /** The name of the select element to use in form submission */
36
+ /** Used to reference the select element in forms. */
38
37
  name: string;
39
- /** Passes select's current value to the React state handler */
40
- onBlur?: (event: React.FormEvent) => void;
41
- /** Passes selects' current value to the React state handler */
38
+ /** The callback function to get the selected value.
39
+ * Should be passed along with `value` for controlled components. */
42
40
  onChange?: (event: React.FormEvent) => void;
43
- /** Will add `aria-required: true` and native HTML `required` attribute to the select input */
44
- required?: boolean;
45
- /** The value of the selected option */
46
- selectedOption?: string;
47
- /** Offers the ability to show the label onscreen or hide it. Refer to the `labelText` property for more information. */
41
+ /** Offers the ability to hide the helper/invalid text. */
42
+ showHelperInvalidText?: boolean;
43
+ /** Offers the ability to show the select's label onscreen or hide it. Refer
44
+ * to the `labelText` property for more information. */
48
45
  showLabel?: boolean;
49
46
  /** Whether or not to display the "Required"/"Optional" text in the label text. */
50
47
  showOptReqLabel?: boolean;
48
+ /** The variant to display. */
49
+ type?: SelectTypes;
50
+ /** The value of the selected option.
51
+ * Should be passed along with `onChange` for controlled components. */
52
+ value?: string;
51
53
  }
52
54
 
53
- const Select = React.forwardRef<HTMLSelectElement, SelectProps>(
54
- (props, ref?) => {
55
- const {
56
- ariaLabel = null,
57
- blockName,
58
- children,
59
- className,
60
- errored,
61
- invalidText,
62
- helperText,
63
- helperTextId,
64
- isRequired,
65
- labelId,
66
- labelText,
67
- onBlur,
68
- onChange,
69
- name,
70
- required,
71
- attributes = {},
72
- disabled = false,
73
- selectedOption,
74
- showLabel,
75
- showOptReqLabel = true,
76
- } = props;
77
-
78
- const modifiers = props.modifiers ? props.modifiers : [];
79
- const id = props.id || generateUUID();
80
- let ariaLabelledBy = null;
81
-
82
- if (!showLabel) attributes["aria-label"] = labelText;
83
-
84
- if (helperText && showLabel)
85
- attributes["aria-describedby"] = `${id}-helperText`;
86
-
87
- if (errored) modifiers.push("error");
88
-
89
- const req = isRequired || required;
90
- const optReqFlag = req ? "Required" : "Optional";
91
-
92
- const errorOutput = invalidText
93
- ? invalidText
94
- : "There is an error related to this field.";
95
-
96
- const footnote = errored ? errorOutput : helperText;
97
-
98
- // Support for deprecated prop
99
- if (ariaLabel) attributes["aria-label"] = ariaLabel;
100
-
101
- // Support for deprecated props
102
- if (labelId && !helperTextId) {
103
- ariaLabelledBy = labelId;
104
- } else if (helperTextId && !labelId) {
105
- ariaLabelledBy = helperTextId;
106
- } else if (labelId && helperTextId) {
107
- ariaLabelledBy = labelId + " " + helperTextId;
108
- }
109
-
110
- if (React.Children.count(children) > 10) {
111
- console.warn(
112
- "NYPL DS recommends that <select> fields have no more than 10 options; an auto-complete text input is a good alternative for 11 or more options."
113
- );
114
- }
115
-
116
- if (React.Children.count(children) < 4) {
117
- console.warn(
118
- "NYPL DS recommends that <select> fields have at least 4 options; a radio button group is a good alternative for 3 or fewer options."
119
- );
120
- }
121
-
122
- if (ariaLabel) {
123
- console.warn(
124
- "The ariaLabel prop has been deprecated in the Select component and will be removed in a future release. Check the documentation for updated props."
125
- );
126
- }
127
-
128
- if (helperTextId) {
129
- console.warn(
130
- "The helperTextId prop has been deprecated in the Select component and will be removed in a future release. Check the documentation for updated props."
131
- );
132
- }
55
+ /**
56
+ * Component that renders Chakra's `Select` component along with an accessible
57
+ * `Label` and optional `HelperErrorText` component.
58
+ */
59
+ const Select = React.forwardRef<
60
+ HTMLSelectElement,
61
+ React.PropsWithChildren<SelectProps>
62
+ >((props: React.PropsWithChildren<SelectProps>, ref?) => {
63
+ const {
64
+ children,
65
+ className,
66
+ helperText,
67
+ id = generateUUID(),
68
+ invalidText,
69
+ isDisabled = false,
70
+ isInvalid = false,
71
+ isRequired = false,
72
+ labelText,
73
+ name,
74
+ onChange,
75
+ showHelperInvalidText = true,
76
+ showLabel = true,
77
+ showOptReqLabel = true,
78
+ type = SelectTypes.Default,
79
+ value,
80
+ } = props;
81
+ const ariaAttributes = {};
82
+ const optReqFlag = isRequired ? "Required" : "Optional";
83
+ const styles = useMultiStyleConfig("CustomSelect", { variant: type });
84
+ const finalInvalidText = invalidText
85
+ ? invalidText
86
+ : "There is an error related to this field.";
87
+ const footnote = isInvalid ? finalInvalidText : helperText;
88
+ // To control the `Select` component, both `onChange` and `value`
89
+ // must be passed.
90
+ const controlledProps = onChange && value ? { onChange, value } : {};
91
+
92
+ if (!showLabel) {
93
+ ariaAttributes["aria-label"] =
94
+ labelText && footnote ? `${labelText} - ${footnote}` : labelText;
95
+ } else if (helperText) {
96
+ ariaAttributes["aria-describedby"] = `${id}-helperText`;
97
+ }
133
98
 
134
- if (isRequired === true || isRequired === false) {
135
- console.warn(
136
- "The isRequired prop has been deprecated in the Select component and will be removed in a future release. Check the documentation for updated props."
137
- );
138
- }
99
+ if (React.Children.count(children) > 10) {
100
+ console.warn(
101
+ "NYPL DS recommends that <select> fields have no more than 10 options; an auto-complete text input is a good alternative for 11 or more options."
102
+ );
103
+ }
139
104
 
140
- if (labelId) {
141
- console.warn(
142
- "The labelId prop has been deprecated in the Select component and will be removed in a future release. Check the documentation for updated props."
143
- );
144
- }
105
+ if (React.Children.count(children) < 4) {
106
+ console.warn(
107
+ "NYPL DS recommends that <select> fields have at least 4 options; a radio button group is a good alternative for 3 or fewer options."
108
+ );
109
+ }
145
110
 
146
- return (
147
- <div className="select">
148
- {labelText && showLabel && (
149
- <Label
150
- htmlFor={id}
151
- optReqFlag={showOptReqLabel && optReqFlag}
152
- id={id + `-label`}
153
- >
154
- {labelText}
155
- </Label>
156
- )}
157
- <select
158
- name={name}
159
- id={id}
160
- className={bem("selectfield", modifiers, blockName, [className])}
161
- aria-required={req}
162
- required={req}
163
- disabled={disabled}
164
- aria-label={ariaLabel}
165
- aria-labelledby={ariaLabelledBy}
166
- value={selectedOption}
167
- ref={ref}
168
- onBlur={onBlur}
169
- onChange={onChange}
170
- {...attributes}
111
+ return (
112
+ <Box className={className} __css={styles}>
113
+ {showLabel && (
114
+ <Label
115
+ id={`${id}-label`}
116
+ htmlFor={id}
117
+ optReqFlag={showOptReqLabel && optReqFlag}
171
118
  >
172
- {React.Children.map(children, (child, key) => {
173
- return React.cloneElement(child as React.ReactElement<any>, {
174
- "aria-selected": children[key]
175
- ? children[key].props.children === selectedOption
176
- : false,
177
- });
178
- })}
179
- </select>
180
- {(helperText || errored) && (
181
- <HelperErrorText isError={errored} id={id + `-helperText`}>
119
+ {labelText}
120
+ </Label>
121
+ )}
122
+ <ChakraSelect
123
+ id={id}
124
+ variant="outline"
125
+ isRequired={isRequired}
126
+ isDisabled={isDisabled}
127
+ isInvalid={isInvalid}
128
+ name={name}
129
+ ref={ref}
130
+ {...controlledProps}
131
+ {...ariaAttributes}
132
+ icon={<Icon name={IconNames.Arrow} size={IconSizes.Medium} />}
133
+ __css={styles.select}
134
+ >
135
+ {children}
136
+ </ChakraSelect>
137
+ {footnote && showHelperInvalidText && (
138
+ <Box __css={styles.helper} aria-disabled={isDisabled}>
139
+ <HelperErrorText isInvalid={isInvalid} id={id + `-helperText`}>
182
140
  {footnote}
183
141
  </HelperErrorText>
184
- )}
185
- </div>
186
- );
187
- }
188
- );
189
-
190
- Select.displayName = "Select";
142
+ </Box>
143
+ )}
144
+ </Box>
145
+ );
146
+ });
191
147
 
192
148
  export default Select;
@@ -0,0 +1,5 @@
1
+ // Only used for internal purposes.
2
+ export enum SelectTypes {
3
+ Default = "default",
4
+ SearchBar = "searchbar",
5
+ }
@@ -3,18 +3,18 @@ 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";
9
+ import { action } from "@storybook/addon-actions";
10
10
 
11
+ import { getCategory } from "../../utils/componentCategories";
11
12
  import SkeletonLoader from "./SkeletonLoader";
12
13
  import {
13
14
  SkeletonLoaderLayouts,
14
15
  SkeletonLoaderImageRatios,
15
16
  } from "./SkeletonLoaderTypes";
16
- import { action } from "@storybook/addon-actions";
17
- import { getCategory } from "../../utils/componentCategories";
17
+ import SimpleGrid from "../Grid/SimpleGrid";
18
18
 
19
19
  <Meta
20
20
  title={getCategory("SkeletonLoader")}
@@ -29,33 +29,15 @@ import { getCategory } from "../../utils/componentCategories";
29
29
  jest: ["SkeletonLoader.test.tsx"],
30
30
  }}
31
31
  argTypes={{
32
- attributes: { table: { disable: true } },
33
32
  className: { table: { disable: true } },
34
- modifiers: { table: { disable: true } },
35
- layout: {
36
- table: { defaultValue: { summary: "vertical" } },
37
- },
38
- showImage: {
39
- table: { defaultValue: { summary: "true" } },
40
- },
41
- showHeading: {
42
- table: { defaultValue: { summary: "true" } },
43
- },
44
- showContent: {
45
- table: { defaultValue: { summary: "true" } },
46
- },
47
- showButton: {
48
- table: { defaultValue: { summary: "false" } },
49
- },
50
- headingSize: {
51
- table: { defaultValue: { summary: "1" } },
52
- },
53
- contentSize: {
54
- table: { defaultValue: { summary: "3" } },
55
- },
56
- imageAspectRatio: {
57
- table: { defaultValue: { summary: "square" } },
58
- },
33
+ contentSize: { table: { defaultValue: { summary: "3" } } },
34
+ headingSize: { table: { defaultValue: { summary: "1" } } },
35
+ imageAspectRatio: { table: { defaultValue: { summary: "square" } } },
36
+ layout: { table: { defaultValue: { summary: "column" } } },
37
+ showButton: { table: { defaultValue: { summary: "false" } } },
38
+ showContent: { table: { defaultValue: { summary: "true" } } },
39
+ showHeading: { table: { defaultValue: { summary: "true" } } },
40
+ showImage: { table: { defaultValue: { summary: "true" } } },
59
41
  }}
60
42
  />
61
43
 
@@ -64,38 +46,34 @@ import { getCategory } from "../../utils/componentCategories";
64
46
  | Component Version | DS Version |
65
47
  | ----------------- | ---------- |
66
48
  | Added | `0.17.3` |
67
- | Latest | `0.23.4` |
49
+ | Latest | `0.25.3` |
68
50
 
69
51
  <Description of={SkeletonLoader} />
70
52
 
71
- The `SkeletonLoader` component renders a placeholder to be used while dynamic content is loading. The `layout`, `width` and placeholder elements within the `SkeletonLoader` can be customized.
53
+ The `layout`, `width`, and placeholder elements within the `SkeletonLoader` can
54
+ be customized.
72
55
 
73
- Please note that the initial rendering below has the `width` prop set to `300px`. The default value is `100%`.
56
+ Please note that the initial rendering below has the `width` prop set to `300px`
57
+ to better view the example. The default value is `100%`.
74
58
 
75
- <Preview withToolbar>
59
+ <Canvas withToolbar>
76
60
  <Story
77
- name="SkeletonLoader"
61
+ name="Basic with Props"
78
62
  args={{
79
63
  width: "300px",
80
64
  }}
81
65
  >
82
66
  {(args) => <SkeletonLoader {...args} />}
83
67
  </Story>
84
- </Preview>
68
+ </Canvas>
85
69
 
86
- <ArgsTable story="SkeletonLoader" />
70
+ <ArgsTable story="Basic with Props" />
87
71
 
88
72
  # Card Placeholders in a Grid
89
73
 
90
- <Preview>
74
+ <Canvas>
91
75
  <Story name="Placeholders in a Grid">
92
- <div
93
- style={{
94
- display: "grid",
95
- gap: "2rem",
96
- "grid-template-columns": "repeat(3, 1fr)",
97
- }}
98
- >
76
+ <SimpleGrid columns={3}>
99
77
  <SkeletonLoader
100
78
  imageAspectRatio={SkeletonLoaderImageRatios.Landscape}
101
79
  border
@@ -120,41 +98,20 @@ Please note that the initial rendering below has the `width` prop set to `300px`
120
98
  imageAspectRatio={SkeletonLoaderImageRatios.Landscape}
121
99
  border
122
100
  />
123
- </div>
101
+ </SimpleGrid>
124
102
  </Story>
125
- </Preview>
103
+ </Canvas>
126
104
 
127
105
  # Text Placeholders in a List
128
106
 
129
- <Preview>
107
+ <Canvas>
130
108
  <Story name="Placeholders in a List">
131
- <div
132
- style={{
133
- display: "grid",
134
- gap: "2rem",
135
- "grid-template-columns": "repeat(1, 1fr)",
136
- }}
137
- >
138
- <SkeletonLoader
139
- layout={SkeletonLoaderLayouts.Horizontal}
140
- showImage={false}
141
- />
142
- <SkeletonLoader
143
- layout={SkeletonLoaderLayouts.Horizontal}
144
- showImage={false}
145
- />
146
- <SkeletonLoader
147
- layout={SkeletonLoaderLayouts.Horizontal}
148
- showImage={false}
149
- />
150
- <SkeletonLoader
151
- layout={SkeletonLoaderLayouts.Horizontal}
152
- showImage={false}
153
- />
154
- <SkeletonLoader
155
- layout={SkeletonLoaderLayouts.Horizontal}
156
- showImage={false}
157
- />
158
- </div>
109
+ <SimpleGrid columns={1}>
110
+ <SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
111
+ <SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
112
+ <SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
113
+ <SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
114
+ <SkeletonLoader layout={SkeletonLoaderLayouts.Row} showImage={false} />
115
+ </SimpleGrid>
159
116
  </Story>
160
- </Preview>
117
+ </Canvas>