@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,23 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { StoryObj } from '@storybook/react';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import { Link } from '..';
10
+
11
+ export default {
12
+ component: Link,
13
+ title: 'Link',
14
+ };
15
+
16
+ type Story = StoryObj< typeof Link >;
17
+
18
+ export const Default: Story = {
19
+ args: {
20
+ children: 'Hello',
21
+ href: '#!',
22
+ },
23
+ };
@@ -0,0 +1,43 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { forwardRef, Ref } from 'react';
5
+ import { Link as ThemeLink, LinkProps as ThemeLinkProps, Theme } from 'theme-ui';
6
+
7
+ // Temporary interface until we add types to the theme definition.
8
+ interface LinkTheme extends Theme {
9
+ outline?: Record< string, string >;
10
+ }
11
+
12
+ export interface LinkProps extends ThemeLinkProps {
13
+ active?: boolean;
14
+ }
15
+
16
+ export const Link = forwardRef< HTMLAnchorElement, LinkProps >(
17
+ ( { active = false, sx, ...props }: LinkProps, ref: Ref< HTMLAnchorElement > ) => (
18
+ <ThemeLink
19
+ sx={ {
20
+ textDdecorationThickness: '0.1em',
21
+ textUnderlineOffset: '0.1em',
22
+ color: active ? 'links.active' : 'link',
23
+ '&:visited': {
24
+ color: 'links.visited',
25
+ },
26
+ '&:active': {
27
+ color: 'links.active',
28
+ },
29
+ '&:hover, &:focus': {
30
+ color: 'links.hover',
31
+ textDecorationLine: 'underline',
32
+ textDecorationThickness: '2px',
33
+ },
34
+ '&:focus-visible': ( theme: LinkTheme ) => theme.outline,
35
+ ...sx,
36
+ } }
37
+ ref={ ref }
38
+ { ...props }
39
+ />
40
+ )
41
+ );
42
+
43
+ Link.displayName = 'Link';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ export { Link } from './Link';
@@ -11,7 +11,7 @@ import classNames from 'classnames';
11
11
  /**
12
12
  * Internal dependencies
13
13
  */
14
- import css from './FormAutocomplete.css';
14
+ import './FormAutocomplete.css';
15
15
  import { FormSelectContent } from './FormSelectContent';
16
16
  import { FormSelectArrow } from './FormSelectArrow';
17
17
  import { Label } from '../Form/Label';
