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

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 (250) hide show
  1. package/CHANGELOG.md +45 -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 +3 -2
  10. package/dist/components/Form/Form.d.ts +2 -2
  11. package/dist/components/Heading/Heading.d.ts +7 -3
  12. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  13. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  14. package/dist/components/HorizontalRule/HorizontalRule.d.ts +2 -2
  15. package/dist/components/Icons/Icon.d.ts +4 -4
  16. package/dist/components/Icons/IconSvgs.d.ts +0 -21
  17. package/dist/components/Icons/IconTypes.d.ts +0 -23
  18. package/dist/components/Image/Image.d.ts +11 -3
  19. package/dist/components/Logo/Logo.d.ts +28 -0
  20. package/dist/components/Logo/LogoSvgs.d.ts +18 -0
  21. package/dist/components/Logo/LogoTypes.d.ts +30 -0
  22. package/dist/components/Modal/Modal.d.ts +0 -4
  23. package/dist/components/Notification/Notification.d.ts +2 -2
  24. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  25. package/dist/components/Radio/Radio.d.ts +6 -5
  26. package/dist/components/RadioGroup/RadioGroup.d.ts +3 -2
  27. package/dist/components/SearchBar/SearchBar.d.ts +10 -2
  28. package/dist/components/Select/Select.d.ts +3 -2
  29. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  30. package/dist/components/Slider/Slider.d.ts +3 -2
  31. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  32. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  33. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  34. package/dist/components/Table/Table.d.ts +23 -0
  35. package/dist/components/Template/Template.d.ts +8 -3
  36. package/dist/components/Text/Text.d.ts +2 -2
  37. package/dist/components/TextInput/TextInput.d.ts +4 -3
  38. package/dist/components/Toggle/Toggle.d.ts +3 -2
  39. package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
  40. package/dist/design-system-react-components.cjs.development.js +5630 -5692
  41. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  42. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  43. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  44. package/dist/design-system-react-components.esm.js +4304 -4362
  45. package/dist/design-system-react-components.esm.js.map +1 -1
  46. package/dist/index.d.ts +6 -4
  47. package/dist/styles.css +2 -2
  48. package/dist/theme/components/button.d.ts +0 -12
  49. package/dist/theme/components/card.d.ts +14 -2
  50. package/dist/theme/components/customTable.d.ts +47 -0
  51. package/dist/theme/components/fieldset.d.ts +2 -2
  52. package/dist/theme/components/global.d.ts +1 -1
  53. package/dist/theme/components/heading.d.ts +4 -0
  54. package/dist/theme/components/label.d.ts +1 -1
  55. package/dist/theme/components/link.d.ts +14 -1
  56. package/dist/theme/components/list.d.ts +0 -2
  57. package/dist/theme/components/logo.d.ts +4 -0
  58. package/dist/theme/components/searchBar.d.ts +7 -13
  59. package/dist/theme/components/select.d.ts +1 -0
  60. package/dist/theme/components/structuredContent.d.ts +33 -0
  61. package/dist/theme/components/template.d.ts +10 -10
  62. package/dist/theme/components/textInput.d.ts +2 -0
  63. package/dist/theme/components/toggle.d.ts +8 -5
  64. package/dist/utils/utils.d.ts +10 -0
  65. package/package.json +1 -2
  66. package/src/__tests__/utils/utils.test.ts +23 -1
  67. package/src/components/Accordion/Accordion.stories.mdx +14 -12
  68. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  69. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  70. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  71. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +30 -11
  72. package/src/components/Button/Button.stories.mdx +93 -48
  73. package/src/components/Button/Button.test.tsx +0 -12
  74. package/src/components/Button/Button.tsx +7 -7
  75. package/src/components/Button/ButtonTypes.tsx +0 -1
  76. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  77. package/src/components/Card/Card.stories.mdx +186 -71
  78. package/src/components/Card/Card.test.tsx +45 -22
  79. package/src/components/Card/Card.tsx +17 -5
  80. package/src/components/Card/__snapshots__/Card.test.tsx.snap +8 -2
  81. package/src/components/Chakra/Box.stories.mdx +3 -3
  82. package/src/components/Chakra/Center.stories.mdx +5 -5
  83. package/src/components/Chakra/Grid.stories.mdx +3 -3
  84. package/src/components/Chakra/Stack.stories.mdx +2 -2
  85. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  86. package/src/components/Checkbox/Checkbox.tsx +13 -8
  87. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  88. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  89. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  90. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  91. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  92. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  93. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  94. package/src/components/DatePicker/DatePicker.tsx +10 -6
  95. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +36 -18
  96. package/src/components/Fieldset/Fieldset.stories.mdx +19 -8
  97. package/src/components/Form/Form.stories.mdx +49 -41
  98. package/src/components/Form/Form.tsx +5 -4
  99. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  100. package/src/components/Heading/Heading.stories.mdx +59 -23
  101. package/src/components/Heading/Heading.test.tsx +82 -18
  102. package/src/components/Heading/Heading.tsx +31 -31
  103. package/src/components/Heading/HeadingTypes.tsx +6 -6
  104. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  105. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  106. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  107. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  108. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  109. package/src/components/Hero/Hero.stories.mdx +72 -53
  110. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +9 -8
  111. package/src/components/HorizontalRule/HorizontalRule.tsx +2 -4
  112. package/src/components/Icons/Icon.stories.mdx +77 -76
  113. package/src/components/Icons/Icon.tsx +4 -5
  114. package/src/components/Icons/IconSvgs.tsx +0 -42
  115. package/src/components/Icons/IconTypes.tsx +0 -24
  116. package/src/components/Image/Image.stories.mdx +66 -18
  117. package/src/components/Image/Image.tsx +21 -10
  118. package/src/components/Label/Label.stories.mdx +20 -19
  119. package/src/components/Link/Link.stories.mdx +102 -51
  120. package/src/components/Link/Link.test.tsx +38 -8
  121. package/src/components/Link/Link.tsx +19 -12
  122. package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
  123. package/src/components/List/List.stories.mdx +36 -24
  124. package/src/components/Logo/Logo.stories.mdx +220 -0
  125. package/src/components/Logo/Logo.test.tsx +98 -0
  126. package/src/components/Logo/Logo.tsx +97 -0
  127. package/src/components/Logo/LogoSvgs.tsx +34 -0
  128. package/src/components/Logo/LogoTypes.tsx +32 -0
  129. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  130. package/src/components/Modal/Modal.stories.mdx +20 -5
  131. package/src/components/Modal/Modal.tsx +2 -8
  132. package/src/components/Notification/Notification.stories.mdx +61 -38
  133. package/src/components/Notification/Notification.tsx +9 -4
  134. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
  135. package/src/components/Pagination/Pagination.stories.mdx +17 -6
  136. package/src/components/Pagination/Pagination.tsx +1 -1
  137. package/src/components/Placeholder/Placeholder.tsx +7 -14
  138. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
  139. package/src/components/Radio/Radio.stories.mdx +39 -19
  140. package/src/components/Radio/Radio.tsx +13 -9
  141. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  142. package/src/components/RadioGroup/RadioGroup.tsx +15 -11
  143. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +6 -3
  144. package/src/components/SearchBar/SearchBar.Test.tsx +58 -10
  145. package/src/components/SearchBar/SearchBar.stories.mdx +109 -30
  146. package/src/components/SearchBar/SearchBar.tsx +53 -32
  147. package/src/components/Select/Select.stories.mdx +48 -14
  148. package/src/components/Select/Select.tsx +16 -10
  149. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  150. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  151. package/src/components/Slider/Slider.stories.mdx +72 -22
  152. package/src/components/Slider/Slider.tsx +15 -10
  153. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +60 -30
  154. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  155. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  156. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  157. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  158. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  159. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  160. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  161. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  162. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  163. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  164. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  165. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  166. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  167. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  168. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  169. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  170. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  171. package/src/components/Table/Table.stories.mdx +66 -0
  172. package/src/components/Table/Table.test.tsx +60 -0
  173. package/src/components/Table/Table.tsx +116 -0
  174. package/src/components/Tabs/Tabs.stories.mdx +19 -13
  175. package/src/components/Tabs/Tabs.test.tsx +1 -1
  176. package/src/components/Template/Template.stories.mdx +56 -47
  177. package/src/components/Template/Template.test.tsx +65 -5
  178. package/src/components/Template/Template.tsx +35 -5
  179. package/src/components/Template/__snapshots__/Template.test.tsx.snap +76 -0
  180. package/src/components/Text/Text.stories.mdx +33 -11
  181. package/src/components/Text/Text.tsx +2 -2
  182. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  183. package/src/components/TextInput/TextInput.test.tsx +96 -0
  184. package/src/components/TextInput/TextInput.tsx +12 -8
  185. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  186. package/src/components/Toggle/Toggle.stories.mdx +33 -9
  187. package/src/components/Toggle/Toggle.tsx +14 -9
  188. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
  189. package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
  190. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
  191. package/src/docs/Chakra.stories.mdx +5 -8
  192. package/src/docs/Intro.stories.mdx +2 -2
  193. package/src/index.ts +5 -4
  194. package/src/styles/base/_03-base.scss +1 -1
  195. package/src/styles/base/_place-holder.scss +7 -7
  196. package/src/styles.scss +1 -5
  197. package/src/theme/components/breadcrumb.ts +3 -3
  198. package/src/theme/components/button.ts +5 -12
  199. package/src/theme/components/card.ts +5 -2
  200. package/src/theme/components/checkbox.ts +1 -1
  201. package/src/theme/components/customTable.ts +50 -0
  202. package/src/theme/components/datePicker.ts +1 -1
  203. package/src/theme/components/global.ts +6 -6
  204. package/src/theme/components/heading.ts +13 -11
  205. package/src/theme/components/helperErrorText.ts +1 -1
  206. package/src/theme/components/image.ts +1 -1
  207. package/src/theme/components/link.ts +17 -5
  208. package/src/theme/components/list.ts +1 -3
  209. package/src/theme/components/logo.ts +54 -0
  210. package/src/theme/components/notification.ts +1 -1
  211. package/src/theme/components/searchBar.ts +7 -13
  212. package/src/theme/components/select.ts +1 -0
  213. package/src/theme/components/statusBadge.ts +1 -1
  214. package/src/theme/components/structuredContent.ts +54 -0
  215. package/src/theme/components/template.ts +10 -10
  216. package/src/theme/components/text.ts +6 -6
  217. package/src/theme/components/textInput.ts +1 -0
  218. package/src/theme/components/toggle.ts +9 -5
  219. package/src/theme/components/videoPlayer.ts +0 -2
  220. package/src/theme/foundations/global.ts +2 -2
  221. package/src/theme/foundations/typography.ts +84 -12
  222. package/src/theme/index.ts +6 -0
  223. package/src/utils/componentCategories.ts +1 -1
  224. package/src/utils/utils.ts +17 -0
  225. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  226. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  227. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  228. package/dist/components/Input/Input.d.ts +0 -36
  229. package/dist/components/Input/Input.stories.d.ts +0 -29
  230. package/dist/components/Input/InputTypes.d.ts +0 -6
  231. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  232. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  233. package/dist/helpers/getCSSVariable.d.ts +0 -1
  234. package/dist/interfaces.d.ts +0 -3
  235. package/dist/utils/bem.d.ts +0 -1
  236. package/src/__tests__/utils/bem.test.ts +0 -37
  237. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  238. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  239. package/src/components/CardEdition/CardEdition.tsx +0 -60
  240. package/src/components/CardEdition/_CardEdition.scss +0 -137
  241. package/src/components/Input/Input.stories.tsx +0 -133
  242. package/src/components/Input/Input.test.tsx +0 -266
  243. package/src/components/Input/Input.tsx +0 -81
  244. package/src/components/Input/InputTypes.tsx +0 -8
  245. package/src/components/Input/_Input.scss +0 -78
  246. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  247. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  248. package/src/helpers/getCSSVariable.tsx +0 -5
  249. package/src/interfaces.ts +0 -3
  250. package/src/utils/bem.ts +0 -44
