@conveyorhq/arrow-ds 2.0.0-beta.5 → 2.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (617) hide show
  1. package/package.json +31 -23
  2. package/public/components/Accordion/Accordion.d.ts +29 -17
  3. package/public/components/Accordion/Accordion.js +73 -53
  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/Avatar.js +20 -19
  12. package/public/components/Avatar/AvatarGroup.d.ts +1 -1
  13. package/public/components/Avatar/AvatarGroup.js +11 -1
  14. package/public/components/Button/Button.d.ts +3 -2
  15. package/public/components/Button/Button.js +5 -2
  16. package/public/components/CloseButton/CloseButton.d.ts +1 -2
  17. package/public/components/ConveyorLogo/ConveyorLogo.js +7 -7
  18. package/public/components/Divider/Divider.d.ts +1 -9
  19. package/public/components/Divider/Divider.js +13 -24
  20. package/public/components/Drawer/Drawer.js +4 -2
  21. package/public/components/Flex/Flex.js +3 -4
  22. package/public/components/Frame/Frame.d.ts +1 -1
  23. package/public/components/Grid/Grid.d.ts +2 -2
  24. package/public/components/Grid/Grid.js +9 -3
  25. package/public/components/Icon/Icon.d.ts +15 -0
  26. package/public/components/Icon/Icon.js +34 -2
  27. package/public/components/Icon/svg/ArrowToBottom.d.ts +2 -0
  28. package/public/components/Icon/svg/ArrowToBottom.js +14 -0
  29. package/public/components/Icon/svg/CommentAltCheck.d.ts +2 -0
  30. package/public/components/Icon/svg/CommentAltCheck.js +13 -0
  31. package/public/components/Icon/svg/index.d.ts +2 -0
  32. package/public/components/Icon/svg/index.js +2 -0
  33. package/public/components/Input/Input.d.ts +3 -2
  34. package/public/components/Input/Input.js +7 -6
  35. package/public/components/Loading/Loading.d.ts +3 -2
  36. package/public/components/Loading/Loading.js +4 -7
  37. package/public/components/Markdown/Markdown.d.ts +1 -1
  38. package/public/components/Markdown/Markdown.js +3 -3
  39. package/public/components/MarkdownEditor/MarkdownEditor.js +1 -2
  40. package/public/components/MarkdownEditor/MarkdownHelp.js +4 -7
  41. package/public/components/Modal/Modal.d.ts +6 -0
  42. package/public/components/Modal/Modal.js +30 -20
  43. package/public/components/Modal/context.d.ts +6 -0
  44. package/public/components/Modal/context.js +15 -0
  45. package/public/components/Modal/index.d.ts +1 -0
  46. package/public/components/Modal/index.js +1 -0
  47. package/public/components/OptionButton/OptionButton.d.ts +28 -1
  48. package/public/components/OptionButton/OptionButton.js +65 -13
  49. package/public/components/OptionButton/context.d.ts +11 -0
  50. package/public/components/OptionButton/context.js +16 -0
  51. package/public/components/Overlay/Overlay.js +2 -2
  52. package/public/components/Paragraph/Paragraph.js +3 -7
  53. package/public/components/Reference/Reference.d.ts +2 -2
  54. package/public/components/Select/Select.d.ts +1 -0
  55. package/public/components/Select/Select.js +15 -10
  56. package/public/components/Select/SelectPopover.js +6 -6
  57. package/public/components/Select/index.d.ts +2 -0
  58. package/public/components/Select/index.js +3 -0
  59. package/public/components/Select/theme.js +22 -22
  60. package/public/components/Snackbar/Snackbar.d.ts +14 -22
  61. package/public/components/Snackbar/Snackbar.js +28 -85
  62. package/public/components/Snackbar/SnackbarProvider.d.ts +2 -0
  63. package/public/components/Snackbar/SnackbarProvider.js +21 -0
  64. package/public/components/Snackbar/constants.d.ts +2 -0
  65. package/public/components/Snackbar/constants.js +5 -0
  66. package/public/components/Snackbar/context.d.ts +4 -0
  67. package/public/components/Snackbar/context.js +17 -0
  68. package/public/components/Snackbar/helpers.d.ts +3 -0
  69. package/public/components/Snackbar/helpers.js +31 -0
  70. package/public/components/Snackbar/hooks.d.ts +2 -0
  71. package/public/components/Snackbar/hooks.js +47 -0
  72. package/public/components/Snackbar/index.d.ts +6 -0
  73. package/public/components/Snackbar/index.js +6 -0
  74. package/public/components/Snackbar/types.d.ts +43 -0
  75. package/public/components/Snackbar/types.js +2 -0
  76. package/public/components/SpeechBubble/SpeechBubble.d.ts +1 -0
  77. package/public/components/SpeechBubble/SpeechBubble.js +9 -2
  78. package/public/components/Svg/Svg.d.ts +3 -3
  79. package/public/components/Svg/Svg.js +1 -2
  80. package/public/components/Table/Table.d.ts +5 -2
  81. package/public/components/Table/Table.js +11 -4
  82. package/public/components/Table/TableCell.d.ts +1 -0
  83. package/public/components/Table/TableCell.js +4 -2
  84. package/public/components/Table/TableHeaderCell.d.ts +2 -1
  85. package/public/components/Table/TableHeaderCell.js +24 -7
  86. package/public/components/Table/index.d.ts +3 -0
  87. package/public/components/Tag/Tag.d.ts +2 -2
  88. package/public/components/Toast/Toast.d.ts +3 -3
  89. package/public/components/Toast/Toast.js +6 -2
  90. package/public/components/Tooltip/Tooltip.js +24 -31
  91. package/public/components/VisuallyHidden/VisuallyHidden.d.ts +2 -1
  92. package/public/components/VisuallyHidden/VisuallyHidden.js +3 -5
  93. package/public/css/styles.css +4542 -33010
  94. package/public/css/styles.min.css +1 -1
  95. package/public/css/styles.min.css.map +1 -1
  96. package/public/hooks/index.d.ts +3 -0
  97. package/public/hooks/index.js +7 -1
  98. package/public/hooks/useMatchMedia.d.ts +1 -0
  99. package/public/hooks/useMatchMedia.js +27 -0
  100. package/public/hooks/usePrefersReducedMotion.d.ts +1 -0
  101. package/public/hooks/usePrefersReducedMotion.js +9 -0
  102. package/public/hooks/useScreenOrientation.d.ts +1 -0
  103. package/public/hooks/useScreenOrientation.js +24 -0
  104. package/public/index.d.ts +0 -15
  105. package/public/index.js +0 -15
  106. package/public/src/style-dictionary/dist/tokens.css +378 -0
  107. package/public/src/style-dictionary/dist/tokens.d.ts +428 -0
  108. package/public/src/style-dictionary/dist/tokens.js +428 -0
  109. package/public/src/style-dictionary/dist/tokens.module.js +428 -0
  110. package/public/src/style-dictionary/tailwind.config.js +87 -0
  111. package/public/storybook-components/ComponentHeading.js +3 -5
  112. package/public/storybook-components/ComponentStatus.d.ts +1 -0
  113. package/public/storybook-components/ComponentStatus.js +4 -0
  114. package/public/storybook-components/EnumTable.js +2 -1
  115. package/public/storybook-components/Story.d.ts +2 -1
  116. package/public/storybook-components/Story.js +4 -1
  117. package/public/storybook-components/index.d.ts +1 -1
  118. package/public/storybook-components/index.js +1 -1
  119. package/public/style-dictionary/dist/tokens.d.ts +433 -0
  120. package/public/style-dictionary/dist/tokens.js +426 -0
  121. package/public/style-dictionary/dist/tokens.module.d.ts +431 -0
  122. package/public/style-dictionary/dist/tokens.module.js +424 -0
  123. package/public/style-dictionary/src/border-radius.d.ts +31 -0
  124. package/public/style-dictionary/src/border-radius.js +12 -0
  125. package/public/style-dictionary/src/border-width.d.ts +21 -0
  126. package/public/style-dictionary/src/border-width.js +11 -0
  127. package/public/style-dictionary/src/color.d.ts +249 -0
  128. package/public/style-dictionary/src/color.js +99 -0
  129. package/public/style-dictionary/src/font-size.d.ts +45 -0
  130. package/public/style-dictionary/src/font-size.js +16 -0
  131. package/public/style-dictionary/src/font-weight.d.ts +13 -0
  132. package/public/style-dictionary/src/font-weight.js +8 -0
  133. package/public/style-dictionary/src/height.d.ts +215 -0
  134. package/public/style-dictionary/src/height.js +13 -0
  135. package/public/style-dictionary/src/leading.d.ts +17 -0
  136. package/public/style-dictionary/src/leading.js +9 -0
  137. package/public/style-dictionary/src/screen-width.d.ts +17 -0
  138. package/public/style-dictionary/src/screen-width.js +9 -0
  139. package/public/style-dictionary/src/shadow.d.ts +63 -0
  140. package/public/style-dictionary/src/shadow.js +20 -0
  141. package/public/style-dictionary/src/spacing.d.ts +197 -0
  142. package/public/style-dictionary/src/spacing.js +70 -0
  143. package/public/style-dictionary/src/tracking.d.ts +13 -0
  144. package/public/style-dictionary/src/tracking.js +8 -0
  145. package/public/style-dictionary/src/type.d.ts +13 -0
  146. package/public/style-dictionary/src/type.js +35 -0
  147. package/public/style-dictionary/src/width.d.ts +287 -0
  148. package/public/style-dictionary/src/width.js +32 -0
  149. package/public/style-dictionary/src/z-index.d.ts +53 -0
  150. package/public/style-dictionary/src/z-index.js +22 -0
  151. package/public/style-dictionary/tailwind.config.d.ts +392 -0
  152. package/public/style-dictionary/tailwind.config.js +66 -0
  153. package/public/tokens/box-shadow.d.ts +1 -0
  154. package/public/tokens/box-shadow.js +1 -0
  155. package/public/tokens/font-family.js +1 -1
  156. package/public/tokens/height.d.ts +65 -43
  157. package/public/tokens/height.js +3 -44
  158. package/public/tokens/index.d.ts +526 -173
  159. package/public/tokens/index.js +1 -1
  160. package/public/tokens/margin.d.ts +129 -47
  161. package/public/tokens/margin.js +3 -47
  162. package/public/tokens/padding.d.ts +65 -24
  163. package/public/tokens/padding.js +2 -24
  164. package/public/tokens/sizing-scale.d.ts +133 -0
  165. package/public/tokens/sizing-scale.js +136 -0
  166. package/public/tokens/width.d.ts +197 -63
  167. package/public/tokens/width.js +6 -63
  168. package/public/types/index.d.ts +14 -6
  169. package/public/types/index.js +3 -10
  170. package/public/utilities/index.d.ts +1 -0
  171. package/public/utilities/index.js +3 -1
  172. package/public/utilities/mergeEventHandlers.d.ts +3 -0
  173. package/public/utilities/mergeEventHandlers.js +13 -0
  174. package/src/components/Accordion/Accordion.story.mdx +232 -22
  175. package/src/components/Accordion/Accordion.tsx +237 -114
  176. package/src/components/Accordion/context.ts +60 -0
  177. package/src/components/Accordion/index.css +0 -5
  178. package/src/components/Accordion/index.ts +1 -0
  179. package/src/components/Accordion/types.ts +55 -0
  180. package/src/components/Avatar/Avatar.story.mdx +60 -0
  181. package/src/components/Avatar/Avatar.tsx +20 -19
  182. package/src/components/Avatar/AvatarGroup.tsx +11 -9
  183. package/src/components/Avatar/index.css +8 -0
  184. package/src/components/Button/Button.story.mdx +116 -1
  185. package/src/components/Button/Button.tsx +13 -7
  186. package/src/components/Button/index.css +12 -1
  187. package/src/components/Button/product.css +12 -0
  188. package/src/components/Card/Card.story.mdx +56 -73
  189. package/src/components/CloseButton/CloseButton.tsx +1 -1
  190. package/src/components/ConveyorLogo/ConveyorLogo.tsx +7 -6
  191. package/src/components/Divider/Divider.tsx +26 -40
  192. package/src/components/Divider/index.css +16 -0
  193. package/src/components/Drawer/Drawer.story.mdx +68 -70
  194. package/src/components/Drawer/Drawer.tsx +9 -8
  195. package/src/components/Drawer/index.css +26 -1
  196. package/src/components/Flex/Flex.story.mdx +130 -0
  197. package/src/components/Flex/Flex.tsx +7 -6
  198. package/src/components/Flex/index.css +3 -0
  199. package/src/components/Frame/Frame.story.mdx +146 -6
  200. package/src/components/Frame/Frame.tsx +1 -1
  201. package/src/components/Frame/index.css +8 -13
  202. package/src/components/Grid/Grid.story.mdx +205 -3
  203. package/src/components/Grid/Grid.tsx +44 -5
  204. package/src/components/Grid/index.css +3 -0
  205. package/src/components/Icon/Icon.tsx +63 -5
  206. package/src/components/Icon/svg/ArrowToBottom.tsx +17 -0
  207. package/src/components/Icon/svg/CommentAltCheck.tsx +13 -0
  208. package/src/components/Icon/svg/index.ts +2 -0
  209. package/src/components/Input/Input.story.mdx +199 -13
  210. package/src/components/Input/Input.tsx +39 -6
  211. package/src/components/Input/brand.css +7 -7
  212. package/src/components/Input/index.css +30 -0
  213. package/src/components/Input/product.css +12 -48
  214. package/src/components/Loading/Loading.story.mdx +16 -9
  215. package/src/components/Loading/Loading.tsx +17 -8
  216. package/src/components/Loading/index.css +1 -67
  217. package/src/components/Markdown/Markdown.story.mdx +67 -0
  218. package/src/components/Markdown/Markdown.tsx +3 -2
  219. package/src/components/MarkdownEditor/MarkdownEditor.tsx +2 -3
  220. package/src/components/MarkdownEditor/MarkdownHelp.tsx +7 -10
  221. package/src/components/MarkdownEditor/index.css +5 -1
  222. package/src/components/Modal/Modal.story.mdx +26 -0
  223. package/src/components/Modal/Modal.tsx +61 -43
  224. package/src/components/Modal/context.ts +20 -0
  225. package/src/components/Modal/index.css +8 -3
  226. package/src/components/Modal/index.ts +1 -0
  227. package/src/components/OptionButton/OptionButton.story.mdx +175 -21
  228. package/src/components/OptionButton/OptionButton.tsx +215 -26
  229. package/src/components/OptionButton/context.ts +22 -0
  230. package/src/components/OptionButton/index.css +14 -2
  231. package/src/components/Overlay/Overlay.story.mdx +26 -0
  232. package/src/components/Overlay/Overlay.tsx +2 -3
  233. package/src/components/Overlay/index.css +1 -0
  234. package/src/components/Paragraph/Paragraph.story.mdx +16 -2
  235. package/src/components/Paragraph/Paragraph.tsx +5 -13
  236. package/src/components/Paragraph/index.css +6 -0
  237. package/src/components/Popover/index.css +5 -6
  238. package/src/components/Reference/Reference.tsx +2 -2
  239. package/src/components/Select/Select.story.mdx +23 -10
  240. package/src/components/Select/Select.tsx +35 -10
  241. package/src/components/Select/SelectPopover.tsx +6 -6
  242. package/src/components/Select/index.ts +14 -0
  243. package/src/components/Select/theme.ts +22 -22
  244. package/src/components/Snackbar/Snackbar.story.mdx +96 -9
  245. package/src/components/Snackbar/Snackbar.tsx +56 -145
  246. package/src/components/Snackbar/SnackbarProvider.tsx +31 -0
  247. package/src/components/Snackbar/constants.ts +2 -0
  248. package/src/components/Snackbar/context.ts +20 -0
  249. package/src/components/Snackbar/helpers.tsx +52 -0
  250. package/src/components/Snackbar/hooks.ts +57 -0
  251. package/src/components/Snackbar/index.ts +6 -0
  252. package/src/components/Snackbar/types.ts +180 -0
  253. package/src/components/SpeechBubble/SpeechBubble.story.mdx +76 -0
  254. package/src/components/SpeechBubble/SpeechBubble.tsx +22 -1
  255. package/src/components/SpeechBubble/index.css +7 -4
  256. package/src/components/Svg/Svg.story.mdx +36 -0
  257. package/src/components/Svg/Svg.tsx +6 -4
  258. package/src/components/Table/Table.story.mdx +243 -0
  259. package/src/components/Table/Table.tsx +36 -1
  260. package/src/components/Table/TableCell.tsx +24 -1
  261. package/src/components/Table/TableHeaderCell.tsx +64 -11
  262. package/src/components/Table/index.css +138 -10
  263. package/src/components/Table/index.ts +3 -0
  264. package/src/components/Tag/Tag.tsx +2 -2
  265. package/src/components/Text/Text.story.mdx +34 -0
  266. package/src/components/Toast/Toast.story.mdx +1 -1
  267. package/src/components/Toast/Toast.tsx +14 -10
  268. package/src/components/Toast/index.css +4 -2
  269. package/src/components/Toggle/index.css +2 -3
  270. package/src/components/Tooltip/Tooltip.story.mdx +71 -1
  271. package/src/components/Tooltip/Tooltip.tsx +40 -35
  272. package/src/components/Tooltip/index.css +31 -0
  273. package/src/components/VisuallyHidden/VisuallyHidden.story.mdx +54 -0
  274. package/src/components/VisuallyHidden/VisuallyHidden.tsx +10 -5
  275. package/src/components/VisuallyHidden/index.css +3 -0
  276. package/src/css/base.css +6 -561
  277. package/src/css/components.css +6 -9
  278. package/src/css/fonts.css +13 -10
  279. package/src/css/styles.css +0 -1
  280. package/src/css/utilities/animations.css +13 -0
  281. package/src/docs/Colors.story.mdx +13 -13
  282. package/src/docs/Spacing.story.mdx +4 -20
  283. package/src/docs/Tokens.story.mdx +230 -0
  284. package/src/docs/Typography.story.mdx +27 -101
  285. package/src/docs/hooks/useDisclosureHook.story.mdx +58 -0
  286. package/src/docs/hooks/useKeyPressHook.story.mdx +54 -0
  287. package/src/docs/hooks/useMatchMediaHook.story.mdx +42 -0
  288. package/src/docs/hooks/useOutsideClickHook.story.mdx +56 -0
  289. package/src/docs/hooks/usePrefersReducedMotion.story.mdx +61 -0
  290. package/src/docs/hooks/useScreenOrientationHook.story.mdx +56 -0
  291. package/src/docs/hooks/useStepHook.story.mdx +102 -0
  292. package/src/hooks/index.ts +3 -0
  293. package/src/hooks/useMatchMedia.ts +40 -0
  294. package/src/hooks/usePrefersReducedMotion.ts +9 -0
  295. package/src/hooks/useScreenOrientation.ts +27 -0
  296. package/src/index.ts +0 -15
  297. package/src/storybook-components/ComponentHeading.tsx +4 -19
  298. package/src/storybook-components/ComponentStatus.tsx +4 -0
  299. package/src/storybook-components/EnumTable.tsx +3 -2
  300. package/src/storybook-components/Story.tsx +13 -1
  301. package/src/storybook-components/index.tsx +1 -1
  302. package/src/style-dictionary/dist/tokens.css +378 -0
  303. package/src/style-dictionary/dist/tokens.d.ts +428 -0
  304. package/src/style-dictionary/dist/tokens.js +428 -0
  305. package/src/style-dictionary/dist/tokens.module.js +428 -0
  306. package/src/style-dictionary/src/border-radius.js +11 -0
  307. package/src/style-dictionary/src/border-width.js +10 -0
  308. package/src/style-dictionary/src/color.js +98 -0
  309. package/src/style-dictionary/src/font-size.js +15 -0
  310. package/src/style-dictionary/src/font-weight.js +7 -0
  311. package/src/style-dictionary/src/height.js +13 -0
  312. package/src/style-dictionary/src/leading.js +8 -0
  313. package/src/style-dictionary/src/screen-width.js +8 -0
  314. package/src/style-dictionary/src/shadow.js +19 -0
  315. package/src/style-dictionary/src/spacing.js +69 -0
  316. package/src/style-dictionary/src/tracking.js +7 -0
  317. package/src/style-dictionary/src/type.js +34 -0
  318. package/src/style-dictionary/src/width.js +32 -0
  319. package/src/style-dictionary/src/z-index.js +21 -0
  320. package/src/style-dictionary/tailwind.config.js +87 -0
  321. package/src/tokens/borders.ts +6 -0
  322. package/src/tokens/box-shadow.ts +4 -0
  323. package/src/tokens/colors.ts +6 -0
  324. package/src/tokens/font-family.ts +4 -1
  325. package/src/tokens/font-size.ts +3 -0
  326. package/src/tokens/font-weight.ts +3 -0
  327. package/src/tokens/height.ts +6 -44
  328. package/src/tokens/index.ts +5 -4
  329. package/src/tokens/letter-spacing.ts +3 -0
  330. package/src/tokens/line-height.ts +3 -0
  331. package/src/tokens/margin.ts +7 -47
  332. package/src/tokens/padding.ts +6 -24
  333. package/src/tokens/screens.ts +3 -0
  334. package/src/tokens/sizing-scale.ts +140 -0
  335. package/src/tokens/width.ts +16 -63
  336. package/src/tokens/will-change.ts +3 -0
  337. package/src/tokens/z-index.ts +3 -0
  338. package/src/types/index.ts +37 -10
  339. package/src/utilities/index.ts +1 -0
  340. package/src/utilities/mergeEventHandlers.ts +20 -0
  341. package/public/components/Absolute/Absolute.d.ts +0 -2
  342. package/public/components/Absolute/Absolute.js +0 -14
  343. package/public/components/Absolute/index.d.ts +0 -1
  344. package/public/components/Absolute/index.js +0 -5
  345. package/public/components/Appbar/Appbar.d.ts +0 -60
  346. package/public/components/Appbar/Appbar.js +0 -42
  347. package/public/components/Appbar/AppbarClaimProfileButton.d.ts +0 -2
  348. package/public/components/Appbar/AppbarClaimProfileButton.js +0 -10
  349. package/public/components/Appbar/AppbarDropdownIcon.d.ts +0 -1
  350. package/public/components/Appbar/AppbarDropdownIcon.js +0 -10
  351. package/public/components/Appbar/AppbarLogInButton.d.ts +0 -2
  352. package/public/components/Appbar/AppbarLogInButton.js +0 -26
  353. package/public/components/Appbar/AppbarLogo.d.ts +0 -2
  354. package/public/components/Appbar/AppbarLogo.js +0 -19
  355. package/public/components/Appbar/AppbarOrganization.d.ts +0 -17
  356. package/public/components/Appbar/AppbarOrganization.js +0 -35
  357. package/public/components/Appbar/AppbarTabMarker.d.ts +0 -1
  358. package/public/components/Appbar/AppbarTabMarker.js +0 -11
  359. package/public/components/Appbar/AppbarTabs.d.ts +0 -10
  360. package/public/components/Appbar/AppbarTabs.js +0 -42
  361. package/public/components/Appbar/AppbarUser.d.ts +0 -27
  362. package/public/components/Appbar/AppbarUser.js +0 -76
  363. package/public/components/Appbar/config.d.ts +0 -7
  364. package/public/components/Appbar/config.js +0 -13
  365. package/public/components/Appbar/context.d.ts +0 -10
  366. package/public/components/Appbar/context.js +0 -16
  367. package/public/components/Appbar/index.d.ts +0 -1
  368. package/public/components/Appbar/index.js +0 -13
  369. package/public/components/ArrowButton/ArrowButton.d.ts +0 -9
  370. package/public/components/ArrowButton/ArrowButton.js +0 -22
  371. package/public/components/ArrowButton/index.d.ts +0 -1
  372. package/public/components/ArrowButton/index.js +0 -13
  373. package/public/components/ArrowLink/ArrowLink.d.ts +0 -9
  374. package/public/components/ArrowLink/ArrowLink.js +0 -21
  375. package/public/components/ArrowLink/index.d.ts +0 -1
  376. package/public/components/ArrowLink/index.js +0 -13
  377. package/public/components/Aside/Aside.d.ts +0 -14
  378. package/public/components/Aside/Aside.js +0 -28
  379. package/public/components/Aside/index.d.ts +0 -1
  380. package/public/components/Aside/index.js +0 -13
  381. package/public/components/Fixed/Fixed.d.ts +0 -2
  382. package/public/components/Fixed/Fixed.js +0 -14
  383. package/public/components/Fixed/Fixed.story.d.ts +0 -1
  384. package/public/components/Fixed/Fixed.story.js +0 -12
  385. package/public/components/Fixed/index.d.ts +0 -1
  386. package/public/components/Fixed/index.js +0 -5
  387. package/public/components/Flex/Flex.story.d.ts +0 -1
  388. package/public/components/Flex/Flex.story.js +0 -12
  389. package/public/components/IntegrationLogo/IntegrationLogo.d.ts +0 -10
  390. package/public/components/IntegrationLogo/IntegrationLogo.js +0 -33
  391. package/public/components/IntegrationLogo/IntegrationLogoSvg.d.ts +0 -9
  392. package/public/components/IntegrationLogo/IntegrationLogoSvg.js +0 -52
  393. package/public/components/IntegrationLogo/index.d.ts +0 -1
  394. package/public/components/IntegrationLogo/index.js +0 -13
  395. package/public/components/IntegrationLogo/svg/addigy.d.ts +0 -2
  396. package/public/components/IntegrationLogo/svg/addigy.js +0 -17
  397. package/public/components/IntegrationLogo/svg/aws.d.ts +0 -2
  398. package/public/components/IntegrationLogo/svg/aws.js +0 -22
  399. package/public/components/IntegrationLogo/svg/bamboohr.d.ts +0 -2
  400. package/public/components/IntegrationLogo/svg/bamboohr.js +0 -18
  401. package/public/components/IntegrationLogo/svg/bitbucket.d.ts +0 -2
  402. package/public/components/IntegrationLogo/svg/bitbucket.js +0 -18
  403. package/public/components/IntegrationLogo/svg/conveyor.d.ts +0 -2
  404. package/public/components/IntegrationLogo/svg/conveyor.js +0 -20
  405. package/public/components/IntegrationLogo/svg/default.d.ts +0 -2
  406. package/public/components/IntegrationLogo/svg/default.js +0 -13
  407. package/public/components/IntegrationLogo/svg/deploy.d.ts +0 -2
  408. package/public/components/IntegrationLogo/svg/deploy.js +0 -17
  409. package/public/components/IntegrationLogo/svg/events-api.d.ts +0 -2
  410. package/public/components/IntegrationLogo/svg/events-api.js +0 -26
  411. package/public/components/IntegrationLogo/svg/gcp.d.ts +0 -3
  412. package/public/components/IntegrationLogo/svg/gcp.js +0 -15
  413. package/public/components/IntegrationLogo/svg/github.d.ts +0 -3
  414. package/public/components/IntegrationLogo/svg/github.js +0 -12
  415. package/public/components/IntegrationLogo/svg/gitlab.d.ts +0 -2
  416. package/public/components/IntegrationLogo/svg/gitlab.js +0 -19
  417. package/public/components/IntegrationLogo/svg/gsuite.d.ts +0 -2
  418. package/public/components/IntegrationLogo/svg/gsuite.js +0 -15
  419. package/public/components/IntegrationLogo/svg/index.d.ts +0 -21
  420. package/public/components/IntegrationLogo/svg/index.js +0 -54
  421. package/public/components/IntegrationLogo/svg/jamf.d.ts +0 -2
  422. package/public/components/IntegrationLogo/svg/jamf.js +0 -20
  423. package/public/components/IntegrationLogo/svg/jira.d.ts +0 -2
  424. package/public/components/IntegrationLogo/svg/jira.js +0 -21
  425. package/public/components/IntegrationLogo/svg/jumpcloud.d.ts +0 -2
  426. package/public/components/IntegrationLogo/svg/jumpcloud.js +0 -28
  427. package/public/components/IntegrationLogo/svg/okta.d.ts +0 -2
  428. package/public/components/IntegrationLogo/svg/okta.js +0 -16
  429. package/public/components/IntegrationLogo/svg/onelogin.d.ts +0 -2
  430. package/public/components/IntegrationLogo/svg/onelogin.js +0 -18
  431. package/public/components/IntegrationLogo/svg/salesforce.d.ts +0 -2
  432. package/public/components/IntegrationLogo/svg/salesforce.js +0 -20
  433. package/public/components/IntegrationLogo/svg/slack.d.ts +0 -2
  434. package/public/components/IntegrationLogo/svg/slack.js +0 -19
  435. package/public/components/IntegrationLogo/svg/wrapper.d.ts +0 -11
  436. package/public/components/IntegrationLogo/svg/wrapper.js +0 -13
  437. package/public/components/IntegrationLogo/svg/zoom.d.ts +0 -2
  438. package/public/components/IntegrationLogo/svg/zoom.js +0 -23
  439. package/public/components/Meta/Meta.d.ts +0 -6
  440. package/public/components/Meta/Meta.js +0 -21
  441. package/public/components/Meta/Meta.story.d.ts +0 -1
  442. package/public/components/Meta/Meta.story.js +0 -39
  443. package/public/components/Meta/index.d.ts +0 -1
  444. package/public/components/Meta/index.js +0 -5
  445. package/public/components/Overlay/Overlay.story.d.ts +0 -1
  446. package/public/components/Overlay/Overlay.story.js +0 -12
  447. package/public/components/PropertyDiff/PropertyDiff.d.ts +0 -7
  448. package/public/components/PropertyDiff/PropertyDiff.js +0 -22
  449. package/public/components/PropertyDiff/index.d.ts +0 -1
  450. package/public/components/PropertyDiff/index.js +0 -13
  451. package/public/components/Relative/Relative.d.ts +0 -2
  452. package/public/components/Relative/Relative.js +0 -14
  453. package/public/components/Relative/Relative.story.d.ts +0 -1
  454. package/public/components/Relative/Relative.story.js +0 -12
  455. package/public/components/Relative/index.d.ts +0 -1
  456. package/public/components/Relative/index.js +0 -5
  457. package/public/components/SpeechBubble/SpeechBubble.story.d.ts +0 -1
  458. package/public/components/SpeechBubble/SpeechBubble.story.js +0 -19
  459. package/public/components/StatusLabel/StatusLabel.d.ts +0 -16
  460. package/public/components/StatusLabel/StatusLabel.js +0 -40
  461. package/public/components/StatusLabel/index.d.ts +0 -1
  462. package/public/components/StatusLabel/index.js +0 -13
  463. package/public/components/StatusPanel/StatusPanel.d.ts +0 -11
  464. package/public/components/StatusPanel/StatusPanel.js +0 -24
  465. package/public/components/StatusPanel/index.d.ts +0 -1
  466. package/public/components/StatusPanel/index.js +0 -13
  467. package/public/components/Sticky/Sticky.d.ts +0 -2
  468. package/public/components/Sticky/Sticky.js +0 -14
  469. package/public/components/Sticky/Sticky.story.d.ts +0 -1
  470. package/public/components/Sticky/Sticky.story.js +0 -12
  471. package/public/components/Sticky/index.d.ts +0 -1
  472. package/public/components/Sticky/index.js +0 -5
  473. package/public/components/Svg/Svg.story.d.ts +0 -1
  474. package/public/components/Svg/Svg.story.js +0 -14
  475. package/public/components/Text/Text.story.d.ts +0 -1
  476. package/public/components/Text/Text.story.js +0 -31
  477. package/public/components/TopBar/TopBar.d.ts +0 -14
  478. package/public/components/TopBar/TopBar.js +0 -24
  479. package/public/components/TopBar/TopBarBreadcrumbs.d.ts +0 -10
  480. package/public/components/TopBar/TopBarBreadcrumbs.js +0 -34
  481. package/public/components/TopBar/TopBarSubNav.d.ts +0 -2
  482. package/public/components/TopBar/TopBarSubNav.js +0 -16
  483. package/public/components/TopBar/TopBarSubNavItem.d.ts +0 -5
  484. package/public/components/TopBar/TopBarSubNavItem.js +0 -17
  485. package/public/components/TopBar/index.d.ts +0 -1
  486. package/public/components/TopBar/index.js +0 -13
  487. package/public/components/VendorLogo/VendorLogo.d.ts +0 -20
  488. package/public/components/VendorLogo/VendorLogo.js +0 -57
  489. package/public/components/VendorLogo/index.d.ts +0 -1
  490. package/public/components/VendorLogo/index.js +0 -13
  491. package/public/components/VisuallyHidden/VisuallyHidden.story.d.ts +0 -1
  492. package/public/components/VisuallyHidden/VisuallyHidden.story.js +0 -36
  493. package/public/components/useStep/ExampleSetupWizard.d.ts +0 -4
  494. package/public/components/useStep/ExampleSetupWizard.js +0 -33
  495. package/public/storybook-components/TailwindPropertyClasses.d.ts +0 -9
  496. package/public/storybook-components/TailwindPropertyClasses.js +0 -194
  497. package/public/tailwind.config.d.ts +0 -1
  498. package/public/tailwind.config.js +0 -4
  499. package/public/tokens/_tailwind-config.d.ts +0 -810
  500. package/public/tokens/_tailwind-config.js +0 -50
  501. package/src/components/Absolute/Absolute.story.mdx +0 -26
  502. package/src/components/Absolute/Absolute.tsx +0 -9
  503. package/src/components/Absolute/index.ts +0 -1
  504. package/src/components/Appbar/Appbar.story.mdx +0 -185
  505. package/src/components/Appbar/Appbar.tsx +0 -108
  506. package/src/components/Appbar/AppbarClaimProfileButton.tsx +0 -13
  507. package/src/components/Appbar/AppbarDropdownIcon.tsx +0 -6
  508. package/src/components/Appbar/AppbarLogInButton.tsx +0 -28
  509. package/src/components/Appbar/AppbarLogo.tsx +0 -29
  510. package/src/components/Appbar/AppbarOrganization.tsx +0 -96
  511. package/src/components/Appbar/AppbarTabMarker.tsx +0 -5
  512. package/src/components/Appbar/AppbarTabs.tsx +0 -46
  513. package/src/components/Appbar/AppbarUser.tsx +0 -179
  514. package/src/components/Appbar/config.ts +0 -12
  515. package/src/components/Appbar/context.ts +0 -20
  516. package/src/components/Appbar/index.css +0 -324
  517. package/src/components/Appbar/index.ts +0 -1
  518. package/src/components/ArrowButton/ArrowButton.story.mdx +0 -110
  519. package/src/components/ArrowButton/ArrowButton.tsx +0 -54
  520. package/src/components/ArrowButton/index.css +0 -42
  521. package/src/components/ArrowButton/index.ts +0 -1
  522. package/src/components/ArrowLink/ArrowLink.story.mdx +0 -65
  523. package/src/components/ArrowLink/ArrowLink.tsx +0 -42
  524. package/src/components/ArrowLink/index.ts +0 -1
  525. package/src/components/Aside/Aside.story.mdx +0 -65
  526. package/src/components/Aside/Aside.tsx +0 -59
  527. package/src/components/Aside/index.css +0 -11
  528. package/src/components/Aside/index.ts +0 -1
  529. package/src/components/Fixed/Fixed.md +0 -16
  530. package/src/components/Fixed/Fixed.story.tsx +0 -12
  531. package/src/components/Fixed/Fixed.tsx +0 -9
  532. package/src/components/Fixed/index.ts +0 -1
  533. package/src/components/Flex/Flex.md +0 -14
  534. package/src/components/Flex/Flex.story.tsx +0 -12
  535. package/src/components/IntegrationLogo/IntegrationLogo.story.mdx +0 -159
  536. package/src/components/IntegrationLogo/IntegrationLogo.tsx +0 -54
  537. package/src/components/IntegrationLogo/IntegrationLogoSvg.tsx +0 -79
  538. package/src/components/IntegrationLogo/index.ts +0 -1
  539. package/src/components/IntegrationLogo/svg/addigy.tsx +0 -23
  540. package/src/components/IntegrationLogo/svg/aws.tsx +0 -52
  541. package/src/components/IntegrationLogo/svg/bamboohr.tsx +0 -34
  542. package/src/components/IntegrationLogo/svg/bitbucket.tsx +0 -37
  543. package/src/components/IntegrationLogo/svg/conveyor.tsx +0 -41
  544. package/src/components/IntegrationLogo/svg/default.tsx +0 -11
  545. package/src/components/IntegrationLogo/svg/deploy.tsx +0 -29
  546. package/src/components/IntegrationLogo/svg/events-api.tsx +0 -75
  547. package/src/components/IntegrationLogo/svg/gcp.tsx +0 -26
  548. package/src/components/IntegrationLogo/svg/github.tsx +0 -14
  549. package/src/components/IntegrationLogo/svg/gitlab.tsx +0 -40
  550. package/src/components/IntegrationLogo/svg/gsuite.tsx +0 -24
  551. package/src/components/IntegrationLogo/svg/index.ts +0 -21
  552. package/src/components/IntegrationLogo/svg/jamf.tsx +0 -36
  553. package/src/components/IntegrationLogo/svg/jira.tsx +0 -44
  554. package/src/components/IntegrationLogo/svg/jumpcloud.tsx +0 -86
  555. package/src/components/IntegrationLogo/svg/okta.tsx +0 -28
  556. package/src/components/IntegrationLogo/svg/onelogin.tsx +0 -34
  557. package/src/components/IntegrationLogo/svg/salesforce.tsx +0 -39
  558. package/src/components/IntegrationLogo/svg/slack.tsx +0 -40
  559. package/src/components/IntegrationLogo/svg/wrapper.tsx +0 -35
  560. package/src/components/IntegrationLogo/svg/zoom.tsx +0 -51
  561. package/src/components/Meta/Meta.md +0 -14
  562. package/src/components/Meta/Meta.story.tsx +0 -24
  563. package/src/components/Meta/Meta.tsx +0 -26
  564. package/src/components/Meta/index.ts +0 -1
  565. package/src/components/Overlay/Overlay.md +0 -14
  566. package/src/components/Overlay/Overlay.story.tsx +0 -12
  567. package/src/components/PropertyDiff/PropertDiff.story.mdx +0 -46
  568. package/src/components/PropertyDiff/PropertyDiff.tsx +0 -48
  569. package/src/components/PropertyDiff/index.css +0 -33
  570. package/src/components/PropertyDiff/index.ts +0 -1
  571. package/src/components/Relative/Relative.md +0 -16
  572. package/src/components/Relative/Relative.story.tsx +0 -12
  573. package/src/components/Relative/Relative.tsx +0 -9
  574. package/src/components/Relative/index.ts +0 -1
  575. package/src/components/SpeechBubble/SpeechBubble.md +0 -14
  576. package/src/components/SpeechBubble/SpeechBubble.story.tsx +0 -26
  577. package/src/components/StatusLabel/StatusLabel.story.mdx +0 -316
  578. package/src/components/StatusLabel/StatusLabel.tsx +0 -112
  579. package/src/components/StatusLabel/index.css +0 -23
  580. package/src/components/StatusLabel/index.ts +0 -1
  581. package/src/components/StatusPanel/StatusPanel.story.mdx +0 -109
  582. package/src/components/StatusPanel/StatusPanel.tsx +0 -51
  583. package/src/components/StatusPanel/index.css +0 -52
  584. package/src/components/StatusPanel/index.ts +0 -1
  585. package/src/components/Sticky/Sticky.md +0 -16
  586. package/src/components/Sticky/Sticky.story.tsx +0 -12
  587. package/src/components/Sticky/Sticky.tsx +0 -9
  588. package/src/components/Sticky/index.ts +0 -1
  589. package/src/components/Svg/Svg.md +0 -14
  590. package/src/components/Svg/Svg.story.tsx +0 -15
  591. package/src/components/Text/Text.md +0 -14
  592. package/src/components/Text/Text.story.tsx +0 -12
  593. package/src/components/TopBar/TopBar.story.mdx +0 -154
  594. package/src/components/TopBar/TopBar.tsx +0 -40
  595. package/src/components/TopBar/TopBarBreadcrumbs.tsx +0 -79
  596. package/src/components/TopBar/TopBarSubNav.tsx +0 -19
  597. package/src/components/TopBar/TopBarSubNavItem.tsx +0 -21
  598. package/src/components/TopBar/index.css +0 -102
  599. package/src/components/TopBar/index.ts +0 -1
  600. package/src/components/VendorLogo/VendorLogo.story.mdx +0 -209
  601. package/src/components/VendorLogo/VendorLogo.tsx +0 -110
  602. package/src/components/VendorLogo/index.css +0 -46
  603. package/src/components/VendorLogo/index.ts +0 -1
  604. package/src/components/VisuallyHidden/VisuallyHidden.md +0 -23
  605. package/src/components/VisuallyHidden/VisuallyHidden.story.tsx +0 -19
  606. package/src/components/useStep/ExampleSetupWizard.tsx +0 -63
  607. package/src/components/useStep/useStep.story.mdx +0 -76
  608. package/src/docs/TailwindClasses.story.mdx +0 -15
  609. package/src/docs/brand-components/BrandButton.story.mdx +0 -103
  610. package/src/docs/brand-components/BrandCheckbox.story.mdx +0 -63
  611. package/src/docs/brand-components/BrandFormGroup.story.mdx +0 -76
  612. package/src/docs/brand-components/BrandInput.story.mdx +0 -41
  613. package/src/docs/brand-components/BrandRadio.story.mdx +0 -45
  614. package/src/docs/brand-components/BrandTextArea.story.mdx +0 -41
  615. package/src/storybook-components/TailwindPropertyClasses.tsx +0 -285
  616. package/src/tailwind.config.ts +0 -6
  617. package/src/tokens/_tailwind-config.ts +0 -69
