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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/CHANGELOG.md +110 -1
  2. package/README.md +1 -1
  3. package/dist/components/Button/Button.d.ts +6 -6
  4. package/dist/components/Button/ButtonTypes.d.ts +0 -1
  5. package/dist/components/Card/Card.d.ts +6 -4
  6. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  7. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +3 -2
  8. package/dist/components/ComponentWrapper/ComponentWrapper.d.ts +8 -2
  9. package/dist/components/DatePicker/DatePicker.d.ts +4 -3
  10. package/dist/components/Fieldset/Fieldset.d.ts +1 -3
  11. package/dist/components/Form/Form.d.ts +15 -14
  12. package/dist/components/Form/FormTypes.d.ts +2 -2
  13. package/dist/components/Heading/Heading.d.ts +7 -3
  14. package/dist/components/Heading/HeadingTypes.d.ts +6 -6
  15. package/dist/components/HelperErrorText/HelperErrorText.d.ts +5 -2
  16. package/dist/components/HorizontalRule/HorizontalRule.d.ts +3 -3
  17. package/dist/components/Icons/Icon.d.ts +4 -4
  18. package/dist/components/Icons/IconSvgs.d.ts +0 -21
  19. package/dist/components/Icons/IconTypes.d.ts +0 -23
  20. package/dist/components/Image/Image.d.ts +11 -3
  21. package/dist/components/List/List.d.ts +1 -1
  22. package/dist/components/Logo/Logo.d.ts +28 -0
  23. package/dist/components/Logo/LogoSvgs.d.ts +34 -0
  24. package/dist/components/Logo/LogoTypes.d.ts +46 -0
  25. package/dist/components/Modal/Modal.d.ts +0 -4
  26. package/dist/components/Notification/Notification.d.ts +4 -2
  27. package/dist/components/Placeholder/Placeholder.d.ts +3 -5
  28. package/dist/components/Radio/Radio.d.ts +6 -5
  29. package/dist/components/RadioGroup/RadioGroup.d.ts +6 -5
  30. package/dist/components/SearchBar/SearchBar.d.ts +15 -7
  31. package/dist/components/Select/Select.d.ts +7 -2
  32. package/dist/components/SkeletonLoader/SkeletonLoader.d.ts +8 -4
  33. package/dist/components/Slider/Slider.d.ts +3 -2
  34. package/dist/components/StatusBadge/StatusBadge.d.ts +2 -1
  35. package/dist/components/StructuredContent/StructuredContent.d.ts +41 -0
  36. package/dist/components/StructuredContent/StructuredContentTypes.d.ts +5 -0
  37. package/dist/components/Table/Table.d.ts +29 -0
  38. package/dist/components/Template/Template.d.ts +30 -6
  39. package/dist/components/Text/Text.d.ts +2 -2
  40. package/dist/components/TextInput/TextInput.d.ts +4 -3
  41. package/dist/components/Toggle/Toggle.d.ts +3 -2
  42. package/dist/components/VideoPlayer/VideoPlayer.d.ts +14 -5
  43. package/dist/design-system-react-components.cjs.development.js +6721 -5777
  44. package/dist/design-system-react-components.cjs.development.js.map +1 -1
  45. package/dist/design-system-react-components.cjs.production.min.js +1 -1
  46. package/dist/design-system-react-components.cjs.production.min.js.map +1 -1
  47. package/dist/design-system-react-components.esm.js +6774 -5839
  48. package/dist/design-system-react-components.esm.js.map +1 -1
  49. package/dist/index.d.ts +10 -8
  50. package/dist/resources.scss +0 -2
  51. package/dist/styles.css +2 -2
  52. package/dist/theme/components/breadcrumb.d.ts +1 -1
  53. package/dist/theme/components/button.d.ts +0 -12
  54. package/dist/theme/components/card.d.ts +14 -2
  55. package/dist/theme/components/customTable.d.ts +56 -0
  56. package/dist/theme/components/fieldset.d.ts +2 -2
  57. package/dist/theme/components/global.d.ts +1 -1
  58. package/dist/theme/components/heading.d.ts +4 -0
  59. package/dist/theme/components/label.d.ts +1 -1
  60. package/dist/theme/components/link.d.ts +14 -1
  61. package/dist/theme/components/list.d.ts +0 -2
  62. package/dist/theme/components/logo.d.ts +4 -0
  63. package/dist/theme/components/notification.d.ts +13 -4
  64. package/dist/theme/components/searchBar.d.ts +9 -11
  65. package/dist/theme/components/select.d.ts +1 -0
  66. package/dist/theme/components/structuredContent.d.ts +33 -0
  67. package/dist/theme/components/template.d.ts +10 -10
  68. package/dist/theme/components/textInput.d.ts +4 -0
  69. package/dist/theme/components/toggle.d.ts +8 -5
  70. package/dist/utils/utils.d.ts +10 -0
  71. package/package.json +40 -37
  72. package/src/__tests__/utils/utils.test.ts +23 -1
  73. package/src/components/Accordion/Accordion.stories.mdx +15 -13
  74. package/src/components/Accordion/Accordion.test.tsx +45 -1
  75. package/src/components/Accordion/Accordion.tsx +20 -8
  76. package/src/components/Accordion/__snapshots__/Accordion.test.tsx.snap +243 -0
  77. package/src/components/Autosuggest/Autosuggest.stories.mdx +2 -1
  78. package/src/components/Autosuggest/Autosuggest.stories.tsx +24 -48
  79. package/src/components/Autosuggest/_Autosuggest.scss +2 -6
  80. package/src/components/Breadcrumbs/Breadcrumbs.stories.mdx +43 -13
  81. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +15 -0
  82. package/src/components/Breadcrumbs/Breadcrumbs.tsx +9 -3
  83. package/src/components/Breadcrumbs/__snapshots__/Breadcrumbs.test.tsx.snap +5 -5
  84. package/src/components/Button/Button.stories.mdx +93 -48
  85. package/src/components/Button/Button.test.tsx +0 -12
  86. package/src/components/Button/Button.tsx +7 -7
  87. package/src/components/Button/ButtonTypes.tsx +0 -1
  88. package/src/components/Button/__snapshots__/Button.test.tsx.snap +0 -12
  89. package/src/components/Card/Card.stories.mdx +186 -71
  90. package/src/components/Card/Card.test.tsx +45 -22
  91. package/src/components/Card/Card.tsx +21 -6
  92. package/src/components/Card/__snapshots__/Card.test.tsx.snap +9 -3
  93. package/src/components/Chakra/Box.stories.mdx +3 -3
  94. package/src/components/Chakra/Center.stories.mdx +5 -5
  95. package/src/components/Chakra/Flex.stories.mdx +113 -0
  96. package/src/components/Chakra/Grid.stories.mdx +3 -3
  97. package/src/components/Chakra/Stack.stories.mdx +2 -2
  98. package/src/components/Checkbox/Checkbox.stories.mdx +37 -15
  99. package/src/components/Checkbox/Checkbox.tsx +13 -8
  100. package/src/components/CheckboxGroup/CheckboxGroup.stories.mdx +48 -16
  101. package/src/components/CheckboxGroup/CheckboxGroup.tsx +14 -10
  102. package/src/components/CheckboxGroup/__snapshots__/CheckboxGroup.test.tsx.snap +6 -3
  103. package/src/components/ComponentWrapper/ComponentWrapper.test.tsx +151 -0
  104. package/src/components/ComponentWrapper/ComponentWrapper.tsx +36 -23
  105. package/src/components/ComponentWrapper/__snapshots__/ComponentWrapper.test.tsx.snap +85 -0
  106. package/src/components/DatePicker/DatePicker.stories.mdx +63 -18
  107. package/src/components/DatePicker/DatePicker.test.tsx +6 -6
  108. package/src/components/DatePicker/DatePicker.tsx +17 -11
  109. package/src/components/DatePicker/__snapshots__/DatePicker.test.tsx.snap +50 -24
  110. package/src/components/Fieldset/Fieldset.stories.mdx +20 -9
  111. package/src/components/Fieldset/Fieldset.tsx +2 -4
  112. package/src/components/Form/Form.stories.mdx +75 -49
  113. package/src/components/Form/Form.test.tsx +92 -3
  114. package/src/components/Form/Form.tsx +28 -23
  115. package/src/components/Form/FormTypes.tsx +2 -2
  116. package/src/components/Form/__snapshots__/Form.test.tsx.snap +0 -1
  117. package/src/components/Grid/SimpleGrid.stories.mdx +26 -26
  118. package/src/components/Heading/Heading.stories.mdx +59 -23
  119. package/src/components/Heading/Heading.test.tsx +82 -18
  120. package/src/components/Heading/Heading.tsx +31 -31
  121. package/src/components/Heading/HeadingTypes.tsx +6 -6
  122. package/src/components/Heading/__snapshots__/Heading.test.tsx.snap +71 -0
  123. package/src/components/HelperErrorText/HelperErrorText.stories.mdx +55 -27
  124. package/src/components/HelperErrorText/HelperErrorText.test.tsx +42 -15
  125. package/src/components/HelperErrorText/HelperErrorText.tsx +24 -24
  126. package/src/components/HelperErrorText/__snapshots__/HelperErrorText.test.tsx.snap +41 -4
  127. package/src/components/Hero/Hero.stories.mdx +72 -53
  128. package/src/components/HorizontalRule/HorizontalRule.stories.mdx +11 -9
  129. package/src/components/HorizontalRule/HorizontalRule.tsx +4 -6
  130. package/src/components/HorizontalRule/__snapshots__/HorizontalRule.test.tsx.snap +4 -4
  131. package/src/components/Icons/Icon.stories.mdx +78 -77
  132. package/src/components/Icons/Icon.test.tsx +1 -1
  133. package/src/components/Icons/Icon.tsx +5 -6
  134. package/src/components/Icons/IconSvgs.tsx +0 -42
  135. package/src/components/Icons/IconTypes.tsx +0 -24
  136. package/src/components/Image/Image.stories.mdx +66 -18
  137. package/src/components/Image/Image.tsx +21 -10
  138. package/src/components/Label/Label.stories.mdx +20 -19
  139. package/src/components/Link/Link.stories.mdx +102 -51
  140. package/src/components/Link/Link.test.tsx +38 -8
  141. package/src/components/Link/Link.tsx +19 -12
  142. package/src/components/Link/__snapshots__/Link.test.tsx.snap +60 -0
  143. package/src/components/List/List.stories.mdx +60 -29
  144. package/src/components/List/List.test.tsx +1 -1
  145. package/src/components/List/List.tsx +2 -2
  146. package/src/components/List/__snapshots__/List.test.tsx.snap +3 -1
  147. package/src/components/Logo/Logo.stories.mdx +222 -0
  148. package/src/components/Logo/Logo.test.tsx +98 -0
  149. package/src/components/Logo/Logo.tsx +97 -0
  150. package/src/components/Logo/LogoSvgs.tsx +66 -0
  151. package/src/components/Logo/LogoTypes.tsx +48 -0
  152. package/src/components/Logo/__snapshots__/Logo.test.tsx.snap +71 -0
  153. package/src/components/Modal/Modal.stories.mdx +20 -5
  154. package/src/components/Modal/Modal.tsx +2 -8
  155. package/src/components/Notification/Notification.stories.mdx +128 -38
  156. package/src/components/Notification/Notification.test.tsx +49 -1
  157. package/src/components/Notification/Notification.tsx +25 -12
  158. package/src/components/Notification/__snapshots__/Notification.test.tsx.snap +4 -0
  159. package/src/components/Pagination/Pagination.stories.mdx +18 -7
  160. package/src/components/Pagination/Pagination.tsx +3 -3
  161. package/src/components/Placeholder/Placeholder.tsx +7 -14
  162. package/src/components/ProgressIndicator/ProgressIndicator.stories.mdx +72 -43
  163. package/src/components/Radio/Radio.stories.mdx +39 -19
  164. package/src/components/Radio/Radio.tsx +13 -9
  165. package/src/components/Radio/__snapshots__/Radio.test.tsx.snap +5 -5
  166. package/src/components/RadioGroup/RadioGroup.stories.mdx +50 -16
  167. package/src/components/RadioGroup/RadioGroup.test.tsx +13 -11
  168. package/src/components/RadioGroup/RadioGroup.tsx +97 -94
  169. package/src/components/RadioGroup/__snapshots__/RadioGroup.test.tsx.snap +24 -21
  170. package/src/components/SearchBar/SearchBar.Test.tsx +160 -34
  171. package/src/components/SearchBar/SearchBar.stories.mdx +115 -33
  172. package/src/components/SearchBar/SearchBar.tsx +72 -51
  173. package/src/components/Select/Select.stories.mdx +48 -14
  174. package/src/components/Select/Select.test.tsx +89 -0
  175. package/src/components/Select/Select.tsx +27 -12
  176. package/src/components/Select/__snapshots__/Select.test.tsx.snap +545 -0
  177. package/src/components/SkeletonLoader/SkeletonLoader.stories.mdx +50 -16
  178. package/src/components/SkeletonLoader/SkeletonLoader.tsx +8 -4
  179. package/src/components/Slider/Slider.stories.mdx +72 -22
  180. package/src/components/Slider/Slider.tsx +15 -10
  181. package/src/components/Slider/__snapshots__/Slider.test.tsx.snap +67 -30
  182. package/src/components/StatusBadge/StatusBadge.stories.mdx +33 -18
  183. package/src/components/StatusBadge/StatusBadge.tsx +2 -1
  184. package/src/components/StructuredContent/StructuredContent.stories.mdx +427 -0
  185. package/src/components/StructuredContent/StructuredContent.test.tsx +376 -0
  186. package/src/components/StructuredContent/StructuredContent.tsx +153 -0
  187. package/src/components/StructuredContent/StructuredContentTypes.tsx +5 -0
  188. package/src/components/StructuredContent/__snapshots__/StructuredContent.test.tsx.snap +283 -0
  189. package/src/components/StyleGuide/Bidirectionality.stories.mdx +32 -83
  190. package/src/components/StyleGuide/Breakpoints.stories.mdx +1 -11
  191. package/src/components/StyleGuide/Buttons.stories.mdx +3 -18
  192. package/src/components/StyleGuide/ColorCard.tsx +1 -2
  193. package/src/components/StyleGuide/Colors.stories.mdx +3 -11
  194. package/src/components/StyleGuide/DesignTokens.stories.mdx +3 -8
  195. package/src/components/StyleGuide/Forms.stories.mdx +2 -10
  196. package/src/components/StyleGuide/Iconography.stories.mdx +8 -34
  197. package/src/components/StyleGuide/Spacing.stories.mdx +3 -14
  198. package/src/components/StyleGuide/Typography.stories.mdx +64 -76
  199. package/src/components/Table/Table.stories.mdx +165 -0
  200. package/src/components/Table/Table.test.tsx +137 -0
  201. package/src/components/Table/Table.tsx +126 -0
  202. package/src/components/Table/__snapshots__/Table.test.tsx.snap +1179 -0
  203. package/src/components/Tabs/Tabs.stories.mdx +20 -14
  204. package/src/components/Tabs/Tabs.test.tsx +21 -5
  205. package/src/components/Tabs/Tabs.tsx +35 -20
  206. package/src/components/Tabs/__snapshots__/Tabs.test.tsx.snap +195 -0
  207. package/src/components/Template/Template.stories.mdx +132 -48
  208. package/src/components/Template/Template.test.tsx +128 -6
  209. package/src/components/Template/Template.tsx +93 -13
  210. package/src/components/Template/__snapshots__/Template.test.tsx.snap +169 -0
  211. package/src/components/Text/Text.stories.mdx +33 -11
  212. package/src/components/Text/Text.tsx +2 -2
  213. package/src/components/TextInput/TextInput.stories.mdx +84 -17
  214. package/src/components/TextInput/TextInput.test.tsx +96 -0
  215. package/src/components/TextInput/TextInput.tsx +12 -8
  216. package/src/components/TextInput/__snapshots__/TextInput.test.tsx.snap +240 -0
  217. package/src/components/Toggle/Toggle.stories.mdx +33 -9
  218. package/src/components/Toggle/Toggle.tsx +14 -9
  219. package/src/components/Toggle/__snapshots__/Toggle.test.tsx.snap +4 -4
  220. package/src/components/VideoPlayer/VideoPlayer.stories.mdx +64 -14
  221. package/src/components/VideoPlayer/VideoPlayer.tsx +17 -7
  222. package/src/components/VideoPlayer/__snapshots__/VideoPlayer.test.tsx.snap +12 -6
  223. package/src/docs/Chakra.stories.mdx +5 -8
  224. package/src/docs/Intro.stories.mdx +2 -2
  225. package/src/index.ts +13 -6
  226. package/src/styles/base/_03-base.scss +1 -1
  227. package/src/styles/base/_place-holder.scss +7 -7
  228. package/src/styles.scss +1 -5
  229. package/src/theme/components/breadcrumb.ts +4 -4
  230. package/src/theme/components/button.ts +5 -12
  231. package/src/theme/components/card.ts +5 -2
  232. package/src/theme/components/checkbox.ts +1 -1
  233. package/src/theme/components/customTable.ts +63 -0
  234. package/src/theme/components/datePicker.ts +1 -1
  235. package/src/theme/components/global.ts +7 -7
  236. package/src/theme/components/heading.ts +13 -11
  237. package/src/theme/components/helperErrorText.ts +1 -1
  238. package/src/theme/components/image.ts +1 -1
  239. package/src/theme/components/link.ts +17 -5
  240. package/src/theme/components/list.ts +3 -5
  241. package/src/theme/components/logo.ts +54 -0
  242. package/src/theme/components/notification.ts +19 -9
  243. package/src/theme/components/searchBar.ts +11 -13
  244. package/src/theme/components/select.ts +1 -0
  245. package/src/theme/components/statusBadge.ts +1 -1
  246. package/src/theme/components/structuredContent.ts +74 -0
  247. package/src/theme/components/template.ts +10 -10
  248. package/src/theme/components/text.ts +6 -6
  249. package/src/theme/components/textInput.ts +2 -0
  250. package/src/theme/components/toggle.ts +10 -6
  251. package/src/theme/components/videoPlayer.ts +0 -2
  252. package/src/theme/foundations/global.ts +2 -2
  253. package/src/theme/foundations/typography.ts +84 -12
  254. package/src/theme/index.ts +6 -0
  255. package/src/utils/componentCategories.ts +2 -1
  256. package/src/utils/utils.ts +17 -0
  257. package/dist/__tests__/utils/bem.test.d.ts +0 -1
  258. package/dist/components/CardEdition/CardEdition.d.ts +0 -21
  259. package/dist/components/CardEdition/CardEdition.stories.d.ts +0 -27
  260. package/dist/components/Input/Input.d.ts +0 -36
  261. package/dist/components/Input/Input.stories.d.ts +0 -29
  262. package/dist/components/Input/InputTypes.d.ts +0 -6
  263. package/dist/components/StyleGuide/UIDocCard.d.ts +0 -11
  264. package/dist/helpers/CSSVariablesHelper.d.ts +0 -3
  265. package/dist/helpers/getCSSVariable.d.ts +0 -1
  266. package/dist/interfaces.d.ts +0 -3
  267. package/dist/utils/bem.d.ts +0 -1
  268. package/src/__tests__/utils/bem.test.ts +0 -37
  269. package/src/components/CardEdition/CardEdition.stories.tsx +0 -122
  270. package/src/components/CardEdition/CardEdition.test.tsx +0 -395
  271. package/src/components/CardEdition/CardEdition.tsx +0 -60
  272. package/src/components/CardEdition/_CardEdition.scss +0 -137
  273. package/src/components/Input/Input.stories.tsx +0 -133
  274. package/src/components/Input/Input.test.tsx +0 -266
  275. package/src/components/Input/Input.tsx +0 -81
  276. package/src/components/Input/InputTypes.tsx +0 -8
  277. package/src/components/Input/_Input.scss +0 -78
  278. package/src/components/StyleGuide/UIDocCard.tsx +0 -36
  279. package/src/helpers/CSSVariablesHelper.tsx +0 -34
  280. package/src/helpers/getCSSVariable.tsx +0 -5
  281. package/src/interfaces.ts +0 -3
  282. package/src/utils/bem.ts +0 -44
