@nypl/design-system-react-components 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +171 -135
  3. package/dist/__tests__/mediaMatchMock.d.ts +79 -0
  4. package/dist/components/Card/Card.d.ts +8 -6
  5. package/dist/components/Heading/Heading.d.ts +6 -0
  6. package/dist/components/Icons/Icon.d.ts +1 -1
  7. package/dist/components/Icons/IconSvgs.d.ts +10 -0
  8. package/dist/components/Logo/Logo.d.ts +1 -1
  9. package/dist/components/Logo/LogoSvgs.d.ts +3 -0
  10. package/dist/components/Slider/Slider.d.ts +1 -2
  11. package/dist/components/Table/Table.d.ts +3 -2
  12. package/dist/components/Text/Text.d.ts +6 -0
  13. package/dist/components/TextInput/TextInput.d.ts +2 -1
  14. package/dist/design-system-react-components.cjs.development.js +1700 -878
  15. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  16. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  17. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  18. package/dist/design-system-react-components.esm.js +1672 -881
  19. package/dist/design-system-react-components.esm.js.map +1 -1
  20. package/dist/hooks/{tests → __tests__}/useCarouselStyles.test.d.ts +0 -0
  21. package/dist/hooks/__tests__/useNYPLBreakpoints.test.d.ts +1 -0
  22. package/dist/hooks/useNYPLBreakpoints.d.ts +13 -0
  23. package/dist/index.d.ts +2 -1
  24. package/dist/resources.scss +0 -4
  25. package/dist/styles.css +3 -2
  26. package/dist/theme/components/button.d.ts +7 -2
  27. package/dist/theme/components/checkbox.d.ts +1 -0
  28. package/dist/theme/components/customTable.d.ts +522 -34
  29. package/dist/theme/components/datePicker.d.ts +1 -0
  30. package/dist/theme/components/global.d.ts +5 -2
  31. package/dist/theme/components/heading.d.ts +5 -1
  32. package/dist/theme/components/image.d.ts +18 -0
  33. package/dist/theme/components/radio.d.ts +9 -0
  34. package/dist/theme/components/searchBar.d.ts +6 -0
  35. package/dist/theme/components/select.d.ts +4 -5
  36. package/dist/theme/components/structuredContent.d.ts +117 -17
  37. package/dist/theme/components/template.d.ts +4 -1
  38. package/dist/theme/components/text.d.ts +5 -1
  39. package/dist/theme/components/textInput.d.ts +4 -0
  40. package/dist/theme/components/toggle.d.ts +1 -0
  41. package/dist/theme/provider.d.ts +2 -1
  42. package/package.json +16 -16
  43. package/src/__tests__/fileMock.ts +0 -6
  44. package/src/__tests__/setup.ts +0 -27
  45. package/src/__tests__/utils/utils.test.ts +0 -18
  46. package/src/components/AccessibilityGuide/SkipNavigation.stories.mdx +0 -42
  47. package/src/components/Accordion/Accordion.stories.mdx +0 -333
  48. package/src/components/Accordion/Accordion.test.tsx +0 -237
  49. package/src/components/Accordion/Accordion.tsx +0 -137
  50. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +0 -734
  51. package/src/components/Autosuggest/Autosuggest.stories.mdx +0 -75
  52. package/src/components/Autosuggest/Autosuggest.stories.tsx +0 -211
  53. package/src/components/Autosuggest/_Autosuggest.scss +0 -51
  54. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +0 -231
  55. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -144
  56. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -98
  57. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +0 -695
  58. package/src/components/Button/Button.stories.mdx +0 -320
  59. package/src/components/Button/Button.test.tsx +0 -184
  60. package/src/components/Button/Button.tsx +0 -95
  61. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -106
  62. package/src/components/ButtonGroup/ButtonGroup.stories.mdx +0 -178
  63. package/src/components/ButtonGroup/ButtonGroup.test.tsx +0 -141
  64. package/src/components/ButtonGroup/ButtonGroup.tsx +0 -100
  65. package/src/components/ButtonGroup/__snapshots__/ButtonGroup.test.tsx.snap +0 -117
  66. package/src/components/Card/Card.stories.mdx +0 -1041
  67. package/src/components/Card/Card.test.tsx +0 -388
  68. package/src/components/Card/Card.tsx +0 -346
  69. package/src/components/Card/__snapshots__/Card.test.tsx.snap +0 -568
  70. package/src/components/Chakra/Box.stories.mdx +0 -52
  71. package/src/components/Chakra/Center.stories.mdx +0 -96
  72. package/src/components/Chakra/Flex.stories.mdx +0 -111
  73. package/src/components/Chakra/Grid.stories.mdx +0 -89
  74. package/src/components/Chakra/Stack.stories.mdx +0 -109
  75. package/src/components/Checkbox/Checkbox.stories.mdx +0 -243
  76. package/src/components/Checkbox/Checkbox.test.tsx +0 -350
  77. package/src/components/Checkbox/Checkbox.tsx +0 -152
  78. package/src/components/Checkbox/__snapshots__/Checkbox.test.tsx.snap +0 -661
  79. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +0 -462
  80. package/src/components/CheckboxGroup/CheckboxGroup.test.tsx +0 -492
  81. package/src/components/CheckboxGroup/CheckboxGroup.tsx +0 -173
  82. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +0 -1842
  83. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +0 -163
  84. package/src/components/ComponentWrapper/ComponentWrapper.tsx +0 -76
  85. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +0 -103
  86. package/src/components/DatePicker/DatePicker.stories.mdx +0 -452
  87. package/src/components/DatePicker/DatePicker.test.tsx +0 -940
  88. package/src/components/DatePicker/DatePicker.tsx +0 -450
  89. package/src/components/DatePicker/_DatePicker.scss +0 -100
  90. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +0 -908
  91. package/src/components/Fieldset/Fieldset.stories.mdx +0 -96
  92. package/src/components/Fieldset/Fieldset.test.tsx +0 -155
  93. package/src/components/Fieldset/Fieldset.tsx +0 -55
  94. package/src/components/Fieldset/__snapshots__/Fieldset.test.tsx.snap +0 -89
  95. package/src/components/Form/Form.stories.mdx +0 -426
  96. package/src/components/Form/Form.test.tsx +0 -234
  97. package/src/components/Form/Form.tsx +0 -124
  98. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -115
  99. package/src/components/Grid/SimpleGrid.stories.mdx +0 -336
  100. package/src/components/Grid/SimpleGrid.test.tsx +0 -79
  101. package/src/components/Grid/SimpleGrid.tsx +0 -49
  102. package/src/components/Grid/__snapshots__/SimpleGrid.test.tsx.snap +0 -23
  103. package/src/components/Heading/Heading.stories.mdx +0 -187
  104. package/src/components/Heading/Heading.test.tsx +0 -171
  105. package/src/components/Heading/Heading.tsx +0 -104
  106. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +0 -90
  107. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +0 -172
  108. package/src/components/HelperErrorText/HelperErrorText.test.tsx +0 -114
  109. package/src/components/HelperErrorText/HelperErrorText.tsx +0 -62
  110. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +0 -93
  111. package/src/components/Hero/Hero.stories.mdx +0 -378
  112. package/src/components/Hero/Hero.test.tsx +0 -611
  113. package/src/components/Hero/Hero.tsx +0 -203
  114. package/src/components/Hero/__snapshots__/Hero.test.tsx.snap +0 -379
  115. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +0 -73
  116. package/src/components/HorizontalRule/HorizontalRule.test.tsx +0 -54
  117. package/src/components/HorizontalRule/HorizontalRule.tsx +0 -27
  118. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +0 -44
  119. package/src/components/Icons/Icon.stories.mdx +0 -413
  120. package/src/components/Icons/Icon.test.tsx +0 -120
  121. package/src/components/Icons/Icon.tsx +0 -187
  122. package/src/components/Icons/IconSvgs.tsx +0 -64
  123. package/src/components/Icons/__snapshots__/Icon.test.tsx.snap +0 -129
  124. package/src/components/Image/Image.stories.mdx +0 -332
  125. package/src/components/Image/Image.test.tsx +0 -155
  126. package/src/components/Image/Image.tsx +0 -171
  127. package/src/components/Image/__snapshots__/Image.test.tsx.snap +0 -269
  128. package/src/components/Label/Label.stories.mdx +0 -100
  129. package/src/components/Label/Label.test.tsx +0 -116
  130. package/src/components/Label/Label.tsx +0 -55
  131. package/src/components/Label/__snapshots__/Label.test.tsx.snap +0 -45
  132. package/src/components/Link/Link.stories.mdx +0 -249
  133. package/src/components/Link/Link.test.tsx +0 -224
  134. package/src/components/Link/Link.tsx +0 -178
  135. package/src/components/Link/__snapshots__/Link.test.tsx.snap +0 -286
  136. package/src/components/List/List.stories.mdx +0 -393
  137. package/src/components/List/List.test.tsx +0 -265
  138. package/src/components/List/List.tsx +0 -156
  139. package/src/components/List/__snapshots__/List.test.tsx.snap +0 -213
  140. package/src/components/Logo/Logo.stories.mdx +0 -295
  141. package/src/components/Logo/Logo.test.tsx +0 -116
  142. package/src/components/Logo/Logo.tsx +0 -151
  143. package/src/components/Logo/LogoSvgs.tsx +0 -90
  144. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +0 -142
  145. package/src/components/Modal/Modal.stories.mdx +0 -294
  146. package/src/components/Modal/Modal.test.tsx +0 -157
  147. package/src/components/Modal/Modal.tsx +0 -154
  148. package/src/components/Modal/__snapshots__/Modal.test.tsx.snap +0 -25
  149. package/src/components/Notification/Notification.stories.mdx +0 -358
  150. package/src/components/Notification/Notification.test.tsx +0 -279
  151. package/src/components/Notification/Notification.tsx +0 -224
  152. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +0 -525
  153. package/src/components/Pagination/Pagination.stories.mdx +0 -184
  154. package/src/components/Pagination/Pagination.test.tsx +0 -419
  155. package/src/components/Pagination/Pagination.tsx +0 -269
  156. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +0 -544
  157. package/src/components/Placeholder/Placeholder.tsx +0 -19
  158. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +0 -360
  159. package/src/components/ProgressIndicator/ProgressIndicator.test.tsx +0 -298
  160. package/src/components/ProgressIndicator/ProgressIndicator.tsx +0 -132
  161. package/src/components/ProgressIndicator/__snapshots__/ProgressIndicator.test.tsx.snap +0 -434
  162. package/src/components/Radio/Radio.stories.mdx +0 -216
  163. package/src/components/Radio/Radio.test.tsx +0 -247
  164. package/src/components/Radio/Radio.tsx +0 -119
  165. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +0 -451
  166. package/src/components/RadioGroup/RadioGroup.stories.mdx +0 -479
  167. package/src/components/RadioGroup/RadioGroup.test.tsx +0 -471
  168. package/src/components/RadioGroup/RadioGroup.tsx +0 -171
  169. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +0 -1550
  170. package/src/components/SearchBar/SearchBar.stories.mdx +0 -518
  171. package/src/components/SearchBar/SearchBar.test.tsx +0 -435
  172. package/src/components/SearchBar/SearchBar.tsx +0 -210
  173. package/src/components/SearchBar/__snapshots__/SearchBar.test.tsx.snap +0 -1049
  174. package/src/components/Select/Select.stories.mdx +0 -439
  175. package/src/components/Select/Select.test.tsx +0 -358
  176. package/src/components/Select/Select.tsx +0 -183
  177. package/src/components/Select/__snapshots__/Select.test.tsx.snap +0 -895
  178. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +0 -142
  179. package/src/components/SkeletonLoader/SkeletonLoader.test.tsx +0 -116
  180. package/src/components/SkeletonLoader/SkeletonLoader.tsx +0 -123
  181. package/src/components/SkeletonLoader/__snapshots__/SkeletonLoader.test.tsx.snap +0 -898
  182. package/src/components/SkipNavigation/SkipNavigation.stories.mdx +0 -90
  183. package/src/components/SkipNavigation/SkipNavigation.test.tsx +0 -63
  184. package/src/components/SkipNavigation/SkipNavigation.tsx +0 -51
  185. package/src/components/SkipNavigation/__snapshots__/SkipNavigation.test.tsx.snap +0 -130
  186. package/src/components/Slider/Slider.stories.mdx +0 -628
  187. package/src/components/Slider/Slider.test.tsx +0 -736
  188. package/src/components/Slider/Slider.tsx +0 -322
  189. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +0 -2186
  190. package/src/components/StatusBadge/StatusBadge.stories.mdx +0 -109
  191. package/src/components/StatusBadge/StatusBadge.test.tsx +0 -70
  192. package/src/components/StatusBadge/StatusBadge.tsx +0 -35
  193. package/src/components/StatusBadge/__snapshots__/StatusBadge.test.tsx.snap +0 -47
  194. package/src/components/StructuredContent/StructuredContent.stories.mdx +0 -567
  195. package/src/components/StructuredContent/StructuredContent.test.tsx +0 -435
  196. package/src/components/StructuredContent/StructuredContent.tsx +0 -139
  197. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +0 -368
  198. package/src/components/StyleGuide/Bidirectionality.stories.mdx +0 -206
  199. package/src/components/StyleGuide/Breakpoints.stories.mdx +0 -55
  200. package/src/components/StyleGuide/Buttons.stories.mdx +0 -194
  201. package/src/components/StyleGuide/ColorCard.tsx +0 -43
  202. package/src/components/StyleGuide/Colors.stories.mdx +0 -201
  203. package/src/components/StyleGuide/DesignTokens.stories.mdx +0 -193
  204. package/src/components/StyleGuide/Forms.stories.mdx +0 -94
  205. package/src/components/StyleGuide/Iconography.stories.mdx +0 -142
  206. package/src/components/StyleGuide/Spacing.stories.mdx +0 -116
  207. package/src/components/StyleGuide/Typography.stories.mdx +0 -419
  208. package/src/components/Table/Table.stories.mdx +0 -272
  209. package/src/components/Table/Table.test.tsx +0 -241
  210. package/src/components/Table/Table.tsx +0 -152
  211. package/src/components/Table/__snapshots__/Table.test.tsx.snap +0 -1703
  212. package/src/components/Tabs/Tabs.stories.mdx +0 -338
  213. package/src/components/Tabs/Tabs.test.tsx +0 -298
  214. package/src/components/Tabs/Tabs.tsx +0 -264
  215. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +0 -584
  216. package/src/components/Template/Template.stories.mdx +0 -695
  217. package/src/components/Template/Template.test.tsx +0 -309
  218. package/src/components/Template/Template.tsx +0 -326
  219. package/src/components/Template/__snapshots__/Template.test.tsx.snap +0 -342
  220. package/src/components/Text/Text.stories.mdx +0 -103
  221. package/src/components/Text/Text.test.tsx +0 -63
  222. package/src/components/Text/Text.tsx +0 -50
  223. package/src/components/Text/__snapshots__/Text.test.tsx.snap +0 -50
  224. package/src/components/TextInput/TextInput.stories.mdx +0 -268
  225. package/src/components/TextInput/TextInput.test.tsx +0 -451
  226. package/src/components/TextInput/TextInput.tsx +0 -240
  227. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +0 -274
  228. package/src/components/Toggle/Toggle.stories.mdx +0 -237
  229. package/src/components/Toggle/Toggle.test.tsx +0 -170
  230. package/src/components/Toggle/Toggle.tsx +0 -128
  231. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +0 -470
  232. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +0 -212
  233. package/src/components/VideoPlayer/VideoPlayer.test.tsx +0 -308
  234. package/src/components/VideoPlayer/VideoPlayer.tsx +0 -188
  235. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +0 -192
  236. package/src/docs/Chakra.stories.mdx +0 -563
  237. package/src/docs/Welcome.stories.mdx +0 -148
  238. package/src/helpers/types.ts +0 -1
  239. package/src/hooks/tests/useCarouselStyles.test.ts +0 -140
  240. package/src/hooks/tests/useNYPLTheme.test.tsx +0 -36
  241. package/src/hooks/useCarouselStyles.stories.mdx +0 -30
  242. package/src/hooks/useCarouselStyles.ts +0 -35
  243. package/src/hooks/useNYPLTheme.stories.mdx +0 -98
  244. package/src/hooks/useNYPLTheme.ts +0 -91
  245. package/src/hooks/useWindowSize.stories.mdx +0 -23
  246. package/src/hooks/useWindowSize.ts +0 -40
  247. package/src/index.ts +0 -136
  248. package/src/resources.scss +0 -6
  249. package/src/styles/base/_01-breakpoints.scss +0 -27
  250. package/src/styles/base/_02-mixins.scss +0 -103
  251. package/src/styles/base/_place-holder.scss +0 -33
  252. package/src/styles/space/_space-inline.scss +0 -79
  253. package/src/styles/space/_space-inset.scss +0 -57
  254. package/src/styles/space/_space-stack.scss +0 -116
  255. package/src/styles.scss +0 -23
  256. package/src/theme/components/accordion.ts +0 -25
  257. package/src/theme/components/breadcrumb.ts +0 -94
  258. package/src/theme/components/button.ts +0 -133
  259. package/src/theme/components/buttonGroup.ts +0 -10
  260. package/src/theme/components/card.ts +0 -237
  261. package/src/theme/components/checkbox.ts +0 -110
  262. package/src/theme/components/checkboxGroup.ts +0 -10
  263. package/src/theme/components/componentWrapper.ts +0 -14
  264. package/src/theme/components/customTable.ts +0 -77
  265. package/src/theme/components/datePicker.ts +0 -17
  266. package/src/theme/components/fieldset.ts +0 -23
  267. package/src/theme/components/global.ts +0 -91
  268. package/src/theme/components/globalMixins.ts +0 -24
  269. package/src/theme/components/heading.ts +0 -79
  270. package/src/theme/components/helperErrorText.ts +0 -14
  271. package/src/theme/components/hero.ts +0 -238
  272. package/src/theme/components/horizontalRule.ts +0 -17
  273. package/src/theme/components/icon.ts +0 -88
  274. package/src/theme/components/image.ts +0 -136
  275. package/src/theme/components/label.ts +0 -15
  276. package/src/theme/components/link.ts +0 -63
  277. package/src/theme/components/list.ts +0 -88
  278. package/src/theme/components/logo.ts +0 -58
  279. package/src/theme/components/notification.ts +0 -132
  280. package/src/theme/components/pagination.ts +0 -17
  281. package/src/theme/components/progressIndicator.ts +0 -67
  282. package/src/theme/components/radio.ts +0 -103
  283. package/src/theme/components/radioGroup.ts +0 -10
  284. package/src/theme/components/searchBar.ts +0 -19
  285. package/src/theme/components/select.ts +0 -72
  286. package/src/theme/components/skeletonLoader.ts +0 -113
  287. package/src/theme/components/skipNavigation.ts +0 -29
  288. package/src/theme/components/slider.ts +0 -95
  289. package/src/theme/components/statusBadge.ts +0 -26
  290. package/src/theme/components/structuredContent.ts +0 -149
  291. package/src/theme/components/tabs.ts +0 -109
  292. package/src/theme/components/template.ts +0 -114
  293. package/src/theme/components/text.ts +0 -38
  294. package/src/theme/components/textInput.ts +0 -65
  295. package/src/theme/components/toggle.ts +0 -109
  296. package/src/theme/components/videoPlayer.ts +0 -47
  297. package/src/theme/foundations/breakpoints.ts +0 -24
  298. package/src/theme/foundations/colors.ts +0 -212
  299. package/src/theme/foundations/global.ts +0 -43
  300. package/src/theme/foundations/radii.ts +0 -7
  301. package/src/theme/foundations/shadows.ts +0 -5
  302. package/src/theme/foundations/spacing.ts +0 -136
  303. package/src/theme/foundations/typography.ts +0 -107
  304. package/src/theme/index.ts +0 -131
  305. package/src/theme/provider.tsx +0 -9
  306. package/src/theme/types.ts +0 -1
  307. package/src/utils/componentCategories.ts +0 -152
  308. package/src/utils/interfaces.ts +0 -5
  309. package/src/utils/utils.ts +0 -84
