@nypl/design-system-react-components 0.23.4 → 0.25.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 (307) hide show
  1. package/CHANGELOG.md +98 -1
  2. package/README.md +46 -11
  3. package/dist/components/Accordion/Accordion.d.ts +14 -14
  4. package/dist/components/Autosuggest/Autosuggest.stories.d.ts +1 -0
  5. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +11 -14
  6. package/dist/components/Breadcrumbs/BreadcrumbsTypes.d.ts +6 -0
  7. package/dist/components/Button/Button.d.ts +6 -13
  8. package/dist/components/Button/ButtonTypes.d.ts +5 -3
  9. package/dist/components/Card/Card.d.ts +59 -10
  10. package/dist/components/Card/CardTypes.d.ts +19 -0
  11. package/dist/components/CardEdition/CardEdition.d.ts +21 -0
  12. package/dist/components/{StyleGuide/Colors.stories.d.ts → CardEdition/CardEdition.stories.d.ts} +5 -2
  13. package/dist/components/Checkbox/Checkbox.d.ts +21 -16
  14. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +43 -0
  15. package/dist/components/CheckboxGroup/CheckboxGroupLayoutTypes.d.ts +4 -0
  16. package/dist/components/DatePicker/DatePicker.d.ts +79 -0
  17. package/dist/components/DatePicker/DatePickerTypes.d.ts +5 -0
  18. package/dist/components/Form/Form.d.ts +16 -8
  19. package/dist/components/Form/FormTypes.d.ts +2 -0
  20. package/dist/components/Grid/GridTypes.d.ts +9 -0
  21. package/dist/components/Grid/SimpleGrid.d.ts +14 -0
  22. package/dist/components/Heading/Heading.d.ts +9 -11
  23. package/dist/components/Heading/{HeadingDisplaySizes.d.ts → HeadingTypes.d.ts} +8 -0
  24. package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +2 -1
  25. package/dist/components/Hero/Hero.d.ts +19 -14
  26. package/dist/components/Hero/HeroTypes.d.ts +10 -5
  27. package/dist/components/Icons/Icon.d.ts +13 -16
  28. package/dist/components/Icons/IconSvgs.d.ts +4 -0
  29. package/dist/components/Icons/IconTypes.d.ts +78 -60
  30. package/dist/components/Image/Image.stories.d.ts +2 -1
  31. package/dist/components/Label/Label.d.ts +10 -26
  32. package/dist/components/Link/Link.d.ts +8 -12
  33. package/dist/components/List/List.stories.d.ts +1 -0
  34. package/dist/components/Radio/Radio.d.ts +30 -24
  35. package/dist/components/RadioGroup/RadioGroup.d.ts +40 -0
  36. package/dist/components/RadioGroup/RadioGroupLayoutTypes.d.ts +4 -0
  37. package/dist/components/SearchBar/SearchBar.d.ts +45 -27
  38. package/dist/components/Select/Select.d.ts +34 -35
  39. package/dist/components/Select/SelectTypes.d.ts +4 -0
  40. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +1 -1
  41. package/dist/components/SkeletonLoader/SkeletonLoaderTypes.d.ts +2 -2
  42. package/dist/components/StatusBadge/StatusBadge.d.ts +8 -6
  43. package/dist/components/StatusBadge/StatusBadgeTypes.d.ts +5 -0
  44. package/dist/components/Tabs/Tabs.d.ts +25 -0
  45. package/dist/components/Template/Template.d.ts +91 -0
  46. package/dist/components/Text/Text.d.ts +16 -0
  47. package/dist/components/Text/TextTypes.d.ts +6 -0
  48. package/dist/components/TextInput/TextInput.d.ts +37 -30
  49. package/dist/components/TextInput/TextInputTypes.d.ts +5 -0
  50. package/dist/design-system-react-components.cjs.development.js +4102 -917
  51. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  52. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  53. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  54. package/dist/design-system-react-components.esm.js +4023 -920
  55. package/dist/design-system-react-components.esm.js.map +1 -1
  56. package/dist/index.d.ts +23 -5
  57. package/dist/resources.scss +133 -24
  58. package/dist/styles.css +1 -1
  59. package/dist/theme/components/accordion.d.ts +25 -0
  60. package/dist/theme/components/breadcrumb.d.ts +90 -0
  61. package/dist/theme/components/button.d.ts +109 -0
  62. package/dist/theme/components/checkbox.d.ts +91 -0
  63. package/dist/theme/components/customCheckboxGroup.d.ts +18 -0
  64. package/dist/theme/components/customRadioGroup.d.ts +18 -0
  65. package/dist/theme/components/global.d.ts +55 -0
  66. package/dist/theme/components/globalMixins.d.ts +15 -0
  67. package/dist/theme/components/heading.d.ts +110 -0
  68. package/dist/theme/components/hero.d.ts +492 -0
  69. package/dist/theme/components/icon.d.ts +13 -0
  70. package/dist/theme/components/label.d.ts +16 -0
  71. package/dist/theme/components/link.d.ts +45 -0
  72. package/dist/theme/components/radio.d.ts +95 -0
  73. package/dist/theme/components/searchBar.d.ts +20 -0
  74. package/dist/theme/components/select.d.ts +58 -0
  75. package/dist/theme/components/statusBadge.d.ts +25 -0
  76. package/dist/theme/components/tabs.d.ts +85 -0
  77. package/dist/theme/components/template.d.ts +105 -0
  78. package/dist/theme/components/text.d.ts +20 -0
  79. package/dist/theme/components/textInput.d.ts +105 -0
  80. package/dist/theme/foundations/breakpoints.d.ts +23 -0
  81. package/dist/theme/foundations/colors.d.ts +3 -0
  82. package/dist/theme/foundations/global.d.ts +23 -0
  83. package/dist/theme/foundations/shadows.d.ts +4 -0
  84. package/dist/theme/foundations/spacing.d.ts +77 -0
  85. package/dist/theme/foundations/typography.d.ts +8 -0
  86. package/dist/theme/index.d.ts +20 -0
  87. package/dist/theme/provider.d.ts +5 -0
  88. package/dist/theme/types.d.ts +1 -0
  89. package/dist/utils/utils.d.ts +6 -0
  90. package/package.json +9 -2
  91. package/src/components/Accordion/Accordion.stories.mdx +233 -33
  92. package/src/components/Accordion/Accordion.test.tsx +135 -19
  93. package/src/components/Accordion/Accordion.tsx +81 -56
  94. package/src/components/Autosuggest/Autosuggest.stories.mdx +4 -3
  95. package/src/components/Autosuggest/Autosuggest.stories.tsx +1 -1
  96. package/src/components/Autosuggest/_Autosuggest.scss +2 -2
  97. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +57 -56
  98. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +31 -25
  99. package/src/components/Breadcrumbs/Breadcrumbs.tsx +71 -73
  100. package/src/components/Breadcrumbs/BreadcrumbsTypes.tsx +6 -0
  101. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +100 -0
  102. package/src/components/Button/Button.stories.mdx +125 -138
  103. package/src/components/Button/Button.test.tsx +65 -11
  104. package/src/components/Button/Button.tsx +72 -68
  105. package/src/components/Button/ButtonTypes.tsx +4 -2
  106. package/src/components/Button/_Button.scss +7 -92
  107. package/src/components/Button/__snapshots__/Button.test.tsx.snap +58 -3
  108. package/src/components/Card/Card.stories.mdx +694 -0
  109. package/src/components/Card/Card.test.tsx +97 -102
  110. package/src/components/Card/Card.tsx +182 -31
  111. package/src/components/Card/CardTypes.tsx +21 -0
  112. package/src/components/Card/_Card.scss +234 -49
  113. package/src/components/{Card/Card.stories.tsx → CardEdition/CardEdition.stories.tsx} +32 -22
  114. package/src/components/CardEdition/CardEdition.test.tsx +395 -0
  115. package/src/components/CardEdition/CardEdition.tsx +60 -0
  116. package/src/components/CardEdition/_CardEdition.scss +138 -0
  117. package/src/components/Chakra/Box.stories.mdx +57 -0
  118. package/src/components/Chakra/Center.stories.mdx +99 -0
  119. package/src/components/Chakra/Grid.stories.mdx +79 -0
  120. package/src/components/Chakra/Stack.stories.mdx +93 -0
  121. package/src/components/Checkbox/Checkbox.stories.mdx +57 -35
  122. package/src/components/Checkbox/Checkbox.test.tsx +117 -147
  123. package/src/components/Checkbox/Checkbox.tsx +76 -50
  124. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +325 -0
  125. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +249 -0
  126. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +345 -0
  127. package/src/components/CheckboxGroup/CheckboxGroup.tsx +148 -0
  128. package/src/components/CheckboxGroup/CheckboxGroupLayoutTypes.tsx +4 -0
  129. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +1360 -0
  130. package/src/components/DatePicker/DatePicker.stories.mdx +284 -0
  131. package/src/components/DatePicker/DatePicker.test.tsx +657 -0
  132. package/src/components/DatePicker/DatePicker.tsx +396 -0
  133. package/src/components/DatePicker/DatePickerTypes.tsx +5 -0
  134. package/src/components/DatePicker/_DatePicker.scss +76 -0
  135. package/src/components/Form/Form.stories.mdx +130 -27
  136. package/src/components/Form/Form.test.tsx +78 -36
  137. package/src/components/Form/Form.tsx +53 -19
  138. package/src/components/Form/FormTypes.tsx +3 -0
  139. package/src/components/Form/__snapshots__/Form.test.tsx.snap +38 -0
  140. package/src/components/Grid/GridTypes.tsx +9 -0
  141. package/src/components/Grid/SimpleGrid.stories.mdx +275 -0
  142. package/src/components/Grid/SimpleGrid.test.tsx +66 -0
  143. package/src/components/Grid/SimpleGrid.tsx +37 -0
  144. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +8 -0
  145. package/src/components/Heading/Heading.stories.mdx +63 -33
  146. package/src/components/Heading/Heading.test.tsx +24 -16
  147. package/src/components/Heading/Heading.tsx +54 -38
  148. package/src/components/Heading/{HeadingDisplaySizes.tsx → HeadingTypes.tsx} +9 -0
  149. package/src/components/HelperErrorText/HelperErrorText.stories.tsx +2 -1
  150. package/src/components/HelperErrorText/_HelperErrorText.scss +1 -1
  151. package/src/components/Hero/Hero.stories.mdx +195 -85
  152. package/src/components/Hero/Hero.test.tsx +544 -113
  153. package/src/components/Hero/Hero.tsx +80 -93
  154. package/src/components/Hero/HeroTypes.tsx +17 -5
  155. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +307 -0
  156. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +6 -1
  157. package/src/components/HorizontalRule/_HorizontalRule.scss +1 -1
  158. package/src/components/Icons/Icon.stories.mdx +89 -74
  159. package/src/components/Icons/Icon.test.tsx +30 -22
  160. package/src/components/Icons/Icon.tsx +63 -61
  161. package/src/components/Icons/IconSvgs.tsx +8 -0
  162. package/src/components/Icons/IconTypes.tsx +80 -60
  163. package/src/components/Image/Image.stories.tsx +2 -1
  164. package/src/components/Input/_Input.scss +2 -2
  165. package/src/components/Label/Label.stories.mdx +77 -0
  166. package/src/components/Label/Label.test.tsx +43 -12
  167. package/src/components/Label/Label.tsx +28 -45
  168. package/src/components/Label/__snapshots__/Label.test.tsx.snap +41 -0
  169. package/src/components/Link/Link.stories.mdx +47 -41
  170. package/src/components/Link/Link.test.tsx +33 -44
  171. package/src/components/Link/Link.tsx +114 -100
  172. package/src/components/List/List.stories.mdx +7 -3
  173. package/src/components/List/List.stories.tsx +14 -9
  174. package/src/components/List/List.test.tsx +12 -8
  175. package/src/components/List/List.tsx +9 -7
  176. package/src/components/List/_List.scss +3 -3
  177. package/src/components/Modal/Modal.stories.mdx +7 -3
  178. package/src/components/Modal/_Modal.scss +1 -1
  179. package/src/components/Notification/Notification.stories.mdx +99 -65
  180. package/src/components/Notification/Notification.test.tsx +3 -16
  181. package/src/components/Notification/Notification.tsx +12 -12
  182. package/src/components/Notification/_Notification.scss +5 -4
  183. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +1 -1
  184. package/src/components/Pagination/Pagination.stories.mdx +7 -1
  185. package/src/components/Pagination/Pagination.test.tsx +16 -10
  186. package/src/components/Radio/Radio.stories.mdx +57 -46
  187. package/src/components/Radio/Radio.test.tsx +92 -138
  188. package/src/components/Radio/Radio.tsx +70 -69
  189. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +250 -0
  190. package/src/components/RadioGroup/RadioGroup.stories.mdx +247 -0
  191. package/src/components/RadioGroup/RadioGroup.test.tsx +327 -0
  192. package/src/components/RadioGroup/RadioGroup.tsx +154 -0
  193. package/src/components/RadioGroup/RadioGroupLayoutTypes.tsx +4 -0
  194. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +1101 -0
  195. package/src/components/SearchBar/SearchBar.Test.tsx +151 -16
  196. package/src/components/SearchBar/SearchBar.stories.mdx +196 -224
  197. package/src/components/SearchBar/SearchBar.tsx +151 -46
  198. package/src/components/Select/Select.stories.mdx +193 -168
  199. package/src/components/Select/Select.test.tsx +129 -324
  200. package/src/components/Select/Select.tsx +120 -160
  201. package/src/components/Select/SelectTypes.tsx +4 -0
  202. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +18 -29
  203. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +7 -7
  204. package/src/components/SkeletonLoader/SkeletonLoader.tsx +4 -2
  205. package/src/components/SkeletonLoader/SkeletonLoaderTypes.tsx +2 -2
  206. package/src/components/SkeletonLoader/_SkeletonLoader.scss +3 -3
  207. package/src/components/StatusBadge/StatusBadge.stories.mdx +91 -0
  208. package/src/components/StatusBadge/StatusBadge.test.tsx +35 -7
  209. package/src/components/StatusBadge/StatusBadge.tsx +24 -25
  210. package/src/components/StatusBadge/StatusBadgeTypes.tsx +5 -0
  211. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +28 -0
  212. package/src/components/StyleGuide/Bidirectionality.stories.mdx +112 -90
  213. package/src/components/StyleGuide/Buttons.stories.mdx +98 -100
  214. package/src/components/StyleGuide/Colors.stories.mdx +336 -0
  215. package/src/components/StyleGuide/Forms.stories.mdx +85 -0
  216. package/src/components/StyleGuide/Iconography.stories.mdx +86 -93
  217. package/src/components/StyleGuide/Spacing.stories.mdx +0 -1
  218. package/src/components/StyleGuide/Typography.stories.mdx +164 -166
  219. package/src/components/StyleGuide/UIDocCard.tsx +4 -4
  220. package/src/components/Tabs/Tabs.stories.mdx +221 -0
  221. package/src/components/Tabs/Tabs.test.tsx +264 -0
  222. package/src/components/Tabs/Tabs.tsx +220 -0
  223. package/src/components/Template/Template.stories.mdx +574 -0
  224. package/src/components/Template/Template.test.tsx +124 -0
  225. package/src/components/Template/Template.tsx +226 -0
  226. package/src/components/Text/Text.stories.mdx +70 -0
  227. package/src/components/Text/Text.test.tsx +63 -0
  228. package/src/components/Text/Text.tsx +55 -0
  229. package/src/components/Text/TextTypes.tsx +6 -0
  230. package/src/components/Text/__snapshots__/Text.test.tsx.snap +33 -0
  231. package/src/components/TextInput/TextInput.stories.mdx +90 -90
  232. package/src/components/TextInput/TextInput.test.tsx +103 -83
  233. package/src/components/TextInput/TextInput.tsx +108 -91
  234. package/src/components/TextInput/TextInputTypes.tsx +6 -0
  235. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +2 -1
  236. package/src/components/VideoPlayer/VideoPlayer.tsx +4 -2
  237. package/src/components/VideoPlayer/_VideoPlayer.scss +1 -1
  238. package/src/docs/Chakra.stories.mdx +341 -0
  239. package/src/docs/Intro.stories.mdx +31 -24
  240. package/src/index.ts +70 -5
  241. package/src/styles/01-colors/_colors-brand.scss +6 -4
  242. package/src/styles/01-colors/_colors-utility.scss +14 -15
  243. package/src/styles/03-space/_space-inline.scss +47 -7
  244. package/src/styles/03-space/_space-inset.scss +33 -5
  245. package/src/styles/03-space/_space-stack.scss +48 -8
  246. package/src/styles/base/_02-breakpoints.scss +5 -4
  247. package/src/styles/base/_04-base.scss +2 -1
  248. package/src/styles/base/_place-holder.scss +1 -1
  249. package/src/styles/base/_typography.scss +1 -29
  250. package/src/styles.scss +22 -25
  251. package/src/theme/components/accordion.ts +30 -0
  252. package/src/theme/components/breadcrumb.ts +77 -0
  253. package/src/theme/components/button.ts +125 -0
  254. package/src/theme/components/checkbox.ts +107 -0
  255. package/src/theme/components/customCheckboxGroup.ts +12 -0
  256. package/src/theme/components/customRadioGroup.ts +12 -0
  257. package/src/theme/components/global.ts +71 -0
  258. package/src/theme/components/globalMixins.ts +16 -0
  259. package/src/theme/components/heading.ts +72 -0
  260. package/src/theme/components/hero.ts +239 -0
  261. package/src/theme/components/icon.ts +79 -0
  262. package/src/theme/components/label.ts +17 -0
  263. package/src/theme/components/link.ts +47 -0
  264. package/src/theme/components/radio.ts +106 -0
  265. package/src/theme/components/searchBar.ts +21 -0
  266. package/src/theme/components/select.ts +50 -0
  267. package/src/theme/components/statusBadge.ts +27 -0
  268. package/src/theme/components/tabs.ts +79 -0
  269. package/src/theme/components/template.ts +114 -0
  270. package/src/theme/components/text.ts +31 -0
  271. package/src/theme/components/textInput.ts +61 -0
  272. package/src/theme/foundations/breakpoints.ts +24 -0
  273. package/src/theme/foundations/colors.ts +208 -0
  274. package/src/theme/foundations/global.ts +26 -0
  275. package/src/theme/foundations/shadows.ts +5 -0
  276. package/src/theme/foundations/spacing.ts +85 -0
  277. package/src/theme/foundations/typography.ts +35 -0
  278. package/src/theme/index.ts +88 -0
  279. package/src/theme/provider.tsx +9 -0
  280. package/src/theme/types.ts +1 -0
  281. package/src/utils/componentCategories.ts +56 -21
  282. package/src/utils/utils.ts +13 -0
  283. package/dist/components/Accordion/Accordion.stories.d.ts +0 -5
  284. package/dist/components/Card/Card.stories.d.ts +0 -27
  285. package/dist/components/Label/Label.stories.d.ts +0 -12
  286. package/dist/components/StatusBadge/StatusBadge.stories.d.ts +0 -8
  287. package/dist/components/Template/Template.stories.d.ts +0 -29
  288. package/src/components/Accordion/Accordion.stories.tsx +0 -65
  289. package/src/components/Accordion/_Accordion.scss +0 -81
  290. package/src/components/Breadcrumbs/_Breadcrumbs.scss +0 -97
  291. package/src/components/Checkbox/_Checkbox.scss +0 -97
  292. package/src/components/Form/_Form.scss +0 -28
  293. package/src/components/Heading/_Heading.scss +0 -163
  294. package/src/components/Hero/_Hero.scss +0 -256
  295. package/src/components/Icons/_Icons.scss +0 -116
  296. package/src/components/Label/Label.stories.tsx +0 -30
  297. package/src/components/Label/_Label.scss +0 -22
  298. package/src/components/Link/_Link.scss +0 -73
  299. package/src/components/Radio/_Radio.scss +0 -84
  300. package/src/components/SearchBar/_SearchBar.scss +0 -16
  301. package/src/components/Select/_Select.scss +0 -82
  302. package/src/components/StatusBadge/StatusBadge.stories.tsx +0 -33
  303. package/src/components/StatusBadge/_StatusBadge.scss +0 -23
  304. package/src/components/StyleGuide/Colors.stories.tsx +0 -288
  305. package/src/components/Template/Template.stories.tsx +0 -85
  306. package/src/components/Template/_Template.scss +0 -63
  307. package/src/components/TextInput/_TextInput.scss +0 -59