@@ -1,69 +1,46 @@
1
- import React, { useEffect, useState } from "react";
2
- import toaster from "toasted-notes";
1
+ import React from "react";
3
2
  import classNames from "classnames";
4
3
  import { Action } from "../../types";
5
4
  import { bemHOF } from "../../utilities/bem";
6
5
  import { Box } from "../Box";
7
6
  import { CloseButton } from "../CloseButton";
8
- import { Icon, IconProps, ICON_TYPE } from "../Icon";
7
+ import { Icon, ICON_TYPE } from "../Icon";
9
8
  import { Link } from "../Link";
10
9
  import { Text } from "../Text";
10
+ import { useSnackbarContext } from "./context";
11
+ import {
12
+ SnackbarProps,
13
+ SnackbarRootProps,
14
+ SnackbarIconProps,
15
+ SnackbarTextProps,
16
+ } from "./types";
17
+ import { SnackbarProvider } from "./SnackbarProvider";
11
18
 
12
19
  const cn = bemHOF("Snackbar");
13
20
 
14
- const POSITION = "bottom-left";
15
-
16
- interface SharedProps {
17
- /**
18
- * The message shown in the Snackbar; ideally short and succinct
19
- */
20
- message: string;
21
- /**
22
- * Adds an action next to the message
23
- */
24
- action?: Action;
25
- /**
26
- * When a loading icon is detected, it will automatically spin.
27
- *
28
- * Sizing is handled automatically, too.
29
- */
30
- icon?: ICON_TYPE;
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
- * Prevent the close button from rendering. Useful in cases when the Snackbar
40
- * is used as a loading message (e.g., an in progress API call).
41
- */
42
- disableClose?: boolean;
43
- }
44
-
45
- interface ShowSnackbarProps extends SharedProps {
46
- /**
47
- * Classname to apply to the Snackbar root element
48
- */
49
- className?: string;
50
- }
51
-
52
- interface SnackbarProps extends ShowSnackbarProps {
53
- onClose: () => void;
54
- id?: string;
55
- }
21
+ export const SnackbarRoot = ({
22
+ children,
23
+ className,
24
+ ...rest
25
+ }: SnackbarRootProps) => (
26
+ <Box className={classNames(cn(), className)} {...rest}>
27
+ {children}
28
+ </Box>
29
+ );
56
30
 
