@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
@@ -7,7 +7,6 @@ import action_help_outline from "../../../icons/svg/action_help_outline.svg";
7
7
  import action_launch from "../../../icons/svg/action_launch.svg";
8
8
  import alert_notification_important from "../../../icons/svg/alert_notification_important.svg";
9
9
  import arrow from "../../../icons/svg/arrow.svg";
10
- import brooklyn from "../../../icons/svg/brooklyn.svg";
11
10
  import check from "../../../icons/svg/check.svg";
12
11
  import clock from "../../../icons/svg/clock.svg";
13
12
  import close from "../../../icons/svg/close.svg";
@@ -22,29 +21,9 @@ import download from "../../../icons/svg/download.svg";
22
21
  import error_filled from "../../../icons/svg/error_filled.svg";
23
22
  import error_outline from "../../../icons/svg/error_outline.svg";
24
23
  import headset from "../../../icons/svg/headset.svg";
25
- import logo_brooklyn from "../../../icons/svg/logo_brooklynpl.svg";
26
- import logo_nypl from "../../../icons/svg/logo_nypl.svg";
27
- import logo_nypl_negative from "../../../icons/svg/logo_nypl_negative.svg";
28
- import logo_queens from "../../../icons/svg/logo_queenspl.svg";
29
- import lpa_negative from "../../../icons/svg/lpa_negative.svg";
30
- import lpa_positive from "../../../icons/svg/lpa_positive.svg";
31
24
  import minus from "../../../icons/svg/minus.svg";
32
- import nypl_circle_negative from "../../../icons/svg/nypl_circle_negative.svg";
33
- import nypl_circle_positive from "../../../icons/svg/nypl_circle_positive.svg";
34
- import nypl_full_lock_up_negative from "../../../icons/svg/nypl_full_lock_up_negative.svg";
35
- import nypl_full_lock_up from "../../../icons/svg/nypl_full_lock_up.svg";
36
- import nypl_no_lion_negative from "../../../icons/svg/nypl_no_lion_negative.svg";
37
- import nypl_no_lion_positive from "../../../icons/svg/nypl_no_lion_positive.svg";
38
25
  import plus from "../../../icons/svg/plus.svg";
39
- import queens_long from "../../../icons/svg/queens_long.svg";
40
- import queens_stacked from "../../../icons/svg/queens_stacked.svg";
41
- import schomburg_circle from "../../../icons/svg/schomburg_circle.svg";
42
- import schomburg_positive from "../../../icons/svg/schomburg_positive.svg";
43
26
  import search from "../../../icons/svg/search.svg";
44
- import simplye_black from "../../../icons/svg/simplye_black.svg";
45
- import simplye_color from "../../../icons/svg/simplye_color.svg";
46
- import snfl_negative from "../../../icons/svg/snfl_negative.svg";
47
- import snfl_positive from "../../../icons/svg/snfl_positive.svg";
48
27
  import speaker_notes from "../../../icons/svg/speaker_notes.svg";
49
28
  import utility_account_filled from "../../../icons/svg/utility_account_filled.svg";
50
29
  import utility_account_unfilled from "../../../icons/svg/utility_account_unfilled.svg";