package/CHANGELOG.md CHANGED
@@ -8,6 +8,103 @@ Currently, this repo is in Prerelease. When it is released, this project will ad
8
8
 
9
9
  ## Prerelease
10
10
 
11
+ ## 0.25.1 (October 14, 2021)
12
+
13
+ ### Adds
14
+
15
+ - Updates the `Accordion` component to internally use Chakra components.
16
+ - Adds DS `SimpleGrid` component composed from Chakra's `Simplegrid` component.
17
+ - Adds DS `Text` component composed from Chakra's `Text` component.
18
+ - Update the NYPL Colors with updated color names and values.
19
+ - Composes the DS `TextInput` component from Chakra's `Input` and `Textarea` components.
20
+ - Composes the DS `Select` component from Chakra's `Select` component.
21
+ - Composes the DS `Hero` component from Chakra's component.
22
+ - Composes the DS `CheckboxGroup` component from Chakra's `CheckboxGroup` component.
23
+ - Composes the DS "Template" components (`Template`, `TemplateHeader`, `TemplateBreakout`, `TemplateContent`, `TemplateContentPrimary`, `TemplateContentSidebar`, `TemplateFooter`) from Chakra's `Box` component for page layouts through children components.
24
+ - Composes the DS `TemplateAppContainer` component from Chakra's `Box` component for page layouts through props.
25
+ - Composes the DS `Link` component with Chakra component and fixes the `Button` type.
26
+ - Exports Chakra's `Grid` and `GridItem` components.
27
+ - Composes the DS `Label` component with Chakra component and updates the font size.
28
+ - Composes the DS `StatusBadge` component from Chakra's component.
29
+ - Composes the DS `Forms` component using DS and Chakra components.
30
+ - Composes the DS `Icon` component with Chakra's `Icon` component. Added new props for `Icon` sizing, alignment, name, and rotation.
31
+ - Composes the DS `SearchBar` component from DS `Select`, `TextInput`, `Button`, and `HelperErrorText` components.
32
+ - Composes the DS `Breadcrumbs` component from Chakra's `Breadcumb`, `BreadcrumbItem` and `BreadcrumbLink` components.
33
+
34
+ ### Changes
35
+
36
+ - Updates spacing values to use NYPL spacing rather than "em"s.
37
+ - Updates the `SkeletonLoaderLayouts` enum values from `Horizontal` and `Vertical` to `Row` and `Column`, respectively.
38
+ - Updates the `CardLayouts` enum values from `Horizontal` and `Vertical` to `Row` and `Column`, respectively.
39
+ - Updates font size of the `legend` element used in `CheckboxGroup`, `DatePicker` and `RadioGroup`.
40
+
41
+ ## 0.25.0
42
+
43
+ ### Breaking Changes
44
+
45
+ - Renames `HeadingDisplaySizes.tsx` to `HeadingTypes.tsx`.
46
+
47
+ ### Adds
48
+
49
+ - Integrates Chakra-UI into the codebase.
50
+ - Moved SCSS and CSS variable styles into a custom NYPL theme to extend Chakra's base theme.
51
+ - Adds `DSProvider` component to use the NYPL theme in consuming applications.
52
+ - Exports Chakra's `Box`, `Center`, `Circle`, `Square`, `Stack`, `HStack`, and `VStack` components.
53
+ - Composes the DS `Button` component from Chakra's `Button` component.
54
+ - Composes the DS `Heading` component from Chakra's `Heading` component.
55
+ - Composes the DS `Tabs` component from Chakra's `Tabs`, `TabList`, `Tab`, `TabPanels`, and `TabPanel` components.
56
+ - Composes the DS `Radio` component from Chakra's `Radio` component.
57
+ - Composes the DS `RadioGroup` component from Chakra's `RadioGroup` component.
58
+ - Composes the DS `Checkbox` component from Chakra's `Checkbox` component.
59
+ - Updates the `errorText` prop name to `invalidText`.
60
+
61
+ ### Removes
62
+
63
+ - Removes the `color-classes` SCSS mixin.
64
+
65
+ ### Changes
66
+
67
+ - Updates the development preview URL from the Netlify link to the Tugboat QA link.
68
+
69
+ ## 0.24.1
70
+
71
+ ### Adds
72
+
73
+ - Adds `FormSpacing` enum to DS exports.
74
+ - Adds `utility_account_filled`, `utility_account_unfilled`, `utility_hamburger` and `utility_search` icons to `Icon` component.
75
+
76
+ ### Changes
77
+
78
+ - Updates `General Guidelines` for `Buttons Style Guide`.
79
+
80
+ ### Fixes
81
+
82
+ - Fixes left padding on `Card` when `imageAtEnd` and `border` are both `true`.
83
+
84
+ ## 0.24.0
85
+
86
+ ### Breaking Changes
87
+
88
+ - Renames original `Card` components to be `CardEdition`.
89
+
90
+ ### Adds
91
+
92
+ - Adds the `DatePicker` component.
93
+ - Adds new `Card` component.
94
+ - Adds `spacing` prop to `Form` component to allow for spacing variations.
95
+ - Adds Style Guide `Forms`
96
+
97
+ ### Changes
98
+
99
+ - Exports `VideoPlayerAspectRatios`.
100
+ - Adds additional props for the `DatePicker` component based on its TAD Addendum section.
101
+ - Adds Tugboat QA configuration for PR preview deployments to replace Netlify.
102
+ - Updates the `DatePicker`, `TextInput`, `Select`, and `Label` components to pass an optional `showOptReqLabel` prop to conditionally render "Required"/"Optional" in the label text.
103
+
104
+ ### Fixes
105
+
106
+ - Fixes Accordion FAQ Storybook example rendering bug.
107
+
11
108
  ## 0.23.4
