@nypl/design-system-react-components 0.25.8 → 0.25.11

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 (282) hide show
  1. package/CHANGELOG.md +110 -1
  2. package/README.md +1 -1
  3. package/dist/components/Button/Button.d.ts +6 -6
  4. package/dist/components/Button/ButtonTypes.d.ts +0 -1
  5. package/dist/components/Card/Card.d.ts +6 -4
  6. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  7. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
  8. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
  9. package/dist/components/DatePicker/DatePicker.d.ts +4 -3
  10. package/dist/components/Fieldset/Fieldset.d.ts +1 -3
  11. package/dist/components/Form/Form.d.ts +15 -14
  12. package/dist/components/Form/FormTypes.d.ts +2 -2
  13. package/dist/components/Heading/Heading.d.ts +7 -3
  14. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  15. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  16. package/dist/components/HorizontalRule/HorizontalRule.d.ts +3 -3
  17. package/dist/components/Icons/Icon.d.ts +4 -4
  18. package/dist/components/Icons/IconSvgs.d.ts +0 -21
  19. package/dist/components/Icons/IconTypes.d.ts +0 -23
  20. package/dist/components/Image/Image.d.ts +11 -3
  21. package/dist/components/List/List.d.ts +1 -1
  22. package/dist/components/Logo/Logo.d.ts +28 -0
  23. package/dist/components/Logo/LogoSvgs.d.ts +34 -0
  24. package/dist/components/Logo/LogoTypes.d.ts +46 -0
  25. package/dist/components/Modal/Modal.d.ts +0 -4
  26. package/dist/components/Notification/Notification.d.ts +4 -2
  27. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  28. package/dist/components/Radio/Radio.d.ts +6 -5
  29. package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
  30. package/dist/components/SearchBar/SearchBar.d.ts +15 -7
  31. package/dist/components/Select/Select.d.ts +7 -2
  32. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  33. package/dist/components/Slider/Slider.d.ts +3 -2
  34. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  35. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  36. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  37. package/dist/components/Table/Table.d.ts +29 -0
  38. package/dist/components/Template/Template.d.ts +30 -6
  39. package/dist/components/Text/Text.d.ts +2 -2
  40. package/dist/components/TextInput/TextInput.d.ts +4 -3
  41. package/dist/components/Toggle/Toggle.d.ts +3 -2
  42. package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
  43. package/dist/design-system-react-components.cjs.development.js +6721 -5777
  44. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  45. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  46. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  47. package/dist/design-system-react-components.esm.js +6774 -5839
  48. package/dist/design-system-react-components.esm.js.map +1 -1
  49. package/dist/index.d.ts +10 -8
  50. package/dist/resources.scss +0 -2
  51. package/dist/styles.css +2 -2
  52. package/dist/theme/components/breadcrumb.d.ts +1 -1
  53. package/dist/theme/components/button.d.ts +0 -12
  54. package/dist/theme/components/card.d.ts +14 -2
  55. package/dist/theme/components/customTable.d.ts +56 -0
  56. package/dist/theme/components/fieldset.d.ts +2 -2
  57. package/dist/theme/components/global.d.ts +1 -1
  58. package/dist/theme/components/heading.d.ts +4 -0
  59. package/dist/theme/components/label.d.ts +1 -1
  60. package/dist/theme/components/link.d.ts +14 -1
  61. package/dist/theme/components/list.d.ts +0 -2
  62. package/dist/theme/components/logo.d.ts +4 -0
  63. package/dist/theme/components/notification.d.ts +13 -4
  64. package/dist/theme/components/searchBar.d.ts +9 -11
  65. package/dist/theme/components/select.d.ts +1 -0
  66. package/dist/theme/components/structuredContent.d.ts +33 -0
  67. package/dist/theme/components/template.d.ts +10 -10
  68. package/dist/theme/components/textInput.d.ts +4 -0
  69. package/dist/theme/components/toggle.d.ts +8 -5
  70. package/dist/utils/utils.d.ts +10 -0
  71. package/package.json +40 -37
  72. package/src/__tests__/utils/utils.test.ts +23 -1
  73. package/src/components/Accordion/Accordion.stories.mdx +15 -13
  74. package/src/components/Accordion/Accordion.test.tsx +45 -1
  75. package/src/components/Accordion/Accordion.tsx +20 -8
  76. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
  77. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  78. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  79. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  80. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
  81. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +15 -0
  82. package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
  83. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +5 -5
  84. package/src/components/Button/Button.stories.mdx +93 -48
  85. package/src/components/Button/Button.test.tsx +0 -12
  86. package/src/components/Button/Button.tsx +7 -7
  87. package/src/components/Button/ButtonTypes.tsx +0 -1
  88. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  89. package/src/components/Card/Card.stories.mdx +186 -71
  90. package/src/components/Card/Card.test.tsx +45 -22
  91. package/src/components/Card/Card.tsx +21 -6
  92. package/src/components/Card/__snapshots__/Card.test.tsx.snap +9 -3
  93. package/src/components/Chakra/Box.stories.mdx +3 -3
  94. package/src/components/Chakra/Center.stories.mdx +5 -5
  95. package/src/components/Chakra/Flex.stories.mdx +113 -0
  96. package/src/components/Chakra/Grid.stories.mdx +3 -3
  97. package/src/components/Chakra/Stack.stories.mdx +2 -2
  98. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  99. package/src/components/Checkbox/Checkbox.tsx +13 -8
  100. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  101. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  102. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  103. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  104. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  105. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  106. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  107. package/src/components/DatePicker/DatePicker.test.tsx +6 -6
  108. package/src/components/DatePicker/DatePicker.tsx +17 -11
  109. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +50 -24
  110. package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
  111. package/src/components/Fieldset/Fieldset.tsx +2 -4
  112. package/src/components/Form/Form.stories.mdx +75 -49
  113. package/src/components/Form/Form.test.tsx +92 -3
  114. package/src/components/Form/Form.tsx +28 -23
  115. package/src/components/Form/FormTypes.tsx +2 -2
  116. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
  117. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  118. package/src/components/Heading/Heading.stories.mdx +59 -23
  119. package/src/components/Heading/Heading.test.tsx +82 -18
  120. package/src/components/Heading/Heading.tsx +31 -31
  121. package/src/components/Heading/HeadingTypes.tsx +6 -6
  122. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  123. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  124. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  125. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  126. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  127. package/src/components/Hero/Hero.stories.mdx +72 -53
  128. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
  129. package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
  130. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
  131. package/src/components/Icons/Icon.stories.mdx +78 -77
  132. package/src/components/Icons/Icon.test.tsx +1 -1
  133. package/src/components/Icons/Icon.tsx +5 -6
  134. package/src/components/Icons/IconSvgs.tsx +0 -42
  135. package/src/components/Icons/IconTypes.tsx +0 -24
  136. package/src/components/Image/Image.stories.mdx +66 -18
  137. package/src/components/Image/Image.tsx +21 -10
  138. package/src/components/Label/Label.stories.mdx +20 -19
  139. package/src/components/Link/Link.stories.mdx +102 -51
  140. package/src/components/Link/Link.test.tsx +38 -8
  141. package/src/components/Link/Link.tsx +19 -12
  142. package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
  143. package/src/components/List/List.stories.mdx +60 -29
  144. package/src/components/List/List.test.tsx +1 -1
  145. package/src/components/List/List.tsx +2 -2
  146. package/src/components/List/__snapshots__/List.test.tsx.snap +3 -1
  147. package/src/components/Logo/Logo.stories.mdx +222 -0
  148. package/src/components/Logo/Logo.test.tsx +98 -0
  149. package/src/components/Logo/Logo.tsx +97 -0
  150. package/src/components/Logo/LogoSvgs.tsx +66 -0
  151. package/src/components/Logo/LogoTypes.tsx +48 -0
  152. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  153. package/src/components/Modal/Modal.stories.mdx +20 -5
  154. package/src/components/Modal/Modal.tsx +2 -8
  155. package/src/components/Notification/Notification.stories.mdx +128 -38
  156. package/src/components/Notification/Notification.test.tsx +49 -1
  157. package/src/components/Notification/Notification.tsx +25 -12
  158. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
  159. package/src/components/Pagination/Pagination.stories.mdx +18 -7
  160. package/src/components/Pagination/Pagination.tsx +3 -3
  161. package/src/components/Placeholder/Placeholder.tsx +7 -14
  162. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
  163. package/src/components/Radio/Radio.stories.mdx +39 -19
  164. package/src/components/Radio/Radio.tsx +13 -9
  165. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
  166. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  167. package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
  168. package/src/components/RadioGroup/RadioGroup.tsx +97 -94
  169. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
  170. package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
  171. package/src/components/SearchBar/SearchBar.stories.mdx +115 -33
  172. package/src/components/SearchBar/SearchBar.tsx +72 -51
  173. package/src/components/Select/Select.stories.mdx +48 -14
  174. package/src/components/Select/Select.test.tsx +89 -0
  175. package/src/components/Select/Select.tsx +27 -12
  176. package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
  177. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  178. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  179. package/src/components/Slider/Slider.stories.mdx +72 -22
  180. package/src/components/Slider/Slider.tsx +15 -10
  181. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
  182. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  183. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  184. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  185. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  186. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  187. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  188. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  189. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  190. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  191. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  192. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  193. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  194. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  195. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  196. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  197. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  198. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  199. package/src/components/Table/Table.stories.mdx +165 -0
  200. package/src/components/Table/Table.test.tsx +137 -0
  201. package/src/components/Table/Table.tsx +126 -0
  202. package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
  203. package/src/components/Tabs/Tabs.stories.mdx +20 -14
  204. package/src/components/Tabs/Tabs.test.tsx +21 -5
  205. package/src/components/Tabs/Tabs.tsx +35 -20
  206. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
  207. package/src/components/Template/Template.stories.mdx +132 -48
  208. package/src/components/Template/Template.test.tsx +128 -6
  209. package/src/components/Template/Template.tsx +93 -13
  210. package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
  211. package/src/components/Text/Text.stories.mdx +33 -11
  212. package/src/components/Text/Text.tsx +2 -2
  213. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  214. package/src/components/TextInput/TextInput.test.tsx +96 -0
  215. package/src/components/TextInput/TextInput.tsx +12 -8
  216. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  217. package/src/components/Toggle/Toggle.stories.mdx +33 -9
  218. package/src/components/Toggle/Toggle.tsx +14 -9
  219. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +4 -4
  220. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
  221. package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
  222. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
  223. package/src/docs/Chakra.stories.mdx +5 -8
  224. package/src/docs/Intro.stories.mdx +2 -2
  225. package/src/index.ts +13 -6
  226. package/src/styles/base/_03-base.scss +1 -1
  227. package/src/styles/base/_place-holder.scss +7 -7
  228. package/src/styles.scss +1 -5
  229. package/src/theme/components/breadcrumb.ts +4 -4
  230. package/src/theme/components/button.ts +5 -12
  231. package/src/theme/components/card.ts +5 -2
  232. package/src/theme/components/checkbox.ts +1 -1
  233. package/src/theme/components/customTable.ts +63 -0
  234. package/src/theme/components/datePicker.ts +1 -1
  235. package/src/theme/components/global.ts +7 -7
  236. package/src/theme/components/heading.ts +13 -11
  237. package/src/theme/components/helperErrorText.ts +1 -1
  238. package/src/theme/components/image.ts +1 -1
  239. package/src/theme/components/link.ts +17 -5
  240. package/src/theme/components/list.ts +3 -5
  241. package/src/theme/components/logo.ts +54 -0
  242. package/src/theme/components/notification.ts +19 -9
  243. package/src/theme/components/searchBar.ts +11 -13
  244. package/src/theme/components/select.ts +1 -0
  245. package/src/theme/components/statusBadge.ts +1 -1
  246. package/src/theme/components/structuredContent.ts +74 -0
  247. package/src/theme/components/template.ts +10 -10
  248. package/src/theme/components/text.ts +6 -6
  249. package/src/theme/components/textInput.ts +2 -0
  250. package/src/theme/components/toggle.ts +10 -6
  251. package/src/theme/components/videoPlayer.ts +0 -2
  252. package/src/theme/foundations/global.ts +2 -2
  253. package/src/theme/foundations/typography.ts +84 -12
  254. package/src/theme/index.ts +6 -0
  255. package/src/utils/componentCategories.ts +2 -1
  256. package/src/utils/utils.ts +17 -0
  257. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  258. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  259. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  260. package/dist/components/Input/Input.d.ts +0 -36
  261. package/dist/components/Input/Input.stories.d.ts +0 -29
  262. package/dist/components/Input/InputTypes.d.ts +0 -6
  263. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  264. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  265. package/dist/helpers/getCSSVariable.d.ts +0 -1
  266. package/dist/interfaces.d.ts +0 -3
  267. package/dist/utils/bem.d.ts +0 -1
  268. package/src/__tests__/utils/bem.test.ts +0 -37
  269. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  270. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  271. package/src/components/CardEdition/CardEdition.tsx +0 -60
  272. package/src/components/CardEdition/_CardEdition.scss +0 -137
  273. package/src/components/Input/Input.stories.tsx +0 -133
  274. package/src/components/Input/Input.test.tsx +0 -266
  275. package/src/components/Input/Input.tsx +0 -81
  276. package/src/components/Input/InputTypes.tsx +0 -8
  277. package/src/components/Input/_Input.scss +0 -78
  278. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  279. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  280. package/src/helpers/getCSSVariable.tsx +0 -5
  281. package/src/interfaces.ts +0 -3
  282. package/src/utils/bem.ts +0 -44
