@nypl/design-system-react-components 0.25.12 → 0.26.1

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 (337) hide show
  1. package/CHANGELOG.md +131 -1
  2. package/README.md +10 -10
  3. package/dist/components/Accordion/Accordion.d.ts +6 -4
  4. package/dist/components/Accordion/AccordionTypes.d.ts +5 -0
  5. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -4
  6. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +1 -1
  7. package/dist/components/Button/Button.d.ts +2 -2
  8. package/dist/components/Card/Card.d.ts +22 -29
  9. package/dist/components/Checkbox/Checkbox.d.ts +3 -3
  10. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +9 -6
  11. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +1 -1
  12. package/dist/components/DatePicker/DatePicker.d.ts +5 -6
  13. package/dist/components/Fieldset/Fieldset.d.ts +5 -6
  14. package/dist/components/Form/Form.d.ts +6 -6
  15. package/dist/components/Grid/GridTypes.d.ts +7 -7
  16. package/dist/components/Grid/SimpleGrid.d.ts +1 -1
  17. package/dist/components/Heading/Heading.d.ts +5 -5
  18. package/dist/components/Heading/HeadingTypes.d.ts +1 -1
  19. package/dist/components/HelperErrorText/HelperErrorText.d.ts +9 -8
  20. package/dist/components/Hero/Hero.d.ts +9 -5
  21. package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -10
  22. package/dist/components/Icons/Icon.d.ts +2 -1
  23. package/dist/components/Icons/IconTypes.d.ts +1 -0
  24. package/dist/components/Image/Image.d.ts +27 -9
  25. package/dist/components/Image/ImageTypes.d.ts +4 -4
  26. package/dist/components/Label/Label.d.ts +7 -4
  27. package/dist/components/Link/Link.d.ts +1 -1
  28. package/dist/components/List/List.d.ts +11 -11
  29. package/dist/components/List/ListTypes.d.ts +1 -1
  30. package/dist/components/Logo/Logo.d.ts +2 -1
  31. package/dist/components/Logo/LogoSvgs.d.ts +2 -0
  32. package/dist/components/Logo/LogoTypes.d.ts +4 -2
  33. package/dist/components/Notification/Notification.d.ts +7 -7
  34. package/dist/components/Pagination/Pagination.d.ts +2 -2
  35. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -3
  36. package/dist/components/Radio/Radio.d.ts +5 -7
  37. package/dist/components/RadioGroup/RadioGroup.d.ts +16 -8
  38. package/dist/components/SearchBar/SearchBar.d.ts +4 -4
  39. package/dist/components/Select/Select.d.ts +12 -8
  40. package/dist/components/Select/SelectTypes.d.ts +4 -0
  41. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -6
  42. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +0 -4
  43. package/dist/components/Slider/Slider.d.ts +6 -4
  44. package/dist/components/StatusBadge/StatusBadge.d.ts +5 -1
  45. package/dist/components/StructuredContent/StructuredContent.d.ts +10 -23
  46. package/dist/components/Table/Table.d.ts +1 -1
  47. package/dist/components/Tabs/Tabs.d.ts +7 -6
  48. package/dist/components/Template/Template.d.ts +17 -8
  49. package/dist/components/Text/Text.d.ts +4 -4
  50. package/dist/components/Text/TextTypes.d.ts +1 -1
  51. package/dist/components/TextInput/TextInput.d.ts +7 -7
  52. package/dist/components/Toggle/Toggle.d.ts +8 -10
  53. package/dist/components/Toggle/{ToggleSizes.d.ts → ToggleTypes.d.ts} +1 -1
  54. package/dist/components/VideoPlayer/VideoPlayer.d.ts +2 -1
  55. package/dist/design-system-react-components.cjs.development.js +2075 -1468
  56. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  57. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  58. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  59. package/dist/design-system-react-components.esm.js +2086 -1483
  60. package/dist/design-system-react-components.esm.js.map +1 -1
  61. package/dist/helpers/enums.d.ts +4 -0
  62. package/dist/hooks/useCarouselStyles.d.ts +3 -2
  63. package/dist/hooks/useNYPLTheme.d.ts +12 -0
  64. package/dist/index.d.ts +11 -9
  65. package/dist/styles.css +1 -1
  66. package/dist/theme/components/accordion.d.ts +7 -12
  67. package/dist/theme/components/breadcrumb.d.ts +3 -0
  68. package/dist/theme/components/button.d.ts +10 -2
  69. package/dist/theme/components/card.d.ts +44 -24
  70. package/dist/theme/components/checkbox.d.ts +6 -4
  71. package/dist/theme/components/checkboxGroup.d.ts +4 -2
  72. package/dist/theme/components/componentWrapper.d.ts +2 -2
  73. package/dist/theme/components/customTable.d.ts +84 -1
  74. package/dist/theme/components/fieldset.d.ts +4 -14
  75. package/dist/theme/components/global.d.ts +25 -18
  76. package/dist/theme/components/heading.d.ts +53 -0
  77. package/dist/theme/components/helperErrorText.d.ts +1 -0
  78. package/dist/theme/components/hero.d.ts +21 -15
  79. package/dist/theme/components/image.d.ts +1 -1
  80. package/dist/theme/components/label.d.ts +9 -10
  81. package/dist/theme/components/list.d.ts +99 -9
  82. package/dist/theme/components/notification.d.ts +4 -4
  83. package/dist/theme/components/pagination.d.ts +2 -5
  84. package/dist/theme/components/radio.d.ts +7 -4
  85. package/dist/theme/components/radioGroup.d.ts +4 -2
  86. package/dist/theme/components/select.d.ts +37 -5
  87. package/dist/theme/components/skeletonLoader.d.ts +2 -2
  88. package/dist/theme/components/slider.d.ts +6 -3
  89. package/dist/theme/components/structuredContent.d.ts +197 -0
  90. package/dist/theme/components/textInput.d.ts +18 -6
  91. package/dist/theme/components/toggle.d.ts +20 -5
  92. package/dist/theme/foundations/global.d.ts +2 -0
  93. package/dist/theme/foundations/radii.d.ts +1 -0
  94. package/dist/theme/foundations/spacing.d.ts +46 -43
  95. package/package.json +5 -6
  96. package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +34 -0
  97. package/src/components/Accordion/Accordion.stories.mdx +150 -66
  98. package/src/components/Accordion/Accordion.test.tsx +65 -17
  99. package/src/components/Accordion/Accordion.tsx +61 -27
  100. package/src/components/Accordion/AccordionTypes.tsx +5 -0
  101. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +505 -14
  102. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
  103. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +37 -19
  104. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +57 -36
  105. package/src/components/Breadcrumbs/Breadcrumbs.tsx +14 -13
  106. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +1 -1
  107. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +211 -12
  108. package/src/components/Button/Button.stories.mdx +87 -23
  109. package/src/components/Button/Button.test.tsx +25 -0
  110. package/src/components/Button/Button.tsx +18 -7
  111. package/src/components/Button/__snapshots__/Button.test.tsx.snap +27 -7
  112. package/src/components/Card/Card.stories.mdx +493 -329
  113. package/src/components/Card/Card.test.tsx +138 -18
  114. package/src/components/Card/Card.tsx +151 -85
  115. package/src/components/Card/__snapshots__/Card.test.tsx.snap +221 -101
  116. package/src/components/Chakra/Center.stories.mdx +2 -2
  117. package/src/components/Chakra/Grid.stories.mdx +4 -4
  118. package/src/components/Checkbox/Checkbox.stories.mdx +73 -9
  119. package/src/components/Checkbox/Checkbox.test.tsx +89 -10
  120. package/src/components/Checkbox/Checkbox.tsx +26 -16
  121. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +209 -6
  122. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +135 -23
  123. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +216 -90
  124. package/src/components/CheckboxGroup/CheckboxGroup.tsx +39 -26
  125. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +493 -89
  126. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +12 -0
  127. package/src/components/ComponentWrapper/ComponentWrapper.tsx +39 -41
  128. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +47 -34
  129. package/src/components/DatePicker/DatePicker.stories.mdx +63 -27
  130. package/src/components/DatePicker/DatePicker.test.tsx +94 -15
  131. package/src/components/DatePicker/DatePicker.tsx +67 -58
  132. package/src/components/DatePicker/_DatePicker.scss +71 -13
  133. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +250 -206
  134. package/src/components/Fieldset/Fieldset.stories.mdx +33 -3
  135. package/src/components/Fieldset/Fieldset.test.tsx +58 -28
  136. package/src/components/Fieldset/Fieldset.tsx +35 -30
  137. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +40 -19
  138. package/src/components/Form/Form.stories.mdx +118 -47
  139. package/src/components/Form/Form.test.tsx +59 -16
  140. package/src/components/Form/Form.tsx +89 -65
  141. package/src/components/Form/__snapshots__/Form.test.tsx.snap +83 -5
  142. package/src/components/Grid/GridTypes.tsx +7 -7
  143. package/src/components/Grid/SimpleGrid.stories.mdx +87 -41
  144. package/src/components/Grid/SimpleGrid.test.tsx +24 -9
  145. package/src/components/Grid/SimpleGrid.tsx +29 -20
  146. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +16 -1
  147. package/src/components/Heading/Heading.stories.mdx +56 -25
  148. package/src/components/Heading/Heading.test.tsx +17 -7
  149. package/src/components/Heading/Heading.tsx +60 -58
  150. package/src/components/Heading/HeadingTypes.tsx +1 -1
  151. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +27 -8
  152. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +64 -42
  153. package/src/components/HelperErrorText/HelperErrorText.test.tsx +15 -0
  154. package/src/components/HelperErrorText/HelperErrorText.tsx +40 -35
  155. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +35 -4
  156. package/src/components/Hero/Hero.stories.mdx +143 -113
  157. package/src/components/Hero/Hero.test.tsx +146 -58
  158. package/src/components/Hero/Hero.tsx +144 -112
  159. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +89 -17
  160. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +26 -4
  161. package/src/components/HorizontalRule/HorizontalRule.test.tsx +9 -17
  162. package/src/components/HorizontalRule/HorizontalRule.tsx +9 -25
  163. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +18 -5
  164. package/src/components/Icons/Icon.stories.mdx +80 -23
  165. package/src/components/Icons/Icon.test.tsx +51 -2
  166. package/src/components/Icons/Icon.tsx +93 -71
  167. package/src/components/Icons/IconTypes.tsx +1 -0
  168. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +129 -0
  169. package/src/components/Image/Image.stories.mdx +160 -71
  170. package/src/components/Image/Image.test.tsx +40 -48
  171. package/src/components/Image/Image.tsx +80 -48
  172. package/src/components/Image/ImageTypes.ts +4 -4
  173. package/src/components/Image/__snapshots__/Image.test.tsx.snap +84 -21
  174. package/src/components/Label/Label.stories.mdx +42 -20
  175. package/src/components/Label/Label.test.tsx +42 -17
  176. package/src/components/Label/Label.tsx +22 -13
  177. package/src/components/Label/__snapshots__/Label.test.tsx.snap +19 -15
  178. package/src/components/Link/Link.stories.mdx +25 -1
  179. package/src/components/Link/Link.test.tsx +21 -0
  180. package/src/components/Link/Link.tsx +16 -9
  181. package/src/components/Link/__snapshots__/Link.test.tsx.snap +37 -11
  182. package/src/components/List/List.stories.mdx +75 -40
  183. package/src/components/List/List.test.tsx +73 -22
  184. package/src/components/List/List.tsx +44 -28
  185. package/src/components/List/ListTypes.tsx +1 -1
  186. package/src/components/List/__snapshots__/List.test.tsx.snap +110 -8
  187. package/src/components/Logo/Logo.stories.mdx +40 -16
  188. package/src/components/Logo/Logo.test.tsx +29 -2
  189. package/src/components/Logo/Logo.tsx +28 -11
  190. package/src/components/Logo/LogoSvgs.tsx +4 -0
  191. package/src/components/Logo/LogoTypes.tsx +3 -1
  192. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +73 -2
  193. package/src/components/Modal/Modal.stories.mdx +13 -0
  194. package/src/components/Notification/Notification.stories.mdx +29 -5
  195. package/src/components/Notification/Notification.test.tsx +23 -0
  196. package/src/components/Notification/Notification.tsx +53 -51
  197. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +158 -29
  198. package/src/components/Pagination/Pagination.stories.mdx +27 -6
  199. package/src/components/Pagination/Pagination.test.tsx +55 -2
  200. package/src/components/Pagination/Pagination.tsx +12 -9
  201. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +244 -27
  202. package/src/components/Placeholder/Placeholder.tsx +3 -1
  203. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +76 -10
  204. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +87 -13
  205. package/src/components/ProgressIndicator/ProgressIndicator.tsx +20 -10
  206. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +101 -14
  207. package/src/components/Radio/Radio.stories.mdx +75 -11
  208. package/src/components/Radio/Radio.test.tsx +83 -9
  209. package/src/components/Radio/Radio.tsx +70 -62
  210. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +163 -5
  211. package/src/components/RadioGroup/RadioGroup.stories.mdx +293 -94
  212. package/src/components/RadioGroup/RadioGroup.test.tsx +193 -68
  213. package/src/components/RadioGroup/RadioGroup.tsx +110 -101
  214. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1258 -902
  215. package/src/components/SearchBar/SearchBar.stories.mdx +101 -36
  216. package/src/components/SearchBar/{SearchBar.Test.tsx → SearchBar.test.tsx} +46 -4
  217. package/src/components/SearchBar/SearchBar.tsx +20 -11
  218. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +1039 -0
  219. package/src/components/Select/Select.stories.mdx +151 -62
  220. package/src/components/Select/Select.test.tsx +56 -44
  221. package/src/components/Select/Select.tsx +125 -104
  222. package/src/components/Select/SelectTypes.tsx +5 -0
  223. package/src/components/Select/__snapshots__/Select.test.tsx.snap +749 -409
  224. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +53 -23
  225. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +14 -8
  226. package/src/components/SkeletonLoader/SkeletonLoader.tsx +80 -78
  227. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +0 -5
  228. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +169 -10
  229. package/src/components/Slider/Slider.stories.mdx +123 -41
  230. package/src/components/Slider/Slider.test.tsx +65 -17
  231. package/src/components/Slider/Slider.tsx +30 -23
  232. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +403 -226
  233. package/src/components/StatusBadge/StatusBadge.stories.mdx +19 -1
  234. package/src/components/StatusBadge/StatusBadge.test.tsx +19 -1
  235. package/src/components/StatusBadge/StatusBadge.tsx +25 -20
  236. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +22 -3
  237. package/src/components/StructuredContent/StructuredContent.stories.mdx +229 -61
  238. package/src/components/StructuredContent/StructuredContent.test.tsx +162 -101
  239. package/src/components/StructuredContent/StructuredContent.tsx +98 -103
  240. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +102 -17
  241. package/src/components/StyleGuide/Bidirectionality.stories.mdx +5 -5
  242. package/src/components/StyleGuide/Breakpoints.stories.mdx +6 -6
  243. package/src/components/StyleGuide/Buttons.stories.mdx +2 -12
  244. package/src/components/StyleGuide/ColorCard.tsx +4 -4
  245. package/src/components/StyleGuide/Colors.stories.mdx +1 -2
  246. package/src/components/StyleGuide/DesignTokens.stories.mdx +56 -26
  247. package/src/components/StyleGuide/Forms.stories.mdx +27 -12
  248. package/src/components/StyleGuide/Iconography.stories.mdx +2 -12
  249. package/src/components/StyleGuide/Spacing.stories.mdx +80 -41
  250. package/src/components/StyleGuide/Typography.stories.mdx +47 -33
  251. package/src/components/Table/Table.stories.mdx +38 -11
  252. package/src/components/Table/Table.test.tsx +16 -1
  253. package/src/components/Table/Table.tsx +10 -8
  254. package/src/components/Table/__snapshots__/Table.test.tsx.snap +408 -5
  255. package/src/components/Tabs/Tabs.stories.mdx +59 -10
  256. package/src/components/Tabs/Tabs.test.tsx +29 -11
  257. package/src/components/Tabs/Tabs.tsx +28 -21
  258. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +394 -5
  259. package/src/components/Template/Template.stories.mdx +73 -32
  260. package/src/components/Template/Template.test.tsx +68 -5
  261. package/src/components/Template/Template.tsx +89 -71
  262. package/src/components/Template/__snapshots__/Template.test.tsx.snap +195 -22
  263. package/src/components/Text/Text.stories.mdx +32 -15
  264. package/src/components/Text/Text.test.tsx +14 -11
  265. package/src/components/Text/Text.tsx +13 -16
  266. package/src/components/Text/TextTypes.tsx +1 -1
  267. package/src/components/Text/__snapshots__/Text.test.tsx.snap +21 -4
  268. package/src/components/TextInput/TextInput.stories.mdx +73 -27
  269. package/src/components/TextInput/TextInput.test.tsx +65 -50
  270. package/src/components/TextInput/TextInput.tsx +123 -115
  271. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +96 -73
  272. package/src/components/Toggle/Toggle.stories.mdx +74 -26
  273. package/src/components/Toggle/Toggle.test.tsx +41 -10
  274. package/src/components/Toggle/Toggle.tsx +29 -26
  275. package/src/components/Toggle/{ToggleSizes.tsx → ToggleTypes.tsx} +1 -1
  276. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +191 -4
  277. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +52 -4
  278. package/src/components/VideoPlayer/VideoPlayer.test.tsx +41 -6
  279. package/src/components/VideoPlayer/VideoPlayer.tsx +134 -120
  280. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +81 -39
  281. package/src/docs/Chakra.stories.mdx +50 -9
  282. package/src/docs/Welcome.stories.mdx +168 -0
  283. package/src/{components/Card/CardTypes.tsx → helpers/enums.ts} +2 -2
  284. package/src/hooks/tests/useNYPLTheme.test.tsx +1 -1
  285. package/src/hooks/useCarouselStyles.stories.mdx +30 -0
  286. package/src/hooks/useCarouselStyles.ts +3 -2
  287. package/src/hooks/useNYPLTheme.stories.mdx +101 -0
  288. package/src/hooks/useNYPLTheme.ts +31 -7
  289. package/src/hooks/useWindowSize.stories.mdx +23 -0
  290. package/src/index.ts +11 -15
  291. package/src/styles/base/_place-holder.scss +1 -1
  292. package/src/theme/components/accordion.ts +7 -12
  293. package/src/theme/components/breadcrumb.ts +3 -0
  294. package/src/theme/components/button.ts +15 -7
  295. package/src/theme/components/card.ts +56 -36
  296. package/src/theme/components/checkbox.ts +10 -8
  297. package/src/theme/components/checkboxGroup.ts +4 -2
  298. package/src/theme/components/componentWrapper.ts +2 -2
  299. package/src/theme/components/customTable.ts +39 -31
  300. package/src/theme/components/fieldset.ts +1 -2
  301. package/src/theme/components/global.ts +29 -23
  302. package/src/theme/components/heading.ts +1 -1
  303. package/src/theme/components/helperErrorText.ts +1 -0
  304. package/src/theme/components/hero.ts +14 -16
  305. package/src/theme/components/icon.ts +5 -2
  306. package/src/theme/components/image.ts +1 -1
  307. package/src/theme/components/label.ts +4 -3
  308. package/src/theme/components/list.ts +73 -66
  309. package/src/theme/components/notification.ts +7 -7
  310. package/src/theme/components/pagination.ts +2 -5
  311. package/src/theme/components/progressIndicator.ts +3 -3
  312. package/src/theme/components/radio.ts +9 -9
  313. package/src/theme/components/radioGroup.ts +4 -2
  314. package/src/theme/components/select.ts +35 -16
  315. package/src/theme/components/skeletonLoader.ts +3 -3
  316. package/src/theme/components/slider.ts +8 -7
  317. package/src/theme/components/statusBadge.ts +2 -2
  318. package/src/theme/components/structuredContent.ts +66 -1
  319. package/src/theme/components/tabs.ts +2 -2
  320. package/src/theme/components/template.ts +9 -9
  321. package/src/theme/components/textInput.ts +13 -12
  322. package/src/theme/components/toggle.ts +43 -13
  323. package/src/theme/components/videoPlayer.ts +1 -1
  324. package/src/theme/foundations/colors.ts +1 -1
  325. package/src/theme/foundations/radii.ts +1 -0
  326. package/src/theme/foundations/spacing.ts +70 -22
  327. package/src/theme/foundations/typography.ts +2 -2
  328. package/src/utils/componentCategories.ts +28 -21
  329. package/dist/components/Card/CardTypes.d.ts +0 -4
  330. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +0 -4
  331. package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +0 -4
  332. package/dist/components/SearchBar/SearchBar.Test.d.ts +0 -1
  333. package/dist/helpers/generateUUID.d.ts +0 -1
  334. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +0 -4
  335. package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +0 -4
  336. package/src/docs/Intro.stories.mdx +0 -53
  337. package/src/helpers/generateUUID.tsx +0 -5
