@nypl/design-system-react-components 0.25.7 → 0.25.10

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 (293) hide show
  1. package/CHANGELOG.md +119 -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 +1 -21
  19. package/dist/components/Icons/IconTypes.d.ts +1 -23
  20. package/dist/components/Image/Image.d.ts +11 -3
  21. package/dist/components/Image/ImageTypes.d.ts +3 -1
  22. package/dist/components/Link/LinkTypes.d.ts +1 -0
  23. package/dist/components/Logo/Logo.d.ts +28 -0
  24. package/dist/components/Logo/LogoSvgs.d.ts +18 -0
  25. package/dist/components/Logo/LogoTypes.d.ts +30 -0
  26. package/dist/components/Modal/Modal.d.ts +0 -4
  27. package/dist/components/Notification/Notification.d.ts +4 -2
  28. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  29. package/dist/components/Radio/Radio.d.ts +6 -5
  30. package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
  31. package/dist/components/SearchBar/SearchBar.d.ts +15 -7
  32. package/dist/components/Select/Select.d.ts +5 -2
  33. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  34. package/dist/components/Slider/Slider.d.ts +3 -2
  35. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  36. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  37. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  38. package/dist/components/Table/Table.d.ts +29 -0
  39. package/dist/components/Template/Template.d.ts +30 -6
  40. package/dist/components/Text/Text.d.ts +2 -2
  41. package/dist/components/TextInput/TextInput.d.ts +4 -3
  42. package/dist/components/Toggle/Toggle.d.ts +48 -0
  43. package/dist/components/Toggle/ToggleSizes.d.ts +4 -0
  44. package/dist/components/VideoPlayer/VideoPlayer.d.ts +17 -6
  45. package/dist/design-system-react-components.cjs.development.js +4698 -4405
  46. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  47. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  48. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  49. package/dist/design-system-react-components.esm.js +5862 -5573
  50. package/dist/design-system-react-components.esm.js.map +1 -1
  51. package/dist/index.d.ts +13 -8
  52. package/dist/resources.scss +0 -2
  53. package/dist/styles.css +2 -2
  54. package/dist/theme/components/breadcrumb.d.ts +1 -1
  55. package/dist/theme/components/button.d.ts +0 -12
  56. package/dist/theme/components/card.d.ts +14 -2
  57. package/dist/theme/components/customTable.d.ts +56 -0
  58. package/dist/theme/components/fieldset.d.ts +2 -2
  59. package/dist/theme/components/global.d.ts +1 -1
  60. package/dist/theme/components/heading.d.ts +4 -0
  61. package/dist/theme/components/label.d.ts +1 -1
  62. package/dist/theme/components/link.d.ts +14 -1
  63. package/dist/theme/components/list.d.ts +0 -2
  64. package/dist/theme/components/logo.d.ts +4 -0
  65. package/dist/theme/components/notification.d.ts +8 -4
  66. package/dist/theme/components/searchBar.d.ts +7 -13
  67. package/dist/theme/components/select.d.ts +1 -0
  68. package/dist/theme/components/structuredContent.d.ts +33 -0
  69. package/dist/theme/components/template.d.ts +10 -10
  70. package/dist/theme/components/textInput.d.ts +2 -0
  71. package/dist/theme/components/toggle.d.ts +71 -0
  72. package/dist/theme/foundations/spacing.d.ts +2 -0
  73. package/dist/utils/utils.d.ts +10 -0
  74. package/package.json +40 -37
  75. package/src/__tests__/utils/utils.test.ts +23 -1
  76. package/src/components/Accordion/Accordion.stories.mdx +16 -15
  77. package/src/components/Accordion/Accordion.test.tsx +45 -1
  78. package/src/components/Accordion/Accordion.tsx +20 -8
  79. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
  80. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  81. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  82. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  83. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
  84. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +25 -0
  85. package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
  86. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +103 -4
  87. package/src/components/Button/Button.stories.mdx +93 -48
  88. package/src/components/Button/Button.test.tsx +0 -12
  89. package/src/components/Button/Button.tsx +7 -8
  90. package/src/components/Button/ButtonTypes.tsx +0 -1
  91. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  92. package/src/components/Card/Card.stories.mdx +246 -64
  93. package/src/components/Card/Card.test.tsx +45 -22
  94. package/src/components/Card/Card.tsx +30 -14
  95. package/src/components/Card/__snapshots__/Card.test.tsx.snap +75 -37
  96. package/src/components/Chakra/Box.stories.mdx +3 -3
  97. package/src/components/Chakra/Center.stories.mdx +5 -5
  98. package/src/components/Chakra/Flex.stories.mdx +113 -0
  99. package/src/components/Chakra/Grid.stories.mdx +14 -17
  100. package/src/components/Chakra/Stack.stories.mdx +2 -2
  101. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  102. package/src/components/Checkbox/Checkbox.tsx +13 -8
  103. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  104. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  105. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  106. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  107. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  108. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  109. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  110. package/src/components/DatePicker/DatePicker.test.tsx +14 -12
  111. package/src/components/DatePicker/DatePicker.tsx +13 -10
  112. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +41 -22
  113. package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
  114. package/src/components/Fieldset/Fieldset.tsx +2 -4
  115. package/src/components/Form/Form.stories.mdx +75 -49
  116. package/src/components/Form/Form.test.tsx +92 -3
  117. package/src/components/Form/Form.tsx +28 -23
  118. package/src/components/Form/FormTypes.tsx +2 -2
  119. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
  120. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  121. package/src/components/Heading/Heading.stories.mdx +59 -23
  122. package/src/components/Heading/Heading.test.tsx +82 -18
  123. package/src/components/Heading/Heading.tsx +31 -31
  124. package/src/components/Heading/HeadingTypes.tsx +6 -6
  125. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  126. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  127. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  128. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  129. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  130. package/src/components/Hero/Hero.stories.mdx +72 -53
  131. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
  132. package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
  133. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
  134. package/src/components/Icons/Icon.stories.mdx +77 -75
  135. package/src/components/Icons/Icon.tsx +4 -5
  136. package/src/components/Icons/IconSvgs.tsx +2 -42
  137. package/src/components/Icons/IconTypes.tsx +1 -24
  138. package/src/components/Image/Image.stories.mdx +214 -104
  139. package/src/components/Image/Image.test.tsx +10 -0
  140. package/src/components/Image/Image.tsx +21 -10
  141. package/src/components/Image/ImageTypes.ts +2 -0
  142. package/src/components/Image/__snapshots__/Image.test.tsx.snap +24 -8
  143. package/src/components/Label/Label.stories.mdx +21 -20
  144. package/src/components/Link/Link.stories.mdx +103 -53
  145. package/src/components/Link/Link.test.tsx +108 -7
  146. package/src/components/Link/Link.tsx +58 -19
  147. package/src/components/Link/LinkTypes.tsx +1 -0
  148. package/src/components/Link/__snapshots__/Link.test.tsx.snap +261 -0
  149. package/src/components/List/List.stories.mdx +37 -25
  150. package/src/components/List/List.tsx +1 -1
  151. package/src/components/Logo/Logo.stories.mdx +220 -0
  152. package/src/components/Logo/Logo.test.tsx +98 -0
  153. package/src/components/Logo/Logo.tsx +97 -0
  154. package/src/components/Logo/LogoSvgs.tsx +34 -0
  155. package/src/components/Logo/LogoTypes.tsx +32 -0
  156. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  157. package/src/components/Modal/Modal.stories.mdx +20 -5
  158. package/src/components/Modal/Modal.tsx +2 -8
  159. package/src/components/Notification/Notification.stories.mdx +96 -40
  160. package/src/components/Notification/Notification.test.tsx +62 -16
  161. package/src/components/Notification/Notification.tsx +26 -9
  162. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +121 -0
  163. package/src/components/Pagination/Pagination.stories.mdx +19 -9
  164. package/src/components/Pagination/Pagination.tsx +3 -3
  165. package/src/components/Pagination/__snapshots__/Pagination.test.tsx.snap +42 -0
  166. package/src/components/Placeholder/Placeholder.tsx +7 -14
  167. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +74 -46
  168. package/src/components/Radio/Radio.stories.mdx +39 -19
  169. package/src/components/Radio/Radio.tsx +13 -9
  170. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
  171. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  172. package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
  173. package/src/components/RadioGroup/RadioGroup.tsx +97 -94
  174. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
  175. package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
  176. package/src/components/SearchBar/SearchBar.stories.mdx +116 -34
  177. package/src/components/SearchBar/SearchBar.tsx +70 -50
  178. package/src/components/Select/Select.stories.mdx +177 -66
  179. package/src/components/Select/Select.test.tsx +91 -2
  180. package/src/components/Select/Select.tsx +29 -13
  181. package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
  182. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  183. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  184. package/src/components/Slider/Slider.stories.mdx +74 -23
  185. package/src/components/Slider/Slider.test.tsx +35 -0
  186. package/src/components/Slider/Slider.tsx +22 -11
  187. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
  188. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  189. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  190. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  191. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  192. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  193. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  194. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  195. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  196. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  197. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  198. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  199. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  200. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  201. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  202. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  203. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  204. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  205. package/src/components/Table/Table.stories.mdx +165 -0
  206. package/src/components/Table/Table.test.tsx +137 -0
  207. package/src/components/Table/Table.tsx +126 -0
  208. package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
  209. package/src/components/Tabs/Tabs.stories.mdx +20 -14
  210. package/src/components/Tabs/Tabs.test.tsx +21 -5
  211. package/src/components/Tabs/Tabs.tsx +33 -18
  212. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
  213. package/src/components/Template/Template.stories.mdx +132 -49
  214. package/src/components/Template/Template.test.tsx +128 -6
  215. package/src/components/Template/Template.tsx +93 -13
  216. package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
  217. package/src/components/Text/Text.stories.mdx +33 -11
  218. package/src/components/Text/Text.tsx +2 -2
  219. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  220. package/src/components/TextInput/TextInput.test.tsx +96 -0
  221. package/src/components/TextInput/TextInput.tsx +12 -8
  222. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  223. package/src/components/Toggle/Toggle.stories.mdx +200 -0
  224. package/src/components/Toggle/Toggle.test.tsx +140 -0
  225. package/src/components/Toggle/Toggle.tsx +123 -0
  226. package/src/components/Toggle/ToggleSizes.tsx +4 -0
  227. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +255 -0
  228. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +96 -25
  229. package/src/components/VideoPlayer/VideoPlayer.test.tsx +103 -1
  230. package/src/components/VideoPlayer/VideoPlayer.tsx +72 -22
  231. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +57 -3
  232. package/src/docs/Chakra.stories.mdx +5 -8
  233. package/src/docs/Intro.stories.mdx +2 -2
  234. package/src/index.ts +19 -6
  235. package/src/styles/base/_03-base.scss +1 -1
  236. package/src/styles/base/_place-holder.scss +7 -7
  237. package/src/styles.scss +1 -5
  238. package/src/theme/components/breadcrumb.ts +5 -5
  239. package/src/theme/components/button.ts +5 -12
  240. package/src/theme/components/card.ts +9 -7
  241. package/src/theme/components/checkbox.ts +1 -1
  242. package/src/theme/components/customTable.ts +63 -0
  243. package/src/theme/components/datePicker.ts +1 -1
  244. package/src/theme/components/global.ts +7 -7
  245. package/src/theme/components/heading.ts +13 -11
  246. package/src/theme/components/helperErrorText.ts +1 -1
  247. package/src/theme/components/icon.ts +2 -2
  248. package/src/theme/components/image.ts +9 -1
  249. package/src/theme/components/link.ts +17 -5
  250. package/src/theme/components/list.ts +1 -3
  251. package/src/theme/components/logo.ts +54 -0
  252. package/src/theme/components/notification.ts +9 -7
  253. package/src/theme/components/searchBar.ts +7 -13
  254. package/src/theme/components/select.ts +1 -0
  255. package/src/theme/components/statusBadge.ts +1 -1
  256. package/src/theme/components/structuredContent.ts +54 -0
  257. package/src/theme/components/template.ts +10 -10
  258. package/src/theme/components/text.ts +6 -6
  259. package/src/theme/components/textInput.ts +1 -0
  260. package/src/theme/components/toggle.ts +69 -0
  261. package/src/theme/components/videoPlayer.ts +0 -2
  262. package/src/theme/foundations/global.ts +2 -2
  263. package/src/theme/foundations/spacing.ts +3 -0
  264. package/src/theme/foundations/typography.ts +84 -12
  265. package/src/theme/index.ts +8 -0
  266. package/src/utils/componentCategories.ts +5 -2
  267. package/src/utils/utils.ts +17 -0
  268. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  269. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  270. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  271. package/dist/components/Input/Input.d.ts +0 -36
  272. package/dist/components/Input/Input.stories.d.ts +0 -29
  273. package/dist/components/Input/InputTypes.d.ts +0 -6
  274. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  275. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  276. package/dist/helpers/getCSSVariable.d.ts +0 -1
  277. package/dist/interfaces.d.ts +0 -3
  278. package/dist/utils/bem.d.ts +0 -1
  279. package/src/__tests__/utils/bem.test.ts +0 -37
  280. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  281. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  282. package/src/components/CardEdition/CardEdition.tsx +0 -60
  283. package/src/components/CardEdition/_CardEdition.scss +0 -137
  284. package/src/components/Input/Input.stories.tsx +0 -133
  285. package/src/components/Input/Input.test.tsx +0 -266
  286. package/src/components/Input/Input.tsx +0 -81
  287. package/src/components/Input/InputTypes.tsx +0 -8
  288. package/src/components/Input/_Input.scss +0 -78
  289. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  290. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  291. package/src/helpers/getCSSVariable.tsx +0 -5
  292. package/src/interfaces.ts +0 -3
  293. package/src/utils/bem.ts +0 -44
