@ably/ui 11.7.0 → 11.7.1-dev.1344841
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/README.md +7 -7
- package/core/Code/component.css +2 -0
- package/core/CompanyAutocomplete/component.js +2 -1
- package/core/CompanyAutocomplete/component.js.LICENSE.txt +1 -0
- package/core/ContactFooter.jsx +8 -8
- package/core/DropdownMenu.jsx +1 -1
- package/core/FeaturedLink/component.css +0 -15
- package/core/FeaturedLink/component.js +1 -1
- package/core/FeaturedLink.jsx +17 -6
- package/core/Flash/component.css +0 -4
- package/core/Flash.jsx +1 -1
- package/core/Footer/component.css +3 -3
- package/core/Footer.jsx +15 -15
- package/core/Meganav/component.css +6 -6
- package/core/Meganav.jsx +355 -759
- package/core/MeganavBlogPostsList/component.js +2 -1
- package/core/MeganavBlogPostsList/component.js.LICENSE.txt +1 -0
- package/core/MeganavBlogPostsList.jsx +17 -6
- package/core/MeganavContentCompany.jsx +312 -716
- package/core/MeganavContentDevelopers.jsx +1 -1
- package/core/MeganavContentProducts.jsx +18 -7
- package/core/MeganavItemsMobile.jsx +17 -6
- package/core/MeganavItemsSignedIn.jsx +17 -6
- package/core/MeganavSearch.jsx +17 -6
- package/core/MeganavSearchPanel.jsx +17 -6
- package/core/MeganavSearchSuggestions.jsx +17 -6
- package/core/Notice/component.js +1 -1
- package/core/Notice.jsx +4 -4
- package/core/Uptime/component.css +1 -1
- package/core/Uptime.jsx +307 -711
- package/core/fonts/jetBrains-mono.css +3 -0
- package/core/fonts/manrope.css +3 -0
- package/core/scripts.js +2 -1
- package/core/scripts.js.LICENSE.txt +1 -0
- package/core/styles.css +225 -115
- package/package.json +3 -3
- package/src/core/ContactFooter/component.html.erb +8 -8
- package/src/core/ContactFooter/component.jsx +8 -8
- package/src/core/DropdownMenu/component.jsx +1 -1
- package/src/core/FeatureFooter/component.html.erb +6 -6
- package/src/core/FeaturedLink/component.html.erb +14 -5
- package/src/core/FeaturedLink/component.js +0 -1
- package/src/core/FeaturedLink/component.jsx +27 -4
- package/src/core/FeaturedLink/component.rb +3 -1
- package/src/core/Flash/component.css +0 -4
- package/src/core/Flash/component.jsx +1 -1
- package/src/core/Footer/component.css +3 -3
- package/src/core/Footer/component.html.erb +14 -14
- package/src/core/Footer/component.jsx +15 -15
- package/src/core/Meganav/component.css +6 -6
- package/src/core/MeganavContentDevelopers/component.html.erb +1 -1
- package/src/core/MeganavContentDevelopers/component.jsx +1 -1
- package/src/core/MeganavContentProducts/component.html.erb +1 -1
- package/src/core/MeganavContentProducts/component.jsx +1 -1
- package/src/core/Notice/component.html.erb +3 -3
- package/src/core/Notice/component.jsx +3 -3
- package/src/core/Showcase/component.html.erb +7 -7
- package/src/core/Uptime/component.css +1 -1
- package/src/core/Uptime/component.jsx +1 -1
- package/src/core/fonts/jetBrains-mono.css +3 -0
- package/src/core/fonts/manrope.css +3 -0
- package/src/core/styles/buttons.css +5 -5
- package/src/core/styles/forms.css +5 -5
- package/src/core/styles/properties.css +153 -45
- package/src/core/styles/text.css +62 -60
- package/src/core/utils/syntax-highlighter.css +2 -0
- package/tailwind.config.js +179 -49
- package/src/core/FeaturedLink/component.css +0 -15
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<div class="ui-contact-footer-box">
|
|
4
4
|
<%= render(AblyUi::Core::Icon.new(name: "icon-display-live-chat", size: "3rem", additional_css: "block mb-16")) %>
|
|
5
5
|
<div>
|
|
6
|
-
<div class="text-h3 mb-24">Live Chat</div>
|
|
7
|
-
<p class="text-p1
|
|
6
|
+
<div class="ui-text-h3 mb-24">Live Chat</div>
|
|
7
|
+
<p class="ui-text-p1">Reach out team of experts over chat powered by Ably.</p>
|
|
8
8
|
</div>
|
|
9
9
|
<%= tag.button type: "button", class: "ui-btn-secondary self-start mt-16", data: { id: "open-chat-widget", enabled_label: "Start a live chat", disabled_label: "Live chat unavailable" }, disabled: true do %>
|
|
10
10
|
Live chat unavailable
|
|
@@ -13,18 +13,18 @@
|
|
|
13
13
|
<div class="ui-contact-footer-box">
|
|
14
14
|
<%= render(AblyUi::Core::Icon.new(name: "icon-display-call-mobile", size: "3rem", additional_css: "block mb-16")) %>
|
|
15
15
|
<div class="flex-grow">
|
|
16
|
-
<div class="text-h3 mb-24">Call us</div>
|
|
17
|
-
<p class="text-p1
|
|
18
|
-
<span class="block"><strong class="
|
|
19
|
-
<span class="block"><strong class="
|
|
16
|
+
<div class="ui-text-h3 mb-24">Call us</div>
|
|
17
|
+
<p class="ui-text-p1">
|
|
18
|
+
<span class="block"><strong class="font-bold">+1 877 434 5287</strong> (USA, toll free) </span>
|
|
19
|
+
<span class="block"><strong class="font-bold">+44 20 3318 4689</strong> (UK) </span>
|
|
20
20
|
</p>
|
|
21
21
|
</div>
|
|
22
22
|
</div>
|
|
23
23
|
<div class="ui-contact-footer-box">
|
|
24
24
|
<%= render(AblyUi::Core::Icon.new(name: "icon-display-tech-account-comms", size: "3rem", additional_css: "block mb-16")) %>
|
|
25
25
|
<div>
|
|
26
|
-
<div class="text-h3 mb-24">Technical and account support</div>
|
|
27
|
-
<p class="text-p1
|
|
26
|
+
<div class="ui-text-h3 mb-24">Technical and account support</div>
|
|
27
|
+
<p class="ui-text-p1">We're standing by to help with any questions or code.</p>
|
|
28
28
|
</div>
|
|
29
29
|
<%= link_to 'Get support now', abs_url("/support"), class: "ui-btn-secondary self-start p-btn mt-16" %>
|
|
30
30
|
</div>
|
|
@@ -16,8 +16,8 @@ export default function ContactFooter({ urlBase }) {
|
|
|
16
16
|
<div className="ui-contact-footer-box">
|
|
17
17
|
<Icon name="icon-display-live-chat" size="3rem" additionalCSS="block mb-16" />
|
|
18
18
|
<div>
|
|
19
|
-
<div className="text-h3 mb-24">Live Chat</div>
|
|
20
|
-
<p className="text-p1
|
|
19
|
+
<div className="ui-text-h3 mb-24">Live Chat</div>
|
|
20
|
+
<p className="ui-text-p1">Reach out team of experts over chat powered by Ably.</p>
|
|
21
21
|
</div>
|
|
22
22
|
<button
|
|
23
23
|
type="button"
|
|
@@ -34,13 +34,13 @@ export default function ContactFooter({ urlBase }) {
|
|
|
34
34
|
<div className="ui-contact-footer-box">
|
|
35
35
|
<Icon name="icon-display-call-mobile" size="3rem" additionalCSS="block mb-16" />
|
|
36
36
|
<div className="flex-grow">
|
|
37
|
-
<div className="text-h3 mb-24">Call us</div>
|
|
38
|
-
<p className="text-p1
|
|
37
|
+
<div className="ui-text-h3 mb-24">Call us</div>
|
|
38
|
+
<p className="ui-text-p1">
|
|
39
39
|
<span className="block">
|
|
40
|
-
<strong className="
|
|
40
|
+
<strong className="font-bold">+1 877 434 5287</strong> (USA, toll free)
|
|
41
41
|
</span>
|
|
42
42
|
<span className="block">
|
|
43
|
-
<strong className="
|
|
43
|
+
<strong className="font-bold">+44 20 3318 4689</strong> (UK)
|
|
44
44
|
</span>
|
|
45
45
|
</p>
|
|
46
46
|
</div>
|
|
@@ -49,8 +49,8 @@ export default function ContactFooter({ urlBase }) {
|
|
|
49
49
|
<div className="ui-contact-footer-box">
|
|
50
50
|
<Icon name="icon-display-tech-account-comms" size="3rem" additionalCSS="block mb-16" />
|
|
51
51
|
<div>
|
|
52
|
-
<div className="text-h3 mb-24">Technical and account support</div>
|
|
53
|
-
<p className="text-p1
|
|
52
|
+
<div className="ui-text-h3 mb-24">Technical and account support</div>
|
|
53
|
+
<p className="ui-text-p1">We're standing by to help with any questions or code.</p>
|
|
54
54
|
</div>
|
|
55
55
|
<a className="ui-btn-secondary self-start p-btn mt-16" href={absUrl("/support")}>
|
|
56
56
|
Get support now
|
|
@@ -92,7 +92,7 @@ const Link = ({ url, title, subtitle, iconName, children }) => {
|
|
|
92
92
|
{title}
|
|
93
93
|
{iconName ? <Icon name={iconName} size="1rem" color="text-cool-black" additionalCSS="align-middle ml-8 relative -top-1 -left-4" /> : null}
|
|
94
94
|
</p>
|
|
95
|
-
{subtitle ? <p className="text-p3 mb-16
|
|
95
|
+
{subtitle ? <p className="ui-text-p3 mb-16">{subtitle}</p> : null}
|
|
96
96
|
{children}
|
|
97
97
|
</a>
|
|
98
98
|
);
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
<div class="p-24 sm:p-32 flex-1 h-full">
|
|
7
7
|
<div class="flex flex-col h-full space-between">
|
|
8
8
|
<span class="flex-1">
|
|
9
|
-
<div class="text-h3 mb-24 flex-1"><%= @title %> </div>
|
|
10
|
-
<p class="text-p1
|
|
9
|
+
<div class="ui-text-h3 text-white mb-24 flex-1"><%= @title %> </div>
|
|
10
|
+
<p class="ui-text-p1 text-white"><%= @subtitle %></p>
|
|
11
11
|
<%= tag.button type: "button", class: "ui-btn-secondary-invert self-start mt-24", data: { id: "open-chat-widget", enabled_label: live_chat_label, disabled_label: live_chat_disabled_label }, disabled: true do %>
|
|
12
12
|
<%= live_chat_disabled_label %>
|
|
13
13
|
<% end %>
|
|
14
14
|
</span>
|
|
15
15
|
<span class="flex-0 mt-24 md:mt-0">
|
|
16
|
-
<p class="text-p1
|
|
16
|
+
<p class="ui-text-p1 text-white">
|
|
17
17
|
Don’t want to chat?
|
|
18
18
|
<%= link_to 'Get in touch via our contact page', abs_url("/contact"), class: "text-white underline font-medium hover:text-gui-hover focus:text-gui-focus focus:outline-gui-focus" %>
|
|
19
19
|
</p>
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
<div class="bg-white rounded-lg p-24 sm:p-32 w-auto">
|
|
25
25
|
<div class="flex flex-col h-full space-between">
|
|
26
26
|
<span class="flex-1">
|
|
27
|
-
<div class="text-h3 mb-24">Try our APIs for free</div>
|
|
28
|
-
<p class="text-p1
|
|
29
|
-
<ul class="relative ml-24 text-p1
|
|
27
|
+
<div class="ui-text-h3 mb-24">Try our APIs for free</div>
|
|
28
|
+
<p class="ui-text-p1 mb-16">Our free plan includes</p>
|
|
29
|
+
<ul class="relative ml-24 ui-text-p1">
|
|
30
30
|
<li>
|
|
31
31
|
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", size: "1.5rem", additional_css: "align-text-bottom")) %>
|
|
32
32
|
6m messages per month
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
<%= link_to(@url, class: "
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<%= link_to(@url, class: "font-sans font-bold block text-gui-default hover:text-gui-hover focus:text-gui-focus focus:outline-gui-focus group ui-#{@text_size} #{@flush ? '' : 'py-8'} #{@additional_css}", style: "--featured-link-icon-size: var(#{@text_size.gsub("text", "--fs")})") do %>
|
|
2
|
+
<% if @reverse %>
|
|
3
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-link-arrow",
|
|
4
|
+
size: "calc(var(--featured-link-icon-size) * 1.25)",
|
|
5
|
+
color: @icon_color,
|
|
6
|
+
additional_css: "align-middle mr-8 relative -top-1 -right-4 transition-all group-hover:right-0 transform rotate-180")) %>
|
|
7
|
+
<%= content -%>
|
|
8
|
+
<% else %>
|
|
9
|
+
<%= content -%><%= render(AblyUi::Core::Icon.new(name: "icon-gui-link-arrow",
|
|
10
|
+
size: "calc(var(--featured-link-icon-size) * 1.25)",
|
|
11
|
+
color: @icon_color,
|
|
12
|
+
additional_css: "align-middle ml-8 relative -top-1 -left-4 transition-all group-hover:left-0")) %>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
6
15
|
<% end %>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import "./component.css";
|
|
@@ -3,14 +3,35 @@ import T from "prop-types";
|
|
|
3
3
|
|
|
4
4
|
import Icon from "../Icon/component.jsx";
|
|
5
5
|
|
|
6
|
-
const FeaturedLink = ({ url, textSize = "text-
|
|
6
|
+
const FeaturedLink = ({ url, textSize = "text-p2", iconColor = "text-cool-black", flush = false, reverse = false, additionalCSS = "", children }) => (
|
|
7
7
|
<a
|
|
8
8
|
href={url}
|
|
9
|
-
className={`
|
|
9
|
+
className={`font-sans font-bold block text-gui-default hover:text-gui-hover focus:text-gui-focus focus:outline-gui-focus group ui-${textSize} ${
|
|
10
|
+
flush ? "" : "py-8"
|
|
11
|
+
} ${additionalCSS}`}
|
|
10
12
|
style={{ "--featured-link-icon-size": `var(${textSize.replace("text", "--fs")})` }}
|
|
11
13
|
>
|
|
12
|
-
{
|
|
13
|
-
|
|
14
|
+
{reverse ? (
|
|
15
|
+
<>
|
|
16
|
+
<Icon
|
|
17
|
+
name="icon-gui-link-arrow"
|
|
18
|
+
size={`calc(var(--featured-link-icon-size) * 1.25)`}
|
|
19
|
+
color={iconColor}
|
|
20
|
+
additionalCSS="align-middle mr-8 relative -top-1 -right-4 transition-all group-hover:right-0 transform rotate-180"
|
|
21
|
+
/>
|
|
22
|
+
{children}
|
|
23
|
+
</>
|
|
24
|
+
) : (
|
|
25
|
+
<>
|
|
26
|
+
{children}
|
|
27
|
+
<Icon
|
|
28
|
+
name="icon-gui-link-arrow"
|
|
29
|
+
size={`calc(var(--featured-link-icon-size) * 1.25)`}
|
|
30
|
+
color={iconColor}
|
|
31
|
+
additionalCSS="align-middle ml-8 relative -top-1 -left-4 transition-all group-hover:left-0"
|
|
32
|
+
/>
|
|
33
|
+
</>
|
|
34
|
+
)}
|
|
14
35
|
</a>
|
|
15
36
|
);
|
|
16
37
|
|
|
@@ -20,6 +41,8 @@ FeaturedLink.propTypes = {
|
|
|
20
41
|
textSize: T.string,
|
|
21
42
|
iconColor: T.string,
|
|
22
43
|
flush: T.bool,
|
|
44
|
+
reverse: T.bool,
|
|
45
|
+
additionalCSS: T.string,
|
|
23
46
|
};
|
|
24
47
|
|
|
25
48
|
export default FeaturedLink;
|
|
@@ -3,15 +3,17 @@ module AblyUi
|
|
|
3
3
|
class FeaturedLink < ViewComponent::Base
|
|
4
4
|
def initialize(
|
|
5
5
|
url:,
|
|
6
|
-
text_size: 'text-
|
|
6
|
+
text_size: 'text-p2',
|
|
7
7
|
icon_color: 'text-cool-black',
|
|
8
8
|
flush: false,
|
|
9
|
+
reverse: false,
|
|
9
10
|
additional_css: ''
|
|
10
11
|
)
|
|
11
12
|
@url = url
|
|
12
13
|
@text_size = text_size
|
|
13
14
|
@icon_color = icon_color
|
|
14
15
|
@flush = flush
|
|
16
|
+
@reverse = reverse
|
|
15
17
|
@additional_css = additional_css
|
|
16
18
|
end
|
|
17
19
|
end
|
|
@@ -125,7 +125,7 @@ const Flash = ({ id, type, content, removeFlash }) => {
|
|
|
125
125
|
<div className={`ui-flash-message ui-grid-px ${animateEntry ? "ui-flash-message-enter" : ""}`} style={style} ref={ref} data-id="ui-flash">
|
|
126
126
|
<div className={`${FLASH_BG_COLOR[type]} p-32 flex align-center rounded shadow-container-subtle`}>
|
|
127
127
|
{withIcons[type] && <Icon name={withIcons[type]} color={iconColor[type]} size="1.5rem" additionalCSS="mr-16 self-baseline" />}
|
|
128
|
-
<p className={`ui-
|
|
128
|
+
<p className={`ui-text-p1 mr-16 ${FLASH_TEXT_COLOR[type]}`} dangerouslySetInnerHTML={{ __html: safeContent }} />
|
|
129
129
|
<button type="button" className="p-0 ml-auto self-start focus:outline-none" onClick={closeFlash}>
|
|
130
130
|
<Icon name="icon-gui-close" color={iconColor[type]} size="1.5rem" additionalCSS="transition-colors" />
|
|
131
131
|
</button>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
@layer components {
|
|
2
2
|
.ui-footer-col-title {
|
|
3
|
-
@apply text-overline2 p-menu-row-title font-
|
|
3
|
+
@apply font-mono text-overline2 p-menu-row-title font-medium uppercase tracking-widen-0.16;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.ui-footer-menu-row-link {
|
|
7
|
-
@apply text-menu3 text-cool-black font-
|
|
7
|
+
@apply text-menu3 text-cool-black font-sans font-medium hover:text-gui-hover block;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
.ui-footer-link {
|
|
11
|
-
@apply text-gui-default hover:text-gui-hover text-menu3 font-
|
|
11
|
+
@apply text-gui-default hover:text-gui-hover text-menu3 font-sans font-medium;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.ui-footer-compliance-text {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<footer class="bg-light-grey font-sans antialiased" data-id="footer">
|
|
1
|
+
<footer class="bg-light-grey font-sans antialiased leading-normal" data-id="footer">
|
|
2
2
|
<div class="max-w-screen-xl mx-auto py-32 sm:py-40 md:py-64 ui-grid-gap ui-grid-px grid grid-cols-6">
|
|
3
3
|
<div class="col-span-full md:col-span-2">
|
|
4
4
|
<div class="flex flex-row p-menu-row-snug">
|
|
5
5
|
<%= image_tag(ably_stack_path, alt: "Ably homepage", class: "mr-24 -mt-16") %>
|
|
6
|
-
<h2 class="text-overline2 col-span-full font-
|
|
6
|
+
<h2 class="ui-text-overline2 col-span-full font-mono uppercase tracking-widen-0.16">The Ably Platform</h2>
|
|
7
7
|
</div>
|
|
8
8
|
<div class="md:col-span-4 md:w-3/4 xs:w-3/5 w-full">
|
|
9
|
-
<p class="text-p3 py-16
|
|
9
|
+
<p class="ui-text-p3 font-bold py-16 p-menu-row-snug">
|
|
10
10
|
Easily power any realtime experience in your application via a simple API that handles everything realtime.
|
|
11
11
|
</p>
|
|
12
12
|
</div>
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
<%= link_to 'Support & FAQs', abs_url("/support"), class: "ui-footer-menu-row-link" %>
|
|
80
80
|
</li>
|
|
81
81
|
<li class="p-menu-row-snug">
|
|
82
|
-
<%= link_to 'SDKs', abs_url("/
|
|
82
|
+
<%= link_to 'SDKs', abs_url("/docs/sdks"), class: "ui-footer-menu-row-link" %>
|
|
83
83
|
</li>
|
|
84
84
|
<li class="p-menu-row-snug flex items-center -mt-4">
|
|
85
85
|
<a class="pr-8 ui-footer-menu-row-link" href="https://status.ably.com/">System status</a>
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
>
|
|
175
175
|
<%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
|
|
176
176
|
</a>
|
|
177
|
-
<div class="pl-16 text-menu3 font-
|
|
177
|
+
<div class="pl-16 text-menu3 font-sans font-medium">
|
|
178
178
|
<strong class="block font-medium">We're hiring!</strong>
|
|
179
179
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">
|
|
180
180
|
Learn more at Glassdoor
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
>
|
|
195
195
|
<%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
|
|
196
196
|
</a>
|
|
197
|
-
<div class="text-menu3 font-
|
|
197
|
+
<div class="text-menu3 font-sans font-medium">
|
|
198
198
|
<strong class="block font-medium">We're hiring!</strong>
|
|
199
199
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">
|
|
200
200
|
Learn more at Glassdoor
|
|
@@ -226,29 +226,29 @@
|
|
|
226
226
|
<div class="flex mr-24">
|
|
227
227
|
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12 ui-footer-tick-icon")) %>
|
|
228
228
|
<div>
|
|
229
|
-
<p class="ui-footer-compliance-text font-
|
|
230
|
-
<p class="ui-footer-compliance-text font-
|
|
229
|
+
<p class="ui-footer-compliance-text font-bold whitespace-nowrap">SOC 2 Type 2</p>
|
|
230
|
+
<p class="ui-footer-compliance-text font-medium mb-24">Certified</p>
|
|
231
231
|
</div>
|
|
232
232
|
</div>
|
|
233
233
|
<div class="flex mr-24 md:col-start-2">
|
|
234
234
|
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12 ui-footer-tick-icon")) %>
|
|
235
235
|
<div>
|
|
236
|
-
<p class="ui-footer-compliance-text font-
|
|
237
|
-
<p class="ui-footer-compliance-text font-
|
|
236
|
+
<p class="ui-footer-compliance-text font-bold whitespace-nowrap">HIPAA</p>
|
|
237
|
+
<p class="ui-footer-compliance-text font-medium mb-24">Compliant</p>
|
|
238
238
|
</div>
|
|
239
239
|
</div>
|
|
240
240
|
<div class="flex mr-24 md:col-start-3">
|
|
241
241
|
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12 ui-footer-tick-icon")) %>
|
|
242
242
|
<div>
|
|
243
|
-
<p class="ui-footer-compliance-text font-
|
|
244
|
-
<p class="ui-footer-compliance-text font-
|
|
243
|
+
<p class="ui-footer-compliance-text font-bold whitespace-nowrap">EU GDPR</p>
|
|
244
|
+
<p class="ui-footer-compliance-text font-medium mb-24">Certified</p>
|
|
245
245
|
</div>
|
|
246
246
|
</div>
|
|
247
247
|
<div class="flex mr-24 md:col-start-4">
|
|
248
248
|
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12 ui-footer-tick-icon")) %>
|
|
249
249
|
<div>
|
|
250
|
-
<p class="ui-footer-compliance-text font-
|
|
251
|
-
<p class="ui-footer-compliance-text font-
|
|
250
|
+
<p class="ui-footer-compliance-text font-bold whitespace-nowrap">256-bit AES</p>
|
|
251
|
+
<p class="ui-footer-compliance-text font-medium mb-24">Encryption</p>
|
|
252
252
|
</div>
|
|
253
253
|
</div>
|
|
254
254
|
</div>
|
|
@@ -8,15 +8,15 @@ export default function Footer({ paths, urlBase }) {
|
|
|
8
8
|
const absUrl = (path) => _absUrl(path, urlBase);
|
|
9
9
|
|
|
10
10
|
return (
|
|
11
|
-
<footer className="bg-light-grey font-sans antialiased" data-id="footer">
|
|
11
|
+
<footer className="bg-light-grey font-sans antialiased leading-normal" data-id="footer">
|
|
12
12
|
<div className="max-w-screen-xl mx-auto py-32 sm:py-40 md:py-64 ui-grid-gap ui-grid-px grid grid-cols-6">
|
|
13
13
|
<div className="col-span-full md:col-span-2">
|
|
14
14
|
<div className="flex flex-row p-menu-row-snug">
|
|
15
15
|
<img className="mr-24 -mt-16" src={paths.ablyStack} alt="Ably homepage" />
|
|
16
|
-
<h2 className="text-overline2 col-span-full
|
|
16
|
+
<h2 className="ui-text-overline2 col-span-full">The Ably Platform</h2>
|
|
17
17
|
</div>
|
|
18
18
|
<div className="md:col-span-4 md:w-3/4 xs:w-3/5 w-full">
|
|
19
|
-
<p className="text-p3 py-16
|
|
19
|
+
<p className="ui-text-p3 font-bold py-16 p-menu-row-snug">
|
|
20
20
|
Easily power any realtime experience in your application via a simple API that handles everything realtime.
|
|
21
21
|
</p>
|
|
22
22
|
</div>
|
|
@@ -130,7 +130,7 @@ export default function Footer({ paths, urlBase }) {
|
|
|
130
130
|
</a>
|
|
131
131
|
</li>
|
|
132
132
|
<li className="p-menu-row-snug">
|
|
133
|
-
<a href={absUrl("/
|
|
133
|
+
<a href={absUrl("/docs/sdks")} className="ui-footer-menu-row-link">
|
|
134
134
|
SDKs
|
|
135
135
|
</a>
|
|
136
136
|
</li>
|
|
@@ -141,7 +141,7 @@ export default function Footer({ paths, urlBase }) {
|
|
|
141
141
|
<iframe
|
|
142
142
|
className="w-20 h-20 mb-2"
|
|
143
143
|
src="https://status.ably.com/embed/icon"
|
|
144
|
-
|
|
144
|
+
allowTransparency={true}
|
|
145
145
|
frameBorder="0"
|
|
146
146
|
scrolling="no"
|
|
147
147
|
title="System Status"
|
|
@@ -264,7 +264,7 @@ export default function Footer({ paths, urlBase }) {
|
|
|
264
264
|
>
|
|
265
265
|
<Icon name="glassdoor" size="1.5rem" />
|
|
266
266
|
</a>
|
|
267
|
-
<div className="pl-16 text-menu3 font-
|
|
267
|
+
<div className="pl-16 text-menu3 font-sans font-medium">
|
|
268
268
|
<strong className="block font-medium">We're hiring!</strong>
|
|
269
269
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" className="ui-footer-link">
|
|
270
270
|
Learn more at Glassdoor
|
|
@@ -284,7 +284,7 @@ export default function Footer({ paths, urlBase }) {
|
|
|
284
284
|
>
|
|
285
285
|
<Icon name="glassdoor" size="1.5rem" />
|
|
286
286
|
</a>
|
|
287
|
-
<div className="text-menu3 font-
|
|
287
|
+
<div className="text-menu3 font-sans font-medium">
|
|
288
288
|
<strong className="block font-medium">We're hiring!</strong>
|
|
289
289
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" className="ui-footer-link">
|
|
290
290
|
Learn more at Glassdoor
|
|
@@ -326,29 +326,29 @@ export default function Footer({ paths, urlBase }) {
|
|
|
326
326
|
<div className="flex mr-24">
|
|
327
327
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
328
328
|
<div>
|
|
329
|
-
<p className="ui-footer-compliance-text font-
|
|
330
|
-
<p className="ui-footer-compliance-text font-
|
|
329
|
+
<p className="ui-footer-compliance-text font-bold whitespace-nowrap">SOC 2 Type 2</p>
|
|
330
|
+
<p className="ui-footer-compliance-text font-medium mb-24">Certified</p>
|
|
331
331
|
</div>
|
|
332
332
|
</div>
|
|
333
333
|
<div className="flex mr-24 md:col-start-2">
|
|
334
334
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
335
335
|
<div>
|
|
336
|
-
<p className="ui-footer-compliance-text font-
|
|
337
|
-
<p className="ui-footer-compliance-text font-
|
|
336
|
+
<p className="ui-footer-compliance-text font-bold whitespace-nowrap">HIPAA</p>
|
|
337
|
+
<p className="ui-footer-compliance-text font-medium mb-24">Compliant</p>
|
|
338
338
|
</div>
|
|
339
339
|
</div>
|
|
340
340
|
<div className="flex mr-24 md:col-start-3">
|
|
341
341
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
342
342
|
<div>
|
|
343
|
-
<p className="ui-footer-compliance-text font-
|
|
344
|
-
<p className="ui-footer-compliance-text font-
|
|
343
|
+
<p className="ui-footer-compliance-text font-bold whitespace-nowrap">EU GDPR</p>
|
|
344
|
+
<p className="ui-footer-compliance-text font-medium mb-24">Certified</p>
|
|
345
345
|
</div>
|
|
346
346
|
</div>
|
|
347
347
|
<div className="flex mr-24 md:col-start-4">
|
|
348
348
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
349
349
|
<div>
|
|
350
|
-
<p className="ui-footer-compliance-text font-
|
|
351
|
-
<p className="ui-footer-compliance-text font-
|
|
350
|
+
<p className="ui-footer-compliance-text font-bold whitespace-nowrap">256-bit AES</p>
|
|
351
|
+
<p className="ui-footer-compliance-text font-medium mb-24">Encryption</p>
|
|
352
352
|
</div>
|
|
353
353
|
</div>
|
|
354
354
|
</div>
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
.ui-meganav-link {
|
|
54
|
-
@apply text-menu2 font-
|
|
54
|
+
@apply text-menu2 font-bold block font-sans;
|
|
55
55
|
@apply mr-12 lg:mr-24 px-0 py-20;
|
|
56
56
|
@apply hover:text-gui-hover focus:text-gui-focus focus:outline-none;
|
|
57
57
|
@apply transition-colors;
|
|
@@ -63,13 +63,13 @@
|
|
|
63
63
|
|
|
64
64
|
.ui-meganav-mobile-link {
|
|
65
65
|
@apply p-menu-row relative -left-8 w-extend-8;
|
|
66
|
-
@apply text-menu2 font-medium block text-cool-black text-left;
|
|
66
|
+
@apply text-menu2 font-bold font-mono font-medium block text-cool-black text-left;
|
|
67
67
|
@apply flex items-center;
|
|
68
68
|
@apply focus:text-gui-focus focus:outline-none;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
.ui-meganav-account-link {
|
|
72
|
-
@apply block px-8 py-8 hover:bg-light-grey hover:text-gui-hover rounded relative -left-8 text-menu3 w-extend-8 font-
|
|
72
|
+
@apply block px-8 py-8 hover:bg-light-grey hover:text-gui-hover rounded relative -left-8 text-menu3 w-extend-8 font-bold font-mono;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.ui-meganav-content {
|
|
@@ -97,15 +97,15 @@
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
.ui-meganav-media-heading {
|
|
100
|
-
@apply text-menu3 text-cool-black font-
|
|
100
|
+
@apply text-menu3 text-cool-black font-bold font-sans group-hover:text-gui-hover group-focus:text-gui-focus leading-normal;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.ui-meganav-media-copy {
|
|
104
|
-
@apply text-p3 text-dark-grey
|
|
104
|
+
@apply text-p3 font-sans font-medium text-dark-grey leading-normal;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
.ui-meganav-overline {
|
|
108
|
-
@apply text-overline2 text-cool-black uppercase font-medium tracking-widen-0.
|
|
108
|
+
@apply text-overline2 text-cool-black uppercase font-medium font-mono tracking-widen-0.16 p-overline;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
.ui-meganav-hr {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
<div class="col-span-full md:col-span-4 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
|
|
48
48
|
<ul class="md:mt-40" aria-labelledby="meganav-developers-panel-explore">
|
|
49
49
|
<li>
|
|
50
|
-
<%= link_to abs_url("/
|
|
50
|
+
<%= link_to abs_url("/docs/sdks"), class: "ui-meganav-media-with-image group" do %>
|
|
51
51
|
<%= render(AblyUi::Core::Icon.new(name: "icon-display-sdks-col", size: "2.5rem")) %>
|
|
52
52
|
<div class="flex flex-col justify-center">
|
|
53
53
|
<p class="ui-meganav-media-heading">SDKs</p>
|
|
@@ -54,7 +54,7 @@ const MeganavContentDevelopers = ({ absUrl }) => (
|
|
|
54
54
|
<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">
|
|
55
55
|
<ul className="md:mt-40" aria-labelledby="meganav-developers-panel-explore">
|
|
56
56
|
<li>
|
|
57
|
-
<a href={absUrl("/
|
|
57
|
+
<a href={absUrl("/docs/sdks")} className="ui-meganav-media-with-image group">
|
|
58
58
|
<Icon name="icon-display-sdks-col" size="2.5rem" />
|
|
59
59
|
<div className="flex flex-col justify-center">
|
|
60
60
|
<p className="ui-meganav-media-heading">SDKs</p>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<h3 class="ui-meganav-overline ml-24">The Ably Platform</h3>
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
|
-
<p class="text-p2 font-
|
|
10
|
+
<p class="ui-text-p2 font-bold mb-24" style="max-width: 330px">
|
|
11
11
|
Easily power any realtime experience in your application. No complex infrastructure to manage or provision. Just a simple API that handles everything
|
|
12
12
|
realtime, and lets you focus on your code.
|
|
13
13
|
</p>
|
|
@@ -12,7 +12,7 @@ const MeganavContentProducts = ({ paths, absUrl }) => (
|
|
|
12
12
|
<img src={paths.ablyStack} alt="Ably homepage" />
|
|
13
13
|
<h3 className="ui-meganav-overline ml-24">The Ably Platform</h3>
|
|
14
14
|
</div>
|
|
15
|
-
<p className="text-p2 font-
|
|
15
|
+
<p className="ui-text-p2 font-bold mb-24" style={{ maxWidth: "330px" }}>
|
|
16
16
|
Easily power any realtime experience in your application. No complex infrastructure to manage or provision. Just a simple API that handles everything
|
|
17
17
|
realtime, and lets you focus on your code.
|
|
18
18
|
</p>
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<%# Note the style attribute is used for entry animation %>
|
|
2
2
|
<%= tag.div class: "ui-announcement #{bg_color} #{text_color}", data: { id: "ui-notice" }, style: "max-height: 0; overflow: hidden" do %>
|
|
3
3
|
<div class="ui-grid-px py-16 max-w-screen-xl mx-auto flex items-start">
|
|
4
|
-
<%= content_wrapper class: "
|
|
5
|
-
<strong class="font-
|
|
4
|
+
<%= content_wrapper class: "w-full pr-8 ui-text-p3 self-center" do %>
|
|
5
|
+
<strong class="font-bold whitespace-nowrap pr-4"><%= @contents[:title] %></strong>
|
|
6
6
|
<span class="pr-4"><%= @contents[:body_text] %></span>
|
|
7
7
|
<span class="underline cursor-pointer whitespace-nowrap"><%= @contents[:button_label] %></span>
|
|
8
8
|
<% end %>
|
|
9
9
|
|
|
10
10
|
<% if close_btn? %>
|
|
11
11
|
<%= button_tag type: 'button', class: 'h-20 w-20 mt-4 ml-auto border-none bg-none self-baseline' do %>
|
|
12
|
-
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-close", size: "1.25rem", color: "text-
|
|
12
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-close", size: "1.25rem", color: "text-cool-black")) %>
|
|
13
13
|
<% end %>
|
|
14
14
|
<% end %>
|
|
15
15
|
</div>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect } from "react";
|
|
2
2
|
import T from "prop-types";
|
|
3
3
|
|
|
4
|
-
const contentWrapperClasses = "
|
|
4
|
+
const contentWrapperClasses = "w-full pr-8 ui-text-p3 self-center";
|
|
5
5
|
|
|
6
6
|
import NoticeScripts from "./component.js";
|
|
7
7
|
import Icon from "../Icon/component.jsx";
|
|
@@ -38,14 +38,14 @@ const Notice = ({ buttonLink, buttonLabel, bodyText, title, config, closeBtn, bg
|
|
|
38
38
|
<div className={wrapperClasses} data-id="ui-notice" style={{ maxHeight: 0, overflow: "hidden" }}>
|
|
39
39
|
<div className="ui-grid-px py-16 max-w-screen-xl mx-auto flex items-start">
|
|
40
40
|
<ContentWrapper buttonLink={buttonLink}>
|
|
41
|
-
<strong className="font-
|
|
41
|
+
<strong className="font-bold whitespace-nowrap pr-4">{title}</strong>
|
|
42
42
|
<span className="pr-4">{bodyText}</span>
|
|
43
43
|
{buttonLabel && <span className="underline cursor-pointer whitespace-nowrap">{buttonLabel}</span>}
|
|
44
44
|
</ContentWrapper>
|
|
45
45
|
|
|
46
46
|
{closeBtn && (
|
|
47
47
|
<button type="button" className="ml-auto h-20 w-20 border-none bg-none self-baseline">
|
|
48
|
-
<Icon name="icon-gui-close" size="1.25rem" color="text-
|
|
48
|
+
<Icon name="icon-gui-close" size="1.25rem" color="text-cool-black" />
|
|
49
49
|
</button>
|
|
50
50
|
)}
|
|
51
51
|
</div>
|
|
@@ -36,15 +36,15 @@
|
|
|
36
36
|
<% if company[:layout] == "quotes" %>
|
|
37
37
|
<%= render(AblyUi::Core::Icon.new(name: "quote", size: "1.25rem", color: "text-cool-black")) %>
|
|
38
38
|
|
|
39
|
-
<p class="text-quote
|
|
39
|
+
<p class="ui-text-quote mb-24"><%= company[:quote] %></p>
|
|
40
40
|
|
|
41
41
|
<div class="flex items-center">
|
|
42
42
|
<div class="flex-shrink-0 flex-grow-0 mr-16 overflow-hidden rounded-full flex align-center justify-center w-48 h-48">
|
|
43
43
|
<%= image_tag company[:author][:thumbnail], alt: "Picture of #{company[:author][:name]}, #{company[:author][:title]}", class: "w-48 h-48 filter-grayscale" %>
|
|
44
44
|
</div>
|
|
45
45
|
<div>
|
|
46
|
-
<p class="text-p2
|
|
47
|
-
<p class="text-p3
|
|
46
|
+
<p class="ui-text-p2"><%= company[:author][:name] %></p>
|
|
47
|
+
<p class="ui-text-p3"><%= company[:author][:title] %></p>
|
|
48
48
|
</div>
|
|
49
49
|
</div>
|
|
50
50
|
<% end %>
|
|
@@ -54,16 +54,16 @@
|
|
|
54
54
|
<% company[:columns].each_with_index do |col, n| %>
|
|
55
55
|
<% if company[:columns].last == col %>
|
|
56
56
|
<div class="flex-1 mt-40 sm:mt-0 <%= col[:classname] %>" data-id="casestudy-column">
|
|
57
|
-
<p class="text-h4 pb-24"><%= col[:heading] %></p>
|
|
58
|
-
<p class="text-p1
|
|
57
|
+
<p class="ui-text-h4 pb-24"><%= col[:heading] %></p>
|
|
58
|
+
<p class="ui-text-p1"><%= col[:text] %></p>
|
|
59
59
|
<%- if col[:button] %>
|
|
60
60
|
<a class="ui-btn self-start p-btn mt-24" href="<%= col[:button][:href] %>"><%= col[:button][:label] %></a>
|
|
61
61
|
<% end %>
|
|
62
62
|
</div>
|
|
63
63
|
<% else %>
|
|
64
64
|
<div class="flex-1 mt-40 sm:mt-0 mr-24 sm:mr-32 xl:mr-64 <%= col[:classname] %>" data-id="casestudy-column">
|
|
65
|
-
<p class="text-title-xl
|
|
66
|
-
<p class="text-p1
|
|
65
|
+
<p class="ui-text-title-xl"><%= col[:heading] %></p>
|
|
66
|
+
<p class="ui-text-p1 mb-0 sm:mb-32"><%= col[:text] %></p>
|
|
67
67
|
</div>
|
|
68
68
|
<% end %>
|
|
69
69
|
<% end %>
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
.ui-uptime-key {
|
|
87
87
|
@apply block mt-16 mr-20 bg-transparent;
|
|
88
88
|
@apply sm:inline-block sm:mt-0;
|
|
89
|
-
@apply font-
|
|
89
|
+
@apply font-medium text-p2 text-white block sm:inline-flex items-center;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
.ui-uptime-key:first-child {
|