@automattic/vip-design-system 1.2.0 → 1.2.2

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 (455) hide show
  1. package/.storybook/decorators/withBoundingBox.tsx +11 -0
  2. package/.storybook/decorators/{withThemeProvider.jsx → withThemeProvider.tsx} +1 -5
  3. package/.storybook/{preview.js → preview.tsx} +12 -3
  4. package/build/declaration.d.js +1 -0
  5. package/build/system/Accordion/Accordion.d.ts +41 -0
  6. package/build/system/Accordion/Accordion.js +10 -35
  7. package/build/system/Accordion/Accordion.stories.d.ts +13 -0
  8. package/build/system/Accordion/Accordion.stories.js +4 -7
  9. package/build/system/Accordion/Accordion.test.d.ts +2 -0
  10. package/build/system/Accordion/Accordion.test.js +5 -7
  11. package/build/system/Accordion/index.d.ts +5 -0
  12. package/build/system/Avatar/Avatar.d.ts +13 -0
  13. package/build/system/Avatar/Avatar.js +7 -20
  14. package/build/system/Avatar/Avatar.stories.d.ts +16 -0
  15. package/build/system/Avatar/Avatar.stories.js +5 -7
  16. package/build/system/Avatar/Avatar.test.d.ts +1 -0
  17. package/build/system/Avatar/Avatar.test.js +5 -7
  18. package/build/system/Avatar/index.d.ts +4 -0
  19. package/build/system/Avatar/index.js +1 -0
  20. package/build/system/Badge/Badge.d.ts +6 -0
  21. package/build/system/Badge/Badge.js +6 -15
  22. package/build/system/Badge/Badge.stories.d.ts +18 -0
  23. package/build/system/Badge/Badge.stories.js +70 -71
  24. package/build/system/Badge/Badge.test.d.ts +1 -0
  25. package/build/system/Badge/Badge.test.js +6 -8
  26. package/build/system/Badge/index.d.ts +4 -0
  27. package/build/system/Badge/index.js +1 -0
  28. package/build/system/Box/Box.d.ts +3 -0
  29. package/build/system/{Form/Label.stories.js → Box/Box.js} +15 -31
  30. package/build/system/Box/Box.stories.d.ts +16 -0
  31. package/build/system/Box/Box.stories.js +21 -0
  32. package/build/system/Box/index.d.ts +2 -0
  33. package/build/system/Box/index.js +5 -4
  34. package/build/system/Button/Button.d.ts +12 -0
  35. package/build/system/Button/Button.js +10 -18
  36. package/build/system/Button/Button.stories.d.ts +30 -0
  37. package/build/system/Button/Button.stories.js +10 -20
  38. package/build/system/Button/Button.test.d.ts +1 -0
  39. package/build/system/Button/Button.test.js +45 -74
  40. package/build/system/Button/ButtonSubmit.d.ts +2 -0
  41. package/build/system/Button/ButtonSubmit.js +60 -70
  42. package/build/system/Button/ButtonSubmit.stories.d.ts +38 -0
  43. package/build/system/Button/ButtonSubmit.stories.jsx +40 -0
  44. package/build/system/Button/ButtonSubmit.test.d.ts +1 -0
  45. package/build/system/Button/ButtonSubmit.test.js +32 -60
  46. package/build/system/Button/index.d.ts +3 -0
  47. package/build/system/Button/index.js +7 -6
  48. package/build/system/Button/variants.d.ts +2 -0
  49. package/build/system/Button/variants.js +1 -6
  50. package/build/system/Card/Card.d.ts +9 -0
  51. package/build/system/Card/Card.js +2 -10
  52. package/build/system/Card/Card.stories.d.ts +7 -0
  53. package/build/system/Card/Card.stories.js +4 -6
  54. package/build/system/Card/Card.test.d.ts +1 -0
  55. package/build/system/Card/Card.test.js +5 -7
  56. package/build/system/Card/index.d.ts +4 -0
  57. package/build/system/Card/index.js +1 -0
  58. package/build/system/Code/Code.d.ts +15 -0
  59. package/build/system/Code/Code.js +14 -21
  60. package/build/system/Code/Code.stories.d.ts +18 -0
  61. package/build/system/Code/Code.stories.js +31 -23
  62. package/build/system/Code/Code.test.d.ts +1 -0
  63. package/build/system/Code/Code.test.js +10 -11
  64. package/build/system/Code/index.d.ts +4 -0
  65. package/build/system/Code/index.js +1 -0
  66. package/build/system/ConfirmationDialog/ConfirmationDialog.d.ts +35 -0
  67. package/build/system/ConfirmationDialog/ConfirmationDialog.js +68 -94
  68. package/build/system/ConfirmationDialog/ConfirmationDialog.stories.d.ts +7 -0
  69. package/build/system/ConfirmationDialog/ConfirmationDialog.stories.jsx +29 -0
  70. package/build/system/ConfirmationDialog/index.d.ts +3 -0
  71. package/build/system/ConfirmationDialog/index.js +5 -5
  72. package/build/system/Dialog/Dialog.d.ts +18 -0
  73. package/build/system/Dialog/Dialog.js +81 -94
  74. package/build/system/Dialog/Dialog.stories.d.ts +7 -0
  75. package/build/system/Dialog/Dialog.stories.jsx +60 -0
  76. package/build/system/Dialog/DialogButton.d.ts +16 -0
  77. package/build/system/Dialog/DialogButton.js +51 -66
  78. package/build/system/Dialog/DialogContent.d.ts +18 -0
  79. package/build/system/Dialog/DialogContent.js +142 -137
  80. package/build/system/Dialog/DialogDivider.d.ts +5 -0
  81. package/build/system/Dialog/DialogDivider.js +5 -16
  82. package/build/system/Dialog/DialogMenu.d.ts +5 -0
  83. package/build/system/Dialog/DialogMenu.js +5 -18
  84. package/build/system/Dialog/DialogMenuItem.d.ts +13 -0
  85. package/build/system/Dialog/DialogMenuItem.js +64 -71
  86. package/build/system/Dialog/DialogTrigger.d.ts +1 -0
  87. package/build/system/Dialog/DialogTrigger.js +10 -16
  88. package/build/system/Dialog/index.d.ts +8 -0
  89. package/build/system/Dialog/index.js +19 -16
  90. package/build/system/Dropdown/Dropdown.d.ts +37 -0
  91. package/build/system/Dropdown/Dropdown.js +96 -93
  92. package/build/system/Dropdown/Dropdown.stories.d.ts +34 -0
  93. package/build/system/Dropdown/Dropdown.stories.jsx +170 -0
  94. package/build/system/Dropdown/Dropdown.test.d.ts +1 -0
  95. package/build/system/Dropdown/Dropdown.test.js +30 -52
  96. package/build/system/Dropdown/DropdownContent.d.ts +11 -0
  97. package/build/system/Dropdown/DropdownContent.js +40 -49
  98. package/build/system/Dropdown/DropdownItem.d.ts +32 -0
  99. package/build/system/Dropdown/DropdownItem.js +91 -95
  100. package/build/system/Dropdown/DropdownLabel.d.ts +8 -0
  101. package/build/system/Dropdown/DropdownLabel.js +24 -33
  102. package/build/system/Dropdown/DropdownSeparator.d.ts +7 -0
  103. package/build/system/Dropdown/DropdownSeparator.js +23 -32
  104. package/build/system/Dropdown/index.d.ts +40 -0
  105. package/build/system/Dropdown/index.js +49 -37
  106. package/build/system/Flex/Flex.d.ts +2 -0
  107. package/build/system/Flex/Flex.js +6 -8
  108. package/build/system/Flex/Flex.stories.d.ts +7 -0
  109. package/build/system/Flex/Flex.stories.js +3 -5
  110. package/build/system/Flex/index.d.ts +4 -0
  111. package/build/system/Flex/index.js +1 -0
  112. package/build/system/Form/Checkbox.d.ts +10 -0
  113. package/build/system/Form/Checkbox.js +61 -62
  114. package/build/system/Form/Checkbox.stories.d.ts +7 -0
  115. package/build/system/Form/Checkbox.stories.jsx +54 -0
  116. package/build/system/Form/Input.d.ts +2 -0
  117. package/build/system/Form/Input.js +70 -69
  118. package/build/system/Form/Input.stories.d.ts +5 -0
  119. package/build/system/Form/Input.stories.jsx +38 -0
  120. package/build/system/Form/Input.styles.d.ts +32 -0
  121. package/build/system/Form/Input.styles.js +29 -40
  122. package/build/system/Form/InputWithCopyButton.d.ts +2 -0
  123. package/build/system/Form/InputWithCopyButton.js +109 -105
  124. package/build/system/Form/InputWithCopyButton.stories.d.ts +5 -0
  125. package/build/system/Form/InputWithCopyButton.stories.jsx +30 -0
  126. package/build/system/Form/Label.d.ts +9 -0
  127. package/build/system/Form/Label.js +41 -47
  128. package/build/system/Form/Label.stories.d.ts +6 -0
  129. package/build/system/Form/Label.stories.jsx +36 -0
  130. package/build/system/Form/Radio.d.ts +2 -0
  131. package/build/system/Form/Radio.js +185 -169
  132. package/build/system/Form/Radio.stories.d.ts +7 -0
  133. package/build/system/Form/Radio.stories.jsx +100 -0
  134. package/build/system/Form/RadioBoxGroup.d.ts +2 -0
  135. package/build/system/Form/RadioBoxGroup.js +193 -187
  136. package/build/system/Form/RadioBoxGroup.stories.d.ts +8 -0
  137. package/build/system/Form/RadioBoxGroup.stories.jsx +60 -0
  138. package/build/system/Form/RequiredLabel.d.ts +5 -0
  139. package/build/system/Form/RequiredLabel.js +7 -17
  140. package/build/system/Form/Textarea.d.ts +2 -0
  141. package/build/system/Form/Textarea.js +18 -20
  142. package/build/system/Form/Textarea.stories.d.ts +34 -0
  143. package/build/system/Form/Textarea.stories.jsx +40 -0
  144. package/build/system/Form/Toggle.d.ts +2 -0
  145. package/build/system/Form/Toggle.js +67 -81
  146. package/build/system/Form/Toggle.stories.d.ts +19 -0
  147. package/build/system/Form/Toggle.stories.jsx +96 -0
  148. package/build/system/Form/Toggle.test.d.ts +1 -0
  149. package/build/system/Form/Toggle.test.js +21 -39
  150. package/build/system/Form/ToggleRow.d.ts +22 -0
  151. package/build/system/Form/ToggleRow.js +66 -95
  152. package/build/system/Form/Validation.d.ts +14 -0
  153. package/build/system/Form/Validation.js +33 -42
  154. package/build/system/Form/index.d.ts +11 -0
  155. package/build/system/Form/index.js +25 -22
  156. package/build/system/Grid/Grid.d.ts +6 -0
  157. package/build/system/Grid/Grid.js +4 -5
  158. package/build/system/Grid/Grid.stories.d.ts +7 -0
  159. package/build/system/Grid/Grid.stories.js +3 -5
  160. package/build/system/Grid/index.d.ts +4 -0
  161. package/build/system/Grid/index.js +1 -0
  162. package/build/system/Heading/Heading.d.ts +6 -0
  163. package/build/system/Heading/Heading.js +33 -0
  164. package/build/system/Heading/Heading.stories.d.ts +7 -0
  165. package/build/system/Heading/Heading.stories.js +33 -0
  166. package/build/system/Heading/index.d.ts +2 -0
  167. package/build/system/Heading/index.js +5 -4
  168. package/build/system/Link/Link.d.ts +6 -0
  169. package/build/system/Link/Link.js +5 -12
  170. package/build/system/Link/Link.stories.d.ts +16 -0
  171. package/build/system/Link/Link.stories.js +12 -13
  172. package/build/system/Link/index.d.ts +4 -0
  173. package/build/system/Link/index.js +1 -0
  174. package/build/system/NewConfirmationDialog/NewConfirmationDialog.d.ts +23 -0
  175. package/build/system/NewConfirmationDialog/NewConfirmationDialog.js +86 -99
  176. package/build/system/NewConfirmationDialog/NewConfirmationDialog.stories.d.ts +8 -0
  177. package/build/system/NewConfirmationDialog/NewConfirmationDialog.stories.jsx +34 -0
  178. package/build/system/NewConfirmationDialog/NewConfirmationDialog.test.d.ts +1 -0
  179. package/build/system/NewConfirmationDialog/NewConfirmationDialog.test.js +43 -66
  180. package/build/system/NewConfirmationDialog/index.d.ts +2 -0
  181. package/build/system/NewConfirmationDialog/index.js +5 -4
  182. package/build/system/NewDialog/DialogClose.d.ts +6 -0
  183. package/build/system/NewDialog/DialogClose.js +50 -69
  184. package/build/system/NewDialog/DialogClose.test.d.ts +1 -0
  185. package/build/system/NewDialog/DialogClose.test.js +29 -46
  186. package/build/system/NewDialog/DialogContent.d.ts +18 -0
  187. package/build/system/NewDialog/DialogContent.js +14 -21
  188. package/build/system/NewDialog/DialogDescription.d.ts +5 -0
  189. package/build/system/NewDialog/DialogDescription.js +31 -38
  190. package/build/system/NewDialog/DialogDescription.test.d.ts +1 -0
  191. package/build/system/NewDialog/DialogDescription.test.js +44 -67
  192. package/build/system/NewDialog/DialogOverlay.d.ts +2 -0
  193. package/build/system/NewDialog/DialogOverlay.js +28 -32
  194. package/build/system/NewDialog/DialogOverlay.test.d.ts +1 -0
  195. package/build/system/NewDialog/DialogOverlay.test.js +26 -42
  196. package/build/system/NewDialog/DialogTitle.d.ts +11 -0
  197. package/build/system/NewDialog/DialogTitle.js +19 -34
  198. package/build/system/NewDialog/DialogTitle.test.d.ts +1 -0
  199. package/build/system/NewDialog/DialogTitle.test.js +44 -67
  200. package/build/system/NewDialog/NewDialog.d.ts +29 -0
  201. package/build/system/NewDialog/NewDialog.js +74 -89
  202. package/build/system/NewDialog/NewDialog.stories.d.ts +38 -0
  203. package/build/system/NewDialog/NewDialog.stories.jsx +192 -0
  204. package/build/system/NewDialog/index.d.ts +31 -0
  205. package/build/system/NewDialog/index.js +9 -13
  206. package/build/system/NewForm/Fieldset.d.ts +2 -0
  207. package/build/system/NewForm/Fieldset.js +38 -43
  208. package/build/system/NewForm/Form.d.ts +2 -0
  209. package/build/system/NewForm/Form.js +21 -28
  210. package/build/system/NewForm/FormAutocomplete.d.ts +2 -0
  211. package/build/system/NewForm/FormAutocomplete.js +386 -381
  212. package/build/system/NewForm/FormAutocomplete.stories.d.ts +156 -0
  213. package/build/system/NewForm/FormAutocomplete.stories.jsx +159 -0
  214. package/build/system/NewForm/FormAutocomplete.test.d.ts +1 -0
  215. package/build/system/NewForm/FormAutocomplete.test.js +40 -73
  216. package/build/system/NewForm/FormAutocompleteMultiselect.d.ts +2 -0
  217. package/build/system/NewForm/FormAutocompleteMultiselect.js +456 -468
  218. package/build/system/NewForm/FormAutocompleteMultiselect.stories.d.ts +45 -0
  219. package/build/system/NewForm/FormAutocompleteMultiselect.stories.jsx +162 -0
  220. package/build/system/NewForm/FormAutocompleteMultiselect.test.d.ts +1 -0
  221. package/build/system/NewForm/FormAutocompleteMultiselect.test.js +37 -73
  222. package/build/system/NewForm/FormSelect.d.ts +2 -0
  223. package/build/system/NewForm/FormSelect.js +159 -140
  224. package/build/system/NewForm/FormSelect.stories.d.ts +137 -0
  225. package/build/system/NewForm/FormSelect.stories.jsx +138 -0
  226. package/build/system/NewForm/FormSelect.test.d.ts +1 -0
  227. package/build/system/NewForm/FormSelect.test.js +131 -227
  228. package/build/system/NewForm/FormSelectArrow.d.ts +2 -0
  229. package/build/system/NewForm/FormSelectArrow.js +35 -35
  230. package/build/system/NewForm/FormSelectContent.d.ts +2 -0
  231. package/build/system/NewForm/FormSelectContent.js +27 -34
  232. package/build/system/NewForm/FormSelectInline.d.ts +30 -0
  233. package/build/system/NewForm/FormSelectInline.js +41 -38
  234. package/build/system/NewForm/FormSelectLoading.d.ts +2 -0
  235. package/build/system/NewForm/FormSelectLoading.js +36 -45
  236. package/build/system/NewForm/FormSelectSearch.d.ts +2 -0
  237. package/build/system/NewForm/FormSelectSearch.js +23 -25
  238. package/build/system/NewForm/Legend.d.ts +2 -0
  239. package/build/system/NewForm/Legend.js +32 -37
  240. package/build/system/NewForm/index.d.ts +12 -0
  241. package/build/system/NewForm/index.js +30 -30
  242. package/build/system/Notice/Notice.d.ts +18 -0
  243. package/build/system/Notice/Notice.js +41 -55
  244. package/build/system/Notice/Notice.stories.d.ts +13 -0
  245. package/build/system/Notice/Notice.stories.js +3 -5
  246. package/build/system/Notice/index.d.ts +5 -0
  247. package/build/system/OptionRow/OptionRow.d.ts +2 -0
  248. package/build/system/OptionRow/OptionRow.js +146 -159
  249. package/build/system/OptionRow/OptionRow.stories.d.ts +8 -0
  250. package/build/system/OptionRow/OptionRow.stories.jsx +53 -0
  251. package/build/system/OptionRow/OptionRow.test.d.ts +1 -0
  252. package/build/system/OptionRow/OptionRow.test.js +38 -67
  253. package/build/system/OptionRow/index.d.ts +2 -0
  254. package/build/system/OptionRow/index.js +5 -4
  255. package/build/system/Progress/Progress.d.ts +2 -0
  256. package/build/system/Progress/Progress.js +69 -84
  257. package/build/system/Progress/Progress.stories.d.ts +8 -0
  258. package/build/system/Progress/Progress.stories.jsx +25 -0
  259. package/build/system/Progress/index.d.ts +2 -0
  260. package/build/system/Progress/index.js +5 -4
  261. package/build/system/ScreenReaderText/ScreenReader.test.d.ts +1 -0
  262. package/build/system/ScreenReaderText/ScreenReader.test.js +21 -25
  263. package/build/system/ScreenReaderText/ScreenReaderText.d.ts +14 -0
  264. package/build/system/ScreenReaderText/ScreenReaderText.js +13 -21
  265. package/build/system/ScreenReaderText/index.d.ts +3 -0
  266. package/build/system/ScreenReaderText/index.js +6 -8
  267. package/build/system/Spinner/Spinner.d.ts +9 -0
  268. package/build/system/Spinner/Spinner.js +12 -19
  269. package/build/system/Spinner/Spinner.stories.d.ts +7 -0
  270. package/build/system/Spinner/Spinner.stories.js +3 -5
  271. package/build/system/Spinner/Spinner.test.d.ts +1 -0
  272. package/build/system/Spinner/Spinner.test.js +59 -0
  273. package/build/system/Spinner/index.d.ts +1 -0
  274. package/build/system/Spinner/index.js +1 -0
  275. package/build/system/Table/Table.d.ts +14 -0
  276. package/build/system/Table/Table.js +7 -21
  277. package/build/system/Table/Table.stories.d.ts +9 -0
  278. package/build/system/Table/Table.stories.js +5 -12
  279. package/build/system/Table/TableCell.d.ts +15 -0
  280. package/build/system/Table/TableCell.js +13 -18
  281. package/build/system/Table/TableRow.d.ts +14 -0
  282. package/build/system/Table/TableRow.js +19 -24
  283. package/build/system/Table/index.d.ts +6 -0
  284. package/build/system/Table/index.js +1 -0
  285. package/build/system/Tabs/Tabs.d.ts +5 -0
  286. package/build/system/Tabs/Tabs.js +40 -38
  287. package/build/system/Tabs/Tabs.stories.d.ts +9 -0
  288. package/build/system/Tabs/Tabs.stories.jsx +69 -0
  289. package/build/system/Tabs/TabsContent.d.ts +16 -0
  290. package/build/system/Tabs/TabsContent.js +23 -30
  291. package/build/system/Tabs/TabsList.d.ts +15 -0
  292. package/build/system/Tabs/TabsList.js +24 -32
  293. package/build/system/Tabs/TabsTrigger.d.ts +2 -0
  294. package/build/system/Tabs/TabsTrigger.js +58 -66
  295. package/build/system/Tabs/index.d.ts +5 -0
  296. package/build/system/Tabs/index.js +8 -10
  297. package/build/system/Text/Text.d.ts +2 -0
  298. package/build/system/Text/Text.js +5 -13
  299. package/build/system/Text/Text.stories.d.ts +8 -0
  300. package/build/system/Text/Text.stories.js +4 -5
  301. package/build/system/Text/index.d.ts +4 -0
  302. package/build/system/Text/index.js +1 -0
  303. package/build/system/Tooltip/Tooltip.css +96 -0
  304. package/build/system/Tooltip/Tooltip.d.ts +15 -0
  305. package/build/system/Tooltip/Tooltip.js +23 -93
  306. package/build/system/Tooltip/Tooltip.stories.d.ts +15 -0
  307. package/build/system/Tooltip/Tooltip.stories.js +83 -21
  308. package/build/system/Tooltip/index.d.ts +5 -0
  309. package/build/system/Wizard/Wizard.d.ts +2 -0
  310. package/build/system/Wizard/Wizard.js +94 -103
  311. package/build/system/Wizard/Wizard.stories.d.ts +9 -0
  312. package/build/system/Wizard/Wizard.stories.jsx +145 -0
  313. package/build/system/Wizard/WizardStep.d.ts +2 -0
  314. package/build/system/Wizard/WizardStep.js +188 -198
  315. package/build/system/Wizard/WizardStepHorizontal.d.ts +2 -0
  316. package/build/system/Wizard/WizardStepHorizontal.js +43 -55
  317. package/build/system/Wizard/index.d.ts +4 -0
  318. package/build/system/Wizard/index.js +7 -8
  319. package/build/system/index.d.ts +51 -0
  320. package/build/system/index.js +104 -86
  321. package/build/system/theme/colors.d.ts +2 -0
  322. package/build/system/theme/colors.js +7 -12
  323. package/build/system/theme/getColor.d.ts +8 -0
  324. package/build/system/theme/getColor.js +47 -46
  325. package/build/system/theme/index.d.ts +322 -0
  326. package/build/system/theme/index.js +494 -396
  327. package/build/system/theme/textStyles.d.ts +71 -0
  328. package/build/system/theme/textStyles.js +45 -50
  329. package/build/system/utils/random.d.ts +1 -0
  330. package/build/system/utils/random.js +3 -7
  331. package/package.json +31 -37
  332. package/src/declaration.d.ts +1 -0
  333. package/src/system/Accordion/{Accordion.test.js → Accordion.test.tsx} +2 -2
  334. package/src/system/Accordion/{Accordion.js → Accordion.tsx} +87 -80
  335. package/src/system/Avatar/Avatar.stories.tsx +18 -0
  336. package/src/system/Avatar/{Avatar.test.js → Avatar.test.tsx} +2 -2
  337. package/src/system/Avatar/{Avatar.js → Avatar.tsx} +17 -19
  338. package/src/system/Avatar/index.ts +4 -0
  339. package/src/system/Badge/Badge.stories.tsx +57 -0
  340. package/src/system/Badge/{Badge.test.js → Badge.test.tsx} +3 -3
  341. package/src/system/Badge/{Badge.js → Badge.tsx} +10 -15
  342. package/src/system/Badge/index.ts +4 -0
  343. package/src/system/Box/Box.stories.tsx +13 -1
  344. package/src/system/Box/Box.tsx +4 -8
  345. package/src/system/Button/Button.stories.tsx +110 -0
  346. package/src/system/Button/Button.tsx +67 -0
  347. package/src/system/Card/{Card.stories.jsx → Card.stories.tsx} +1 -1
  348. package/src/system/Card/{Card.test.js → Card.test.tsx} +2 -2
  349. package/src/system/Card/Card.tsx +40 -0
  350. package/src/system/Card/index.ts +4 -0
  351. package/src/system/Code/Code.stories.tsx +44 -0
  352. package/src/system/Code/{Code.test.js → Code.test.tsx} +6 -4
  353. package/src/system/Code/{Code.js → Code.tsx} +27 -22
  354. package/src/system/Code/index.ts +4 -0
  355. package/src/system/Flex/Flex.tsx +11 -0
  356. package/src/system/Flex/index.ts +4 -0
  357. package/src/system/Grid/Grid.tsx +11 -0
  358. package/src/system/Grid/index.ts +4 -0
  359. package/src/system/Heading/Heading.tsx +8 -17
  360. package/src/system/Link/Link.stories.tsx +23 -0
  361. package/src/system/Link/Link.tsx +43 -0
  362. package/src/system/Link/index.ts +4 -0
  363. package/src/system/NewForm/FormAutocomplete.js +2 -2
  364. package/src/system/Notice/Notice.tsx +129 -0
  365. package/src/system/OptionRow/OptionRow.test.js +1 -1
  366. package/src/system/ScreenReaderText/ScreenReaderText.tsx +40 -0
  367. package/src/system/Spinner/Spinner.test.tsx +30 -0
  368. package/src/system/Spinner/Spinner.tsx +34 -0
  369. package/src/system/Spinner/index.ts +1 -0
  370. package/src/system/Table/{Table.stories.jsx → Table.stories.tsx} +6 -6
  371. package/src/system/Table/{Table.js → Table.tsx} +14 -18
  372. package/src/system/Table/{TableCell.js → TableCell.tsx} +14 -12
  373. package/src/system/Table/TableRow.tsx +63 -0
  374. package/src/system/Table/index.ts +6 -0
  375. package/src/system/Text/{Text.stories.jsx → Text.stories.tsx} +1 -0
  376. package/src/system/Text/Text.tsx +25 -0
  377. package/src/system/Text/index.ts +4 -0
  378. package/src/system/Tooltip/Tooltip.css +96 -0
  379. package/src/system/Tooltip/Tooltip.stories.tsx +133 -0
  380. package/src/system/Tooltip/Tooltip.tsx +39 -0
  381. package/src/system/index.js +1 -2
  382. package/src/system/theme/index.js +21 -1
  383. package/test/fileMock.ts +1 -0
  384. package/test/setupAfterEnv.ts +5 -0
  385. package/tsconfig.definition.json +12 -0
  386. package/.storybook/decorators/withBoundingBox.jsx +0 -22
  387. package/build/system/Box/Box.stories.tsx +0 -11
  388. package/build/system/Box/Box.tsx +0 -22
  389. package/build/system/Button/ButtonSubmit.stories.js +0 -58
  390. package/build/system/ConfirmationDialog/ConfirmationDialog.stories.js +0 -42
  391. package/build/system/Dialog/Dialog.stories.js +0 -70
  392. package/build/system/Dropdown/Dropdown.stories.js +0 -197
  393. package/build/system/Form/Checkbox.stories.js +0 -73
  394. package/build/system/Form/Input.stories.js +0 -51
  395. package/build/system/Form/InputWithCopyButton.stories.js +0 -39
  396. package/build/system/Form/Radio.stories.js +0 -115
  397. package/build/system/Form/RadioBoxGroup.stories.js +0 -62
  398. package/build/system/Form/Textarea.stories.js +0 -59
  399. package/build/system/Form/Toggle.stories.js +0 -104
  400. package/build/system/Heading/Heading.stories.tsx +0 -19
  401. package/build/system/Heading/Heading.tsx +0 -38
  402. package/build/system/NewConfirmationDialog/NewConfirmationDialog.stories.js +0 -46
  403. package/build/system/NewDialog/NewDialog.stories.js +0 -247
  404. package/build/system/NewForm/FormAutocomplete.stories.js +0 -220
  405. package/build/system/NewForm/FormAutocompleteMultiselect.stories.js +0 -231
  406. package/build/system/NewForm/FormSelect.stories.js +0 -171
  407. package/build/system/Notification/Notification.js +0 -97
  408. package/build/system/Notification/Notification.stories.js +0 -29
  409. package/build/system/Notification/index.js +0 -5
  410. package/build/system/OptionRow/OptionRow.stories.js +0 -64
  411. package/build/system/Progress/Progress.stories.js +0 -36
  412. package/build/system/Tabs/Tabs.stories.js +0 -113
  413. package/build/system/Wizard/Wizard.stories.js +0 -182
  414. package/src/system/Avatar/Avatar.stories.jsx +0 -11
  415. package/src/system/Avatar/index.js +0 -6
  416. package/src/system/Badge/Badge.stories.jsx +0 -43
  417. package/src/system/Badge/index.js +0 -6
  418. package/src/system/Button/Button.js +0 -63
  419. package/src/system/Button/Button.stories.jsx +0 -87
  420. package/src/system/Card/Card.js +0 -39
  421. package/src/system/Card/index.js +0 -6
  422. package/src/system/Code/Code.stories.jsx +0 -37
  423. package/src/system/Code/index.js +0 -6
  424. package/src/system/Flex/Flex.js +0 -15
  425. package/src/system/Flex/index.js +0 -6
  426. package/src/system/Grid/Grid.js +0 -16
  427. package/src/system/Grid/index.js +0 -6
  428. package/src/system/Link/Link.js +0 -42
  429. package/src/system/Link/Link.stories.jsx +0 -15
  430. package/src/system/Link/index.js +0 -6
  431. package/src/system/Notice/Notice.js +0 -136
  432. package/src/system/Notification/Notification.js +0 -66
  433. package/src/system/Notification/Notification.stories.jsx +0 -16
  434. package/src/system/Notification/index.js +0 -6
  435. package/src/system/ScreenReaderText/ScreenReaderText.js +0 -39
  436. package/src/system/Spinner/Spinner.js +0 -34
  437. package/src/system/Spinner/index.js +0 -6
  438. package/src/system/Table/TableRow.js +0 -50
  439. package/src/system/Table/index.js +0 -8
  440. package/src/system/Text/Text.js +0 -33
  441. package/src/system/Text/index.js +0 -6
  442. package/src/system/Tooltip/Tooltip.js +0 -79
  443. package/src/system/Tooltip/Tooltip.stories.jsx +0 -22
  444. package/test/fileMock.js +0 -1
  445. package/test/setupAfterEnv.js +0 -13
  446. package/test/setupTests.js +0 -4
  447. /package/.storybook/decorators/{withColorMode.jsx → withColorMode.tsx} +0 -0
  448. /package/src/system/Accordion/{Accordion.stories.jsx → Accordion.stories.tsx} +0 -0
  449. /package/src/system/Accordion/{index.js → index.ts} +0 -0
  450. /package/src/system/Flex/{Flex.stories.jsx → Flex.stories.tsx} +0 -0
  451. /package/src/system/Grid/{Grid.stories.jsx → Grid.stories.tsx} +0 -0
  452. /package/src/system/Notice/{Notice.stories.jsx → Notice.stories.tsx} +0 -0
  453. /package/src/system/Notice/{index.js → index.ts} +0 -0
  454. /package/src/system/Spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
  455. /package/src/system/Tooltip/{index.js → index.ts} +0 -0