@@ -1,20 +1,23 @@
1
+ import { Box, VStack } from "@chakra-ui/react";
1
2
  import {
2
- Meta,
3
- Story,
4
- Canvas,
5
3
  ArgsTable,
4
+ Canvas,
6
5
  Description,
7
- } from "@storybook/addon-docs/blocks";
6
+ Meta,
7
+ Story,
8
+ } from "@storybook/addon-docs";
8
9
  import { withDesign } from "storybook-addon-designs";
9
- import { Box, VStack } from "@chakra-ui/react";
10
10
 
11
+ import Heading from "../Heading/Heading";
12
+ import { HeadingLevels } from "../Heading/HeadingTypes";
11
13
  import Hero from "./Hero";
12
14
  import { HeroTypes, HeroSecondaryTypes } from "./HeroTypes";
13
15
  import Image from "../Image/Image";
14
- import Heading from "../Heading/Heading";
15
- import { HeadingLevels } from "../Heading/HeadingTypes";
16
16
  import { getCategory } from "../../utils/componentCategories";
17
17
  import DSProvider from "../../theme/provider";
18
+ import { getStorybookEnumValues } from "../../utils/utils";
19
+
20
+ export const enumValues = getStorybookEnumValues(HeroTypes, "HeroTypes");
18
21
 
