@ably/ui 14.0.4 → 14.0.6

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 (281) hide show
  1. package/core/Flash.js +1 -1
  2. package/core/styles/forms.css +4 -4
  3. package/core/styles/toggles.css +38 -0
  4. package/core/styles.components.css +1 -0
  5. package/package.json +15 -18
  6. package/tailwind.config.js +3 -0
  7. package/src/core/Accordion/Accordion.stories.tsx +0 -39
  8. package/src/core/Accordion.tsx +0 -149
  9. package/src/core/Code/Code.stories.tsx +0 -71
  10. package/src/core/Code/component.css +0 -1
  11. package/src/core/Code/component.js +0 -27
  12. package/src/core/Code.tsx +0 -44
  13. package/src/core/ConnectStateWrapper.tsx +0 -43
  14. package/src/core/ContactFooter/ContactFooter.stories.tsx +0 -11
  15. package/src/core/ContactFooter/component.css +0 -11
  16. package/src/core/ContactFooter/component.js +0 -2
  17. package/src/core/ContactFooter.tsx +0 -91
  18. package/src/core/CookieMessage/CookieMessage.stories.tsx +0 -12
  19. package/src/core/CookieMessage/component.css +0 -15
  20. package/src/core/CookieMessage.tsx +0 -52
  21. package/src/core/CustomerLogos/CustomerLogos.stories.tsx +0 -43
  22. package/src/core/CustomerLogos.tsx +0 -35
  23. package/src/core/DropdownMenu/DropdownMenu.stories.tsx +0 -48
  24. package/src/core/DropdownMenu.tsx +0 -140
  25. package/src/core/Expander/Expander.stories.tsx +0 -132
  26. package/src/core/Expander.tsx +0 -63
  27. package/src/core/FeaturedLink/FeaturedLink.stories.tsx +0 -43
  28. package/src/core/FeaturedLink.tsx +0 -93
  29. package/src/core/Flash/Flash.stories.tsx +0 -37
  30. package/src/core/Flash/component.css +0 -28
  31. package/src/core/Flash.tsx +0 -233
  32. package/src/core/Footer/Footer.stories.tsx +0 -26
  33. package/src/core/Footer/component.css +0 -33
  34. package/src/core/Footer.tsx +0 -535
  35. package/src/core/Icon/Icon.stories.tsx +0 -151
  36. package/src/core/Icon.tsx +0 -26
  37. package/src/core/Loader/Loader.stories.tsx +0 -21
  38. package/src/core/Loader.tsx +0 -52
  39. package/src/core/Logo/Logo.stories.tsx +0 -12
  40. package/src/core/Logo.tsx +0 -29
  41. package/src/core/Meganav/Meganav.stories.tsx +0 -86
  42. package/src/core/Meganav/component.css +0 -114
  43. package/src/core/Meganav/component.js +0 -150
  44. package/src/core/Meganav/component.json +0 -37
  45. package/src/core/Meganav.tsx +0 -225
  46. package/src/core/MeganavBlogPostsList/component.js +0 -43
  47. package/src/core/MeganavBlogPostsList.tsx +0 -41
  48. package/src/core/MeganavContentCompany.tsx +0 -166
  49. package/src/core/MeganavContentDevelopers.tsx +0 -210
  50. package/src/core/MeganavContentProducts.tsx +0 -163
  51. package/src/core/MeganavContentUseCases.tsx +0 -244
  52. package/src/core/MeganavControl/component.js +0 -117
  53. package/src/core/MeganavControl.tsx +0 -39
  54. package/src/core/MeganavControlMobileDropdown/component.js +0 -46
  55. package/src/core/MeganavControlMobileDropdown.tsx +0 -31
  56. package/src/core/MeganavControlMobilePanelClose/component.js +0 -36
  57. package/src/core/MeganavControlMobilePanelClose.tsx +0 -34
  58. package/src/core/MeganavControlMobilePanelOpen/component.js +0 -59
  59. package/src/core/MeganavControlMobilePanelOpen.tsx +0 -31
  60. package/src/core/MeganavItemsDesktop.tsx +0 -68
  61. package/src/core/MeganavItemsMobile.tsx +0 -197
  62. package/src/core/MeganavItemsSignedIn.tsx +0 -130
  63. package/src/core/MeganavSearch.tsx +0 -36
  64. package/src/core/MeganavSearchAutocomplete/component.js +0 -177
  65. package/src/core/MeganavSearchAutocomplete.tsx +0 -12
  66. package/src/core/MeganavSearchPanel.tsx +0 -52
  67. package/src/core/MeganavSearchSuggestions/component.js +0 -133
  68. package/src/core/MeganavSearchSuggestions.tsx +0 -62
  69. package/src/core/Notice/component.css +0 -7
  70. package/src/core/Notice/component.js +0 -154
  71. package/src/core/Notice.tsx +0 -102
  72. package/src/core/SignOutLink.tsx +0 -51
  73. package/src/core/Slider/Slider.stories.tsx +0 -98
  74. package/src/core/Slider/component.css +0 -40
  75. package/src/core/Slider/component.js +0 -105
  76. package/src/core/Slider.tsx +0 -224
  77. package/src/core/Table/Table.stories.tsx +0 -12
  78. package/src/core/Table/Table.tsx +0 -58
  79. package/src/core/Table/TableCell.tsx +0 -71
  80. package/src/core/Table/TableRow.tsx +0 -25
  81. package/src/core/Table/data.tsx +0 -133
  82. package/src/core/Table.tsx +0 -15
  83. package/src/core/Tooltip/Tooltip.stories.tsx +0 -27
  84. package/src/core/Tooltip.tsx +0 -88
  85. package/src/core/css.js +0 -3
  86. package/src/core/dom-query.js +0 -5
  87. package/src/core/fonts/NEXT-Book-Light-Italic.eot +0 -0
  88. package/src/core/fonts/NEXT-Book-Light-Italic.otf +0 -0
  89. package/src/core/fonts/NEXT-Book-Light-Italic.woff +0 -0
  90. package/src/core/fonts/NEXT-Book-Light-Italic.woff2 +0 -0
  91. package/src/core/fonts/NEXT-Book-Light.eot +0 -0
  92. package/src/core/fonts/NEXT-Book-Light.otf +0 -0
  93. package/src/core/fonts/NEXT-Book-Light.woff +0 -0
  94. package/src/core/fonts/NEXT-Book-Light.woff2 +0 -0
  95. package/src/core/fonts/NEXT-Book-Medium-Italic.eot +0 -0
  96. package/src/core/fonts/NEXT-Book-Medium-Italic.otf +0 -0
  97. package/src/core/fonts/NEXT-Book-Medium-Italic.woff +0 -0
  98. package/src/core/fonts/NEXT-Book-Medium-Italic.woff2 +0 -0
  99. package/src/core/fonts/NEXT-Book-Medium.eot +0 -0
  100. package/src/core/fonts/NEXT-Book-Medium.otf +0 -0
  101. package/src/core/fonts/NEXT-Book-Medium.woff +0 -0
  102. package/src/core/fonts/NEXT-Book-Medium.woff2 +0 -0
  103. package/src/core/fonts/jetBrains-mono.css +0 -3
  104. package/src/core/fonts/manrope.css +0 -3
  105. package/src/core/fonts/next.css +0 -63
  106. package/src/core/fonts/source-code-pro.css +0 -3
  107. package/src/core/hubspot-chat-toggle.js +0 -67
  108. package/src/core/icons/discord.svg +0 -10
  109. package/src/core/icons/facebook.svg +0 -4
  110. package/src/core/icons/github.svg +0 -3
  111. package/src/core/icons/glassdoor.svg +0 -3
  112. package/src/core/icons/google.svg +0 -3
  113. package/src/core/icons/icon-display-48hrs.svg +0 -3
  114. package/src/core/icons/icon-display-about-ably-col.svg +0 -4
  115. package/src/core/icons/icon-display-api-keys.svg +0 -3
  116. package/src/core/icons/icon-display-api.svg +0 -3
  117. package/src/core/icons/icon-display-asset-tracking-col.svg +0 -18
  118. package/src/core/icons/icon-display-browser.svg +0 -10
  119. package/src/core/icons/icon-display-calendar.svg +0 -3
  120. package/src/core/icons/icon-display-call-mobile.svg +0 -3
  121. package/src/core/icons/icon-display-careers-col.svg +0 -9
  122. package/src/core/icons/icon-display-case-studies-col.svg +0 -5
  123. package/src/core/icons/icon-display-chat-col.svg +0 -4
  124. package/src/core/icons/icon-display-chat-stack-col.svg +0 -4
  125. package/src/core/icons/icon-display-chat-stack.svg +0 -4
  126. package/src/core/icons/icon-display-cloud-servers.svg +0 -3
  127. package/src/core/icons/icon-display-compare-tech-col.svg +0 -9
  128. package/src/core/icons/icon-display-customers-col.svg +0 -15
  129. package/src/core/icons/icon-display-data-broadcast-col.svg +0 -26
  130. package/src/core/icons/icon-display-data-synchronization-col.svg +0 -14
  131. package/src/core/icons/icon-display-docs-col.svg +0 -7
  132. package/src/core/icons/icon-display-documentation.svg +0 -3
  133. package/src/core/icons/icon-display-events-col.svg +0 -13
  134. package/src/core/icons/icon-display-examples-col.svg +0 -11
  135. package/src/core/icons/icon-display-gdpr.svg +0 -3
  136. package/src/core/icons/icon-display-general-comms.svg +0 -3
  137. package/src/core/icons/icon-display-hipaa.svg +0 -10
  138. package/src/core/icons/icon-display-integrations-col.svg +0 -8
  139. package/src/core/icons/icon-display-it-support-access.svg +0 -3
  140. package/src/core/icons/icon-display-it-support-helpdesk.svg +0 -3
  141. package/src/core/icons/icon-display-kafka-at-the-edge-col.svg +0 -8
  142. package/src/core/icons/icon-display-laptop.svg +0 -10
  143. package/src/core/icons/icon-display-lightbulb-col.svg +0 -10
  144. package/src/core/icons/icon-display-live-chat.svg +0 -3
  145. package/src/core/icons/icon-display-map-pin.svg +0 -3
  146. package/src/core/icons/icon-display-message.svg +0 -3
  147. package/src/core/icons/icon-display-padlock-closed.svg +0 -3
  148. package/src/core/icons/icon-display-platform.svg +0 -22
  149. package/src/core/icons/icon-display-play.svg +0 -3
  150. package/src/core/icons/icon-display-privacy-shield-framework.svg +0 -7
  151. package/src/core/icons/icon-display-push-notifications-col.svg +0 -6
  152. package/src/core/icons/icon-display-quickstart-guides-col.svg +0 -8
  153. package/src/core/icons/icon-display-resources-col.svg +0 -21
  154. package/src/core/icons/icon-display-sdks-col.svg +0 -11
  155. package/src/core/icons/icon-display-servers.svg +0 -3
  156. package/src/core/icons/icon-display-shopping-cart.svg +0 -10
  157. package/src/core/icons/icon-display-sla.svg +0 -3
  158. package/src/core/icons/icon-display-soc2-type2.svg +0 -3
  159. package/src/core/icons/icon-display-tech-account-comms.svg +0 -3
  160. package/src/core/icons/icon-display-tutorials-demos-col.svg +0 -25
  161. package/src/core/icons/icon-display-virtual-events-col.svg +0 -12
  162. package/src/core/icons/icon-display-virtual-events.svg +0 -12
  163. package/src/core/icons/icon-gui-ably-badge.svg +0 -3
  164. package/src/core/icons/icon-gui-arrow-bidirectional-horizontal.svg +0 -3
  165. package/src/core/icons/icon-gui-arrow-bidirectional-vertical.svg +0 -3
  166. package/src/core/icons/icon-gui-arrow-down.svg +0 -3
  167. package/src/core/icons/icon-gui-arrow-left.svg +0 -3
  168. package/src/core/icons/icon-gui-arrow-right.svg +0 -3
  169. package/src/core/icons/icon-gui-arrow-up.svg +0 -3
  170. package/src/core/icons/icon-gui-burger-menu.svg +0 -5
  171. package/src/core/icons/icon-gui-check-circled-fill-black.svg +0 -4
  172. package/src/core/icons/icon-gui-check-circled-fill.svg +0 -4
  173. package/src/core/icons/icon-gui-check-circled.svg +0 -3
  174. package/src/core/icons/icon-gui-checklist-checked.svg +0 -3
  175. package/src/core/icons/icon-gui-clock.svg +0 -3
  176. package/src/core/icons/icon-gui-close.svg +0 -3
  177. package/src/core/icons/icon-gui-copy.svg +0 -10
  178. package/src/core/icons/icon-gui-cross-circled-fill.svg +0 -4
  179. package/src/core/icons/icon-gui-cross-circled.svg +0 -3
  180. package/src/core/icons/icon-gui-dash-circled.svg +0 -3
  181. package/src/core/icons/icon-gui-disclosure-arrow.svg +0 -3
  182. package/src/core/icons/icon-gui-document-generic.svg +0 -3
  183. package/src/core/icons/icon-gui-enlarge.svg +0 -3
  184. package/src/core/icons/icon-gui-external-link.svg +0 -3
  185. package/src/core/icons/icon-gui-filter-flow-step-1.svg +0 -5
  186. package/src/core/icons/icon-gui-filter-flow-step-2.svg +0 -5
  187. package/src/core/icons/icon-gui-filter-flow-step-3.svg +0 -5
  188. package/src/core/icons/icon-gui-history.svg +0 -3
  189. package/src/core/icons/icon-gui-info.svg +0 -3
  190. package/src/core/icons/icon-gui-link-arrow.svg +0 -3
  191. package/src/core/icons/icon-gui-link.svg +0 -4
  192. package/src/core/icons/icon-gui-live-chat.svg +0 -3
  193. package/src/core/icons/icon-gui-minus.svg +0 -3
  194. package/src/core/icons/icon-gui-partial.svg +0 -4
  195. package/src/core/icons/icon-gui-plus.svg +0 -3
  196. package/src/core/icons/icon-gui-quote-marks-solid.svg +0 -3
  197. package/src/core/icons/icon-gui-refresh.svg +0 -10
  198. package/src/core/icons/icon-gui-resources.svg +0 -3
  199. package/src/core/icons/icon-gui-search.svg +0 -3
  200. package/src/core/icons/icon-gui-tick.svg +0 -3
  201. package/src/core/icons/icon-gui-warning.svg +0 -5
  202. package/src/core/icons/icon-live-updates-results-metrics-col.svg +0 -26
  203. package/src/core/icons/icon-multi-user-spaces-col.svg +0 -13
  204. package/src/core/icons/icon-social-x.svg +0 -3
  205. package/src/core/icons/icon-tech-apachekafka.svg +0 -3
  206. package/src/core/icons/linkedin.svg +0 -3
  207. package/src/core/icons/quote.svg +0 -3
  208. package/src/core/icons/stackoverflow.svg +0 -3
  209. package/src/core/icons/twitter.svg +0 -3
  210. package/src/core/icons/youtube.svg +0 -11
  211. package/src/core/icons.js +0 -6
  212. package/src/core/images/ably-logo.png +0 -0
  213. package/src/core/images/ably-logo.svg +0 -15
  214. package/src/core/images/ably-stack.svg +0 -14
  215. package/src/core/images/best-support-2023.svg +0 -1
  216. package/src/core/images/cust-logo-ao-col-pos.png +0 -0
  217. package/src/core/images/cust-logo-ao-col-pos@2x.png +0 -0
  218. package/src/core/images/cust-logo-ausopen-col-pos.png +0 -0
  219. package/src/core/images/cust-logo-ausopen-col-pos@2x.png +0 -0
  220. package/src/core/images/cust-logo-ausopen-mono-pos.svg +0 -5
  221. package/src/core/images/cust-logo-bloomberg-mono-pos.svg +0 -11
  222. package/src/core/images/cust-logo-hopin-mono-pos.svg +0 -4
  223. package/src/core/images/cust-logo-hubspot-col-pos.png +0 -0
  224. package/src/core/images/cust-logo-hubspot-col-pos@2x.png +0 -0
  225. package/src/core/images/cust-logo-hubspot-mono-pos.svg +0 -4
  226. package/src/core/images/cust-logo-lightspeed-col-pos.png +0 -0
  227. package/src/core/images/cust-logo-lightspeed-col-pos@2x.png +0 -0
  228. package/src/core/images/cust-logo-lightspeed-syst-col-pos.png +0 -0
  229. package/src/core/images/cust-logo-lightspeed-syst-col-pos@2x.png +0 -0
  230. package/src/core/images/cust-logo-mentimeter-mono-pos.svg +0 -17
  231. package/src/core/images/cust-logo-split-col-pos.png +0 -0
  232. package/src/core/images/cust-logo-split-col-pos@2x.png +0 -0
  233. package/src/core/images/cust-logo-split-mono-pos.svg +0 -9
  234. package/src/core/images/cust-logo-toyota-mono-pos.svg +0 -18
  235. package/src/core/images/cust-logo-vitac-col-pos.png +0 -0
  236. package/src/core/images/cust-logo-vitac-col-pos@2x.png +0 -0
  237. package/src/core/images/cust-logo-webflow-col-pos.svg +0 -3
  238. package/src/core/images/cust-photo-hubspot-max-freiert.jpg +0 -0
  239. package/src/core/images/cust-photo-split-pato-echague.jpg +0 -0
  240. package/src/core/images/cust-photo-vitac-joe-antonio.jpg +0 -0
  241. package/src/core/images/fastest-implementation-2023.svg +0 -1
  242. package/src/core/images/flexible-companies.png +0 -0
  243. package/src/core/images/high-performer-2022.png +0 -0
  244. package/src/core/images/high-performer-2023.svg +0 -1
  245. package/src/core/images/highest-user-adoption-2022.png +0 -0
  246. package/src/core/images/highest-user-adoption-2023.svg +0 -1
  247. package/src/core/images/icon-tech-aws.svg +0 -4
  248. package/src/core/images/rocket-list-2021.png +0 -0
  249. package/src/core/images/scale-motif-open-empathetic.svg +0 -1
  250. package/src/core/images/technical-support-01-800x533.jpg +0 -0
  251. package/src/core/images/users-love-us-2022.png +0 -0
  252. package/src/core/load-sprites.js +0 -11
  253. package/src/core/react-renderer.tsx +0 -29
  254. package/src/core/remote-blogs-posts.js +0 -42
  255. package/src/core/remote-data-store.js +0 -34
  256. package/src/core/remote-data-util.js +0 -4
  257. package/src/core/remote-session-data.js +0 -58
  258. package/src/core/scripts.js +0 -10
  259. package/src/core/styles/buttons.css +0 -124
  260. package/src/core/styles/forms.css +0 -64
  261. package/src/core/styles/layout.css +0 -21
  262. package/src/core/styles/properties.css +0 -278
  263. package/src/core/styles/text.css +0 -168
  264. package/src/core/styles.base.css +0 -1
  265. package/src/core/styles.components.css +0 -43
  266. package/src/core/styles.css +0 -2
  267. package/src/core/url-base.js +0 -7
  268. package/src/core/utils/syntax-highlighter-registry.js +0 -63
  269. package/src/core/utils/syntax-highlighter.css +0 -71
  270. package/src/core/utils/syntax-highlighter.js +0 -103
  271. package/src/pages/Buttons.mdx +0 -121
  272. package/src/pages/Chips.mdx +0 -136
  273. package/src/pages/Colour.mdx +0 -23
  274. package/src/pages/Forms.mdx +0 -173
  275. package/src/pages/Layout.mdx +0 -58
  276. package/src/pages/Typography.mdx +0 -206
  277. package/src/pages/utils.ts +0 -70
  278. package/src/reset/scripts.js +0 -1
  279. package/src/reset/styles/normalize.css +0 -353
  280. package/src/reset/styles/reset.css +0 -139
  281. package/src/reset/styles.css +0 -2