@@ -0,0 +1,57 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { StoryObj } from '@storybook/react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { Badge, Link } from '..';
10
+
11
+ export default {
12
+ component: Badge,
13
+ title: 'Badge',
14
+ };
15
+
16
+ type Story = StoryObj< typeof Badge >;
17
+
18
+ export const Default: Story = {
19
+ args: {
20
+ children: 'Badge',
21
+ sx: undefined,
22
+ },
23
+ };
24
+
25
+ export const Variants = () => (
26
+ <>
27
+ <Badge variant="blue" sx={ { m: 2 } }>
28
+ Blue
29
+ </Badge>
30
+ <Badge variant="gold" sx={ { m: 2 } }>
31
+ Gold
32
+ </Badge>
33
+ <Badge variant="gray" sx={ { m: 2 } }>
34
+ Gray
35
+ </Badge>
36
+ <Badge variant="green" sx={ { m: 2 } }>
37
+ Green
38
+ </Badge>
39
+ <Badge variant="orange" sx={ { m: 2 } }>
40
+ Orange
41
+ </Badge>
42
+ <Badge variant="red" sx={ { m: 2 } }>
43
+ Red
44
+ </Badge>
45
+ <Badge variant="salmon" sx={ { m: 2 } }>
46
+ Salmon
47
+ </Badge>
48
+ <Badge variant="yellow" sx={ { m: 2 } }>
49
+ Yellow
50
+ </Badge>
51
+ </>
52
+ );
53
+
54
+ export const WithLink: Story = {
55
+ args: {},
56
+ render: args => <Badge children={ <Link href="https://google.com">Google</Link> } { ...args } />,
57
+ };
@@ -16,15 +16,15 @@ describe( '<Badge />', () => {
16
16
  expect( screen.getByText( 'Badge text' ) ).toBeInTheDocument();
17
17
 
18
18
  // Check for accessibility issues
19
- await expect( await axe( container ) ).toHaveNoViolations();
19
+ expect( await axe( container ) ).toHaveNoViolations();
20
20
  } );
