@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
@@ -2,20 +2,12 @@ import {
2
2
  Meta,
3
3
  Story,
4
4
  ArgsTable,
5
- Preview,
5
+ Canvas,
6
6
  Description,
7
7
  } from "@storybook/addon-docs/blocks";
8
8
  import { withDesign } from "storybook-addon-designs";
9
9
 
10
10
  import SearchBar from "./SearchBar";
11
- import Select from "../Select/Select";
12
- import HelperErrorText from "../HelperErrorText/HelperErrorText";
13
- import Button from "../Button/Button";
14
- import { ButtonTypes } from "../Button/ButtonTypes";
15
- import Icon from "../Icons/Icon";
16
- import { IconNames } from "../Icons/IconTypes";
17
- import Input from "../Input/Input";
18
- import { InputTypes } from "../Input/InputTypes";
19
11
  import * as stories from "../Autosuggest/Autosuggest.stories.tsx";
20
12
  import { getCategory } from "../../utils/componentCategories";
21
13
  import DSProvider from "../../theme/provider";
@@ -33,188 +25,214 @@ import DSProvider from "../../theme/provider";
33
25
  jest: ["SearchBar.test.tsx"],
34
26
  }}
35
27
  argTypes={{
36
- blockName: {
37
- table: { disable: true },
38
- },
28
+ action: { table: { disable: true } },
29
+ ariaLabel: { table: { disable: true } },
30
+ buttonOnClick: { table: { disable: true } },
31
+ className: { table: { disable: true } },
32
+ id: { table: { disable: true } },
33
+ method: { table: { disable: true } },
34
+ onSubmit: { table: { disable: true } },
35
+ selectProps: { table: { disable: true } },
36
+ textInputProps: { table: { disable: true } },
37
+ textInputElement: { table: { disable: true } },
39
38
  }}
40
39
  />
41
40
 
42
41
  # SearchBar
43
42
 
43
+ | Component Version | DS Version |
44
+ | ----------------- | ---------- |
45
+ | Added | `0.0.4` |
46
+ | Latest | `0.25.4` |
47
+
44
48
  <Description of={SearchBar} />
45
49
 
46
- The main wrapper element that is rendered is `<form>` DOM element. All the props
47
- passed to `SearchBar` will apply to the `<form>` element. If you need to update
48
- the children, make sure the props are passed to the appropriate components.
50
+ The main wrapper element that is rendered is a `<form>` DOM element. All the
51
+ props passed to `SearchBar` will apply to the `<form>` element and its children.
52
+ The `SearchBar` component will render a `Select` component (optional),
53
+ `TextInput` component, `Button` component, and `HelperErrorText` component
54
+ based on the required props.
49
55
 
50
56
  The `Select` dropdown narrows the search within a specific category, typically
51
- title or author. You should only have one `Select` component at a time. If you
52
- need more options, link to the advance search page. Toggle the `Select` through
53
- the Controls.
54
-
55
- _Note: The `HelperErrorText` component should be the next direct sibling of the
56
- `SearchBar` component if it will be used._
57
-
58
- export const optionsGroup = {
59
- Art: [
60
- "Academic Painting",
61
- "Amazing Painting",
62
- "Ancient Statue",
63
- "Basic Painting",
64
- "Beautiful Statue",
65
- ],
66
- Bushes: [
67
- "Blue-Hydrangea Bush",
68
- "Blue-Hydrangea Start",
69
- "Holly Bush",
70
- "Orange-Tea-Olive Bush",
71
- "Pink Camellia Bush",
72
- ],
73
- Clothing: ["3D Glasses", "Academy Uniform", "Acid-Washed Jacket"],
74
- "DIY Recipes": ["Acorn Pochette", "Acoustic Guitar", "Angled Signpost"],
75
- Flowers: [
76
- "Black Cosmos",
77
- "Blue Pansies",
78
- "Gold Roses",
79
- "Lily of the Valley",
80
- "Orange Hyacinth",
81
- ],
82
- Fossils: [
83
- "Acanthostega",
84
- "Amber",
85
- "Ammonite",
86
- "Ankylo Skull",
87
- "Anomalocaris",
88
- "Australopith",
89
- ],
90
- Fruits: ["Apples", "Oranges", "Pears", "Coconuts", "Cherries"],
91
- Furniture: [
92
- "Abstract Wall",
93
- "Accessories Stand",
94
- "ACNH Switch",
95
- "Air Circulator",
96
- ],
97
- Materials: [
98
- "Acorn",
99
- "Aquaris Fragment",
100
- "Bamboo Piece",
101
- "Boot",
102
- "Clump of Weeds",
103
- ],
104
- NPC: ["Celeste", "Kicks", "Leif", "Redd", "Saharah"],
105
- Songs: ["Agent K.K.", "Café K.K.", "Comrade K.K."],
106
- Tools: [
107
- "Axe",
108
- "Bamboo Wand",
109
- "Fishing Rod",
110
- "Shovel",
111
- "Slingshot",
112
- "Watering Can",
113
- ],
114
- Villagers: ["Agnes", "Alfonso", "Anchovy", "Axel", "Aurora"],
115
- };
57
+ title or author. Toggle the `Select` through the Controls.
58
+
59
+ Note: The labels for the `Select` and `TextInput` components are not visible but
60
+ aria-labels are used to make these children components accessible.
116
61
 