19
22
  <Meta
20
23
  title={getCategory("Hero")}
@@ -23,18 +26,22 @@ import DSProvider from "../../theme/provider";
23
26
  parameters={{
24
27
  design: {
25
28
  type: "figma",
26
- url:
27
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10968%3A5314",
29
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10968%3A5314",
28
30
  },
29
31
  jest: ["Hero.test.tsx"],
30
32
  }}
31
33
  argTypes={{
32
- backgroundColor: { table: { disable: true } },
33
- foregroundColor: { table: { disable: true } },
34
- heading: { table: { disable: true } },
35
- image: { table: { disable: true } },
36
- locationDetails: { table: { disable: true } },
37
- subHeaderText: { table: { disable: true } },
34
+ backgroundColor: { control: false },
35
+ foregroundColor: { control: false },
36
+ heading: { control: false },
37
+ heroType: {
38
+ control: { type: "select" },
39
+ table: { defaultValue: { summary: "HeroTypes.Primary" } },
40
+ options: enumValues.options,
41
+ },
42
+ image: { control: false },
43
+ locationDetails: { control: false },
44
+ subHeaderText: { control: false },
38
45
  }}
39
46
  />
40
47
 
@@ -67,76 +74,88 @@ descriptive text and images.
67
74
 
68
75
  <Canvas withToolbar>