21
21
 
22
22
  it( 'renders the Badge component with a different variant', async () => {
23
- const { container } = render( <Badge variant="primary">Badge text</Badge> );
23
+ const { container } = render( <Badge variant="red">Badge text</Badge> );
24
24
 
25
25
  expect( screen.getByText( 'Badge text' ) ).toBeInTheDocument();
26
26
 
27
27
  // Check for accessibility issues
28
- await expect( await axe( container ) ).toHaveNoViolations();
28
+ expect( await axe( container ) ).toHaveNoViolations();
29
29
  } );
30
30
  } );
@@ -1,19 +1,21 @@
1
- /** @jsxImportSource theme-ui */
2
-
3
1
  /**
4
2
  * External dependencies
5
3
  */
6
- import React from 'react';
4
+ import { forwardRef, Ref } from 'react';
7
5
  import classNames from 'classnames';
8
- import PropTypes from 'prop-types';
6
+ import { TextProps as ThemeTextProps } from 'theme-ui';
9
7
 
10
8
  /**
11
9
  * Internal dependencies
12
10
  */
13
- import { Text } from '../';
11
+ import { Text } from '..';
12
+
13
+ export interface BadgeProps extends ThemeTextProps {
14
+ variant?: 'blue' | 'gold' | 'gray' | 'green' | 'orange' | 'red' | 'salmon' | 'yellow';
15
+ }
14
16
 