@@ -17,6 +17,8 @@ interface BaseProps {
17
17
  centered?: boolean;
18
18
  /** Optional custom `Icon` that will override the default `Icon`. */
19
19
  icon?: JSX.Element;
20
+ /** ID that other components can cross reference for accessibility purposes. */
21
+ id?: string;
20
22
  /** Optional prop to control the coloring of the `Notification` text and the
21
23
  * visibility of an applicable icon. */
22
24
  notificationType?: NotificationTypes;
@@ -28,6 +30,8 @@ type BasePropsWithoutAlignText = Omit<BaseProps, "alignText">;
28
30
  type BasePropsWithoutCentered = Omit<BaseProps, "centered">;
29
31
 
30
32
  export interface NotificationProps extends BasePropsWithoutAlignText {
33
+ /** Label used to describe the `Notification`'s aside HTML element. */
34
+ ariaLabel?: string;
31
35
  /** Additional `className` to add. */
32
36
  className?: string;
33
37
  /** Optional prop to control whether a `Notification` can be dismissed
@@ -35,8 +39,6 @@ export interface NotificationProps extends BasePropsWithoutAlignText {
35
39
  dismissible?: boolean;
36
40
  /** Optional custom `Icon` that will override the default `Icon`. */
37
41
  icon?: JSX.Element;
38
- /** ID that other components can cross reference for accessibility purposes. */
39
- id?: string;
40
42
  /** Optional prop to control the margin around the `Notification` component. */
41
43
  noMargin?: boolean;
42
44
  /** Content to be rendered in a `NotificationContent` component. */
@@ -53,7 +55,7 @@ export interface NotificationProps extends BasePropsWithoutAlignText {
53
55
  export function NotificationHeading(
54
56
  props: React.PropsWithChildren<BasePropsWithoutAlignText>
55
57
  ) {
56
- const { centered, children, icon, notificationType } = props;
58
+ const { centered, children, icon, id, notificationType } = props;
57
59
  const styles = useMultiStyleConfig("NotificationHeading", {
58
60
  centered,
59
61
  icon,
@@ -62,7 +64,11 @@ export function NotificationHeading(
62
64
  return (
63
65
  <Box as="header" __css={styles}>
64
66
  {icon}
65
- <Heading level={HeadingLevels.Four} additionalStyles={styles.heading}>
67
+ <Heading
68
+ additionalStyles={styles.heading}
69
+ id={`${id}-heading`}
70
+ level={HeadingLevels.Four}
71
+ >
66
72
  {children}
67
73
  </Heading>
68
74
  </Box>
@@ -95,6 +101,7 @@ export function NotificationContent(
95
101
  */
96
102
  export default function Notification(props: NotificationProps) {
97
103
  const {
104
+ ariaLabel,
98
105
  centered = false,
99
106
  className,
100
107
  dismissible = false,
@@ -110,15 +117,15 @@ export default function Notification(props: NotificationProps) {
110
117
  const handleClose = () => setIsOpen(false);
111
118
  const styles = useMultiStyleConfig("Notification", {
112
119
  centered,
120
+ dismissible,
113
121
  noMargin,
114
122
  notificationType,
115
- showIcon,
116
123
  });
117
124
  const iconElement = () => {
118
125
  const baseIconProps = {
126
+ additionalStyles: styles.icon,
119
127
  decorative: false,
120
128
  size: IconSizes.Large,
121
- additionalStyles: styles.icon,
122
129
  };
123
130
  // If the icon should not display, return null.
124
131
  if (!showIcon) {
@@ -132,16 +139,19 @@ export default function Notification(props: NotificationProps) {
132
139
  });
133
140
  const iconProps = {
134
141
  [NotificationTypes.Announcement]: {
135
- name: IconNames.SpeakerNotes,
136
142
  color: IconColors.SectionResearchSecondary,
143
+ name: IconNames.SpeakerNotes,
144
+ title: "Notification announcement icon",
137
145
  },
138
146
  [NotificationTypes.Standard]: {
139
- name: IconNames.AlertNotificationImportant,
140
147
  color: IconColors.UiBlack,
148
+ name: IconNames.AlertNotificationImportant,
149
+ title: "Notification standard icon",
141
150
  },
142
151
  [NotificationTypes.Warning]: {
143
- name: IconNames.ErrorFilled,
144
152
  color: IconColors.BrandPrimary,
153
+ name: IconNames.ErrorFilled,
154
+ title: "Notification warning icon",
145
155
  },
146
156
  };
147
157
  return (
@@ -159,10 +169,11 @@ export default function Notification(props: NotificationProps) {
159
169
  additionalStyles={styles.dismissibleButton}
160
170
  >
161
171
  <Icon
162
- id={`${id}-notification-dismissible-icon`}
163
172
  decorative={false}
173
+ id={`${id}-notification-dismissible-icon`}
164
174
  name={IconNames.Close}
165
175
  size={IconSizes.Large}
176
+ title="Notification close icon"
166
177
  />
167
178
  </Button>
168
179
  );
@@ -171,6 +182,7 @@ export default function Notification(props: NotificationProps) {
171
182
  <NotificationHeading
172
183
  centered={centered}
173
184
  icon={iconElem}
185
+ id={id}
174
186
  notificationType={notificationType}
175
187
  >
176
188
  {notificationHeading}
@@ -194,11 +206,12 @@ export default function Notification(props: NotificationProps) {
194
206
  }
195
207
  return (
196
208
  <Box
209
+ aria-label={ariaLabel}
197
210
  as="aside"
198
- id={id}
199
211
  className={className}
200
- __css={styles}
201
212
  data-type={notificationType}
213
+ id={id}
214
+ __css={styles}
202
215
  >
203
216
  <Box __css={styles.container}>
204
217
  {childHeading}
@@ -46,6 +46,7 @@ exports[`Notification renders the UI snapshot correctly 1`] = `
46
46
  </svg>
47
47
  <h4
48
48
  className="chakra-heading css-0"
49
+ id="notificationID1-heading"
49
50
  >
50
51
  Notification Heading
51
52
  </h4>
@@ -109,6 +110,7 @@ exports[`Notification renders the UI snapshot correctly 2`] = `
109
110
  </svg>
110
111
  <h4
111
112
  className="chakra-heading css-0"
113
+ id="notificationID2-heading"
112
114
  >
113
115
  Notification Heading
114
116
  </h4>
@@ -172,6 +174,7 @@ exports[`Notification renders the UI snapshot correctly 3`] = `
172
174
  </svg>
173
175
  <h4
174
176
  className="chakra-heading css-0"
177
+ id="notificationID3-heading"
175
178
  >
176
179
  Notification Heading
177
180
  </h4>
@@ -257,6 +260,7 @@ exports[`Notification renders the UI snapshot correctly 5`] = `
257
260
  >
258
261
  <h4
259
262
  className="chakra-heading css-0"
263
+ id="notificationID5-heading"
260
264
  >
261
265
  Notification Heading
262
266
  </h4>
@@ -1,12 +1,13 @@
1
1
  import {
2
- Meta,
3
- Story,
4
2
  ArgsTable,
5
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
  import { withQuery } from "@storybook/addon-queryparams";
10
+
10
11
  import Pagination from "./Pagination";
11
12
  import * as stories from "./Pagination.stories.tsx";
12
13
  import { getCategory } from "../../utils/componentCategories";
@@ -23,9 +24,11 @@ import { getCategory } from "../../utils/componentCategories";
23
24
  jest: ["Pagination.test.tsx"],
24
25
  }}
25
26
  argTypes={{
26
- id: { table: { disable: true } },
27
- getPageHref: { table: { disable: true } },
28
- onPageChange: { table: { disable: true } },
27
+ className: { control: false },
28
+ getPageHref: { control: false },
29
+ id: { control: false },
30
+ initialPage: { table: { defaultValue: { summary: 1 } } },
31
+ onPageChange: { control: false },
29
32
  }}
30
33
  />
31
34
 
@@ -34,7 +37,7 @@ import { getCategory } from "../../utils/componentCategories";
34
37
  | Component Version | DS Version |
35
38
  | ----------------- | ---------- |
36
39
  | Added | `0.0.10` |
37
- | Latest | `0.25.3` |
40
+ | Latest | `0.25.10` |
38
41
 
39
42
  <Description of={Pagination} />
40
43
 
@@ -69,7 +72,11 @@ const getPageHref = (selectedPage: number) => {
69
72
  <Story
70
73
  name="Pagination with URL Updates"
71
74
  args={{
75
+ className: undefined,
76
+ getPageHref: undefined,
77
+ id: "pagination-id",
72
78
  initialPage: 1,
79
+ onPageChange: undefined,
73
80
  pageCount: 10,
74
81
  }}
75
82
  >
@@ -102,7 +109,11 @@ const onPageChange = (currentPage: number) => {
102
109
  <Story
103
110
  name="Pagination with Unchanging URL"
104
111
  args={{
112
+ className: undefined,
113
+ getPageHref: undefined,
114
+ id: "pagination-id-2",
105
115
  initialPage: 7,
116
+ onPageChange: undefined,
106
117
  pageCount: 100,
107
118
  }}
108
119
  >
@@ -31,10 +31,10 @@ export interface PaginationProps {
31
31
  const Pagination: React.FC<PaginationProps> = (props: PaginationProps) => {
32
32
  const {
33
33
  className,
34
- initialPage = 1,
35
34
  getPageHref,
36
35
  id = generateUUID(),
37
- onPageChange = () => {},
36
+ initialPage = 1,
37
+ onPageChange,
38
38
  pageCount,
39
39
  } = props;
40
40
  const [currentPage, setCurrentPage] = useState<number>(initialPage);
@@ -63,7 +63,7 @@ const Pagination: React.FC<PaginationProps> = (props: PaginationProps) => {
63
63
  e.preventDefault && e.preventDefault();
64
64
  if (currentPage === selectedPage) return;
65
65
  setCurrentPage(selectedPage);
66
- onPageChange(selectedPage);
66
+ onPageChange && onPageChange(selectedPage);
67
67
  };
68
68
  // Select the previous page.
69
69
  const previousPage = (e: Event) => {
@@ -1,24 +1,17 @@
1
1
  import * as React from "react";
2
- import bem from "../../utils/bem";
3
2
 
4
3
  export interface PlaceholderProps {
5
- /** BlockName for use with BEM. See how to work with blockNames and BEM here: http://getbem.com/introduction/ */
6
- blockName?: string;
7
- /** Modifiers array for use with BEM. See how to work with modifiers and BEM here: http://getbem.com/introduction/ */
8
- modifiers?: string[];
4
+ /** Modifier string for the classname. */
5
+ variant?: string;
9
6
  }
10
7
 
11
8
  /** Creates a gray box with an editable string for dropping in spaces
12
9
  * within components or on templates where a component will be but
13
10
  * that hasn't been created yet
14
11
  */
15
- export default function Placeholder(
16
- props: React.PropsWithChildren<PlaceholderProps>
17
- ) {
18
- const { modifiers = [], blockName } = props;
19
- return (
20
- <div className={bem("placeholder", modifiers, blockName)}>
21
- {props.children}
22
- </div>
23
- );
12
+ export default function Placeholder({
13
+ children,
14
+ variant,
15
+ }: React.PropsWithChildren<PlaceholderProps>) {
16
+ return <div className={`placeholder placeholder-${variant}`}>{children}</div>;
24
17
  }
@@ -1,22 +1,32 @@
1
+ import { Box } from "@chakra-ui/react";
1
2
  import {
2
- Meta,
3
- Story,
4
3
  ArgsTable,
5
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 } from "@chakra-ui/react";
10
10
 
11
+ import { GridGaps } from "../Grid/GridTypes";
11
12
  import ProgressIndicator from "./ProgressIndicator";
12
13
  import {
13
14
  ProgressIndicatorSizes,
14
15
  ProgressIndicatorTypes,
15
16
  } from "./ProgressIndicatorTypes";
17
+ import SimpleGrid from "../Grid/SimpleGrid";
16
18
  import { getCategory } from "../../utils/componentCategories";
17
19
  import DSProvider from "../../theme/provider";
18
- import SimpleGrid from "../Grid/SimpleGrid";
19
- import { GridGaps } from "../Grid/GridTypes";
20
+ import { getStorybookEnumValues } from "../../utils/utils";
21
+
22
+ export const sizesEnumValues = getStorybookEnumValues(
23
+ ProgressIndicatorSizes,
24
+ "ProgressIndicatorSizes"
25
+ );
26
+ export const typesEnumValues = getStorybookEnumValues(
27
+ ProgressIndicatorTypes,
28
+ "ProgressIndicatorTypes"
29
+ );
20
30
 
21
31
  <Meta
22
32
  title={getCategory("ProgressIndicator")}
@@ -30,7 +40,29 @@ import { GridGaps } from "../Grid/GridTypes";
30
40
  jest: ["ProgressIndicator.test.tsx"],
31
41
  }}
32
42
  argTypes={{
33
- id: { table: { disable: true } },
43
+ darkMode: {
44
+ table: { defaultValue: { summary: false } },
45
+ },
46
+ id: { control: false },
47
+ indicatorType: {
48
+ control: { type: "radio" },
49
+ table: { defaultValue: { summary: "ProgressIndicatorTypes.Linear" } },
50
+ options: typesEnumValues.options,
51
+ },
52
+ isIndeterminate: {
53
+ table: { defaultValue: { summary: false } },
54
+ },
55
+ showLabel: {
56
+ table: { defaultValue: { summary: true } },
57
+ },
58
+ size: {
59
+ control: { type: "radio" },
60
+ table: { defaultValue: { summary: "ProgressIndicatorSizes.Default" } },
61
+ options: sizesEnumValues.options,
62
+ },
63
+ value: {
64
+ table: { defaultValue: { summary: 0 } },
65
+ },
34
66
  }}
35
67
  />
36
68
 
@@ -45,22 +77,29 @@ import { GridGaps } from "../Grid/GridTypes";
45
77
 
46
78
  <Canvas withToolbar>
47
79
  <Story
48
- name="Basic with props"
80
+ name="ProgressIndicator with Controls"
49
81
  args={{
50
82
  darkMode: false,
51
- indicatorType: ProgressIndicatorTypes.Linear,
83
+ id: "progressIndicator-id",
84
+ indicatorType: "ProgressIndicatorTypes.Linear",
52
85
  isIndeterminate: false,
53
86
  labelText: "Progress",
54
87
  showLabel: true,
55
- size: ProgressIndicatorSizes.Default,
88
+ size: "ProgressIndicatorSizes.Default",
56
89
  value: 50,
57
90
  }}
58
91
  >
59
- {(args) => <ProgressIndicator {...args} />}
92
+ {(args) => (
93
+ <ProgressIndicator
94
+ {...args}
95
+ indicatorType={typesEnumValues.getValue(args.indicatorType)}
96
+ size={sizesEnumValues.getValue(args.size)}
97
+ />
98
+ )}
60
99
  </Story>
61
100
  </Canvas>
62
101
 
63
- <ArgsTable story="Basic with props" />
102
+ <ArgsTable story="ProgressIndicator with Controls" />
64
103
 
65
104
  ## Linear Type
66
105
 
@@ -70,20 +109,15 @@ dialogs, etc.
70
109
  <Canvas>
71
110
  <Story
72
111
  name="Linear Type"
73
- args={{
74
- darkMode: false,
75
- indicatorType: ProgressIndicatorTypes.Linear,
76
- isIndeterminate: false,
77
- labelText: "Linear Progress Type",
78
- showLabel: true,
79
- size: ProgressIndicatorSizes.Default,
80
- value: 50,
81
- }}
82
112
  argTypes={{
83
113
  indicatorType: { table: { disable: true } },
84
114
  }}
85
115
  >
86
- {(args) => <ProgressIndicator {...args} />}
116
+ <ProgressIndicator
117
+ indicatorType={ProgressIndicatorTypes.Linear}
118
+ labelText="Linear Progress Type"
119
+ value={50}
120
+ />
87
121
  </Story>
88
122
  </Canvas>
89
123
 
@@ -96,20 +130,15 @@ full-screen loading. Set the `indicatorType` prop to
96
130
  <Canvas>
97
131
  <Story
98
132
  name="Circular Type"
99
- args={{
100
- darkMode: false,
101
- indicatorType: ProgressIndicatorTypes.Circular,
102
- isIndeterminate: false,
103
- labelText: "Circular Progress Type",
104
- showLabel: true,
105
- size: ProgressIndicatorSizes.Default,
106
- value: 50,
107
- }}
108
133
  argTypes={{
109
134
  indicatorType: { table: { disable: true } },
110
135
  }}
111
136
  >
112
- {(args) => <ProgressIndicator {...args} />}
137
+ <ProgressIndicator
138
+ indicatorType={ProgressIndicatorTypes.Circular}
139
+ labelText="Linear Progress Type"
140
+ value={50}
141
+ />
113
142
  </Story>
114
143
  </Canvas>
115
144
 
@@ -145,13 +174,13 @@ percentage will not displayed.
145
174
  <DSProvider>
146
175
  <SimpleGrid columns={1} gap={GridGaps.Medium}>
147
176
  <ProgressIndicator
148
- labelText="Default 48px size"
149
177
  indicatorType={ProgressIndicatorTypes.Circular}
178
+ labelText="Default 48px size"
150
179
  value={50}
151
180
  />
152
181
  <ProgressIndicator
153
- labelText="Small 24px size"
154
182
  indicatorType={ProgressIndicatorTypes.Circular}
183
+ labelText="Small 24px size"
155
184
  size={ProgressIndicatorSizes.Small}
156
185
  value={50}
157
186
  />
@@ -174,14 +203,14 @@ the progress element to provide a description of the progress for screen readers
174
203
  <SimpleGrid columns={1} gap={GridGaps.Medium}>
175
204
  <ProgressIndicator
176
205
  labelText="This label will be added through aria-label"
177
- value={50}
178
206
  showLabel={false}
207
+ value={50}
179
208
  />
180
209
  <ProgressIndicator
181
- labelText="This label will be added through aria-label"
182
210
  indicatorType={ProgressIndicatorTypes.Circular}
183
- value={50}
211
+ labelText="This label will be added through aria-label"
184
212
  showLabel={false}
213
+ value={50}
185
214
  />
186
215
  </SimpleGrid>
187
216
  </DSProvider>
@@ -197,14 +226,14 @@ exact value or progress of the task is unknown.
197
226
  <DSProvider>
198
227
  <SimpleGrid columns={1} gap={GridGaps.Medium}>
199
228
  <ProgressIndicator
200
- labelText="Indeterminate state"
201
229
  isIndeterminate
230
+ labelText="Indeterminate state"
202
231
  value={50}
203
232
  />
204
233
  <ProgressIndicator
205
- labelText="Indeterminate state"
206
234
  indicatorType={ProgressIndicatorTypes.Circular}
207
235
  isIndeterminate
236
+ labelText="Indeterminate state"
208
237
  value={50}
209
238
  />
210
239
  </SimpleGrid>
@@ -224,10 +253,10 @@ Note: the background is manually set to better showcase the `darkMode` prop.
224
253
  <SimpleGrid columns={1} gap={GridGaps.Medium}>
225
254
  <ProgressIndicator labelText="Dark Mode" value={50} darkMode />
226
255
  <ProgressIndicator
227
- labelText="Dark Mode"
256
+ darkMode
228
257
  indicatorType={ProgressIndicatorTypes.Circular}
258
+ labelText="Dark Mode"
229
259
  value={50}
230
- darkMode
231
260
  />
232
261
  </SimpleGrid>
233
262
  </Box>
@@ -255,8 +284,8 @@ function ProgressIndicatorExample() {
255
284
  <SimpleGrid columns={1} gap={GridGaps.Medium}>
256
285
  <ProgressIndicator labelText="Progress example" value={value} />
257
286
  <ProgressIndicator
258
- labelText="Progress example"
259
287
  indicatorType={ProgressIndicatorTypes.Circular}
288
+ labelText="Progress example"
260
289
  value={value}
261
290
  />
262
291
  </SimpleGrid>
@@ -276,8 +305,8 @@ export function ProgressIndicatorExample() {
276
305
  <SimpleGrid columns={1} gap={GridGaps.Medium}>
277
306
  <ProgressIndicator labelText="Progress example" value={value} />
278
307
  <ProgressIndicator
279
- labelText="Progress example"
280
308
  indicatorType={ProgressIndicatorTypes.Circular}
309
+ labelText="Progress example"
281
310
  value={value}
282
311
  />
283
312
  </SimpleGrid>
@@ -1,16 +1,16 @@
1
+ import { HStack } from "@chakra-ui/react";
1
2
  import {
2
- Meta,
3
- Story,
4
- Canvas,
5
3
  ArgsTable,
4
+ Canvas,
6
5
  Description,
6
+ Meta,
7
+ Story,
7
8
  } from "@storybook/addon-docs";
8
9
  import { withDesign } from "storybook-addon-designs";
9
- import { HStack } from "@chakra-ui/react";
10
10
 
11
+ import Radio from "./Radio";
11
12
  import { getCategory } from "../../utils/componentCategories";
12
13
  import DSProvider from "../../theme/provider";
13
- import Radio from "./Radio";
14
14
 
15
15
  <Meta
16
16
  title={getCategory("Radio")}
@@ -19,16 +19,32 @@ import Radio from "./Radio";
19
19
  parameters={{
20
20
  design: {
21
21
  type: "figma",
22
- url:
23
- "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11895%3A742",
22
+ url: "https://www.figma.com/file/qShodlfNCJHb8n03IFyApM/Master?node-id=11895%3A742",
24
23
  },
25
24
  jest: ["Radio.test.tsx"],
26
25
  }}
27
26
  argTypes={{
28
- className: { table: { disable: true } },
29
- id: { table: { disable: true } },
30
- isChecked: { table: { disable: true } },
31
- onChange: { table: { disable: true } },
27
+ className: { control: false },
28
+ id: { control: false },
29
+ isChecked: { control: false },
30
+ isDisabled: {
31
+ table: { defaultValue: { summary: false } },
32
+ },
33
+ isInvalid: {
34
+ table: { defaultValue: { summary: false } },
35
+ },
36
+ isRequired: {
37
+ table: { defaultValue: { summary: false } },
38
+ },
39
+ key: { table: { disable: true } },
40
+ onChange: { control: false },
41
+ ref: { table: { disable: true } },
42
+ showHelperInvalidText: {
43
+ table: { defaultValue: { summary: true } },
44
+ },
45
+ showLabel: {
46
+ table: { defaultValue: { summary: true } },
47
+ },
32
48
  }}
33
49
  />
34
50
 
@@ -37,7 +53,7 @@ import Radio from "./Radio";
37
53
  | Component Version | DS Version |
38
54
  | ----------------- | ---------- |
39
55
  | Added | `0.22.0` |
40
- | Latest | `0.25.0` |
56
+ | Latest | `0.25.10` |
41
57
 
42
58
  <Description of={Radio} />
43
59
 
@@ -50,16 +66,20 @@ component will handle all the states and data management.
50
66
  <Story
51
67
  name="Radio"
52
68
  args={{
69
+ className: undefined,
70
+ helperText: "This is the helper text!",
71
+ id: "radio-id",
72
+ invalidText: "This is the error text :(",
73
+ isChecked: undefined,
74
+ isDisabled: false,
75
+ isInvalid: false,
76
+ isRequired: false,
53
77
  labelText: "Test Label",
54
- showLabel: true,
55
- id: "test_id",
56
78
  name: "test_name",
79
+ onChange: undefined,
80
+ showHelperInvalidText: true,
81
+ showLabel: true,
57
82
  value: "1",
58
- isDisabled: false,
59
- isRequired: false,
60
- isInvalid: false,
61
- helperText: "This is the helper text!",
62
- invalidText: "This is the error text :(",
63
83
  }}
64
84
  >
65
85
  {(args) => <Radio {...args} />}
@@ -5,20 +5,22 @@ import {
5
5
  useMultiStyleConfig,
6
6
  } from "@chakra-ui/react";
7
7
 
8
+ import HelperErrorText, {
9
+ HelperErrorTextType,
10
+ } from "../HelperErrorText/HelperErrorText";
8
11
  import generateUUID from "../../helpers/generateUUID";
9
- import HelperErrorText from "../HelperErrorText/HelperErrorText";
10
12
 
11
13
  export interface RadioProps {
12
14
  /** Additional class name. */
13
15
  className?: string;
14
- /** Optional string to populate the HelperErrorText for the error state
15
- * when `isInvalid` is true.
16
- */
17
- invalidText?: string;
18
16
  /** Optional string to populate the HelperErrorText for the standard state. */
19
- helperText?: string;
17
+ helperText?: HelperErrorTextType;
20
18
  /** ID that other components can cross reference for accessibility purposes */
21
19
  id?: string;
20
+ /** Optional string to populate the HelperErrorText for the error state
21
+ * when `isInvalid` is true.
22
+ */
23
+ invalidText?: HelperErrorTextType;
22
24
  /** When using the Radio as a "controlled" form element, you can specify the
23
25
  * `Radio`'s checked state using this prop. You must also pass an onChange prop.
24
26
  * Learn more about controlled and uncontrolled form fields: https://goshakkk.name/controlled-vs-uncontrolled-inputs-react/ */
@@ -100,9 +102,11 @@ const Radio = React.forwardRef<HTMLInputElement, RadioProps>((props, ref?) => {
100
102
  </ChakraRadio>
101
103
  {footnote && showHelperInvalidText && (
102
104
  <Box __css={styles.helper} aria-disabled={isDisabled}>
103
- <HelperErrorText isInvalid={isInvalid} id={`${id}-helperText`}>
104
- {footnote}
105
- </HelperErrorText>
105
+ <HelperErrorText
106
+ id={`${id}-helperText`}
107
+ isInvalid={isInvalid}
108
+ text={footnote}
109
+ />
106
110
  </Box>
107
111
  )}
108
112
  </>