@conveyorhq/arrow-ds 2.0.0-beta.6 → 2.0.0-beta.7

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 (471) hide show
  1. package/package.json +28 -21
  2. package/public/components/Accordion/Accordion.d.ts +29 -17
  3. package/public/components/Accordion/Accordion.js +78 -56
  4. package/public/components/Accordion/context.d.ts +12 -0
  5. package/public/components/Accordion/context.js +30 -0
  6. package/public/components/Accordion/index.d.ts +1 -0
  7. package/public/components/Accordion/index.js +1 -0
  8. package/public/components/Accordion/types.d.ts +17 -0
  9. package/public/components/Accordion/types.js +2 -0
  10. package/public/components/Avatar/Avatar.d.ts +1 -1
  11. package/public/components/Avatar/AvatarGroup.d.ts +1 -1
  12. package/public/components/Avatar/AvatarGroup.js +11 -1
  13. package/public/components/Button/Button.d.ts +3 -2
  14. package/public/components/Button/Button.js +3 -0
  15. package/public/components/CloseButton/CloseButton.d.ts +1 -2
  16. package/public/components/ConveyorLogo/ConveyorLogo.js +1 -1
  17. package/public/components/Divider/Divider.d.ts +1 -9
  18. package/public/components/Divider/Divider.js +13 -24
  19. package/public/components/Drawer/Drawer.js +11 -9
  20. package/public/components/Flex/Flex.js +3 -4
  21. package/public/components/Grid/Grid.d.ts +2 -2
  22. package/public/components/Grid/Grid.js +9 -3
  23. package/public/components/Icon/Icon.d.ts +14 -0
  24. package/public/components/Icon/Icon.js +32 -2
  25. package/public/components/Icon/svg/ArrowToBottom.d.ts +2 -0
  26. package/public/components/Icon/svg/ArrowToBottom.js +14 -0
  27. package/public/components/Icon/svg/CommentAltCheck.d.ts +2 -0
  28. package/public/components/Icon/svg/CommentAltCheck.js +13 -0
  29. package/public/components/Icon/svg/index.d.ts +2 -0
  30. package/public/components/Icon/svg/index.js +2 -0
  31. package/public/components/Input/Input.d.ts +3 -2
  32. package/public/components/Input/Input.js +7 -6
  33. package/public/components/Loading/Loading.d.ts +3 -2
  34. package/public/components/Loading/Loading.js +4 -7
  35. package/public/components/Markdown/Markdown.d.ts +1 -1
  36. package/public/components/Markdown/Markdown.js +3 -3
  37. package/public/components/MarkdownEditor/MarkdownEditor.js +1 -2
  38. package/public/components/MarkdownEditor/MarkdownHelp.js +4 -7
  39. package/public/components/MenuRenderer/MenuRenderer.js +7 -4
  40. package/public/components/Modal/Modal.d.ts +6 -0
  41. package/public/components/Modal/Modal.js +29 -19
  42. package/public/components/Modal/context.d.ts +6 -0
  43. package/public/components/Modal/context.js +15 -0
  44. package/public/components/Modal/index.d.ts +1 -0
  45. package/public/components/Modal/index.js +1 -0
  46. package/public/components/OptionButton/OptionButton.d.ts +28 -1
  47. package/public/components/OptionButton/OptionButton.js +58 -11
  48. package/public/components/OptionButton/context.d.ts +11 -0
  49. package/public/components/OptionButton/context.js +16 -0
  50. package/public/components/Overlay/Overlay.js +2 -2
  51. package/public/components/Paragraph/Paragraph.js +3 -7
  52. package/public/components/Reference/Reference.d.ts +2 -2
  53. package/public/components/Select/Select.d.ts +1 -0
  54. package/public/components/Select/Select.js +12 -7
  55. package/public/components/Snackbar/Snackbar.d.ts +14 -22
  56. package/public/components/Snackbar/Snackbar.js +28 -85
  57. package/public/components/Snackbar/SnackbarProvider.d.ts +2 -0
  58. package/public/components/Snackbar/SnackbarProvider.js +21 -0
  59. package/public/components/Snackbar/constants.d.ts +2 -0
  60. package/public/components/Snackbar/constants.js +5 -0
  61. package/public/components/Snackbar/context.d.ts +4 -0
  62. package/public/components/Snackbar/context.js +17 -0
  63. package/public/components/Snackbar/helpers.d.ts +3 -0
  64. package/public/components/Snackbar/helpers.js +31 -0
  65. package/public/components/Snackbar/hooks.d.ts +2 -0
  66. package/public/components/Snackbar/hooks.js +47 -0
  67. package/public/components/Snackbar/index.d.ts +6 -0
  68. package/public/components/Snackbar/index.js +6 -0
  69. package/public/components/Snackbar/types.d.ts +43 -0
  70. package/public/components/Snackbar/types.js +2 -0
  71. package/public/components/SpeechBubble/SpeechBubble.d.ts +1 -0
  72. package/public/components/SpeechBubble/SpeechBubble.js +9 -2
  73. package/public/components/Table/Table.d.ts +5 -2
  74. package/public/components/Table/Table.js +11 -4
  75. package/public/components/Table/TableCell.d.ts +1 -0
  76. package/public/components/Table/TableCell.js +4 -2
  77. package/public/components/Table/TableHeaderCell.d.ts +2 -1
  78. package/public/components/Table/TableHeaderCell.js +24 -7
  79. package/public/components/Table/index.d.ts +3 -0
  80. package/public/components/Tag/Tag.d.ts +2 -2
  81. package/public/components/Toast/Toast.d.ts +3 -3
  82. package/public/components/Toast/Toast.js +6 -2
  83. package/public/css/styles.css +2550 -30950
  84. package/public/css/styles.min.css +1 -1
  85. package/public/css/styles.min.css.map +1 -1
  86. package/public/index.d.ts +0 -15
  87. package/public/index.js +0 -15
  88. package/public/storybook-components/ComponentHeading.js +3 -5
  89. package/public/storybook-components/ComponentStatus.d.ts +1 -0
  90. package/public/storybook-components/ComponentStatus.js +4 -0
  91. package/public/storybook-components/index.d.ts +1 -1
  92. package/public/storybook-components/index.js +1 -1
  93. package/public/style-dictionary/dist/tokens.css +377 -0
  94. package/public/style-dictionary/dist/tokens.d.ts +427 -0
  95. package/public/style-dictionary/dist/tokens.js +427 -0
  96. package/public/style-dictionary/dist/tokens.module.js +427 -0
  97. package/public/style-dictionary/src/border-radius.js +11 -0
  98. package/public/style-dictionary/src/border-width.js +10 -0
  99. package/public/style-dictionary/src/color.js +97 -0
  100. package/public/style-dictionary/src/font-size.js +15 -0
  101. package/public/style-dictionary/src/font-weight.js +7 -0
  102. package/public/style-dictionary/src/height.js +13 -0
  103. package/public/style-dictionary/src/leading.js +8 -0
  104. package/public/style-dictionary/src/screen-width.js +8 -0
  105. package/public/style-dictionary/src/shadow.js +19 -0
  106. package/public/style-dictionary/src/spacing.js +69 -0
  107. package/public/style-dictionary/src/tracking.js +7 -0
  108. package/public/style-dictionary/src/type.js +34 -0
  109. package/public/style-dictionary/src/width.js +32 -0
  110. package/public/style-dictionary/src/z-index.js +21 -0
  111. package/public/style-dictionary/tailwind.config.js +87 -0
  112. package/public/tokens/box-shadow.d.ts +1 -0
  113. package/public/tokens/box-shadow.js +1 -0
  114. package/public/tokens/font-family.js +1 -1
  115. package/public/tokens/height.d.ts +65 -43
  116. package/public/tokens/height.js +3 -44
  117. package/public/tokens/index.d.ts +526 -173
  118. package/public/tokens/index.js +1 -1
  119. package/public/tokens/margin.d.ts +129 -47
  120. package/public/tokens/margin.js +3 -47
  121. package/public/tokens/padding.d.ts +65 -24
  122. package/public/tokens/padding.js +2 -24
  123. package/public/tokens/sizing-scale.d.ts +133 -0
  124. package/public/tokens/sizing-scale.js +136 -0
  125. package/public/tokens/width.d.ts +197 -63
  126. package/public/tokens/width.js +6 -63
  127. package/public/types/index.d.ts +14 -2
  128. package/public/types/index.js +2 -4
  129. package/src/components/Accordion/Accordion.story.mdx +232 -22
  130. package/src/components/Accordion/Accordion.tsx +228 -117
  131. package/src/components/Accordion/context.ts +60 -0
  132. package/src/components/Accordion/index.css +0 -5
  133. package/src/components/Accordion/index.ts +1 -0
  134. package/src/components/Accordion/types.ts +55 -0
  135. package/src/components/Avatar/Avatar.story.mdx +60 -0
  136. package/src/components/Avatar/AvatarGroup.tsx +11 -9
  137. package/src/components/Avatar/index.css +8 -0
  138. package/src/components/Button/Button.story.mdx +116 -1
  139. package/src/components/Button/Button.tsx +10 -4
  140. package/src/components/Button/product.css +12 -0
  141. package/src/components/Card/Card.story.mdx +11 -36
  142. package/src/components/CloseButton/CloseButton.tsx +1 -1
  143. package/src/components/ConveyorLogo/ConveyorLogo.tsx +1 -0
  144. package/src/components/Divider/Divider.tsx +26 -40
  145. package/src/components/Divider/index.css +16 -0
  146. package/src/components/Drawer/Drawer.story.mdx +68 -70
  147. package/src/components/Drawer/Drawer.tsx +10 -9
  148. package/src/components/Drawer/index.css +26 -1
  149. package/src/components/Flex/Flex.story.mdx +130 -0
  150. package/src/components/Flex/Flex.tsx +7 -6
  151. package/src/components/Flex/index.css +3 -0
  152. package/src/components/Frame/Frame.story.mdx +7 -2
  153. package/src/components/Grid/Grid.story.mdx +205 -3
  154. package/src/components/Grid/Grid.tsx +44 -5
  155. package/src/components/Grid/index.css +3 -0
  156. package/src/components/Icon/Icon.tsx +60 -5
  157. package/src/components/Icon/svg/ArrowToBottom.tsx +17 -0
  158. package/src/components/Icon/svg/CommentAltCheck.tsx +13 -0
  159. package/src/components/Icon/svg/index.ts +2 -0
  160. package/src/components/Input/Input.story.mdx +199 -13
  161. package/src/components/Input/Input.tsx +39 -6
  162. package/src/components/Input/brand.css +7 -7
  163. package/src/components/Input/index.css +30 -0
  164. package/src/components/Input/product.css +12 -48
  165. package/src/components/Loading/Loading.story.mdx +16 -9
  166. package/src/components/Loading/Loading.tsx +17 -8
  167. package/src/components/Loading/index.css +1 -67
  168. package/src/components/Markdown/Markdown.story.mdx +67 -0
  169. package/src/components/Markdown/Markdown.tsx +3 -2
  170. package/src/components/MarkdownEditor/MarkdownEditor.tsx +2 -3
  171. package/src/components/MarkdownEditor/MarkdownHelp.tsx +7 -10
  172. package/src/components/MarkdownEditor/index.css +5 -1
  173. package/src/components/MenuRenderer/MenuRenderer.tsx +9 -7
  174. package/src/components/Modal/Modal.story.mdx +26 -0
  175. package/src/components/Modal/Modal.tsx +60 -42
  176. package/src/components/Modal/context.ts +20 -0
  177. package/src/components/Modal/index.ts +1 -0
  178. package/src/components/OptionButton/OptionButton.story.mdx +119 -20
  179. package/src/components/OptionButton/OptionButton.tsx +211 -23
  180. package/src/components/OptionButton/context.ts +22 -0
  181. package/src/components/OptionButton/index.css +1 -2
  182. package/src/components/Overlay/Overlay.tsx +2 -3
  183. package/src/components/Overlay/index.css +1 -0
  184. package/src/components/Paragraph/Paragraph.story.mdx +16 -2
  185. package/src/components/Paragraph/Paragraph.tsx +5 -13
  186. package/src/components/Paragraph/index.css +6 -0
  187. package/src/components/Popover/index.css +5 -6
  188. package/src/components/Reference/Reference.tsx +2 -2
  189. package/src/components/Select/Select.story.mdx +23 -10
  190. package/src/components/Select/Select.tsx +31 -6
  191. package/src/components/Snackbar/Snackbar.story.mdx +96 -9
  192. package/src/components/Snackbar/Snackbar.tsx +56 -145
  193. package/src/components/Snackbar/SnackbarProvider.tsx +31 -0
  194. package/src/components/Snackbar/constants.ts +2 -0
  195. package/src/components/Snackbar/context.ts +20 -0
  196. package/src/components/Snackbar/helpers.tsx +52 -0
  197. package/src/components/Snackbar/hooks.ts +57 -0
  198. package/src/components/Snackbar/index.ts +6 -0
  199. package/src/components/Snackbar/types.ts +180 -0
  200. package/src/components/SpeechBubble/SpeechBubble.story.mdx +76 -0
  201. package/src/components/SpeechBubble/SpeechBubble.tsx +22 -1
  202. package/src/components/SpeechBubble/index.css +7 -4
  203. package/src/components/Table/Table.story.mdx +243 -0
  204. package/src/components/Table/Table.tsx +36 -1
  205. package/src/components/Table/TableCell.tsx +24 -1
  206. package/src/components/Table/TableHeaderCell.tsx +64 -11
  207. package/src/components/Table/index.css +138 -10
  208. package/src/components/Table/index.ts +3 -0
  209. package/src/components/Tag/Tag.tsx +2 -2
  210. package/src/components/Toast/Toast.story.mdx +1 -1
  211. package/src/components/Toast/Toast.tsx +14 -10
  212. package/src/components/Toast/index.css +4 -2
  213. package/src/components/Toggle/index.css +2 -3
  214. package/src/css/base.css +6 -561
  215. package/src/css/components.css +4 -9
  216. package/src/css/fonts.css +13 -10
  217. package/src/css/styles.css +0 -1
  218. package/src/css/utilities/animations.css +13 -0
  219. package/src/docs/Typography.story.mdx +12 -9
  220. package/src/index.ts +0 -15
  221. package/src/storybook-components/ComponentHeading.tsx +4 -19
  222. package/src/storybook-components/ComponentStatus.tsx +4 -0
  223. package/src/storybook-components/index.tsx +1 -1
  224. package/src/tokens/box-shadow.ts +1 -0
  225. package/src/tokens/font-family.ts +1 -1
  226. package/src/tokens/height.ts +3 -44
  227. package/src/tokens/index.ts +2 -2
  228. package/src/tokens/margin.ts +4 -47
  229. package/src/tokens/padding.ts +3 -24
  230. package/src/tokens/sizing-scale.ts +134 -0
  231. package/src/tokens/width.ts +7 -63
  232. package/src/types/index.ts +34 -5
  233. package/public/components/Absolute/Absolute.d.ts +0 -2
  234. package/public/components/Absolute/Absolute.js +0 -14
  235. package/public/components/Absolute/index.d.ts +0 -1
  236. package/public/components/Absolute/index.js +0 -5
  237. package/public/components/Appbar/Appbar.d.ts +0 -40
  238. package/public/components/Appbar/Appbar.js +0 -29
  239. package/public/components/Appbar/AppbarLogo.d.ts +0 -2
  240. package/public/components/Appbar/AppbarLogo.js +0 -19
  241. package/public/components/Appbar/AppbarTabs.d.ts +0 -10
  242. package/public/components/Appbar/AppbarTabs.js +0 -42
  243. package/public/components/Appbar/AppbarUser.d.ts +0 -26
  244. package/public/components/Appbar/AppbarUser.js +0 -60
  245. package/public/components/Appbar/config.d.ts +0 -7
  246. package/public/components/Appbar/config.js +0 -13
  247. package/public/components/Appbar/index.d.ts +0 -1
  248. package/public/components/Appbar/index.js +0 -13
  249. package/public/components/ArrowButton/ArrowButton.d.ts +0 -9
  250. package/public/components/ArrowButton/ArrowButton.js +0 -22
  251. package/public/components/ArrowButton/index.d.ts +0 -1
  252. package/public/components/ArrowButton/index.js +0 -13
  253. package/public/components/ArrowLink/ArrowLink.d.ts +0 -9
  254. package/public/components/ArrowLink/ArrowLink.js +0 -21
  255. package/public/components/ArrowLink/index.d.ts +0 -1
  256. package/public/components/ArrowLink/index.js +0 -13
  257. package/public/components/Aside/Aside.d.ts +0 -14
  258. package/public/components/Aside/Aside.js +0 -28
  259. package/public/components/Aside/index.d.ts +0 -1
  260. package/public/components/Aside/index.js +0 -13
  261. package/public/components/Fixed/Fixed.d.ts +0 -2
  262. package/public/components/Fixed/Fixed.js +0 -14
  263. package/public/components/Fixed/Fixed.story.d.ts +0 -1
  264. package/public/components/Fixed/Fixed.story.js +0 -12
  265. package/public/components/Fixed/index.d.ts +0 -1
  266. package/public/components/Fixed/index.js +0 -5
  267. package/public/components/Flex/Flex.story.d.ts +0 -1
  268. package/public/components/Flex/Flex.story.js +0 -12
  269. package/public/components/IntegrationLogo/IntegrationLogo.d.ts +0 -10
  270. package/public/components/IntegrationLogo/IntegrationLogo.js +0 -33
  271. package/public/components/IntegrationLogo/IntegrationLogoSvg.d.ts +0 -9
  272. package/public/components/IntegrationLogo/IntegrationLogoSvg.js +0 -52
  273. package/public/components/IntegrationLogo/index.d.ts +0 -1
  274. package/public/components/IntegrationLogo/index.js +0 -13
  275. package/public/components/IntegrationLogo/svg/addigy.d.ts +0 -2
  276. package/public/components/IntegrationLogo/svg/addigy.js +0 -17
  277. package/public/components/IntegrationLogo/svg/aws.d.ts +0 -2
  278. package/public/components/IntegrationLogo/svg/aws.js +0 -22
  279. package/public/components/IntegrationLogo/svg/bamboohr.d.ts +0 -2
  280. package/public/components/IntegrationLogo/svg/bamboohr.js +0 -18
  281. package/public/components/IntegrationLogo/svg/bitbucket.d.ts +0 -2
  282. package/public/components/IntegrationLogo/svg/bitbucket.js +0 -18
  283. package/public/components/IntegrationLogo/svg/conveyor.d.ts +0 -2
  284. package/public/components/IntegrationLogo/svg/conveyor.js +0 -20
  285. package/public/components/IntegrationLogo/svg/default.d.ts +0 -2
  286. package/public/components/IntegrationLogo/svg/default.js +0 -13
  287. package/public/components/IntegrationLogo/svg/deploy.d.ts +0 -2
  288. package/public/components/IntegrationLogo/svg/deploy.js +0 -17
  289. package/public/components/IntegrationLogo/svg/events-api.d.ts +0 -2
  290. package/public/components/IntegrationLogo/svg/events-api.js +0 -26
  291. package/public/components/IntegrationLogo/svg/gcp.d.ts +0 -3
  292. package/public/components/IntegrationLogo/svg/gcp.js +0 -15
  293. package/public/components/IntegrationLogo/svg/github.d.ts +0 -3
  294. package/public/components/IntegrationLogo/svg/github.js +0 -12
  295. package/public/components/IntegrationLogo/svg/gitlab.d.ts +0 -2
  296. package/public/components/IntegrationLogo/svg/gitlab.js +0 -19
  297. package/public/components/IntegrationLogo/svg/gsuite.d.ts +0 -2
  298. package/public/components/IntegrationLogo/svg/gsuite.js +0 -15
  299. package/public/components/IntegrationLogo/svg/index.d.ts +0 -21
  300. package/public/components/IntegrationLogo/svg/index.js +0 -54
  301. package/public/components/IntegrationLogo/svg/jamf.d.ts +0 -2
  302. package/public/components/IntegrationLogo/svg/jamf.js +0 -20
  303. package/public/components/IntegrationLogo/svg/jira.d.ts +0 -2
  304. package/public/components/IntegrationLogo/svg/jira.js +0 -21
  305. package/public/components/IntegrationLogo/svg/jumpcloud.d.ts +0 -2
  306. package/public/components/IntegrationLogo/svg/jumpcloud.js +0 -28
  307. package/public/components/IntegrationLogo/svg/okta.d.ts +0 -2
  308. package/public/components/IntegrationLogo/svg/okta.js +0 -16
  309. package/public/components/IntegrationLogo/svg/onelogin.d.ts +0 -2
  310. package/public/components/IntegrationLogo/svg/onelogin.js +0 -18
  311. package/public/components/IntegrationLogo/svg/salesforce.d.ts +0 -2
  312. package/public/components/IntegrationLogo/svg/salesforce.js +0 -20
  313. package/public/components/IntegrationLogo/svg/slack.d.ts +0 -2
  314. package/public/components/IntegrationLogo/svg/slack.js +0 -19
  315. package/public/components/IntegrationLogo/svg/wrapper.d.ts +0 -11
  316. package/public/components/IntegrationLogo/svg/wrapper.js +0 -13
  317. package/public/components/IntegrationLogo/svg/zoom.d.ts +0 -2
  318. package/public/components/IntegrationLogo/svg/zoom.js +0 -23
  319. package/public/components/Meta/Meta.d.ts +0 -6
  320. package/public/components/Meta/Meta.js +0 -21
  321. package/public/components/Meta/Meta.story.d.ts +0 -1
  322. package/public/components/Meta/Meta.story.js +0 -39
  323. package/public/components/Meta/index.d.ts +0 -1
  324. package/public/components/Meta/index.js +0 -5
  325. package/public/components/PropertyDiff/PropertyDiff.d.ts +0 -7
  326. package/public/components/PropertyDiff/PropertyDiff.js +0 -22
  327. package/public/components/PropertyDiff/index.d.ts +0 -1
  328. package/public/components/PropertyDiff/index.js +0 -13
  329. package/public/components/Relative/Relative.d.ts +0 -2
  330. package/public/components/Relative/Relative.js +0 -14
  331. package/public/components/Relative/Relative.story.d.ts +0 -1
  332. package/public/components/Relative/Relative.story.js +0 -12
  333. package/public/components/Relative/index.d.ts +0 -1
  334. package/public/components/Relative/index.js +0 -5
  335. package/public/components/SpeechBubble/SpeechBubble.story.d.ts +0 -1
  336. package/public/components/SpeechBubble/SpeechBubble.story.js +0 -19
  337. package/public/components/StatusLabel/StatusLabel.d.ts +0 -16
  338. package/public/components/StatusLabel/StatusLabel.js +0 -40
  339. package/public/components/StatusLabel/index.d.ts +0 -1
  340. package/public/components/StatusLabel/index.js +0 -13
  341. package/public/components/StatusPanel/StatusPanel.d.ts +0 -11
  342. package/public/components/StatusPanel/StatusPanel.js +0 -24
  343. package/public/components/StatusPanel/index.d.ts +0 -1
  344. package/public/components/StatusPanel/index.js +0 -13
  345. package/public/components/Sticky/Sticky.d.ts +0 -2
  346. package/public/components/Sticky/Sticky.js +0 -14
  347. package/public/components/Sticky/Sticky.story.d.ts +0 -1
  348. package/public/components/Sticky/Sticky.story.js +0 -12
  349. package/public/components/Sticky/index.d.ts +0 -1
  350. package/public/components/Sticky/index.js +0 -5
  351. package/public/components/TopBar/TopBar.d.ts +0 -14
  352. package/public/components/TopBar/TopBar.js +0 -24
  353. package/public/components/TopBar/TopBarBreadcrumbs.d.ts +0 -10
  354. package/public/components/TopBar/TopBarBreadcrumbs.js +0 -34
  355. package/public/components/TopBar/TopBarSubNav.d.ts +0 -2
  356. package/public/components/TopBar/TopBarSubNav.js +0 -16
  357. package/public/components/TopBar/TopBarSubNavItem.d.ts +0 -5
  358. package/public/components/TopBar/TopBarSubNavItem.js +0 -17
  359. package/public/components/TopBar/index.d.ts +0 -1
  360. package/public/components/TopBar/index.js +0 -13
  361. package/public/components/VendorLogo/VendorLogo.d.ts +0 -20
  362. package/public/components/VendorLogo/VendorLogo.js +0 -57
  363. package/public/components/VendorLogo/index.d.ts +0 -1
  364. package/public/components/VendorLogo/index.js +0 -13
  365. package/public/storybook-components/TailwindPropertyClasses.d.ts +0 -9
  366. package/public/storybook-components/TailwindPropertyClasses.js +0 -194
  367. package/public/tailwind.config.d.ts +0 -1
  368. package/public/tailwind.config.js +0 -4
  369. package/public/tokens/_tailwind-config.d.ts +0 -810
  370. package/public/tokens/_tailwind-config.js +0 -50
  371. package/src/components/Absolute/Absolute.story.mdx +0 -26
  372. package/src/components/Absolute/Absolute.tsx +0 -9
  373. package/src/components/Absolute/index.ts +0 -1
  374. package/src/components/Appbar/Appbar.story.mdx +0 -118
  375. package/src/components/Appbar/Appbar.tsx +0 -64
  376. package/src/components/Appbar/AppbarLogo.tsx +0 -29
  377. package/src/components/Appbar/AppbarTabs.tsx +0 -47
  378. package/src/components/Appbar/AppbarUser.tsx +0 -144
  379. package/src/components/Appbar/config.ts +0 -12
  380. package/src/components/Appbar/index.css +0 -203
  381. package/src/components/Appbar/index.ts +0 -1
  382. package/src/components/ArrowButton/ArrowButton.story.mdx +0 -110
  383. package/src/components/ArrowButton/ArrowButton.tsx +0 -54
  384. package/src/components/ArrowButton/index.css +0 -42
  385. package/src/components/ArrowButton/index.ts +0 -1
  386. package/src/components/ArrowLink/ArrowLink.story.mdx +0 -65
  387. package/src/components/ArrowLink/ArrowLink.tsx +0 -42
  388. package/src/components/ArrowLink/index.ts +0 -1
  389. package/src/components/Aside/Aside.story.mdx +0 -65
  390. package/src/components/Aside/Aside.tsx +0 -59
  391. package/src/components/Aside/index.css +0 -11
  392. package/src/components/Aside/index.ts +0 -1
  393. package/src/components/Fixed/Fixed.md +0 -16
  394. package/src/components/Fixed/Fixed.story.tsx +0 -12
  395. package/src/components/Fixed/Fixed.tsx +0 -9
  396. package/src/components/Fixed/index.ts +0 -1
  397. package/src/components/Flex/Flex.md +0 -14
  398. package/src/components/Flex/Flex.story.tsx +0 -12
  399. package/src/components/IntegrationLogo/IntegrationLogo.story.mdx +0 -159
  400. package/src/components/IntegrationLogo/IntegrationLogo.tsx +0 -54
  401. package/src/components/IntegrationLogo/IntegrationLogoSvg.tsx +0 -79
  402. package/src/components/IntegrationLogo/index.ts +0 -1
  403. package/src/components/IntegrationLogo/svg/addigy.tsx +0 -23
  404. package/src/components/IntegrationLogo/svg/aws.tsx +0 -52
  405. package/src/components/IntegrationLogo/svg/bamboohr.tsx +0 -34
  406. package/src/components/IntegrationLogo/svg/bitbucket.tsx +0 -37
  407. package/src/components/IntegrationLogo/svg/conveyor.tsx +0 -41
  408. package/src/components/IntegrationLogo/svg/default.tsx +0 -11
  409. package/src/components/IntegrationLogo/svg/deploy.tsx +0 -29
  410. package/src/components/IntegrationLogo/svg/events-api.tsx +0 -75
  411. package/src/components/IntegrationLogo/svg/gcp.tsx +0 -26
  412. package/src/components/IntegrationLogo/svg/github.tsx +0 -14
  413. package/src/components/IntegrationLogo/svg/gitlab.tsx +0 -40
  414. package/src/components/IntegrationLogo/svg/gsuite.tsx +0 -24
  415. package/src/components/IntegrationLogo/svg/index.ts +0 -21
  416. package/src/components/IntegrationLogo/svg/jamf.tsx +0 -36
  417. package/src/components/IntegrationLogo/svg/jira.tsx +0 -44
  418. package/src/components/IntegrationLogo/svg/jumpcloud.tsx +0 -86
  419. package/src/components/IntegrationLogo/svg/okta.tsx +0 -28
  420. package/src/components/IntegrationLogo/svg/onelogin.tsx +0 -34
  421. package/src/components/IntegrationLogo/svg/salesforce.tsx +0 -39
  422. package/src/components/IntegrationLogo/svg/slack.tsx +0 -40
  423. package/src/components/IntegrationLogo/svg/wrapper.tsx +0 -35
  424. package/src/components/IntegrationLogo/svg/zoom.tsx +0 -51
  425. package/src/components/Meta/Meta.md +0 -14
  426. package/src/components/Meta/Meta.story.tsx +0 -24
  427. package/src/components/Meta/Meta.tsx +0 -26
  428. package/src/components/Meta/index.ts +0 -1
  429. package/src/components/PropertyDiff/PropertDiff.story.mdx +0 -46
  430. package/src/components/PropertyDiff/PropertyDiff.tsx +0 -48
  431. package/src/components/PropertyDiff/index.css +0 -33
  432. package/src/components/PropertyDiff/index.ts +0 -1
  433. package/src/components/Relative/Relative.md +0 -16
  434. package/src/components/Relative/Relative.story.tsx +0 -12
  435. package/src/components/Relative/Relative.tsx +0 -9
  436. package/src/components/Relative/index.ts +0 -1
  437. package/src/components/SpeechBubble/SpeechBubble.md +0 -14
  438. package/src/components/SpeechBubble/SpeechBubble.story.tsx +0 -26
  439. package/src/components/StatusLabel/StatusLabel.story.mdx +0 -316
  440. package/src/components/StatusLabel/StatusLabel.tsx +0 -112
  441. package/src/components/StatusLabel/index.css +0 -23
  442. package/src/components/StatusLabel/index.ts +0 -1
  443. package/src/components/StatusPanel/StatusPanel.story.mdx +0 -109
  444. package/src/components/StatusPanel/StatusPanel.tsx +0 -51
  445. package/src/components/StatusPanel/index.css +0 -52
  446. package/src/components/StatusPanel/index.ts +0 -1
  447. package/src/components/Sticky/Sticky.md +0 -16
  448. package/src/components/Sticky/Sticky.story.tsx +0 -12
  449. package/src/components/Sticky/Sticky.tsx +0 -9
  450. package/src/components/Sticky/index.ts +0 -1
  451. package/src/components/TopBar/TopBar.story.mdx +0 -154
  452. package/src/components/TopBar/TopBar.tsx +0 -40
  453. package/src/components/TopBar/TopBarBreadcrumbs.tsx +0 -79
  454. package/src/components/TopBar/TopBarSubNav.tsx +0 -19
  455. package/src/components/TopBar/TopBarSubNavItem.tsx +0 -21
  456. package/src/components/TopBar/index.css +0 -102
  457. package/src/components/TopBar/index.ts +0 -1
  458. package/src/components/VendorLogo/VendorLogo.story.mdx +0 -209
  459. package/src/components/VendorLogo/VendorLogo.tsx +0 -110
  460. package/src/components/VendorLogo/index.css +0 -46
  461. package/src/components/VendorLogo/index.ts +0 -1
  462. package/src/docs/TailwindClasses.story.mdx +0 -15
  463. package/src/docs/brand-components/BrandButton.story.mdx +0 -103
  464. package/src/docs/brand-components/BrandCheckbox.story.mdx +0 -63
  465. package/src/docs/brand-components/BrandFormGroup.story.mdx +0 -76
  466. package/src/docs/brand-components/BrandInput.story.mdx +0 -41
  467. package/src/docs/brand-components/BrandRadio.story.mdx +0 -45
  468. package/src/docs/brand-components/BrandTextArea.story.mdx +0 -41
  469. package/src/storybook-components/TailwindPropertyClasses.tsx +0 -285
  470. package/src/tailwind.config.ts +0 -6
  471. package/src/tokens/_tailwind-config.ts +0 -69