@@ -0,0 +1,71 @@
1
+ declare const _default: {
2
+ Toggle: {
3
+ parts: string[];
4
+ baseStyle: {
5
+ label: {
6
+ display: string;
7
+ alignItems: string;
8
+ width: string;
9
+ };
10
+ helper: {
11
+ marginLeft: string;
12
+ marginTop: string;
13
+ marginBottom: string;
14
+ };
15
+ };
16
+ defaultProps: {
17
+ size: string;
18
+ };
19
+ };
20
+ Switch: {
21
+ baseStyle: {
22
+ opacity: number;
23
+ track: {
24
+ border: string;
25
+ borderColor: string;
26
+ p: string;
27
+ _checked: {
28
+ bg: string;
29
+ borderColor: string;
30
+ opacity: number;
31
+ };
32
+ _invalid: {
33
+ bg: string;
34
+ borderColor: string;
35
+ "> span": {
36
+ bg: string;
37
+ };
38
+ };
39
+ _disabled: {
40
+ bg: string;
41
+ borderColor: string;
42
+ _checked: {
43
+ opacity: number;
44
+ };
45
+ };
46
+ _focus: {
47
+ outline: string;
48
+ outlineColor: string;
49
+ outlineOffset: string;
50
+ zIndex: string;
51
+ };
52
+ };
53
+ label: {
54
+ fontSize: string;
55
+ marginLeft: string;
56
+ _disabled: {
57
+ fontStyle: string;
58
+ };
59
+ };
60
+ thumb: {
61
+ _disabled: {
62
+ bg: string;
63
+ };
64
+ };
65
+ };
66
+ defaultProps: {
67
+ colorScheme: string;
68
+ };
69
+ };
70
+ };
71
+ export default _default;
@@ -22,6 +22,7 @@
22
22
  *