12
109
 
13
110
  ### Adds
@@ -132,7 +229,7 @@ Currently, this repo is in Prerelease. When it is released, this project will ad
132
229
  - Removes `--ui-success` CSS variable and adds `--ui-success-primary` and `--ui-success-secondary`
133
230
  - Removes `checkboxId` prop from `Checkbox` component and employs `id` in its place.
134
231
  - Removes `defaultChecked` prop from `Checkbox` component.
135
- - Removed `labelOptions` porp from `Checkbox` component and employs `labelText` in its place.
232
+ - Removed `labelOptions` prop from `Checkbox` component and employs `labelText` in its place.
136
233
 
137
234
  ### Changes
138
235
 
package/README.md CHANGED
@@ -9,18 +9,19 @@ The NYPL Design System (DS) is NYPL’s open-source extensible React library for
9
9
  Storybook documentation
10
10
 
11
11
  - [Production - deployed to Github Pages](https://nypl.github.io/nypl-design-system/storybook-static/?path=/story/introduction--page)
12
- - [Development - deployed to Netlify](https://nypl-design-system-dev.netlify.app/?path=/story/introduction--page)
12
+ - [Development - deployed to Tugboat QA](https://development-6y1v6na1ceqnmojvc5akrm5ewys3cshs.tugboat.qa/?path=/story/introduction--page)
13
13
 
14
14
  | Table of Contents | |
15
15
  | ----------------- | ----------------------------------------------------------------------------------- |
16
16
  | 1. | [Contributing Quickstart](#contributing-quickstart) |
17
17
  | 2. | [Developing with NPM Link](#developing-with-npm-link) |
18
18
  | 3. | [Using the Design System in Your Product](#using-the-design-system-in-your-product) |
19
- | 4. | [CDN](#cdn) |
20
- | 5. | [Accessibility Product Requirements](#accessibility-product-requirements) |
21
- | 6. | [Storybook](#storybook) |
22
- | 7. | [Typescript Usage](#typescript-usage) |
23
- | 8. | [Unit Testing](#unit-testing) |
19
+ | 4. | [Using Chakra UI Components](#using-chakra-ui-components) |
20
+ | 5. | [CDN](#cdn) |
21
+ | 6. | [Accessibility Product Requirements](#accessibility-product-requirements) |
22
+ | 7. | [Storybook](#storybook) |
23
+ | 8. | [Typescript Usage](#typescript-usage) |
24
+ | 9. | [Unit Testing](#unit-testing) |
24
25
 
25
26
  ## Contributing Quickstart
26
27
 
@@ -142,6 +143,30 @@ Some CSS rules in the Design System, such as the universal focus styling and the
142
143
  </div>
143
144
  ```
144
145
 
146
+ 4. Import the `DSProvider` component
147
+
148
+ While the Chakra UI integration into the DS is a work-in-progress, there is one necessary step consuming applications need to take for component styles to properly render. In order render styles properly, consuming applications need to wrap all the DS components with a simple provider component. Fortunately, this only needs to be done once at the top level of the consuming application.
149
+
150
+ Once the following is completed, DS components that internally use Chakra UI will render styles properly.
151
+
152
+ ```jsx
153
+ // your main application file
154
+ import { DSProvider } from "@nypl/design-system-react-components";
155
+
156
+ // ...
157
+ const ApplicationContainer = (props) => {
158
+ // ...
159
+ return (
160
+ <DSProvider>
161
+ <div className="my-app nypl-ds">
162
+ // ...
163
+ {children}
164
+ </div>
165
+ </DSProvider>
166
+ );
167
+ };
168
+ ```
169
+
145
170
  ### NYPL DS, NYPL Header, and NYPL Footer
146
171
 
147
172
  Please note that the NYPL Header and Footer should be _outside_ of the `.nypl-ds` wrapper class.
@@ -158,6 +183,16 @@ Please note that the NYPL Header and Footer should be _outside_ of the `.nypl-ds
158
183
  </body>
159
184
  ```
160
185
 
186
+ ## Using Chakra UI Components
187
+
188
+ The Chakra UI component library is integrated into the NYPL Design System and is currently a work-in-progress. We
189
+ are in the middle of the process of using Chakra components and patterns to build DS components, and therefore documentation and features are expected to change. While the implementation details of DS components will use Chakra, the DS package itself will export _some_ Chakra components.
190
+
191
+ The list of re-exported Chakra components can be found in the main
192
+ [index.ts](/index.ts) file.
193
+
194
+ Find more information about the Design System's use of [Chakra](/src/docs/Chakra.stories.mdx).
195
+
161
196
  ## CDN
162
197
 
163
198
  You can also use the Design System styles in your project through the `unpkg` CDN:
@@ -182,7 +217,7 @@ NYPL's Metronome instance is currently password protected. For access to Metrono
182
217
 
183
218
  ## Storybook
184
219
 
185
- The NYPL Design System leverages Storybook to document all the React components and style guidelines.
220
+ The NYPL Design System leverages Storybook to document all the React components and style guidelines. The Storybook documentation can be found [here](https://nypl.github.io/nypl-design-system/storybook-static/?path=/story/introduction--page). For your convenience, the NYPL Design System components have been organized into logical categories based on both form and function. Please refer to the COMPONENTS section in the Storybook sidebar.
186
221
 
187
222
  ### Documentation Instances
188
223
 
@@ -196,11 +231,11 @@ As of July, 2021, the Github Pages production site gets deployed every two weeks
196
231
 
197
232
  **Development**
198
233
 
199
- The development Storybook documentation is deployed to [Netlify](https://nypl-design-system-dev.netlify.app/?path=/story/introduction--page). This development site has all the working updates that get merged to the `development` branch. This means that this site is constantly being updated as pull requests are being merged in. This site is used to see the lastest changes during a working sprint before a production release is made.
234
+ The development Storybook documentation is deployed to [Tugboat QA](https://development-6y1v6na1ceqnmojvc5akrm5ewys3cshs.tugboat.qa/?path=/story/introduction--page). This development site has all the working updates that get merged to the `development` branch. This means that this site is constantly being updated as pull requests are being merged in. This site is used to see the lastest changes during a working sprint before a production release is made.
200
235
 
201
236
  **Preview Sites**
202
237
 
203
- Preview Storybook documentation sites are deployed to Netlify for every pull request. They follow a pattern such as `deploy-preview-[pr-number]--nypl-design-system-dev.netlify.app` where `[pr-number]` is the number of the pull request it is deploying. For example, for pull request #101, Netlify will deploy a "preview" site to `deploy-preview-101--nypl-design-system-dev.netlify.app`. Since these "preview" sites are brought up only for pull requests, this means that the URL varies and that those instances are eventually shut off. They are not meant to be used as long-term sites but rather for reviewing working changes within the team.
238
+ Preview Storybook documentation sites are deployed to Tugboat QA for every pull request. They follow a pattern such as `pr[number]-[hash].tugboat.qa` where `[number]` is the number of the pull request it is deploying. For example, for pull request #101, Tugboat will deploy a "preview" site to `pr101-wldudndlk24kas42.tugboat.qa`. Since these "preview" sites are brought up only for pull requests, this means that the URL varies and that those instances are eventually shut off. They are not meant to be used as long-term sites but rather for reviewing working changes within the team.
204
239
 
205
240
  ### React Component Documentation
206
241
 
@@ -237,7 +272,7 @@ You can then view `/storybook-static/index.html` in your browser. _Make sure not
237
272
 
238
273
  ## Typescript Usage
239
274
 
240
- The NYPL Design System is built with Typescript. Check out the Design System's [Typescript documentation](/typescript.md) for more information on why we chose to build React components in Typescript and the benefits and the gotchas we encountered.
275
+ The NYPL Design System is built with Typescript. Check out the Design System's [Typescript documentation](/TYPESCRIPT.md) for more information on why we chose to build React components in Typescript and the benefits and the gotchas we encountered.
241
276
 
242
277
  ## Unit Testing
243
278
 
@@ -309,7 +344,7 @@ Now, if we unintentionally update the `Notification.tsx` component to render a `
309
344
  If you want to update any existing snapshots, re-run the test script as:
310
345
 
311
346
  ```sh
312
- $ npm test -- updateSnapshot
347
+ $ npm test -- --updateSnapshot
313
348
  ```
314
349
 
315
350
  Each snapshot file also includes a link to its [Jest Snapshot documentation](https://jestjs.io/docs/snapshot-testing) which is recommended to read!
@@ -1,19 +1,19 @@
1
1
  import * as React from "react";
2
+ export interface AccordionContentDataProps {
3
+ label: string;
4
+ panel: string | React.ReactNode;
5
+ }
2
6
  export interface AccordionProps {
3
- /** Inner label on the button that opens the accordion */
4
- accordionLabel?: React.ReactNode;
5
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
6
- blockName?: string;
7
- /** className you can add in addition to 'input' */
8
- className?: string;
9
- /** Whether the accordion is open by default */
10
- defaultOpen?: boolean;
7
+ /** Array of data to display */
8
+ contentData: AccordionContentDataProps[];
11
9
  /** ID that other components can cross reference for accessibility purposes */
12
10
  id?: string;
13
- /** accordionLabel's input ID */
14
- inputId?: string;
15
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
16
- modifiers?: string[];
11
+ /** Whether the accordion is open by default only on its initial rendering */
12
+ isDefaultOpen?: boolean;
17
13
  }
18
- /** Accordion component that shows content on toggle */
19
- export default function Accordion(props: React.PropsWithChildren<AccordionProps>): JSX.Element;
14
+ /**
15
+ * Accordion component that shows content on toggle. Can be used to display
16
+ * multiple accordion items together.
17
+ */
18
+ declare function Accordion(props: React.PropsWithChildren<AccordionProps>): JSX.Element;
19
+ export default Accordion;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export declare const AutosuggestLibrary: () => JSX.Element;
2
3
  export declare const AutosuggestFish: () => JSX.Element;
3
4
  export declare const SearchBarExample: () => JSX.Element;
@@ -1,21 +1,18 @@
1
1
  import * as React from "react";
2
- declare type breadcrumb = {
2
+ import { ColorVariants } from "./BreadcrumbsTypes";
3
+ export interface BreadcrumbsDataProps {
3
4
  url: string;
4
- text: string;
5
- };
5
+ text: string | React.ReactNode;
6
+ }
6
7
  export interface BreadcrumbProps {
7
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
8
- blockName?: string;
9
8
  /** Breadcrumb links as an array */
10
- breadcrumbs: breadcrumb[] | JSX.Element[];
9
+ breadcrumbsData: BreadcrumbsDataProps[];
11
10
  /** className you can add in addition to 'input' */
12
11
  className?: string;
13
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
14
- modifiers?: string[];
15
- }
16
- export default class Breadcrumbs extends React.Component<BreadcrumbProps, any> {
17
- static defaultProps: {};
18
- constructor(props: BreadcrumbProps);
19
- render(): JSX.Element;
12
+ /** ID that other components can cross reference for accessibility purposes */
13
+ id?: string;
14
+ /** Used to control how the `Hero` component will be rendered. */
15
+ colorVariant?: ColorVariants;
20
16
  }
21
- export {};
17
+ declare function Breadcrumbs(props: React.PropsWithChildren<BreadcrumbProps>): JSX.Element;
18
+ export default Breadcrumbs;
@@ -0,0 +1,6 @@
1
+ export declare enum ColorVariants {
2
+ BooksAndMore = "booksAndMore",
3
+ Locations = "locations",
4
+ Research = "research",
5
+ WhatsOn = "whatsOn"
6
+ }
@@ -1,12 +1,12 @@
1
1
  import * as React from "react";
2
+ import { ButtonGroup } from "@chakra-ui/react";
2
3
  import { ButtonTypes } from "./ButtonTypes";
4
+ declare type ButtonElementType = "submit" | "button" | "reset";
3
5
  interface ButtonProps {
4
6
  /** Additional attributes passed to the button */
5
7
  attributes?: {
6
8
  [key: string]: any;
7
9
  };
8
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
9
- blockName?: string;
10
10
  /** The kind of button assigned through the `ButtonTypes` enum */
11
11
  buttonType?: ButtonTypes;
12
12
  /** Additional className for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
@@ -15,21 +15,14 @@ interface ButtonProps {
15
15
  disabled?: boolean;
16
16
  /** ID that other components can cross reference for accessibility purposes */
17
17
  id?: string;
18
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
19
- modifiers?: string[];
20
18
  /** Trigger the Button's action through the `mouseDown` event handler instead of `onClick`. `false` by default. */
21
19
  mouseDown?: boolean;
22
20
  /** The action to perform on the `<button>`'s onClick function */
23
21
  onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;
24
22
  /** The html button attribute */
25
- type?: "submit" | "button" | "reset";
23
+ type?: ButtonElementType;
26
24
  }
27
25
  /** Renders a simple `button` element with custom classes and modifiers. */
28
- export default class Button extends React.Component<ButtonProps, any> {
29
- static defaultProps: {
30
- mouseDown: boolean;
31
- };
32
- constructor(props: ButtonProps);
33
- render(): JSX.Element;
34
- }
35
- export {};
26
+ declare function Button(props: React.PropsWithChildren<ButtonProps>): JSX.Element;
27
+ export { ButtonGroup };
28
+ export default Button;
@@ -1,6 +1,8 @@
1
1
  export declare enum ButtonTypes {
2
- Primary = "filled",
3
- Secondary = "outline",
2
+ Primary = "primary",
3
+ Secondary = "secondary",
4
+ Callout = "callout",
4
5
  Pill = "pill",
5
- Link = "link"
6
+ Link = "link",
7
+ SearchBar = "searchBar"
6
8
  }
@@ -1,21 +1,70 @@
1
1
  import * as React from "react";
2
- interface CardProps {
3
- /** ClassName that appears in addition to "card" */
2
+ import { CardImageRatios, CardImageSizes, CardLayouts } from "./CardTypes";
3
+ interface CardImageProps {
4
+ /** Text description of the image */
5
+ alt: string;
6
+ /** Custom image component used in place of DS `Image` component */
7
+ component?: React.ReactNode;
8
+ /** ClassName you can add in addition to 'image' */
9
+ className?: string;
10
+ /** Optional value to control the aspect ratio of the cartd image; default value is `square` */
11
+ imageAspectRatio?: CardImageRatios;
12
+ /** Optional value to control the size of the card image */
13
+ imageSize?: CardImageSizes;
14
+ /** The src attribute is required, and contains the path to the image you want to embed. */
15
+ src: string;
16
+ }
17
+ interface CardContentProps {
18
+ /** Optional className that would be applied to the `card-content` element */
19
+ className?: string;
20
+ }
21
+ interface CardActionsProps {
22
+ /** Optional boolean value to control visibility of border on the bottom edge of the card actions element */
23
+ bottomBorder?: boolean;
24
+ /** Optional className that would be applied to the `card-actions` element */
4
25
  className?: string;
26
+ /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
27
+ modifiers?: string[];
28
+ /** Optional boolean value to control visibility of border on the top edge of the card actions element */
29
+ topBorder?: boolean;
30
+ }
31
+ export interface CardProps {
32
+ /** Optional hex color value used to set the card background color */
33
+ backgroundColor?: string;
5
34
  /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
6
35
  blockName?: string;
7
- /** Calls to Action for the card, such as "download" on a card for a book */
8
- ctas?: React.ReactNode;
9
- /** Footer that appears within the card but below the three columns within it */
10
- footer?: React.ReactNode;
11
- /** Heading that appears within the card but above the three columns within it */
12
- heading?: React.ReactNode;
36
+ /** Optional boolean value to control the visibility of a border around the card */
37
+ border?: boolean;
38
+ /** Optional boolean value to control the alignment of the text and elements within the card */
39
+ center?: boolean;
40
+ /** ClassName that appears in addition to "card" */
41
+ className?: string;
42
+ /** Optional hex color value used to override the default text color */
43
+ foregroundColor?: string;
13
44
  /** ID that other components can cross reference for accessibility purposes */
14
45
  id?: string;
15
- /** First column within the card */
16
- image?: React.ReactNode;
46
+ /** Text description of the image; to follow best practices for accessibility, this prop should not be left blank if `imageSrc` is passed */
47
+ imageAlt?: string;
48
+ /** Optional value to control the aspect ratio of the card image; default value is `square` */
49
+ imageAspectRatio?: CardImageRatios;
50
+ /** Optional boolean value to control the position of the card image */
51
+ imageAtEnd?: boolean;
52
+ /** Custom image component used in place of DS `Image` component */
53
+ imageComponent?: React.ReactNode;
54
+ /** Optional value to control the size of the card image */
55
+ imageSize?: CardImageSizes;
56
+ /** The path to the image displayed with the card */
57
+ imageSrc?: string;
58
+ /** Optional value to control the position of the image placeholder; default value is `column` */
59
+ layout?: CardLayouts;
17
60
  /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
18
61
  modifiers?: string[];
62
+ /** Optional padding value. This value should be entered with the same formatting as a CSS padding attribute (ex. `5%`, `20px`, `2rem`). If omitted, the Card will use the default padding. */
63
+ padding?: string;
19
64
  }
65
+ export declare function CardImage(props: React.PropsWithChildren<CardImageProps>): JSX.Element;
66
+ export declare const CardHeading: (props: any) => JSX.Element;
67
+ export declare function CardContent(props: React.PropsWithChildren<CardContentProps>): JSX.Element;
68
+ export declare function CardActions(props: React.PropsWithChildren<CardActionsProps>): JSX.Element;
20
69
  export default function Card(props: React.PropsWithChildren<CardProps>): JSX.Element;
21
70
  export {};
@@ -0,0 +1,19 @@
1
+ export declare enum CardLayouts {
2
+ Row = "row",
3
+ Column = "column"
4
+ }
5
+ export declare enum CardImageRatios {
6
+ FourByThree = "four-by-three",
7
+ OneByTwo = "one-by-two",
8
+ Original = "original",
9
+ SixteenByNine = "sixteen-by-nine",
10
+ Square = "square",
11
+ ThreeByFour = "three-by-four",
12
+ ThreeByTwo = "three-by-two",
13
+ TwoByOne = "two-by-one"
14
+ }
15
+ export declare enum CardImageSizes {
16
+ Large = "large",
17
+ Medium = "medium",
18
+ Small = "small"
19
+ }
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ interface CardEditionProps {
3
+ /** ClassName that appears in addition to "card" */
4
+ className?: string;
5
+ /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
6
+ blockName?: string;
7
+ /** Calls to Action for the card, such as "download" on a card for a book */
8
+ ctas?: React.ReactNode;
9
+ /** Footer that appears within the card but below the three columns within it */
10
+ footer?: React.ReactNode;
11
+ /** Heading that appears within the card but above the three columns within it */
12
+ heading?: React.ReactNode;
13
+ /** ID that other components can cross reference for accessibility purposes */
14
+ id?: string;
15
+ /** First column within the card */
16
+ image?: React.ReactNode;
17
+ /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
18
+ modifiers?: string[];
19
+ }
20
+ export default function CardEdition(props: React.PropsWithChildren<CardEditionProps>): JSX.Element;
21
+ export {};
@@ -1,8 +1,11 @@
1
+ /// <reference types="react" />
2
+ import CardEdition from "./CardEdition";
1
3
  declare const _default: {
2
4
  title: any;
5
+ component: typeof CardEdition;
3
6
  };
4
7
  export default _default;
5
- export declare const colorsBrand: {
8
+ export declare const cardEdition: {
6
9
  (): JSX.Element;
7
10
  storyName: string;
8
11
  parameters: {
@@ -12,7 +15,7 @@ export declare const colorsBrand: {
12
15
  };
13
16
  };
14
17
  };
15
- export declare const colorsUtility: {
18
+ export declare const ExampleCardEdition: {
16
19
  (): JSX.Element;
17
20
  storyName: string;
18
21
  parameters: {
@@ -1,33 +1,38 @@
1
1
  import * as React from "react";
2
2
  export interface CheckboxProps {
3
- /** The checkbox's label. This will serve as the text content for a `<label>` element if `showlabel` is true, or an "aria-label" if `showLabel` is false. */
4
- labelText: string;
5
- /** Additional attributes to pass to the `<input>` tag */
6
- attributes?: {
7
- [key: string]: any;
8
- };
9
- /** When using the Checkbox as a "controlled" form element, you can specify the Checkbox's checked state using this prop. Learn more about controlled and uncontrolled form fields: https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/ */
10
- checked?: boolean;
11
3
  /** className you can add in addition to 'input' */
12
4
  className?: string;
13
- /** Adds the 'disabled' prop to the input when true */
14
- disabled?: boolean;
15
- /** Helper for modifiers array; adds 'errored' styling */
16
- errored?: boolean;
17
- /** Optional string to populate the HelperErrorText for error state */
5
+ /** Optional string to populate the HelperErrorText for the error state
6
+ * when `isInvalid` is true.
7
+ */
18
8
  errorText?: string;
19
9
  /** Optional string to populate the HelperErrorText for standard state */
20
10
  helperText?: string;
21
11
  /** ID that other components can cross reference for accessibility purposes */
22
12
  id?: string;
23
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
24
- modifiers?: string[];
13
+ /** When using the Checkbox as a "controlled" form element, you can specify the
14
+ * Checkbox's checked state using this prop.
15
+ * Learn more about controlled and uncontrolled form fields:
16
+ * https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/ */
17
+ isChecked?: boolean;
18
+ /** Adds the 'disabled' and `aria-disabled` attributes to the input when true.
19
+ * This also makes the text italic and color scheme gray.
20
+ */
21
+ isDisabled?: boolean;
22
+ /** Adds the 'aria-invalid' attribute to the input when true. This also makes
23
+ * the color theme "NYPL error" red for the button and text.
24
+ */
25
+ isInvalid?: boolean;
26
+ /** Adds the 'required' attribute to the input when true. */
27
+ isRequired?: boolean;
28
+ /** The checkbox's label. This will serve as the text content for a `<label>` element if `showlabel` is true, or an "aria-label" if `showLabel` is false. */
29
+ labelText: string;
25
30
  /** The name prop indicates into which group of checkboxes this checkbox belongs. If none is specified, 'default' will be used */
26
31
  name?: string;
27
32
  /** The action to perform on the `<input>`'s onChange function */
28
33
  onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
29
34
  /** Offers the ability to show the checkbox's label onscreen or hide it. Refer to the `labelText` property for more information. */
30
- showLabel: boolean;
35
+ showLabel?: boolean;
31
36
  /** Populates the value of the input */
32
37
  value?: string;
33
38
  }
@@ -0,0 +1,43 @@
1
+ import * as React from "react";
2
+ import { CheckboxGroupLayoutTypes } from "./CheckboxGroupLayoutTypes";
3
+ export interface CheckboxGroupProps {
4
+ /** Any child node passed to the component. */
5
+ children: React.ReactNode;
6
+ /** Populates the initial value of the input */
7
+ defaultValue?: string[];
8
+ /** Optional string to populate the HelperErrorText for error state */
9
+ invalidText?: string;
10
+ /** Optional string to populate the HelperErrorText for standard state */
11
+ helperText?: string;
12
+ /** ID that other components can cross reference for accessibility purposes */
13
+ id?: string;
14
+ /** Adds the 'disabled' prop to the input when true. */
15
+ isDisabled?: boolean;
16
+ /** A`dds the 'aria-invalid' attribute to the input and
17
+ * sets the error state when true. */
18
+ isInvalid?: boolean;
19
+ /** Adds the 'required' attribute to the input when true. */
20
+ isRequired?: boolean;
21
+ /** The checkbox group label displayed in a `legend` element if `showlabel` is
22
+ * true, or an "aria-label" if `showLabel` is false. */
23
+ labelText: string;
24
+ /** Renders the checkbox buttons in a row or column (default). */
25
+ layout?: CheckboxGroupLayoutTypes;
26
+ /** The `name` prop indicates the form group for all the `Checkbox` children. */
27
+ name: string;
28
+ /** The action to perform on the `<input>`'s onChange function */
29
+ onChange?: (value: string[]) => void;
30
+ /** Whether or not to display "Required"/"Optional" in the label text. */
31
+ optReqFlag?: boolean;
32
+ /** Offers the ability to show the group's legend onscreen or hide it. Refer
33
+ * to the `labelText` property for more information. */
34
+ showLabel?: boolean;
35
+ }
36
+ /**
37
+ * Wrapper component to wrap `Checkbox` components. Can be displayed in a
38
+ * column or in a row. The `CheckboxGroup` component renders all the necessary
39
+ * wrapping and associated text elements, but the checkbox input elements
40
+ * _need_ to be child `Checkbox` components from the NYPL Design System.
41
+ */
42
+ declare const CheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupProps & React.RefAttributes<HTMLInputElement>>;
43
+ export default CheckboxGroup;
@@ -0,0 +1,4 @@
1
+ export declare enum CheckboxGroupLayoutTypes {
2
+ Column = "column",
3
+ Row = "row"
4
+ }