@@ -0,0 +1,180 @@
1
+ import {
2
+ Action,
3
+ RequiredToasterProps,
4
+ ToasterPositionOptions,
5
+ } from "../../types";
6
+ import { BoxProps } from "../Box";
7
+ import { IconType } from "../Icon";
8
+
9
+ /**
10
+ * Redefines RequiredToasterProps for Snackbar’s instance
11
+ */
12
+ export type SnackbarToasterProps = RequiredToasterProps;
13
+
14
+ /**
15
+ * The positioning options are a subset that are supported by Toaster; addtional
16
+ * options may be added as needed
17
+ */
18
+ type SnackbarPosition = Extract<
19
+ ToasterPositionOptions,
20
+ "bottom-left" | "bottom-right"
21
+ >;
22
+
23
+ /**
24
+ * Props that are shared between all implementations of the Snackbar
25
+ */
26
+ type SnackbarSharedProps = {
27
+ /**
28
+ * Position of the snackbar in relation to the browser window
29
+ */
30
+ position?: SnackbarPosition;
31
+ /**
32
+ * The amount of time (in milliseconds) the snackbar appears on-screen. If
33
+ * undefined, then the Snackbar will stay on-screen indefinitely. An undefined
34
+ * duration would be used in cases when the Snackbar is used as a loading
35
+ * message (e.g., an in progress API call).
36
+ */
37
+ duration?: number | null;
38
+ };
39
+
40
+ /**
41
+ * Defines the type for a custom Snackbar component
42
+ */
43
+ type SnackbarWithComponentProps = {
44
+ /**
45
+ * Component to render as the Snackbar
46
+ */
47
+ component: React.ReactNode;
48
+ message?: never;
49
+ };
50
+
51
+ /**
52
+ * Defines the type for the default Snackbar which requires a message string
53
+ */
54
+ type SnackbarWithMessageProps = {
55
+ /**
56
+ * The message shown in the Snackbar; ideally short and succinct
57
+ */
58
+ message: React.ReactNode;
59
+ component?: never;
60
+ };
61
+
62
+ /**
63
+ * Defines the type which determines if a Snackbar is visible
64
+ */
65
+ type SnackbarIsVisibleProp = {
66
+ isVisible: boolean;
67
+ };
68
+
69
+ /**
70
+ * Additional props for the Snackbar component
71
+ */
72
+ type SnackbarOtherProps = {
73
+ /**
74
+ * Adds an action next to the message
75
+ */
76
+ action?: Action;
77
+ /**
78
+ * When a loading icon is detected, it will automatically spin.
79
+ *
80
+ * Sizing is handled automatically, too.
81
+ */
82
+ icon?: IconType;
83
+ /**
84
+ * Prevent the close button from rendering. Useful in cases when the Snackbar
85
+ * is used as a loading message (e.g., an in progress API call).
86
+ */
87
+ disableClose?: boolean;
88
+ };
89
+
90
+ /**
91
+ * Snackbar component props
92
+ */
93
+ export type SnackbarProps = Omit<SnackbarWithMessageProps, "component"> &
94
+ SnackbarOtherProps &
95
+ SnackbarSharedProps &
96
+ BoxProps;
97
+
98
+ /**
99
+ * Snackbar.Root component props
100
+ */
101
+ export type SnackbarRootProps = BoxProps;
102
+
103
+ /**
104
+ * Snackbar.Icon component props
105
+ */
106
+ export type SnackbarIconProps = Pick<SnackbarOtherProps, "icon">;
107
+
108
+ /**
109
+ * Snackbar.Text component props
110
+ */
111
+ export type SnackbarTextProps = { children: React.ReactNode };
112
+
113
+ /**
114
+ * Snackbar state props
115
+ */
116
+ export type SnackbarStateProps = Pick<SnackbarToasterProps, "id"> &
117
+ Pick<SnackbarSharedProps, "position">;
118
+
119
+ /**
120
+ * Snackbar context props
121
+ */
122
+ export type SnackbarContextProps = SnackbarToasterProps & SnackbarSharedProps;
123
+
124
+ /**
125
+ * Snackbar provider props
126
+ */
127
+ export type SnackbarProviderProps = SnackbarToasterProps &
128
+ SnackbarSharedProps &
129
+ Omit<SnackbarWithComponentProps, "message">;
130
+
131
+ /**
132
+ * Defines the type for showing a Snackbar using the default component, which
133
+ * requires a message and includes optional other props
134
+ */
135
+ type ShowSnackbarWithMessageProps = SnackbarWithMessageProps &
136
+ SnackbarOtherProps &
137
+ SnackbarSharedProps &
138
+ BoxProps;
139
+
140
+ /**
141
+ * Defines the type for showing a Snackbar with a custom component
142
+ */
143
+ type ShowSnackbarWithComponentProps = SnackbarWithComponentProps &
144
+ SnackbarSharedProps;
145
+
146
+ /**
147
+ * Defines the type for the showSnackbar helper
148
+ */
149
+ export type ShowSnackbarProps =
150
+ | ShowSnackbarWithMessageProps
151
+ | ShowSnackbarWithComponentProps;
152
+
153
+ /**
154
+ * Redefines SnackbarStateProps for the hideSnackbar helper
155
+ */
156
+ export type HideSnackbarProps = SnackbarStateProps;
157
+
158
+ /**
159
+ * Defines the type for the hook to show a Snackbar using the default component,
160
+ * which requires a message and includes optional other props
161
+ */
162
+ type SnackbarWithMessageHookProps = SnackbarWithMessageProps &
163
+ SnackbarOtherProps &
164
+ SnackbarSharedProps &
165
+ SnackbarIsVisibleProp &
166
+ BoxProps;
167
+
168
+ /**
169
+ * Defines the type for the hook to showi a Snackbar with a custom component
170
+ */
171
+ type SnackbarWithComponentHookProps = SnackbarWithComponentProps &
172
+ SnackbarSharedProps &
173
+ SnackbarIsVisibleProp;
174
+
175
+ /**
176
+ * Defines the type for the useSnackbar hook
177
+ */
178
+ export type SnackbarHookProps =
179
+ | SnackbarWithMessageHookProps
180
+ | SnackbarWithComponentHookProps;
@@ -0,0 +1,76 @@
1
+ import {
2
+ Meta,
3
+ Preview,
4
+ Props,
5
+ Story,
6
+ SourceState,
7
+ } from "@storybook/addon-docs/blocks";
8
+ import { Stack, ORIENTATION } from "../..";
9
+ import { ComponentHeading } from "../../storybook-components";
10
+ import { SpeechBubble } from "./SpeechBubble";
11
+
12
+ export const placementOptions = [
13
+ "top-start",
14
+ "top-end",
15
+ "bottom-start",
16
+ "bottom-end",
17
+ ];
18
+
19
+ <Meta title="Components/Data/Speech Bubble" component={SpeechBubble} />
20
+
21
+ <ComponentHeading
22
+ componentName="Speech Bubble"
23
+ description=""
24
+ sourcePath="src/components/SpeechBubble/SpeechBubble.tsx"
25
+ />
26
+
27
+ Displays text in a box styled to look like a speech bubble. Ideally used for
28
+ comments or quotes. It should not be used for general text.
29
+
30
+ ```jsx
31
+ import { SpeechBubble } from "@conveyorhq/arrow-ds";
32
+ ```
33
+
34
+ <Preview withSource={SourceState.OPEN}>
35
+ <Story name="SpeechBubble">
36
+ <SpeechBubble>This is the SpeechBubble component</SpeechBubble>
37
+ </Story>
38
+ </Preview>
39
+
40
+ ## Props
41
+
42
+ <Props of={SpeechBubble} />
43
+
44
+ ## Demos
45
+
46
+ ### Setting the placement of the arrow
47
+
48
+ Each speech bubble can have its arrow positioned on one of the corners. If
49
+ placement is not set explicitly, then the arrow will be positioned top-left.
50
+
51
+ <Preview withSource={SourceState.OPEN}>
52
+ <Story name="SpeechBubble placement">
53
+ <Stack className="w-full" orientation={ORIENTATION.VERTICAL} spacing={8}>
54
+ {placementOptions.map((placement) => (
55
+ <SpeechBubble placement={placement} key={placement}>
56
+ Placement: {placement}
57
+ </SpeechBubble>
58
+ ))}
59
+ </Stack>
60
+ </Story>
61
+ </Preview>
62
+
63
+ ### Using custom styles
64
+
65
+ An example to show how the styles of the speech bubble can be changed.
66
+
67
+ <Preview withSource={SourceState.OPEN}>
68
+ <Story name="SpeechBubble styles">
69
+ <SpeechBubble
70
+ className="w-56 bg-caution p-4 text-h4 text-black"
71
+ placement="top-start"
72
+ >
73
+ Styles are different
74
+ </SpeechBubble>
75
+ </Story>
76
+ </Preview>
@@ -12,20 +12,41 @@ export type SpeechBubblePlacement =
12
12
  | "bottom-end";
