@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
@@ -0,0 +1,325 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Checkbox Renders the UI snapshot correctly 1`] = `
4
+ <label
5
+ className="chakra-checkbox css-1uiwwan"
6
+ onClick={[Function]}
7
+ >
8
+ <input
9
+ aria-disabled={false}
10
+ aria-invalid={false}
11
+ checked={false}
12
+ className="chakra-checkbox__input"
13
+ disabled={false}
14
+ id="inputID"
15
+ name="default"
16
+ onBlur={[Function]}
17
+ onChange={[Function]}
18
+ onFocus={[Function]}
19
+ onKeyDown={[Function]}
20
+ onKeyUp={[Function]}
21
+ required={false}
22
+ style={
23
+ Object {
24
+ "border": "0px",
25
+ "clip": "rect(0px, 0px, 0px, 0px)",
26
+ "height": "1px",
27
+ "margin": "-1px",
28
+ "overflow": "hidden",
29
+ "padding": "0px",
30
+ "position": "absolute",
31
+ "whiteSpace": "nowrap",
32
+ "width": "1px",
33
+ }
34
+ }
35
+ type="checkbox"
36
+ />
37
+ <span
38
+ aria-hidden={true}
39
+ className="chakra-checkbox__control css-dnty2r"
40
+ onMouseDown={[Function]}
41
+ onMouseEnter={[Function]}
42
+ onMouseLeave={[Function]}
43
+ onMouseUp={[Function]}
44
+ >
45
+ <svg
46
+ className="chakra-icon css-1vfv7ic"
47
+ focusable={false}
48
+ viewBox="0 0 24 24"
49
+ >
50
+ <path
51
+ d="M8.795 15.875l-4.17-4.17-1.42 1.41 5.59 5.59 12-12-1.41-1.41-10.59 10.58z"
52
+ fill="currentColor"
53
+ />
54
+ </svg>
55
+ </span>
56
+ <span
57
+ className="chakra-checkbox__label css-1oeb2oe"
58
+ onMouseDown={[Function]}
59
+ onTouchStart={[Function]}
60
+ >
61
+ Test Label
62
+ </span>
63
+ </label>
64
+ `;
65
+
66
+ exports[`Checkbox Renders the UI snapshot correctly 2`] = `
67
+ <label
68
+ className="chakra-checkbox css-1uiwwan"
69
+ data-checked=""
70
+ onClick={[Function]}
71
+ >
72
+ <input
73
+ aria-disabled={false}
74
+ aria-invalid={false}
75
+ checked={true}
76
+ className="chakra-checkbox__input"
77
+ disabled={false}
78
+ id="checkbox-checked"
79
+ name="default"
80
+ onBlur={[Function]}
81
+ onChange={[Function]}
82
+ onFocus={[Function]}
83
+ onKeyDown={[Function]}
84
+ onKeyUp={[Function]}
85
+ required={false}
86
+ style={
87
+ Object {
88
+ "border": "0px",
89
+ "clip": "rect(0px, 0px, 0px, 0px)",
90
+ "height": "1px",
91
+ "margin": "-1px",
92
+ "overflow": "hidden",
93
+ "padding": "0px",
94
+ "position": "absolute",
95
+ "whiteSpace": "nowrap",
96
+ "width": "1px",
97
+ }
98
+ }
99
+ type="checkbox"
100
+ />
101
+ <span
102
+ aria-hidden={true}
103
+ className="chakra-checkbox__control css-dnty2r"
104
+ data-checked=""
105
+ onMouseDown={[Function]}
106
+ onMouseEnter={[Function]}
107
+ onMouseLeave={[Function]}
108
+ onMouseUp={[Function]}
109
+ >
110
+ <svg
111
+ className="chakra-icon css-oi1lnb"
112
+ focusable={false}
113
+ viewBox="0 0 24 24"
114
+ >
115
+ <path
116
+ d="M8.795 15.875l-4.17-4.17-1.42 1.41 5.59 5.59 12-12-1.41-1.41-10.59 10.58z"
117
+ fill="currentColor"
118
+ />
119
+ </svg>
120
+ </span>
121
+ <span
122
+ className="chakra-checkbox__label css-1oeb2oe"
123
+ data-checked=""
124
+ onMouseDown={[Function]}
125
+ onTouchStart={[Function]}
126
+ >
127
+ Test Label
128
+ </span>
129
+ </label>
130
+ `;
131
+
132
+ exports[`Checkbox Renders the UI snapshot correctly 3`] = `
133
+ <label
134
+ className="chakra-checkbox css-1uiwwan"
135
+ onClick={[Function]}
136
+ >
137
+ <input
138
+ aria-disabled={false}
139
+ aria-invalid={false}
140
+ checked={false}
141
+ className="chakra-checkbox__input"
142
+ disabled={false}
143
+ id="checkbox-required"
144
+ name="default"
145
+ onBlur={[Function]}
146
+ onChange={[Function]}
147
+ onFocus={[Function]}
148
+ onKeyDown={[Function]}
149
+ onKeyUp={[Function]}
150
+ required={true}
151
+ style={
152
+ Object {
153
+ "border": "0px",
154
+ "clip": "rect(0px, 0px, 0px, 0px)",
155
+ "height": "1px",
156
+ "margin": "-1px",
157
+ "overflow": "hidden",
158
+ "padding": "0px",
159
+ "position": "absolute",
160
+ "whiteSpace": "nowrap",
161
+ "width": "1px",
162
+ }
163
+ }
164
+ type="checkbox"
165
+ />
166
+ <span
167
+ aria-hidden={true}
168
+ className="chakra-checkbox__control css-dnty2r"
169
+ onMouseDown={[Function]}
170
+ onMouseEnter={[Function]}
171
+ onMouseLeave={[Function]}
172
+ onMouseUp={[Function]}
173
+ >
174
+ <svg
175
+ className="chakra-icon css-1vfv7ic"
176
+ focusable={false}
177
+ viewBox="0 0 24 24"
178
+ >
179
+ <path
180
+ d="M8.795 15.875l-4.17-4.17-1.42 1.41 5.59 5.59 12-12-1.41-1.41-10.59 10.58z"
181
+ fill="currentColor"
182
+ />
183
+ </svg>
184
+ </span>
185
+ <span
186
+ className="chakra-checkbox__label css-1oeb2oe"
187
+ onMouseDown={[Function]}
188
+ onTouchStart={[Function]}
189
+ >
190
+ Test Label
191
+ </span>
192
+ </label>
193
+ `;
194
+
195
+ exports[`Checkbox Renders the UI snapshot correctly 4`] = `
196
+ <label
197
+ className="chakra-checkbox css-1uiwwan"
198
+ data-invalid=""
199
+ onClick={[Function]}
200
+ >
201
+ <input
202
+ aria-disabled={false}
203
+ aria-invalid={true}
204
+ checked={false}
205
+ className="chakra-checkbox__input"
206
+ disabled={false}
207
+ id="checkbox-invalid"
208
+ name="default"
209
+ onBlur={[Function]}
210
+ onChange={[Function]}
211
+ onFocus={[Function]}
212
+ onKeyDown={[Function]}
213
+ onKeyUp={[Function]}
214
+ required={false}
215
+ style={
216
+ Object {
217
+ "border": "0px",
218
+ "clip": "rect(0px, 0px, 0px, 0px)",
219
+ "height": "1px",
220
+ "margin": "-1px",
221
+ "overflow": "hidden",
222
+ "padding": "0px",
223
+ "position": "absolute",
224
+ "whiteSpace": "nowrap",
225
+ "width": "1px",
226
+ }
227
+ }
228
+ type="checkbox"
229
+ />
230
+ <span
231
+ aria-hidden={true}
232
+ className="chakra-checkbox__control css-dnty2r"
233
+ data-invalid=""
234
+ onMouseDown={[Function]}
235
+ onMouseEnter={[Function]}
236
+ onMouseLeave={[Function]}
237
+ onMouseUp={[Function]}
238
+ >
239
+ <svg
240
+ className="chakra-icon css-1vfv7ic"
241
+ focusable={false}
242
+ viewBox="0 0 24 24"
243
+ >
244
+ <path
245
+ d="M8.795 15.875l-4.17-4.17-1.42 1.41 5.59 5.59 12-12-1.41-1.41-10.59 10.58z"
246
+ fill="currentColor"
247
+ />
248
+ </svg>
249
+ </span>
250
+ <span
251
+ className="chakra-checkbox__label css-1oeb2oe"
252
+ data-invalid=""
253
+ onMouseDown={[Function]}
254
+ onTouchStart={[Function]}
255
+ >
256
+ Test Label
257
+ </span>
258
+ </label>
259
+ `;
260
+
261
+ exports[`Checkbox Renders the UI snapshot correctly 5`] = `
262
+ <label
263
+ className="chakra-checkbox css-1uiwwan"
264
+ data-disabled=""
265
+ onClick={[Function]}
266
+ >
267
+ <input
268
+ aria-disabled={true}
269
+ aria-invalid={false}
270
+ checked={false}
271
+ className="chakra-checkbox__input"
272
+ disabled={true}
273
+ id="checkbox-disabled"
274
+ name="default"
275
+ onBlur={[Function]}
276
+ onChange={[Function]}
277
+ onFocus={[Function]}
278
+ onKeyDown={[Function]}
279
+ onKeyUp={[Function]}
280
+ required={false}
281
+ style={
282
+ Object {
283
+ "border": "0px",
284
+ "clip": "rect(0px, 0px, 0px, 0px)",
285
+ "height": "1px",
286
+ "margin": "-1px",
287
+ "overflow": "hidden",
288
+ "padding": "0px",
289
+ "position": "absolute",
290
+ "whiteSpace": "nowrap",
291
+ "width": "1px",
292
+ }
293
+ }
294
+ type="checkbox"
295
+ />
296
+ <span
297
+ aria-hidden={true}
298
+ className="chakra-checkbox__control css-dnty2r"
299
+ data-disabled=""
300
+ onMouseDown={[Function]}
301
+ onMouseEnter={[Function]}
302
+ onMouseLeave={[Function]}
303
+ onMouseUp={[Function]}
304
+ >
305
+ <svg
306
+ className="chakra-icon css-1vfv7ic"
307
+ focusable={false}
308
+ viewBox="0 0 24 24"
309
+ >
310
+ <path
311
+ d="M8.795 15.875l-4.17-4.17-1.42 1.41 5.59 5.59 12-12-1.41-1.41-10.59 10.58z"
312
+ fill="currentColor"
313
+ />
314
+ </svg>
315
+ </span>
316
+ <span
317
+ className="chakra-checkbox__label css-1oeb2oe"
318
+ data-disabled=""
319
+ onMouseDown={[Function]}
320
+ onTouchStart={[Function]}
321
+ >
322
+ Test Label
323
+ </span>
324
+ </label>
325
+ `;
@@ -0,0 +1,249 @@
1
+ import {
2
+ Meta,
3
+ Story,
4
+ Canvas,
5
+ ArgsTable,
6
+ Description,
7
+ } from "@storybook/addon-docs/blocks";
8
+ import { withDesign } from "storybook-addon-designs";
9
+
10
+ import { getCategory } from "../../utils/componentCategories";
11
+ import DSProvider from "../../theme/provider";
12
+ import CheckboxGroup from "./CheckboxGroup";
13
+ import { CheckboxGroupLayoutTypes } from "./CheckboxGroupLayoutTypes";
14
+ import Checkbox from "../Checkbox/Checkbox";
15
+
16
+ <Meta
17
+ title={getCategory("CheckboxGroup")}
18
+ component={CheckboxGroup}
19
+ decorators={[withDesign]}
20
+ parameters={{
21
+ design: {
22
+ type: "figma",
23
+ url:
24
+ "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=11895%3A658",
25
+ },
26
+ jest: ["CheckboxGroup.test.tsx"],
27
+ }}
28
+ argTypes={{
29
+ children: { table: { disable: true } },
30
+ defaultValue: { table: { disable: true } },
31
+ id: { table: { disable: true } },
32
+ name: { table: { disable: true } },
33
+ onChange: { table: { disable: true } },
34
+ }}
35
+ />
36
+
37
+ # CheckboxGroup
38
+
39
+ | Component Version | DS Version |
40
+ | ----------------- | ---------- |
41
+ | Added | `0.25.1` |
42
+ | Latest | `0.25.1` |
43
+
44
+ <Description of={CheckboxGroup} />
45
+
46
+ <Canvas withToolbar>
47
+ <Story
48
+ name="CheckboxGroup"
49
+ args={{
50
+ defaultValue: ["4"],
51
+ invalidText: "This is the error text :(",
52
+ helperText: "This is the helper text for the full group.",
53
+ isDisabled: false,
54
+ isInvalid: false,
55
+ isRequired: false,
56
+ labelText: "Standard Checkbox Group",
57
+ layout: CheckboxGroupLayoutTypes.Column,
58
+ name: "checkbox-story",
59
+ optReqFlag: true,
60
+ showLabel: true,
61
+ }}
62
+ >
63
+ {(args) => (
64
+ <CheckboxGroup {...args}>
65
+ <Checkbox value="2" labelText="Checkbox 2" />
66
+ <Checkbox value="3" labelText="Checkbox 3" />
67
+ <Checkbox value="4" labelText="Checkbox 4" />
68
+ <Checkbox value="5" labelText="Checkbox 5" />
69
+ </CheckboxGroup>
70
+ )}
71
+ </Story>
72
+ </Canvas>
73
+
74
+ <ArgsTable story="CheckboxGroup" />
75
+
76
+ ## Layout Patterns
77
+
78
+ Use the `layout` prop to set the `Checkbox` buttons to display in a column or in
79
+ a row.
80
+
81
+ <Canvas>
82
+ <DSProvider>
83
+ <CheckboxGroup
84
+ labelText="Column (default)"
85
+ name="column-example"
86
+ optReqFlag={false}
87
+ >
88
+ <Checkbox value="2" labelText="Checkbox 2" />
89
+ <Checkbox value="3" labelText="Checkbox 3" />
90
+ <Checkbox value="4" labelText="Checkbox 4" />
91
+ <Checkbox value="5" labelText="Checkbox 5" />
92
+ </CheckboxGroup>
93
+ <br />
94
+ <CheckboxGroup
95
+ labelText="Row"
96
+ name="row-example"
97
+ layout={CheckboxGroupLayoutTypes.Row}
98
+ optReqFlag={false}
99
+ >
100
+ <Checkbox value="2" labelText="Checkbox 2" />
101
+ <Checkbox value="3" labelText="Checkbox 3" />
102
+ <Checkbox value="4" labelText="Checkbox 4" />
103
+ <Checkbox value="5" labelText="Checkbox 5" />
104
+ </CheckboxGroup>
105
+ </DSProvider>
106
+ </Canvas>
107
+
108
+ ## Errored
109
+
110
+ <Canvas>
111
+ <DSProvider>
112
+ <CheckboxGroup
113
+ labelText="Errored Checkbox Group"
114
+ name="errored-example"
115
+ optReqFlag={false}
116
+ invalidText="Error message for the full group."
117
+ isInvalid
118
+ >
119
+ <Checkbox value="2" labelText="Checkbox 2" />
120
+ <Checkbox value="3" labelText="Checkbox 3" />
121
+ <Checkbox value="4" labelText="Checkbox 4" />
122
+ <Checkbox value="5" labelText="Checkbox 5" />
123
+ </CheckboxGroup>
124
+ </DSProvider>
125
+ </Canvas>
126
+
127
+ ## Disabled
128
+
129
+ <Canvas>
130
+ <DSProvider>
131
+ <CheckboxGroup
132
+ labelText="Disabled Checkbox Group"
133
+ name="disabled-example"
134
+ optReqFlag={false}
135
+ helperText="The reason for being disabled."
136
+ isDisabled
137
+ >
138
+ <Checkbox value="2" labelText="Checkbox 2" />
139
+ <Checkbox value="3" labelText="Checkbox 3" />
140
+ <Checkbox value="4" labelText="Checkbox 4" />
141
+ <Checkbox value="5" labelText="Checkbox 5" />
142
+ </CheckboxGroup>
143
+ </DSProvider>
144
+ </Canvas>
145
+
146
+ ## Getting Checkbox Data Values
147
+
148
+ ### Controlled Component using `name`, `defaultValue`, and `onChange` props
149
+
150
+ If your application uses controlled React components and the DS CheckboxGroup
151
+ must be controlled, you can extract the data through the `name`, `defaultValue`,
152
+ and `onChange` props. The `onChange` function will be called every time a new
153
+ `Checkbox` value is checked or unchecked.
154
+
155
+ ```jsx
156
+ const onChange = (data: string[]) => {
157
+ // This will return the values selected as an array of strings.
158
+ // Ex: ["2", "4"]
159
+ console.log(data);
160
+ };
161
+ // ...
162
+
163
+ // Example of the DS CheckboxGroup instance with the function above:
164
+ <CheckboxGroup
165
+ id="controlled-example"
166
+ labelText="Checkbox Group"
167
+ name="CheckboxExample"
168
+ defaultValue={["2"]}
169
+ onChange={onChange}
170
+ >
171
+ <Checkbox value="2" labelText="Checkbox 2" />
172
+ <Checkbox value="3" labelText="Checkbox 3" />
173
+ <Checkbox value="4" labelText="Checkbox 4" />
174
+ </CheckboxGroup>;
175
+ ```
176
+
177
+ ### Uncontrolled Component using `ref`s
178
+
179
+ If your application uses uncontrolled components, you can pass React `ref` props
180
+ to the DS CheckboxGroup component to get the selected value from the DOM.
181
+
182
+ The following example is using the `register` React `ref` from the
183
+ `react-hook-form` package.
184
+
185
+ ```jsx
186
+ import { useFormContext, Controller } from "react-hook-form";
187
+ // ...
188
+ const { register, handleSubmit, control } = useFormContext();
189
+ // ...
190
+ const submitForm = (formData) => {
191
+ // This will return an object with all the DOM element values that were
192
+ // registered with a `name` attribute.
193
+ // {
194
+ // checkboxExample: ["3"]
195
+ // }
196
+ console.log(formData);
197
+ // ...
198
+ };
199
+
200
+ <form
201
+ onSubmit={handleSubmit(submitForm)}
202
+ method="post"
203
+ action="/some/api/endpoint"
204
+ >
205
+ <Controller
206
+ as={
207
+ <CheckboxGroup
208
+ id="uncontrolled-example"
209
+ labelText="Checkbox Group"
210
+ name="checkboxExample"
211
+ defaultValue={["3"]}
212
+ ref={register()}
213
+ >
214
+ <Checkbox value="2" labelText="Checkbox 2" />
215
+ <Checkbox value="3" labelText="Checkbox 3" />
216
+ <Checkbox value="4" labelText="Checkbox 4" />
217
+ </CheckboxGroup>
218
+ }
219
+ name="checkboxExample"
220
+ control={control}
221
+ />
222
+ </form>;
223
+ ```
224
+
225
+ The above is specific to `react-hook-form` but a similar pattern can be used
226
+ with normal React `ref` values.
227
+
228
+ ```jsx
229
+ const CheckboxGroupRef = React.createRef<HTMLInputElement>();
230
+ // ...
231
+ <CheckboxGroup
232
+ id="uncontrolled-example"
233
+ labelText="Checkbox Group"
234
+ name="checkboxExample"
235
+ defaultValue={["3"]}
236
+ ref={CheckboxGroupRef}
237
+ >
238
+ <Checkbox value="2" labelText="Checkbox 2" />
239
+ <Checkbox value="3" labelText="Checkbox 3" />
240
+ <Checkbox value="4" labelText="Checkbox 4" />
241
+ </CheckboxGroup>
242
+
243
+ // ...
244
+ // Get the value through:
245
+ const onSubmit = () => {
246
+ // ...
247
+ const CheckboxGroupValue = CheckboxGroupRef.current.value;
248
+ };
249
+ ```