@@ -1,628 +0,0 @@
1
- import {
2
- ArgsTable,
3
- Canvas,
4
- Description,
5
- Meta,
6
- Story,
7
- } from "@storybook/addon-docs";
8
- import { withDesign } from "storybook-addon-designs";
9
-
10
- import Heading from "../Heading/Heading";
11
- import SimpleGrid from "../Grid/SimpleGrid";
12
- import Slider from "./Slider";
13
- import { getCategory } from "../../utils/componentCategories";
14
- import DSProvider from "../../theme/provider";
15
-
16
- <Meta
17
- title={getCategory("Slider")}
18
- component={Slider}
19
- decorators={[withDesign]}
20
- parameters={{
21
- design: {
22
- type: "figma",
23
- url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=36889%3A25871",
24
- },
25
- jest: ["Slider.test.tsx"],
26
- }}
27
- argTypes={{
28
- className: { control: false },
29
- defaultValue: {
30
- control: false,
31
- table: { defaultValue: { summary: 0 } },
32
- },
33
- id: { control: false },
34
- isDisabled: {
35
- table: { defaultValue: { summary: false } },
36
- },
37
- isInvalid: {
38
- table: { defaultValue: { summary: false } },
39
- },
40
- isRequired: {
41
- table: { defaultValue: { summary: false } },
42
- },
43
- max: {
44
- table: { defaultValue: { summary: 100 } },
45
- },
46
- min: {
47
- table: { defaultValue: { summary: 0 } },
48
- },
49
- name: { control: false },
50
- onChange: { control: false },
51
- showBoxes: {
52
- table: { defaultValue: { summary: true } },
53
- },
54
- showHelperInvalidText: {
55
- table: { defaultValue: { summary: true } },
56
- },
57
- showLabel: {
58
- table: { defaultValue: { summary: true } },
59
- },
60
- showRequiredLabel: {
61
- table: { defaultValue: { summary: true } },
62
- },
63
- showValues: {
64
- table: { defaultValue: { summary: true } },
65
- },
66
- step: {
67
- table: { defaultValue: { summary: 1 } },
68
- },
69
- }}
70
- />
71
-
72
- # Slider
73
-
74
- | Component Version | DS Version |
75
- | ----------------- | ---------- |
76
- | Added | `0.25.4` |
77
- | Latest | `1.0.2` |
78
-
79
- ## Table of Contents
80
-
81
- - [Overview](#overview)
82
- - [Component Props](#component-props)
83
- - [Accessibility](#accessibility)
84
- - [RangeSlider](#rangeslider)
85
- - [Examples](#examples)
86
- - [Get Input Values](#get-input-values)
87
-
88
- ## Overview
89
-
90
- <Description of={Slider} />
91
-
92
- The text input component doubles as a display for the slider's current value.
93
- For this type of component, the `value` prop must be a single number.
94
-
95
- ## Component Props
96
-
97
- <Canvas withToolbar>
98
- <Story
99
- name="Slider with Controls"
100
- args={{
101
- className: undefined,
102
- defaultValue: 50,
103
- helperText: "Pass in a value from the min 0 to the max 100 values.",
104
- id: "slider-id",
105
- invalidText: "Oh no this is an error :(",
106
- isDisabled: false,
107
- isInvalid: false,
108
- isRangeSlider: false,
109
- isRequired: false,
110
- labelText: "Slider label",
111
- max: 100,
112
- min: 0,
113
- name: undefined,
114
- onChange: undefined,
115
- showBoxes: true,
116
- showHelperInvalidText: true,
117
- showLabel: true,
118
- showRequiredLabel: true,
119
- showValues: true,
120
- step: 1,
121
- }}
122
- argTypes={{
123
- isRangeSlider: {
124
- control: false,
125
- table: {
126
- defaultValue: { summary: false },
127
- },
128
- },
129
- }}
130
- >
131
- {(args) => <Slider {...args} />}
132
- </Story>
133
- </Canvas>
134
-
135
- <ArgsTable story="Slider with Controls" />
136
-
137
- ## Accessibility
138
-
139
- The `Slider` component is accessible via keyboard. In addition to the text fields,
140
- a keyboard user can tab to the blue slider thumb and then with left and right
141
- arrows increase or decrease the value. The color contrast between foreground
142
- color and background color is 4.5:1. If text size is 200%, the button scales
143
- with text so there is no overlap. Internally, a `Label` is associated with the
144
- `<input>` element.
145
-
146
- When `showLabel` is set to false, the `labelText` value will be set to the
147
- main `<div>`'s `aria-label` attribute. This is the same `<div>` that contains the
148
- `aria-valuemin`, `aria-valuemax`, `aria-orientation`, and `aria-valuenow`
149
- attributes.
150
-
151
- Resources:
152
-
153
- - [W3C WAI-Aria Practices - Slider](https://www.w3.org/TR/wai-aria-practices-1.1/#slider)
154
- - [W3C WAI-Aria Practices - Slider (Multi-Thumb)](https://www.w3.org/TR/wai-aria-practices-1.1/#slidertwothumb)
155
- - [Chakra Slider](https://chakra-ui.com/docs/components/form/slider)
156
- - [Chakra RangeSlider](https://chakra-ui.com/docs/components/form/range-slider)
157
-
158
- ### Slider Accessibility Implementation
159
-
160
- Chakra's `Slider` component is accessible and, as recommended, we pass in an
161
- `aria-label` to their `Slider` component. On top of that, the Reservoir Design
162
- System (DS) `Slider` component's `<label>` points to the `<input>` element
163
- which shows the current value. This `input` element also has its own
164
- `aria-label`. When the input box is hidden, the `for` attribute in the `label`
165
- element is removed.
166
-
167
- Note that Chakra handles its single slider thumb aria attributes: `aria-valuemin`,
168
- `aria-valuemax`, `aria-valuenow`, and `aria-orientation`.
169
-
170
- ## RangeSlider
171
-
172
- Set `isRangeSlider` to `true` to create a range slider. The text input
173
- components double as displays for the slider's current minimum and maximum
174
- value. For this type of component, the `value` prop must be an array of two
175
- numbers. This signifies the starting and ending values of the range slider.
176
-
177
- <Canvas withToolbar>
178
- <Story
179
- name="RangeSlider with Controls"
180
- args={{
181
- className: undefined,
182
- defaultValue: [25, 75],
183
- helperText: "Pass in a value from the min 0 to the max 100 values.",
184
- id: "slider-range-id",
185
- invalidText: "Oh no this is an error :(",
186
- isDisabled: false,
187
- isInvalid: false,
188
- isRangeSlider: true,
189
- isRequired: false,
190
- labelText: "Range Slider label",
191
- max: 100,
192
- min: 0,
193
- name: undefined,
194
- onChange: undefined,
195
- showBoxes: true,
196
- showHelperInvalidText: true,
197
- showLabel: true,
198
- showRequiredLabel: true,
199
- showValues: true,
200
- step: 1,
201
- }}
202
- argTypes={{
203
- isRangeSlider: {
204
- control: false,
205
- table: {
206
- defaultValue: { summary: false },
207
- },
208
- },
209
- }}
210
- >
211
- {(args) => <Slider {...args} />}
212
- </Story>
213
- </Canvas>
214
-
215
- ### RangeSlider Accessibility Implementation
216
-
217
- Chakra's `RangeSlider` component is accessible and, as recommended, we pass in
218
- two `aria-label`s to their `RangeSlider` component. The syntax is different than
219
- the expected standard string; the `RangeSlider` expect `aria-label` to be an array
220
- of two strings. On top of this, the DS `Slider`'s `<label>` element, when in the
221
- `isRangeSlider` state, points to the _first_ `<input>` element which shows the
222
- current _start_ value. These two `input` elements also have their own `aria-label`s.
223
- When the input boxes are hidden, the `for` attribute in the `label` element is removed.
224
-
225
- Note that Chakra handles its two slider thumbs aria attributes: `aria-valuemin`,
226
- `aria-valuemax`, `aria-valuenow`, and `aria-orientation`.
227
-
228
- ## Examples
229
-
230
- ### Single Slider States
231
-
232
- <Canvas>
233
- <DSProvider>
234
- <Heading id="heading-single-default" level="four" text="Default State" />
235
- <Slider
236
- defaultValue={50}
237
- helperText="Component helper text."
238
- id="single-slider"
239
- invalidText="Component error text :("
240
- labelText="Label"
241
- />
242
- </DSProvider>
243
- </Canvas>
244
-
245
- <Canvas>
246
- <DSProvider>
247
- <Heading id="heading-single-errored" level="four" text="Errored State" />
248
- <Slider
249
- defaultValue={50}
250
- helperText="Component helper text."
251
- id="errored-slider"
252
- invalidText="Component error text :("
253
- labelText="Label"
254
- isInvalid
255
- />
256
- </DSProvider>
257
- </Canvas>
258
-
259
- <Canvas>
260
- <DSProvider>
261
- <Heading id="heading-single-required" level="four" text="Required State" />
262
- <Slider
263
- defaultValue={50}
264
- helperText="Component helper text."
265
- id="required-slider"
266
- invalidText="Component error text :("
267
- labelText="Label"
268
- isRequired
269
- />
270
- </DSProvider>
271
- </Canvas>
272
-
273
- <Canvas>
274
- <DSProvider>
275
- <Heading id="heading-single-disabled" level="four" text="Disabled State" />
276
- <Slider
277
- defaultValue={50}
278
- helperText="Component helper text."
279
- id="disabled-slider"
280
- invalidText="Component error text :("
281
- labelText="Label"
282
- isDisabled
283
- />
284
- </DSProvider>
285
- </Canvas>
286
-
287
- ### Range Slider States
288
-
289
- To enable the Range Slider, set the `isRangeSlider` prop to true.
290
-
291
- <Canvas>
292
- <DSProvider>
293
- <Heading id="heading-range-default" level="four" text="Default State" />
294
- <Slider
295
- defaultValue={[25, 75]}
296
- helperText="Component helper text."
297
- id="range-slider"
298
- invalidText="Component error text :("
299
- labelText="Label"
300
- isRangeSlider
301
- />
302
- </DSProvider>
303
- </Canvas>
304
-
305
- <Canvas>
306
- <DSProvider>
307
- <Heading id="heading-range-errored" level="four" text="Errored State" />
308
- <SimpleGrid columns={1} gap="grid.l">
309
- <Slider
310
- defaultValue={[25, 75]}
311
- helperText="Component helper text."
312
- id="range-error-slider"
313
- invalidText="Component error text :("
314
- labelText="Label"
315
- isRangeSlider
316
- isInvalid
317
- />
318
- <p>
319
- Note: The slider does not allow the starting thumb to go past the ending
320
- thumb. Likewise, it also does not allow the ending thumb to go below the
321
- starting thumb. However, it's possible to set incorrect values directly
322
- into both of the text inputs. For example, if you enter 80 in the first
323
- text input box and 20 in the second input box, it will automatically go
324
- into the invalid state. In the following example, the default values are
325
- already set to 80 and 20 *just* to showcase this error.
326
- </p>
327
- <Slider
328
- defaultValue={[80, 20]}
329
- helperText="Component helper text."
330
- id="range-error-slider2"
331
- invalidText="Component error text :("
332
- labelText="Label"
333
- isRangeSlider
334
- />
335
- </SimpleGrid>
336
- </DSProvider>
337
- </Canvas>
338
-
339
- <Canvas>
340
- <DSProvider>
341
- <Heading id="heading-range-required" level="four" text="Required State" />
342
- <Slider
343
- defaultValue={[25, 75]}
344
- helperText="Component helper text."
345
- id="range-required-slider"
346
- invalidText="Component error text :("
347
- labelText="Label"
348
- isRangeSlider
349
- isRequired
350
- />
351
- </DSProvider>
352
- </Canvas>
353
-
354
- <Canvas>
355
- <DSProvider>
356
- <Heading id="heading-range-disabled" level="four" text="Disabled State" />
357
- <Slider
358
- defaultValue={[25, 75]}
359
- helperText="Component helper text."
360
- id="single-disabled-slider"
361
- invalidText="Component error text :("
362
- labelText="Label"
363
- isRangeSlider
364
- isDisabled
365
- />
366
- </DSProvider>
367
- </Canvas>
368
-
369
- ### Single Slider Variants
370
-
371
- In the following example, the min/max values and the current value text
372
- input are hidden.
373
-
374
- <Canvas>
375
- <DSProvider>
376
- <Heading
377
- id="heading-single-labels"
378
- level="four"
379
- text="With and Without Component Labels"
380
- />
381
- <SimpleGrid columns={1} gap="grid.xl">
382
- <Slider
383
- defaultValue={50}
384
- helperText="Component helper text."
385
- id="single-slider-variant-1"
386
- labelText="Label"
387
- showValues={false}
388
- showBoxes={false}
389
- />
390
- <Slider
391
- defaultValue={50}
392
- helperText="Component helper text."
393
- id="single-slider-variant-2"
394
- labelText="Label"
395
- showValues={false}
396
- showBoxes={false}
397
- isRequired
398
- />
399
- <Slider
400
- defaultValue={50}
401
- helperText="Component helper text."
402
- id="single-slider-variant-3"
403
- labelText="Label"
404
- showValues={false}
405
- showBoxes={false}
406
- />
407
- <Slider
408
- defaultValue={50}
409
- helperText="Component helper text."
410
- id="single-slider-variant-4"
411
- labelText="Label"
412
- showHelperInvalidText={false}
413
- showValues={false}
414
- showBoxes={false}
415
- />
416
- <Slider
417
- defaultValue={50}
418
- helperText="Component helper text."
419
- id="single-slider-variant-5"
420
- labelText="Label"
421
- showValues={false}
422
- showBoxes={false}
423
- showLabel={false}
424
- />
425
- </SimpleGrid>
426
- </DSProvider>
427
- </Canvas>
428
-
429
- For the following examples, all labels are hidden.
430
-
431
- <Canvas>
432
- <DSProvider>
433
- <Heading
434
- id="heading-single-labels-inputs"
435
- level="four"
436
- text="With and Without Internal Inputs and Labels"
437
- />
438
- <SimpleGrid columns={1} gap="grid.xl">
439
- <Slider
440
- defaultValue={50}
441
- helperText="Component helper text."
442
- id="hidden-labels-1"
443
- labelText="Label"
444
- showHelperInvalidText={false}
445
- showLabel={false}
446
- />
447
- <Slider
448
- defaultValue={50}
449
- helperText="Component helper text."
450
- id="hidden-labels-2"
451
- labelText="Label"
452
- showHelperInvalidText={false}
453
- showLabel={false}
454
- showBoxes={false}
455
- />
456
- <Slider
457
- defaultValue={50}
458
- helperText="Component helper text."
459
- id="hidden-labels-3"
460
- labelText="Label"
461
- showHelperInvalidText={false}
462
- showLabel={false}
463
- showValues={false}
464
- />
465
- <Slider
466
- defaultValue={50}
467
- helperText="Component helper text."
468
- id="hidden-labels-4"
469
- labelText="Label"
470
- showHelperInvalidText={false}
471
- showLabel={false}
472
- showValues={false}
473
- showBoxes={false}
474
- />
475
- </SimpleGrid>
476
- </DSProvider>
477
- </Canvas>
478
-
479
- ### Range Slider with Adjusted Handles
480
-
481
- In the following examples, all the labels are hidden.
482
-
483
- <Canvas>
484
- <DSProvider>
485
- <SimpleGrid columns={1} gap="grid.xl">
486
- <Slider
487
- defaultValue={[15, 75]}
488
- helperText="Component helper text."
489
- id="range-slider-1"
490
- isRangeSlider
491
- labelText="Label"
492
- showHelperInvalidText={false}
493
- showLabel={false}
494
- />
495
- <Slider
496
- defaultValue={[15, 75]}
497
- helperText="Component helper text."
498
- id="range-slider-1"
499
- isRangeSlider
500
- labelText="Label"
501
- showBoxes={false}
502
- showHelperInvalidText={false}
503
- showLabel={false}
504
- />
505
- <Slider
506
- defaultValue={[15, 75]}
507
- helperText="Component helper text."
508
- id="range-slider-3"
509
- isRangeSlider
510
- labelText="Label"
511
- showHelperInvalidText={false}
512
- showLabel={false}
513
- showValues={false}
514
- />
515
- <Slider
516
- defaultValue={[15, 75]}
517
- helperText="Component helper text."
518
- id="range-slider-4"
519
- isRangeSlider
520
- labelText="Label"
521
- showBoxes={false}
522
- showHelperInvalidText={false}
523
- showLabel={false}
524
- showValues={false}
525
- />
526
- </SimpleGrid>
527
- </DSProvider>
528
- </Canvas>
529
-
530
- ## Get Input Values
531
-
532
- Pass a callback function to the `onChange` prop to get the current number value
533
- of the `Slider` component or an array of two numbers when it is a range slider.
534
- Internally, the `Slider` component handles the state of the current selected
535
- value or values. Once the value(s) is updated, the `onChange` callback will be
536
- called and the values will be passed. If no `onChange` callback is provided,
537
- you won't be able to get the updated value(s) of the `Slider` component.
538
-
539
- ### Single Slider Value
540
-
541
- Open up the browser's developer console to see the value of the `Slider`
542
- after updating it.
543
-
544
- ```tsx
545
- // Typescript example:
546
- function SliderExample() {
547
- const onChange = (newValue: number) => {
548
- console.log(`The single Slider updated value is: ${newValue}`);
549
- };
550
- return (
551
- <Slider
552
- helperText="Component helper text."
553
- id="slider"
554
- labelText="Label"
555
- onChange={onChange}
556
- />
557
- );
558
- }
559
- ```
560
-
561
- export function SliderExample() {
562
- const onChange = (newValue) => {
563
- console.log(`The single Slider updated value is: ${newValue}`);
564
- };
565
- return (
566
- <Slider
567
- helperText="Component helper text."
568
- id="slider"
569
- labelText="Label"
570
- onChange={onChange}
571
- />
572
- );
573
- }
574
-
575
- <Canvas>
576
- <DSProvider>
577
- <SliderExample />
578
- </DSProvider>
579
- </Canvas>
580
-
581
- ### Range Slider Values
582
-
583
- Open up the browser's developer console to see the values of the `Slider`
584
- after updating it in the `isRangeSlider` state.
585
-
586
- ```tsx
587
- // Typescript example:
588
- function RangeSliderExample() {
589
- const onChange = (newValue: number[]) => {
590
- const [start, end] = newValue;
591
- console.log(`The Range Slider updated start value is: ${start}`);
592
- console.log(`The Range Slider updated end value is: ${end}`);
593
- };
594
- return (
595
- <Slider
596
- helperText="Component helper text."
597
- id="range-slider"
598
- isRangeSlider
599
- labelText="Label"
600
- onChange={onChange}
601
- />
602
- );
603
- }
604
- ```
605
-
606
- export function RangeSliderExample() {
607
- const onChange = (newValue) => {
608
- const [start, end] = newValue;
609
- console.log(`The Range Slider updated start value is: ${start}`);
610
- console.log(`The Range Slider updated end value is: ${end}`);
611
- };
612
- return (
613
- <Slider
614
- defaultValue={[15, 75]}
615
- helperText="Component helper text."
616
- id="range-slider"
617
- isRangeSlider
618
- labelText="Label"
619
- onChange={onChange}
620
- />
621
- );
622
- }
623
-
624
- <Canvas>
625
- <DSProvider>
626
- <RangeSliderExample />
627
- </DSProvider>
628
- </Canvas>