69
76
  <Story
70
- name="Hero Props"
77
+ name="Hero with Controls"
71
78
  args={{
72
- heroType: HeroTypes.Campaign,
79
+ backgroundColor: undefined,
80
+ backgroundImageSrc: undefined,
81
+ foregroundColor: undefined,
82
+ heading: undefined,
83
+ heroType: "HeroTypes.Primary",
84
+ image: undefined,
85
+ locationDetails: undefined,
86
+ subHeaderText: undefined,
73
87
  }}
74
88
  >
75
89
  {(args) =>
76
- (args.heroType === HeroTypes.Primary && (
90
+ (args.heroType === "HeroTypes.Primary" && (
77
91
  <Hero
78
92
  {...args}
93
+ backgroundImageSrc="https://placeimg.com/2400/800/nature"
79
94
  heading={
80
95
  <Heading level={HeadingLevels.One} id="1" text="Hero Primary" />
81
96
  }
97
+ heroType={enumValues.getValue(args.heroType)}
82
98
  subHeaderText="Example Subtitle"
83
- backgroundImageSrc="https://placeimg.com/2400/800/nature"
84
99
  />
85
100
  )) ||
86
- (HeroSecondaryTypes.includes(args.heroType) && (
101
+ (HeroSecondaryTypes.includes(enumValues.getValue(args.heroType)) && (
87
102
  <div className="nypl--books-and-more">
88
103
  <Hero
89
104
  {...args}
90
105
  heading={
91
106
  <Heading level={HeadingLevels.One} id="1" text="Hero Secondary" />
92
107
  }
93
- subHeaderText={secondarySubHeaderText}
108
+ heroType={enumValues.getValue(args.heroType)}
94
109
  image={image}
110
+ subHeaderText={secondarySubHeaderText}
95
111
  />
96
112
  </div>
97
113
  )) ||
98
- (args.heroType === HeroTypes.Tertiary && (
114
+ (args.heroType === "HeroTypes.Tertiary" && (
99
115
  <Hero
100
116
  {...args}
101
117
  heading={
102
118
  <Heading level={HeadingLevels.One} id="1" text="Hero Tertiary" />
103
119
  }
120
+ heroType={enumValues.getValue(args.heroType)}
104
121
  subHeaderText={otherSubHeaderText}
105
122
  />
106
123
  )) ||
107
- (args.heroType === HeroTypes.Campaign && (
124
+ (args.heroType === "HeroTypes.Campaign" && (
108
125
  <Hero
109
126
  {...args}
127
+ backgroundImageSrc="https://placeimg.com/2400/800/nature"
110
128
  heading={
111
129
  <Heading level={HeadingLevels.One} id="1" text="Hero Campaign" />
112
130
  }
113
- subHeaderText={otherSubHeaderText}
114
- backgroundImageSrc="https://placeimg.com/2400/800/nature"
131
+ heroType={enumValues.getValue(args.heroType)}
115
132
  image={
116
133
  <Image
117
134
  src="https://placeimg.com/800/400/animals"
118
135
  alt="Image example"
119
136
  />
120
137
  }
138
+ subHeaderText={otherSubHeaderText}
121
139
  />
122
140
  )) ||
123
- (args.heroType === HeroTypes.FiftyFifty && (
141
+ (args.heroType === "HeroTypes.FiftyFifty" && (
124
142
  <Hero
125
143
  {...args}
126
- subHeaderText={otherSubHeaderText}
144
+ heroType={enumValues.getValue(args.heroType)}
127
145
  image={
128
146
  <Image
129
147
  src="https://placeimg.com/600/200/animals"
130
148
  alt="Image example"
131
149
  />
132
150
  }
151
+ subHeaderText={otherSubHeaderText}
133
152
  />
134
153
  ))
135
154
  }
136
155
  </Story>
137
156
  </Canvas>
138
157
 
139
- <ArgsTable story="Hero Props" />
158
+ <ArgsTable story="Hero with Controls" />
140
159
 
141
160
  ## Color Variations for Secondary Hero
142
161
 
@@ -159,12 +178,12 @@ parent wrapper's CSS class name for background color updates. Now, the proper
159
178
  <Story name="Color Variations for Secondary Hero">
160
179
  <VStack spacing={10} align="stretch">
161
180
  <Heading
181
+ id="books-heading"
162
182
  level={HeadingLevels.Two}
163
183
  text="HeroTypes.SecondaryBooksAndMore"
164
- id="books-heading"
165
184
  />
166
185
  <Hero
167
- heroType={HeroTypes.SecondaryBooksAndMore}
186
+ image={image}
168
187
  heading={
169
188
  <Heading
170
189
  level={HeadingLevels.One}
@@ -172,16 +191,16 @@ parent wrapper's CSS class name for background color updates. Now, the proper
172
191
  text="Books and More"
173
192
  />
174
193
  }
194
+ heroType={HeroTypes.SecondaryBooksAndMore}
175
195
  subHeaderText={secondarySubHeaderText}
176
- image={image}
177
196
  />
178
197
  <Heading
198
+ id="location-heading"
179
199
  level={HeadingLevels.Two}
180
200
  text="HeroTypes.SecondaryLocations"
181
- id="location-heading"
182
201
  />
183
202
  <Hero
184
- heroType={HeroTypes.SecondaryLocations}
203
+ image={image}
185
204
  heading={
186
205
  <Heading
187
206
  level={HeadingLevels.One}
@@ -189,16 +208,16 @@ parent wrapper's CSS class name for background color updates. Now, the proper
189
208
  text="Locations"
190
209
  />
191
210
  }
211
+ heroType={HeroTypes.SecondaryLocations}
192
212
  subHeaderText={secondarySubHeaderText}
193
- image={image}
194
213
  />
195
214
  <Heading
215
+ id="research-heading"
196
216
  level={HeadingLevels.Two}
197
217
  text="HeroTypes.SecondaryResearch"
198
- id="research-heading"
199
218
  />
200
219
  <Hero
201
- heroType={HeroTypes.SecondaryResearch}
220
+ image={image}
202
221
  heading={
203
222
  <Heading
204
223
  level={HeadingLevels.One}
@@ -206,16 +225,15 @@ parent wrapper's CSS class name for background color updates. Now, the proper
206
225
  text="Research"
207
226
  />
208
227
  }
228
+ heroType={HeroTypes.SecondaryResearch}
209
229
  subHeaderText={secondarySubHeaderText}
210
- image={image}
211
230
  />
212
231
  <Heading
232
+ id="whats-on-heading"
213
233
  level={HeadingLevels.Two}
214
234
  text="HeroTypes.SecondaryWhatsOn"
215
- id="whats-on-heading"
216
235
  />
217
236
  <Hero
218
- heroType={HeroTypes.SecondaryWhatsOn}
219
237
  heading={
220
238
  <Heading
221
239
  level={HeadingLevels.One}
@@ -223,8 +241,9 @@ parent wrapper's CSS class name for background color updates. Now, the proper
223
241
  text="What's On"
224
242
  />
225
243
  }
226
- subHeaderText={secondarySubHeaderText}
244
+ heroType={HeroTypes.SecondaryWhatsOn}
227
245
  image={image}
246
+ subHeaderText={secondarySubHeaderText}
228
247
  />
229
248
  </VStack>
230
249
  </Story>
@@ -237,7 +256,7 @@ parent wrapper's CSS class name for background color updates. Now, the proper
237
256
  <VStack spacing={10} align="stretch">
238
257
  <Heading level={HeadingLevels.Two} text="Primary" id="primary-heading" />
239
258
  <Hero
240
- heroType={HeroTypes.Primary}
259
+ backgroundImageSrc="https://placeimg.com/1600/800/arch"
241
260
  heading={
242
261
  <Heading
243
262
  level={HeadingLevels.One}
@@ -245,16 +264,15 @@ parent wrapper's CSS class name for background color updates. Now, the proper
245
264
  text="Hero Primary"
246
265
  />
247
266
  }
248
- backgroundImageSrc="https://placeimg.com/1600/800/arch"
267
+ heroType={HeroTypes.Primary}
249
268
  />
250
269
  <Heading
270
+ id="secondary-heading"
251
271
  level={HeadingLevels.Two}
252
272
  text="Secondary"
253
- id="secondary-heading"
254
273
  />
255
274
  <div className="nypl--locations">
256
275
  <Hero
257
- heroType={HeroTypes.Secondary}
258
276
  heading={
259
277
  <Heading
260
278
  level={HeadingLevels.One}
@@ -262,17 +280,17 @@ parent wrapper's CSS class name for background color updates. Now, the proper
262
280
  text="Hero Secondary"
263
281
  />
264
282
  }
265
- subHeaderText={secondarySubHeaderText}
283
+ heroType={HeroTypes.Secondary}
266
284
  image={image}
285
+ subHeaderText={secondarySubHeaderText}
267
286
  />
268
287
  </div>
269
288
  <Heading
289
+ id="tertiary-heading"
270
290
  level={HeadingLevels.Two}
271
291
  text="Tertiary"
272
- id="tertiary-heading"
273
292
  />
274
293
  <Hero
275
- heroType={HeroTypes.Tertiary}
276
294
  heading={
277
295
  <Heading
278
296
  level={HeadingLevels.One}
@@ -280,10 +298,10 @@ parent wrapper's CSS class name for background color updates. Now, the proper
280
298
  text="Hero Tertiary with Sub-Header"
281
299
  />
282
300
  }
301
+ heroType={HeroTypes.Tertiary}
283
302
  subHeaderText={otherSubHeaderText}
284
303
  />
285
304
  <Hero
286
- heroType={HeroTypes.Tertiary}
287
305
  heading={
288
306
  <Heading
289
307
  level={HeadingLevels.One}
@@ -291,13 +309,15 @@ parent wrapper's CSS class name for background color updates. Now, the proper
291
309
  text="Hero Tertiary without Sub-Header"
292
310
  />
293
311
  }
312
+ heroType={HeroTypes.Tertiary}
294
313
  />
295
314
  <Heading
315
+ id="campaign-heading"
296
316
  level={HeadingLevels.Two}
297
317
  text="Campaign"
298
- id="campaign-heading"
299
318
  />
300
319
  <Hero
320
+ backgroundImageSrc="https://placeimg.com/2400/800/nature/grayscale"
301
321
  heroType={HeroTypes.Campaign}
302
322
  heading={
303
323
  <Heading
@@ -306,20 +326,19 @@ parent wrapper's CSS class name for background color updates. Now, the proper
306
326
  text="Hero Campaign"
307
327
  />
308
328
  }
309
- subHeaderText={otherSubHeaderText}
310
- backgroundImageSrc="https://placeimg.com/2400/800/nature/grayscale"
311
329
  image={image}
330
+ subHeaderText={otherSubHeaderText}
312
331
  />
313
332
  <Box marginTop="30px" />
314
333
  <Heading
334
+ id="fiftyfifty-heading"
315
335
  level={HeadingLevels.Two}
316
336
  text="FiftyFifty"
317
- id="fiftyfifty-heading"
318
337
  />
319
338
  <Hero
320
339
  heroType={HeroTypes.FiftyFifty}
321
- subHeaderText={otherSubHeaderText}
322
340
  image={image}
341
+ subHeaderText={otherSubHeaderText}
323
342
  />
324
343
  </VStack>
325
344
  </DSProvider>
@@ -1,14 +1,14 @@
1
+ import { action } from "@storybook/addon-actions";
1
2
  import {
2
- Meta,
3
- Story,
4
- Canvas,
5
3
  ArgsTable,
4
+ Canvas,
6
5
  Description,
7
- } from "@storybook/addon-docs/blocks";
6
+ Meta,
7
+ Story,
8
+ } from "@storybook/addon-docs";
8
9
  import { withDesign } from "storybook-addon-designs";
9
10
 
10
11
  import HorizontalRule from "./HorizontalRule";
11
- import { action } from "@storybook/addon-actions";
12
12
  import { getCategory } from "../../utils/componentCategories";
13
13
 
14
14
  <Meta
@@ -18,13 +18,14 @@ import { getCategory } from "../../utils/componentCategories";
18
18
  parameters={{
19
19
  design: {
20
20
  type: "figma",
21
- url:
22
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=19659%3A0",
21
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=19659%3A0",
23
22
  },
24
23
  jest: ["HorizontalRule.test.tsx"],
25
24
  }}
26
25
  argTypes={{
27
- className: { table: { disable: true } },
26
+ className: { control: false },
27
+ height: { table: { defaultValue: { summary: "2px" } } },
28
+ width: { table: { defaultValue: { summary: "auto" } } },
28
29
  }}
29
30
  />
30
31
 
@@ -1,6 +1,6 @@
1
1
  // HorizontalRule
2
- import * as React from "react";
3
2
  import { Box, useStyleConfig } from "@chakra-ui/react";
3
+ import * as React from "react";
4
4
 
5
5
  export interface HorizontalRuleProps {
6
6
  /** Optional alignment value to align the horizontal rule to one side or the
@@ -20,9 +20,7 @@ export interface HorizontalRuleProps {
20
20
  width?: string;
21
21
  }
22
22
 
23
- export default function HorizontalRule(
24
- props: React.ComponentProps<"hr"> & HorizontalRuleProps
25
- ) {
23
+ export default function HorizontalRule(props: HorizontalRuleProps) {
26
24
  const { align, className, height = "2px", width = "auto" } = props;
27
25
  const styles = useStyleConfig("HorizontalRule", { align });
28
26
  let finalHeight = height;
@@ -1,25 +1,38 @@
1
1
  import {
2
- Meta,
3
- Story,
4
- Canvas,
5
2
  ArgsTable,
3
+ Canvas,
6
4
  Description,
7
- } from "@storybook/addon-docs/blocks";
5
+ Meta,
6
+ Story,
7
+ } from "@storybook/addon-docs";
8
8
  import { withDesign } from "storybook-addon-designs";
9
9
 
10
10
  import Icon from "./Icon";
11
11
  import {
12
12
  IconAlign,
13
- IconNames,
14
- LogoNames,
15
13
  IconColors,
16
- IconSizes,
14
+ IconNames,
17
15
  IconRotationTypes,
16
+ IconSizes,
17
+ IconTypes,
18
18
  } from "./IconTypes";
19
19
  import iconSvgs from "./IconSvgs";
20
20
  import List from "../List/List";
21
21
  import { ListTypes } from "../List/ListTypes";
22
22
  import { getCategory } from "../../utils/componentCategories";
23
+ import { getStorybookEnumValues } from "../../utils/utils";
24
+
25
+ export const alignEnumValues = getStorybookEnumValues(IconAlign, "IconAlign");
26
+ export const namesEnumValues = getStorybookEnumValues(IconNames, "IconNames");
27
+ export const colorsEnumValues = getStorybookEnumValues(
28
+ IconColors,
29
+ "IconColors"
30
+ );
31
+ export const sizesEnumValues = getStorybookEnumValues(IconSizes, "IconSizes");
32
+ export const rotationEnumValues = getStorybookEnumValues(
33
+ IconRotationTypes,
34
+ "IconRotationTypes"
35
+ );
23
36
 
24
37
  <Meta
25
38
  title={getCategory("Icon")}
@@ -28,15 +41,46 @@ import { getCategory } from "../../utils/componentCategories";
28
41
  parameters={{
29
42
  design: {
30
43
  type: "figma",
31
- url:
32
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10734%3A3945",
44
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Main?node-id=10734%3A3945",
33
45
  },
34
46
  jest: ["Icon.test.tsx"],
35
47
  }}
36
48
  argTypes={{
49
+ align: {
50
+ control: { type: "select" },
51
+ table: { defaultValue: { summary: "IconAlign.None" } },
52
+ options: alignEnumValues.options,
53
+ },
37
54
  children: { table: { disable: true } },
38
- className: { table: { disable: true } },
39
- id: { table: { disable: true } },
55
+ className: { control: false },
56
+ color: {
57
+ control: { type: "select" },
58
+ table: { defaultValue: { summary: "IconColors.UiBlack" } },
59
+ options: colorsEnumValues.options,
60
+ },
61
+ iconRotation: {
62
+ control: { type: "select" },
63
+ table: { defaultValue: { summary: "IconRotationTypes.Rotate0" } },
64
+ options: rotationEnumValues.options,
65
+ },
66
+ id: { control: false },
67
+ name: {
68
+ control: { type: "select" },
69
+ options: namesEnumValues.options,
70
+ },
71
+ size: {
72
+ control: { type: "select" },
73
+ table: { defaultValue: { summary: "IconSizes.Medium" } },
74
+ options: sizesEnumValues.options,
75
+ },
76
+ title: {
77
+ control: false,
78
+ table: { defaultValue: { summary: "`${name} icon`" } },
79
+ },
80
+ type: {
81
+ control: false,
82
+ table: { defaultValue: { summary: "IconTypes.Default" } },
83
+ },
40
84
  }}
41
85
  />
42
86
 
@@ -51,62 +95,35 @@ import { getCategory } from "../../utils/componentCategories";
51
95
 
52
96
  <Canvas withToolbar>
53
97
  <Story
54
- name="Icon Props Control"
98
+ name="Icon with Controls"
55
99
  args={{
56
- align: "None",
57
- color: "UiBlack",
100
+ additionalStyles: undefined,
101
+ align: "IconAlign.None",
102
+ className: undefined,
103
+ color: "IconColors.UiBlack",
58
104
  decorative: true,
59
- iconRotation: "Rotate0",
60
- name: "Check",
61
- size: "ExtraLarge",
62
- }}
63
- argTypes={{
64
- align: {
65
- control: {
66
- type: "select",
67
- },
68
- options: Object.keys(IconAlign),
69
- },
70
- color: {
71
- control: {
72
- type: "select",
73
- },
74
- options: Object.keys(IconColors),
75
- },
76
- iconRotation: {
77
- control: {
78
- type: "select",
79
- },
80
- options: Object.keys(IconRotationTypes),
81
- },
82
- name: {
83
- control: {
84
- type: "select",
85
- },
86
- options: Object.keys(IconNames),
87
- },
88
- size: {
89
- control: {
90
- type: "select",
91
- },
92
- options: Object.keys(IconSizes),
93
- },
105
+ iconRotation: "IconRotationTypes.Rotate0",
106
+ id: "icon-id",
107
+ name: "IconNames.Check",
108
+ size: "IconSizes.ExtraLarge",
109
+ title: undefined,
110
+ type: IconTypes.Default,
94
111
  }}
95
112
  >
96
113
  {(args) => (
97
114
  <Icon
98
- align={IconAlign[args.align]}
99
- color={IconColors[args.color]}
100
- iconRotation={IconRotationTypes[args.iconRotation]}
101
- name={IconNames[args.name]}
102
- size={IconSizes[args.size]}
115
+ align={alignEnumValues.getValue(args.align)}
116
+ color={colorsEnumValues.getValue(args.color)}
117
+ iconRotation={rotationEnumValues.getValue(args.iconRotation)}
118
+ name={namesEnumValues.getValue(args.name)}
119
+ size={sizesEnumValues.getValue(args.size)}
103
120
  title={args.title}
104
121
  />
105
122
  )}
106
123
  </Story>
107
124
  </Canvas>
108
125
 
109
- <ArgsTable story="Icon Props Control" />
126
+ <ArgsTable story="Icon with Controls" />
110
127
 
111
128
  export const iconRow = (icon, iconType = IconNames, opts = {}) => {
112
129
  // We'll use this setup function to render all the icons in a list item.
@@ -147,22 +164,18 @@ export const iconRow = (icon, iconType = IconNames, opts = {}) => {
147
164
  );
148
165
  };
149
166
  export const icons = [];
150
- export const logos = [];
151
167
  export const rotations = [];
152
168
  export const colors = [];
153
169
  export const sizes = [];
154
170
  for (const icon in IconNames) {
155
- icons.push(iconRow(icon, IconNames));
156
- }
157
- for (const logo in LogoNames) {
158
- logos.push(iconRow(logo, LogoNames, { iconSize: IconSizes.ExtraLarge }));
171
+ icons.push(iconRow(icon, IconNames, { displayValue: `IconNames.${icon}` }));
159
172
  }
160
173
  for (const iconRotation in IconRotationTypes) {
161
174
  rotations.push(
162
175
  iconRow("Arrow", IconNames, {
163
176
  size: IconSizes.Large,
164
177
  iconRotation: IconRotationTypes[iconRotation],
165
- displayValue: iconRotation,
178
+ displayValue: `IconRotationTypes.${iconRotation}`,
166
179
  })
167
180
  );
168
181
  }
@@ -170,7 +183,7 @@ for (const iconColor in IconColors) {
170
183
  colors.push(
171
184
  iconRow("Download", IconNames, {
172
185
  color: IconColors[iconColor],
173
- displayValue: iconColor,
186
+ displayValue: `IconColors.${iconColor}`,
174
187
  })
175
188
  );
176
189
  }
@@ -178,7 +191,7 @@ for (const iconSize in IconSizes) {
178
191
  sizes.push(
179
192
  iconRow("Arrow", IconNames, {
180
193
  size: IconSizes[iconSize],
181
- displayValue: iconSize,
194
+ displayValue: `IconSizes.${iconSize}`,
182
195
  })
183
196
  );
184
197
  }
@@ -240,25 +253,13 @@ The `IconSizes` enum can be found in`src/components/Icons/IconTypes.tsx`.
240
253
 
241
254
  ## All Display Icons
242
255
 
243
- The following icons are for generic purposes. All the available logo names can
256
+ The following icons are for generic purposes. All the available icon names can
244
257
  be found in the `IconNames` enum in `src/components/Icons/IconTypes.tsx`.
245
258
 
246
259
  <Canvas withToolbar>
247
260
  <Story name="All Display Icons">{allIconsType(icons)}</Story>
248
261
  </Canvas>
249
262
 
250
- ## All Logo Icons
251
-
252
- _Note: this is a work in progress_
253
-
254
- The following icons are meant to be used for logos for different libraries
255
- and products. All the available logo names can
256
- be found in the `LogoNames` enum in `src/components/Icons/IconTypes.tsx`.
257
-
258
- <Canvas withToolbar>
259
- <Story name="All Logo Icons">{allIconsType(logos)}</Story>
260
- </Canvas>
261
-
262
263
  ## Custom Icons
263
264
 
264
265
  If you'd like to pass a custom svg to your application, you can pass it a
@@ -9,7 +9,6 @@ import {
9
9
  IconRotationTypes,
10
10
  IconSizes,
11
11
  IconTypes,
12
- LogoNames,
13
12
  } from "./IconTypes";
14
13
  import iconSvgs from "./IconSvgs";
15
14
 
@@ -18,7 +17,7 @@ export interface IconProps {
18
17
  additionalStyles?: { [key: string]: any };
19
18
  /** Aligns the icon. */
20
19
  align?: IconAlign;
21
- /** className that appears in addition to "icon" */
20
+ /** Optional className that will be added to the parent element */
22
21
  className?: string;
23
22
  /** Overrides default icon color (black). */
24
23
  color?: IconColors;
@@ -30,14 +29,14 @@ export interface IconProps {
30
29
  /** ID that other components can cross reference for accessibility purposes */
31
30
  id?: string;
32
31
  /** The name of the icon you want to use. */
33
- name?: IconNames | LogoNames;
32
+ name?: IconNames;
34
33
  /** Sets the icon size. */
35
34
  size?: IconSizes;
36
35
  /** For accessibility purposes, the text passed in the `title` prop gets
37
36
  * rendered in a `title` element in the SVG. This descriptive text is not
38
37
  * visible but is needed for screenreaders to describe the graphic. */
39
38
  title?: string;
40
- /** Sets the icon variant type. */
39
+ /** FOR INTERNAL DS USE ONLY: the icon variant to display. */
41
40
  type?: IconTypes;
42
41
  }
43
42
 
@@ -47,7 +46,7 @@ export interface IconProps {
47
46
  export default function Icon(props: React.PropsWithChildren<IconProps>) {
48
47
  const {
49
48
  additionalStyles = {},
50
- align = "none",
49
+ align = IconAlign.None,
51
50
  children,
52
51
  className,
53
52
  color = IconColors.UiBlack,