@@ -1,225 +0,0 @@
1
- import React, { ReactNode, useEffect, useState } from "react";
2
-
3
- import { connectState } from "./remote-data-store.js";
4
- import { selectSessionData } from "./remote-session-data.js";
5
-
6
- import Logo from "./Logo";
7
- import MeganavData from "./Meganav/component.json";
8
- import MeganavScripts from "./Meganav/component.js";
9
- import MeganavItemsDesktop from "./MeganavItemsDesktop";
10
- import MeganavItemsSignedIn from "./MeganavItemsSignedIn";
11
- import MeganavItemsMobile from "./MeganavItemsMobile";
12
- import Notice from "./Notice";
13
- import _absUrl from "./url-base.js";
14
- import MeganavContentProducts from "./MeganavContentProducts";
15
- import MeganavContentUseCases from "./MeganavContentUseCases";
16
- import MeganavContentCompany from "./MeganavContentCompany";
17
- import MeganavContentDevelopers from "./MeganavContentDevelopers";
18
- import MeganavSearch from "./MeganavSearch";
19
-
20
- export type MeganavTheme = {
21
- backgroundColor?: string;
22
- textColor?: string;
23
- buttonBackgroundColor?: string;
24
- buttonTextColor?: string;
25
- mobileMenuColor?: string;
26
- logoTextColor?: string;
27
- barShadow?: string;
28
- };
29
-
30
- export type AbsUrl = (path: string) => string;
31
-
32
- export type MeganavPanels = {
33
- [index: string]: ({ paths, absUrl }) => ReactNode;
34
- };
35
-
36
- export type MeganavSessionState = {
37
- signedIn: boolean;
38
- logOut: {
39
- token: string;
40
- href: string;
41
- text: string;
42
- };
43
- accountName: string;
44
- preferredEmail: string;
45
- account: {
46
- links: {
47
- dashboard: {
48
- href: string;
49
- };
50
- };
51
- };
52
- mySettings: {
53
- text: string;
54
- href: string;
55
- };
56
- myAccessTokens: {
57
- text: string;
58
- href: string;
59
- };
60
- };
61
-
62
- type SignInProps = {
63
- sessionState: MeganavSessionState;
64
- theme: MeganavTheme;
65
- loginLink: string;
66
- absUrl: AbsUrl;
67
- };
68
-
69
- type MeganavProps = {
70
- paths?: {
71
- logo: string;
72
- iconSprites: string;
73
- ablyStack: string;
74
- blogThumb1: string;
75
- blogThumb2: string;
76
- blogThumb3: string;
77
- };
78
-
79
- themeName: "white" | "black" | "transparentToWhite";
80
- notice?: {
81
- props: {
82
- title: string;
83
- bodyText: string;
84
- buttonLink: string;
85
- buttonLabel: string;
86
- closeBtn: boolean;
87
- };
88
- config: {
89
- cookieId: string;
90
- noticeId: string;
91
- collapse: boolean;
92
- };
93
- };
94
- loginLink?: string;
95
- urlBase?: string;
96
- addSearchApiKey: string;
97
- };
98
-
99
- const SignIn = ({ sessionState, theme, loginLink, absUrl }: SignInProps) => {
100
- return sessionState.signedIn ? (
101
- <MeganavItemsSignedIn
102
- absUrl={absUrl}
103
- sessionState={sessionState}
104
- theme={theme}
105
- />
106
- ) : (
107
- <ul className="hidden md:flex items-center">
108
- <li className="ui-meganav-item">
109
- <a
110
- href={absUrl("/contact")}
111
- className={`ui-meganav-link ${theme.textColor}`}
112
- data-id="meganav-link"
113
- >
114
- Contact us
115
- </a>
116
- </li>
117
- <li className="ui-meganav-item">
118
- <a
119
- href={absUrl(loginLink)}
120
- className={`ui-meganav-link mr-0 ${theme.textColor}`}
121
- data-id="meganav-link"
122
- >
123
- Login
124
- </a>
125
- </li>
126
- <li className="ui-meganav-item">
127
- <MeganavSearch absUrl={absUrl} />
128
- </li>
129
- <li className="ui-meganav-item">
130
- <a
131
- href={absUrl("/sign-up")}
132
- data-id="meganav-sign-up-btn"
133
- className={`ui-btn p-btn-small ${theme.buttonBackgroundColor} ${theme.buttonTextColor}`}
134
- >
135
- Sign up free
136
- </a>
137
- </li>
138
- </ul>
139
- );
140
- };
141
-
142
- const SignInPlaceholder = () => <div />;
143
-
144
- const panels = {
145
- MeganavContentProducts,
146
- MeganavContentUseCases,
147
- MeganavContentCompany,
148
- MeganavContentDevelopers,
149
- };
150
-
151
- const Meganav = ({
152
- paths,
153
- themeName = "white",
154
- notice,
155
- loginLink = "/login",
156
- urlBase,
157
- addSearchApiKey,
158
- }: MeganavProps) => {
159
- const [sessionState, setSessionState] = useState<MeganavSessionState>();
160
-
161
- useEffect(() => {
162
- // Note if state is never updated, sessionState stays null and never removes the placeholder.
163
- // This makes SSR consistent (ie. we always show the placeholder)
164
- connectState(selectSessionData, setSessionState);
165
- }, []);
166
-
167
- useEffect(() => {
168
- const teardown = MeganavScripts({ themeName, addSearchApiKey });
169
- // TODO(jamiehenson): update this when JS assets are converted to TS
170
- // @ts-expect-error: teardown parsed as Element from JS file, cannot be coerced into Function form
171
- return () => teardown();
172
- }, [sessionState]);
173
-
174
- const theme = MeganavData.themes[themeName];
175
- const absUrl = (path) => _absUrl(path, urlBase);
176
-
177
- return (
178
- <nav
179
- className={`ui-meganav-wrapper ${theme.backgroundColor} ${theme.barShadow}`}
180
- data-id="meganav"
181
- aria-label="Main"
182
- >
183
- {notice && <Notice {...notice.props} config={notice.config} />}
184
- <div className="ui-meganav ui-grid-px">
185
- <div className="mr-24">
186
- <Logo
187
- dataId="meganav-logo"
188
- href={urlBase}
189
- logoUrl={paths?.logo ?? ""}
190
- />
191
- </div>
192
-
193
- <MeganavItemsDesktop
194
- panels={panels}
195
- paths={paths}
196
- theme={theme}
197
- absUrl={absUrl}
198
- />
199
-
200
- {/* Because we load the session state through fetch, we display a placeholder until fetch returns */}
201
- {sessionState ? (
202
- <SignIn
203
- sessionState={sessionState}
204
- theme={theme}
205
- loginLink={loginLink}
206
- absUrl={absUrl}
207
- />
208
- ) : (
209
- <SignInPlaceholder />
210
- )}
211
-
212
- <MeganavItemsMobile
213
- panels={panels}
214
- sessionState={sessionState}
215
- paths={paths}
216
- theme={theme}
217
- loginLink={loginLink}
218
- absUrl={absUrl}
219
- />
220
- </div>
221
- </nav>
222
- );
223
- };
224
-
225
- export default Meganav;
@@ -1,43 +0,0 @@
1
- import { queryIdAll } from "../dom-query";
2
- import { selectRecentBlogPosts } from "../remote-blogs-posts";
3
- import { connectState } from "../remote-data-store";
4
-
5
- const template = ({ link, title, pubDate }) => {
6
- const [li, a, heading, copy] = ["li", "a", "p", "p"].map((el) =>
7
- document.createElement(el),
8
- );
9
-
10
- a.href = link;
11
- a.classList.add("ui-meganav-media", "group");
12
-
13
- heading.textContent = title;
14
- heading.classList.add("ui-meganav-media-heading");
15
-
16
- copy.textContent = pubDate;
17
- copy.classList.add("ui-meganav-media-copy");
18
-
19
- a.appendChild(heading);
20
- a.appendChild(copy);
21
- li.appendChild(a);
22
-
23
- return li;
24
- };
25
-
26
- export default () => {
27
- connectState(selectRecentBlogPosts, (recentBlogPosts) => {
28
- if (Array.isArray(recentBlogPosts) && recentBlogPosts.length > 0) {
29
- const sections = queryIdAll("meganav-company-panel-blog-section");
30
- const containers = queryIdAll("meganav-company-panel-recent-blog-posts");
31
-
32
- Array.from(containers).forEach((container) => {
33
- const fragment = document.createDocumentFragment();
34
- recentBlogPosts.forEach((post) => fragment.appendChild(template(post)));
35
- container.appendChild(fragment);
36
- });
37
-
38
- Array.from(sections).forEach((section) =>
39
- section.classList.remove("hidden"),
40
- );
41
- }
42
- });
43
- };
@@ -1,41 +0,0 @@
1
- import React from "react";
2
-
3
- import FeaturedLink from "./FeaturedLink";
4
- import { AbsUrl } from "./Meganav";
5
-
6
- type MeganavBlogPostsListProps = {
7
- recentBlogPosts: {
8
- link: string;
9
- title: string;
10
- pubDate: string;
11
- }[];
12
- absUrl: AbsUrl;
13
- };
14
-
15
- const MeganavBlogPostsList = ({
16
- recentBlogPosts,
17
- absUrl,
18
- }: MeganavBlogPostsListProps) =>
19
- recentBlogPosts ? (
20
- <div className="col-span-full md:col-span-4 pt-8 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
21
- <h3 className="ui-meganav-overline" id="meganav-company-panel-list-blog">
22
- Blog
23
- </h3>
24
- <ul className="mb-8" aria-labelledby="meganav-company-panel-list-blog">
25
- {recentBlogPosts.map((post) => (
26
- <li key={post.link}>
27
- <a href={post.link} className="ui-meganav-media group">
28
- <p className="ui-meganav-media-heading">{post.title}</p>
29
- <p className="ui-meganav-media-copy">{post.pubDate}</p>
30
- </a>
31
- </li>
32
- ))}
33
- </ul>
34
-
35
- <FeaturedLink url={absUrl("/blog")} textSize="text-p3">
36
- More from our Blog
37
- </FeaturedLink>
38
- </div>
39
- ) : null;
40
-
41
- export default MeganavBlogPostsList;
@@ -1,166 +0,0 @@
1
- import React from "react";
2
-
3
- import MeganavBlogPostsList from "./MeganavBlogPostsList";
4
- import ConnectStateWrapper from "./ConnectStateWrapper";
5
- import { selectRecentBlogPosts } from "./remote-blogs-posts.js";
6
- import Icon from "./Icon";
7
- import { AbsUrl } from "./Meganav";
8
-
9
- type MeganavContentCompanyProps = {
10
- absUrl: AbsUrl;
11
- paths: {
12
- awsLogo: string;
13
- };
14
- };
15
-
16
- const MeganavContentCompany = ({
17
- paths,
18
- absUrl,
19
- }: MeganavContentCompanyProps) => {
20
- const BlogPostsList = ConnectStateWrapper(MeganavBlogPostsList, {
21
- recentBlogPosts: selectRecentBlogPosts,
22
- });
23
-
24
- return (
25
- <div className="flex max-w-screen-xl mx-auto">
26
- <div className="ui-meganav-content-spacer"></div>
27
- <section className="grid grid-cols-12 ui-grid-gap-x w-full">
28
- <div className="col-span-full md:col-span-4 pt-24 md:py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24">
29
- <h3
30
- className="ui-meganav-overline"
31
- id="meganav-company-panel-list-why-companies"
32
- >
33
- Why companies choose Ably
34
- </h3>
35
- <ul aria-labelledby="meganav-company-panel-list-why-companies">
36
- <li>
37
- <a
38
- href={absUrl("/customers")}
39
- className="ui-meganav-media-with-image group"
40
- >
41
- <Icon name="icon-display-customers-col" size="2.5rem" />
42
- <div className="flex flex-col justify-center">
43
- <p className="ui-meganav-media-heading">Customers</p>
44
- <p className="ui-meganav-media-copy">
45
- Ably supports customers across multiple industries.
46
- </p>
47
- </div>
48
- </a>
49
- </li>
50
- <li>
51
- <a
52
- href={absUrl("/case-studies")}
53
- className="ui-meganav-media-with-image group"
54
- >
55
- <Icon name="icon-display-case-studies-col" size="2.5rem" />
56
- <div className="flex flex-col justify-center">
57
- <p className="ui-meganav-media-heading">Case studies</p>
58
- <p className="ui-meganav-media-copy">
59
- Discover how customers are benefiting from Ably.
60
- </p>
61
- </div>
62
- </a>
63
- </li>
64
- <li>
65
- <a
66
- href={absUrl("/compare")}
67
- className="ui-meganav-media-with-image group"
68
- >
69
- <Icon name="icon-display-compare-tech-col" size="2.5rem" />
70
- <div className="flex flex-col justify-center">
71
- <p className="ui-meganav-media-heading">Compare our tech</p>
72
- <p className="ui-meganav-media-copy">
73
- Choose the right realtime service.
74
- </p>
75
- </div>
76
- </a>
77
- </li>
78
- <li>
79
- <a
80
- href={absUrl("/aws")}
81
- className="ui-meganav-media-with-image group"
82
- >
83
- <img src={paths.awsLogo} alt="AWS logo" />
84
- <div className="flex flex-col justify-center">
85
- <p className="ui-meganav-media-heading">Partners</p>
86
- <p className="ui-meganav-media-copy">
87
- Ably collaborates and integrates with AWS.
88
- </p>
89
- </div>
90
- </a>
91
- </li>
92
- </ul>
93
- </div>
94
-
95
- <div className="col-span-full md:col-span-4 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
96
- <ul
97
- className="md:mt-40"
98
- aria-labelledby="meganav-company-panel-list-why-companies"
99
- >
100
- <li>
101
- <a
102
- href={absUrl("/resources")}
103
- className="ui-meganav-media-with-image group"
104
- >
105
- <Icon name="icon-display-resources-col" size="2.5rem" />
106
- <div className="flex flex-col justify-center">
107
- <p className="ui-meganav-media-heading">Resources</p>
108
- <p className="ui-meganav-media-copy">
109
- Learn more about realtime with our handy resources.
110
- </p>
111
- </div>
112
- </a>
113
- </li>
114
- <li>
115
- <a
116
- href={absUrl("/about")}
117
- className="ui-meganav-media-with-image group"
118
- >
119
- <Icon name="icon-display-about-ably-col" size="2.5rem" />
120
- <div className="flex flex-col justify-center">
121
- <p className="ui-meganav-media-heading">About Ably</p>
122
- <p className="ui-meganav-media-copy">
123
- Find out more about Ably’s mission.
124
- </p>
125
- </div>
126
- </a>
127
- </li>
128
- <li>
129
- <a
130
- href={absUrl("/careers")}
131
- className="ui-meganav-media-with-image group"
132
- >
133
- <Icon name="icon-display-careers-col" size="2.5rem" />
134
- <div className="flex flex-col justify-center">
135
- <p className="ui-meganav-media-heading">Careers</p>
136
- <p className="ui-meganav-media-copy">
137
- Discover our open roles and core Ably values.
138
- </p>
139
- </div>
140
- </a>
141
- </li>
142
- <li>
143
- <a
144
- href={absUrl("/events")}
145
- className="ui-meganav-media-with-image group"
146
- >
147
- <Icon name="icon-display-events-col" size="2.5rem" />
148
- <div className="flex flex-col justify-center">
149
- <p className="ui-meganav-media-heading">Events</p>
150
- <p className="ui-meganav-media-copy">
151
- Join Ably at upcoming events.
152
- </p>
153
- </div>
154
- </a>
155
- </li>
156
- </ul>
157
- </div>
158
-
159
- <BlogPostsList absUrl={absUrl} />
160
- </section>
161
- <div className="ui-meganav-content-spacer"></div>
162
- </div>
163
- );
164
- };
165
-
166
- export default MeganavContentCompany;
@@ -1,210 +0,0 @@
1
- import React from "react";
2
-
3
- import Icon from "./Icon";
4
- import { AbsUrl } from "./Meganav";
5
-
6
- const MeganavContentDevelopers = ({ absUrl }: { absUrl: AbsUrl }) => (
7
- <div className="flex max-w-screen-xl mx-auto">
8
- <div className="ui-meganav-content-spacer"></div>
9
- <section className="grid grid-cols-12 ui-grid-gap-x w-full">
10
- <div className="col-span-full md:col-span-4 pt-24 md:py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24">
11
- <h3
12
- className="ui-meganav-overline uppercase"
13
- id="meganav-developers-panel-explore"
14
- >
15
- Explore
16
- </h3>
17
- <ul aria-labelledby="meganav-developers-panel-explore">
18
- <li>
19
- <a
20
- href={absUrl("/docs")}
21
- className="ui-meganav-media-with-image group"
22
- >
23
- <Icon name="icon-display-docs-col" size="2.5rem" />
24
- <div className="flex flex-col justify-center">
25
- <p className="ui-meganav-media-heading">Documentation</p>
26
- <p className="ui-meganav-media-copy">
27
- Technical guides to help you build with Ably.
28
- </p>
29
- </div>
30
- </a>
31
- </li>
32
- <li>
33
- <a
34
- href={absUrl("/docs/quick-start-guide")}
35
- className="ui-meganav-media-with-image group"
36
- >
37
- <Icon name="icon-display-quickstart-guides-col" size="2.5rem" />
38
- <div className="flex flex-col justify-center">
39
- <p className="ui-meganav-media-heading">Quickstart guides</p>
40
- <p className="ui-meganav-media-copy">
41
- Documentation to help you get started quickly.
42
- </p>
43
- </div>
44
- </a>
45
- </li>
46
- <li>
47
- <a
48
- href={absUrl("/integrations")}
49
- className="ui-meganav-media-with-image group"
50
- >
51
- <Icon name="icon-display-integrations-col" size="2.5rem" />
52
- <div className="flex flex-col justify-center">
53
- <p className="ui-meganav-media-heading">Integrations</p>
54
- <p className="ui-meganav-media-copy">
55
- Find out more about Ably integrations.{" "}
56
- </p>
57
- </div>
58
- </a>
59
- </li>
60
- <li>
61
- <a
62
- href={absUrl("/examples")}
63
- className="ui-meganav-media-with-image group"
64
- >
65
- <Icon name="icon-display-examples-col" size="2.5rem" />
66
- <div className="flex flex-col justify-center">
67
- <p className="ui-meganav-media-heading">Live examples</p>
68
- <p className="ui-meganav-media-copy">
69
- Discover our features and their use cases.
70
- </p>
71
- </div>
72
- </a>
73
- </li>
74
- </ul>
75
- </div>
76
-
77
- <div className="col-span-full md:col-span-4 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
78
- <ul
79
- className="md:mt-40"
80
- aria-labelledby="meganav-developers-panel-explore"
81
- >
82
- <li>
83
- <a
84
- href={absUrl("/docs/sdks")}
85
- className="ui-meganav-media-with-image group"
86
- >
87
- <Icon name="icon-display-sdks-col" size="2.5rem" />
88
- <div className="flex flex-col justify-center">
89
- <p className="ui-meganav-media-heading">SDKs</p>
90
- <p className="ui-meganav-media-copy">
91
- Download an SDK to help you build realtime apps faster.
92
- </p>
93
- </div>
94
- </a>
95
- </li>
96
- <li>
97
- <a
98
- href={absUrl("/tutorials")}
99
- className="ui-meganav-media-with-image group"
100
- >
101
- <Icon name="icon-display-tutorials-demos-col" size="2.5rem" />
102
- <div className="flex flex-col justify-center">
103
- <p className="ui-meganav-media-heading">Tutorials & Demos</p>
104
- <p className="ui-meganav-media-copy">
105
- Get stuck in with our hands-on resources.
106
- </p>
107
- </div>
108
- </a>
109
- </li>
110
- <li>
111
- <a
112
- href={absUrl("/reference-guide-chat")}
113
- className="ui-meganav-media-with-image group"
114
- >
115
- <Icon name="icon-display-chat-col" size="2.5rem" />
116
- <div className="flex flex-col justify-center">
117
- <p className="ui-meganav-media-heading">
118
- Chat apps reference guide
119
- </p>
120
- <p className="ui-meganav-media-copy">
121
- Learn how to build chat apps with Ably.
122
- </p>
123
- </div>
124
- </a>
125
- </li>
126
- <li>
127
- <a
128
- href={absUrl("/reference-guide-multiplayer")}
129
- className="ui-meganav-media-with-image group"
130
- >
131
- <Icon name="icon-multi-user-spaces-col" size="2.5rem" />
132
- <div className="flex flex-col justify-center">
133
- <p className="ui-meganav-media-heading">
134
- Multiplayer reference guide
135
- </p>
136
- <p className="ui-meganav-media-copy">
137
- Learn how to build collaborative features with Ably.
138
- </p>
139
- </div>
140
- </a>
141
- </li>
142
- </ul>
143
- </div>
144
-
145
- <div className="col-span-full md:col-span-4 pt-8 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
146
- <h3
147
- className="ui-meganav-overline uppercase"
148
- id="meganav-developers-panel-quick-links"
149
- >
150
- Quick links
151
- </h3>
152
- <ul aria-labelledby="meganav-developers-panel-quick-links">
153
- <li>
154
- <a
155
- href="https://discord.gg/jwBPhEZ9g5"
156
- className="group ui-meganav-media py-12"
157
- >
158
- <p className="ui-meganav-media-heading">Discord</p>
159
- </a>
160
- </li>
161
- <li>
162
- <a
163
- href="https://github.com/ably"
164
- className="group ui-meganav-media py-12"
165
- >
166
- <p className="ui-meganav-media-heading">GitHub</p>
167
- </a>
168
- </li>
169
- <li>
170
- <a
171
- href="https://changelog.ably.com/"
172
- className="group ui-meganav-media py-12"
173
- >
174
- <p className="ui-meganav-media-heading">Changelog</p>
175
- </a>
176
- </li>
177
- <li>
178
- <a
179
- href="https://status.ably.com/"
180
- className="group ui-meganav-media py-12"
181
- >
182
- <p className="ui-meganav-media-heading">
183
- Status
184
- <iframe
185
- title="Ably status"
186
- src="https://status.ably.com/embed/icon"
187
- style={{ backgroundColor: "transparent" }}
188
- frameBorder="0"
189
- scrolling="no"
190
- className="w-24 h-24 ml-4 border-none pointer-events-none align-middle"
191
- ></iframe>
192
- </p>
193
- </a>
194
- </li>
195
- <li>
196
- <a
197
- href={absUrl("/support")}
198
- className="group ui-meganav-media py-12"
199
- >
200
- <p className="ui-meganav-media-heading">Support & FAQs</p>
201
- </a>
202
- </li>
203
- </ul>
204
- </div>
205
- </section>
206
- <div className="ui-meganav-content-spacer"></div>
207
- </div>
208
- );
209
-
210
- export default MeganavContentDevelopers;