@@ -388,4 +388,4 @@ FormAutocomplete.propTypes = {
388
388
 
389
389
  FormAutocomplete.displayName = 'FormAutocomplete';
390
390
 
391
- export { FormAutocomplete, css };
391
+ export { FormAutocomplete };
@@ -0,0 +1,129 @@
1
+ /** @jsxImportSource theme-ui */
2
+
3
+ /**
4
+ * External dependencies
5
+ */
6
+ import React from 'react';
7
+ import classNames from 'classnames';
8
+ import { MdError, MdWarning, MdCheckCircle, MdInfo } from 'react-icons/md';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { Box, Flex, Heading, Card } from '../';
14
+ import { ThemeUIStyleObject } from 'theme-ui';
15
+
16
+ interface NoticeIconProps {
17
+ color: string;
18
+ variant: ColorVariants;
19
+ }
20
+
21
+ export interface NoticeProps {
22
+ children: React.ReactNode;
23
+ inline?: boolean;
24
+ sx?: ThemeUIStyleObject;
25
+ title?: React.ReactNode;
26
+ variant?: ColorVariants;
27
+ headingVariant?: React.ElementType;
28
+ className?: string;
29
+ }
30
+ type ColorVariants = 'warning' | 'error' | 'alert' | 'success' | 'info';
31
+
32
+ const NoticeIcon = ( { color, variant }: NoticeIconProps ) => {
33
+ const sx = { color, flex: '0 0 auto' };
34
+ const size = 20;
35
+
36
+ switch ( variant ) {
37
+ case 'info':
38
+ return <MdInfo sx={ sx } size={ size } aria-hidden="true" />;
39
+ case 'error':
40
+ return <MdError sx={ sx } size={ size } aria-hidden="true" />;
41
+ case 'success':
42
+ return <MdCheckCircle sx={ sx } size={ size } aria-hidden="true" />;
43
+ }
44
+
45
+ // alert and warning will get the Warning icon
46
+ return <MdWarning sx={ sx } size={ size } aria-hidden="true" />;
47
+ };
48
+
49
+ export const Notice = React.forwardRef< HTMLDivElement, NoticeProps >(
50
+ (
51
+ {
52
+ children,
53
+ className = null,
54
+ headingVariant = 'p',
55
+ inline = false,
56
+ sx = {},
57
+ title,
58
+ variant = 'warning',
59
+ ...props
60
+ },
61
+ forwardRef
62
+ ) => {
63
+ return (
64
+ <Card
65
+ sx={ {
66
+ boxShadow: 'none',
67
+ borderRadius: 2,
68
+ bg: inline ? 'transparent' : `notice.background.${ variant }`,
69
+ padding: inline ? 0 : 3,
70
+ color: `notice.text.${ variant }`,
71
+ p: {
72
+ color: `notice.text.${ variant }`,
73
+ },
74
+ a: {
75
+ color: `notice.link.${ variant }.default`,
76
+ '&:visited': {
77
+ color: `notice.link.${ variant }.visited`,
78
+ },
79
+ '&:active': {
80
+ color: `notice.link.${ variant }.active`,
81
+ },
82
+ '&:hover, &:focus': {
83
+ color: `notice.link.${ variant }.hover`,
84
+ },
85
+ },
86
+ ...sx,
87
+ } }
88
+ className={ classNames( 'vip-notice-component', className ) }
89
+ ref={ forwardRef }
90
+ { ...props }
91
+ >
92
+ <Flex
93
+ sx={ {
94
+ alignItems: 'start',
95
+ } }
96
+ >
97
+ <Box
98
+ sx={ {
99
+ mr: 3,
100
+ mt: title ? 2 : 0,
101
+ flexShrink: 0,
102
+ } }
103
+ >
104
+ <NoticeIcon color={ `notice.icon.${ variant }` } variant={ variant } />
105
+ </Box>
106
+
107
+ <Box>
108
+ { title && (
109
+ <Heading
110
+ as={ headingVariant }
111
+ sx={ {
112
+ color: `notice.text.${ variant }`,
113
+ mb: 0,
114
+ fontSize: 2,
115
+ fontWeight: 'bold',
116
+ } }
117
+ >
118
+ { title }
119
+ </Heading>
120
+ ) }
121
+ { children }
122
+ </Box>
123
+ </Flex>
124
+ </Card>
125
+ );
126
+ }
127
+ );
128
+
129
+ Notice.displayName = 'Notice';
@@ -28,7 +28,7 @@ describe( '<OptionRow />', () => {
28
28
  subTitle="Mostly used to link off to other pages."
29
29
  as="a"
30
30
  disabled
31
- variant="h3"
31
+ variant="default"
32
32
  meta=""
33
33
  />
34
34
  );
@@ -0,0 +1,40 @@
1
+ /** @jsxImportSource theme-ui */
2
+ // we'll need jsxImportSource for the sx prop when used with html elements
3
+
4
+ /**
5
+ * External dependencies
6
+ */
7
+
8
+ import { forwardRef, ReactNode, Ref } from 'react';
9
+ import { ThemeUIStyleObject } from 'theme-ui';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+
15
+ export const screenReaderTextClass: ThemeUIStyleObject = {
16
+ border: 'none',
17
+ clip: 'rect(1px, 1px, 1px, 1px)',
18
+ clipPath: 'inset(50%)',
19
+ height: '1px',
20
+ margin: '-1px',
21
+ overflow: 'hidden',
22
+ padding: '0',
23
+ position: 'absolute',
24
+ width: '1px',
25
+ wordWrap: 'normal !important' as 'normal',
26
+ };
27
+
28
+ export interface ScreenReaderTextProps {
29
+ children: ReactNode;
30
+ }
31
+
32
+ export const ScreenReaderText = forwardRef< HTMLSpanElement, ScreenReaderTextProps >(
33
+ ( props: ScreenReaderTextProps, ref: Ref< HTMLSpanElement > ) => (
34
+ <span className="screen-reader-text" sx={ screenReaderTextClass } { ...props } ref={ ref }>
35
+ { props.children }
36
+ </span>
37
+ )
38
+ );
39
+
40
+ ScreenReaderText.displayName = 'ScreenReaderText';
@@ -0,0 +1,30 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { render, screen } from '@testing-library/react';
5
+ import { axe } from 'jest-axe';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import { Spinner } from './Spinner';
11
+
12
+ describe( '<Spinner />', () => {
13
+ it( 'renders the Spinner component', async () => {
14
+ const { container } = render( <Spinner /> );
15
+
16
+ expect( container.getElementsByClassName( 'vip-spinner-component' ) ).toBeDefined();
17
+
18
+ // Check for accessibility issues
19
+ expect( await axe( container ) ).toHaveNoViolations();
20
+ } );
21
+
22
+ it( 'renders the Spinner component with a different title', async () => {
23
+ const { container } = render( <Spinner title="Please Wait" /> );
24
+
25
+ expect( screen.getByTitle( 'Please Wait' ) ).toBeInTheDocument();
26
+
27
+ // Check for accessibility issues
28
+ expect( await axe( container ) ).toHaveNoViolations();
29
+ } );
30
+ } );
@@ -0,0 +1,34 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { forwardRef, Ref } from 'react';
5
+ import { Spinner as ThemeSpinner, SpinnerProps, ThemeUIStyleObject } from 'theme-ui';
6
+ import classNames from 'classnames';
7
+
8
+ export interface ThemeSpinnerProps extends SpinnerProps {
9
+ sx?: ThemeUIStyleObject;
10
+ className?: string;
11
+ color?: string;
12
+ strokeWidth?: number;
13
+ }
14
+
15
+ export const Spinner = forwardRef< SVGSVGElement, ThemeSpinnerProps >(
16
+ (
17
+ { sx, color = 'icon.helper', strokeWidth = 2, className, ...props }: ThemeSpinnerProps,
18
+ ref: Ref< SVGSVGElement >
19
+ ) => (
20
+ <ThemeSpinner
21
+ as="svg"
22
+ sx={ {
23
+ ...sx,
24
+ color,
25
+ } }
26
+ strokeWidth={ strokeWidth }
27
+ className={ classNames( 'vip-spinner-component', className ) }
28
+ ref={ ref }
29
+ { ...props }
30
+ />
31
+ )
32
+ );
33
+
34
+ Spinner.displayName = 'Spinner';
@@ -0,0 +1 @@
1
+ export { Spinner } from './Spinner';
@@ -1,9 +1,9 @@
1
1
  /** @jsxImportSource theme-ui */
2
+ // we'll need jsxImportSource for the sx prop when used with html elements
2
3
 
3
4
  /**
4
5
  * External dependencies
5
6
  */
6
- import PropTypes from 'prop-types';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
@@ -15,7 +15,11 @@ export default {
15
15
  component: Table,
16
16
  };
17
17
 
18
- const ExampleTable = ( { caption } ) => (
18
+ interface ExampleTableProps {
19
+ caption: string;
20
+ }
21
+
22
+ const ExampleTable = ( { caption }: ExampleTableProps ) => (
19
23
  <Table caption={ caption }>
20
24
  <thead>
21
25
  <TableRow head cells={ [ 'User', 'Command', 'Duration', 'Time' ] } />
@@ -53,10 +57,6 @@ const ExampleTable = ( { caption } ) => (
53
57
  </Table>
54
58
  );
55
59
 
56
- ExampleTable.propTypes = {
57
- caption: PropTypes.string.isRequired,
58
- };
59
-
60
60
  export const Default = () => <ExampleTable caption="Example Table" />;
61
61
 
62
62
  export const WithHorizontalScroll = () => (
@@ -1,11 +1,12 @@
1
1
  /** @jsxImportSource theme-ui */
2
+ // we'll need jsxImportSource for the sx prop when used with html elements
2
3
 
3
4
  /**
4
5
  * External dependencies
5
6
  */
6
- import React, { useMemo } from 'react';
7
- import PropTypes from 'prop-types';
8
- import classNames from 'classnames';
7
+ import { forwardRef, ReactNode, Ref, useMemo } from 'react';
8
+ import classNames, { Argument } from 'classnames';
9
+ import type { ThemeUIStyleObject } from 'theme-ui';
9
10
 
10
11
  /**
11
12
  * Internal dependencies
@@ -14,8 +15,15 @@ import { screenReaderTextClass } from '../ScreenReaderText/ScreenReaderText';
14
15
  import { Box } from '../';
15
16
  import { generateId } from '../utils/random';
16
17
 
17
- const Table = React.forwardRef(
18
- ( { sx, className, children, caption = null, ...props }, forwardRef ) => {
18
+ export interface TableProps {
19
+ caption?: string;
20
+ children?: ReactNode;
21
+ className?: Argument;
22
+ sx?: ThemeUIStyleObject;
23
+ }
24
+
25
+ export const Table = forwardRef< HTMLTableElement, TableProps >(
26
+ ( { sx, className, children, caption, ...props }: TableProps, ref: Ref< HTMLTableElement > ) => {
19
27
  if ( ! caption ) {
20
28
  // eslint-disable-next-line no-console
21
29
  console.warn( '[A11Y] Please, add a caption to your table.' );
@@ -29,15 +37,12 @@ const Table = React.forwardRef(
29
37
  sx={ { width: '100%', overflowX: 'auto' } }
30
38
  role="region"
31
39
  aria-labelledby={ captionId }
32
- // Because this container is scrollable, it needs to be focusable.
33
- // A tabIndex value of 0 makes it focusable by keyboard and does not
34
- // interfere with the tab order.
35
40
  tabIndex={ 0 }
36
41
  >
37
42
  <table
38
43
  sx={ { width: '100%', minWidth: '1024px', borderSpacing: 0, ...sx } }
39
44
  className={ classNames( 'vip-table-component-element', className ) }
40
- ref={ forwardRef }
45
+ ref={ ref }
41
46
  { ...props }
42
47
  >
43
48
  { caption && (
@@ -53,12 +58,3 @@ const Table = React.forwardRef(
53
58
  );
54
59
 
55
60
  Table.displayName = 'Table';
56
-
57
- Table.propTypes = {
58
- sx: PropTypes.object,
59
- className: PropTypes.any,
60
- children: PropTypes.any,
61
- caption: PropTypes.string.isRequired,
62
- };
63
-
64
- export { Table };
@@ -1,18 +1,25 @@
1
1
  /** @jsxImportSource theme-ui */
2
+ // we'll need jsxImportSource for the sx prop when used with html elements
2
3
 
3
4
  /**
4
5
  * External dependencies
5
6
  */
6
-
7
- import PropTypes from 'prop-types';
7
+ import { ReactNode } from 'react';
8
+ import { ThemeUIStyleObject } from 'theme-ui';
8
9
 
9
10
  /**
10
11
  * Internal dependencies
11
12
  */
12
13
  import { Box } from '../';
13
14
 
14
- const TableCell = ( { head, children, ...rest } ) => {
15
- const sx = {
15
+ export interface TableCellProps extends React.HTMLProps< HTMLTableCellElement > {
16
+ children: ReactNode;
17
+ head?: boolean;
18
+ sx?: ThemeUIStyleObject;
19
+ }
20
+
21
+ export const TableCell = ( { children, head, sx, ...rest }: TableCellProps ) => {
22
+ const style: ThemeUIStyleObject = {
16
23
  borderBottom: '1px solid',
17
24
  borderTop: head ? '1px solid' : 'none',
18
25
  // borderColor should come after borderTop so it can override it
@@ -21,11 +28,11 @@ const TableCell = ( { head, children, ...rest } ) => {
21
28
  px: 3,
22
29
  py: 2,
23
30
  textAlign: 'left',
24
- ...rest.sx,
31
+ ...sx,
25
32
  };
26
33
 
27
34
  return (
28
- <Box as={ head ? 'th' : 'td' } { ...{ ...rest, sx } }>
35
+ <Box { ...rest } as={ head ? 'th' : 'td' } ref={ undefined } sx={ style }>
29
36
  { head ? (
30
37
  <span sx={ { mb: 0, color: 'table.heading', fontSize: 2, fontWeight: 'bold' } }>
31
38
  { children }
@@ -37,9 +44,4 @@ const TableCell = ( { head, children, ...rest } ) => {
37
44
  );
38
45
  };
39
46
 
40
- TableCell.propTypes = {
41
- children: PropTypes.node,
42
- head: PropTypes.bool,
43
- };
44
-
45
- export { TableCell };
47
+ TableCell.displayName = 'TableCell';
@@ -0,0 +1,63 @@
1
+ /** @jsxImportSource theme-ui */
2
+ // we'll need jsxImportSource for the sx prop when used with html elements
3
+
4
+ /**
5
+ * External dependencies
6
+ */
7
+ import { KeyboardEvent, ReactNode } from 'react';
8
+ import { ThemeUIStyleObject } from 'theme-ui';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { TableCell } from './TableCell';
14
+
15
+ export interface TableRowProps extends React.HTMLProps< HTMLTableRowElement > {
16
+ cells?: ReactNode[];
17
+ children?: ReactNode;
18
+ head?: boolean;
19
+ onClick?: () => void;
20
+ sx?: ThemeUIStyleObject;
21
+ }
22
+
23
+ export const TableRow = ( {
24
+ onClick,
25
+ head = false,
26
+ cells = [],
27
+ children,
28
+ sx,
29
+ ...rest
30
+ }: TableRowProps ) => {
31
+ const hoverStyles: ThemeUIStyleObject = {
32
+ cursor: 'pointer',
33
+ '&:hover': {
34
+ bg: 'hover',
35
+ borderRadius: 2,
36
+ },
37
+ ...sx,
38
+ };
39
+
40
+ function handleKeyPress( evt: KeyboardEvent< HTMLTableRowElement > ) {
41
+ if ( onClick && evt.key === 'Enter' ) {
42
+ onClick();
43
+ }
44
+ }
45
+
46
+ return (
47
+ <tr
48
+ sx={ onClick ? hoverStyles : sx }
49
+ onClick={ onClick }
50
+ tabIndex={ onClick ? 0 : undefined }
51
+ onKeyDown={ handleKeyPress }
52
+ { ...rest }
53
+ >
54
+ { cells.map( ( cell, index ) => (
55
+ <TableCell key={ index } head={ head }>
56
+ { cell }
57
+ </TableCell>
58
+ ) ) }
59
+
60
+ { children }
61
+ </tr>
62
+ );
63
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ export { Table } from './Table';
5
+ export { TableRow } from './TableRow';
6
+ export { TableCell } from './TableCell';
@@ -1,4 +1,5 @@
1
1
  /** @jsxImportSource theme-ui */
2
+ // we'll need jsxImportSource for the sx prop when used with html elements
2
3
 
3
4
  /**
4
5
  * Internal dependencies
@@ -0,0 +1,25 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { forwardRef, Ref } from 'react';
5
+ import { Text as ThemeText, TextProps as ThemeTextProps } from 'theme-ui';
6
+ import classNames from 'classnames';
7
+
8
+ export const Text = forwardRef< HTMLDivElement, ThemeTextProps >(
9
+ ( { sx, className, ...props }: ThemeTextProps, ref: Ref< HTMLDivElement > ) => (
10
+ <ThemeText
11
+ as="p"
12
+ sx={ {
13
+ lineHeight: 1.5,
14
+ marginBottom: 2,
15
+ color: 'text',
16
+ ...sx,
17
+ } }
18
+ className={ classNames( 'vip-text-component', className ) }
19
+ ref={ ref }
20
+ { ...props }
21
+ />
22
+ )
23
+ );
24
+
25
+ Text.displayName = 'Text';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ export { Text } from './Text';