15
- const Badge = React.forwardRef(
16
- ( { variant = 'blue', sx, className = null, ...props }, forwardRef ) => (
17
+ export const Badge = forwardRef< HTMLDivElement, BadgeProps >(
18
+ ( { variant = 'blue', sx, className, ...props }: BadgeProps, ref: Ref< HTMLDivElement > ) => (
17
19
  <Text
18
20
  as="span"
19
21
  sx={ {
@@ -39,17 +41,10 @@ const Badge = React.forwardRef(
39
41
  ...sx,
40
42
  } }
41
43
  className={ classNames( 'vip-badge-component', className ) }
42
- ref={ forwardRef }
44
+ ref={ ref }
43
45
  { ...props }
44
46
  />
45
47
  )
46
48
  );
47
49
 
48
50
  Badge.displayName = 'Badge';
49
- Badge.propTypes = {
50
- variant: PropTypes.string,
51
- sx: PropTypes.object,
52
- className: PropTypes.any,
53
- };
54
-
55
- export { Badge };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ export { Badge } from './Badge';
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { StoryObj } from '@storybook/react';
5
+
1
6
  /**
2
7
  * Internal dependencies
3
8
  */
@@ -8,4 +13,11 @@ export default {
8
13
  component: Box,
9
14
  };
10
15
 
11
- export const Default = () => <Box>Hello</Box>;
16
+ type Story = StoryObj< typeof Box >;
17
+
18
+ export const Default: Story = {
19
+ args: {
20
+ children: 'Hello',
21
+ sx: undefined,
22
+ },
23
+ };
@@ -1,16 +1,12 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import React, { Ref } from 'react';
5
- import classNames, { Argument } from 'classnames';
4
+ import { forwardRef, Ref } from 'react';
5
+ import classNames from 'classnames';
6
6
  import { Box as ThemeBox, BoxProps as ThemeBoxProps } from 'theme-ui';
7
7
 
8
- export interface BoxProps extends Omit< ThemeBoxProps, 'className' > {
9
- className?: Argument;
10
- }
11
-
12
- export const Box = React.forwardRef< HTMLDivElement, BoxProps >(
13
- ( props: BoxProps, ref: Ref< HTMLDivElement > ) => (
8
+ export const Box = forwardRef< HTMLElement, ThemeBoxProps >(
9
+ ( props: ThemeBoxProps, ref: Ref< HTMLElement > ) => (
14
10
  <ThemeBox
15
11
  { ...props }
16
12
  className={ classNames( 'vip-box-component', props.className ) }
@@ -0,0 +1,110 @@
1
+ /** @jsxImportSource theme-ui */
2
+
3
+ /**
4
+ * External dependencies
5
+ */
6
+ import React from 'react';
7
+ import { BiCalendarHeart } from 'react-icons/bi';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import ScreenReaderText from '../ScreenReaderText';
13
+ import { Button } from '..';
14
+ import variants from './variants';
15
+
16
+ export default {
17
+ title: 'Button',
18
+ component: Button,
19
+ argTypes: {
20
+ children: {},
21
+ disabled: {
22
+ control: { type: 'boolean' },
23
+ },
24
+ variant: {
25
+ type: 'select',
26
+ options: variants,
27
+ },
28
+ },
29
+ parameters: {
30
+ docs: {
31
+ description: {
32
+ component: `
33
+ A button draws attention to important actions with a large selectable surface.
34
+
35
+ ## Guidance
36
+
37
+ ### When to use the button component
38
+
39
+ **Important actions**. Use buttons for the most important actions you want users to take on your site, such as Download, Toggle states or submitting forms.
40
+
41
+ ### When to consider something else
42
+
43
+ Linking between a site’s pages. Use regular links instead.
44
+ If the action is less popular or less important. Less popular or less important actions may be visually styled as links.
45
+
46
+ ### Usability guidance
47
+
48
+ - Keep button text short. Button text should be as short as possible with action words that clearly explain what will happen when the button is selected (for example, Download, View, or Sign up).
49
+
50
+ ### Accessibility
51
+
52
+ - Buttons should display a visible focus state when users tab to them.
53
+
54
+ - Screen readers handle buttons and links differently. When styling links to look like buttons, remember that screen readers handle links slightly differently than they do buttons. Pressing the Space key triggers a button, but pressing the Enter key triggers a link.
55
+
56
+ - Icons can be helpful. Consider adding an icon to signal specific actions (Download, Open in a new window, etc).
57
+
58
+ -------
59
+
60
+ This documentation is heavily inspired by the [U.S Web Design System (USWDS)](https://designsystem.digital.gov/components/button/#package). We use USWDS as trusted source of truth for accessibility and usability best practices.
61
+
62
+ ## Component Properties
63
+ `,
64
+ },
65
+ },
66
+ },
67
+ };
68
+
69
+ const Template = args => (
70
+ <React.Fragment>
71
+ <Button { ...args }>Primary</Button>
72
+
73
+ <Button variant="secondary" sx={ { ml: 2 } } { ...args }>
74
+ Secondary
75
+ </Button>
76
+
77
+ <Button variant="tertiary" sx={ { ml: 2 } } { ...args }>
78
+ Tertiary
79
+ </Button>
80
+
81
+ <Button variant="ghost" sx={ { ml: 2 } } { ...args }>
82
+ Ghost
83
+ </Button>
84
+
85
+ <Button variant="display" sx={ { ml: 2 } } { ...args }>
86
+ Display
87
+ </Button>
88
+
89
+ <Button variant="danger" sx={ { ml: 2 } } { ...args }>
90
+ Danger
91
+ </Button>
92
+
93
+ <Button variant="text" sx={ { ml: 2 } } as="a" href="https://google/com" { ...args }>
94
+ Button link
95
+ </Button>
96
+
97
+ <Button variant="icon" sx={ { ml: 2 } } type="button" { ...args }>
98
+ <BiCalendarHeart size={ 24 } />
99
+ <ScreenReaderText>domain.com</ScreenReaderText>
100
+ </Button>
101
+
102
+ <div sx={ { maxWidth: '100px', mt: 3 } }>
103
+ <Button variant="secondary" href="https://google/com" { ...args }>
104
+ Button with constrained width
105
+ </Button>
106
+ </div>
107
+ </React.Fragment>
108
+ );
109
+
110
+ export const Default = Template.bind( {} );
@@ -0,0 +1,67 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React, { useCallback, forwardRef, Ref } from 'react';
5
+ import { Theme, Button as ThemeButton, ButtonProps as ThemeButtonProps } from 'theme-ui';
6
+ import classNames from 'classnames';
7
+
8
+ type ButtonClickType = React.MouseEvent< HTMLButtonElement, MouseEvent >;
9
+
10
+ interface ButtonTheme extends Theme {
11
+ outline?: Record< string, string >;
12
+ }
13
+
14
+ export interface ButtonProps extends ThemeButtonProps {
15
+ disabled?: boolean;
16
+ onClick?: ( event: ButtonClickType ) => void;
17
+ }
18
+
19
+ const Button = forwardRef< HTMLButtonElement, ButtonProps >(
20
+ ( { className, disabled, onClick, sx, ...rest }: ButtonProps, ref: Ref< HTMLButtonElement > ) => {
21
+ const handleOnClick = useCallback(
22
+ ( event: ButtonClickType ) => {
23
+ if ( disabled ) {
24
+ return event.preventDefault();
25
+ }
26
+
27
+ if ( onClick ) {
28
+ return onClick( event );
29
+ }
30
+ },
31
+ [ disabled, onClick ]
32
+ );
33
+
34
+ return (
35
+ <ThemeButton
36
+ sx={ {
37
+ verticalAlign: 'middle',
38
+ display: 'inline-flex',
39
+ alignItems: 'center',
40
+ justifyContent: 'center',
41
+ minHeight: '36px',
42
+ py: 0,
43
+ textDecoration: 'none',
44
+ '&:hover': {
45
+ textDecoration: 'none',
46
+ },
47
+ '&:focus-visible': ( theme: ButtonTheme ) => theme.outline,
48
+ '&[aria-disabled="true"]': {
49
+ opacity: 0.7,
50
+ cursor: 'not-allowed',
51
+ pointerEvents: 'all',
52
+ },
53
+ ...sx,
54
+ } }
55
+ { ...rest }
56
+ aria-disabled={ disabled }
57
+ onClick={ handleOnClick }
58
+ className={ classNames( 'vip-button-component', className ) }
59
+ ref={ ref }
60
+ />
61
+ );
62
+ }
63
+ );
64
+
65
+ Button.displayName = 'Button';
66
+
67
+ export { Button };
@@ -8,4 +8,4 @@ export default {
8
8
  component: Card,
9
9
  };
10
10
 
11
- export const Default = () => <Card>Hello</Card>;
11
+ export const Default = () => <Card> Hello </Card>;
@@ -18,7 +18,7 @@ describe( '<Card />', () => {
18
18
  expect( screen.getByText( 'This is a Card' ) ).toBeInTheDocument();
19
19
 
20
20
  // Check for accessibility issues
21
- await expect( await axe( container ) ).toHaveNoViolations();
21
+ expect( await axe( container ) ).toHaveNoViolations();
22
22
  } );
23
23
 
24
24
  it( 'renders the Card component with a different variant', async () => {
@@ -27,6 +27,6 @@ describe( '<Card />', () => {
27
27
  expect( screen.getByText( 'Card text' ) ).toBeInTheDocument();
28
28
 
29
29
  // Check for accessibility issues
30
- await expect( await axe( container ) ).toHaveNoViolations();
30
+ expect( await axe( container ) ).toHaveNoViolations();
31
31
  } );
32
32
  } );
@@ -0,0 +1,40 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { forwardRef, Ref } from 'react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { Box } from '..';
10
+ import classNames, { Argument } from 'classnames';
11
+ import { BoxProps } from 'theme-ui';
12
+
13
+ export interface CardProps {
14
+ variant?: string;
15
+ sx?: BoxProps[ 'sx' ];
16
+ className?: Argument;
17
+ }
18
+
19
+ type CardBoxProps = CardProps & BoxProps;
20
+
21
+ export const Card = forwardRef< HTMLElement, CardBoxProps >(
22
+ (
23
+ { variant = 'primary', sx = {}, className, ...props }: CardBoxProps,
24
+ ref: Ref< HTMLElement >
25
+ ) => (
26
+ <Box
27
+ ref={ ref }
28
+ sx={ {
29
+ // pass variant prop to sx
30
+ variant: `cards.${ variant }`,
31
+ overflow: 'hidden',
32
+ ...sx,
33
+ } }
34
+ className={ classNames( 'vip-card-component', className ) }
35
+ { ...props }
36
+ />
37
+ )
38
+ );
39
+
40
+ Card.displayName = 'Card';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ export { Card } from './Card';
@@ -0,0 +1,44 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import React from 'react';
5
+ import type { StoryObj } from '@storybook/react';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { Code } from '..';
11
+
12
+ export default {
13
+ title: 'Code',
14
+ component: Code,
15
+ };
16
+
17
+ type Story = StoryObj< typeof Code >;
18
+
19
+ export const DefaultWithTime: Story = {
20
+ render: () => (
21
+ <Code
22
+ children={
23
+ <>
24
+ <time sx={ { color: 'logs.text.secondary' } } dateTime="2022-01-01 15:15:15">
25
+ 15:16
26
+ </time>{ ' ' }
27
+ Code
28
+ </>
29
+ }
30
+ />
31
+ ),
32
+ };
33
+
34
+ export const DefaultWithIcon: Story = {
35
+ render: () => <Code showCopy={ true }>Code with Icon</Code>,
36
+ };
37
+
38
+ export const DefaultWithConsoleInfo: Story = {
39
+ render: () => (
40
+ <Code showCopy={ true } onCopy={ () => global.alert( 'Hello world' ) }>
41
+ Code with Icon and Click callback — console.info
42
+ </Code>
43
+ ),
44
+ };
@@ -16,7 +16,9 @@ const defaultProps = {
16
16
  // Mock navigator.clipboard because jsdom doesn't support it
17
17
  Object.defineProperty( window.navigator, 'clipboard', {
18
18
  value: {
19
- writeText: () => {},
19
+ writeText: () => {
20
+ return Promise.resolve();
21
+ },
20
22
  },
21
23
  } );
22
24
 
@@ -27,7 +29,7 @@ describe( '<Code />', () => {
27
29
  expect( screen.getByText( 'This is a code' ) ).toBeInTheDocument();
28
30
 
29
31
  // Check for accessibility issues
30
- await expect( await axe( container ) ).toHaveNoViolations();
32
+ expect( await axe( container ) ).toHaveNoViolations();
31
33
  } );
32
34
 
33
35
  it( 'renders the Code component with a copy button', async () => {
@@ -37,7 +39,7 @@ describe( '<Code />', () => {
37
39
  expect( screen.getByRole( 'button', { name: 'Copy code' } ) ).toBeInTheDocument();
38
40
 
39
41
  // Check for accessibility issues
40
- await expect( await axe( container ) ).toHaveNoViolations();
42
+ expect( await axe( container ) ).toHaveNoViolations();
41
43
  } );
42
44
 
43
45
  it( 'updates the the UI after clicking on "Copy"', async () => {
@@ -51,6 +53,6 @@ describe( '<Code />', () => {
51
53
  expect( screen.getByText( 'Code copied to clipboard' ) ).toBeInTheDocument();
52
54
 
53
55
  // Check for accessibility issues
54
- await expect( await axe( container ) ).toHaveNoViolations();
56
+ expect( await axe( container ) ).toHaveNoViolations();
55
57
  } );
56
58
  } );
@@ -3,14 +3,21 @@
3
3
  /**
4
4
  * External dependencies
5
5
  */
6
- import React, { useRef, useState } from 'react';
7
- import classNames from 'classnames';
8
- import PropTypes from 'prop-types';
6
+ import React, { ReactNode, createRef, useState } from 'react';
7
+ import classNames, { Argument } from 'classnames';
9
8
  import { MdContentCopy } from 'react-icons/md';
10
9
 
11
- const Code = React.forwardRef(
12
- ( { prompt = false, showCopy = false, onCopy = null, className, ...props }, forwardRef ) => {
13
- const ref = useRef();
10
+ export interface CodeProps {
11
+ prompt?: boolean;
12
+ showCopy?: boolean;
13
+ onCopy?: () => void;
14
+ className?: Argument;
15
+ children?: ReactNode;
16
+ }
17
+
18
+ const Code = React.forwardRef< HTMLDivElement, CodeProps >(
19
+ ( { prompt = false, showCopy = false, onCopy, className, ...props }: CodeProps, forwardRef ) => {
20
+ const ref = createRef< HTMLElement >();
14
21
 
15
22
  const codeDom = (
16
23
  <code
@@ -46,6 +53,19 @@ const Code = React.forwardRef(
46
53
  return codeDom;
47
54
  }
48
55
 
56
+ const onClickCopy = () => {
57
+ window.navigator.clipboard
58
+ .writeText( ref.current?.innerText ?? '' )
59
+ .then( () => {
60
+ setCopied( true );
61
+
62
+ if ( onCopy ) {
63
+ onCopy();
64
+ }
65
+ } )
66
+ .catch( () => {} );
67
+ };
68
+
49
69
  return (
50
70
  <div
51
71
  sx={ {
@@ -74,15 +94,7 @@ const Code = React.forwardRef(
74
94
  cursor: 'pointer',
75
95
  },
76
96
  } }
77
- onClick={ () => {
78
- window.navigator.clipboard.writeText( ref.current?.innerText );
79
-
80
- setCopied( true );
81
-
82
- if ( onCopy ) {
83
- onCopy();
84
- }
85
- } }
97
+ onClick={ onClickCopy }
86
98
  >
87
99
  { copied ? (
88
100
  <span role="alert">Code copied to clipboard</span>
@@ -98,11 +110,4 @@ const Code = React.forwardRef(
98
110
 
99
111
  Code.displayName = 'Code';
100
112
 
101
- Code.propTypes = {
102
- prompt: PropTypes.bool,
103
- showCopy: PropTypes.bool,
104
- onCopy: PropTypes.func,
105
- className: PropTypes.any,
106
- };
107
-
108
113
  export { Code };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ export { Code } from './Code';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { forwardRef, Ref } from 'react';
5
+ import { Flex as ThemeFlex, FlexProps as ThemeFlexProps } from 'theme-ui';
6
+
7
+ export const Flex = forwardRef< HTMLElement, ThemeFlexProps >(
8
+ ( props: ThemeFlexProps, ref: Ref< HTMLElement > ) => <ThemeFlex ref={ ref } { ...props } />
9
+ );
10
+
11
+ Flex.displayName = 'Flex';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ export { Flex } from './Flex';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { Grid as ThemeGrid, GridProps as ThemeGridProps } from 'theme-ui';
5
+ import { forwardRef, Ref } from 'react';
6
+
7
+ export const Grid = forwardRef< HTMLDivElement, ThemeGridProps >(
8
+ ( props: ThemeGridProps, ref: Ref< HTMLDivElement > ) => <ThemeGrid { ...props } ref={ ref } />
9
+ );
10
+
11
+ Grid.displayName = 'Grid';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ export { Grid } from './Grid';
@@ -1,26 +1,18 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import React, { Ref } from 'react';
5
- import {
6
- Heading as ThemeHeading,
7
- HeadingProps as ThemeHeadingProps,
8
- ThemeUIStyleObject,
9
- } from 'theme-ui';
10
- import classNames, { Argument } from 'classnames';
4
+ import { forwardRef, Ref } from 'react';
5
+ import { Heading as ThemeHeading, HeadingProps as ThemeHeadingProps } from 'theme-ui';
6
+ import classNames from 'classnames';
11
7
 
12
- // We must Omit className because we are overriding its default React implementation.
13
- // Also, while the sx and variant props may seem redundant, specifying them here
14
- // exposes them in Storybook's controls panel.
15
- export interface HeadingProps extends Omit< ThemeHeadingProps, 'className' > {
16
- className?: Argument;
17
- sx?: ThemeUIStyleObject;
18
- variant: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
8
+ export interface HeadingProps extends ThemeHeadingProps {
9
+ variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
19
10
  }
20
11
 
21
- export const Heading = React.forwardRef< HTMLHeadingElement, HeadingProps >(
22
- ( { variant = 'h3', sx, className, ...rest }, ref: Ref< HTMLHeadingElement > ) => (
12
+ export const Heading = forwardRef< HTMLHeadingElement, HeadingProps >(
13
+ ( { variant = 'h3', sx, className, ...rest }: HeadingProps, ref: Ref< HTMLHeadingElement > ) => (
23
14
  <ThemeHeading
15
+ as={ variant }
24
16
  sx={ {
25
17
  color: 'heading',
26
18
  // pass variant prop to sx
@@ -29,7 +21,6 @@ export const Heading = React.forwardRef< HTMLHeadingElement, HeadingProps >(
29
21
  } }
30
22
  className={ classNames( 'vip-heading-component', className ) }
31
23
  ref={ ref }
32
- variant={ variant }
33
24
  { ...rest }
34
25
  />
35
26
  )