@ably/ui 13.3.0 → 14.0.0-dev.0ed6be7

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 (503) hide show
  1. package/README.md +25 -152
  2. package/core/.DS_Store +0 -0
  3. package/core/Accordion/.DS_Store +0 -0
  4. package/core/Accordion.js +1 -0
  5. package/core/Code/.DS_Store +0 -0
  6. package/core/Code/component.css +1 -72
  7. package/core/Code/component.js +1 -1
  8. package/core/Code.js +1 -0
  9. package/core/ConnectStateWrapper/component.js +0 -1
  10. package/core/ConnectStateWrapper.js +1 -0
  11. package/core/ContactFooter/.DS_Store +0 -0
  12. package/core/ContactFooter/component.css +7 -10
  13. package/core/ContactFooter/component.js +1 -1
  14. package/core/ContactFooter.js +1 -0
  15. package/core/CookieMessage/.DS_Store +0 -0
  16. package/core/CookieMessage/component.css +10 -13
  17. package/core/CookieMessage/component.js +1 -1
  18. package/core/CookieMessage.js +1 -0
  19. package/core/CustomerLogos/.DS_Store +0 -0
  20. package/core/CustomerLogos/component.js +0 -1
  21. package/core/CustomerLogos.js +1 -0
  22. package/core/DropdownMenu/.DS_Store +0 -0
  23. package/core/DropdownMenu/component.js +0 -1
  24. package/core/DropdownMenu.js +1 -0
  25. package/core/FeaturedLink/.DS_Store +0 -0
  26. package/core/FeaturedLink/component.js +0 -1
  27. package/core/FeaturedLink.js +1 -0
  28. package/core/Flash/.DS_Store +0 -0
  29. package/core/Flash/component.css +19 -22
  30. package/core/Flash/component.js +1 -1
  31. package/core/Flash.js +1 -0
  32. package/core/Footer/.DS_Store +0 -0
  33. package/core/Footer/component.css +22 -25
  34. package/core/Footer/component.js +1 -1
  35. package/core/Footer.js +1 -0
  36. package/core/Icon/.DS_Store +0 -0
  37. package/core/Icon/component.js +0 -1
  38. package/core/Icon.js +1 -0
  39. package/core/Loader/.DS_Store +0 -0
  40. package/core/Loader/component.js +0 -1
  41. package/core/Loader.js +13 -0
  42. package/core/Logo/.DS_Store +0 -0
  43. package/core/Logo/component.js +0 -1
  44. package/core/Logo.js +1 -0
  45. package/core/Meganav/.DS_Store +0 -0
  46. package/core/Meganav/component.css +103 -106
  47. package/core/Meganav/component.js +1 -1
  48. package/core/Meganav.js +1 -0
  49. package/core/MeganavBlogPostsList/.DS_Store +0 -0
  50. package/core/MeganavBlogPostsList/component.js +1 -2
  51. package/core/MeganavBlogPostsList.js +1 -0
  52. package/core/MeganavContentCompany/.DS_Store +0 -0
  53. package/core/MeganavContentCompany/component.js +0 -1
  54. package/core/MeganavContentCompany.js +1 -0
  55. package/core/MeganavContentDevelopers/.DS_Store +0 -0
  56. package/core/MeganavContentDevelopers/component.js +0 -1
  57. package/core/MeganavContentDevelopers.js +1 -0
  58. package/core/MeganavContentProducts/.DS_Store +0 -0
  59. package/core/MeganavContentProducts/component.js +0 -1
  60. package/core/MeganavContentProducts.js +1 -0
  61. package/core/MeganavContentUseCases/.DS_Store +0 -0
  62. package/core/MeganavContentUseCases/component.js +0 -1
  63. package/core/MeganavContentUseCases.js +1 -0
  64. package/core/MeganavControl/.DS_Store +0 -0
  65. package/core/MeganavControl/component.js +1 -1
  66. package/core/MeganavControl.js +1 -0
  67. package/core/MeganavControlMobileDropdown/.DS_Store +0 -0
  68. package/core/MeganavControlMobileDropdown/component.js +1 -1
  69. package/core/MeganavControlMobileDropdown.js +1 -0
  70. package/core/MeganavControlMobilePanelClose/.DS_Store +0 -0
  71. package/core/MeganavControlMobilePanelClose/component.js +1 -1
  72. package/core/MeganavControlMobilePanelClose.js +1 -0
  73. package/core/MeganavControlMobilePanelOpen/.DS_Store +0 -0
  74. package/core/MeganavControlMobilePanelOpen/component.js +1 -1
  75. package/core/MeganavControlMobilePanelOpen.js +1 -0
  76. package/core/MeganavItemsDesktop/.DS_Store +0 -0
  77. package/core/MeganavItemsDesktop/component.js +0 -1
  78. package/core/MeganavItemsDesktop.js +1 -0
  79. package/core/MeganavItemsMobile/.DS_Store +0 -0
  80. package/core/MeganavItemsMobile/component.js +0 -1
  81. package/core/MeganavItemsMobile.js +1 -0
  82. package/core/MeganavItemsSignedIn/.DS_Store +0 -0
  83. package/core/MeganavItemsSignedIn/component.js +0 -1
  84. package/core/MeganavItemsSignedIn.js +1 -0
  85. package/core/MeganavSearch/.DS_Store +0 -0
  86. package/core/MeganavSearch/component.js +0 -1
  87. package/core/MeganavSearch.js +1 -0
  88. package/core/MeganavSearchAutocomplete/.DS_Store +0 -0
  89. package/core/MeganavSearchAutocomplete/component.js +1 -1
  90. package/core/MeganavSearchAutocomplete.js +1 -0
  91. package/core/MeganavSearchPanel/.DS_Store +0 -0
  92. package/core/MeganavSearchPanel/component.js +0 -1
  93. package/core/MeganavSearchPanel.js +1 -0
  94. package/core/MeganavSearchSuggestions/.DS_Store +0 -0
  95. package/core/MeganavSearchSuggestions/component.js +1 -1
  96. package/core/MeganavSearchSuggestions.js +1 -0
  97. package/core/Notice/.DS_Store +0 -0
  98. package/core/Notice/component.css +4 -7
  99. package/core/Notice/component.js +1 -1
  100. package/core/Notice.js +1 -0
  101. package/core/SignOutLink/.DS_Store +0 -0
  102. package/core/SignOutLink/component.js +0 -1
  103. package/core/SignOutLink.js +1 -0
  104. package/core/Slider/.DS_Store +0 -0
  105. package/core/Slider/component.css +4 -7
  106. package/core/Slider/component.js +1 -1
  107. package/core/Slider.js +1 -0
  108. package/core/Table/.DS_Store +0 -0
  109. package/core/Table/Table.js +1 -0
  110. package/core/Table/TableCell.js +7 -0
  111. package/core/Table/TableRow.js +1 -0
  112. package/core/Table/data.js +1 -0
  113. package/core/Table.js +1 -0
  114. package/core/Tooltip.js +1 -0
  115. package/core/css.js +1 -0
  116. package/core/dom-query.js +1 -0
  117. package/core/hubspot-chat-toggle.js +1 -0
  118. package/core/icons/discord.svg +10 -0
  119. package/core/icons/facebook.svg +4 -0
  120. package/core/icons/github.svg +3 -0
  121. package/core/icons/glassdoor.svg +3 -0
  122. package/core/icons/google.svg +3 -0
  123. package/core/icons/icon-display-48hrs.svg +3 -0
  124. package/core/icons/icon-display-about-ably-col.svg +4 -0
  125. package/core/icons/icon-display-api-keys.svg +3 -0
  126. package/core/icons/icon-display-api.svg +3 -0
  127. package/core/icons/icon-display-asset-tracking-col.svg +18 -0
  128. package/core/icons/icon-display-browser.svg +10 -0
  129. package/core/icons/icon-display-calendar.svg +3 -0
  130. package/core/icons/icon-display-call-mobile.svg +3 -0
  131. package/core/icons/icon-display-careers-col.svg +9 -0
  132. package/core/icons/icon-display-case-studies-col.svg +5 -0
  133. package/core/icons/icon-display-chat-col.svg +4 -0
  134. package/core/icons/icon-display-chat-stack-col.svg +4 -0
  135. package/core/icons/icon-display-chat-stack.svg +4 -0
  136. package/core/icons/icon-display-cloud-servers.svg +3 -0
  137. package/core/icons/icon-display-compare-tech-col.svg +9 -0
  138. package/core/icons/icon-display-customers-col.svg +15 -0
  139. package/core/icons/icon-display-data-broadcast-col.svg +26 -0
  140. package/core/icons/icon-display-data-synchronization-col.svg +14 -0
  141. package/core/icons/icon-display-docs-col.svg +7 -0
  142. package/core/icons/icon-display-documentation.svg +3 -0
  143. package/core/icons/icon-display-events-col.svg +13 -0
  144. package/core/icons/icon-display-examples-col.svg +11 -0
  145. package/core/icons/icon-display-gdpr.svg +3 -0
  146. package/core/icons/icon-display-general-comms.svg +3 -0
  147. package/core/icons/icon-display-hipaa.svg +10 -0
  148. package/core/icons/icon-display-integrations-col.svg +8 -0
  149. package/core/icons/icon-display-it-support-access.svg +3 -0
  150. package/core/icons/icon-display-it-support-helpdesk.svg +3 -0
  151. package/core/icons/icon-display-kafka-at-the-edge-col.svg +8 -0
  152. package/core/icons/icon-display-laptop.svg +10 -0
  153. package/core/icons/icon-display-lightbulb-col.svg +10 -0
  154. package/core/icons/icon-display-live-chat.svg +3 -0
  155. package/core/icons/icon-display-map-pin.svg +3 -0
  156. package/core/icons/icon-display-message.svg +3 -0
  157. package/core/icons/icon-display-padlock-closed.svg +3 -0
  158. package/core/icons/icon-display-platform.svg +22 -0
  159. package/core/icons/icon-display-play.svg +3 -0
  160. package/core/icons/icon-display-privacy-shield-framework.svg +7 -0
  161. package/core/icons/icon-display-push-notifications-col.svg +6 -0
  162. package/core/icons/icon-display-quickstart-guides-col.svg +8 -0
  163. package/core/icons/icon-display-resources-col.svg +21 -0
  164. package/core/icons/icon-display-sdks-col.svg +11 -0
  165. package/core/icons/icon-display-servers.svg +3 -0
  166. package/core/icons/icon-display-shopping-cart.svg +10 -0
  167. package/core/icons/icon-display-sla.svg +3 -0
  168. package/core/icons/icon-display-soc2-type2.svg +3 -0
  169. package/core/icons/icon-display-tech-account-comms.svg +3 -0
  170. package/core/icons/icon-display-tutorials-demos-col.svg +25 -0
  171. package/core/icons/icon-display-virtual-events-col.svg +12 -0
  172. package/core/icons/icon-display-virtual-events.svg +12 -0
  173. package/core/icons/icon-gui-ably-badge.svg +3 -0
  174. package/core/icons/icon-gui-arrow-bidirectional-horizontal.svg +3 -0
  175. package/core/icons/icon-gui-arrow-bidirectional-vertical.svg +3 -0
  176. package/core/icons/icon-gui-arrow-down.svg +3 -0
  177. package/core/icons/icon-gui-arrow-left.svg +3 -0
  178. package/core/icons/icon-gui-arrow-right.svg +3 -0
  179. package/core/icons/icon-gui-arrow-up.svg +3 -0
  180. package/core/icons/icon-gui-burger-menu.svg +5 -0
  181. package/core/icons/icon-gui-check-circled-fill-black.svg +4 -0
  182. package/core/icons/icon-gui-check-circled-fill.svg +4 -0
  183. package/core/icons/icon-gui-check-circled.svg +3 -0
  184. package/core/icons/icon-gui-checklist-checked.svg +3 -0
  185. package/core/icons/icon-gui-clock.svg +3 -0
  186. package/core/icons/icon-gui-close.svg +3 -0
  187. package/core/icons/icon-gui-copy.svg +10 -0
  188. package/core/icons/icon-gui-cross-circled-fill.svg +4 -0
  189. package/core/icons/icon-gui-cross-circled.svg +3 -0
  190. package/core/icons/icon-gui-dash-circled.svg +3 -0
  191. package/core/icons/icon-gui-disclosure-arrow.svg +3 -0
  192. package/core/icons/icon-gui-document-generic.svg +3 -0
  193. package/core/icons/icon-gui-enlarge.svg +3 -0
  194. package/core/icons/icon-gui-external-link.svg +3 -0
  195. package/core/icons/icon-gui-filter-flow-step-1.svg +5 -0
  196. package/core/icons/icon-gui-filter-flow-step-2.svg +5 -0
  197. package/core/icons/icon-gui-filter-flow-step-3.svg +5 -0
  198. package/core/icons/icon-gui-history.svg +3 -0
  199. package/core/icons/icon-gui-info.svg +3 -0
  200. package/core/icons/icon-gui-link-arrow.svg +3 -0
  201. package/core/icons/icon-gui-link.svg +4 -0
  202. package/core/icons/icon-gui-live-chat.svg +3 -0
  203. package/core/icons/icon-gui-minus.svg +3 -0
  204. package/core/icons/icon-gui-plus.svg +3 -0
  205. package/core/icons/icon-gui-quote-marks-solid.svg +3 -0
  206. package/core/icons/icon-gui-refresh.svg +10 -0
  207. package/core/icons/icon-gui-resources.svg +3 -0
  208. package/core/icons/icon-gui-search.svg +3 -0
  209. package/core/icons/icon-gui-tick.svg +3 -0
  210. package/core/icons/icon-gui-warning.svg +5 -0
  211. package/core/icons/icon-live-updates-results-metrics-col.svg +26 -0
  212. package/core/icons/icon-multi-user-spaces-col.svg +13 -0
  213. package/core/icons/icon-social-x.svg +3 -0
  214. package/core/icons/icon-tech-apachekafka.svg +3 -0
  215. package/core/icons/linkedin.svg +3 -0
  216. package/core/icons/quote.svg +3 -0
  217. package/core/icons/stackoverflow.svg +3 -0
  218. package/core/icons/twitter.svg +3 -0
  219. package/core/icons/youtube.svg +11 -0
  220. package/core/icons.js +1 -0
  221. package/core/load-sprites.js +1 -0
  222. package/core/react-renderer.js +1 -0
  223. package/core/remote-blogs-posts.js +1 -0
  224. package/core/remote-data-store.js +1 -0
  225. package/core/remote-data-util.js +1 -0
  226. package/core/remote-session-data.js +1 -0
  227. package/core/scripts.js +1 -2
  228. package/core/sprites.svg +1 -525
  229. package/core/styles/buttons.css +122 -0
  230. package/core/styles/forms.css +62 -0
  231. package/core/styles/layout.css +19 -0
  232. package/core/styles/properties.css +276 -0
  233. package/core/styles/text.css +166 -0
  234. package/core/styles.base.css +1 -0
  235. package/core/styles.components.css +33 -0
  236. package/core/styles.css +2 -699
  237. package/core/url-base.js +1 -0
  238. package/core/utils/syntax-highlighter-registry.js +1 -0
  239. package/core/utils/syntax-highlighter.css +67 -0
  240. package/core/utils/syntax-highlighter.js +1 -0
  241. package/package.json +38 -34
  242. package/reset/scripts.js +1 -1
  243. package/reset/styles/normalize.css +353 -0
  244. package/reset/styles/reset.css +129 -0
  245. package/reset/styles.css +2 -477
  246. package/src/.DS_Store +0 -0
  247. package/src/core/.DS_Store +0 -0
  248. package/src/core/Accordion/.DS_Store +0 -0
  249. package/src/core/Accordion/Accordion.stories.tsx +39 -0
  250. package/src/core/Accordion.tsx +147 -0
  251. package/src/core/Code/.DS_Store +0 -0
  252. package/src/core/Code/Code.stories.tsx +71 -0
  253. package/src/core/Code.tsx +45 -0
  254. package/src/core/{ConnectStateWrapper/component.jsx → ConnectStateWrapper.tsx} +7 -3
  255. package/src/core/ContactFooter/.DS_Store +0 -0
  256. package/src/core/ContactFooter/ContactFooter.stories.tsx +11 -0
  257. package/src/core/ContactFooter/component.css +7 -9
  258. package/src/core/ContactFooter.tsx +92 -0
  259. package/src/core/CookieMessage/.DS_Store +0 -0
  260. package/src/core/CookieMessage/CookieMessage.stories.tsx +12 -0
  261. package/src/core/CookieMessage/component.css +10 -12
  262. package/src/core/{CookieMessage/component.jsx → CookieMessage.tsx} +15 -10
  263. package/src/core/CustomerLogos/.DS_Store +0 -0
  264. package/src/core/CustomerLogos/CustomerLogos.stories.tsx +43 -0
  265. package/src/core/CustomerLogos.tsx +35 -0
  266. package/src/core/DropdownMenu/.DS_Store +0 -0
  267. package/src/core/DropdownMenu/DropdownMenu.stories.tsx +48 -0
  268. package/src/core/{DropdownMenu/component.jsx → DropdownMenu.tsx} +64 -36
  269. package/src/core/FeaturedLink/.DS_Store +0 -0
  270. package/src/core/FeaturedLink/FeaturedLink.stories.tsx +43 -0
  271. package/src/core/{FeaturedLink/component.jsx → FeaturedLink.tsx} +26 -18
  272. package/src/core/Flash/.DS_Store +0 -0
  273. package/src/core/Flash/Flash.stories.tsx +37 -0
  274. package/src/core/Flash/component.css +19 -21
  275. package/src/core/{Flash/component.jsx → Flash.tsx} +78 -39
  276. package/src/core/Footer/.DS_Store +0 -0
  277. package/src/core/Footer/Footer.stories.tsx +26 -0
  278. package/src/core/Footer/component.css +22 -24
  279. package/src/core/{Footer/component.jsx → Footer.tsx} +237 -70
  280. package/src/core/Icon/.DS_Store +0 -0
  281. package/src/core/Icon/Icon.stories.tsx +150 -0
  282. package/src/core/Icon.tsx +26 -0
  283. package/src/core/Loader/.DS_Store +0 -0
  284. package/src/core/Loader/Loader.stories.tsx +21 -0
  285. package/src/core/{Loader/component.jsx → Loader.tsx} +11 -8
  286. package/src/core/Logo/.DS_Store +0 -0
  287. package/src/core/Logo/Logo.stories.tsx +12 -0
  288. package/src/core/Logo.tsx +29 -0
  289. package/src/core/Meganav/.DS_Store +0 -0
  290. package/src/core/Meganav/Meganav.stories.tsx +86 -0
  291. package/src/core/Meganav/component.css +103 -105
  292. package/src/core/Meganav/component.js +6 -7
  293. package/src/core/Meganav.tsx +228 -0
  294. package/src/core/MeganavBlogPostsList/.DS_Store +0 -0
  295. package/src/core/{MeganavBlogPostsList/component.jsx → MeganavBlogPostsList.tsx} +15 -14
  296. package/src/core/MeganavContentCompany/.DS_Store +0 -0
  297. package/src/core/{MeganavContentCompany/component.jsx → MeganavContentCompany.tsx} +82 -33
  298. package/src/core/MeganavContentDevelopers/.DS_Store +0 -0
  299. package/src/core/{MeganavContentDevelopers/component.jsx → MeganavContentDevelopers.tsx} +98 -34
  300. package/src/core/MeganavContentProducts/.DS_Store +0 -0
  301. package/src/core/MeganavContentProducts.tsx +165 -0
  302. package/src/core/MeganavContentUseCases/.DS_Store +0 -0
  303. package/src/core/MeganavContentUseCases.tsx +244 -0
  304. package/src/core/MeganavControl/.DS_Store +0 -0
  305. package/src/core/{MeganavControl/component.jsx → MeganavControl.tsx} +18 -12
  306. package/src/core/MeganavControlMobileDropdown/.DS_Store +0 -0
  307. package/src/core/{MeganavControlMobileDropdown/component.jsx → MeganavControlMobileDropdown.tsx} +3 -7
  308. package/src/core/MeganavControlMobilePanelClose/.DS_Store +0 -0
  309. package/src/core/{MeganavControlMobilePanelClose/component.jsx → MeganavControlMobilePanelClose.tsx} +16 -9
  310. package/src/core/MeganavControlMobilePanelOpen/.DS_Store +0 -0
  311. package/src/core/MeganavControlMobilePanelOpen.tsx +32 -0
  312. package/src/core/MeganavItemsDesktop/.DS_Store +0 -0
  313. package/src/core/MeganavItemsDesktop.tsx +68 -0
  314. package/src/core/MeganavItemsMobile/.DS_Store +0 -0
  315. package/src/core/MeganavItemsMobile.tsx +197 -0
  316. package/src/core/MeganavItemsSignedIn/.DS_Store +0 -0
  317. package/src/core/{MeganavItemsSignedIn/component.jsx → MeganavItemsSignedIn.tsx} +59 -23
  318. package/src/core/MeganavSearch/.DS_Store +0 -0
  319. package/src/core/MeganavSearch.tsx +36 -0
  320. package/src/core/MeganavSearchAutocomplete/.DS_Store +0 -0
  321. package/src/core/MeganavSearchAutocomplete.tsx +12 -0
  322. package/src/core/MeganavSearchPanel/.DS_Store +0 -0
  323. package/src/core/MeganavSearchPanel.tsx +52 -0
  324. package/src/core/MeganavSearchSuggestions/.DS_Store +0 -0
  325. package/src/core/MeganavSearchSuggestions.tsx +62 -0
  326. package/src/core/Notice/.DS_Store +0 -0
  327. package/src/core/Notice/component.css +4 -6
  328. package/src/core/Notice/component.js +1 -1
  329. package/src/core/Notice.tsx +104 -0
  330. package/src/core/SignOutLink/.DS_Store +0 -0
  331. package/src/core/SignOutLink.tsx +51 -0
  332. package/src/core/Slider/.DS_Store +0 -0
  333. package/src/core/Slider/Slider.stories.tsx +45 -0
  334. package/src/core/Slider/component.css +4 -6
  335. package/src/core/Slider.tsx +112 -0
  336. package/src/core/Table/.DS_Store +0 -0
  337. package/src/core/Table/Table.stories.tsx +12 -0
  338. package/src/core/Table/Table.tsx +30 -0
  339. package/src/core/Table/TableCell.tsx +84 -0
  340. package/src/core/Table/TableRow.tsx +25 -0
  341. package/src/core/Table/data.tsx +113 -0
  342. package/src/core/Table.tsx +24 -0
  343. package/src/core/Tooltip/Tooltip.stories.tsx +27 -0
  344. package/src/core/Tooltip.tsx +60 -0
  345. package/src/core/icons.js +6 -0
  346. package/src/core/{react-renderer.js → react-renderer.tsx} +9 -7
  347. package/src/core/styles/buttons.css +121 -123
  348. package/src/core/styles/forms.css +49 -51
  349. package/src/core/styles/layout.css +14 -16
  350. package/src/core/styles/properties.css +250 -259
  351. package/src/core/styles/text.css +165 -167
  352. package/src/core/styles.components.css +22 -24
  353. package/src/core/utils/syntax-highlighter.css +55 -59
  354. package/src/pages/Buttons.mdx +121 -0
  355. package/src/pages/Chips.mdx +136 -0
  356. package/src/pages/Colour.mdx +23 -0
  357. package/src/pages/Forms.mdx +173 -0
  358. package/src/pages/Layout.mdx +58 -0
  359. package/src/pages/Typography.mdx +206 -0
  360. package/src/pages/utils.ts +70 -0
  361. package/tailwind.config.js +1 -7
  362. package/tailwind.extend.js +1 -1
  363. package/core/.gitignore +0 -1
  364. package/core/Code.jsx +0 -684
  365. package/core/CompanyAutocomplete/component.css +0 -46
  366. package/core/CompanyAutocomplete/component.js +0 -2
  367. package/core/CompanyAutocomplete/component.js.LICENSE.txt +0 -1
  368. package/core/ConnectStateWrapper.jsx +0 -222
  369. package/core/ContactFooter.jsx +0 -342
  370. package/core/CookieMessage.jsx +0 -204
  371. package/core/CustomerLogos.jsx +0 -144
  372. package/core/DropdownMenu.jsx +0 -313
  373. package/core/FeatureFooter/component.css +0 -13
  374. package/core/FeatureFooter/component.js +0 -1
  375. package/core/FeaturedLink.jsx +0 -241
  376. package/core/Flash.jsx +0 -622
  377. package/core/Footer.jsx +0 -587
  378. package/core/Icon.jsx +0 -152
  379. package/core/Loader.jsx +0 -154
  380. package/core/Logo.jsx +0 -147
  381. package/core/Meganav.jsx +0 -4151
  382. package/core/MeganavBlogPostsList/component.js.LICENSE.txt +0 -1
  383. package/core/MeganavBlogPostsList.jsx +0 -296
  384. package/core/MeganavContentCompany.jsx +0 -1058
  385. package/core/MeganavContentDevelopers.jsx +0 -334
  386. package/core/MeganavContentProducts.jsx +0 -373
  387. package/core/MeganavContentUseCases.jsx +0 -341
  388. package/core/MeganavControl.jsx +0 -199
  389. package/core/MeganavControlMobileDropdown.jsx +0 -197
  390. package/core/MeganavControlMobilePanelClose.jsx +0 -198
  391. package/core/MeganavControlMobilePanelOpen.jsx +0 -193
  392. package/core/MeganavItemsDesktop.jsx +0 -279
  393. package/core/MeganavItemsMobile.jsx +0 -689
  394. package/core/MeganavItemsSignedIn.jsx +0 -643
  395. package/core/MeganavSearch.jsx +0 -434
  396. package/core/MeganavSearchAutocomplete.jsx +0 -117
  397. package/core/MeganavSearchPanel.jsx +0 -386
  398. package/core/MeganavSearchSuggestions.jsx +0 -299
  399. package/core/Notice.jsx +0 -914
  400. package/core/Showcase/component.css +0 -31
  401. package/core/Showcase/component.js +0 -1
  402. package/core/Showcase.jsx +0 -17
  403. package/core/SignOutLink.jsx +0 -157
  404. package/core/Slider.jsx +0 -400
  405. package/core/Uptime/component.css +0 -128
  406. package/core/Uptime/component.js +0 -1
  407. package/core/Uptime.jsx +0 -895
  408. package/core/scripts.js.LICENSE.txt +0 -1
  409. package/preview/tmp/pids/.keep +0 -0
  410. package/reset/.gitignore +0 -1
  411. package/src/core/Code/component.html.erb +0 -3
  412. package/src/core/Code/component.jsx +0 -31
  413. package/src/core/Code/component.rb +0 -12
  414. package/src/core/CompanyAutocomplete/component.css +0 -45
  415. package/src/core/CompanyAutocomplete/component.js +0 -204
  416. package/src/core/ContactFooter/component.html.erb +0 -32
  417. package/src/core/ContactFooter/component.jsx +0 -66
  418. package/src/core/ContactFooter/component.rb +0 -13
  419. package/src/core/CustomerLogos/component.html.erb +0 -9
  420. package/src/core/CustomerLogos/component.jsx +0 -28
  421. package/src/core/CustomerLogos/component.rb +0 -14
  422. package/src/core/FeatureFooter/component.css +0 -12
  423. package/src/core/FeatureFooter/component.html.erb +0 -54
  424. package/src/core/FeatureFooter/component.js +0 -7
  425. package/src/core/FeatureFooter/component.rb +0 -30
  426. package/src/core/FeaturedLink/component.html.erb +0 -15
  427. package/src/core/FeaturedLink/component.rb +0 -21
  428. package/src/core/Footer/component.html.erb +0 -256
  429. package/src/core/Footer/component.rb +0 -14
  430. package/src/core/Icon/component.html.erb +0 -3
  431. package/src/core/Icon/component.jsx +0 -19
  432. package/src/core/Icon/component.rb +0 -25
  433. package/src/core/Loader/component.html.erb +0 -18
  434. package/src/core/Loader/component.rb +0 -19
  435. package/src/core/Logo/component.html.erb +0 -3
  436. package/src/core/Logo/component.jsx +0 -20
  437. package/src/core/Logo/component.rb +0 -31
  438. package/src/core/Meganav/component.html.erb +0 -31
  439. package/src/core/Meganav/component.jsx +0 -123
  440. package/src/core/Meganav/component.rb +0 -60
  441. package/src/core/MeganavBlogPostsList/component.html.erb +0 -5
  442. package/src/core/MeganavBlogPostsList/component.rb +0 -13
  443. package/src/core/MeganavContentCompany/component.html.erb +0 -90
  444. package/src/core/MeganavContentCompany/component.rb +0 -14
  445. package/src/core/MeganavContentDevelopers/component.html.erb +0 -129
  446. package/src/core/MeganavContentDevelopers/component.rb +0 -13
  447. package/src/core/MeganavContentProducts/component.html.erb +0 -83
  448. package/src/core/MeganavContentProducts/component.jsx +0 -105
  449. package/src/core/MeganavContentProducts/component.rb +0 -14
  450. package/src/core/MeganavContentUseCases/component.html.erb +0 -135
  451. package/src/core/MeganavContentUseCases/component.jsx +0 -147
  452. package/src/core/MeganavContentUseCases/component.rb +0 -13
  453. package/src/core/MeganavControl/component.html.erb +0 -6
  454. package/src/core/MeganavControl/component.rb +0 -20
  455. package/src/core/MeganavControlMobileDropdown/component.html.erb +0 -7
  456. package/src/core/MeganavControlMobileDropdown/component.rb +0 -11
  457. package/src/core/MeganavControlMobilePanelClose/component.html.erb +0 -12
  458. package/src/core/MeganavControlMobilePanelClose/component.rb +0 -12
  459. package/src/core/MeganavControlMobilePanelOpen/component.html.erb +0 -7
  460. package/src/core/MeganavControlMobilePanelOpen/component.jsx +0 -25
  461. package/src/core/MeganavControlMobilePanelOpen/component.rb +0 -9
  462. package/src/core/MeganavItemsDesktop/component.html.erb +0 -17
  463. package/src/core/MeganavItemsDesktop/component.jsx +0 -49
  464. package/src/core/MeganavItemsDesktop/component.rb +0 -23
  465. package/src/core/MeganavItemsMobile/component.html.erb +0 -75
  466. package/src/core/MeganavItemsMobile/component.jsx +0 -137
  467. package/src/core/MeganavItemsMobile/component.rb +0 -21
  468. package/src/core/MeganavItemsSignedIn/component.html.erb +0 -53
  469. package/src/core/MeganavItemsSignedIn/component.rb +0 -33
  470. package/src/core/MeganavSearch/component.html.erb +0 -15
  471. package/src/core/MeganavSearch/component.jsx +0 -33
  472. package/src/core/MeganavSearch/component.rb +0 -13
  473. package/src/core/MeganavSearchAutocomplete/component.html.erb +0 -6
  474. package/src/core/MeganavSearchAutocomplete/component.jsx +0 -14
  475. package/src/core/MeganavSearchAutocomplete/component.rb +0 -6
  476. package/src/core/MeganavSearchPanel/component.html.erb +0 -22
  477. package/src/core/MeganavSearchPanel/component.jsx +0 -39
  478. package/src/core/MeganavSearchPanel/component.rb +0 -13
  479. package/src/core/MeganavSearchSuggestions/component.html.erb +0 -22
  480. package/src/core/MeganavSearchSuggestions/component.jsx +0 -49
  481. package/src/core/MeganavSearchSuggestions/component.rb +0 -18
  482. package/src/core/Notice/component.html.erb +0 -16
  483. package/src/core/Notice/component.jsx +0 -71
  484. package/src/core/Notice/component.rb +0 -29
  485. package/src/core/Showcase/component.css +0 -30
  486. package/src/core/Showcase/component.html.erb +0 -76
  487. package/src/core/Showcase/component.js +0 -180
  488. package/src/core/Showcase/component.jsx +0 -0
  489. package/src/core/Showcase/component.rb +0 -190
  490. package/src/core/SignOutLink/component.html.erb +0 -1
  491. package/src/core/SignOutLink/component.jsx +0 -32
  492. package/src/core/SignOutLink/component.rb +0 -17
  493. package/src/core/Slider/component.html.erb +0 -28
  494. package/src/core/Slider/component.jsx +0 -86
  495. package/src/core/Slider/component.rb +0 -38
  496. package/src/core/Uptime/component.css +0 -127
  497. package/src/core/Uptime/component.html.erb +0 -0
  498. package/src/core/Uptime/component.js +0 -1
  499. package/src/core/Uptime/component.jsx +0 -183
  500. package/src/core/Uptime/component.rb +0 -7
  501. package/src/core/core.rb +0 -81
  502. /package/{preview/log/.keep → core/Accordion/component.js} +0 -0
  503. /package/{preview/tmp/.keep → src/core/Accordion/component.js} +0 -0