@@ -21,24 +21,24 @@ declare const _default: {
21
21
  baseStyle: {
22
22
  opacity: number;
23
23
  track: {
24
- p: string;
25
24
  border: string;
26
25
  borderColor: string;
26
+ p: string;
27
27
  _checked: {
28
- borderColor: string;
29
28
  bg: string;
29
+ borderColor: string;
30
30
  opacity: number;
31
31
  };
32
32
  _invalid: {
33
- borderColor: string;
34
33
  bg: string;
34
+ borderColor: string;
35
35
  "> span": {
36
36
  bg: string;
37
37
  };
38
38
  };
39
39
  _disabled: {
40
- borderColor: string;
41
40
  bg: string;
41
+ borderColor: string;
42
42
  _checked: {
43
43
  opacity: number;
44
44
  };
@@ -51,8 +51,11 @@ declare const _default: {
51
51
  };
52
52
  };
53
53
  label: {
54
- fontSize: number;
54
+ fontSize: string;
55
55
  marginLeft: string;
56
+ _disabled: {
57
+ fontStyle: string;
58
+ };
56
59
  };
57
60
  thumb: {
58
61
  _disabled: {
@@ -10,3 +10,13 @@ export declare const range: (start: number, stop: number, step?: number) => numb
10
10
  * value, if provided, will be used.
11
11
  */
12
12
  export declare const getVariant: (variant: any, collection: any, fallback?: any) => any;
13
+ /**
14
+ * Given an enum object and its name, this will return (1) an array `options`
15
+ * of all values with the enum name as the prefix, and (2) a function that
16
+ * returns the correct enum value given a string from the `options` array.
17
+ * @NOTE this is only used for Storybook documentation.
18
+ */
19
+ export declare const getStorybookEnumValues: (enumObject: any, name: any) => {
20
+ options: string[];
21
+ getValue: (key: any) => any;
22
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nypl/design-system-react-components",
3
- "version": "0.25.8",
3
+ "version": "0.25.11",
4
4
  "description": "Design System React Components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -28,7 +28,7 @@
28
28
  "test:watch": "tsdx test - --watch",
29
29
  "test:generate-output": "tsdx test --json --outputFile=.jest-test-results.json || true",
30
30
  "lint": "tsdx lint",
31
- "prepare": "npm run build",
31
+ "prepare": "npm run build && husky install",
32
32
  "size": "size-limit",
33
33
  "analyze": "size-limit --why",
34
34
  "generate-sass-resources": "gulp",
@@ -36,26 +36,9 @@
36
36
  "build-storybook": "npm run prebuild:storybook && build-storybook -c .storybook -o ./storybook-static",
37
37
  "prebuild:storybook": "npm run test:generate-output"
38
38
  },
39
- "dependencies": {
40
- "@chakra-ui/react": "1.7.1",
41
- "@chakra-ui/system": "1.8.1",
42
- "@emotion/react": "11.4.1",
43
- "@emotion/styled": "11.3.0",
44
- "framer-motion": "4.1.17",
45
- "he": "1.2.0",
46
- "react-datepicker": "4.1.1",
47
- "system-font-css": "2.0.2",
48
- "typescript": "4.3.5",
49
- "uuid": "8.3.2"
50
- },
51
- "peerDependencies": {
52
- "react": ">=16.13.0",
53
- "react-dom": ">=16.13.0"
54
- },
55
- "husky": {
56
- "hooks": {
57
- "pre-commit": "pretty-quick --staged"
58
- }
39
+ "lint-staged": {
40
+ "*.{jsx,ts,tsx}": "eslint src --ext=jsx,ts,tsx --cache --fix",
41
+ "*.{js,jsx,ts,tsx,css,md}": "prettier --write"
59
42
  },
60
43
  "prettier": {
61
44
  "printWidth": 80,
@@ -73,19 +56,40 @@
73
56
  "limit": "300 KB"
74
57
  }
75
58
  ],
59
+ "dependencies": {
60
+ "@chakra-ui/react": ">=1.7.1",
61
+ "@chakra-ui/system": ">=1.8.1",
62
+ "@emotion/react": "11.4.1",
63
+ "@emotion/styled": "11.3.0",
64
+ "framer-motion": "4.1.17",
65
+ "he": "1.2.0",
66
+ "react-datepicker": "4.1.1",
67
+ "system-font-css": "2.0.2",
68
+ "typescript": "4.3.5",
69
+ "uuid": "8.3.2"
70
+ },
71
+ "peerDependencies": {
72
+ "@chakra-ui/react": ">=1.7.1",
73
+ "@chakra-ui/system": ">=1.8.1",
74
+ "@emotion/react": ">=11.4.1",
75
+ "@emotion/styled": ">=11.3.0",
76
+ "framer-motion": ">=4.1.17",
77
+ "react": ">=16.13.0",
78
+ "react-dom": ">=16.13.0"
79
+ },
76
80
  "devDependencies": {
77
81
  "@babel/core": "7.14.6",
78
82
  "@mdx-js/react": "1.6.22",
79
83
  "@size-limit/preset-small-lib": "5.0.1",
80
- "@storybook/addon-a11y": "6.4.8",
81
- "@storybook/addon-actions": "6.4.8",
82
- "@storybook/addon-docs": "6.4.8",
83
- "@storybook/addon-essentials": "6.4.8",
84
- "@storybook/addon-jest": "6.4.8",
85
- "@storybook/addon-links": "6.4.8",
84
+ "@storybook/addon-a11y": "6.4.19",
85
+ "@storybook/addon-actions": "6.4.19",
86
+ "@storybook/addon-docs": "6.4.19",
87
+ "@storybook/addon-essentials": "6.4.19",
88
+ "@storybook/addon-jest": "6.4.19",
89
+ "@storybook/addon-links": "6.4.19",
86
90
  "@storybook/addon-queryparams": "6.2.9",
87
- "@storybook/addons": "6.4.8",
88
- "@storybook/react": "6.4.8",
91
+ "@storybook/addons": "6.4.19",
92
+ "@storybook/react": "6.4.19",
89
93
  "@svgr/rollup": "5.5.0",
90
94
  "@svgr/webpack": "5.5.0",
91
95
  "@testing-library/jest-dom": "5.14.1",
@@ -100,7 +104,7 @@
100
104
  "@types/testing-library__jest-dom": "5.14.1",
101
105
  "@typescript-eslint/eslint-plugin": "4.33.0",
102
106
  "@typescript-eslint/parser": "4.33.0",
103
- "autoprefixer": "9.8.6",
107
+ "autoprefixer": "9.8.8",
104
108
  "babel-loader": "8.2.2",
105
109
  "breakpoint-sass": "2.7.1",
106
110
  "css-loader": "5.2.7",
@@ -109,19 +113,18 @@
109
113
  "eslint-config-react-app": "6.0.0",
110
114
  "eslint-plugin-flowtype": "5.8.2",
111
115
  "eslint-plugin-react-hooks": "4.2.0",
116
+ "eslint-plugin-storybook": "^0.5.6",
112
117
  "gulp": "4.0.2",
113
- "gulp-scss-combine": "1.0.0",
114
- "husky": "4.2.5",
118
+ "gulp-concat": "^2.6.1",
119
+ "husky": "^7.0.4",
115
120
  "import-glob-loader": "1.1.0",
116
121
  "jest": "27.3.1",
117
122
  "jest-axe": "5.0.1",
118
123
  "jsdom": "15.2.1",
119
- "node-sass": "4.14.1",
124
+ "lint-staged": "10.5.4",
120
125
  "node-sass-glob-importer": "5.3.2",
121
126
  "normalize.css": "8.0.1",
122
- "postcss": "8.3.6",
123
127
  "prettier": "2.4.1",
124
- "pretty-quick": "3.1.1",
125
128
  "react": "16.14.0",
126
129
  "react-autosuggest": "10.0.2",
127
130
  "react-docgen-typescript-loader": "3.1.0",
@@ -134,7 +137,7 @@
134
137
  "sass-loader": "10.0.0",
135
138
  "semantic-release-slack-bot": "2.1.0",
136
139
  "size-limit": "5.0.1",
137
- "storybook-addon-designs": "6.2.0",
140
+ "storybook-addon-designs": "6.2.1",
138
141
  "style-loader": "2.0.0",
139
142
  "ts-jest": "27.0.4",
140
143
  "tsdx": "0.14.1",
@@ -1,4 +1,5 @@
1
- import { range } from "../../utils/utils";
1
+ import { getStorybookEnumValues, range } from "../../utils/utils";
2
+ import { ButtonTypes } from "../../components/Button/ButtonTypes";
2
3
 
3
4
  describe("range", () => {
4
5
  it("returns an array of values not including the stop argument", () => {
@@ -16,3 +17,24 @@ describe("range", () => {
16
17
  expect(range(2, 20, 5)).toEqual([2, 7, 12, 17]);
17
18
  });
18
19
  });
20
+
21
+ describe("getStorybookEnumValues", () => {
22
+ const enumValues = getStorybookEnumValues(ButtonTypes, "ButtonTypes");
23
+
24
+ it("returns an array of values from the enum passed", () => {
25
+ expect(enumValues.options).toEqual([
26
+ "ButtonTypes.Primary",
27
+ "ButtonTypes.Secondary",
28
+ "ButtonTypes.Callout",
29
+ "ButtonTypes.Pill",
30
+ "ButtonTypes.Link",
31
+ "ButtonTypes.NoBrand",
32
+ ]);
33
+ });
34
+
35
+ it("returns a function with the value of the argument passed", () => {
36
+ expect(enumValues.getValue("ButtonTypes.Primary")).toEqual("primary");
37
+ expect(enumValues.getValue("ButtonTypes.Callout")).toEqual("callout");
38
+ expect(enumValues.getValue("ButtonTypes.NoBrand")).toEqual("noBrand");
39
+ });
40
+ });
@@ -1,18 +1,18 @@
1
1
  import {
2
- Meta,
3
- Story,
4
2
  ArgsTable,
5
3
  Canvas,
6
4
  Description,
7
- } from "@storybook/addon-docs/blocks";
8
- import Accordion from "./Accordion";
5
+ Meta,
6
+ Story,
7
+ } from "@storybook/addon-docs";
8
+ import ReactDOMServer from "react-dom/server";
9
9
  import { withDesign } from "storybook-addon-designs";
10
+
11
+ import Accordion from "./Accordion";
10
12
  import Card, { CardHeading, CardContent } from "../Card/Card";
11
13
  import { CardLayouts } from "../Card/CardTypes";
12
- import { ImageRatios } from "../Image/ImageTypes";
13
14
  import { HeadingLevels } from "../Heading/HeadingTypes";
14
- import { Source } from "@storybook/addon-docs/blocks";
15
- import ReactDOMServer from "react-dom/server";
15
+ import { ImageRatios } from "../Image/ImageTypes";
16
16
  import { getCategory } from "../../utils/componentCategories";
17
17
 
18
18
  <Meta
@@ -27,8 +27,9 @@ import { getCategory } from "../../utils/componentCategories";
27
27
  jest: ["Accordion.test.tsx"],
28
28
  }}
29
29
  argTypes={{
30
- contentData: { table: { disable: true } },
31
- id: { table: { disable: true } },
30
+ contentData: { control: false },
31
+ id: { control: false },
32
+ isDefaultOpen: { table: { defaultValue: { summary: false } } },
32
33
  }}
33
34
  />
34
35
 
@@ -37,7 +38,7 @@ import { getCategory } from "../../utils/componentCategories";
37
38
  | Component Version | DS Version |
38
39
  | ----------------- | ---------- |
39
40
  | Added | `0.1.0` |
40
- | Latest | `0.25.1` |
41
+ | Latest | `0.25.10` |
41
42
 
42
43
  <Description of={Accordion} />
43
44
 
@@ -56,9 +57,8 @@ necessary icon, Chakra components, and styles.
56
57
 
57
58
  <Canvas withToolbar>
58
59
  <Story
59
- name="Basic"
60
+ name="Accordion with Controls"
60
61
  args={{
61
- isDefaultOpen: false,
62
62
  contentData: [
63
63
  {
64
64
  label: "Tom Nook",
@@ -82,6 +82,8 @@ necessary icon, Chakra components, and styles.
82
82
  ),
83
83
  },
84
84
  ],
85
+ id: "accordion-id",
86
+ isDefaultOpen: false,
85
87
  }}
86
88
  >
87
89
  {(args) => <Accordion {...args} />}
@@ -118,7 +120,7 @@ const contentData = [
118
120
  <Accordion contentData={contentData} />
119
121
  ```
120
122
 
121
- <ArgsTable story="Basic" />
123
+ <ArgsTable story="Accordion with Controls" />
122
124
 
123
125
  ## FAQ example
124
126
 
@@ -1,9 +1,14 @@
1
1
  import * as React from "react";
2
- import { render, screen } from "@testing-library/react";
3
2
  import { axe } from "jest-axe";
3
+ import { render, screen } from "@testing-library/react";
4
+ import renderer from "react-test-renderer";
4
5
  import userEvent from "@testing-library/user-event";
5
6
 
6
7
  import Accordion from "./Accordion";
8
+ import Card, { CardContent, CardHeading } from "../Card/Card";
9
+ import { CardLayouts } from "../Card/CardTypes";
10
+ import { HeadingLevels } from "../Heading/HeadingTypes";
11
+ import { ImageRatios } from "../Image/ImageTypes";
7
12
 
8
13
  describe("Accordion Accessibility", () => {
9
14
  it("passes axe accessibility test for one item", async () => {
@@ -150,4 +155,43 @@ describe("Accordion", () => {
150
155
  expect(accordion2).toHaveAttribute("aria-expanded", "true");
151
156
  expect(accordion3).toHaveAttribute("aria-expanded", "true");
152
157
  });
158
+
159
+ it("Renders the UI snapshot correctly", () => {
160
+ const contentData = [
161
+ {
162
+ label: "Gerry Kellman",
163
+ panel: (
164
+ <Card
165
+ center
166
+ id="card"
167
+ imageAlt="Alt text"
168
+ imageAspectRatio={ImageRatios.TwoByOne}
169
+ imageSrc={`https://cdn.onebauer.media/one/media/6176/76fd/405b/ab5f/f20f/2d52/gerri-1500-1.jpg?format=jpg&quality=80&width=850&ratio=1-1&resize=aspectfit`}
170
+ layout={CardLayouts.Row}
171
+ >
172
+ <CardHeading id="heading1" level={HeadingLevels.Four}>
173
+ Gerry Kellman
174
+ </CardHeading>
175
+ <CardContent>
176
+ Gerri is <b>one of Logan's most trusted confidantes</b>, one who
177
+ serves many roles within the company. She's one of the most
178
+ powerful people at Waystar Royco outside of the family itself.
179
+ </CardContent>
180
+ </Card>
181
+ ),
182
+ },
183
+ ];
184
+
185
+ const primary = renderer
186
+ .create(<Accordion contentData={contentData} id="accordian" />)
187
+ .toJSON();
188
+ const defaultOpen = renderer
189
+ .create(
190
+ <Accordion contentData={contentData} id="accordian" isDefaultOpen />
191
+ )
192
+ .toJSON();
193
+
194
+ expect(primary).toMatchSnapshot();
195
+ expect(defaultOpen).toMatchSnapshot();
196
+ });
153
197
  });