117
- <Preview withToolbar>
62
+ export const optionsGroup = [
63
+ "Art",
64
+ "Bushes",
65
+ "Clothing",
66
+ "Flowers",
67
+ "Fossils",
68
+ "Fruits",
69
+ "Furniture",
70
+ "Songs",
71
+ "Tools",
72
+ "Villagers",
73
+ ];
74
+
75
+ <Canvas withToolbar>
118
76
  <Story
119
77
  name="Basic"
120
78
  args={{
79
+ helperErrorText: "Search for items in Animal Crossing New Horizons",
80
+ invalidText: "Could not find the item :(",
81
+ isDisabled: false,
82
+ isInvalid: false,
83
+ isRequired: false,
121
84
  showHelperText: true,
122
85
  showSelect: true,
123
- isErrorState: false,
124
- disabledButton: false,
125
86
  }}
126
87
  >
127
88
  {(args) => (
128
- <div>
129
- <SearchBar {...args}>
130
- {args.showSelect && (
131
- <Select
132
- name="nhItemSearch"
133
- ariaLabel="Filter Search"
134
- id="select-searchBar"
135
- isRequired={false}
136
- >
137
- {Object.keys(optionsGroup).map((nhOption) => (
138
- <option key={nhOption} aria-selected={false}>
139
- {nhOption}
140
- </option>
141
- ))}
142
- </Select>
143
- )}
144
- <Input
145
- id="inputBasic"
146
- ariaLabelledBy="buttonBasic"
147
- placeholder="Item Search"
148
- required={true}
149
- type={InputTypes.text}
150
- attributes={{
151
- ["aria-describedby"]: "helperTextBasic",
152
- }}
153
- errored={args.isErrorState}
154
- />
155
- <Button
156
- buttonType={ButtonTypes.Primary}
157
- id="buttonBasic"
158
- type="submit"
159
- disabled={args.disabledButton}
160
- >
161
- <Icon
162
- name={IconNames.search}
163
- decorative={true}
164
- modifiers={["small", "icon-left"]}
165
- />
166
- Search
167
- </Button>
168
- </SearchBar>
169
- {args.showHelperText && (
170
- <HelperErrorText id="helperTextBasic" isError={args.isErrorState}>
171
- Search for items in Animal Crossing New Horizons
172
- </HelperErrorText>
173
- )}
174
- </div>
89
+ <SearchBar
90
+ onSubmit={() => {}}
91
+ {...args}
92
+ selectProps={
93
+ args.showSelect && {
94
+ labelText: "Select a category",
95
+ name: "selectName",
96
+ optionsData: optionsGroup,
97
+ }
98
+ }
99
+ textInputProps={{
100
+ labelText: "Item Search",
101
+ name: "textInputName",
102
+ placeholder: "Item Search",
103
+ }}
104
+ helperErrorText={args.showHelperText && args.helperErrorText}
105
+ />
175
106
  )}