23
23
  * Chakra Number Value | Chakra Name value | DS Variable
24
24
  * ------------------- | ----------------- | -----------------
25
+ * 0.5 | xxxs | --nypl-space-xxxs
25
26
  * 1 | xxs | --nypl-space-xxs
26
27
  * 2 | xs | --nypl-space-xs
27
28
  * 4 | s | --nypl-space-s
@@ -34,6 +35,7 @@
34
35
  export declare const spacing: {
35
36
  px: string;
36
37
  0: string;
38
+ xxxs: string;
37
39
  0.5: string;
38
40
  xxs: string;
39
41
  1: string;
@@ -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.7",
3
+ "version": "0.25.10",
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
@@ -22,14 +22,14 @@ import { getCategory } from "../../utils/componentCategories";
22
22
  parameters={{
23
23
  design: {
24
24
  type: "figma",
25
- url:
26
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10734%3A2520",
25
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=10734%3A2520",
27
26
  },
28
27
  jest: ["Accordion.test.tsx"],
29
28
  }}
30
29
  argTypes={{
31
- contentData: { table: { disable: true } },
32
- id: { table: { disable: true } },
30
+ contentData: { control: false },
31
+ id: { control: false },
32
+ isDefaultOpen: { table: { defaultValue: { summary: false } } },
33
33
  }}
34
34
  />
35
35
 
@@ -38,7 +38,7 @@ import { getCategory } from "../../utils/componentCategories";
38
38
  | Component Version | DS Version |
39
39
  | ----------------- | ---------- |
40
40
  | Added | `0.1.0` |
41
- | Latest | `0.25.1` |
41
+ | Latest | `0.25.10` |
42
42
 
43
43
  <Description of={Accordion} />
44
44
 
@@ -57,9 +57,8 @@ necessary icon, Chakra components, and styles.
57
57
 
58
58
  <Canvas withToolbar>
59
59
  <Story
60
- name="Basic"
60
+ name="Accordion with Controls"
61
61
  args={{
62
- isDefaultOpen: false,
63
62
  contentData: [
64
63
  {
65
64
  label: "Tom Nook",
@@ -83,6 +82,8 @@ necessary icon, Chakra components, and styles.
83
82
  ),
84
83
  },
85
84
  ],
85
+ id: "accordion-id",
86
+ isDefaultOpen: false,
86
87
  }}
87
88
  >
88
89
  {(args) => <Accordion {...args} />}
@@ -119,7 +120,7 @@ const contentData = [
119
120
  <Accordion contentData={contentData} />
120
121
  ```
121
122
 
122
- <ArgsTable story="Basic" />
123
+ <ArgsTable story="Accordion with Controls" />
123
124
 
124
125
  ## FAQ example
125
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
  }