@@ -1,17 +1,39 @@
1
- import { Box, useMultiStyleConfig } from "@chakra-ui/react";
1
+ import { Box, chakra, useMultiStyleConfig } from "@chakra-ui/react";
2
2
  import * as React from "react";
3
3
 
4
4
  import { ImageRatios, ImageSizes, ImageTypes } from "./ImageTypes";
5
5
 
6
+ // Used for components that have an `imageProps` prop.
7
+ export interface ComponentImageProps {
8
+ /** String value used to populate the `alt` attribute of the internal `Image`
9
+ * component's `img` element. @NOTE if an image is used, this value must be passed. */
10
+ alt?: string;
11
+ /** Optional value to control the aspect ratio of the internal `Image` component.
12
+ * Defaults to `ImageRatios.Square`. */
13
+ aspectRatio?: ImageRatios;
14
+ /** Optional value to render as a caption for the internal `Image` component. */
15
+ caption?: string;
16
+ /** Optional DOM element to use instead of the DS `Image` component. */
17
+ component?: JSX.Element;
18
+ /** Optional value to render as a credit for the internal `Image` component. */
19
+ credit?: string;
20
+ /** Optional value to control the size of the internal `Image` component.
21
+ * Defaults to `ImageSizes.Medium`. */
22
+ size?: ImageSizes;
23
+ /** Optional value that contains the path to an image. If omitted, the internal
24
+ * DS `Image` component will not render. */
25
+ src?: string;
26
+ }
27
+
6
28
  interface ImageWrapperProps {
7
29
  /** Optionally pass in additional Chakra-based styles. */
8
30
  additionalWrapperStyles?: { [key: string]: any };
9
31
  /** ClassName you can add in addition to 'image' */
10
32
  className?: string;
11
33
  /** Optional value to control the aspect ratio of the cartd image; default value is `square` */
12
- imageAspectRatio?: ImageRatios;
34
+ aspectRatio?: ImageRatios;
13
35
  /** Optional value to control the size of the image */
14
- imageSize?: ImageSizes;
36
+ size?: ImageSizes;
15
37
  }