@@ -0,0 +1,71 @@
1
+ import Code from "./component.tsx";
2
+
3
+ export default {
4
+ title: "Components/Code",
5
+ component: Code,
6
+ tags: ["autodocs"],
7
+ };
8
+
9
+ export const Javascript = {
10
+ args: {
11
+ language: "javascript",
12
+ snippet: `var ably = new Ably.Realtime('1WChTA.mc0Biw:kNfiYG4KiPgmHHgH');
13
+ var channel = ably.channels.get('web-pal');
14
+
15
+ // Subscribe to messages on channel
16
+ channel.subscribe('greeting', function(message) {
17
+ alert(message.data);
18
+ });`,
19
+ },
20
+ };
21
+
22
+ export const Swift = {
23
+ args: {
24
+ language: "swift",
25
+ snippet: `let ably = ARTRealtime(key: "1WChTA.mc0Biw:kNfiYG4KiPgmHHgH")
26
+ let channel = ably.channels.get("web-pal")
27
+
28
+ // Subscribe to messages on channel
29
+ channel.subscribe("greeting") { message in
30
+ print("\\(message.data)")
31
+ }`,
32
+ },
33
+ };
34
+
35
+ export const Java = {
36
+ args: {
37
+ language: "java",
38
+ snippet: `AblyRealtime ably = new AblyRealtime("1WChTA.mc0Biw:kNfiYG4KiPgmHHgH");
39
+ Channel channel = ably.channels.get("web-pal");
40
+
41
+ /* Subscribe to messages on channel */
42
+
43
+ MessageListener listener;
44
+ listener = new MessageListener() {
45
+ @Override
46
+ public void onMessage(Message message) {
47
+ System.out.print(message.data);
48
+ };
49
+ };
50
+ channel.subscribe("greeting", listener);`,
51
+ },
52
+ };
53
+
54
+ export const Kotlin = {
55
+ args: {
56
+ language: "kotlin",
57
+ snippet: `var ably = new Ably.Realtime('1WChTA.mc0Biw:kNfiYG4KiPgmHHgH');
58
+ val exampleConstraints = DefaultResolutionConstraints(
59
+ DefaultResolutionSet( // this constructor provides one Resolution for all states
60
+ Resolution(
61
+ accuracy = Accuracy.BALANCED,
62
+ desiredInterval = 1000L,
63
+ minimumDisplacement = 1.0
64
+ )
65
+ ),
66
+ proximityThreshold = DefaultProximity(spatial = 1.0),
67
+ batteryLevelThreshold = 10.0f,
68
+ lowBatteryMultiplier = 2.0f
69
+ )`,
70
+ },
71
+ };
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+
3
+ import "../utils/syntax-highlighter.css";
4
+ import {
5
+ highlightSnippet,
6
+ registerDefaultLanguages,
7
+ } from "../utils/syntax-highlighter";
8
+ import languagesRegistry from "../utils/syntax-highlighter-registry";
9
+
10
+ registerDefaultLanguages(languagesRegistry);
11
+
12
+ type CodeProps = {
13
+ language: string;
14
+ snippet: string;
15
+ textSize?: string;
16
+ padding?: string;
17
+ additionalCSS?: string;
18
+ };
19
+
20
+ const Code = ({
21
+ language,
22
+ snippet,
23
+ textSize = "ui-text-code",
24
+ padding = "p-32",
25
+ additionalCSS = "",
26
+ }: CodeProps) => {
27
+ const HTMLraw = highlightSnippet(language, `${snippet}`.trim()) ?? "";
28
+ const className = `language-${language} ${textSize}`;
29
+
30
+ return (
31
+ <div
32
+ className={`hljs overflow-auto ${padding} ${additionalCSS}`}
33
+ data-id="code"
34
+ >
35
+ <pre lang={language}>
36
+ <code
37
+ className={className}
38
+ dangerouslySetInnerHTML={{ __html: HTMLraw }}
39
+ />
40
+ </pre>
41
+ </div>
42
+ );
43
+ };
44
+
45
+ export default Code;
@@ -12,14 +12,18 @@ import { connectState, getRemoteDataStore } from "../remote-data-store";
12
12
  - initial state is set in useEffect so the wrapped component needs to handle it's props set to undefined initially