176
107
  </Story>
177
- </Preview>
108
+ </Canvas>
178
109
 
179
110
  <ArgsTable story="Basic" />
180
111
 
112
+ ## Component Props
113
+
114
+ ### Select Component
115
+
116
+ To render an optional `Select` component, an object must be passed to the
117
+ `selectProps` prop. It _must_ include `name`, `labelText`, and `optionsData`
118
+ properties. The `labelText` value won't be rendered but will be used for its
119
+ `aria-label` attribute.
120
+
121
+ ```
122
+ const selectProps = {
123
+ name: "select-form-name",
124
+ labelText: "Select a category",
125
+ optionsData: optionsGroup,
126
+ };
127
+
128
+ // ...
129
+ <SearchBar
130
+ onSubmit={() => {}}
131
+ selectProps={selectProps}
132
+ // ...
133
+ />
134
+ ```
135
+
136
+ ### TextInput Component
137
+
138
+ To render the `TextInput` component, an object must be passed to the
139
+ `textInputProps` prop. It _must_ include `labelText`, `name`, and `placeholder`
140
+ properties. The `labelText` value won't be rendered but will be used for its
141
+ `aria-label` attribute. Optional values to pass include `onChange` and `value`.
142
+
143
+ ```
144
+ const textInputProps = {
145
+ labelText: "Item Search",
146
+ name: "textInputName",
147
+ onChange: (event) => {
148
+ console.log(event.target.value);
149
+ },
150
+ placeholder: "Item Search",
151
+ value: "Horizon"
152
+ };
153
+
154
+ // ...
155
+ <SearchBar
156
+ onSubmit={() => {}}
157
+ textInputProps={textInputProps}
158
+ // ...
159
+ />
160
+ ```
161
+
162
+ ### Custom Input Component
163
+
164
+ To render a custom input component, pass the component to the `textInputElement`
165
+ prop. This will render your custom input component such as an `Autocomplete`
166
+ component. Check the "Search Autocomplete" example for more details.
167
+
168
+ ```
169
+ const textInputElement = <CustomInput {...props} />;
170
+
171
+ // ...
172
+ <SearchBar
173
+ onSubmit={() => {}}
174
+ textInputElement={textInputElement}
175
+ // ...
176
+ />
177
+ ```
178
+
179
+ ### Button Component
180
+
181
+ A `Button` component will automatically be rendered for the `SearchBar`
182
+ component. If you want to pass a callback function to the `Button`, use the
183
+ `buttonOnClick` prop.
184
+
185
+ ### HelperErrorText Component
186
+
187
+ To render the `HelperErrorText` component, pass a string value to the
188
+ `helperErrorText` prop. For the invalid state when `isInvalid` is true, pass the
189
+ error string in the `invalidText` prop.
190
+
191
+ ```
192
+ const helperErrorText = "";
193
+
194
+ // ...
195
+ <SearchBar
196
+ onSubmit={() => {}}
197
+ helperErrorText="Search for items in Animal Crossing New Horizons"
198
+ // ...
199
+ />
200
+ ```
201
+
181
202
  ## Search Autocomplete
182
203
 
183
204
  While the Design System does not implement an `Autosuggest` or `Autocomplete`
184
205
  component, it does show a pattern for using the `react-autosuggest` package.
185
206
  In this example, we're using the `react-autosuggest` example found in the
