@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.
- package/core/Flash.js +1 -1
- package/core/styles/forms.css +4 -4
- package/core/styles/toggles.css +38 -0
- package/core/styles.components.css +1 -0
- package/package.json +15 -18
- package/tailwind.config.js +3 -0
- package/src/core/Accordion/Accordion.stories.tsx +0 -39
- package/src/core/Accordion.tsx +0 -149
- package/src/core/Code/Code.stories.tsx +0 -71
- package/src/core/Code/component.css +0 -1
- package/src/core/Code/component.js +0 -27
- package/src/core/Code.tsx +0 -44
- package/src/core/ConnectStateWrapper.tsx +0 -43
- package/src/core/ContactFooter/ContactFooter.stories.tsx +0 -11
- package/src/core/ContactFooter/component.css +0 -11
- package/src/core/ContactFooter/component.js +0 -2
- package/src/core/ContactFooter.tsx +0 -91
- package/src/core/CookieMessage/CookieMessage.stories.tsx +0 -12
- package/src/core/CookieMessage/component.css +0 -15
- package/src/core/CookieMessage.tsx +0 -52
- package/src/core/CustomerLogos/CustomerLogos.stories.tsx +0 -43
- package/src/core/CustomerLogos.tsx +0 -35
- package/src/core/DropdownMenu/DropdownMenu.stories.tsx +0 -48
- package/src/core/DropdownMenu.tsx +0 -140
- package/src/core/Expander/Expander.stories.tsx +0 -132
- package/src/core/Expander.tsx +0 -63
- package/src/core/FeaturedLink/FeaturedLink.stories.tsx +0 -43
- package/src/core/FeaturedLink.tsx +0 -93
- package/src/core/Flash/Flash.stories.tsx +0 -37
- package/src/core/Flash/component.css +0 -28
- package/src/core/Flash.tsx +0 -233
- package/src/core/Footer/Footer.stories.tsx +0 -26
- package/src/core/Footer/component.css +0 -33
- package/src/core/Footer.tsx +0 -535
- package/src/core/Icon/Icon.stories.tsx +0 -151
- package/src/core/Icon.tsx +0 -26
- package/src/core/Loader/Loader.stories.tsx +0 -21
- package/src/core/Loader.tsx +0 -52
- package/src/core/Logo/Logo.stories.tsx +0 -12
- package/src/core/Logo.tsx +0 -29
- package/src/core/Meganav/Meganav.stories.tsx +0 -86
- package/src/core/Meganav/component.css +0 -114
- package/src/core/Meganav/component.js +0 -150
- package/src/core/Meganav/component.json +0 -37
- package/src/core/Meganav.tsx +0 -225
- package/src/core/MeganavBlogPostsList/component.js +0 -43
- package/src/core/MeganavBlogPostsList.tsx +0 -41
- package/src/core/MeganavContentCompany.tsx +0 -166
- package/src/core/MeganavContentDevelopers.tsx +0 -210
- package/src/core/MeganavContentProducts.tsx +0 -163
- package/src/core/MeganavContentUseCases.tsx +0 -244
- package/src/core/MeganavControl/component.js +0 -117
- package/src/core/MeganavControl.tsx +0 -39
- package/src/core/MeganavControlMobileDropdown/component.js +0 -46
- package/src/core/MeganavControlMobileDropdown.tsx +0 -31
- package/src/core/MeganavControlMobilePanelClose/component.js +0 -36
- package/src/core/MeganavControlMobilePanelClose.tsx +0 -34
- package/src/core/MeganavControlMobilePanelOpen/component.js +0 -59
- package/src/core/MeganavControlMobilePanelOpen.tsx +0 -31
- package/src/core/MeganavItemsDesktop.tsx +0 -68
- package/src/core/MeganavItemsMobile.tsx +0 -197
- package/src/core/MeganavItemsSignedIn.tsx +0 -130
- package/src/core/MeganavSearch.tsx +0 -36
- package/src/core/MeganavSearchAutocomplete/component.js +0 -177
- package/src/core/MeganavSearchAutocomplete.tsx +0 -12
- package/src/core/MeganavSearchPanel.tsx +0 -52
- package/src/core/MeganavSearchSuggestions/component.js +0 -133
- package/src/core/MeganavSearchSuggestions.tsx +0 -62
- package/src/core/Notice/component.css +0 -7
- package/src/core/Notice/component.js +0 -154
- package/src/core/Notice.tsx +0 -102
- package/src/core/SignOutLink.tsx +0 -51
- package/src/core/Slider/Slider.stories.tsx +0 -98
- package/src/core/Slider/component.css +0 -40
- package/src/core/Slider/component.js +0 -105
- package/src/core/Slider.tsx +0 -224
- package/src/core/Table/Table.stories.tsx +0 -12
- package/src/core/Table/Table.tsx +0 -58
- package/src/core/Table/TableCell.tsx +0 -71
- package/src/core/Table/TableRow.tsx +0 -25
- package/src/core/Table/data.tsx +0 -133
- package/src/core/Table.tsx +0 -15
- package/src/core/Tooltip/Tooltip.stories.tsx +0 -27
- package/src/core/Tooltip.tsx +0 -88
- package/src/core/css.js +0 -3
- package/src/core/dom-query.js +0 -5
- package/src/core/fonts/NEXT-Book-Light-Italic.eot +0 -0
- package/src/core/fonts/NEXT-Book-Light-Italic.otf +0 -0
- package/src/core/fonts/NEXT-Book-Light-Italic.woff +0 -0
- package/src/core/fonts/NEXT-Book-Light-Italic.woff2 +0 -0
- package/src/core/fonts/NEXT-Book-Light.eot +0 -0
- package/src/core/fonts/NEXT-Book-Light.otf +0 -0
- package/src/core/fonts/NEXT-Book-Light.woff +0 -0
- package/src/core/fonts/NEXT-Book-Light.woff2 +0 -0
- package/src/core/fonts/NEXT-Book-Medium-Italic.eot +0 -0
- package/src/core/fonts/NEXT-Book-Medium-Italic.otf +0 -0
- package/src/core/fonts/NEXT-Book-Medium-Italic.woff +0 -0
- package/src/core/fonts/NEXT-Book-Medium-Italic.woff2 +0 -0
- package/src/core/fonts/NEXT-Book-Medium.eot +0 -0
- package/src/core/fonts/NEXT-Book-Medium.otf +0 -0
- package/src/core/fonts/NEXT-Book-Medium.woff +0 -0
- package/src/core/fonts/NEXT-Book-Medium.woff2 +0 -0
- package/src/core/fonts/jetBrains-mono.css +0 -3
- package/src/core/fonts/manrope.css +0 -3
- package/src/core/fonts/next.css +0 -63
- package/src/core/fonts/source-code-pro.css +0 -3
- package/src/core/hubspot-chat-toggle.js +0 -67
- package/src/core/icons/discord.svg +0 -10
- package/src/core/icons/facebook.svg +0 -4
- package/src/core/icons/github.svg +0 -3
- package/src/core/icons/glassdoor.svg +0 -3
- package/src/core/icons/google.svg +0 -3
- package/src/core/icons/icon-display-48hrs.svg +0 -3
- package/src/core/icons/icon-display-about-ably-col.svg +0 -4
- package/src/core/icons/icon-display-api-keys.svg +0 -3
- package/src/core/icons/icon-display-api.svg +0 -3
- package/src/core/icons/icon-display-asset-tracking-col.svg +0 -18
- package/src/core/icons/icon-display-browser.svg +0 -10
- package/src/core/icons/icon-display-calendar.svg +0 -3
- package/src/core/icons/icon-display-call-mobile.svg +0 -3
- package/src/core/icons/icon-display-careers-col.svg +0 -9
- package/src/core/icons/icon-display-case-studies-col.svg +0 -5
- package/src/core/icons/icon-display-chat-col.svg +0 -4
- package/src/core/icons/icon-display-chat-stack-col.svg +0 -4
- package/src/core/icons/icon-display-chat-stack.svg +0 -4
- package/src/core/icons/icon-display-cloud-servers.svg +0 -3
- package/src/core/icons/icon-display-compare-tech-col.svg +0 -9
- package/src/core/icons/icon-display-customers-col.svg +0 -15
- package/src/core/icons/icon-display-data-broadcast-col.svg +0 -26
- package/src/core/icons/icon-display-data-synchronization-col.svg +0 -14
- package/src/core/icons/icon-display-docs-col.svg +0 -7
- package/src/core/icons/icon-display-documentation.svg +0 -3
- package/src/core/icons/icon-display-events-col.svg +0 -13
- package/src/core/icons/icon-display-examples-col.svg +0 -11
- package/src/core/icons/icon-display-gdpr.svg +0 -3
- package/src/core/icons/icon-display-general-comms.svg +0 -3
- package/src/core/icons/icon-display-hipaa.svg +0 -10
- package/src/core/icons/icon-display-integrations-col.svg +0 -8
- package/src/core/icons/icon-display-it-support-access.svg +0 -3
- package/src/core/icons/icon-display-it-support-helpdesk.svg +0 -3
- package/src/core/icons/icon-display-kafka-at-the-edge-col.svg +0 -8
- package/src/core/icons/icon-display-laptop.svg +0 -10
- package/src/core/icons/icon-display-lightbulb-col.svg +0 -10
- package/src/core/icons/icon-display-live-chat.svg +0 -3
- package/src/core/icons/icon-display-map-pin.svg +0 -3
- package/src/core/icons/icon-display-message.svg +0 -3
- package/src/core/icons/icon-display-padlock-closed.svg +0 -3
- package/src/core/icons/icon-display-platform.svg +0 -22
- package/src/core/icons/icon-display-play.svg +0 -3
- package/src/core/icons/icon-display-privacy-shield-framework.svg +0 -7
- package/src/core/icons/icon-display-push-notifications-col.svg +0 -6
- package/src/core/icons/icon-display-quickstart-guides-col.svg +0 -8
- package/src/core/icons/icon-display-resources-col.svg +0 -21
- package/src/core/icons/icon-display-sdks-col.svg +0 -11
- package/src/core/icons/icon-display-servers.svg +0 -3
- package/src/core/icons/icon-display-shopping-cart.svg +0 -10
- package/src/core/icons/icon-display-sla.svg +0 -3
- package/src/core/icons/icon-display-soc2-type2.svg +0 -3
- package/src/core/icons/icon-display-tech-account-comms.svg +0 -3
- package/src/core/icons/icon-display-tutorials-demos-col.svg +0 -25
- package/src/core/icons/icon-display-virtual-events-col.svg +0 -12
- package/src/core/icons/icon-display-virtual-events.svg +0 -12
- package/src/core/icons/icon-gui-ably-badge.svg +0 -3
- package/src/core/icons/icon-gui-arrow-bidirectional-horizontal.svg +0 -3
- package/src/core/icons/icon-gui-arrow-bidirectional-vertical.svg +0 -3
- package/src/core/icons/icon-gui-arrow-down.svg +0 -3
- package/src/core/icons/icon-gui-arrow-left.svg +0 -3
- package/src/core/icons/icon-gui-arrow-right.svg +0 -3
- package/src/core/icons/icon-gui-arrow-up.svg +0 -3
- package/src/core/icons/icon-gui-burger-menu.svg +0 -5
- package/src/core/icons/icon-gui-check-circled-fill-black.svg +0 -4
- package/src/core/icons/icon-gui-check-circled-fill.svg +0 -4
- package/src/core/icons/icon-gui-check-circled.svg +0 -3
- package/src/core/icons/icon-gui-checklist-checked.svg +0 -3
- package/src/core/icons/icon-gui-clock.svg +0 -3
- package/src/core/icons/icon-gui-close.svg +0 -3
- package/src/core/icons/icon-gui-copy.svg +0 -10
- package/src/core/icons/icon-gui-cross-circled-fill.svg +0 -4
- package/src/core/icons/icon-gui-cross-circled.svg +0 -3
- package/src/core/icons/icon-gui-dash-circled.svg +0 -3
- package/src/core/icons/icon-gui-disclosure-arrow.svg +0 -3
- package/src/core/icons/icon-gui-document-generic.svg +0 -3
- package/src/core/icons/icon-gui-enlarge.svg +0 -3
- package/src/core/icons/icon-gui-external-link.svg +0 -3
- package/src/core/icons/icon-gui-filter-flow-step-1.svg +0 -5
- package/src/core/icons/icon-gui-filter-flow-step-2.svg +0 -5
- package/src/core/icons/icon-gui-filter-flow-step-3.svg +0 -5
- package/src/core/icons/icon-gui-history.svg +0 -3
- package/src/core/icons/icon-gui-info.svg +0 -3
- package/src/core/icons/icon-gui-link-arrow.svg +0 -3
- package/src/core/icons/icon-gui-link.svg +0 -4
- package/src/core/icons/icon-gui-live-chat.svg +0 -3
- package/src/core/icons/icon-gui-minus.svg +0 -3
- package/src/core/icons/icon-gui-partial.svg +0 -4
- package/src/core/icons/icon-gui-plus.svg +0 -3
- package/src/core/icons/icon-gui-quote-marks-solid.svg +0 -3
- package/src/core/icons/icon-gui-refresh.svg +0 -10
- package/src/core/icons/icon-gui-resources.svg +0 -3
- package/src/core/icons/icon-gui-search.svg +0 -3
- package/src/core/icons/icon-gui-tick.svg +0 -3
- package/src/core/icons/icon-gui-warning.svg +0 -5
- package/src/core/icons/icon-live-updates-results-metrics-col.svg +0 -26
- package/src/core/icons/icon-multi-user-spaces-col.svg +0 -13
- package/src/core/icons/icon-social-x.svg +0 -3
- package/src/core/icons/icon-tech-apachekafka.svg +0 -3
- package/src/core/icons/linkedin.svg +0 -3
- package/src/core/icons/quote.svg +0 -3
- package/src/core/icons/stackoverflow.svg +0 -3
- package/src/core/icons/twitter.svg +0 -3
- package/src/core/icons/youtube.svg +0 -11
- package/src/core/icons.js +0 -6
- package/src/core/images/ably-logo.png +0 -0
- package/src/core/images/ably-logo.svg +0 -15
- package/src/core/images/ably-stack.svg +0 -14
- package/src/core/images/best-support-2023.svg +0 -1
- package/src/core/images/cust-logo-ao-col-pos.png +0 -0
- package/src/core/images/cust-logo-ao-col-pos@2x.png +0 -0
- package/src/core/images/cust-logo-ausopen-col-pos.png +0 -0
- package/src/core/images/cust-logo-ausopen-col-pos@2x.png +0 -0
- package/src/core/images/cust-logo-ausopen-mono-pos.svg +0 -5
- package/src/core/images/cust-logo-bloomberg-mono-pos.svg +0 -11
- package/src/core/images/cust-logo-hopin-mono-pos.svg +0 -4
- package/src/core/images/cust-logo-hubspot-col-pos.png +0 -0
- package/src/core/images/cust-logo-hubspot-col-pos@2x.png +0 -0
- package/src/core/images/cust-logo-hubspot-mono-pos.svg +0 -4
- package/src/core/images/cust-logo-lightspeed-col-pos.png +0 -0
- package/src/core/images/cust-logo-lightspeed-col-pos@2x.png +0 -0
- package/src/core/images/cust-logo-lightspeed-syst-col-pos.png +0 -0
- package/src/core/images/cust-logo-lightspeed-syst-col-pos@2x.png +0 -0
- package/src/core/images/cust-logo-mentimeter-mono-pos.svg +0 -17
- package/src/core/images/cust-logo-split-col-pos.png +0 -0
- package/src/core/images/cust-logo-split-col-pos@2x.png +0 -0
- package/src/core/images/cust-logo-split-mono-pos.svg +0 -9
- package/src/core/images/cust-logo-toyota-mono-pos.svg +0 -18
- package/src/core/images/cust-logo-vitac-col-pos.png +0 -0
- package/src/core/images/cust-logo-vitac-col-pos@2x.png +0 -0
- package/src/core/images/cust-logo-webflow-col-pos.svg +0 -3
- package/src/core/images/cust-photo-hubspot-max-freiert.jpg +0 -0
- package/src/core/images/cust-photo-split-pato-echague.jpg +0 -0
- package/src/core/images/cust-photo-vitac-joe-antonio.jpg +0 -0
- package/src/core/images/fastest-implementation-2023.svg +0 -1
- package/src/core/images/flexible-companies.png +0 -0
- package/src/core/images/high-performer-2022.png +0 -0
- package/src/core/images/high-performer-2023.svg +0 -1
- package/src/core/images/highest-user-adoption-2022.png +0 -0
- package/src/core/images/highest-user-adoption-2023.svg +0 -1
- package/src/core/images/icon-tech-aws.svg +0 -4
- package/src/core/images/rocket-list-2021.png +0 -0
- package/src/core/images/scale-motif-open-empathetic.svg +0 -1
- package/src/core/images/technical-support-01-800x533.jpg +0 -0
- package/src/core/images/users-love-us-2022.png +0 -0
- package/src/core/load-sprites.js +0 -11
- package/src/core/react-renderer.tsx +0 -29
- package/src/core/remote-blogs-posts.js +0 -42
- package/src/core/remote-data-store.js +0 -34
- package/src/core/remote-data-util.js +0 -4
- package/src/core/remote-session-data.js +0 -58
- package/src/core/scripts.js +0 -10
- package/src/core/styles/buttons.css +0 -124
- package/src/core/styles/forms.css +0 -64
- package/src/core/styles/layout.css +0 -21
- package/src/core/styles/properties.css +0 -278
- package/src/core/styles/text.css +0 -168
- package/src/core/styles.base.css +0 -1
- package/src/core/styles.components.css +0 -43
- package/src/core/styles.css +0 -2
- package/src/core/url-base.js +0 -7
- package/src/core/utils/syntax-highlighter-registry.js +0 -63
- package/src/core/utils/syntax-highlighter.css +0 -71
- package/src/core/utils/syntax-highlighter.js +0 -103
- package/src/pages/Buttons.mdx +0 -121
- package/src/pages/Chips.mdx +0 -136
- package/src/pages/Colour.mdx +0 -23
- package/src/pages/Forms.mdx +0 -173
- package/src/pages/Layout.mdx +0 -58
- package/src/pages/Typography.mdx +0 -206
- package/src/pages/utils.ts +0 -70
- package/src/reset/scripts.js +0 -1
- package/src/reset/styles/normalize.css +0 -353
- package/src/reset/styles/reset.css +0 -139
- package/src/reset/styles.css +0 -2
package/src/core/Meganav.tsx
DELETED
|
@@ -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;
|