13
13
 
14
14
  export interface SpeechBubbleProps extends BoxProps {
15
+ /**
16
+ * data-placement attribute is deprecated, use placement instead
17
+ */
15
18
  "data-placement"?: SpeechBubblePlacement;
19
+ /**
20
+ * Tell the speech bubble where to place the arrow
21
+ */
22
+ placement?: SpeechBubblePlacement;
16
23
  }
17
24
 
18
25
  export const SpeechBubble = (props: SpeechBubbleProps) => {
19
26
  const {
20
27
  "data-placement": dataPlacement = "top-start",
28
+ placement,
21
29
  className,
22
30
  ...rest
23
31
  } = props;
24
32
 
33
+ const ref = React.useRef<HTMLDivElement>(null);
34
+
35
+ React.useLayoutEffect(() => {
36
+ if (ref.current) {
37
+ const style = window.getComputedStyle(ref.current);
38
+ ref.current.style.setProperty(
39
+ "--ads-speech-bubble-bg",
40
+ style.backgroundColor,
41
+ );
42
+ }
43
+ }, [ref]);
44
+
25
45
  return (
26
46
  <Box
47
+ ref={ref}
27
48
  className={classNames(bem(cn), className)}
28
- data-placement={dataPlacement}
49
+ data-placement={placement || dataPlacement}
29
50
  {...rest}
30
51
  />
31
52
  );
@@ -1,10 +1,13 @@
1
1
  .ads-SpeechBubble {
2
- @apply bg-gray-200
3
- rounded
2
+ --ads-speech-bubble-bg: theme("colors.gray.200");
3
+
4
+ @apply rounded
4
5
  p-2
5
6
  text-gray-700
6
7
  text-h5
7
8
  relative;
9
+
10
+ background-color: var(--ads-speech-bubble-bg);
8
11
  }
9
12
 
10
13
  .ads-SpeechBubble::after {
@@ -16,12 +19,12 @@
16
19
  }
17
20
 
18
21
  .ads-SpeechBubble[data-placement*="top"]::after {
19
- border-bottom: 8px solid theme("colors.gray.200");
22
+ border-bottom: 8px solid var(--ads-speech-bubble-bg);
20
23
  top: -8px;
21
24
  }
22
25
 
23
26
  .ads-SpeechBubble[data-placement*="bottom"]::after {
24
- border-top: 8px solid theme("colors.gray.200");
27
+ border-top: 8px solid var(--ads-speech-bubble-bg);
25
28
  bottom: -8px;
26
29
  }
27
30
 
@@ -6,6 +6,8 @@ import { SORT_DIRECTION } from "./TableContext";
6
6
  import { Box } from "../Box";
7
7
  import { Checkbox } from "../Checkbox";
8
8
  import { ScrollPane } from "../ScrollPane";
9
+ import { STATUS_VARIANT } from "../../types";
10
+ import { Banner } from "../Banner";
9
11
  import { Button, BUTTON_VARIANT } from "../Button";
10
12
  import { ICON_TYPE } from "../Icon";
11
13
 
@@ -545,6 +547,123 @@ This example shows how to include a sticky checkbox column to use when batch act
545
547
  </Story>
546
548
  </Preview>
547
549
 
550
+ ### Space Rows
551
+
552
+ <Preview>
553
+ <Story name="Space Rows">
554
+ {() => {
555
+ const useBatchSelect = (data) => {
556
+ const [selectedItems, setSelectedItems] = React.useState(new Set());
557
+ const clearAll = () => {
558
+ setSelectedItems(new Set());
559
+ };
560
+ const selectAll = () => {
561
+ if (data.length === selectedItems.size) {
562
+ setSelectedItems(new Set());
563
+ } else {
564
+ setSelectedItems(new Set(data.map((d) => d.id)));
565
+ }
566
+ };
567
+ const onSelect = (...args) => {
568
+ const newSet = new Set(selectedItems);
569
+ args.forEach((id) => {
570
+ if (selectedItems.has(id)) {
571
+ newSet.delete(id);
572
+ } else {
573
+ newSet.add(id);
574
+ }
575
+ });
576
+ setSelectedItems(newSet);
577
+ };
578
+ return {
579
+ selectedItems,
580
+ clearAll,
581
+ selectAll,
582
+ onSelect,
583
+ };
584
+ };
585
+ const data = "abcdefgh".split("").map((id) => ({ id }));
586
+ const { selectedItems, onSelect, clearAll, selectAll } = useBatchSelect(
587
+ data,
588
+ );
589
+ const totalItems = data.length;
590
+ const Row = ({ id, selected }) => {
591
+ return (
592
+ <Table.Row selected={selected}>
593
+ <Table.Cell>
594
+ <Checkbox onClick={() => onSelect(id)} checked={selected} />
595
+ </Table.Cell>
596
+ <Table.Cell>I am Fixed!</Table.Cell>
597
+ <Table.Cell>unfixed data</Table.Cell>
598
+ <Table.Cell>unfixed data</Table.Cell>
599
+ <Table.Cell>unfixed data</Table.Cell>
600
+ <Table.Cell>unfixed data</Table.Cell>
601
+ <Table.Cell>unfixed data</Table.Cell>
602
+ </Table.Row>
603
+ );
604
+ };
605
+ return (
606
+ <Box className="h-64 bg-gray-100 p-5">
607
+ <ScrollPane>
608
+ <Table hasBatchActions spaceRows affixHeader>
609
+ <Table.Head>
610
+ <Table.Row>
611
+ <Table.HeaderCell
612
+ sortable={false}
613
+ shrinkToContent
614
+ removeVerticalPadding
615
+ >
616
+ <Checkbox
617
+ onClick={() => {
618
+ if (selectedItems === totalItems) {
619
+ clearAll();
620
+ } else {
621
+ selectAll();
622
+ }
623
+ }}
624
+ checked={selectedItems.size === totalItems}
625
+ />
626
+ </Table.HeaderCell>
627
+ <Table.HeaderCell sortable={false} minColumnWidth="125px">
628
+ #1 Fixed 125px
629
+ </Table.HeaderCell>
630
+ <Table.HeaderCell sortable={false} minColumnWidth="125px">
631
+ #2
632
+ </Table.HeaderCell>
633
+ <Table.HeaderCell sortable={false} minColumnWidth="125px">
634
+ #3
635
+ </Table.HeaderCell>
636
+ <Table.HeaderCell sortable={false} minColumnWidth="125px">
637
+ #4
638
+ </Table.HeaderCell>
639
+ <Table.HeaderCell sortable={false} minColumnWidth="125px">
640
+ #5
641
+ </Table.HeaderCell>
642
+ <Table.HeaderCell sortable={false} minColumnWidth="125px">
643
+ #6
644
+ </Table.HeaderCell>
645
+ </Table.Row>
646
+ </Table.Head>
647
+ <Table.Body>
648
+ {data.map((item) => {
649
+ return (
650
+ <Row
651
+ id={item.id}
652
+ key={item.id}
653
+ selected={selectedItems.has(item.id)}
654
+ onSelect={onSelect}
655
+ />
656
+ );
657
+ })}
658
+ </Table.Body>
659
+ </Table>
660
+ </ScrollPane>
661
+ </Box>
662
+ );
663
+ }}
664
+ </Story>
665
+ </Preview>
666
+
548
667
  ### With column widths
549
668
 
550
669
  <Preview>
@@ -818,3 +937,127 @@ For the table to scroll, it must be wrapped with a ScrollPane.
818
937
  </Table>
819
938
  </Story>
820
939
  </Preview>
940
+
941
+ ### With aligned headers
942
+
943
+ The header cells can be aligned left, center or right.
944
+
945
+ <Preview>
946
+ <Story name="Table with aligned headers">
947
+ <Table outerBorder>
948
+ <Table.Head>
949
+ <Table.Row>
950
+ <Table.HeaderCell align="left" sortable={false}>
951
+ ID
952
+ </Table.HeaderCell>
953
+ <Table.HeaderCell align="center" sortable={false}>
954
+ Name
955
+ </Table.HeaderCell>
956
+ <Table.HeaderCell align="right" sortable={false}>
957
+ Email
958
+ </Table.HeaderCell>
959
+ </Table.Row>
960
+ </Table.Head>
961
+ <Table.Body>
962
+ <Table.Row>
963
+ <Table.Cell align="left">1</Table.Cell>
964
+ <Table.Cell align="center">Wendy George</Table.Cell>
965
+ <Table.Cell align="right">wendy.george@healthco.com</Table.Cell>
966
+ </Table.Row>
967
+ <Table.Row>
968
+ <Table.Cell align="left">2</Table.Cell>
969
+ <Table.Cell align="center">Joe Smith</Table.Cell>
970
+ <Table.Cell align="right">joe.smith@healthco.com</Table.Cell>
971
+ </Table.Row>
972
+ </Table.Body>
973
+ </Table>
974
+ </Story>
975
+ </Preview>
976
+
977
+ ### Using grid column sizing
978
+
979
+ <Banner title="Experimental Feature" variant={STATUS_VARIANT.WARNING}>
980
+ This feature is experimental and may cause layout issues when used in
981
+ production.
982
+ </Banner>
983
+
984
+ This feature uses
985
+ [CSS grid layout](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout)
986
+ to create a consistent column layout. It’s completely opt-in and the current
987
+ HTML table layout is still the default.
988
+
989
+ To use grid sizing, set `enableGridSizing` to true and pass an array or string
990
+ of grid columns to `gridSizing`. The value of `gridSizing` can be any valid
991
+ value for the CSS `grid-template-columns`
992
+ [property](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns).
993
+
994
+ The benefit is that when the table is sorted or filtered, the column widths will
995
+ not shift around like they currently do with the default HTML table layout.
996
+
997
+ <Preview>
998
+ <Story name="Table grid sizing">
999
+ {() => {
1000
+ const rowData = [
1001
+ {
1002
+ id: "1",
1003
+ name: "Wendy George",
1004
+ email: "wendy.george@healthco.com",
1005
+ },
1006
+ {
1007
+ id: "2",
1008
+ name: "Joe Smith",
1009
+ email: "joe.smith@healthco.com",
1010
+ },
1011
+ {
1012
+ id: "3",
1013
+ name: "Hannah Williams",
1014
+ email: "hannah.williams@healthco.com",
1015
+ },
1016
+ ];
1017
+ return (
1018
+ <Table
1019
+ enableGridSizing
1020
+ gridSizing={[
1021
+ "1fr",
1022
+ "1.25fr",
1023
+ "2fr",
1024
+ "1fr",
1025
+ ".75fr",
1026
+ "1fr",
1027
+ "1fr",
1028
+ "1fr",
1029
+ ]}
1030
+ >
1031
+ <Table.Head>
1032
+ <Table.Row>
1033
+ <Table.HeaderCell>ID</Table.HeaderCell>
1034
+ <Table.HeaderCell>Name</Table.HeaderCell>
1035
+ <Table.HeaderCell>Email</Table.HeaderCell>
1036
+ <Table.HeaderCell>Extra 1</Table.HeaderCell>
1037
+ <Table.HeaderCell>Extra 2</Table.HeaderCell>
1038
+ <Table.HeaderCell>Extra 3</Table.HeaderCell>
1039
+ <Table.HeaderCell>Extra 4</Table.HeaderCell>
1040
+ <Table.HeaderCell>Extra 5</Table.HeaderCell>
1041
+ </Table.Row>
1042
+ </Table.Head>
1043
+ <Table.Body>
1044
+ {rowData.map((row) => {
1045
+ return (
1046
+ <Table.Row key={row.id}>
1047
+ <Table.Cell>{row.id}</Table.Cell>
1048
+ <Table.Cell>{row.name}</Table.Cell>
1049
+ <Table.Cell>{row.email}</Table.Cell>
1050
+ <Table.Cell>#1</Table.Cell>
1051
+ <Table.Cell>#2</Table.Cell>
1052
+ <Table.Cell>#3</Table.Cell>
1053
+ <Table.Cell>#4</Table.Cell>
1054
+ <Table.Cell>#5</Table.Cell>
1055
+ </Table.Row>
1056
+ );
1057
+ })}
1058
+ </Table.Body>
1059
+ </Table>
1060
+ );
1061
+ }}
1062
+ </Story>
1063
+ </Preview>
@@ -61,6 +61,21 @@ interface TableProps extends React.HTMLProps<HTMLTableElement> {
61
61
  * Does the table have batch / bulk actions?
62
62
  */
63
63
  hasBatchActions?: boolean;
64
+ /**
65
+ * Add more space (margin) between each row
66
+ */
67
+ spaceRows?: boolean;
68
+ /**
69
+ * Experimental; enable grid layout for the table and utilize grid column
70
+ * sizing
71
+ */
72
+ enableGridSizing?: boolean;
73
+ /**
74
+ * Experimental; set the grid columns when `enableGridSizing` is true. The
75
+ * values here should ahere to the CSS `grid-template-columns`
76
+ * [property](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns)
77
+ */
78
+ gridSizing?: string | string[];
64
79
  }
65
80
 
66
81
  const Table = ({
@@ -77,11 +92,16 @@ const Table = ({
77
92
  enableHorizontalScroll = false, // Deprecated
78
93
  stickyColumn = false,
79
94
  hasBatchActions = false,
95
+ spaceRows = false,
96
+ style,
97
+ enableGridSizing = false,
98
+ gridSizing,
80
99
  ...rest
81
100
  }: TableProps) => {
82
101
  const wrapperClasses = classNames(
83
102
  bem(wrapperCn),
84
103
  enableHorizontalScroll && bem(wrapperCn, { m: "enable-hscroll" }),
104
+ spaceRows && bem(wrapperCn, { m: "space-rows" }),
85
105
  );
86
106
 
87
107
  const classes = classNames(
@@ -92,6 +112,8 @@ const Table = ({
92
112
  noResults && bem(cn, { m: "no-results" }),
93
113
  stickyColumn && bem(cn, { m: "sticky-column" }),
94
114
  hasBatchActions && bem(cn, { m: "batch-actions" }),
115
+ spaceRows && bem(cn, { m: "space-rows" }),
116
+ enableGridSizing && gridSizing && bem(cn, { m: "grid-sizing" }),
95
117
  className,
96
118
  );
97
119
 
@@ -109,7 +131,20 @@ const Table = ({
109
131
  }}
110
132
  >
111
133
  <div className={wrapperClasses}>
112
- <table className={classes} {...rest}>
134
+ <table
135
+ className={classes}
136
+ style={
137
+ enableGridSizing && gridSizing
138
+ ? {
139
+ gridTemplateColumns: Array.isArray(gridSizing)
140
+ ? gridSizing.join(" ")
141
+ : gridSizing,
142
+ ...style,
143
+ }
144
+ : style
145
+ }
146
+ {...rest}
147
+ >
113
148
  {children}
114
149
  </table>
115
150
  </div>