186
207
  [Basic Autosuggest story](https://nypl.github.io/nypl-design-system/storybook-static/?path=/story/autosuggest--autosuggest-library)
187
- as the main component inside the `SearchBar` component. See the combination of
188
- the Autosuggest story along with this story to see how to compose all the
189
- components together.
208
+ as the main component inside the `SearchBar` component.
190
209
 
191
- <Preview withToolbar>
192
- <Story name="Search Autocomplete">
210
+ In order to render this custom input element in the `SearchBar` component, pass
211
+ it in the `textInputElement` prop. Do not pass an object to the `textInputProps`
212
+ prop since the custom input component passed in `textInputElement` will take
213
+ precedence.
214
+
215
+ <Canvas withToolbar>
216
+ <Story
217
+ name="Search Autocomplete"
218
+ args={{
219
+ isDisabled: false,
220
+ isInvalid: false,
221
+ isRequired: false,
222
+ }}
223
+ >
193
224
  {(args) => (
194
225
  <div style={{ minHeight: "150px" }}>
195
- <SearchBar {...args}>
196
- {stories.SearchBarExample()}
197
- <Button
198
- buttonType={ButtonTypes.Primary}
199
- id="autosuggest-button"
200
- type="submit"
201
- >
202
- <Icon
203
- name={IconNames.search}
204
- decorative={true}
205
- modifiers={["small", "icon-left"]}
206
- />
207
- Search
208
- </Button>
209
- </SearchBar>
210
- <HelperErrorText id="autosuggest-helperText" isError={false}>
211
- Select your home library. Start by typing the name of the library. Try{" "}
212
- {'"'}ba{'"'}.
213
- </HelperErrorText>
226
+ <SearchBar
227
+ onSubmit={() => {}}
228
+ textInputElement={stories.SearchBarExample()}
229
+ helperErrorText="Select your home library. Start by typing the name of the library. Try 'ba'."
230
+ {...args}
231
+ />
214
232
  </div>
215
233
  )}
216
234
  </Story>
217
- </Preview>
235
+ </Canvas>
218
236
 
219
237
  ## Other Examples
220
238
 
@@ -223,75 +241,132 @@ Here are the same possible states of the `SearchBar` component in static example
223
241
 
224
242
  ### Error State
225
243
 
226
- For the error state, make sure that the `errored` prop is passed to the `Input`
227
- component and the `isError` prop is passed to the `HelperErrorText` component.
244
+ For the error state, set the `isInvalid` prop to `true`. This will update the
245
+ state for all its children. If you passed a custom input element, you must
246
+ handle the error state yourself.
228
247
 
229
- <Preview>
248
+ <Canvas>
230
249
  <DSProvider>
231
- <SearchBar>
232
- <Input
233
- ariaLabelledBy="button-error-state"
234
- id="input-error"
235
- placeholder="Item Search"
236
- required={true}
237
- type={InputTypes.text}
238
- errored={true}
239
- attributes={{
240
- ["aria-describedby"]: "error-helperText",
241
- }}
242
- />
243
- <Button
244
- buttonType={ButtonTypes.Primary}
245
- id="button-error-state"
246
- type="submit"
247
- >
248
- <Icon
249
- name={IconNames.search}
250
- decorative={true}
251
- modifiers={["small", "icon-left"]}
252
- />
253
- Search
254
- </Button>
255
- </SearchBar>
256
- <HelperErrorText id="error-helperText" isError={true}>
257
- Sorry, we can't find that item!
258
- </HelperErrorText>
250
+ <SearchBar
251
+ onSubmit={() => {}}
252
+ textInputProps={{
253
+ labelText: "Item Search",
254
+ name: "textInputName",
255
+ placeholder: "Item Search",
256
+ }}
257
+ helperErrorText="This is the helper text!"
258
+ invalidText="Could not find the item :("
259
+ isInvalid
260
+ />
259
261
  </DSProvider>
260
- </Preview>
261
-
262
- <br />
262
+ </Canvas>
263
263
 
264
264
  ### Disabled State
265
265
 
266
- For the disabled state, make sure to pass the `disabled` prop to the
267
- `Button` component.
266
+ For the disabled state, set the `isDisabled` prop to `true`. This will update
267
+ the state for all its children. If you passed a custom input element, you must
268
+ handle the disabled state yourself.
268
269
 
269
- <Preview>
270
+ <Canvas>
270
271
  <DSProvider>
271
- <SearchBar>
272
- <Input
273
- ariaLabelledBy="button-disabled"
274
- id="input-disabled"
275
- placeholder="Item Search"
276
- required={true}
277
- type={InputTypes.text}
278
- />
279
- <Button
280
- buttonType={ButtonTypes.Primary}
281
- id="button-disabled"
282
- type="submit"
283
- disabled={true}
284
- >
285
- <Icon
286
- name={IconNames.search}
287
- decorative={true}
288
- modifiers={["small", "icon-left"]}
289
- />
290
- Search
291
- </Button>
292
- </SearchBar>
293
- <HelperErrorText id="error-disabled">
294
- Reason for disabled state.
295
- </HelperErrorText>
272
+ <SearchBar
273
+ obSubmit={() => {}}
274
+ textInputProps={{
275
+ labelText: "Item Search",
276
+ name: "textInputName",
277
+ placeholder: "Item Search",
278
+ }}
279
+ helperErrorText="Reason for disabled state."
280
+ isDisabled
281
+ />
282
+ </DSProvider>
283
+ </Canvas>
284
+
285
+ ### TextInput and onSubmit Values
286
+
287
+ _NOTE: open the browser console to see the values logged in the example below._
288
+
289
+ It is possible to get certain values from the `SearchBar` component by passing
290
+ callback functions as props.
291
+
292
+ The keyword value in the `TextInput` component can be accessed by passing a
293
+ function to the `onChange` property in the `textInputProp` prop. This is useful
294
+ for validating the keyword the user entered.
295
+
296
+ To get values when the form is submitted, you must:
297
+
298
+ - pass values for the `name` property in the `selectProps` and `textInputProps`
299
+ prop objects.
300
+ - get the values returned in the `onSubmit` callback function.
301
+
302
+ In the following example, the `name` for the `Select` is "selectName" and the
303
+ `name` for the `TextInput` is "textInputName". The `onSubmit` function can get
304
+ the submitted values through the `event` object. In the example below, the
305
+ values can be retrieved as `event.target.selectName.value` and
306
+ `event.target.textInputName.value`.
307
+
308
+ ```tsx
309
+ function SearchBarValueExample() {
310
+ const textInputOnChange = (event) => {
311
+ console.log(`onChange TextInput value: ${event.target.value}`);
312
+ };
313
+ const onSubmit = (event) => {
314
+ event.preventDefault();
315
+ console.log(`onSubmit Select value: ${event.target.searchName.value}`);
316
+ console.log(`onSubmit TextInput value ${event.target.textInputName.value}`);
317
+ };
318
+ return (
319
+ <SearchBar
320
+ onSubmit={onSubmit}
321
+ selectProps={{
322
+ labelText: "Select a category",
323
+ name: "selectName",
324
+ optionsData: optionsGroup,
325
+ }}
326
+ textInputProps={{
327
+ labelText: "Item Search",
328
+ name: "textInputName",
329
+ onChange: textInputOnChange,
330
+ placeholder: "Item Search",
331
+ }}
332
+ helperErrorText="Search for an item"
333
+ invalidText="Could not find the item :("
334
+ />
335
+ );
336
+ }
337
+ ```
338
+
339
+ export function SearchBarValueExample() {
340
+ const textInputOnChange = (event) => {
341
+ console.log(`onChange TextInput value: ${event.target.value}`);
342
+ };
343
+ const onSubmit = (event) => {
344
+ event.preventDefault();
345
+ console.log(`onSubmit Select value: ${event.target.selectName.value}`);
346
+ console.log(`onSubmit TextInput value ${event.target.textInputName.value}`);
347
+ };
348
+ return (
349
+ <SearchBar
350
+ onSubmit={onSubmit}
351
+ selectProps={{
352
+ labelText: "Select a category",
353
+ name: "selectName",
354
+ optionsData: optionsGroup,
355
+ }}
356
+ textInputProps={{
357
+ labelText: "Item Search",
358
+ name: "textInputName",
359
+ onChange: textInputOnChange,
360
+ placeholder: "Item Search",
361
+ }}
362
+ helperErrorText="Search for an item"
363
+ invalidText="Could not find the item :("
364
+ />
365
+ );
366
+ }
367
+
368
+ <Canvas>
369
+ <DSProvider>
370
+ <SearchBarValueExample />
296
371
  </DSProvider>
297
- </Preview>
372
+ </Canvas>