@@ -29,9 +29,15 @@ export interface AccordionProps {
29
29
  * Get the minus or plus icon depending on whether the accordion
30
30
  * is open or closed.
31
31
  */
32
- const getIcon = (isExpanded = false) => {
32
+ const getIcon = (isExpanded = false, index, id) => {
33
33
  const iconName = isExpanded ? IconNames.Minus : IconNames.Plus;
34
- return <Icon name={iconName} size={IconSizes.Small} />;
34
+ return (
35
+ <Icon
36
+ id={`accordion-${id}-icon-${index}`}
37
+ name={iconName}
38
+ size={IconSizes.Small}
39
+ />
40
+ );
35
41
  };
36
42
 
37
43
  /**
@@ -39,7 +45,7 @@ const getIcon = (isExpanded = false) => {
39
45
  * array. This automatically creates the `AccordionButton` and `AccordionPanel`
40
46
  * combination that is required for the Chakra `Accordion` component.
41
47
  */
42
- const getElementsFromContentData = (data = []) => {
48
+ const getElementsFromContentData = (data = [], id) => {
43
49
  // For FAQ-style multiple accordions, the button should be bigger.
44
50
  // Otherwise, use the default.
45
51
  const multiplePadding = data?.length > 1 ? 4 : null;
@@ -49,23 +55,29 @@ const getElementsFromContentData = (data = []) => {
49
55
  const panel =
50
56
  typeof content.panel === "string" ? (
51
57
  <AccordionPanel
58
+ id={`${id}-panel-${index}`}
52
59
  key={index}
53
60
  dangerouslySetInnerHTML={{ __html: content.panel }}
54
61
  />
55
62
  ) : (
56
- <AccordionPanel key={index}>{content.panel}</AccordionPanel>
63
+ <AccordionPanel id={`${id}-panel-${index}`} key={index}>
64
+ {content.panel}
65
+ </AccordionPanel>
57
66
  );
58
67
 
59
68
  return (
60
- <AccordionItem key={index}>
69
+ <AccordionItem id={`${id}-item-${index}`} key={index}>
61
70
  {/* Get the current state to render the correct icon. */}
62
71
  {({ isExpanded }) => (
63
72
  <>
64
- <AccordionButton padding={multiplePadding}>
73
+ <AccordionButton
74
+ id={`${id}-button-${index}`}
75
+ padding={multiplePadding}
76
+ >
65
77
  <Box flex="1" textAlign="left">
66
78
  {content.label}
67
79
  </Box>
68
- {getIcon(isExpanded)}
80
+ {getIcon(isExpanded, index, id)}
69
81
  </AccordionButton>
70
82
  {panel}
71
83
  </>
@@ -86,7 +98,7 @@ function Accordion(props: React.PropsWithChildren<AccordionProps>) {
86
98
  const openFirstAccordion = isDefaultOpen ? 0 : undefined;
87
99
  return (
88
100
  <ChakraAccordion id={id} defaultIndex={[openFirstAccordion]} allowMultiple>
89
- {getElementsFromContentData(contentData)}
101
+ {getElementsFromContentData(contentData, id)}
90
102
  </ChakraAccordion>
91
103
  );
92
104
  }
@@ -0,0 +1,243 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Accordion Renders the UI snapshot correctly 1`] = `
4
+ <div
5
+ className="chakra-accordion css-0"
6
+ id="accordian"
7
+ >
8
+ <div
9
+ className="chakra-accordion__item css-1fsnuue"
10
+ >
11
+ <button
12
+ aria-controls="accordion-panel-accordian-item-0"
13
+ aria-expanded={false}
14
+ className="chakra-accordion__button css-ubg1nw"
15
+ disabled={false}
16
+ id="accordion-button-accordian-item-0"
17
+ onClick={[Function]}
18
+ onFocus={[Function]}
19
+ onKeyDown={[Function]}
20
+ type="button"
21
+ >
22
+ <div
23
+ className="css-1eziwv"
24
+ >
25
+ Gerry Kellman
26
+ </div>
27
+ <svg
28
+ aria-hidden={true}
29
+ className="chakra-icon css-onkibi"
30
+ focusable={false}
31
+ id="accordion-accordian-icon-0"
32
+ role="img"
33
+ title="plus icon"
34
+ viewBox="0 0 24 24"
35
+ >
36
+ <g
37
+ stroke="currentColor"
38
+ strokeWidth="1.5"
39
+ >
40
+ <path
41
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
42
+ fill="none"
43
+ strokeLinecap="round"
44
+ />
45
+ <path
46
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
47
+ fill="currentColor"
48
+ strokeLinecap="round"
49
+ />
50
+ <circle
51
+ cx="12"
52
+ cy="12"
53
+ fill="none"
54
+ r="11.25"
55
+ strokeMiterlimit="10"
56
+ />
57
+ </g>
58
+ </svg>
59
+ </button>
60
+ <div
61
+ className="chakra-collapse"
62
+ style={
63
+ Object {
64
+ "display": "none",
65
+ "height": "0px",
66
+ "opacity": 0,
67
+ "overflow": "hidden",
68
+ }
69
+ }
70
+ >
71
+ <div
72
+ aria-labelledby="accordion-button-accordian-item-0"
73
+ className="chakra-accordion__panel css-0"
74
+ id="accordion-panel-accordian-item-0"
75
+ role="region"
76
+ >
77
+ <div
78
+ className="css-0"
79
+ id="card"
80
+ >
81
+ <div
82
+ className="css-0"
83
+ >
84
+ <div
85
+ className="the-wrap css-0"
86
+ >
87
+ <div
88
+ className="the-crop css-0"
89
+ >
90
+ <img
91
+ alt="Alt text"
92
+ className="css-0"
93
+ src="https://cdn.onebauer.media/one/media/6176/76fd/405b/ab5f/f20f/2d52/gerri-1500-1.jpg?format=jpg&quality=80&width=850&ratio=1-1&resize=aspectfit"
94
+ />
95
+ </div>
96
+ </div>
97
+ </div>
98
+ <div
99
+ className="card-body css-0"
100
+ >
101
+ <h4
102
+ className="chakra-heading css-0"
103
+ id="heading1"
104
+ >
105
+ Gerry Kellman
106
+ </h4>
107
+ <div
108
+ className="css-0"
109
+ >
110
+ Gerri is
111
+ <b>
112
+ one of Logan's most trusted confidantes
113
+ </b>
114
+ , one who serves many roles within the company. She's one of the most powerful people at Waystar Royco outside of the family itself.
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ `;
123
+
124
+ exports[`Accordion Renders the UI snapshot correctly 2`] = `
125
+ <div
126
+ className="chakra-accordion css-0"
127
+ id="accordian"
128
+ >
129
+ <div
130
+ className="chakra-accordion__item css-1fsnuue"
131
+ >
132
+ <button
133
+ aria-controls="accordion-panel-accordian-item-0"
134
+ aria-expanded={false}
135
+ className="chakra-accordion__button css-ubg1nw"
136
+ disabled={false}
137
+ id="accordion-button-accordian-item-0"
138
+ onClick={[Function]}
139
+ onFocus={[Function]}
140
+ onKeyDown={[Function]}
141
+ type="button"
142
+ >
143
+ <div
144
+ className="css-1eziwv"
145
+ >
146
+ Gerry Kellman
147
+ </div>
148
+ <svg
149
+ aria-hidden={true}
150
+ className="chakra-icon css-onkibi"
151
+ focusable={false}
152
+ id="accordion-accordian-icon-0"
153
+ role="img"
154
+ title="plus icon"
155
+ viewBox="0 0 24 24"
156
+ >
157
+ <g
158
+ stroke="currentColor"
159
+ strokeWidth="1.5"
160
+ >
161
+ <path
162
+ d="M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"
163
+ fill="none"
164
+ strokeLinecap="round"
165
+ />
166
+ <path
167
+ d="M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"
168
+ fill="currentColor"
169
+ strokeLinecap="round"
170
+ />
171
+ <circle
172
+ cx="12"
173
+ cy="12"
174
+ fill="none"
175
+ r="11.25"
176
+ strokeMiterlimit="10"
177
+ />
178
+ </g>
179
+ </svg>
180
+ </button>
181
+ <div
182
+ className="chakra-collapse"
183
+ style={
184
+ Object {
185
+ "display": "none",
186
+ "height": "0px",
187
+ "opacity": 0,
188
+ "overflow": "hidden",
189
+ }
190
+ }
191
+ >
192
+ <div
193
+ aria-labelledby="accordion-button-accordian-item-0"
194
+ className="chakra-accordion__panel css-0"
195
+ id="accordion-panel-accordian-item-0"
196
+ role="region"
197
+ >
198
+ <div
199
+ className="css-0"
200
+ id="card"
201
+ >
202
+ <div
203
+ className="css-0"
204
+ >
205
+ <div
206
+ className="the-wrap css-0"
207
+ >
208
+ <div
209
+ className="the-crop css-0"
210
+ >
211
+ <img
212
+ alt="Alt text"
213
+ className="css-0"
214
+ src="https://cdn.onebauer.media/one/media/6176/76fd/405b/ab5f/f20f/2d52/gerri-1500-1.jpg?format=jpg&quality=80&width=850&ratio=1-1&resize=aspectfit"
215
+ />
216
+ </div>
217
+ </div>
218
+ </div>
219
+ <div
220
+ className="card-body css-0"
221
+ >
222
+ <h4
223
+ className="chakra-heading css-0"
224
+ id="heading1"
225
+ >
226
+ Gerry Kellman
227
+ </h4>
228
+ <div
229
+ className="css-0"
230
+ >
231
+ Gerri is
232
+ <b>
233
+ one of Logan's most trusted confidantes
234
+ </b>
235
+ , one who serves many roles within the company. She's one of the most powerful people at Waystar Royco outside of the family itself.
236
+ </div>
237
+ </div>
238
+ </div>
239
+ </div>
240
+ </div>
241
+ </div>
242
+ </div>
243
+ `;
@@ -1,5 +1,6 @@
1
- import { Meta, Story, Canvas } from "@storybook/addon-docs/blocks";
1
+ import { Canvas, Meta, Story } from "@storybook/addon-docs";
2
2
  import Autosuggest from "react-autosuggest";
3
+
3
4
  import * as stories from "./Autosuggest.stories.tsx";
4
5
  import { getCategory } from "../../utils/componentCategories";
5
6