@ably/ui 13.3.0 → 14.0.0-dev.fbce38f

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 (402) hide show
  1. package/README.md +25 -152
  2. package/core/Accordion/component.js +1 -0
  3. package/core/Code/component.css +1 -72
  4. package/core/Code/component.js +1 -1
  5. package/core/ConnectStateWrapper/component.js +1 -1
  6. package/core/ContactFooter/component.css +7 -10
  7. package/core/ContactFooter/component.js +1 -1
  8. package/core/CookieMessage/component.css +10 -13
  9. package/core/CookieMessage/component.js +1 -1
  10. package/core/CustomerLogos/component.js +1 -1
  11. package/core/DropdownMenu/component.js +1 -1
  12. package/core/FeaturedLink/component.js +1 -1
  13. package/core/Flash/component.css +19 -22
  14. package/core/Flash/component.js +1 -1
  15. package/core/Footer/component.css +22 -25
  16. package/core/Footer/component.js +1 -1
  17. package/core/Icon/component.js +1 -1
  18. package/core/Loader/component.js +1 -1
  19. package/core/Logo/component.js +1 -1
  20. package/core/Meganav/component.css +103 -106
  21. package/core/Meganav/component.js +1 -1
  22. package/core/MeganavBlogPostsList/component.js +1 -2
  23. package/core/MeganavContentCompany/component.js +1 -1
  24. package/core/MeganavContentDevelopers/component.js +1 -1
  25. package/core/MeganavContentProducts/component.js +1 -1
  26. package/core/MeganavContentUseCases/component.js +1 -1
  27. package/core/MeganavControl/component.js +1 -1
  28. package/core/MeganavControlMobileDropdown/component.js +1 -1
  29. package/core/MeganavControlMobilePanelClose/component.js +1 -1
  30. package/core/MeganavControlMobilePanelOpen/component.js +1 -1
  31. package/core/MeganavItemsDesktop/component.js +1 -1
  32. package/core/MeganavItemsMobile/component.js +1 -1
  33. package/core/MeganavItemsSignedIn/component.js +1 -1
  34. package/core/MeganavSearch/component.js +1 -1
  35. package/core/MeganavSearchAutocomplete/component.js +1 -1
  36. package/core/MeganavSearchPanel/component.js +1 -1
  37. package/core/MeganavSearchSuggestions/component.js +1 -1
  38. package/core/Notice/component.css +4 -7
  39. package/core/Notice/component.js +1 -1
  40. package/core/SignOutLink/component.js +1 -1
  41. package/core/Slider/component.css +4 -7
  42. package/core/Slider/component.js +1 -1
  43. package/core/Table/Table.js +1 -0
  44. package/core/Table/TableCell.js +1 -0
  45. package/core/Table/TableRow.js +1 -0
  46. package/core/Table/index.js +1 -0
  47. package/core/Table/stories/data.js +1 -0
  48. package/core/Tooltip/component.js +1 -0
  49. package/core/css.js +1 -0
  50. package/core/dom-query.js +1 -0
  51. package/core/hubspot-chat-toggle.js +1 -0
  52. package/core/icons/discord.svg +10 -0
  53. package/core/icons/facebook.svg +4 -0
  54. package/core/icons/github.svg +3 -0
  55. package/core/icons/glassdoor.svg +3 -0
  56. package/core/icons/google.svg +3 -0
  57. package/core/icons/icon-display-48hrs.svg +3 -0
  58. package/core/icons/icon-display-about-ably-col.svg +4 -0
  59. package/core/icons/icon-display-api-keys.svg +3 -0
  60. package/core/icons/icon-display-api.svg +3 -0
  61. package/core/icons/icon-display-asset-tracking-col.svg +18 -0
  62. package/core/icons/icon-display-browser.svg +10 -0
  63. package/core/icons/icon-display-calendar.svg +3 -0
  64. package/core/icons/icon-display-call-mobile.svg +3 -0
  65. package/core/icons/icon-display-careers-col.svg +9 -0
  66. package/core/icons/icon-display-case-studies-col.svg +5 -0
  67. package/core/icons/icon-display-chat-col.svg +4 -0
  68. package/core/icons/icon-display-chat-stack-col.svg +4 -0
  69. package/core/icons/icon-display-chat-stack.svg +4 -0
  70. package/core/icons/icon-display-cloud-servers.svg +3 -0
  71. package/core/icons/icon-display-compare-tech-col.svg +9 -0
  72. package/core/icons/icon-display-customers-col.svg +15 -0
  73. package/core/icons/icon-display-data-broadcast-col.svg +26 -0
  74. package/core/icons/icon-display-data-synchronization-col.svg +14 -0
  75. package/core/icons/icon-display-docs-col.svg +7 -0
  76. package/core/icons/icon-display-documentation.svg +3 -0
  77. package/core/icons/icon-display-events-col.svg +13 -0
  78. package/core/icons/icon-display-examples-col.svg +11 -0
  79. package/core/icons/icon-display-gdpr.svg +3 -0
  80. package/core/icons/icon-display-general-comms.svg +3 -0
  81. package/core/icons/icon-display-hipaa.svg +10 -0
  82. package/core/icons/icon-display-integrations-col.svg +8 -0
  83. package/core/icons/icon-display-it-support-access.svg +3 -0
  84. package/core/icons/icon-display-it-support-helpdesk.svg +3 -0
  85. package/core/icons/icon-display-kafka-at-the-edge-col.svg +8 -0
  86. package/core/icons/icon-display-laptop.svg +10 -0
  87. package/core/icons/icon-display-lightbulb-col.svg +10 -0
  88. package/core/icons/icon-display-live-chat.svg +3 -0
  89. package/core/icons/icon-display-map-pin.svg +3 -0
  90. package/core/icons/icon-display-message.svg +3 -0
  91. package/core/icons/icon-display-padlock-closed.svg +3 -0
  92. package/core/icons/icon-display-platform.svg +22 -0
  93. package/core/icons/icon-display-play.svg +3 -0
  94. package/core/icons/icon-display-privacy-shield-framework.svg +7 -0
  95. package/core/icons/icon-display-push-notifications-col.svg +6 -0
  96. package/core/icons/icon-display-quickstart-guides-col.svg +8 -0
  97. package/core/icons/icon-display-resources-col.svg +21 -0
  98. package/core/icons/icon-display-sdks-col.svg +11 -0
  99. package/core/icons/icon-display-servers.svg +3 -0
  100. package/core/icons/icon-display-shopping-cart.svg +10 -0
  101. package/core/icons/icon-display-sla.svg +3 -0
  102. package/core/icons/icon-display-soc2-type2.svg +3 -0
  103. package/core/icons/icon-display-tech-account-comms.svg +3 -0
  104. package/core/icons/icon-display-tutorials-demos-col.svg +25 -0
  105. package/core/icons/icon-display-virtual-events-col.svg +12 -0
  106. package/core/icons/icon-display-virtual-events.svg +12 -0
  107. package/core/icons/icon-gui-ably-badge.svg +3 -0
  108. package/core/icons/icon-gui-arrow-bidirectional-horizontal.svg +3 -0
  109. package/core/icons/icon-gui-arrow-bidirectional-vertical.svg +3 -0
  110. package/core/icons/icon-gui-arrow-down.svg +3 -0
  111. package/core/icons/icon-gui-arrow-left.svg +3 -0
  112. package/core/icons/icon-gui-arrow-right.svg +3 -0
  113. package/core/icons/icon-gui-arrow-up.svg +3 -0
  114. package/core/icons/icon-gui-burger-menu.svg +5 -0
  115. package/core/icons/icon-gui-check-circled-fill-black.svg +4 -0
  116. package/core/icons/icon-gui-check-circled-fill.svg +4 -0
  117. package/core/icons/icon-gui-check-circled.svg +3 -0
  118. package/core/icons/icon-gui-checklist-checked.svg +3 -0
  119. package/core/icons/icon-gui-clock.svg +3 -0
  120. package/core/icons/icon-gui-close.svg +3 -0
  121. package/core/icons/icon-gui-copy.svg +10 -0
  122. package/core/icons/icon-gui-cross-circled-fill.svg +4 -0
  123. package/core/icons/icon-gui-cross-circled.svg +3 -0
  124. package/core/icons/icon-gui-dash-circled.svg +3 -0
  125. package/core/icons/icon-gui-disclosure-arrow.svg +3 -0
  126. package/core/icons/icon-gui-document-generic.svg +3 -0
  127. package/core/icons/icon-gui-enlarge.svg +3 -0
  128. package/core/icons/icon-gui-external-link.svg +3 -0
  129. package/core/icons/icon-gui-filter-flow-step-1.svg +5 -0
  130. package/core/icons/icon-gui-filter-flow-step-2.svg +5 -0
  131. package/core/icons/icon-gui-filter-flow-step-3.svg +5 -0
  132. package/core/icons/icon-gui-history.svg +3 -0
  133. package/core/icons/icon-gui-info.svg +3 -0
  134. package/core/icons/icon-gui-link-arrow.svg +3 -0
  135. package/core/icons/icon-gui-link.svg +4 -0
  136. package/core/icons/icon-gui-live-chat.svg +3 -0
  137. package/core/icons/icon-gui-minus.svg +3 -0
  138. package/core/icons/icon-gui-plus.svg +3 -0
  139. package/core/icons/icon-gui-quote-marks-solid.svg +3 -0
  140. package/core/icons/icon-gui-refresh.svg +10 -0
  141. package/core/icons/icon-gui-resources.svg +3 -0
  142. package/core/icons/icon-gui-search.svg +3 -0
  143. package/core/icons/icon-gui-tick.svg +3 -0
  144. package/core/icons/icon-gui-warning.svg +5 -0
  145. package/core/icons/icon-live-updates-results-metrics-col.svg +26 -0
  146. package/core/icons/icon-multi-user-spaces-col.svg +13 -0
  147. package/core/icons/icon-social-x.svg +3 -0
  148. package/core/icons/icon-tech-apachekafka.svg +3 -0
  149. package/core/icons/linkedin.svg +3 -0
  150. package/core/icons/quote.svg +3 -0
  151. package/core/icons/stackoverflow.svg +3 -0
  152. package/core/icons/twitter.svg +3 -0
  153. package/core/icons/youtube.svg +11 -0
  154. package/core/icons.js +1 -0
  155. package/core/load-sprites.js +1 -0
  156. package/core/react-renderer.js +1 -0
  157. package/core/remote-blogs-posts.js +1 -0
  158. package/core/remote-data-store.js +1 -0
  159. package/core/remote-data-util.js +1 -0
  160. package/core/remote-session-data.js +1 -0
  161. package/core/scripts.js +1 -2
  162. package/core/sprites.svg +1 -525
  163. package/core/styles/buttons.css +122 -0
  164. package/core/styles/forms.css +62 -0
  165. package/core/styles/layout.css +19 -0
  166. package/core/styles/properties.css +276 -0
  167. package/core/styles/text.css +166 -0
  168. package/core/styles.base.css +1 -0
  169. package/core/styles.components.css +33 -0
  170. package/core/styles.css +2 -699
  171. package/core/url-base.js +1 -0
  172. package/core/utils/syntax-highlighter-registry.js +1 -0
  173. package/core/utils/syntax-highlighter.css +67 -0
  174. package/core/utils/syntax-highlighter.js +1 -0
  175. package/package.json +39 -34
  176. package/reset/scripts.js +1 -1
  177. package/reset/styles/normalize.css +353 -0
  178. package/reset/styles/reset.css +129 -0
  179. package/reset/styles.css +2 -477
  180. package/src/core/Accordion/Accordion.stories.tsx +39 -0
  181. package/src/core/Accordion/component.tsx +147 -0
  182. package/src/core/Code/Code.stories.tsx +71 -0
  183. package/src/core/Code/component.tsx +45 -0
  184. package/src/core/ConnectStateWrapper/{component.jsx → component.tsx} +7 -3
  185. package/src/core/ContactFooter/ContactFooter.stories.tsx +11 -0
  186. package/src/core/ContactFooter/component.css +7 -9
  187. package/src/core/ContactFooter/component.tsx +92 -0
  188. package/src/core/CookieMessage/CookieMessage.stories.tsx +12 -0
  189. package/src/core/CookieMessage/component.css +10 -12
  190. package/src/core/CookieMessage/{component.jsx → component.tsx} +15 -10
  191. package/src/core/CustomerLogos/CustomerLogos.stories.tsx +43 -0
  192. package/src/core/CustomerLogos/component.tsx +35 -0
  193. package/src/core/DropdownMenu/DropdownMenu.stories.tsx +48 -0
  194. package/src/core/DropdownMenu/{component.jsx → component.tsx} +64 -36
  195. package/src/core/FeaturedLink/FeaturedLink.stories.tsx +43 -0
  196. package/src/core/FeaturedLink/{component.jsx → component.tsx} +26 -18
  197. package/src/core/Flash/Flash.stories.tsx +37 -0
  198. package/src/core/Flash/component.css +19 -21
  199. package/src/core/Flash/{component.jsx → component.tsx} +78 -39
  200. package/src/core/Footer/Footer.stories.tsx +26 -0
  201. package/src/core/Footer/component.css +22 -24
  202. package/src/core/Footer/{component.jsx → component.tsx} +237 -70
  203. package/src/core/Icon/Icon.stories.tsx +150 -0
  204. package/src/core/Icon/component.tsx +26 -0
  205. package/src/core/Loader/Loader.stories.tsx +21 -0
  206. package/src/core/Loader/{component.jsx → component.tsx} +11 -8
  207. package/src/core/Logo/Logo.stories.tsx +12 -0
  208. package/src/core/Logo/component.tsx +29 -0
  209. package/src/core/Meganav/Meganav.stories.tsx +86 -0
  210. package/src/core/Meganav/component.css +103 -105
  211. package/src/core/Meganav/component.js +6 -7
  212. package/src/core/Meganav/component.tsx +228 -0
  213. package/src/core/MeganavBlogPostsList/{component.jsx → component.tsx} +15 -14
  214. package/src/core/MeganavContentCompany/{component.jsx → component.tsx} +82 -33
  215. package/src/core/MeganavContentDevelopers/{component.jsx → component.tsx} +98 -34
  216. package/src/core/MeganavContentProducts/component.tsx +165 -0
  217. package/src/core/MeganavContentUseCases/component.tsx +244 -0
  218. package/src/core/MeganavControl/{component.jsx → component.tsx} +18 -12
  219. package/src/core/MeganavControlMobileDropdown/{component.jsx → component.tsx} +3 -7
  220. package/src/core/MeganavControlMobilePanelClose/{component.jsx → component.tsx} +16 -9
  221. package/src/core/MeganavControlMobilePanelOpen/component.tsx +32 -0
  222. package/src/core/MeganavItemsDesktop/component.tsx +68 -0
  223. package/src/core/MeganavItemsMobile/component.tsx +197 -0
  224. package/src/core/MeganavItemsSignedIn/{component.jsx → component.tsx} +59 -23
  225. package/src/core/MeganavSearch/component.tsx +36 -0
  226. package/src/core/MeganavSearchAutocomplete/component.tsx +12 -0
  227. package/src/core/MeganavSearchPanel/component.tsx +52 -0
  228. package/src/core/MeganavSearchSuggestions/component.tsx +62 -0
  229. package/src/core/Notice/component.css +4 -6
  230. package/src/core/Notice/component.js +1 -1
  231. package/src/core/Notice/component.tsx +104 -0
  232. package/src/core/SignOutLink/component.tsx +51 -0
  233. package/src/core/Slider/Slider.stories.tsx +45 -0
  234. package/src/core/Slider/component.css +4 -6
  235. package/src/core/Slider/component.tsx +112 -0
  236. package/src/core/Table/Table.tsx +30 -0
  237. package/src/core/Table/TableCell.tsx +84 -0
  238. package/src/core/Table/TableRow.tsx +25 -0
  239. package/src/core/Table/index.ts +24 -0
  240. package/src/core/Table/stories/Table.stories.tsx +12 -0
  241. package/src/core/Table/stories/data.tsx +113 -0
  242. package/src/core/Tooltip/Tooltip.stories.tsx +27 -0
  243. package/src/core/Tooltip/component.tsx +60 -0
  244. package/src/core/icons.js +6 -0
  245. package/src/core/{react-renderer.js → react-renderer.tsx} +9 -7
  246. package/src/core/styles/buttons.css +121 -123
  247. package/src/core/styles/forms.css +49 -51
  248. package/src/core/styles/layout.css +14 -16
  249. package/src/core/styles/properties.css +250 -259
  250. package/src/core/styles/text.css +165 -167
  251. package/src/core/styles.components.css +22 -24
  252. package/src/core/utils/syntax-highlighter.css +55 -59
  253. package/src/pages/Buttons.mdx +121 -0
  254. package/src/pages/Chips.mdx +136 -0
  255. package/src/pages/Colour.mdx +23 -0
  256. package/src/pages/Forms.mdx +173 -0
  257. package/src/pages/Layout.mdx +58 -0
  258. package/src/pages/Typography.mdx +206 -0
  259. package/src/pages/utils.ts +70 -0
  260. package/tailwind.config.js +1 -7
  261. package/tailwind.extend.js +1 -1
  262. package/core/.gitignore +0 -1
  263. package/core/Code.jsx +0 -684
  264. package/core/CompanyAutocomplete/component.css +0 -46
  265. package/core/CompanyAutocomplete/component.js +0 -2
  266. package/core/CompanyAutocomplete/component.js.LICENSE.txt +0 -1
  267. package/core/ConnectStateWrapper.jsx +0 -222
  268. package/core/ContactFooter.jsx +0 -342
  269. package/core/CookieMessage.jsx +0 -204
  270. package/core/CustomerLogos.jsx +0 -144
  271. package/core/DropdownMenu.jsx +0 -313
  272. package/core/FeatureFooter/component.css +0 -13
  273. package/core/FeatureFooter/component.js +0 -1
  274. package/core/FeaturedLink.jsx +0 -241
  275. package/core/Flash.jsx +0 -622
  276. package/core/Footer.jsx +0 -587
  277. package/core/Icon.jsx +0 -152
  278. package/core/Loader.jsx +0 -154
  279. package/core/Logo.jsx +0 -147
  280. package/core/Meganav.jsx +0 -4151
  281. package/core/MeganavBlogPostsList/component.js.LICENSE.txt +0 -1
  282. package/core/MeganavBlogPostsList.jsx +0 -296
  283. package/core/MeganavContentCompany.jsx +0 -1058
  284. package/core/MeganavContentDevelopers.jsx +0 -334
  285. package/core/MeganavContentProducts.jsx +0 -373
  286. package/core/MeganavContentUseCases.jsx +0 -341
  287. package/core/MeganavControl.jsx +0 -199
  288. package/core/MeganavControlMobileDropdown.jsx +0 -197
  289. package/core/MeganavControlMobilePanelClose.jsx +0 -198
  290. package/core/MeganavControlMobilePanelOpen.jsx +0 -193
  291. package/core/MeganavItemsDesktop.jsx +0 -279
  292. package/core/MeganavItemsMobile.jsx +0 -689
  293. package/core/MeganavItemsSignedIn.jsx +0 -643
  294. package/core/MeganavSearch.jsx +0 -434
  295. package/core/MeganavSearchAutocomplete.jsx +0 -117
  296. package/core/MeganavSearchPanel.jsx +0 -386
  297. package/core/MeganavSearchSuggestions.jsx +0 -299
  298. package/core/Notice.jsx +0 -914
  299. package/core/Showcase/component.css +0 -31
  300. package/core/Showcase/component.js +0 -1
  301. package/core/Showcase.jsx +0 -17
  302. package/core/SignOutLink.jsx +0 -157
  303. package/core/Slider.jsx +0 -400
  304. package/core/Uptime/component.css +0 -128
  305. package/core/Uptime/component.js +0 -1
  306. package/core/Uptime.jsx +0 -895
  307. package/core/scripts.js.LICENSE.txt +0 -1
  308. package/preview/tmp/.keep +0 -0
  309. package/preview/tmp/pids/.keep +0 -0
  310. package/reset/.gitignore +0 -1
  311. package/src/core/Code/component.html.erb +0 -3
  312. package/src/core/Code/component.jsx +0 -31
  313. package/src/core/Code/component.rb +0 -12
  314. package/src/core/CompanyAutocomplete/component.css +0 -45
  315. package/src/core/CompanyAutocomplete/component.js +0 -204
  316. package/src/core/ContactFooter/component.html.erb +0 -32
  317. package/src/core/ContactFooter/component.jsx +0 -66
  318. package/src/core/ContactFooter/component.rb +0 -13
  319. package/src/core/CustomerLogos/component.html.erb +0 -9
  320. package/src/core/CustomerLogos/component.jsx +0 -28
  321. package/src/core/CustomerLogos/component.rb +0 -14
  322. package/src/core/FeatureFooter/component.css +0 -12
  323. package/src/core/FeatureFooter/component.html.erb +0 -54
  324. package/src/core/FeatureFooter/component.js +0 -7
  325. package/src/core/FeatureFooter/component.rb +0 -30
  326. package/src/core/FeaturedLink/component.html.erb +0 -15
  327. package/src/core/FeaturedLink/component.rb +0 -21
  328. package/src/core/Footer/component.html.erb +0 -256
  329. package/src/core/Footer/component.rb +0 -14
  330. package/src/core/Icon/component.html.erb +0 -3
  331. package/src/core/Icon/component.jsx +0 -19
  332. package/src/core/Icon/component.rb +0 -25
  333. package/src/core/Loader/component.html.erb +0 -18
  334. package/src/core/Loader/component.rb +0 -19
  335. package/src/core/Logo/component.html.erb +0 -3
  336. package/src/core/Logo/component.jsx +0 -20
  337. package/src/core/Logo/component.rb +0 -31
  338. package/src/core/Meganav/component.html.erb +0 -31
  339. package/src/core/Meganav/component.jsx +0 -123
  340. package/src/core/Meganav/component.rb +0 -60
  341. package/src/core/MeganavBlogPostsList/component.html.erb +0 -5
  342. package/src/core/MeganavBlogPostsList/component.rb +0 -13
  343. package/src/core/MeganavContentCompany/component.html.erb +0 -90
  344. package/src/core/MeganavContentCompany/component.rb +0 -14
  345. package/src/core/MeganavContentDevelopers/component.html.erb +0 -129
  346. package/src/core/MeganavContentDevelopers/component.rb +0 -13
  347. package/src/core/MeganavContentProducts/component.html.erb +0 -83
  348. package/src/core/MeganavContentProducts/component.jsx +0 -105
  349. package/src/core/MeganavContentProducts/component.rb +0 -14
  350. package/src/core/MeganavContentUseCases/component.html.erb +0 -135
  351. package/src/core/MeganavContentUseCases/component.jsx +0 -147
  352. package/src/core/MeganavContentUseCases/component.rb +0 -13
  353. package/src/core/MeganavControl/component.html.erb +0 -6
  354. package/src/core/MeganavControl/component.rb +0 -20
  355. package/src/core/MeganavControlMobileDropdown/component.html.erb +0 -7
  356. package/src/core/MeganavControlMobileDropdown/component.rb +0 -11
  357. package/src/core/MeganavControlMobilePanelClose/component.html.erb +0 -12
  358. package/src/core/MeganavControlMobilePanelClose/component.rb +0 -12
  359. package/src/core/MeganavControlMobilePanelOpen/component.html.erb +0 -7
  360. package/src/core/MeganavControlMobilePanelOpen/component.jsx +0 -25
  361. package/src/core/MeganavControlMobilePanelOpen/component.rb +0 -9
  362. package/src/core/MeganavItemsDesktop/component.html.erb +0 -17
  363. package/src/core/MeganavItemsDesktop/component.jsx +0 -49
  364. package/src/core/MeganavItemsDesktop/component.rb +0 -23
  365. package/src/core/MeganavItemsMobile/component.html.erb +0 -75
  366. package/src/core/MeganavItemsMobile/component.jsx +0 -137
  367. package/src/core/MeganavItemsMobile/component.rb +0 -21
  368. package/src/core/MeganavItemsSignedIn/component.html.erb +0 -53
  369. package/src/core/MeganavItemsSignedIn/component.rb +0 -33
  370. package/src/core/MeganavSearch/component.html.erb +0 -15
  371. package/src/core/MeganavSearch/component.jsx +0 -33
  372. package/src/core/MeganavSearch/component.rb +0 -13
  373. package/src/core/MeganavSearchAutocomplete/component.html.erb +0 -6
  374. package/src/core/MeganavSearchAutocomplete/component.jsx +0 -14
  375. package/src/core/MeganavSearchAutocomplete/component.rb +0 -6
  376. package/src/core/MeganavSearchPanel/component.html.erb +0 -22
  377. package/src/core/MeganavSearchPanel/component.jsx +0 -39
  378. package/src/core/MeganavSearchPanel/component.rb +0 -13
  379. package/src/core/MeganavSearchSuggestions/component.html.erb +0 -22
  380. package/src/core/MeganavSearchSuggestions/component.jsx +0 -49
  381. package/src/core/MeganavSearchSuggestions/component.rb +0 -18
  382. package/src/core/Notice/component.html.erb +0 -16
  383. package/src/core/Notice/component.jsx +0 -71
  384. package/src/core/Notice/component.rb +0 -29
  385. package/src/core/Showcase/component.css +0 -30
  386. package/src/core/Showcase/component.html.erb +0 -76
  387. package/src/core/Showcase/component.js +0 -180
  388. package/src/core/Showcase/component.jsx +0 -0
  389. package/src/core/Showcase/component.rb +0 -190
  390. package/src/core/SignOutLink/component.html.erb +0 -1
  391. package/src/core/SignOutLink/component.jsx +0 -32
  392. package/src/core/SignOutLink/component.rb +0 -17
  393. package/src/core/Slider/component.html.erb +0 -28
  394. package/src/core/Slider/component.jsx +0 -86
  395. package/src/core/Slider/component.rb +0 -38
  396. package/src/core/Uptime/component.css +0 -127
  397. package/src/core/Uptime/component.html.erb +0 -0
  398. package/src/core/Uptime/component.js +0 -1
  399. package/src/core/Uptime/component.jsx +0 -183
  400. package/src/core/Uptime/component.rb +0 -7
  401. package/src/core/core.rb +0 -81
  402. /package/{preview/log/.keep → src/core/Accordion/component.js} +0 -0