@@ -60,7 +39,6 @@ export default {
60
39
  action_launch,
61
40
  alert_notification_important,
62
41
  arrow,
63
- brooklyn,
64
42
  check,
65
43
  clock,
66
44
  close,
@@ -75,29 +53,9 @@ export default {
75
53
  file_type_spreadsheet,
76
54
  file_type_video,
77
55
  headset,
78
- logo_brooklyn,
79
- logo_nypl,
80
- logo_nypl_negative,
81
- logo_queens,
82
- lpa_negative,
83
- lpa_positive,
84
56
  minus,
85
- nypl_circle_negative,
86
- nypl_circle_positive,
87
- nypl_full_lock_up_negative,
88
- nypl_full_lock_up,
89
- nypl_no_lion_negative,
90
- nypl_no_lion_positive,
91
57
  plus,
92
- queens_long,
93
- queens_stacked,
94
- schomburg_circle,
95
- schomburg_positive,
96
58
  search,
97
- simplye_black,
98
- simplye_color,
99
- snfl_negative,
100
- snfl_positive,
101
59
  speaker_notes,
102
60
  utility_account_filled,
103
61
  utility_account_unfilled,
@@ -78,27 +78,3 @@ export enum IconNames {
78
78
  UtilityHamburger = "utility_hamburger",
79
79
  UtilitySearch = "utility_search",
80
80
  }
81
-
82
- export enum LogoNames {
83
- Brooklyn = "brooklyn",
84
- LogoBrooklyn = "logo_brooklyn",
85
- LogoNypl = "logo_nypl",
86
- LogoNyplNegative = "logo_nypl_negative",
87
- LogoQueens = "logo_queens",
88
- LpaNegative = "lpa_negative",
89
- LpaPositive = "lpa_positive",
90
- NyplCircleNegative = "nypl_circle_negative",
91
- NyplCirclePositive = "nypl_circle_positive",
92
- NyplFullLockUpNegative = "nypl_full_lock_up_negative",
93
- NyplFullLockUp = "nypl_full_lock_up",
94
- NyplNoLionNegative = "nypl_no_lion_negative",
95
- NyplNoLionPositive = "nypl_no_lion_positive",
96
- QueensLong = "queens_long",
97
- QueensStacked = "queens_stacked",
98
- SchomburgCircle = "schomburg_circle",
99
- SchomburgPositive = "schomburg_positive",
100
- SimplyeBlack = "simplye_black",
101
- SimplyeColor = "simplye_color",
102
- SnflNegative = "snfl_negative",
103
- SnflPositive = "snfl_positive",
104
- }
@@ -1,18 +1,26 @@
1
+ import { 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 { VStack } from "@chakra-ui/react";
10
10
 
11
+ import Heading from "../Heading/Heading";
11
12
  import Image from "./Image";
12
13
  import { ImageRatios, ImageSizes, ImageTypes } from "./ImageTypes";
13
- import Heading from "../Heading/Heading";
14
14
  import SimpleGrid from "../Grid/SimpleGrid";
15
15
  import { getCategory } from "../../utils/componentCategories";
16
+ import { getStorybookEnumValues } from "../../utils/utils";
17
+
18
+ export const ratiosEnumValues = getStorybookEnumValues(
19
+ ImageRatios,
20
+ "ImageRatios"
21
+ );
22
+ export const sizesEnumValues = getStorybookEnumValues(ImageSizes, "ImageSizes");
23
+ export const typesEnumValues = getStorybookEnumValues(ImageTypes, "ImageTypes");
16
24
 
17
25
  export const imageBlockStyles = {
18
26
  margin: "auto",
@@ -28,15 +36,43 @@ export const imageBlockStyles = {
28
36
  parameters={{
29
37
  design: {
30
38
  type: "figma",
31
- url:
32
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11896%3A45379",
39
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11896%3A45379",
33
40
  },
34
41
  jest: ["Image.test.tsx"],
35
42
  }}
36
43
  argTypes={{
37
- alt: { table: { disable: true } },
38
- className: { table: { disable: true } },
39
- component: { table: { disable: true } },
44
+ additionalFigureStyles: { control: false },
45
+ additionalImageStyles: { control: false },
46
+ additionalWrapperStyles: { control: false },
47
+ alt: {
48
+ control: false,
49
+ description:
50
+ "Alternate text description of the image. Needed for accessibility purposes.",
51
+ },
52
+ className: {
53
+ control: false,
54
+ description: "Additional class name for the component to use.",
55
+ },
56
+ component: { control: false },
57
+ imageAspectRatio: {
58
+ control: { type: "select" },
59
+ table: { defaultValue: { summary: "ImageRatios.Original" } },
60
+ options: ratiosEnumValues.options,
61
+ },
62
+ imageSize: {
63
+ control: { type: "select" },
64
+ table: { defaultValue: { summary: "ImageSizes.Default" } },
65
+ options: sizesEnumValues.options,
66
+ },
67
+ imageType: {
68
+ control: { type: "select" },
69
+ table: { defaultValue: { summary: "ImageTypes.Default" } },
70
+ options: typesEnumValues.options,
71
+ },
72
+ src: {
73
+ description:
74
+ "The src attribute is required, and contains the path to the image you want to embed.",
75
+ },
40
76
  }}
41
77
  />
42
78
 
@@ -45,7 +81,7 @@ export const imageBlockStyles = {
45
81
  | Component Version | DS Version |
46
82
  | ----------------- | ---------- |
47
83
  | Added | `0.0.6` |
48
- | Latest | `0.25.8` |
84
+ | Latest | `0.25.9` |
49
85
 
50
86
  <Description of={Image} />
51
87
 
@@ -56,22 +92,34 @@ export const imageBlockStyles = {
56
92
 
57
93
  <Canvas>
58
94
  <Story
59
- name="Image Props"
95
+ name="Image with Controls"
60
96
  args={{
97
+ additionalFigureStyles: undefined,
98
+ additionalImageStyles: undefined,
99
+ additionalWrapperStyles: undefined,
61
100
  alt: "Alt text",
62
- imageAspectRatio: ImageRatios.TwoByOne,
101
+ className: undefined,
102
+ component: undefined,
103
+ imageAspectRatio: "ImageRatios.TwoByOne",
63
104
  imageCaption: "Image caption",
64
105
  imageCredit: "Image credit",
65
- imageSize: ImageSizes.Medium,
66
- imageType: ImageTypes.Default,
106
+ imageSize: "ImageSizes.Medium",
107
+ imageType: "ImageTypes.Default",
67
108
  src: "https://placeimg.com/400/300/animals",
68
109
  }}
69
110
  >
70
- {(args) => <Image {...args} />}
111
+ {(args) => (
112
+ <Image
113
+ {...args}
114
+ imageAspectRatio={ratiosEnumValues.getValue(args.imageAspectRatio)}
115
+ imageSize={sizesEnumValues.getValue(args.imageSize)}
116
+ imageType={typesEnumValues.getValue(args.imageType)}
117
+ />
118
+ )}
71
119
  </Story>
72
120
  </Canvas>
73
121
 
74
- <ArgsTable story="Image Props" />
122
+ <ArgsTable story="Image with Controls" />
75
123
 
76
124
  ## Image Figure
77
125
 
@@ -1,11 +1,11 @@
1
- import * as React from "react";
2
1
  import { Box, useMultiStyleConfig } from "@chakra-ui/react";
2
+ import * as React from "react";
3
3
 
4
4
  import { ImageRatios, ImageSizes, ImageTypes } from "./ImageTypes";
5
5
 
6
6
  interface ImageWrapperProps {
7
7
  /** Optionally pass in additional Chakra-based styles. */
8
- additionalStyles?: { [key: string]: any };
8
+ additionalWrapperStyles?: { [key: string]: any };
9
9
  /** ClassName you can add in addition to 'image' */
10
10
  className?: string;
11
11
  /** Optional value to control the aspect ratio of the cartd image; default value is `square` */
@@ -15,6 +15,10 @@ interface ImageWrapperProps {
15
15
  }
16
16
 
17
17
  export interface ImageProps extends ImageWrapperProps {
18
+ /** Optionally pass in additional Chakra-based styles only for the figure. */
19
+ additionalFigureStyles?: { [key: string]: any };
20
+ /** Optionally pass in additional Chakra-based styles only for the image. */
21
+ additionalImageStyles?: { [key: string]: any };
18
22
  /** Alternate text description of the image */
19
23
  alt: string;
20
24
  /** Custom image component */
@@ -33,7 +37,7 @@ export interface ImageProps extends ImageWrapperProps {
33
37
 
34
38
  function ImageWrapper(props: React.PropsWithChildren<ImageWrapperProps>) {
35
39
  const {
36
- additionalStyles = {},
40
+ additionalWrapperStyles = {},
37
41
  className = "",
38
42
  children,
39
43
  imageAspectRatio = ImageRatios.Original,
@@ -45,19 +49,21 @@ function ImageWrapper(props: React.PropsWithChildren<ImageWrapperProps>) {
45
49
  });
46
50
  return (
47
51
  <Box
48
- __css={{ ...styles, ...additionalStyles }}
49
52
  className={`the-wrap ${className}`}
53
+ __css={{ ...styles, ...additionalWrapperStyles }}
50
54
  >
51
- <Box __css={styles.crop} className="the-crop">
55
+ <Box className="the-crop" __css={styles.crop}>
52
56
  {children}
53
57
  </Box>
54
58
  </Box>
55
59
  );
56
60
  }
57
61
 
58
- export default function Image(props: React.ComponentProps<"img"> & ImageProps) {
62
+ export default function Image(props: ImageProps) {
59
63
  const {
60
- additionalStyles = {},
64
+ additionalFigureStyles = {},
65
+ additionalImageStyles = {},
66
+ additionalWrapperStyles = {},
61
67
  alt,
62
68
  className = "",
63
69
  component,
@@ -81,14 +87,19 @@ export default function Image(props: React.ComponentProps<"img"> & ImageProps) {
81
87
  const imageComponent: JSX.Element = component ? (
82
88
  component
83
89
  ) : (
84
- <Box as="img" src={src} alt={alt} __css={styles.img} />
90
+ <Box
91
+ as="img"
92
+ src={src}
93
+ alt={alt}
94
+ __css={{ ...styles.img, ...additionalImageStyles }}
95
+ />
85
96
  );
86
97
  const finalImage = useImageWrapper ? (
87
98
  <ImageWrapper
88
99
  className={className}
89
100
  imageAspectRatio={imageAspectRatio}
90
101
  imageSize={imageSize}
91
- additionalStyles={additionalStyles}
102
+ additionalWrapperStyles={additionalWrapperStyles}
92
103
  >
93
104
  {imageComponent}
94
105
  </ImageWrapper>
@@ -97,7 +108,7 @@ export default function Image(props: React.ComponentProps<"img"> & ImageProps) {
97
108
  );
98
109
 
99
110
  return imageCaption || imageCredit ? (
100
- <Box as="figure" __css={styles.figure}>
111
+ <Box as="figure" __css={{ ...styles.figure, ...additionalFigureStyles }}>
101
112
  {finalImage}
102
113
  <Box as="figcaption" __css={styles.figcaption}>
103
114
  {imageCaption && (
@@ -1,11 +1,11 @@
1
+ import { Box } 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";
8
- import { Box } from "@chakra-ui/react";
6
+ Meta,
7
+ Story,
8
+ } from "@storybook/addon-docs";
9
9
 
10
10
  import Label from "./Label";
11
11
  import { getCategory } from "../../utils/componentCategories";
@@ -17,8 +17,15 @@ import { getCategory } from "../../utils/componentCategories";
17
17
  jest: ["Label.test.tsx"],
18
18
  }}
19
19
  argTypes={{
20
- className: { table: { disable: true } },
21
- id: { table: { disable: true } },
20
+ className: { control: false },
21
+ id: { control: false },
22
+ optReqFlag: {
23
+ control: { type: "select" },
24
+ options: ["Required", "Optional", ""],
25
+ },
26
+ text: {
27
+ description: "Only used for Storybook",
28
+ },
22
29
  }}
23
30
  />
24
31
 
@@ -33,26 +40,20 @@ import { getCategory } from "../../utils/componentCategories";
33
40
 
34
41
  <Canvas>
35
42
  <Story
36
- name="Label"
43
+ name="Label with Controls"
37
44
  args={{
38
- text: "A label for a villager.",
39
- optReqFlag: "Required",
45
+ className: undefined,
40
46
  htmlFor: "id-of-input-element",
41
- }}
42
- argTypes={{
43
- optReqFlag: {
44
- control: {
45
- type: "select",
46
- },
47
- options: ["Required", "Optional", ""],
48
- },
47
+ id: "label-id",
48
+ optReqFlag: "Required",
49
+ text: "A label for a villager.",
49
50
  }}
50
51
  >
51
52
  {(args) => <Label {...args}>{args.text}</Label>}
52
53
  </Story>
53
54
  </Canvas>
54
55
 
55
- <ArgsTable story="Label" />
56
+ <ArgsTable story="Label with Controls" />
56
57
 
57
58
  ## Required/Optional helper text
58
59
 
@@ -1,23 +1,26 @@
1
+ import { 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";
8
- import { withDesign } from "storybook-addon-designs";
6
+ Meta,
7
+ Story,
8
+ } from "@storybook/addon-docs";
9
9
  import {
10
10
  BrowserRouter as Router,
11
11
  Link as ReactRouterLink,
12
12
  } from "react-router-dom";
13
- import { VStack } from "@chakra-ui/react";
13
+ import { withDesign } from "storybook-addon-designs";
14
14
 
15
15
  import Link from "./Link";
16
16
  import { LinkTypes } from "./LinkTypes";
17
17
  import Icon from "../Icons/Icon";
18
- import { IconAlign, IconSizes } from "../Icons/IconTypes";
18
+ import { IconAlign, IconNames, IconSizes } from "../Icons/IconTypes";
19
19
  import { getCategory } from "../../utils/componentCategories";
20
20
  import DSProvider from "../../theme/provider";
21
+ import { getStorybookEnumValues } from "../../utils/utils";
22
+
23
+ export const enumValues = getStorybookEnumValues(LinkTypes, "LinkTypes");
21
24
 
22
25
  <Meta
23
26
  title={getCategory("Link")}
@@ -31,13 +34,15 @@ import DSProvider from "../../theme/provider";
31
34
  jest: ["Link.test.tsx"],
32
35
  }}
33
36
  argTypes={{
34
- attributes: { table: { disable: true } },
37
+ additionalStyles: { control: false },
38
+ attributes: { control: false },
35
39
  children: { table: { disable: true } },
40
+ key: { table: { disable: true } },
41
+ ref: { table: { disable: true } },
36
42
  type: {
37
- control: {
38
- type: "select",
39
- },
40
- options: LinkTypes,
43
+ control: { type: "select" },
44
+ table: { defaultValue: { summary: "LinkTypes.Default" } },
45
+ options: enumValues.options,
41
46
  },
42
47
  }}
43
48
  />
@@ -47,29 +52,34 @@ import DSProvider from "../../theme/provider";
47
52
  | Component Version | DS Version |
48
53
  | ----------------- | ---------- |
49
54
  | Added | `0.0.4` |
50
- | Latest | `0.25.8` |
55
+ | Latest | `0.25.9` |
51
56
 
52
57
  <Description of={Link} />
53
58
 
54
59
  <Canvas withToolbar>
55
60
  <Story
56
- name="Basic"
61
+ name="Link with Controls"
57
62
  args={{
58
- id: "nypl-link",
59
- type: LinkTypes.Action,
60
- href: "https://nypl.org",
61
- className: "custom-class",
63
+ additionalStyles: undefined,
62
64
  attributes: {
63
65
  rel: "nofollow",
64
66
  onClick: (e) => e.preventDefault(),
65
67
  },
68
+ className: "custom-class",
69
+ href: "https://nypl.org",
70
+ id: "nypl-link",
71
+ type: "LinkTypes.Action",
66
72
  }}
67
73
  >
68
- {(args) => <Link {...args}>Link</Link>}
74
+ {(args) => (
75
+ <Link {...args} type={enumValues.getValue(args.type)}>
76
+ Link
77
+ </Link>
78
+ )}
69
79
  </Story>
70
80
  </Canvas>
71
81
 
72
- <ArgsTable story="Basic" />
82
+ <ArgsTable story="Link with Controls" />
73
83
 
74
84
  ## Links With Icons
75
85
 
@@ -89,12 +99,20 @@ links with icons. Icons can be rendered to the left or right of the link text.
89
99
  Clock Link
90
100
  </Link>
91
101
  <Link type={LinkTypes.Action} href="#passed-in-link">
92
- <Icon name="check" align={IconAlign.Left} size={IconSizes.Small} />
102
+ <Icon
103
+ name={IconNames.Check}
104
+ align={IconAlign.Left}
105
+ size={IconSizes.Small}
106
+ />
93
107
  Check Link
94
108
  </Link>
95
109
  <Link type={LinkTypes.Action} href="#passed-in-link-right">
96
110
  Check Link Right
97
- <Icon name="check" align={IconAlign.Right} size={IconSizes.Small} />
111
+ <Icon
112
+ name={IconNames.Check}
113
+ align={IconAlign.Right}
114
+ size={IconSizes.Small}
115
+ />
98
116
  </Link>
99
117
  </VStack>
100
118
  </Story>
@@ -102,8 +120,29 @@ links with icons. Icons can be rendered to the left or right of the link text.
102
120
 
103
121
  ## Anchor Element Rendering
104
122
 
105
- `Link` can wrap an existing `<a>` tag or it can use the `href` prop to generate
106
- an `<a>` tag.
123
+ `Link` can wrap an existing `<a>` element (and `Icon` component) or it
124
+ can use the `href` prop to generate an `<a>` element.
125
+
126
+ ```jsx
127
+ // Existing anchor element
128
+ <Link type={LinkTypes.Action}>
129
+ <a href="#existing-anchor-tag">link</a>
130
+ </Link>
131
+
132
+ // Also works with an icon component. Make sure to wrap the icon and anchor
133
+ // in a single element for this pattern.
134
+ <Link type={LinkTypes.Action}>
135
+ <>
136
+ <Icon name={IconNames.Check} align={IconAlign.Left} size={IconSizes.Small} />
137
+ <a href="#existing-anchor-tag">check link</a>
138
+ </>
139
+ </Link>
140
+
141
+ // Otherwise, the `href` prop will generate an `<a>` tag.
142
+ <Link type={LinkTypes.Action} href="#passed-in-link">
143
+ link
144
+ </Link>
145
+ ```
107
146
 
108
147
  <Canvas>
109
148
  <Story name="Anchor Element Rendering">
@@ -112,11 +151,23 @@ an `<a>` tag.
112
151
  <Link type={LinkTypes.Action}>
113
152
  <a href="#existing-anchor-tag">link</a>
114
153
  </Link>{" "}
115
- with the &lt;a&gt; tag as a child of the Link component. And this is a{" "}
154
+ with the &lt;a&gt; element as a child of the `Link` component. This is a{" "}
116
155
  <Link type={LinkTypes.Action} href="#passed-in-link">
117
156
  link
118
157
  </Link>{" "}
119
- where the Link component uses the `href` prop and has a string-only child.
158
+ where the `Link` component uses the `href` prop and has a string-only
159
+ child. Finally, this is a{" "}
160
+ <Link type={LinkTypes.Action}>
161
+ <>
162
+ <Icon
163
+ name={IconNames.Check}
164
+ align={IconAlign.Left}
165
+ size={IconSizes.Small}
166
+ />
167
+ <a href="#existing-anchor-tag">link</a>
168
+ </>
169
+ </Link>{" "}
170
+ with a check icon.
120
171
  </>
121
172
  </Story>
122
173
  </Canvas>
@@ -144,9 +195,11 @@ an `<a>` tag.
144
195
 
145
196
  The Design System's `Link` component should wrap around `react-router`'s own
146
197
  `Link` component. To avoid name conflicts, rename either the Design System's
147
- or `react-router`'s `Link` component.
198
+ or `react-router`'s `Link` component. Any of the following patterns are valid.
148
199
 
149
200
  ```jsx
201
+ // In this first example, React Router's `Link` component
202
+ // is renamed as `ReactRouterLink`.
150
203
  import {
151
204
  BrowserRouter as Router,
152
205
  Link as ReactRouterLink,
@@ -157,8 +210,9 @@ import { Link, LinkTypes } from "@nypl/design-system-react-components";
157
210
  <ReactRouterLink to="#">Next Page</ReactRouterLink>
158
211
  </Link>;
159
212
 
160
- // or
161
-
213
+ // In this second example, React Router's `Link` component
214
+ // is not renamed but the DS's `Link` component is renamed
215
+ // to `DSLink`.
162
216
  import { BrowserRouter, Link } from "react-router-dom";
163
217
  import {
164
218
  Link as DSLink,
@@ -169,8 +223,9 @@ import {
169
223
  <Link to="#">Next Page</Link>
170
224
  </DSLink>;
171
225
 
172
- // or
173
-
226
+ // In this third example, React Router's `Link` component
227
+ // is not renamed and the DS's `Link` component is
228
+ // imported and rendered as `DS.Link`.
174
229
  import { BrowserRouter, Link } from "react-router-dom";
175
230
  import DS from "@nypl/design-system-react-components";
176
231
 
@@ -200,34 +255,30 @@ pages in a NextJS app.
200
255
  ```jsx
201
256
  import { Link, LinkTypes } from "@nypl/design-system-react-components";
202
257
 
203
- /* This is just an example wrapper that works similarly to NextJS' `Link`
258
+ /**
259
+ * This is just an example wrapper that works similarly to NextJS' `Link`
204
260
  * component. In real life, NextJS's `Link` component will pass down the
205
261
  * `href` and `passHref` props and a `ref` to make routing functional.
206
262
  */
207
- export const NextJsLink = (props: HTMLAnchorElement) => (
208
- <div>
209
- {React.cloneElement(
210
- props.children,
211
- { ...props },
212
- props.children.props.children
213
- )}
214
- </div>
215
- );
216
-
263
+ export const NextJsLink = (props: HTMLAnchorElement) =>
264
+ React.cloneElement(
265
+ props.children,
266
+ { ...props },
267
+ props.children.props.children
268
+ );
269
+
270
+ // Note that NextJS' `href` and `passHref` props are required.
217
271
  <NextJsLink href="#" passHref>
218
272
  <Link type={LinkTypes.Action}>Next Page</Link>
219
273
  </NextJsLink>;
220
274
  ```
221
275
 
222
- export const NextJsLink = (props) => (
223
- <div>
224
- {React.cloneElement(
225
- props.children,
226
- { ...props },
227
- props.children.props.children
228
- )}
229
- </div>
230
- );
276
+ export const NextJsLink = (props) =>
277
+ React.cloneElement(
278
+ props.children,
279
+ { ...props },
280
+ props.children.props.children
281
+ );
231
282
 
232
283
  <Canvas>
233
284
  <DSProvider>