16
38
 
17
39
  export interface ImageProps extends ImageWrapperProps {
@@ -21,67 +43,72 @@ export interface ImageProps extends ImageWrapperProps {
21
43
  additionalImageStyles?: { [key: string]: any };
22
44
  /** Alternate text description of the image */
23
45
  alt: string;
46
+ /** Adding will wrap the image in a <figure> */
47
+ caption?: string;
24
48
  /** Custom image component */
25
49
  component?: JSX.Element | null;
26
50
  /** Adding will wrap the image in a <figure> */
27
- imageCaption?: string;
28
- /** Adding will wrap the image in a <figure> */
29
- imageCredit?: string;
30
- /** Optional value to control the size of the image */
31
- imageSize?: ImageSizes;
51
+ credit?: string;
32
52
  /** Optional value for the image type */
33
53
  imageType?: ImageTypes;
34
54
  /** The src attribute is required, and contains the path to the image you want to embed. */
35
55
  src: string;
36
56
  }
37
57
 
38
- function ImageWrapper(props: React.PropsWithChildren<ImageWrapperProps>) {
39
- const {
40
- additionalWrapperStyles = {},
41
- className = "",
42
- children,
43
- imageAspectRatio = ImageRatios.Original,
44
- imageSize = ImageSizes.Default,
45
- } = props;
46
- const styles = useMultiStyleConfig("CustomImageWrapper", {
47
- ratio: imageAspectRatio,
48
- size: imageSize,
49
- });
50
- return (
51
- <Box
52
- className={`the-wrap ${className}`}
53
- __css={{ ...styles, ...additionalWrapperStyles }}
54
- >
55
- <Box className="the-crop" __css={styles.crop}>
56
- {children}
58
+ const ImageWrapper = chakra(
59
+ (props: React.PropsWithChildren<ImageWrapperProps>) => {
60
+ const {
61
+ additionalWrapperStyles = {},
62
+ className = "",
63
+ children,
64
+ aspectRatio = ImageRatios.Original,
65
+ size = ImageSizes.Default,
66
+ ...rest
67
+ } = props;
68
+ const styles = useMultiStyleConfig("CustomImageWrapper", {
69
+ ratio: aspectRatio,
70
+ size,
71
+ });
72
+ return (
73
+ <Box
74
+ className={`the-wrap ${className}`}
75
+ __css={{ ...styles, ...additionalWrapperStyles }}
76
+ {...rest}
77
+ >
78
+ <Box className="the-crop" __css={styles.crop}>
79
+ {children}
80
+ </Box>
57
81
  </Box>
58
- </Box>
59
- );
60
- }
82
+ );
83
+ }
84
+ );
61
85
 
62
- export default function Image(props: ImageProps) {
86
+ export const Image = chakra((props: ImageProps) => {
63
87
  const {
64
88
  additionalFigureStyles = {},
65
89
  additionalImageStyles = {},
66
90
  additionalWrapperStyles = {},
67
91
  alt,
92
+ aspectRatio = ImageRatios.Original,
93
+ caption,
68
94
  className = "",
69
95
  component,
70
- imageAspectRatio = ImageRatios.Original,
71
- imageCaption,
72
- imageCredit,
73
- imageSize = ImageSizes.Default,
96
+ credit,
74
97
  imageType = ImageTypes.Default,
98
+ size = ImageSizes.Default,
75
99
  src,
100
+ ...rest
76
101
  } = props;
77
- const useImageWrapper = imageAspectRatio !== ImageRatios.Original;
102
+ const useImageWrapper = aspectRatio !== ImageRatios.Original;
78
103
  const styles = useMultiStyleConfig("CustomImage", {
79
104
  variant: imageType,
80
- size: imageSize,
105
+ size,
81
106
  });
82
107
 
83
108
  if (alt && alt.length > 300) {
84
- throw new Error("Alt Text must be less than 300 characters");
109
+ throw new Error(
110
+ "NYPL Reservoir Image: Alt text must be less than 300 characters."
111
+ );
85
112
  }
86
113
 
87
114
  const imageComponent: JSX.Element = component ? (
@@ -96,10 +123,11 @@ export default function Image(props: ImageProps) {
96
123
  );
97
124
  const finalImage = useImageWrapper ? (
98
125
  <ImageWrapper
99
- className={className}
100
- imageAspectRatio={imageAspectRatio}
101
- imageSize={imageSize}
102
126
  additionalWrapperStyles={additionalWrapperStyles}
127
+ aspectRatio={aspectRatio}
128
+ className={className}
129
+ size={size}
130
+ {...(caption || credit ? {} : rest)}
103
131
  >
104
132
  {imageComponent}
105
133
  </ImageWrapper>
@@ -107,17 +135,21 @@ export default function Image(props: ImageProps) {
107
135
  imageComponent
108
136
  );
109
137
 
110
- return imageCaption || imageCredit ? (
111
- <Box as="figure" __css={{ ...styles.figure, ...additionalFigureStyles }}>
138
+ return caption || credit ? (
139
+ <Box
140
+ as="figure"
141
+ __css={{ ...styles.figure, ...additionalFigureStyles }}
142
+ {...rest}
143
+ >
112
144
  {finalImage}
113
145
  <Box as="figcaption" __css={styles.figcaption}>
114
- {imageCaption && (
115
- <Box __css={styles.captionWrappers}>{imageCaption}</Box>
116
- )}
117
- {imageCredit && <Box __css={styles.captionWrappers}>{imageCredit}</Box>}
146
+ {caption && <Box __css={styles.captionWrappers}>{caption}</Box>}
147
+ {credit && <Box __css={styles.captionWrappers}>{credit}</Box>}
118
148
  </Box>
119
149
  </Box>
120
150
  ) : (
121
151
  finalImage
122
152
  );
123
- }
153
+ });
154
+
155
+ export default Image;
@@ -11,11 +11,11 @@ export enum ImageRatios {
11
11
 
12
12
  export enum ImageSizes {
13
13
  Default = "default",
14
- Large = "large",
15
- Medium = "medium",
16
- Small = "small",
17
- ExtraSmall = "xsmall",
18
14
  ExtraExtraSmall = "xxsmall",
15
+ ExtraSmall = "xsmall",
16
+ Small = "small",
17
+ Medium = "medium",
18
+ Large = "large",
19
19
  }
20
20
 
21
21
  export enum ImageTypes {
@@ -30,6 +30,53 @@ exports[`Image Renders the UI snapshot correctly 2`] = `
30
30
  `;
31
31
 
32
32
  exports[`Image Renders the UI snapshot correctly 3`] = `
33
+ <figure
34
+ className="css-0"
35
+ >
36
+ <img
37
+ alt=""
38
+ className="css-0"
39
+ src="test.png"
40
+ />
41
+ <figcaption
42
+ className="css-0"
43
+ >
44
+ <div
45
+ className="css-0"
46
+ >
47
+ Credit
48
+ </div>
49
+ </figcaption>
50
+ </figure>
51
+ `;
52
+
53
+ exports[`Image Renders the UI snapshot correctly 4`] = `
54
+ <figure
55
+ className="css-0"
56
+ >
57
+ <img
58
+ alt=""
59
+ className="css-0"
60
+ src="test.png"
61
+ />
62
+ <figcaption
63
+ className="css-0"
64
+ >
65
+ <div
66
+ className="css-0"
67
+ >
68
+ Caption
69
+ </div>
70
+ <div
71
+ className="css-0"
72
+ >
73
+ Credit
74
+ </div>
75
+ </figcaption>
76
+ </figure>
77
+ `;
78
+
79
+ exports[`Image Renders the UI snapshot correctly 5`] = `
33
80
  <img
34
81
  alt=""
35
82
  className="css-0"
@@ -37,7 +84,7 @@ exports[`Image Renders the UI snapshot correctly 3`] = `
37
84
  />
38
85
  `;
39
86
 
40
- exports[`Image Renders the UI snapshot correctly 4`] = `
87
+ exports[`Image Renders the UI snapshot correctly 6`] = `
41
88
  <img
42
89
  alt=""
43
90
  className="css-0"
@@ -45,7 +92,7 @@ exports[`Image Renders the UI snapshot correctly 4`] = `
45
92
  />
46
93
  `;
47
94
 
48
- exports[`Image Renders the UI snapshot correctly 5`] = `
95
+ exports[`Image Renders the UI snapshot correctly 7`] = `
49
96
  <img
50
97
  alt=""
51
98
  className="css-0"
@@ -53,7 +100,7 @@ exports[`Image Renders the UI snapshot correctly 5`] = `
53
100
  />
54
101
  `;
55
102
 
56
- exports[`Image Renders the UI snapshot correctly 6`] = `
103
+ exports[`Image Renders the UI snapshot correctly 8`] = `
57
104
  <img
58
105
  alt=""
59
106
  className="css-0"
@@ -61,7 +108,7 @@ exports[`Image Renders the UI snapshot correctly 6`] = `
61
108
  />
62
109
  `;
63
110
 
64
- exports[`Image Renders the UI snapshot correctly 7`] = `
111
+ exports[`Image Renders the UI snapshot correctly 9`] = `
65
112
  <img
66
113
  alt=""
67
114
  className="css-0"
@@ -69,9 +116,9 @@ exports[`Image Renders the UI snapshot correctly 7`] = `
69
116
  />
70
117
  `;
71
118
 
72
- exports[`Image Renders the UI snapshot correctly 8`] = `
119
+ exports[`Image Renders the UI snapshot correctly 10`] = `
73
120
  <div
74
- className="the-wrap css-0"
121
+ className="the-wrap css-1u8qly9"
75
122
  >
76
123
  <div
77
124
  className="the-crop css-0"
@@ -85,9 +132,9 @@ exports[`Image Renders the UI snapshot correctly 8`] = `
85
132
  </div>
86
133
  `;
87
134
 
88
- exports[`Image Renders the UI snapshot correctly 9`] = `
135
+ exports[`Image Renders the UI snapshot correctly 11`] = `
89
136
  <div
90
- className="the-wrap css-0"
137
+ className="the-wrap css-1u8qly9"
91
138
  >
92
139
  <div
93
140
  className="the-crop css-0"
@@ -101,7 +148,7 @@ exports[`Image Renders the UI snapshot correctly 9`] = `
101
148
  </div>
102
149
  `;
103
150
 
104
- exports[`Image Renders the UI snapshot correctly 10`] = `
151
+ exports[`Image Renders the UI snapshot correctly 12`] = `
105
152
  <img
106
153
  alt=""
107
154
  className="css-0"
@@ -109,9 +156,9 @@ exports[`Image Renders the UI snapshot correctly 10`] = `
109
156
  />
110
157
  `;
111
158
 
112
- exports[`Image Renders the UI snapshot correctly 11`] = `
159
+ exports[`Image Renders the UI snapshot correctly 13`] = `
113
160
  <div
114
- className="the-wrap css-0"
161
+ className="the-wrap css-1u8qly9"
115
162
  >
116
163
  <div
117
164
  className="the-crop css-0"
@@ -125,9 +172,9 @@ exports[`Image Renders the UI snapshot correctly 11`] = `
125
172
  </div>
126
173
  `;
127
174
 
128
- exports[`Image Renders the UI snapshot correctly 12`] = `
175
+ exports[`Image Renders the UI snapshot correctly 14`] = `
129
176
  <div
130
- className="the-wrap css-0"
177
+ className="the-wrap css-1u8qly9"
131
178
  >
132
179
  <div
133
180
  className="the-crop css-0"
@@ -141,9 +188,9 @@ exports[`Image Renders the UI snapshot correctly 12`] = `
141
188
  </div>
142
189
  `;
143
190
 
144
- exports[`Image Renders the UI snapshot correctly 13`] = `
191
+ exports[`Image Renders the UI snapshot correctly 15`] = `
145
192
  <div
146
- className="the-wrap css-0"
193
+ className="the-wrap css-1u8qly9"
147
194
  >
148
195
  <div
149
196
  className="the-crop css-0"
@@ -157,9 +204,9 @@ exports[`Image Renders the UI snapshot correctly 13`] = `
157
204
  </div>
158
205
  `;
159
206
 
160
- exports[`Image Renders the UI snapshot correctly 14`] = `
207
+ exports[`Image Renders the UI snapshot correctly 16`] = `
161
208
  <div
162
- className="the-wrap css-0"
209
+ className="the-wrap css-1u8qly9"
163
210
  >
164
211
  <div
165
212
  className="the-crop css-0"
@@ -173,9 +220,9 @@ exports[`Image Renders the UI snapshot correctly 14`] = `
173
220
  </div>
174
221
  `;
175
222
 
176
- exports[`Image Renders the UI snapshot correctly 15`] = `
223
+ exports[`Image Renders the UI snapshot correctly 17`] = `
177
224
  <div
178
- className="the-wrap css-0"
225
+ className="the-wrap css-1u8qly9"
179
226
  >
180
227
  <div
181
228
  className="the-crop css-0"
@@ -189,9 +236,9 @@ exports[`Image Renders the UI snapshot correctly 15`] = `
189
236
  </div>
190
237
  `;
191
238
 
192
- exports[`Image Renders the UI snapshot correctly 16`] = `
239
+ exports[`Image Renders the UI snapshot correctly 18`] = `
193
240
  <div
194
- className="the-wrap css-0"
241
+ className="the-wrap css-1u8qly9"
195
242
  >
196
243
  <div
197
244
  className="the-crop css-0"
@@ -204,3 +251,19 @@ exports[`Image Renders the UI snapshot correctly 16`] = `
204
251
  </div>
205
252
  </div>
206
253
  `;
254
+
255
+ exports[`Image Renders the UI snapshot correctly 19`] = `
256
+ <img
257
+ alt=""
258
+ className="css-0"
259
+ src="test.png"
260
+ />
261
+ `;
262
+
263
+ exports[`Image Renders the UI snapshot correctly 20`] = `
264
+ <img
265
+ alt=""
266
+ className="css-0"
267
+ src="test.png"
268
+ />
269
+ `;
@@ -1,4 +1,4 @@
1
- import { Box } from "@chakra-ui/react";
1
+ import { Box, VStack } from "@chakra-ui/react";
2
2
  import {
3
3
  ArgsTable,
4
4
  Canvas,
@@ -19,10 +19,7 @@ import { getCategory } from "../../utils/componentCategories";
19
19
  argTypes={{
20
20
  className: { control: false },
21
21
  id: { control: false },
22
- optReqFlag: {
23
- control: { type: "select" },
24
- options: ["Required", "Optional", ""],
25
- },
22
+ isInlined: { table: { disable: true } },
26
23
  text: {
27
24
  description: "Only used for Storybook",
28
25
  },
@@ -34,10 +31,21 @@ import { getCategory } from "../../utils/componentCategories";
34
31
  | Component Version | DS Version |
35
32
  | ----------------- | ---------- |
36
33
  | Added | `0.0.10` |
37
- | Latest | `0.25.8` |
34
+ | Latest | `0.26.0` |
35
+
36
+ ## Table of Contents
37
+
38
+ - [Overview](#overview)
39
+ - [Component Props](#component-props)
40
+ - [Accessibility](#accessibility)
41
+ - [isRequired helper text](#isrequired-helper-text)
42
+
43
+ ## Overview
38
44
 
39
45
  <Description of={Label} />
40
46
 
47
+ ## Component Props
48
+
41
49
  <Canvas>
42
50
  <Story
43
51
  name="Label with Controls"
@@ -45,7 +53,7 @@ import { getCategory } from "../../utils/componentCategories";
45
53
  className: undefined,
46
54
  htmlFor: "id-of-input-element",
47
55
  id: "label-id",
48
- optReqFlag: "Required",
56
+ isRequired: false,
49
57
  text: "A label for a villager.",
50
58
  }}
51
59
  >
@@ -55,24 +63,38 @@ import { getCategory } from "../../utils/componentCategories";
55
63
 
56
64
  <ArgsTable story="Label with Controls" />
57
65
 
58
- ## Required/Optional helper text
66
+ ## Accessibility
67
+
68
+ The `Label` component is an accessible HTML `<label>` element. The JSX prop
69
+ `htmlFor` should be set to the `id` of the input element that the label is
70
+ associated with. This is the proper way to label inputs so that screenreaders
71
+ can read the label, without the use of the `aria-label` attribute on the input
72
+ element.
73
+
74
+ Note: All form-related Reservoir components already implement this `Label`
75
+ component so there is no need to use this component unless if you are building
76
+ a new form-related input component.
77
+
78
+ Resources:
79
+
80
+ - [WebAIM Creating Accessible Forms](https://webaim.org/techniques/forms/advanced)
81
+
82
+ ## isRequired helper text
59
83
 
60
84
  An optional helper string can be rendered at the end of the `Label` text through
61
- the `optReqFlag` prop. Pass in either `"Required"`, `"Optional"`, or `""`. The
62
- default value is undefined for no helper text to appear.
85
+ the `isRequired` prop. This is useful for visually labeling a field as required
86
+ with the `"(Required)"` text next to the label's text. This is set to `false`
87
+ by default.
63
88
 
64
89
  <Canvas>
65
- <Story name="Required/Optional helper text">
66
- <Box width="300px">
67
- <Label htmlFor="some-id1" optReqFlag="">
68
- No text
69
- </Label>
70
- <Label htmlFor="some-id2" optReqFlag="Required">
71
- Required helper text
90
+ <Story name="isRequired helper text">
91
+ <VStack>
92
+ <Label htmlFor="label-id1" id="regular">
93
+ A regular label
72
94
  </Label>
73
- <Label htmlFor="some-id3" optReqFlag="Optional">
74
- Optional helper text
95
+ <Label htmlFor="label-id2" id="required" isRequired>
96
+ A label that is required
75
97
  </Label>
76
- </Box>
98
+ </VStack>
77
99
  </Story>
78
100
  </Canvas>
@@ -14,6 +14,15 @@ describe("Label Accessibility", () => {
14
14
  );
15
15
  expect(await axe(container)).toHaveNoViolations();
16
16
  });
17
+
18
+ it("passes axe accessibility test with required text", async () => {
19
+ const { container } = render(
20
+ <Label id="label" htmlFor="some-input-id" isRequired>
21
+ Cupcakes
22
+ </Label>
23
+ );
24
+ expect(await axe(container)).toHaveNoViolations();
25
+ });
17
26
  });
18
27
 
19
28
  describe("Label", () => {
@@ -35,30 +44,33 @@ describe("Label", () => {
35
44
  expect(screen.getByText("Cupcakes")).toBeInTheDocument();
36
45
  });
37
46
 
38
- it("renders the optional or required helper text", () => {
47
+ it("renders the '(Required)' helper text", () => {
39
48
  const { rerender } = render(
40
49
  <Label id="label" htmlFor="some-input-id">
41
50
  <span>Cupcakes</span>
42
51
  </Label>
43
52
  );
44
- expect(screen.queryByText("Optional")).not.toBeInTheDocument();
45
- expect(screen.queryByText("Required")).not.toBeInTheDocument();
53
+ expect(screen.queryByText(/Required/i)).not.toBeInTheDocument();
46
54
 
47
55
  rerender(
48
- <Label id="label2" htmlFor="some-input-id" optReqFlag="Optional">
56
+ <Label id="label" htmlFor="some-input-id" isRequired>
49
57
  <span>Cupcakes</span>
50
58
  </Label>
51
59
  );
52
- expect(screen.getByText("Optional")).toBeInTheDocument();
53
- expect(screen.queryByText("Required")).not.toBeInTheDocument();
54
60
 
55
- rerender(
56
- <Label id="label3" htmlFor="some-input-id" optReqFlag="Required">
57
- <span>Cupcakes</span>
58
- </Label>
61
+ expect(screen.queryByText(/Required/i)).toBeInTheDocument();
62
+ });
63
+
64
+ it("Logs a warning when there is no `id` passed", () => {
65
+ const warn = jest.spyOn(console, "warn");
66
+ render(
67
+ // @ts-ignore: Typescript complains when a required prop is not passed, but
68
+ // here we don't want to pass the required prop to make sure the warning appears.
69
+ <Label htmlFor="some-input-id">Cupcakes</Label>
70
+ );
71
+ expect(warn).toHaveBeenCalledWith(
72
+ "NYPL Reservoir Label: This component's required `id` prop was not passed."
59
73
  );
60
- expect(screen.queryByText("Optional")).not.toBeInTheDocument();
61
- expect(screen.getByText("Required")).toBeInTheDocument();
62
74
  });
63
75
 
64
76
  it("Renders the UI snapshot correctly", () => {
@@ -69,23 +81,36 @@ describe("Label", () => {
69
81
  </Label>
70
82
  )
71
83
  .toJSON();
72
- const optional = renderer
84
+ const required = renderer
73
85
  .create(
74
- <Label id="label2" htmlFor="some-input-id" optReqFlag="Optional">
86
+ <Label id="label3" htmlFor="some-input-id" isRequired>
75
87
  Cupcakes
76
88
  </Label>
77
89
  )
78
90
  .toJSON();
79
- const required = renderer
91
+ const withChakraProps = renderer
92
+ .create(
93
+ <Label
94
+ id="chakra"
95
+ htmlFor="some-input-id"
96
+ p="20px"
97
+ color="ui.error.primary"
98
+ >
99
+ Cupcakes
100
+ </Label>
101
+ )
102
+ .toJSON();
103
+ const withOtherProps = renderer
80
104
  .create(
81
- <Label id="label3" htmlFor="some-input-id" optReqFlag="Required">
105
+ <Label id="props" htmlFor="some-input-id" data-testid="props">
82
106
  Cupcakes
83
107
  </Label>
84
108
  )
85
109
  .toJSON();
86
110
 
87
111
  expect(simple).toMatchSnapshot();
88
- expect(optional).toMatchSnapshot();
89
112
  expect(required).toMatchSnapshot();
113
+ expect(withChakraProps).toMatchSnapshot();
114
+ expect(withOtherProps).toMatchSnapshot();
90
115
  });
91
116
  });
@@ -1,9 +1,5 @@
1
+ import { Box, chakra, useStyleConfig } from "@chakra-ui/react";
1
2
  import * as React from "react";
2
- import { Box, useMultiStyleConfig } from "@chakra-ui/react";
3
-
4
- import generateUUID from "../../helpers/generateUUID";
5
-
6
- type optReqFlagType = "Required" | "Optional" | "" | undefined;
7
3
 
8
4
  interface LabelProps {
9
5
  /** Additional CSS class name to render in the `label` element. */
@@ -12,22 +8,34 @@ interface LabelProps {
12
8
  htmlFor: string;
13
9
  /** ID that other components can cross reference for accessibility purposes */
14
10
  id?: string;
15
- /** Displays "Required" or "Optional" string alongside the label */
16
- optReqFlag?: optReqFlagType;
11
+ /** Controls whether the label should be inline with the input it goes with.
12
+ * This prop should only be used internally. */
13
+ isInlined?: boolean;
14
+ /** Controls whether the "(Required)" text should be displayed alongside the
15
+ * label's text. False by default. */
16
+ isRequired?: boolean;
17
17
  }
18
18
 
19
19
  /**
20
20
  * A label for form inputs. It should never be used alone.
21
21
  */
22
- function Label(props: React.PropsWithChildren<LabelProps>) {
22
+ export const Label = chakra((props: React.PropsWithChildren<LabelProps>) => {
23
23
  const {
24
24
  children,
25
25
  className,
26
26
  htmlFor,
27
- id = generateUUID(),
28
- optReqFlag,
27
+ id,
28
+ isInlined = false,
29
+ isRequired = false,
30
+ ...rest
29
31
  } = props;
30
- const styles = useMultiStyleConfig("Label", {});
32
+ const styles = useStyleConfig("Label", { isInlined });
33
+
34
+ if (!id) {
35
+ console.warn(
36
+ "NYPL Reservoir Label: This component's required `id` prop was not passed."
37
+ );
38
+ }
31
39
 
32
40
  return (
33
41
  <Box
@@ -36,11 +44,12 @@ function Label(props: React.PropsWithChildren<LabelProps>) {
36
44
  className={className}
37
45
  htmlFor={htmlFor}
38
46
  __css={styles}
47
+ {...rest}
39
48
  >
40
49
  {children}
41
- {optReqFlag && <Box __css={styles.helper}>{optReqFlag}</Box>}
50
+ {isRequired && <span> (Required)</span>}
42
51
  </Box>
43
52
  );
44
- }
53
+ });
45
54
 
46
55
  export default Label;