13
13
  */
14
14
 
15
- export const ConnectStateWrapper = (Component, selectors) => {
15
+ const ConnectStateWrapper = (Component, selectors) => {
16
16
  const [state, setState] = useState({});
17
17
 
18
- const setStateForKey = (key) => (storeState) => setState(() => ({ [key]: storeState }));
18
+ const setStateForKey = (key) => (storeState) =>
19
+ setState(() => ({ [key]: storeState }));
19
20
 
20
21
  useEffect(() => {
21
22
  const store = getRemoteDataStore();
22
- const resolvedState = Object.keys(selectors).reduce((acc, key) => ({ ...acc, [key]: selectors[key](store) }), {});
23
+ const resolvedState = Object.keys(selectors).reduce(
24
+ (acc, key) => ({ ...acc, [key]: selectors[key](store) }),
25
+ {}
26
+ );
23
27
 
24
28
  // Set initial state
25
29
  setState(resolvedState);
Binary file
@@ -0,0 +1,11 @@
1
+ import ContactFooter from "./component.tsx";
2
+
3
+ export default {
4
+ title: "Components/Contact Footer",
5
+ component: ContactFooter,
6
+ parameters: {
7
+ layout: "fullscreen",
8
+ },
9
+ };
10
+
11
+ export const Default = {};
@@ -1,11 +1,9 @@
1
- @layer components {
2
- .ui-contact-footer {
3
- background-size: 100% 100%;
4
- background-position: right center;
5
- @apply w-full bg-gradient-active-orange;
6
- }
1
+ .ui-contact-footer {
2
+ background-size: 100% 100%;
3
+ background-position: right center;
4
+ @apply w-full bg-gradient-active-orange;
5
+ }
7
6
 
8
- .ui-contact-footer-box {
9
- @apply p-24 sm:p-32 xl:p-40 bg-white flex flex-col justify-between rounded-sm;
10
- }
7
+ .ui-contact-footer-box {
8
+ @apply p-24 sm:p-32 xl:p-40 bg-white flex flex-col justify-between rounded-sm;
11
9
  }
@@ -0,0 +1,92 @@
1
+ import React, { useEffect } from "react";
2
+
3
+ import Icon from "../Icon/component.tsx";
4
+ import _absUrl from "../url-base.js";
5
+ import toggleChatWidget from "../hubspot-chat-toggle";
6
+ import "./component.css";
7
+
8
+ type ContactFooterProps = {
9
+ urlBase: string;
10
+ };
11
+
12
+ const ContactFooter = ({ urlBase }: ContactFooterProps) => {
13
+ useEffect(() => toggleChatWidget({ dataId: "contact-footer" }), []);
14
+ const absUrl = (path) => _absUrl(path, urlBase);
15
+
16
+ return (
17
+ <div
18
+ className="ui-contact-footer font-sans antialiased"
19
+ data-id="contact-footer"
20
+ >
21
+ <div className="w-full bp-lg max-w-screen-xl mx-auto py-64 grid grid-cols-1 md:grid-cols-3 ui-grid-gap ui-grid-px">
22
+ <div className="ui-contact-footer-box">
23
+ <Icon
24
+ name="icon-display-live-chat"
25
+ size="3rem"
26
+ additionalCSS="block mb-16"
27
+ />
28
+ <div>
29
+ <div className="ui-text-h3 mb-24">Live Chat</div>
30
+ <p className="ui-text-p1">
31
+ Reach out team of experts over chat powered by Ably.
32
+ </p>
33
+ </div>
34
+ <button
35
+ type="button"
36
+ className="ui-btn-secondary self-start mt-16"
37
+ disabled
38
+ data-id="open-chat-widget"
39
+ data-enabled-label="Start a live chat"
40
+ data-disabled-label="Live chat unavailable"
41
+ >
42
+ Live chat unavailable
43
+ </button>
44
+ </div>
45
+
46
+ <div className="ui-contact-footer-box">
47
+ <Icon
48
+ name="icon-display-call-mobile"
49
+ size="3rem"
50
+ additionalCSS="block mb-16"
51
+ />
52
+ <div className="flex-grow">
53
+ <div className="ui-text-h3 mb-24">Call us</div>
54
+ <p className="ui-text-p1">
55
+ <span className="block">
56
+ <strong className="font-bold">+1 877 434 5287</strong> (USA,
57
+ toll free)
58
+ </span>
59
+ <span className="block">
60
+ <strong className="font-bold">+44 20 3318 4689</strong> (UK)
61
+ </span>
62
+ </p>
63
+ </div>
64
+ </div>
65
+
66
+ <div className="ui-contact-footer-box">
67
+ <Icon
68
+ name="icon-display-tech-account-comms"
69
+ size="3rem"
70
+ additionalCSS="block mb-16"
71
+ />
72
+ <div>
73
+ <div className="ui-text-h3 mb-24">
74
+ Technical and account support
75
+ </div>
76
+ <p className="ui-text-p1">
77
+ We&apos;re standing by to help with any questions or code.
78
+ </p>
79
+ </div>
80
+ <a
81
+ className="ui-btn-secondary self-start p-btn mt-16"
82
+ href={absUrl("/support")}
83
+ >
84
+ Get support now
85
+ </a>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ );
90
+ };
91
+
92
+ export default ContactFooter;
Binary file
@@ -0,0 +1,12 @@
1
+ import CookieMessage from "./component.tsx";
2
+
3
+ export default {
4
+ title: "Components/Cookie Message",
5
+ component: CookieMessage,
6
+ args: {
7
+ cookieId: "cookie-namespace",
8
+ noticeId: "cookie-message",
9
+ },
10
+ };
11
+
12
+ export const Default = {};
@@ -1,13 +1,11 @@
1
- @layer components {
2
- .ui-cookie-message {
3
- @apply rounded-lg bg-white font-sans;
4
- @apply justify-between items-center;
5
- @apply opacity-100 z-50 bottom-0 fixed sm:flex;
6
- @apply p-16 mb-16 ml-16;
7
- max-width: 70vw;
8
- box-shadow: 0px 24px 32px 0px #0000000d;
9
- border: 1px solid var(--color-mid-grey);
10
- border-left: 0.5rem solid var(--color-electric-cyan);
11
- transition: bottom 250ms ease-out, opacity 150ms ease-out;
12
- }
1
+ .ui-cookie-message {
2
+ @apply rounded-lg bg-white font-sans;
3
+ @apply justify-between items-center;
4
+ @apply opacity-100 z-50 bottom-0 fixed sm:flex;
5
+ @apply p-16 mb-16 ml-16;
6
+ max-width: 70vw;
7
+ box-shadow: 0px 24px 32px 0px #0000000d;
8
+ border: 1px solid var(--color-mid-grey);
9
+ border-left: 0.5rem solid var(--color-electric-cyan);
10
+ transition: bottom 250ms ease-out, opacity 150ms ease-out;
13
11
  }
@@ -1,13 +1,18 @@
1
1
  import React, { useRef, useEffect, useState } from "react";
2
- import T from "prop-types";
3
2
  import Cookie from "js-cookie";
3
+ import "./component.css";
4
4
 
5
5
  import _absUrl from "../url-base";
6
6
 
7
7
  const COOKIE_EXPIRY = 365;
8
8
 
9
- export default function CookieMessage({ cookieId, urlBase }) {
10
- const ref = useRef(null);
9
+ type CookieMessageProps = {
10
+ cookieId: string;
11
+ urlBase: string;
12
+ };
13
+
14
+ const CookieMessage = ({ cookieId, urlBase }: CookieMessageProps) => {
15
+ const ref = useRef<HTMLDivElement>(null);
11
16
  const [hideCookieMessage, setHideCookieMessage] = useState(true);
12
17
 
13
18
  useEffect(() => {
@@ -18,7 +23,7 @@ export default function CookieMessage({ cookieId, urlBase }) {
18
23
  const handleClose = () => {
19
24
  Cookie.set(cookieId, "1", { expires: COOKIE_EXPIRY });
20
25
 
21
- ref.current.classList.add("bottom-1", "opacity-0");
26
+ ref.current?.classList.add("bottom-1", "opacity-0");
22
27
  setTimeout(() => setHideCookieMessage(true), 500);
23
28
  };
24
29
 
@@ -35,14 +40,14 @@ export default function CookieMessage({ cookieId, urlBase }) {
35
40
  </a>{" "}
36
41
  to improve your experience.
37
42
  </p>
38
- <button className="ui-btn-secondary mt-12 sm:mt-0 whitespace-nowrap" onClick={handleClose}>
43
+ <button
44
+ className="ui-btn-secondary mt-12 sm:mt-0 whitespace-nowrap"
45
+ onClick={handleClose}
46
+ >
39
47
  Accept and close
40
48
  </button>
41
49
  </div>
42
50
  );
43
- }
44
-
45
- CookieMessage.propTypes = {
46
- cookieId: T.string,
47
- urlBase: T.string,
48
51
  };
52
+
53
+ export default CookieMessage;
Binary file
@@ -0,0 +1,43 @@
1
+ import CustomerLogos from "./component.tsx";
2
+
3
+ import hubspot from "../images/cust-logo-hubspot-mono-pos.svg";
4
+ import webflow from "../images/cust-logo-webflow-col-pos.svg";
5
+ import mentimeter from "../images/cust-logo-mentimeter-mono-pos.svg";
6
+ import toyota from "../images/cust-logo-toyota-mono-pos.svg";
7
+ import split from "../images/cust-logo-split-mono-pos.svg";
8
+ import australian from "../images/cust-logo-ausopen-mono-pos.svg";
9
+
10
+ export default {
11
+ title: "Components/Customer Logos",
12
+ component: CustomerLogos,
13
+ args: {
14
+ companies: [
15
+ {
16
+ label: "Hubspot",
17
+ logo: hubspot,
18
+ },
19
+ {
20
+ label: "Webflow",
21
+ logo: webflow,
22
+ },
23
+ {
24
+ label: "Mentimeter",
25
+ logo: mentimeter,
26
+ },
27
+ {
28
+ label: "Toyota",
29
+ logo: toyota,
30
+ },
31
+ {
32
+ label: "Split",
33
+ logo: split,
34
+ },
35
+ {
36
+ label: "Australian Open",
37
+ logo: australian,
38
+ },
39
+ ],
40
+ },
41
+ };
42
+
43
+ export const Default = {};
@@ -0,0 +1,35 @@
1
+ import React from "react";
2
+
3
+ type CompanyEntity = {
4
+ label: string;
5
+ logo: string;
6
+ };
7
+
8
+ type CustomerLogosProps = {
9
+ companies: CompanyEntity[];
10
+ additionalCss?: string;
11
+ };
12
+
13
+ const CustomerLogos = ({
14
+ companies,
15
+ additionalCss = "",
16
+ }: CustomerLogosProps) => {
17
+ return (
18
+ <section className="w-full bg-white">
19
+ <ul
20
+ className={`py-64 flex flex-row flex-wrap md:flex-nowrap content-between m-auto items-center ${additionalCss}`}
21
+ >
22
+ {companies.map((company) => (
23
+ <li
24
+ key={company.label}
25
+ className="flex-auto text-center sm:w-1/3 w-1/2"
26
+ >
27
+ <img alt={company.label} src={company.logo} className="mx-auto" />
28
+ </li>
29
+ ))}
30
+ </ul>
31
+ </section>
32
+ );
33
+ };
34
+
35
+ export default CustomerLogos;
Binary file
@@ -0,0 +1,48 @@
1
+ import React from "react";
2
+ import Icon from "../Icon/component.tsx";
3
+ import DropdownMenu from "./component.tsx";
4
+
5
+ export default {
6
+ title: "Components/Dropdown Menu",
7
+ component: DropdownMenu,
8
+ };
9
+
10
+ export const Default = {
11
+ render: () => (
12
+ <DropdownMenu>
13
+ <DropdownMenu.Trigger additionalTriggerCSS="ui-text-h3">
14
+ Dropdown Menu Trigger
15
+ </DropdownMenu.Trigger>
16
+ <DropdownMenu.Content anchorPosition="left">
17
+ <DropdownMenu.Link
18
+ url="https://ably.com/"
19
+ title="Using DropdownMenuLink Component"
20
+ subtitle="This is using the inbuilt component which takes props for title, subtitle, icon name & children."
21
+ iconName="icon-gui-link-arrow"
22
+ >
23
+ <p className="ui-text-p3">I am a child! 🐣</p>
24
+ </DropdownMenu.Link>
25
+ <DropdownMenu.Link
26
+ url="https://ably.com/"
27
+ title="Using DropdownMenuLink Component - no icon, subtitle or children"
28
+ />
29
+ <a
30
+ href="https://ably.com/docs"
31
+ target="_blank"
32
+ rel="noreferrer"
33
+ className="group block p-8 hover:bg-light-grey hover:text-cool-black rounded"
34
+ >
35
+ <p className="ui-featured-link group-hover:text-gui-hover font-light text-cool-black">
36
+ Using plain HTML
37
+ <Icon
38
+ name="icon-gui-link-arrow"
39
+ size="1rem"
40
+ color="text-cool-black"
41
+ additionalCSS="ui-featured-link-icon group-hover:text-gui-hover group-active:text-gui-active group-focus:text-gui-focus"
42
+ />
43
+ </p>
44
+ </a>
45
+ </DropdownMenu.Content>
46
+ </DropdownMenu>
47
+ ),
48
+ };
@@ -1,16 +1,52 @@
1
- import React, { createContext, useContext, useState, useEffect, useRef } from "react";
2
- import T from "prop-types";
3
- import Icon from "../Icon/component.jsx";
1
+ import React, {
2
+ createContext,
3
+ useContext,
4
+ useState,
5
+ useEffect,
6
+ useRef,
7
+ ReactNode,
8
+ Dispatch,
9
+ } from "react";
10
+ import Icon from "../Icon/component.tsx";
11
+
12
+ const DropdownMenuContext = createContext<{
13
+ isOpen: boolean;
14
+ setOpen: Dispatch<React.SetStateAction<boolean>>;
15
+ }>({
16
+ isOpen: false,
17
+ setOpen: () => {},
18
+ });
19
+
20
+ type DropdownMenuProps = {
21
+ children: ReactNode;
22
+ };
23
+
24
+ type TriggerProps = {
25
+ children: ReactNode;
26
+ additionalTriggerCSS?: string;
27
+ };
28
+
29
+ type ContentProps = {
30
+ children: ReactNode;
31
+ anchorPosition?: string;
32
+ additionalContentCSS?: string;
33
+ };
4
34
 
5
- const DropdownMenuContext = createContext();
35
+ type LinkProps = {
36
+ url: string;
37
+ title: string;
38
+ subtitle: string;
39
+ iconName: string;
40
+ children: ReactNode;
41
+ };
6
42
 
7
- const DropdownMenu = ({ children }) => {
43
+ const DropdownMenu = ({ children }: DropdownMenuProps) => {
8
44
  const [isOpen, setOpen] = useState(false);
9
- const ref = useRef(null);
45
+ const ref = useRef<HTMLDivElement>(null);
10
46
 
11
47
  useEffect(() => {
12
48
  const clickHandler = (e) => {
13
- if (ref?.current?.contains(e.target)) return;
49
+ if (ref.current?.contains(e.target)) return;
14
50
  setOpen(false);
15
51
  };
16
52
 
@@ -30,11 +66,7 @@ const DropdownMenu = ({ children }) => {
30
66
  );
31
67
  };
32
68
 
33
- DropdownMenu.propTypes = {
34
- children: T.node,
35
- };
36
-
37
- const Trigger = ({ children, additionalTriggerCSS = "" }) => {
69
+ const Trigger = ({ children, additionalTriggerCSS = "" }: TriggerProps) => {
38
70
  const { isOpen, setOpen } = useContext(DropdownMenuContext);
39
71
 
40
72
  return (
@@ -54,19 +86,19 @@ const Trigger = ({ children, additionalTriggerCSS = "" }) => {
54
86
  );
55
87
  };
56
88
 
57
- Trigger.propTypes = {
58
- children: T.node,
59
- additionalTriggerCSS: T.string,
60
- };
61
-
62
- const Content = ({ children, anchorPosition = "right", additionalContentCSS }) => {
89
+ const Content = ({
90
+ children,
91
+ anchorPosition = "right",
92
+ additionalContentCSS,
93
+ }: ContentProps) => {
63
94
  const { isOpen } = useContext(DropdownMenuContext);
64
95
 
65
96
  if (!isOpen) {
66
97
  return null;
67
98
  }
68
99
 
69
- const anchorPositionClasses = anchorPosition === "right" ? "right-0" : "left-0";
100
+ const anchorPositionClasses =
101
+ anchorPosition === "right" ? "right-0" : "left-0";
70
102
 
71
103
  return (
72
104
  <div
@@ -79,18 +111,22 @@ const Content = ({ children, anchorPosition = "right", additionalContentCSS }) =
79
111
  );
80
112
  };
81
113
 
82
- Content.propTypes = {
83
- children: T.node,
84
- anchorPosition: T.string,
85
- additionalContentCSS: T.string,
86
- };
87
-
88
- const Link = ({ url, title, subtitle, iconName, children }) => {
114
+ const Link = ({ url, title, subtitle, iconName, children }: LinkProps) => {
89
115
  return (
90
- <a href={url} className="menu-link group block p-8 hover:bg-light-grey hover:text-cool-black rounded">
116
+ <a
117
+ href={url}
118
+ className="menu-link group block p-8 hover:bg-light-grey hover:text-cool-black rounded"
119
+ >
91
120
  <p className="mb-4">
92
121
  {title}
93
- {iconName ? <Icon name={iconName} size="1rem" color="text-cool-black" additionalCSS="align-middle ml-8 relative -top-1 -left-4" /> : null}
122
+ {iconName ? (
123
+ <Icon
124
+ name={iconName}
125
+ size="1rem"
126
+ color="text-cool-black"
127
+ additionalCSS="align-middle ml-8 relative -top-1 -left-4"
128
+ />
129
+ ) : null}
94
130
  </p>
95
131
  {subtitle ? <p className="ui-text-p3 mb-16">{subtitle}</p> : null}
96
132
  {children}
@@ -98,14 +134,6 @@ const Link = ({ url, title, subtitle, iconName, children }) => {
98
134
  );
99
135
  };
100
136
 
101
- Link.propTypes = {
102
- url: T.string,
103
- title: T.string,
104
- subtitle: T.string,
105
- iconName: T.string,
106
- children: T.node,
107
- };
108
-
109
137
  DropdownMenu.Trigger = Trigger;
110
138
  DropdownMenu.Content = Content;
111
139
  DropdownMenu.Link = Link;
Binary file
@@ -0,0 +1,43 @@
1
+ import FeaturedLink from "./component.tsx";
2
+
3
+ export default {
4
+ title: "Components/Featured Link",
5
+ component: FeaturedLink,
6
+ parameters: {
7
+ layout: "centered",
8
+ },
9
+ tags: ["autodocs"],
10
+ args: {
11
+ url: "#",
12
+ children: "Featured link",
13
+ },
14
+ };
15
+
16
+ export const Default = {
17
+ args: {},
18
+ };
19
+
20
+ export const Reverse = {
21
+ args: {
22
+ reverse: true,
23
+ },
24
+ };
25
+
26
+ export const Large = {
27
+ args: {
28
+ textSize: "text-p1",
29
+ },
30
+ };
31
+
32
+ export const Small = {
33
+ args: {
34
+ textSize: "text-p3",
35
+ },
36
+ };
37
+
38
+ export const Pink = {
39
+ args: {
40
+ iconColor: "text-pink-500",
41
+ additionalCSS: "text-pink-800",
42
+ },
43
+ };