57
- interface SnackbarHookProps extends SharedProps {
58
- /**
59
- * Whether or not the Snackar is visible
60
- */
61
- isVisible: boolean;
62
- }
31
+ export const SnackbarIcon = ({ icon }: SnackbarIconProps) => (
32
+ <Icon
33
+ icon={icon}
34
+ spin={icon === ICON_TYPE.SPINNER || icon === ICON_TYPE.CIRCLE_NOTCH}
35
+ className={cn({ e: "icon" })}
36
+ />
37
+ );
63
38
 
64
- const hideSnackbar = (id: number) => toaster.close(id, POSITION);
39
+ export const SnackbarText = ({ children }: SnackbarTextProps) => (
40
+ <Text>{children}</Text>
41
+ );
65
42
 
66
- const SnackbarAction = ({ label, onClick, href, external }: Action) => {
43
+ export const SnackbarAction = ({ label, onClick, href, external }: Action) => {
67
44
  const Component = typeof onClick === "function" ? "button" : "a";
68
45
  const type = Component === "button" ? "button" : undefined;
69
46
 
@@ -81,27 +58,33 @@ const SnackbarAction = ({ label, onClick, href, external }: Action) => {
81
58
  );
82
59
  };
83
60
 
61
+ export const SnackbarCloseButton = () => {
62
+ const { onClose } = useSnackbarContext();
63
+
64
+ return (
65
+ <CloseButton
66
+ className={classNames(cn({ e: "dismiss" }))}
67
+ onClick={onClose}
68
+ />
69
+ );
70
+ };
71
+
84
72
  export const Snackbar = ({
85
73
  message,
86
74
  action,
87
75
  icon,
88
- id,
89
76
  className,
90
- onClose,
91
77
  disableClose,
78
+ ...rest
92
79
  }: SnackbarProps) => {
93
- const spin = icon === ICON_TYPE.SPINNER || icon === ICON_TYPE.CIRCLE_NOTCH;
94
- const iconProps: IconProps | undefined = icon
95
- ? {
96
- icon,
97
- spin,
98
- }
99
- : undefined;
80
+ const { onClose } = useSnackbarContext();
100
81
 
101
82
  return (
102
- <Box className={classNames(cn(), className)} id={id}>
103
- {iconProps && <Icon {...iconProps} className={cn({ e: "icon" })} />}
104
- <Text>{message}</Text>
83
+ <SnackbarRoot className={className} {...rest}>
84
+ {icon && <SnackbarIcon icon={icon} />}
85
+
86
+ {message && <SnackbarText>{message}</SnackbarText>}
87
+
105
88
  {action && action.label && (
106
89
  <SnackbarAction
107
90
  {...action}
@@ -113,86 +96,14 @@ export const Snackbar = ({
113
96
  }}
114
97
  />
115
98
  )}
116
- {!disableClose && (
117
- <CloseButton
118
- className={classNames(cn({ e: "dismiss" }))}
119
- onClick={onClose}
120
- />
121
- )}
122
- </Box>
123
- );
124
- };
125
99
 
126
- export const showSnackbar = ({
127
- message,
128
- action,
129
- icon,
130
- duration = null,
131
- className,
132
- disableClose,
133
- }: ShowSnackbarProps) =>
134
- toaster.notify(
135
- ({ onClose, id }: { onClose: () => void; id: number }) => {
136
- return (
137
- <Snackbar
138
- {...{
139
- message,
140
- onClose,
141
- action,
142
- icon,
143
- className,
144
- disableClose,
145
- id: `snackbar-component-${id}`,
146
- }}
147
- />
148
- );
149
- },
150
- {
151
- position: POSITION,
152
- duration,
153
- },
100
+ {!disableClose && <SnackbarCloseButton />}
101
+ </SnackbarRoot>
154
102
  );
155
-
156
- export const useSnackbar = ({
157
- message,
158
- action,
159
- isVisible,
160
- icon,
161
- duration,
162
- disableClose,
163
- }: SnackbarHookProps) => {
164
- const [snackbar, setSnackbar] = useState<{ id: number; position: string }>({
165
- id: 0,
166
- position: POSITION,
167
- });
168
- const [wasViewed, setWasViewed] = useState<boolean>(false);
169
-
170
- useEffect(() => {
171
- if (isVisible && !wasViewed) {
172
- setSnackbar(
173
- showSnackbar({
174
- message,
175
- action,
176
- icon,
177
- duration,
178
- disableClose,
179
- }),
180
- );
181
- setWasViewed(true);
182
- }
183
-
184
- if (!isVisible && wasViewed) {
185
- hideSnackbar(snackbar.id);
186
- setWasViewed(false);
187
- }
188
- }, [
189
- message,
190
- action,
191
- isVisible,
192
- icon,
193
- duration,
194
- disableClose,
195
- snackbar,
196
- wasViewed,
197
- ]);
198
103
  };
104
+
105
+ Snackbar.Provider = SnackbarProvider;
106
+ Snackbar.Root = SnackbarRoot;
107
+ Snackbar.Text = SnackbarText;
108
+ Snackbar.Action = SnackbarAction;
109
+ Snackbar.CloseButton = SnackbarCloseButton;
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ import { Box } from "../Box";
3
+ import { SnackbarProviderProps } from "./types";
4
+ import { DEFAULT_SNACKBAR_ID } from "./constants";
5
+ import { SnackbarContext } from "./context";
6
+
7
+ export const SnackbarProvider = ({
8
+ component,
9
+ id = DEFAULT_SNACKBAR_ID,
10
+ onClose,
11
+ duration,
12
+ position,
13
+ ...rest
14
+ }: SnackbarProviderProps) => {
15
+ const componentId = "snackbar-provider";
16
+
17
+ return (
18
+ <SnackbarContext.Provider
19
+ value={{
20
+ id,
21
+ onClose,
22
+ duration,
23
+ position,
24
+ }}
25
+ >
26
+ <Box id={`${componentId}-${id}`} data-component={componentId} {...rest}>
27
+ {component}
28
+ </Box>
29
+ </SnackbarContext.Provider>
30
+ );
31
+ };
@@ -0,0 +1,2 @@
1
+ export const DEFAULT_SNACKBAR_ID = 0;
2
+ export const DEFAULT_SNACKBAR_POSITION = "bottom-left";
@@ -0,0 +1,20 @@
1
+ import { Context, createContext, useContext } from "react";
2
+ import { SnackbarContextProps } from "./types";
3
+ import { DEFAULT_SNACKBAR_ID } from "./constants";
4
+
5
+ const defaultContext: SnackbarContextProps = {
6
+ id: DEFAULT_SNACKBAR_ID,
7
+ onClose: () => {},
8
+ };
9
+
10
+ export const SnackbarContext: Context<SnackbarContextProps> = createContext<SnackbarContextProps>(
11
+ defaultContext,
12
+ );
13
+
14
+ export function useSnackbarContext() {
15
+ const context = useContext<typeof defaultContext>(SnackbarContext) || {
16
+ ...defaultContext,
17
+ };
18
+
19
+ return context;
20
+ }
@@ -0,0 +1,52 @@
1
+ import React from "react";
2
+ import toaster from "toasted-notes";
3
+ import { DEFAULT_SNACKBAR_POSITION } from "./constants";
4
+ import { Snackbar } from "./Snackbar";
5
+ import { SnackbarProvider } from "./SnackbarProvider";
6
+ import {
7
+ HideSnackbarProps,
8
+ SnackbarToasterProps,
9
+ ShowSnackbarProps,
10
+ } from "./types";
11
+
12
+ export const hideSnackbar = ({
13
+ id,
14
+ position = DEFAULT_SNACKBAR_POSITION,
15
+ }: HideSnackbarProps) => toaster.close(id, position);
16
+
17
+ export const showSnackbar = ({
18
+ component,
19
+ message,
20
+ duration = null,
21
+ position = DEFAULT_SNACKBAR_POSITION,
22
+ ...rest
23
+ }: ShowSnackbarProps) => {
24
+ return toaster.notify(
25
+ ({ onClose, id }: SnackbarToasterProps) => {
26
+ return (
27
+ <SnackbarProvider
28
+ {...{
29
+ id,
30
+ onClose,
31
+ duration,
32
+ position,
33
+ component: message ? (
34
+ <Snackbar
35
+ {...{
36
+ message,
37
+ ...rest,
38
+ }}
39
+ />
40
+ ) : (
41
+ component
42
+ ),
43
+ }}
44
+ />
45
+ );
46
+ },
47
+ {
48
+ position,
49
+ duration,
50
+ },
51
+ );
52
+ };
@@ -0,0 +1,57 @@
1
+ import { useEffect, useState } from "react";
2
+ import { DEFAULT_SNACKBAR_ID, DEFAULT_SNACKBAR_POSITION } from "./constants";
3
+ import { hideSnackbar, showSnackbar } from "./helpers";
4
+ import { SnackbarHookProps, SnackbarStateProps } from "./types";
5
+
6
+ export const useSnackbar = ({
7
+ component,
8
+ message,
9
+ position,
10
+ duration,
11
+ isVisible,
12
+ ...rest
13
+ }: SnackbarHookProps) => {
14
+ const [snackbar, setSnackbar] = useState<SnackbarStateProps>({
15
+ id: DEFAULT_SNACKBAR_ID,
16
+ position: DEFAULT_SNACKBAR_POSITION,
17
+ });
18
+ const [wasViewed, setWasViewed] = useState<boolean>(false);
19
+
20
+ useEffect(() => {
21
+ if (isVisible && !wasViewed) {
22
+ if (message) {
23
+ setSnackbar(
24
+ showSnackbar({
25
+ message,
26
+ position,
27
+ duration,
28
+ ...rest,
29
+ }),
30
+ );
31
+ } else {
32
+ setSnackbar(
33
+ showSnackbar({
34
+ component,
35
+ position,
36
+ duration,
37
+ }),
38
+ );
39
+ }
40
+ setWasViewed(true);
41
+ }
42
+
43
+ if (!isVisible && wasViewed) {
44
+ hideSnackbar({ id: snackbar.id, position });
45
+ setWasViewed(false);
46
+ }
47
+ }, [
48
+ component,
49
+ message,
50
+ position,
51
+ duration,
52
+ isVisible,
53
+ snackbar.id,
54
+ wasViewed,
55
+ rest,
56
+ ]);
57
+ };
@@ -1 +1,7 @@
1
+ export * from "./constants";
2
+ export * from "./context";
3
+ export * from "./helpers";
4
+ export * from "./hooks";
1
5
  export * from "./Snackbar";
6
+ export * from "./SnackbarProvider";
7
+ export * from "./types";
@@ -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>