@nypl/design-system-react-components 0.25.1 → 0.25.5

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 +118 -1
  2. package/README.md +98 -50
  3. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +4 -0
  4. package/dist/components/Button/Button.d.ts +13 -8
  5. package/dist/components/Button/ButtonTypes.d.ts +2 -1
  6. package/dist/components/Card/Card.d.ts +36 -52
  7. package/dist/components/Card/CardTypes.d.ts +0 -15
  8. package/dist/components/Checkbox/Checkbox.d.ts +17 -13
  9. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +4 -2
  10. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +15 -0
  11. package/dist/components/DatePicker/DatePicker.d.ts +36 -34
  12. package/dist/components/Fieldset/Fieldset.d.ts +25 -0
  13. package/dist/components/Heading/Heading.d.ts +4 -4
  14. package/dist/components/HelperErrorText/HelperErrorText.d.ts +17 -14
  15. package/dist/components/HorizontalRule/HorizontalRule.d.ts +10 -9
  16. package/dist/components/Icons/Icon.d.ts +8 -0
  17. package/dist/components/Icons/IconSvgs.d.ts +11 -0
  18. package/dist/components/Icons/IconTypes.d.ts +11 -0
  19. package/dist/components/Image/Image.d.ts +19 -9
  20. package/dist/components/Image/ImageTypes.d.ts +20 -0
  21. package/dist/components/Link/Link.d.ts +4 -0
  22. package/dist/components/List/List.d.ts +19 -14
  23. package/dist/components/Notification/Notification.d.ts +37 -16
  24. package/dist/components/Pagination/Pagination.d.ts +16 -13
  25. package/dist/components/Pagination/Pagination.stories.d.ts +2 -0
  26. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +29 -0
  27. package/dist/components/ProgressIndicator/ProgressIndicatorTypes.d.ts +8 -0
  28. package/dist/components/Radio/Radio.d.ts +2 -0
  29. package/dist/components/RadioGroup/RadioGroup.d.ts +4 -2
  30. package/dist/components/SearchBar/SearchBar.d.ts +3 -3
  31. package/dist/components/Select/Select.d.ts +2 -0
  32. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +18 -14
  33. package/dist/components/Slider/Slider.d.ts +57 -0
  34. package/dist/components/StyleGuide/ColorCard.d.ts +12 -0
  35. package/dist/components/Tabs/Tabs.d.ts +1 -1
  36. package/dist/components/TextInput/TextInput.d.ts +12 -0
  37. package/dist/components/VideoPlayer/VideoPlayer.d.ts +6 -8
  38. package/dist/components/VideoPlayer/VideoPlayerTypes.d.ts +2 -2
  39. package/dist/design-system-react-components.cjs.development.js +6131 -3715
  40. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  41. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  42. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  43. package/dist/design-system-react-components.esm.js +6124 -3699
  44. package/dist/design-system-react-components.esm.js.map +1 -1
  45. package/dist/hooks/tests/useCarouselStyles.test.d.ts +1 -0
  46. package/dist/hooks/useCarouselStyles.d.ts +16 -0
  47. package/dist/hooks/useNYPLTheme.d.ts +54 -0
  48. package/dist/hooks/useWindowSize.d.ts +10 -0
  49. package/dist/index.d.ts +13 -8
  50. package/dist/resources.scss +180 -170
  51. package/dist/styles.css +1 -1
  52. package/dist/theme/components/button.d.ts +22 -8
  53. package/dist/theme/components/card.d.ts +168 -0
  54. package/dist/theme/components/checkbox.d.ts +5 -1
  55. package/dist/theme/components/checkboxGroup.d.ts +12 -0
  56. package/dist/theme/components/componentWrapper.d.ts +11 -0
  57. package/dist/theme/components/datePicker.d.ts +16 -0
  58. package/dist/theme/components/fieldset.d.ts +27 -0
  59. package/dist/theme/components/global.d.ts +23 -13
  60. package/dist/theme/components/globalMixins.d.ts +9 -1
  61. package/dist/theme/components/heading.d.ts +5 -0
  62. package/dist/theme/components/helperErrorText.d.ts +10 -0
  63. package/dist/theme/components/hero.d.ts +1 -0
  64. package/dist/theme/components/horizontalRule.d.ts +14 -0
  65. package/dist/theme/components/image.d.ts +31 -0
  66. package/dist/theme/components/label.d.ts +5 -3
  67. package/dist/theme/components/link.d.ts +4 -0
  68. package/dist/theme/components/list.d.ts +89 -0
  69. package/dist/theme/components/notification.d.ts +75 -0
  70. package/dist/theme/components/pagination.d.ts +19 -0
  71. package/dist/theme/components/progressIndicator.d.ts +50 -0
  72. package/dist/theme/components/radioGroup.d.ts +12 -0
  73. package/dist/theme/components/select.d.ts +11 -2
  74. package/dist/theme/components/skeletonLoader.d.ts +98 -0
  75. package/dist/theme/components/slider.d.ts +51 -0
  76. package/dist/theme/components/tabs.d.ts +54 -3
  77. package/dist/theme/components/textInput.d.ts +8 -1
  78. package/dist/theme/components/videoPlayer.d.ts +40 -0
  79. package/dist/theme/foundations/breakpoints.d.ts +8 -8
  80. package/dist/theme/foundations/global.d.ts +6 -1
  81. package/dist/theme/foundations/radii.d.ts +5 -0
  82. package/dist/theme/foundations/spacing.d.ts +16 -16
  83. package/package.json +72 -83
  84. package/src/__tests__/setup.ts +2 -2
  85. package/src/components/Accordion/Accordion.stories.mdx +39 -44
  86. package/src/components/Autosuggest/Autosuggest.stories.mdx +3 -3
  87. package/src/components/Autosuggest/Autosuggest.stories.tsx +2 -1
  88. package/src/components/Autosuggest/_Autosuggest.scss +5 -5
  89. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +14 -10
  90. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +23 -0
  91. package/src/components/Breadcrumbs/Breadcrumbs.tsx +5 -1
  92. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +199 -1
  93. package/src/components/Button/Button.stories.mdx +15 -10
  94. package/src/components/Button/Button.test.tsx +21 -7
  95. package/src/components/Button/Button.tsx +22 -34
  96. package/src/components/Button/ButtonTypes.tsx +1 -0
  97. package/src/components/Button/__snapshots__/Button.test.tsx.snap +41 -10
  98. package/src/components/Card/Card.stories.mdx +296 -259
  99. package/src/components/Card/Card.test.tsx +156 -84
  100. package/src/components/Card/Card.tsx +195 -145
  101. package/src/components/Card/CardTypes.tsx +0 -17
  102. package/src/components/Card/__snapshots__/Card.test.tsx.snap +410 -0
  103. package/src/components/CardEdition/CardEdition.stories.tsx +15 -47
  104. package/src/components/CardEdition/_CardEdition.scss +22 -23
  105. package/src/components/Chakra/Box.stories.mdx +15 -16
  106. package/src/components/Chakra/Center.stories.mdx +31 -16
  107. package/src/components/Chakra/Grid.stories.mdx +28 -15
  108. package/src/components/Chakra/Stack.stories.mdx +35 -18
  109. package/src/components/Checkbox/Checkbox.stories.mdx +33 -11
  110. package/src/components/Checkbox/Checkbox.test.tsx +47 -2
  111. package/src/components/Checkbox/Checkbox.tsx +39 -33
  112. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +90 -2
  113. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +82 -2
  114. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +29 -2
  115. package/src/components/CheckboxGroup/CheckboxGroup.tsx +22 -18
  116. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +47 -81
  117. package/src/components/ComponentWrapper/ComponentWrapper.tsx +63 -0
  118. package/src/components/DatePicker/DatePicker.stories.mdx +163 -62
  119. package/src/components/DatePicker/DatePicker.test.tsx +264 -64
  120. package/src/components/DatePicker/DatePicker.tsx +159 -128
  121. package/src/components/DatePicker/_DatePicker.scss +33 -67
  122. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +818 -0
  123. package/src/components/Fieldset/Fieldset.stories.mdx +55 -0
  124. package/src/components/Fieldset/Fieldset.test.tsx +125 -0
  125. package/src/components/Fieldset/Fieldset.tsx +52 -0
  126. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +68 -0
  127. package/src/components/Form/Form.stories.mdx +24 -6
  128. package/src/components/Form/Form.test.tsx +1 -1
  129. package/src/components/Form/Form.tsx +1 -0
  130. package/src/components/Grid/SimpleGrid.stories.mdx +32 -39
  131. package/src/components/Grid/SimpleGrid.test.tsx +4 -4
  132. package/src/components/Heading/Heading.stories.mdx +3 -4
  133. package/src/components/Heading/Heading.tsx +5 -5
  134. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +124 -0
  135. package/src/components/HelperErrorText/HelperErrorText.test.tsx +39 -44
  136. package/src/components/HelperErrorText/HelperErrorText.tsx +37 -39
  137. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +25 -0
  138. package/src/components/Hero/Hero.stories.mdx +12 -2
  139. package/src/components/Hero/Hero.tsx +1 -1
  140. package/src/components/Hero/HeroTypes.tsx +1 -0
  141. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +7 -7
  142. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +8 -6
  143. package/src/components/HorizontalRule/HorizontalRule.test.tsx +33 -28
  144. package/src/components/HorizontalRule/HorizontalRule.tsx +27 -29
  145. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +27 -9
  146. package/src/components/Icons/Icon.stories.mdx +12 -4
  147. package/src/components/Icons/Icon.test.tsx +18 -0
  148. package/src/components/Icons/Icon.tsx +16 -1
  149. package/src/components/Icons/IconSvgs.tsx +22 -0
  150. package/src/components/Icons/IconTypes.tsx +11 -0
  151. package/src/components/Image/Image.stories.mdx +220 -0
  152. package/src/components/Image/Image.test.tsx +131 -29
  153. package/src/components/Image/Image.tsx +84 -56
  154. package/src/components/Image/ImageTypes.ts +22 -0
  155. package/src/components/Image/__snapshots__/Image.test.tsx.snap +190 -0
  156. package/src/components/Input/Input.stories.tsx +23 -67
  157. package/src/components/Input/Input.test.tsx +4 -4
  158. package/src/components/Input/_Input.scss +23 -14
  159. package/src/components/Link/Link.tsx +4 -1
  160. package/src/components/List/List.stories.mdx +124 -49
  161. package/src/components/List/List.test.tsx +142 -63
  162. package/src/components/List/List.tsx +89 -93
  163. package/src/components/List/__snapshots__/List.test.tsx.snap +109 -0
  164. package/src/components/Modal/Modal.stories.mdx +3 -3
  165. package/src/components/Modal/_Modal.scss +2 -2
  166. package/src/components/Notification/Notification.stories.mdx +109 -112
  167. package/src/components/Notification/Notification.test.tsx +99 -110
  168. package/src/components/Notification/Notification.tsx +156 -159
  169. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +159 -8
  170. package/src/components/Pagination/Pagination.stories.mdx +26 -27
  171. package/src/components/Pagination/Pagination.stories.tsx +11 -16
  172. package/src/components/Pagination/Pagination.test.tsx +276 -146
  173. package/src/components/Pagination/Pagination.tsx +174 -154
  174. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +285 -0
  175. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +292 -0
  176. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +225 -0
  177. package/src/components/ProgressIndicator/ProgressIndicator.tsx +126 -0
  178. package/src/components/ProgressIndicator/ProgressIndicatorTypes.ts +8 -0
  179. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +357 -0
  180. package/src/components/Radio/Radio.test.tsx +20 -4
  181. package/src/components/Radio/Radio.tsx +6 -3
  182. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +3 -0
  183. package/src/components/RadioGroup/RadioGroup.stories.mdx +3 -4
  184. package/src/components/RadioGroup/RadioGroup.test.tsx +24 -1
  185. package/src/components/RadioGroup/RadioGroup.tsx +19 -19
  186. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +42 -72
  187. package/src/components/SearchBar/SearchBar.Test.tsx +20 -1
  188. package/src/components/SearchBar/SearchBar.stories.mdx +113 -8
  189. package/src/components/SearchBar/SearchBar.tsx +20 -10
  190. package/src/components/Select/Select.test.tsx +12 -0
  191. package/src/components/Select/Select.tsx +5 -2
  192. package/src/components/Select/SelectTypes.tsx +1 -0
  193. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +28 -59
  194. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +97 -177
  195. package/src/components/SkeletonLoader/SkeletonLoader.tsx +74 -71
  196. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +739 -0
  197. package/src/components/Slider/Slider.stories.mdx +529 -0
  198. package/src/components/Slider/Slider.test.tsx +653 -0
  199. package/src/components/Slider/Slider.tsx +303 -0
  200. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +1946 -0
  201. package/src/components/StyleGuide/Bidirectionality.stories.mdx +1 -1
  202. package/src/components/StyleGuide/Breakpoints.stories.mdx +34 -10
  203. package/src/components/StyleGuide/Buttons.stories.mdx +89 -73
  204. package/src/components/StyleGuide/ColorCard.tsx +46 -0
  205. package/src/components/StyleGuide/Colors.stories.mdx +171 -311
  206. package/src/components/StyleGuide/DesignTokens.stories.mdx +170 -0
  207. package/src/components/StyleGuide/Forms.stories.mdx +9 -7
  208. package/src/components/StyleGuide/Iconography.stories.mdx +85 -91
  209. package/src/components/StyleGuide/Spacing.stories.mdx +31 -23
  210. package/src/components/StyleGuide/Typography.stories.mdx +202 -189
  211. package/src/components/StyleGuide/UIDocCard.tsx +1 -1
  212. package/src/components/Tabs/Tabs.stories.mdx +73 -11
  213. package/src/components/Tabs/Tabs.tsx +87 -64
  214. package/src/components/Template/Template.stories.mdx +25 -27
  215. package/src/components/TextInput/TextInput.stories.mdx +1 -1
  216. package/src/components/TextInput/TextInput.test.tsx +22 -2
  217. package/src/components/TextInput/TextInput.tsx +28 -8
  218. package/src/components/TextInput/TextInputTypes.tsx +2 -0
  219. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +17 -4
  220. package/src/components/VideoPlayer/VideoPlayer.test.tsx +54 -53
  221. package/src/components/VideoPlayer/VideoPlayer.tsx +50 -51
  222. package/src/components/VideoPlayer/VideoPlayerTypes.tsx +2 -2
  223. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +91 -0
  224. package/src/docs/Chakra.stories.mdx +244 -63
  225. package/src/docs/Intro.stories.mdx +5 -2
  226. package/src/hooks/tests/useCarouselStyles.test.ts +140 -0
  227. package/src/hooks/tests/useNYPLTheme.test.tsx +36 -0
  228. package/src/hooks/useCarouselStyles.ts +34 -0
  229. package/src/hooks/useNYPLTheme.ts +67 -0
  230. package/src/hooks/useWindowSize.ts +40 -0
  231. package/src/index.ts +22 -19
  232. package/src/resources.scss +5 -5
  233. package/src/styles/base/{_02-breakpoints.scss → _01-breakpoints.scss} +9 -10
  234. package/src/styles/base/{_03-mixins.scss → _02-mixins.scss} +16 -5
  235. package/src/styles/base/{_04-base.scss → _03-base.scss} +7 -2
  236. package/src/styles/base/{_05-focus.scss → _04-focus.scss} +0 -15
  237. package/src/styles/base/_place-holder.scss +14 -3
  238. package/src/styles/{03-space → space}/_space-inline.scss +14 -14
  239. package/src/styles/{03-space → space}/_space-inset.scss +10 -10
  240. package/src/styles/space/_space-stack.scss +116 -0
  241. package/src/styles.scss +13 -60
  242. package/src/theme/components/button.ts +21 -15
  243. package/src/theme/components/card.ts +174 -0
  244. package/src/theme/components/checkbox.ts +8 -3
  245. package/src/theme/components/checkboxGroup.ts +8 -0
  246. package/src/theme/components/componentWrapper.ts +10 -0
  247. package/src/theme/components/datePicker.ts +17 -0
  248. package/src/theme/components/fieldset.ts +18 -0
  249. package/src/theme/components/global.ts +26 -15
  250. package/src/theme/components/globalMixins.ts +9 -1
  251. package/src/theme/components/heading.ts +10 -5
  252. package/src/theme/components/helperErrorText.ts +9 -0
  253. package/src/theme/components/hero.ts +4 -3
  254. package/src/theme/components/horizontalRule.ts +13 -0
  255. package/src/theme/components/icon.ts +9 -9
  256. package/src/theme/components/image.ts +116 -0
  257. package/src/theme/components/label.ts +3 -10
  258. package/src/theme/components/link.ts +5 -1
  259. package/src/theme/components/list.ts +73 -0
  260. package/src/theme/components/notification.ts +93 -0
  261. package/src/theme/components/pagination.ts +20 -0
  262. package/src/theme/components/progressIndicator.ts +62 -0
  263. package/src/theme/components/radio.ts +2 -2
  264. package/src/theme/components/radioGroup.ts +8 -0
  265. package/src/theme/components/select.ts +6 -3
  266. package/src/theme/components/skeletonLoader.ts +107 -0
  267. package/src/theme/components/slider.ts +79 -0
  268. package/src/theme/components/statusBadge.ts +1 -2
  269. package/src/theme/components/tabs.ts +49 -19
  270. package/src/theme/components/template.ts +8 -8
  271. package/src/theme/components/textInput.ts +5 -4
  272. package/src/theme/components/videoPlayer.ts +49 -0
  273. package/src/theme/foundations/breakpoints.ts +8 -8
  274. package/src/theme/foundations/global.ts +6 -1
  275. package/src/theme/foundations/radii.ts +6 -0
  276. package/src/theme/foundations/spacing.ts +24 -24
  277. package/src/theme/index.ts +41 -10
  278. package/src/utils/componentCategories.ts +4 -3
  279. package/dist/components/HelperErrorText/HelperErrorText.stories.d.ts +0 -16
  280. package/dist/components/Image/Image.stories.d.ts +0 -18
  281. package/dist/components/List/List.stories.d.ts +0 -7
  282. package/dist/theme/components/customCheckboxGroup.d.ts +0 -18
  283. package/dist/theme/components/customRadioGroup.d.ts +0 -18
  284. package/src/components/Button/_Button.scss +0 -32
  285. package/src/components/Card/_Card.scss +0 -308
  286. package/src/components/HelperErrorText/HelperErrorText.stories.tsx +0 -48
  287. package/src/components/HelperErrorText/_HelperErrorText.scss +0 -9
  288. package/src/components/HorizontalRule/_HorizontalRule.scss +0 -15
  289. package/src/components/Image/Image.stories.tsx +0 -54
  290. package/src/components/Image/_Image.scss +0 -38
  291. package/src/components/List/List.stories.tsx +0 -139
  292. package/src/components/List/_List.scss +0 -76
  293. package/src/components/Notification/_Notification.scss +0 -110
  294. package/src/components/Pagination/_Pagination.scss +0 -40
  295. package/src/components/SkeletonLoader/_SkeletonLoader.scss +0 -142
  296. package/src/components/VideoPlayer/_VideoPlayer.scss +0 -38
  297. package/src/styles/01-colors/_colors-brand.scss +0 -62
  298. package/src/styles/01-colors/_colors-utility.scss +0 -67
  299. package/src/styles/02-typography/_type-scale.css +0 -11
  300. package/src/styles/02-typography/_type-weight.css +0 -7
  301. package/src/styles/02-typography/_typefaces.css +0 -4
  302. package/src/styles/03-space/_space-stack.scss +0 -116
  303. package/src/styles/03-space/_space.css +0 -30
  304. package/src/styles/base/_card-grid.scss +0 -78
  305. package/src/styles/base/_typography.scss +0 -11
  306. package/src/theme/components/customCheckboxGroup.ts +0 -12
  307. package/src/theme/components/customRadioGroup.ts +0 -12