@@ -1,147 +0,0 @@
1
- import React from "react";
2
- import T from "prop-types";
3
-
4
- import Icon from "../Icon/component.jsx";
5
-
6
- const MeganavContentUseCases = ({ absUrl }) => (
7
- <div className="flex max-w-screen-xl mx-auto">
8
- <div className="ui-meganav-content-spacer bg-extra-light-grey"></div>
9
- <section className="grid grid-cols-12 ui-grid-gap-x w-full">
10
- <div className="col-span-full md:col-span-4 py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24 bg-extra-light-grey">
11
- <h3 className="ui-meganav-overline" id="meganav-use-cases-panel-use-cases">
12
- Solutions
13
- </h3>
14
- <ul aria-labelledby="meganav-use-cases-panel-industry-use-cases">
15
- <li>
16
- <a href={absUrl("/solutions/chat")} className="ui-meganav-media-with-image group">
17
- <Icon name="icon-display-chat-stack-col" size="2.5rem" />
18
- <div className="flex flex-col justify-center">
19
- <p className="ui-meganav-media-heading">Live Chat</p>
20
- <p className="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale.</p>
21
- </div>
22
- </a>
23
- </li>
24
- <li>
25
- <a href={absUrl("/solutions/multiplayer-collaboration")} className="ui-meganav-media-with-image group">
26
- <Icon name="icon-multi-user-spaces-col" size="2.5rem" />
27
- <div className="flex flex-col justify-center">
28
- <p className="ui-meganav-media-heading">Multiplayer Collaboration</p>
29
- <p className="ui-meganav-media-copy">Bring collaborative multiplayer experiences to your users.</p>
30
- </div>
31
- </a>
32
- </li>
33
- <li>
34
- <a href={absUrl("/solutions/data-broadcast")} className="ui-meganav-media-with-image group">
35
- <Icon name="icon-display-data-broadcast-col" size="2.5rem" />
36
- <div className="flex flex-col justify-center">
37
- <p className="ui-meganav-media-heading">Data Broadcast</p>
38
- <p className="ui-meganav-media-copy">Broadcast realtime event data to millions of devices around the globe.</p>
39
- </div>
40
- </a>
41
- </li>
42
- <li>
43
- <a href={absUrl("/solutions/data-synchronization")} className="ui-meganav-media-with-image group">
44
- <Icon name="icon-display-data-synchronization-col" size="2.5rem" />
45
- <div className="flex flex-col justify-center">
46
- <p className="ui-meganav-media-heading">Data Synchronization</p>
47
- <p className="ui-meganav-media-copy">Keep your frontend and backend in realtime sync, at global scale.</p>
48
- </div>
49
- </a>
50
- </li>
51
- <li>
52
- <a href={absUrl("/push-notifications")} className="ui-meganav-media-with-image group">
53
- <Icon name="icon-display-push-notifications-col" size="2.5rem" />
54
- <div className="flex flex-col justify-center">
55
- <p className="ui-meganav-media-heading">Notifications</p>
56
- <p className="ui-meganav-media-copy">Deliver cross-platform push notifications with a simple unified API.</p>
57
- </div>
58
- </a>
59
- </li>
60
- <li>
61
- <a href={absUrl("/solutions/asset-tracking")} className="ui-meganav-media-with-image group">
62
- <Icon name="icon-display-asset-tracking-col" size="2.5rem" />
63
- <div className="flex flex-col justify-center">
64
- <p className="ui-meganav-media-heading">Asset Tracking (Beta)</p>
65
- <p className="ui-meganav-media-copy">Track assets in realtime with a solution optimised for last mile logistics.</p>
66
- </div>
67
- </a>
68
- </li>
69
- </ul>
70
- </div>
71
-
72
- <div className="col-span-full md:col-span-4 pt-24 pb-0 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white">
73
- <h3 className="ui-meganav-overline" id="meganav-use-cases-panel-industry">
74
- Industry
75
- </h3>
76
- <ul aria-labelledby="meganav-use-cases-panel-industry">
77
- <li>
78
- <a href={absUrl("/solutions/edtech")} className="ui-meganav-media group">
79
- <p className="ui-meganav-media-heading">EdTech</p>
80
- <p className="ui-meganav-media-copy">Deliver interactive learning experiences.</p>
81
- </a>
82
- </li>
83
- <li>
84
- <a href={absUrl("/solutions/fintech")} className="ui-meganav-media group">
85
- <p className="ui-meganav-media-heading">FinTech</p>
86
- <p className="ui-meganav-media-copy">Deliver personalised financial data in realtime.</p>
87
- </a>
88
- </li>
89
- <li>
90
- <a href={absUrl("/solutions/automotive-logistics-and-mobility")} className="ui-meganav-media group">
91
- <p className="ui-meganav-media-heading">Automotive, Logistics, & Mobility</p>
92
- <p className="ui-meganav-media-copy">Power diagnostics, order tracking and more.</p>
93
- </a>
94
- </li>
95
- <li>
96
- <a href={absUrl("/solutions/b2b-platforms")} className="ui-meganav-media group">
97
- <p className="ui-meganav-media-heading">B2B Platforms</p>
98
- <p className="ui-meganav-media-copy">Empower your customers with realtime solutions.</p>
99
- </a>
100
- </li>
101
- <li>
102
- <a href={absUrl("/solutions/healthcare")} className="ui-meganav-media group">
103
- <p className="ui-meganav-media-heading">Healthcare (HIPAA)</p>
104
- <p className="ui-meganav-media-copy">Provide trustworthy, HIPAA-compliant realtime apps.</p>
105
- </a>
106
- </li>
107
- </ul>
108
- </div>
109
-
110
- <div className="col-span-full md:col-span-4 pt-0 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white">
111
- <ul aria-labelledby="meganav-use-cases-panel-solutions" className="mt-0 md:mt-40">
112
- <li>
113
- <a href={absUrl("/solutions/ecommerce-and-retail")} className="ui-meganav-media group">
114
- <p className="ui-meganav-media-heading">eCommerce & Retail</p>
115
- <p className="ui-meganav-media-copy">Enrich customer experiences with realtime updates.</p>
116
- </a>
117
- </li>
118
- <li>
119
- <a href={absUrl("/solutions/sports-and-media")} className="ui-meganav-media group">
120
- <p className="ui-meganav-media-heading">Sports, Media & Audience Engagement</p>
121
- <p className="ui-meganav-media-copy">Deliver engaging global realtime experiences.</p>
122
- </a>
123
- </li>
124
- <li>
125
- <a href={absUrl("/solutions/gaming")} className="ui-meganav-media group">
126
- <p className="ui-meganav-media-heading">Gaming</p>
127
- <p className="ui-meganav-media-copy">Power ultra fast and reliable gaming experiences.</p>
128
- </a>
129
- </li>
130
- <li>
131
- <a href={absUrl("/solutions/iot-and-connected-devices")} className="ui-meganav-media group">
132
- <p className="ui-meganav-media-heading">IoT & Connected Devices</p>
133
- <p className="ui-meganav-media-copy">Monitor and control global IoT deployments in realtime.</p>
134
- </a>
135
- </li>
136
- </ul>
137
- </div>
138
- </section>
139
- <div className="ui-meganav-content-spacer"></div>
140
- </div>
141
- );
142
-
143
- MeganavContentUseCases.propTypes = {
144
- absUrl: T.func,
145
- };
146
-
147
- export default MeganavContentUseCases;
@@ -1,13 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class MeganavContentUseCases < ViewComponent::Base
4
- include Util
5
-
6
- attr_reader :url_base
7
-
8
- def initialize(url_base:)
9
- @url_base = url_base
10
- end
11
- end
12
- end
13
- end
@@ -1,6 +0,0 @@
1
- <%= button_tag(type: "button",
2
- class: ["ui-meganav-link", "h-64", "flex", "items-center", "group", theme(:text_color), additional_css],
3
- data: { id: "meganav-control" },
4
- aria: { expanded: false, controls: aria_controls, label: "Show #{aria_label} panel" }) do -%>
5
- <%= content -%><%= render(AblyUi::Core::Icon.new(name: "icon-gui-disclosure-arrow", size: "1.5rem", color: "text-cool-black", additional_css: "transform rotate-90 group-hover:text-gui-hover group-focus:text-gui-focus")) %>
6
- <% end %>
@@ -1,20 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class MeganavControl < ViewComponent::Base
4
- include AblyUi::Core::MeganavConfig
5
- attr_reader :aria_controls, :aria_label, :additional_css
6
-
7
- def initialize(
8
- aria_controls:,
9
- aria_label:,
10
- theme_name:,
11
- additional_css: ''
12
- )
13
- @aria_controls = aria_controls
14
- @aria_label = aria_label
15
- @additional_css = additional_css
16
- theme_setup(theme_name)
17
- end
18
- end
19
- end
20
- end
@@ -1,7 +0,0 @@
1
- <%= button_tag(type: "button",
2
- class: "block ml-24 mr-0 px-0 py-16 hover:text-gui-hover focus:text-gui-focus focus:outline-none",
3
- data: { id: "meganav-control-mobile-dropdown" },
4
- aria: { expanded: false, controls: "meganav-mobile-dropdown" }) do %>
5
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-burger-menu", size: "1.5rem", color: theme(:mobile_menu_color), additional_css: "transition-colors", data: { id: "meganav-control-mobile-dropdown-menu" })) %>
6
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-close", size: "1.5rem", color: theme(:mobile_menu_color), additional_css: "transition-colors hidden", data: { id: "meganav-control-mobile-dropdown-close" })) %>
7
- <% end %>
@@ -1,11 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class MeganavControlMobileDropdown < ViewComponent::Base
4
- include AblyUi::Core::MeganavConfig
5
-
6
- def initialize(theme_name:)
7
- theme_setup(theme_name)
8
- end
9
- end
10
- end
11
- end
@@ -1,12 +0,0 @@
1
- <div class="mx-24 md:mx-32">
2
- <%= button_tag(type: "button",
3
- class: "ui-meganav-mobile-link text-gui-default mb-16",
4
- data: { id: "meganav-control-mobile-panel-close" },
5
- aria: { expanded: false, controls: aria_controls, label: "Hide panel" }) do -%>
6
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-disclosure-arrow", size: "1.5rem", color: "text-cool-black", additional_css: "relative -top-1 transform rotate-180")) %>
7
- Back
8
- <% end %>
9
- <% if display_hr %>
10
- <hr class="ui-meganav-hr" />
11
- <% end %>
12
- </div>
@@ -1,12 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class MeganavControlMobilePanelClose < ViewComponent::Base
4
- attr_reader :aria_controls, :display_hr
5
-
6
- def initialize(aria_controls:, display_hr: true)
7
- @aria_controls = aria_controls
8
- @display_hr = display_hr
9
- end
10
- end
11
- end
12
- end
@@ -1,7 +0,0 @@
1
- <%= button_tag(type: "button",
2
- class: "ui-meganav-mobile-link",
3
- data: { id: "meganav-control-mobile-panel-open" },
4
- aria: { expanded: false, controls: @aria_controls, label: "Show #{content}" }) do %>
5
- <%= content %>
6
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-disclosure-arrow", size: "1.5rem", color: "text-cool-black", additional_css: "relative -top-1 ml-auto float-right")) %>
7
- <% end %>
@@ -1,25 +0,0 @@
1
- import React from "react";
2
- import T from "prop-types";
3
-
4
- import Icon from "../Icon/component.jsx";
5
-
6
- const MeganavControlMobilePanelOpen = ({ ariaControls, children }) => (
7
- <button
8
- type="button"
9
- className="ui-meganav-mobile-link"
10
- data-id="meganav-control-mobile-panel-open"
11
- aria-expanded="false"
12
- aria-controls={ariaControls}
13
- aria-label={`Show ${children}`}
14
- >
15
- {children}
16
- <Icon name="icon-gui-disclosure-arrow" color="text-cool-black" size="1.5rem" additionalCSS="relative -top-1 ml-auto float-right" />
17
- </button>
18
- );
19
-
20
- MeganavControlMobilePanelOpen.propTypes = {
21
- ariaControls: T.string,
22
- children: T.node,
23
- };
24
-
25
- export default MeganavControlMobilePanelOpen;
@@ -1,9 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class MeganavControlMobilePanelOpen < ViewComponent::Base
4
- def initialize(aria_controls:)
5
- @aria_controls = aria_controls
6
- end
7
- end
8
- end
9
- end
@@ -1,17 +0,0 @@
1
- <ul class="hidden md:flex" data-id="meganav-items-desktop">
2
- <% panels.each do |panel| %>
3
- <li class="ui-meganav-item">
4
- <%= render(AblyUi::Core::MeganavControl.new(aria_controls: panel[:id], aria_label: panel[:label], theme_name: @theme_name)) do %>
5
- <span class="hidden lg:inline"><%= panel[:label] %></span>
6
- <span class="lg:hidden"><%= panel[:short_label] %></span>
7
- <% end %>
8
-
9
- <%= content_tag :div, class: "ui-meganav-panel invisible #{bg_css(panel[:id])}", data: { id: "meganav-panel" }, id: panel[:id] do %>
10
- <%= render("AblyUi::Core::#{panel[:component]}".constantize.new(url_base: url_base)) %>
11
- <% end %>
12
- </li>
13
- <% end %>
14
- <li>
15
- <%= link_to "Pricing", abs_url("/pricing"), data: { id: "meganav-link" }, class: ["ui-meganav-link", "h-64", "items-center", "flex", theme(:text_color)] %>
16
- </li>
17
- </ul>
@@ -1,49 +0,0 @@
1
- import React from "react";
2
- import T from "prop-types";
3
-
4
- import MeganavData from "../Meganav/component.json";
5
- import MeganavControl from "../MeganavControl/component.jsx";
6
-
7
- const MeganavDesktopItems = ({ panels, paths, theme, absUrl }) => (
8
- <ul className="hidden md:flex" data-id="meganav-items-desktop">
9
- {MeganavData.panels.map((panel) => {
10
- const PanelComponent = panels[panel.component];
11
- const bgCSS = ["products-panel", "use-cases-panel"].includes(panel.id) ? "ui-meganav-panel-split-bg" : "";
12
-
13
- return (
14
- <li className="ui-meganav-item" key={panel.id}>
15
- <MeganavControl theme={theme} ariaControls={panel.id} ariaLabel={panel.label}>
16
- <span className="hidden lg:inline">{panel.label}</span>
17
- <span className="lg:hidden">{panel.shortLabel}</span>
18
- </MeganavControl>
19
-
20
- <div className={`ui-meganav-panel invisible ${bgCSS}`} id={panel.id} data-id="meganav-panel">
21
- <PanelComponent paths={paths} absUrl={absUrl} />
22
- </div>
23
- </li>
24
- );
25
- })}
26
-
27
- <li className="ui-meganav-item">
28
- <a href={absUrl("/pricing")} data-id="meganav-link" className={`ui-meganav-link h-64 items-center flex ${theme.textColor}`}>
29
- Pricing
30
- </a>
31
- </li>
32
- </ul>
33
- );
34
-
35
- MeganavDesktopItems.propTypes = {
36
- panels: T.object,
37
- paths: T.shape({
38
- logo: T.string,
39
- iconSprites: T.string,
40
- ablyStack: T.string,
41
- blogThumb1: T.string,
42
- blogThumb2: T.string,
43
- blogThumb3: T.string,
44
- }),
45
- theme: T.object,
46
- absUrl: T.func,
47
- };
48
-
49
- export default React.memo(MeganavDesktopItems);
@@ -1,23 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class MeganavItemsDesktop < ViewComponent::Base
4
- include MeganavConfig
5
- include Util
6
-
7
- attr_reader :url_base
8
-
9
- def initialize(theme_name:, url_base:)
10
- @theme_name = theme_name
11
- @url_base = url_base
12
- end
13
-
14
- def bg_css(panel_id)
15
- if %w[products-panel use-cases-panel].include?(panel_id)
16
- 'ui-meganav-panel-split-bg'
17
- else
18
- ''
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,75 +0,0 @@
1
- <ul class="flex md:hidden" data-id="meganav-items-mobile">
2
- <li>
3
- <% if @session_data[:signedIn] && @session_data[:logOut] %>
4
- <%= render(AblyUi::Core::SignOutLink.new(session_data: @session_data, classes: ["ui-meganav-link", theme(:text_color)], url_base: url_base)) %>
5
- <% else %>
6
- <%= link_to "Login", abs_url(login_link), data: { id: "meganav-link" }, class: ["ui-meganav-link", theme(:text_color)] %>
7
- <% end %>
8
- </li>
9
-
10
- <li class="ui-meganav-item">
11
- <%= render(AblyUi::Core::MeganavControlMobileDropdown.new(theme_name: @theme_name)) %>
12
-
13
- <div class="ui-meganav-mobile-dropdown invisible" id="meganav-mobile-dropdown" data-id="meganav-mobile-dropdown">
14
- <div class="pt-24 pb-16 ui-grid-px bg-white">
15
- <%= tag.form class: "mb-16", action: abs_url("/search"), method: "get" do %>
16
- <div class="relative w-full">
17
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-search", size: "1.5rem", color: "text-cool-black", additional_css: "absolute top-12 left-16 hover:text-gui-hover")) %>
18
- <button
19
- type="button"
20
- class="absolute top-12 right-16 p-0 focus:outline-gui-focus m-0 md:hidden invisible"
21
- data-id="meganav-search-input-clear"
22
- >
23
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-cross-circled-fill", size: "1.5rem", color: "text-dark-grey")) %>
24
- </button>
25
- <input
26
- type="search"
27
- name="q"
28
- class="ui-input px-48 h-48"
29
- style={{ maxWidth: "none" }}
30
- placeholder="Search"
31
- autocomplete="off"
32
- data-id="meganav-mobile-search-input"
33
- />
34
-
35
- <%= render(AblyUi::Core::MeganavSearchAutocomplete.new) %>
36
- </div>
37
- <% end %>
38
-
39
- <div class="max-h-0 overflow-hidden transition-all" data-id="meganav-mobile-search-suggestions">
40
- <%= render(AblyUi::Core::MeganavSearchSuggestions.new(url_base: url_base, display_support_link: false)) %>
41
- </div>
42
-
43
- <ul class="mb-16" data-id="meganav-mobile-panel-controls">
44
- <% panels.each do |panel| %>
45
- <li class="ui-meganav-mobile-item">
46
- <%= render(AblyUi::Core::MeganavControlMobilePanelOpen.new(aria_controls: "#{panel[:id]}-mobile")) do %>
47
- <%= panel[:label] %>
48
- <% end %>
49
-
50
- <%= content_tag(:div, class: "ui-meganav-panel-mobile hidden", id: "#{panel[:id]}-mobile", data: { scroll_lock_scrollable: true }) do %>
51
- <%= render(AblyUi::Core::MeganavControlMobilePanelClose.new(aria_controls: "#{panel[:id]}-mobile", display_hr: display_hr(panel[:id]))) %>
52
- <%= render("AblyUi::Core::#{panel[:component]}".constantize.new(url_base: url_base)) %>
53
- <% end %>
54
- </li>
55
- <% end %>
56
- <li>
57
- <%= link_to "Pricing", abs_url("/pricing"), class: "ui-meganav-mobile-link" %>
58
- </li>
59
- </ul>
60
-
61
- <hr class="ui-meganav-hr mb-20" />
62
-
63
- <div class="flex justify-between items-center mb-16">
64
- <%= link_to "Contact us", abs_url("/contact"), class: "text-menu2 font-medium block ml-0 mr-8 lg:mx-12 p-0 hover:text-gui-hover focus:text-gui-focus focus:outline-none" %>
65
-
66
- <% if @session_data[:signedIn] && @session_data[:account] %>
67
- <%= link_to "Dashboard", abs_url(@session_data[:account][:links][:dashboard][:href]), class: "ui-btn-secondary" %>
68
- <% else %>
69
- <%= link_to "Sign up free", abs_url("/sign-up"), class: "ui-btn" %>
70
- <% end %>
71
- </div>
72
- </div>
73
- </div>
74
- </li>
75
- </ul>
@@ -1,137 +0,0 @@
1
- import React from "react";
2
- import T from "prop-types";
3
-
4
- import SignOutLink from "../SignOutLink/component.jsx";
5
- import MeganavSearchSuggestions from "../MeganavSearchSuggestions/component.jsx";
6
- import Icon from "../Icon/component.jsx";
7
-
8
- import MeganavData from "../Meganav/component.json";
9
- import MeganavControlMobileDropdown from "../MeganavControlMobileDropdown/component.jsx";
10
- import MeganavControlMobilePanelClose from "../MeganavControlMobilePanelClose/component.jsx";
11
- import MeganavControlMobilePanelOpen from "../MeganavControlMobilePanelOpen/component.jsx";
12
- import MeganavSearchAutocomplete from "../MeganavSearchAutocomplete/component.jsx";
13
-
14
- const MeganavItemsMobile = ({ panels, paths, sessionState, theme, loginLink, absUrl }) => {
15
- const classNames = `ui-meganav-link ${theme.textColor}`;
16
-
17
- return (
18
- <ul className="flex md:hidden" data-id="meganav-items-mobile">
19
- <li>
20
- {sessionState.signedIn && sessionState.logOut ? (
21
- <SignOutLink absUrl={absUrl} {...sessionState.logOut}>
22
- {({ text, href, onClick }) => (
23
- <a onClick={onClick} href={absUrl(href)} className={classNames} data-id="meganav-link">
24
- {text}
25
- </a>
26
- )}
27
- </SignOutLink>
28
- ) : (
29
- <a href={absUrl(loginLink)} className={classNames} data-id="meganav-link">
30
- Login
31
- </a>
32
- )}
33
- </li>
34
-
35
- <li className="ui-meganav-item">
36
- <MeganavControlMobileDropdown theme={theme} />
37
-
38
- <div className="ui-meganav-mobile-dropdown invisible" id="meganav-mobile-dropdown" data-id="meganav-mobile-dropdown">
39
- <div className="pt-24 pb-16 ui-grid-px bg-white">
40
- <form className="mb-16" action={absUrl("/search")} method="get">
41
- <div className="relative w-full">
42
- <Icon name="icon-gui-search" color="text-cool-black" size="1.5rem" additionalCSS="absolute top-12 left-16 hover:text-gui-hover" />
43
- <button
44
- type="button"
45
- className="absolute top-12 right-16 p-0 focus:outline-gui-focus m-0 md:hidden invisible"
46
- data-id="meganav-search-input-clear"
47
- >
48
- <Icon name="icon-gui-cross-circled-fill" color="text-dark-grey" size="1.5rem" additionalCSS="" />
49
- </button>
50
- <input
51
- type="search"
52
- name="q"
53
- className="ui-input px-48 h-48"
54
- style={{ maxWidth: "none" }}
55
- placeholder="Search"
56
- autoComplete="off"
57
- data-id="meganav-mobile-search-input"
58
- />
59
-
60
- <MeganavSearchAutocomplete />
61
- </div>
62
- </form>
63
-
64
- <div className="max-h-0 overflow-hidden transition-all" data-id="meganav-mobile-search-suggestions">
65
- <MeganavSearchSuggestions absUrl={absUrl} displaySupportLink={false} />
66
- </div>
67
-
68
- <ul className="mb-16" data-id="meganav-mobile-panel-controls">
69
- {MeganavData.panels.map((panel) => {
70
- const PanelComponent = panels[panel.component];
71
- const displayHr = ["company-panel", "developers-panel"].includes(panel.id);
72
-
73
- return (
74
- <li className="ui-meganav-mobile-item" key={`${panel.id}-mobile`}>
75
- <MeganavControlMobilePanelOpen ariaControls={`${panel.id}-mobile`}>{panel.label}</MeganavControlMobilePanelOpen>
76
-
77
- <div className="ui-meganav-panel-mobile hidden" id={`${panel.id}-mobile`} data-scroll-lock-scrollable>
78
- <MeganavControlMobilePanelClose ariaControls={`${panel.id}-mobile`} displayHr={displayHr} />
79
- <PanelComponent paths={paths} absUrl={absUrl} />
80
- </div>
81
- </li>
82
- );
83
- })}
84
- <li>
85
- <a href={absUrl("/pricing")} className="ui-meganav-mobile-link">
86
- Pricing
87
- </a>
88
- </li>
89
- </ul>
90
-
91
- <hr className="ui-meganav-hr mb-20" />
92
-
93
- <div className="flex justify-between items-center mb-16">
94
- <a
95
- href={absUrl("/contact")}
96
- className="text-menu2 font-medium block ml-0 mr-8 lg:mx-12 p-0 hover:text-gui-hover focus:text-gui-focus focus:outline-none"
97
- >
98
- Contact us
99
- </a>
100
- {sessionState.signedIn && sessionState.account ? (
101
- <a href={absUrl(sessionState.account.links.dashboard.href)} className="ui-btn-secondary">
102
- Dashboard
103
- </a>
104
- ) : (
105
- <a href={absUrl("/sign-up")} className="ui-btn">
106
- Sign up free
107
- </a>
108
- )}
109
- </div>
110
- </div>
111
- </div>
112
- </li>
113
- </ul>
114
- );
115
- };
116
-
117
- MeganavItemsMobile.propTypes = {
118
- panels: T.object,
119
- paths: T.shape({
120
- iconSprites: T.string,
121
- }),
122
- sessionState: T.object,
123
- theme: T.object,
124
- loginLink: T.string,
125
- absUrl: T.func,
126
- };
127
-
128
- export default React.memo(MeganavItemsMobile, (oldState, newState) => {
129
- const { pathsOld, themeOld } = oldState;
130
- const { pathsNew, themeNew } = newState;
131
-
132
- if (pathsOld === pathsNew && themeOld === themeNew && Object.keys(newState.sessionState || {}).length === 0) {
133
- return true;
134
- } else {
135
- return false;
136
- }
137
- });
@@ -1,21 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class MeganavItemsMobile < ViewComponent::Base
4
- include MeganavConfig
5
- include Util
6
-
7
- attr_reader :options, :login_link, :url_base
8
-
9
- def initialize(session_data:, theme_name:, login_link:, url_base:)
10
- @theme_name = theme_name
11
- @session_data = session_data
12
- @login_link = login_link
13
- @url_base = url_base
14
- end
15
-
16
- def display_hr(panel_id)
17
- %w[company-panel developers-panel].include?(panel_id)
18
- end
19
- end
20
- end
21
- end