@@ -3,6 +3,7 @@ import { Box, Center, Square, Circle, HStack } from "@chakra-ui/react";
3
3
 
4
4
  import { getCategory } from "../../utils/componentCategories";
5
5
  import Image from "../Image/Image";
6
+ import { ImageSizes } from "../Image/ImageTypes";
6
7
  import Icon from "../Icons/Icon";
7
8
  import { IconNames, IconColors, IconSizes } from "../Icons/IconTypes";
8
9
  import DSProvider from "../../theme/provider";
@@ -15,7 +16,8 @@ import DSProvider from "../../theme/provider";
15
16
  | ----------------- | ---------- |
16
17
  | Added | `0.24.0` |
17
18
 
18
- Note: This needs the use of the `DSProvider` component. See the [README](https://github.com/NYPL/nypl-design-system#using-the-design-system-in-your-product)
19
+ Note: This needs the use of the `DSProvider` component. See the
20
+ [README](https://nypl.github.io/nypl-design-system/storybook-static/?path=/story/chakra-ui--page#dsprovider)
19
21
  for more information.
20
22
 
21
23
  These components are directly exported from Chakra UI. The `Center`, `Circle`,
@@ -30,17 +32,16 @@ guide on the Chakra UI site.
30
32
  <Story
31
33
  name="Center, Circle, Square"
32
34
  args={{
33
- p: "5",
34
- bg: "var(--brand-primary)",
35
- color: "var(--ui-white)",
35
+ padding: "s",
36
+ bg: "var(--nypl-colors-brand-primary)",
37
+ color: "var(--nypl-colors-ui-white)",
36
38
  }}
37
39
  >
38
40
  {(args) => (
39
41
  <Box>
40
42
  Some text at the beginning.
41
43
  <Center {...args}>
42
- So when I look up at the stars, I just wonder...what will they all
43
- become someday?
44
+ This text is centered inside a `Center` component.
44
45
  </Center>
45
46
  Some text at the end.
46
47
  </Box>
@@ -50,23 +51,32 @@ guide on the Chakra UI site.
50
51
 
51
52
  <Canvas>
52
53
  <DSProvider>
53
- <Center>
54
- <Image src="https://placeimg.com/300/400/arch" alt="Centered Image" />
54
+ <Center border="1px solid" borderColor="var(--nypl-colors-ui-gray-medium)">
55
+ <Image
56
+ src="https://placeimg.com/300/400/arch"
57
+ alt="Centered Image"
58
+ imageSize={ImageSizes.Medium}
59
+ />
55
60
  </Center>
56
61
  </DSProvider>
57
62
  </Canvas>
58
63
 
59
64
  ## Circle
60
65
 
61
- Similar to `Center` but is always a circle!
66
+ This component is similar to the `Center` component but it is always rendered as
67
+ a circle.
62
68
 
63
69
  <Canvas>
64
70
  <DSProvider>
65
71
  <HStack spacing="s">
66
- <Circle size="50px" bg="var(--ui-test)">
67
- <Icon name={IconNames.Download} size={IconSizes.Large} />
72
+ <Circle size="50px" bg="var(--nypl-colors-brand-secondary)">
73
+ <Icon
74
+ name={IconNames.Download}
75
+ color={IconColors.UiWhite}
76
+ size={IconSizes.Large}
77
+ />
68
78
  </Circle>
69
- <Circle size="50px" bg="var(--ui-link-primary)">
79
+ <Circle size="50px" bg="var(--nypl-colors-ui-link-primary)">
70
80
  <Icon
71
81
  name={IconNames.Check}
72
82
  color={IconColors.UiWhite}
@@ -79,15 +89,20 @@ Similar to `Center` but is always a circle!
79
89
 
80
90
  ## Square
81
91
 
82
- Similar to `Center` but always has equal height and width.
92
+ This component is similar to the `Circle` component but always has equal height
93
+ and width.
83
94
 
84
95
  <Canvas>
85
96
  <DSProvider>
86
97
  <HStack spacing="s">
87
- <Square size="50px" bg="var(--ui-test)">
88
- <Icon name={IconNames.Download} size={IconSizes.Large} />
98
+ <Square size="50px" bg="var(--nypl-colors-brand-secondary)">
99
+ <Icon
100
+ name={IconNames.Download}
101
+ color={IconColors.UiWhite}
102
+ size={IconSizes.Large}
103
+ />
89
104
  </Square>
90
- <Square size="50px" bg="var(--ui-link-primary)">
105
+ <Square size="50px" bg="var(--nypl-colors-ui-link-primary)">
91
106
  <Icon
92
107
  name={IconNames.Check}
93
108
  color={IconColors.UiWhite}
@@ -2,6 +2,7 @@ import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
2
2
  import { Box } from "@chakra-ui/react";
3
3
  import { Grid, GridItem } from "@chakra-ui/react";
4
4
  import { getCategory } from "../../utils/componentCategories";
5
+ import DSProvider from "../../theme/provider";
5
6
 
6
7
  <Meta title={getCategory("Grid")} component={Grid} />
7
8
 
@@ -11,13 +12,17 @@ import { getCategory } from "../../utils/componentCategories";
11
12
  | ----------------- | ---------- |
12
13
  | Added | `0.25.1` |
13
14
 
14
- Note: This needs the use of the `DSProvider` component. See the [README](https://github.com/NYPL/nypl-design-system#using-the-design-system-in-your-product)
15
+ Note: This needs the use of the `DSProvider` component. See the
16
+ [README](https://nypl.github.io/nypl-design-system/storybook-static/?path=/story/chakra-ui--page#dsprovider)
15
17
  for more information.
16
18
 
17
- This component is directly exported from Chakra UI. The `Grid` component is useful for grid layouts and offers more complexity and formatting options than the DS `SimpleGrid` component. `Grid` is `Box` with `display: grid` and it comes with helpful style shorthand. It renders a `div` element.
19
+ This component is directly exported from Chakra UI. The `Grid` component is
20
+ useful for grid layouts and offers more complexity and formatting options than
21
+ the DS `SimpleGrid` component. `Grid` is `Box` with `display: grid` and it comes
22
+ with helpful style shorthand. It renders a `div` element.
18
23
 
19
- Details about available props and related child components can be found on the [Grid component](https://chakra-ui.com/docs/layout/grid)
20
- page on the Chakra UI site.
24
+ Details about available props and related child components can be found on the
25
+ [Grid component](https://chakra-ui.com/docs/layout/grid) page on the Chakra UI site.
21
26
 
22
27
  <Canvas>
23
28
  <Story
@@ -46,34 +51,42 @@ page on the Chakra UI site.
46
51
 
47
52
  ## Complex Layouts with Grid Child Components
48
53
 
49
- In some layouts, you may need certain grid items to span a specific amount of columns or rows instead of an even distribution. To achieve this, you need to pass the `colSpan` prop to the `GridItem` component to span across columns and also pass the `rowSpan` component to span across rows. You also need to specify the `templateColumns` and `templateRows`.
54
+ In some layouts, you may need certain grid items to span a specific amount of
55
+ columns or rows instead of an even distribution. To achieve this, you need to
56
+ pass the `colSpan` prop to the `GridItem` component to span across columns and
57
+ also pass the `rowSpan` component to span across rows. You also need to specify
58
+ the `templateColumns` and `templateRows`.
50
59
 
51
60
  <Canvas>
52
61
  <DSProvider>
53
62
  <Grid
54
- h="200px"
63
+ height="200px"
55
64
  templateRows="repeat(2, 1fr)"
56
65
  templateColumns="repeat(5, 1fr)"
57
66
  gap="32"
58
67
  >
59
- <GridItem rowSpan={2} colSpan={1} bg="var(--ui-link-primary)" />
60
- <GridItem colSpan={2} bg="var(--ui-success-primary)" />
61
- <GridItem colSpan={2} bg="var(--ui-success-secondary)" />
62
- <GridItem colSpan={4} bg="var(--ui-link-secondary)" />
68
+ <GridItem
69
+ rowSpan={2}
70
+ colSpan={1}
71
+ bg="var(--nypl-colors-ui-link-primary)"
72
+ />
73
+ <GridItem colSpan={2} bg="var(--nypl-colors-ui-success-primary)" />
74
+ <GridItem colSpan={2} bg="var(--nypl-colors-ui-success-secondary)" />
75
+ <GridItem colSpan={4} bg="var(--nypl-colors-ui-link-secondary)" />
63
76
  </Grid>
64
77
  </DSProvider>
65
78
  </Canvas>
66
79
 
67
80
  ```jsx
68
81
  <Grid
69
- h="200px"
82
+ height="200px"
70
83
  templateRows="repeat(2, 1fr)"
71
84
  templateColumns="repeat(5, 1fr)"
72
85
  gap="32"
73
86
  >
74
- <GridItem rowSpan={2} colSpan={1} bg="var(--ui-link-primary)" />
75
- <GridItem colSpan={2} bg="var(--ui-success-primary)" />
76
- <GridItem colSpan={2} bg="var(--ui-success-secondary)" />
77
- <GridItem colSpan={4} bg="var(--ui-link-secondary)" />
87
+ <GridItem rowSpan={2} colSpan={1} bg="var(--nypl-colors-ui-link-primary)" />
88
+ <GridItem colSpan={2} bg="var(--nypl-colors-ui-success-primary)" />
89
+ <GridItem colSpan={2} bg="var(--nypl-colors-ui-success-secondary)" />
90
+ <GridItem colSpan={4} bg="var(--nypl-colors-ui-link-secondary)" />
78
91
  </Grid>
79
92
  ```
@@ -4,8 +4,7 @@ import { Box, Stack, HStack, VStack, Circle } from "@chakra-ui/react";
4
4
  import { getCategory } from "../../utils/componentCategories";
5
5
  import DSProvider from "../../theme/provider";
6
6
  import Icon from "../Icons/Icon";
7
- import { IconNames, IconRotationTypes, IconSizes } from "../Icons/IconTypes";
8
- import Radio from "../Radio/Radio";
7
+ import { IconNames, IconSizes } from "../Icons/IconTypes";
9
8
 
10
9
  <Meta title={getCategory("Stack, HStack, VStack")} component={Stack} />
11
10
 
@@ -15,7 +14,8 @@ import Radio from "../Radio/Radio";
15
14
  | ----------------- | ---------- |
16
15
  | Added | `0.24.0` |
17
16
 
18
- Note: This needs the use of the `DSProvider` component. See the [README](https://github.com/NYPL/nypl-design-system#using-the-design-system-in-your-product)
17
+ Note: This needs the use of the `DSProvider` component. See the
18
+ [README](https://nypl.github.io/nypl-design-system/storybook-static/?path=/story/chakra-ui--page#dsprovider)
19
19
  for more information.
20
20
 
21
21
  These components are directly exported from Chakra UI. The `Stack`, `HStack`,
@@ -25,17 +25,21 @@ with spacing between them.
25
25
  All available props can be found on the [Style Props](https://chakra-ui.com/docs/features/style-props)
26
26
  guide on the Chakra UI site.
27
27
 
28
+ In all the following examples, Design System `Icon` components are wrapped in
29
+ Chakra's `Circle` component.
30
+
28
31
  ## Stack
29
32
 
30
- The `Stack` component is the most flexible component because it can stack elements
31
- both horizontally and vertically through the `direction` prop.
33
+ The `Stack` component is the most flexible component because it can stack
34
+ elements both horizontally and vertically through the `direction` prop and the
35
+ `"row"` and `"column"` values, respectively.
32
36
 
33
37
  <Canvas>
34
38
  <Story
35
39
  name="Stack, HStack, VStack"
36
40
  args={{
37
41
  direction: "column",
38
- spacing: "10px",
42
+ spacing: "s",
39
43
  }}
40
44
  argTypes={{
41
45
  direction: {
@@ -64,30 +68,43 @@ both horizontally and vertically through the `direction` prop.
64
68
 
65
69
  ## HStack
66
70
 
67
- Stacks components horizontally.
71
+ Stacks components horizontally. This is the same as the `Stack` component with
72
+ a `direction` value of `"row"`.
68
73
 
69
74
  <Canvas>
70
75
  <DSProvider>
71
- <HStack>
72
- <Radio checked labelText="Tom Nook" name="testChecked" />
73
- <Radio labelText="Timmy" name="testChecked" />
74
- <Radio labelText="Tommy" name="testChecked" />
75
- <Radio labelText="Celeste" name="testChecked" />
76
+ <HStack spacing="s">
77
+ <Circle size="50px" borderColor="ui.black" borderWidth="1px">
78
+ <Icon name={IconNames.ErrorFilled} size={IconSizes.Large} />
79
+ </Circle>
80
+ <Circle size="50px" borderColor="ui.black" borderWidth="1px">
81
+ <Icon name={IconNames.ErrorOutline} size={IconSizes.Large} />
82
+ </Circle>
83
+ <Circle size="50px" borderColor="ui.black" borderWidth="1px">
84
+ <Icon name={IconNames.Check} size={IconSizes.Large} />
85
+ </Circle>
76
86
  </HStack>
77
87
  </DSProvider>
78
88
  </Canvas>
79
89
 
80
90
  ## VStack
81
91
 
82
- Stacks components vertically.
92
+ Stacks components vertically. This is the same as the `Stack` component with
93
+ a `direction` value of `"column"`.Pass in a value to the `align` prop to align
94
+ all the elements in the stack.
83
95
 
84
96
  <Canvas>
85
97
  <DSProvider>
86
- <VStack>
87
- <Radio isChecked labelText="Tom Nook" name="testChecked" />
88
- <Radio labelText="Timmy" name="testChecked" />
89
- <Radio labelText="Tommy" name="testChecked" />
90
- <Radio labelText="Celeste" name="testChecked" />
98
+ <VStack align="left" spacing="s">
99
+ <Circle size="50px" borderColor="ui.black" borderWidth="1px">
100
+ <Icon name={IconNames.ErrorFilled} size={IconSizes.Large} />
101
+ </Circle>
102
+ <Circle size="50px" borderColor="ui.black" borderWidth="1px">
103
+ <Icon name={IconNames.ErrorOutline} size={IconSizes.Large} />
104
+ </Circle>
105
+ <Circle size="50px" borderColor="ui.black" borderWidth="1px">
106
+ <Icon name={IconNames.Check} size={IconSizes.Large} />
107
+ </Circle>
91
108
  </VStack>
92
109
  </DSProvider>
93
110
  </Canvas>
@@ -38,7 +38,7 @@ import { onChangeDefault } from "./Checkbox";
38
38
  | Component Version | DS Version |
39
39
  | ----------------- | ---------- |
40
40
  | Added | `0.1.0` |
41
- | Latest | `0.25.0` |
41
+ | Latest | `0.25.3` |
42
42
 
43
43
  <Description of={Checkbox} />
44
44
 
@@ -49,16 +49,18 @@ cause an accessibility violation if none is present.
49
49
  <Story
50
50
  name="Checkbox"
51
51
  args={{
52
- labelText: "Test Label",
53
- showLabel: true,
52
+ helperText: "This is the helper text!",
54
53
  id: "test_id",
55
- name: "test_name",
56
- value: "1",
54
+ invalidText: "This is the error text :(",
57
55
  isDisabled: false,
58
- isRequired: false,
56
+ isIndeterminate: false,
59
57
  isInvalid: false,
60
- helperText: "This is the helper text!",
61
- errorText: "This is the error text :(",
58
+ isRequired: false,
59
+ labelText: "Test Label",
60
+ name: "test_name",
61
+ showHelperInvalidText: true,
62
+ showLabel: true,
63
+ value: "1",
62
64
  }}
63
65
  >
64
66
  {(args) => <Checkbox {...args} />}
@@ -69,9 +71,29 @@ cause an accessibility violation if none is present.
69
71
 
70
72
  ## Checked
71
73
 
74
+ Note that the `isChecked` property in this example is set to `true` and clicking
75
+ on it won't remove the checkmark; the `isChecked` prop must now be controlled
76
+ and removed manually by the parent component that controls this state.
77
+
72
78
  <Canvas>
73
79
  <DSProvider>
74
- <Checkbox labelText="I am checked" isChecked value="1" />
80
+ <Checkbox id="isChecked" labelText="I am checked" isChecked value="1" />
81
+ </DSProvider>
82
+ </Canvas>
83
+
84
+ ## Indeterminate
85
+
86
+ Note: This state only changes the icon through the `isIndeterminate` prop. This
87
+ does not affect whether the checkbox is checked. The `isIndeterminate` prop must
88
+ now be controlled and removed by the parent component in order to remove this state.
89
+
90
+ <Canvas>
91
+ <DSProvider>
92
+ <Checkbox
93
+ id="indeterminate"
94
+ labelText="I am indeterminate"
95
+ isIndeterminate
96
+ />
75
97
  </DSProvider>
76
98
  </Canvas>
77
99
 
@@ -126,9 +148,9 @@ cause an accessibility violation if none is present.
126
148
  <Canvas>
127
149
  <DSProvider>
128
150
  <Checkbox
129
- name="testErrorText"
151
+ name="testinvalidText"
130
152
  labelText="I have error text"
131
- errorText="I am the error text for this Checkbox"
153
+ invalidText="I am the error text for this Checkbox"
132
154
  isInvalid
133
155
  />
134
156
  </DSProvider>
@@ -63,7 +63,7 @@ describe("Checkbox", () => {
63
63
  id="inputID"
64
64
  labelText="Test Label"
65
65
  helperText="This is the helper text."
66
- errorText="This is the error text :("
66
+ invalidText="This is the error text :("
67
67
  />
68
68
  );
69
69
  expect(screen.getByText("This is the helper text.")).toBeVisible();
@@ -77,7 +77,7 @@ describe("Checkbox", () => {
77
77
  labelText="Test Label"
78
78
  isInvalid
79
79
  helperText="This is the helper text."
80
- errorText="This is the error text :("
80
+ invalidText="This is the error text :("
81
81
  />
82
82
  );
83
83
  expect(screen.getByText("This is the error text :(")).toBeVisible();
@@ -109,6 +109,22 @@ describe("Checkbox", () => {
109
109
  expect(screen.getByRole("checkbox")).toHaveAttribute("checked");
110
110
  });
111
111
 
112
+ it("Sets the 'indeterminate' state", () => {
113
+ const { container, rerender } = render(
114
+ <Checkbox id="inputID" labelText="Test Label" isChecked />
115
+ );
116
+ expect(
117
+ container.querySelector(".chakra-checkbox__control")
118
+ ).not.toHaveAttribute("data-indeterminate");
119
+
120
+ rerender(
121
+ <Checkbox id="inputID" labelText="Test Label" isChecked isIndeterminate />
122
+ );
123
+ expect(
124
+ container.querySelector(".chakra-checkbox__control")
125
+ ).toHaveAttribute("data-indeterminate");
126
+ });
127
+
112
128
  it("Sets the 'disabled' attribute", () => {
113
129
  render(
114
130
  <Checkbox
@@ -139,10 +155,28 @@ describe("Checkbox", () => {
139
155
  id="inputID-attributes"
140
156
  labelText="onChange test"
141
157
  showLabel={true}
158
+ invalidText="This is the error text!"
159
+ isInvalid
160
+ />
161
+ );
162
+ expect(screen.getByRole("checkbox")).toHaveAttribute("aria-invalid");
163
+ expect(screen.getByText("This is the error text!")).toBeInTheDocument();
164
+ });
165
+
166
+ it("does not render the error text when 'isInvalid' is true but 'showHelperInvalidText' is false", () => {
167
+ render(
168
+ <Checkbox
169
+ id="inputID-attributes"
170
+ labelText="onChange test"
171
+ showLabel={true}
172
+ showHelperInvalidText={false}
142
173
  isInvalid
143
174
  />
144
175
  );
145
176
  expect(screen.getByRole("checkbox")).toHaveAttribute("aria-invalid");
177
+ expect(
178
+ screen.queryByText("This is the error text!")
179
+ ).not.toBeInTheDocument();
146
180
  });
147
181
 
148
182
  it("Changing the value calls the onChange handler", () => {
@@ -170,6 +204,16 @@ describe("Checkbox", () => {
170
204
  <Checkbox id="checkbox-checked" labelText="Test Label" isChecked />
171
205
  )
172
206
  .toJSON();
207
+ const isIndeterminate = renderer
208
+ .create(
209
+ <Checkbox
210
+ id="checkbox-checked"
211
+ labelText="Test Label"
212
+ isChecked
213
+ isIndeterminate
214
+ />
215
+ )
216
+ .toJSON();
173
217
  const isRequired = renderer
174
218
  .create(
175
219
  <Checkbox id="checkbox-required" labelText="Test Label" isRequired />
@@ -188,6 +232,7 @@ describe("Checkbox", () => {
188
232
 
189
233
  expect(primary).toMatchSnapshot();
190
234
  expect(isChecked).toMatchSnapshot();
235
+ expect(isIndeterminate).toMatchSnapshot();
191
236
  expect(isRequired).toMatchSnapshot();
192
237
  expect(isInvalid).toMatchSnapshot();
193
238
  expect(isDisabled).toMatchSnapshot();
@@ -11,36 +11,40 @@ import generateUUID from "../../helpers/generateUUID";
11
11
  export interface CheckboxProps {
12
12
  /** className you can add in addition to 'input' */
13
13
  className?: string;
14
- /** Optional string to populate the HelperErrorText for the error state
15
- * when `isInvalid` is true.
16
- */
17
- errorText?: string;
18
14
  /** Optional string to populate the HelperErrorText for standard state */
19
15
  helperText?: string;
20
16
  /** ID that other components can cross reference for accessibility purposes */
21
17
  id?: string;
22
- /** When using the Checkbox as a "controlled" form element, you can specify the
23
- * Checkbox's checked state using this prop.
18
+ /** Optional string to populate the HelperErrorText for the error state
19
+ * when `isInvalid` is true. */
20
+ invalidText?: string;
21
+ /** When using the Checkbox as a "controlled" form element, you can specify
22
+ * the Checkbox's checked state using this prop.
24
23
  * Learn more about controlled and uncontrolled form fields:
25
24
  * https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/ */
26
25
  isChecked?: boolean;
27
26
  /** Adds the 'disabled' and `aria-disabled` attributes to the input when true.
28
- * This also makes the text italic and color scheme gray.
29
- */
27
+ * This also makes the text italic and color scheme gray. */
30
28
  isDisabled?: boolean;
29
+ /** Adds the indeterminate state to the `Checkbox`. */
30
+ isIndeterminate?: boolean;
31
31
  /** Adds the 'aria-invalid' attribute to the input when true. This also makes
32
- * the color theme "NYPL error" red for the button and text.
33
- */
32
+ * the color theme "NYPL error" red for the button and text. */
34
33
  isInvalid?: boolean;
35
34
  /** Adds the 'required' attribute to the input when true. */
36
35
  isRequired?: boolean;
37
- /** 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. */
36
+ /** The checkbox's label. This will serve as the text content for a `<label>`
37
+ * element if `showlabel` is true, or an "aria-label" if `showLabel` is false. */
38
38
  labelText: string;
39
- /** The name prop indicates into which group of checkboxes this checkbox belongs. If none is specified, 'default' will be used */
39
+ /** The name prop indicates into which group of checkboxes this checkbox
40
+ * belongs. If none is specified, 'default' will be used */
40
41
  name?: string;
41
42
  /** The action to perform on the `<input>`'s onChange function */
42
43
  onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
43
- /** Offers the ability to show the checkbox's label onscreen or hide it. Refer to the `labelText` property for more information. */
44
+ /** Offers the ability to hide the helper/invalid text. */
45
+ showHelperInvalidText?: boolean;
46
+ /** Offers the ability to show the checkbox's label onscreen or hide it.
47
+ * Refer to the `labelText` property for more information. */
44
48
  showLabel?: boolean;
45
49
  /** Populates the value of the input */
46
50
  value?: string;
@@ -51,17 +55,17 @@ export const onChangeDefault = () => {
51
55
  };
52
56
 
53
57
  function CheckboxIcon(props) {
54
- // Don't need the `isChecked` prop but it causes
55
- // rendering issues on the SVG element.
58
+ // We don't need the `isIndeterminate` or `isChecked` props but it
59
+ // causes rendering issues on the SVG element, so we remove them
60
+ // before passing all the props to the `Icon` component.
56
61
  const { isIndeterminate, isChecked, ...rest } = props;
57
62
 
58
- const d = isIndeterminate
59
- ? "M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm0,19a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,12,19Zm1.6-6.08a1,1,0,0,0-.6.917,1,1,0,1,1-2,0,3,3,0,0,1,1.8-2.75A2,2,0,1,0,10,9.255a1,1,0,1,1-2,0,4,4,0,1,1,5.6,3.666Z"
60
- : "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";
61
-
62
63
  return (
63
64
  <Icon viewBox="0 0 24 24" {...rest}>
64
- <path fill="currentColor" d={d} />
65
+ <path
66
+ fill="currentColor"
67
+ 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"
68
+ />
65
69
  </Icon>
66
70
  );
67
71
  }
@@ -70,29 +74,32 @@ const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
70
74
  (props, ref?) => {
71
75
  const {
72
76
  className,
73
- errorText,
77
+ invalidText,
74
78
  helperText,
75
79
  id = generateUUID(),
76
80
  isChecked,
77
81
  isDisabled = false,
82
+ isIndeterminate = false,
78
83
  isInvalid = false,
79
84
  isRequired = false,
80
85
  labelText,
81
86
  name,
87
+ showHelperInvalidText = true,
82
88
  showLabel = true,
83
89
  value,
84
90
  } = props;
85
-
86
91
  const styles = useMultiStyleConfig("Checkbox", {});
87
- const footnote = isInvalid ? errorText : helperText;
88
- const attributes = {};
92
+ const footnote = isInvalid ? invalidText : helperText;
93
+ const ariaAttributes = {};
89
94
  const onChange = props.onChange || onChangeDefault;
95
+ // Use Chakra's default indeterminate icon.
96
+ const icon = !isIndeterminate ? <CheckboxIcon /> : undefined;
90
97
 
91
98
  if (!showLabel) {
92
- attributes["aria-label"] =
99
+ ariaAttributes["aria-label"] =
93
100
  labelText && footnote ? `${labelText} - ${footnote}` : labelText;
94
101
  } else {
95
- if (footnote) attributes["aria-describedby"] = `${id}-helperText`;
102
+ if (footnote) ariaAttributes["aria-describedby"] = `${id}-helperText`;
96
103
  }
97
104
 
98
105
  return (
@@ -104,6 +111,7 @@ const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
104
111
  isDisabled={isDisabled}
105
112
  isInvalid={isInvalid}
106
113
  isRequired={isRequired}
114
+ isIndeterminate={isIndeterminate}
107
115
  ref={ref}
108
116
  value={value}
109
117
  {...(isChecked !== undefined
@@ -114,15 +122,15 @@ const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
114
122
  : {
115
123
  defaultIsChecked: false,
116
124
  })}
117
- icon={<CheckboxIcon />}
125
+ icon={icon}
118
126
  __css={styles}
119
- {...attributes}
127
+ {...ariaAttributes}
120
128
  >
121
129
  {showLabel && labelText}
122
130
  </ChakraCheckbox>
123
- {footnote && showLabel && (
124
- <Box __css={styles.helper} aria-disabled={isDisabled}>
125
- <HelperErrorText isError={isInvalid} id={`${id}-helperText`}>
131
+ {footnote && showHelperInvalidText && (
132
+ <Box __css={styles.helper}>
133
+ <HelperErrorText isInvalid={isInvalid} id={`${id}-helperText`}>
126
134
  {footnote}
127
135
  </HelperErrorText>
128
136
  </Box>
@@ -132,6 +140,4 @@ const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
132
140
  }
133
141
  );
134
142
 
135
- Checkbox.displayName = "Checkbox";
136
-
137
143
  export default Checkbox;