@ably/ui 8.7.0-dev.2b71529 → 8.7.0-dev.33117ed
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/Code/component.css +0 -2
- package/core/FeatureFooter.jsx +17 -0
- package/core/FeaturedLink/component.css +1 -1
- package/core/Footer/component.css +3 -3
- package/core/Footer.jsx +15 -25
- package/core/Icon/component.css +1 -0
- package/core/Meganav/component.css +7 -7
- package/core/Meganav/component.json +1 -1
- package/core/Meganav.jsx +46 -58
- package/core/MeganavContentDevelopers.jsx +13 -1
- package/core/MeganavContentPlatform/component.js +1 -1
- package/core/MeganavContentPlatform.jsx +166 -85
- package/core/MeganavContentProducts/component.js +1 -0
- package/core/MeganavContentProducts.jsx +333 -0
- package/core/MeganavContentUseCases.jsx +4 -4
- package/core/MeganavContentWhyAbly/component.js +1 -22
- package/core/MeganavContentWhyAbly.jsx +349 -2170
- package/core/MeganavItemsDesktop.jsx +2 -2
- package/core/MeganavItemsMobile.jsx +1 -1
- package/core/Notice/component.css +1 -1
- package/core/Notice.jsx +2 -2
- package/core/sprites.svg +27 -0
- package/core/styles.css +80 -117
- package/package.json +1 -1
- package/src/core/FeaturedLink/component.css +1 -1
- package/src/core/Footer/component.css +3 -3
- package/src/core/Footer/component.html.erb +14 -20
- package/src/core/Footer/component.jsx +14 -24
- package/src/core/Meganav/component.css +7 -7
- package/src/core/Meganav/component.json +1 -1
- package/src/core/Meganav/component.jsx +2 -2
- package/src/core/Meganav/component.rb +4 -4
- package/src/core/MeganavContentDevelopers/component.html.erb +9 -0
- package/src/core/MeganavContentDevelopers/component.jsx +9 -0
- package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.html.erb +16 -34
- package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.jsx +19 -40
- package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.rb +1 -1
- package/src/core/MeganavContentUseCases/component.html.erb +4 -4
- package/src/core/MeganavContentUseCases/component.jsx +4 -4
- package/src/core/MeganavItemsDesktop/component.jsx +1 -1
- package/src/core/MeganavItemsDesktop/component.rb +1 -1
- package/src/core/Notice/component.css +1 -1
- package/src/core/Notice/component.html.erb +2 -2
- package/src/core/Notice/component.jsx +2 -2
- package/src/core/icons/icon-display-asset-tracking-col.svg +18 -0
- package/src/core/icons/icon-display-examples-col.svg +11 -0
- package/src/core/styles/buttons.css +5 -5
- package/src/core/styles/forms.css +5 -5
- package/src/core/styles/properties.css +31 -49
- package/src/core/styles/text.css +39 -58
- package/src/core/utils/syntax-highlighter.css +0 -2
- package/tailwind.config.js +25 -41
- package/core/Meganav/component.js.LICENSE.txt +0 -7
- package/core/MeganavSearchAutocomplete/component.js.LICENSE.txt +0 -7
- package/core/fonts/jetBrains-mono.css +0 -3
- package/core/fonts/manrope.css +0 -3
- package/src/core/fonts/jetBrains-mono.css +0 -3
- package/src/core/fonts/manrope.css +0 -3
- /package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.js +0 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
<footer class="bg-light-grey font-
|
|
1
|
+
<footer class="bg-light-grey font-sans antialiased" 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="text-overline2 col-span-full font-medium uppercase tracking-widen-0.1">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="
|
|
9
|
+
<p class="text-p3 py-16 font-medium 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>
|
|
13
13
|
<ul class="grid grid-cols-1">
|
|
14
14
|
<li class="p-menu-row-snug">
|
|
15
|
-
<%= link_to 'Pub/sub messaging', abs_url("/
|
|
15
|
+
<%= link_to 'Pub/sub messaging', abs_url("/solutions/channels"), class: "ui-footer-menu-row-link" %>
|
|
16
16
|
</li>
|
|
17
17
|
<li class="p-menu-row-snug">
|
|
18
18
|
<%= link_to 'Push notifications', abs_url("/push-notifications"), class: "ui-footer-menu-row-link" %>
|
|
@@ -23,9 +23,6 @@
|
|
|
23
23
|
<li class="p-menu-row-snug">
|
|
24
24
|
<%= link_to 'Multiple protocol messaging', abs_url("/protocols"), class: "ui-footer-menu-row-link" %>
|
|
25
25
|
</li>
|
|
26
|
-
<li class="p-menu-row-snug">
|
|
27
|
-
<%= link_to 'Streaming data sources', abs_url("/hub"), class: "ui-footer-menu-row-link" %>
|
|
28
|
-
</li>
|
|
29
26
|
</ul>
|
|
30
27
|
</div>
|
|
31
28
|
<div class="col-span-full xs:col-span-3 md:col-span-1">
|
|
@@ -49,9 +46,6 @@
|
|
|
49
46
|
<li class="p-menu-row-snug">
|
|
50
47
|
<%= link_to 'Healthcare', abs_url("/solutions/healthcare"), class: "ui-footer-menu-row-link" %>
|
|
51
48
|
</li>
|
|
52
|
-
<li class="p-menu-row-snug">
|
|
53
|
-
<%= link_to 'Streaming data sources', abs_url("/hub"), class: "ui-footer-menu-row-link" %>
|
|
54
|
-
</li>
|
|
55
49
|
<li class="p-menu-row-snug">
|
|
56
50
|
<%= link_to 'eCommerce & Retail', abs_url("/solutions/ecommerce-and-retail"), class: "ui-footer-menu-row-link" %>
|
|
57
51
|
</li>
|
|
@@ -180,7 +174,7 @@
|
|
|
180
174
|
>
|
|
181
175
|
<%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
|
|
182
176
|
</a>
|
|
183
|
-
<div class="pl-16 text-menu3 font-
|
|
177
|
+
<div class="pl-16 text-menu3 font-light">
|
|
184
178
|
<strong class="block font-medium">We're hiring!</strong>
|
|
185
179
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">
|
|
186
180
|
Learn more at Glassdoor
|
|
@@ -200,7 +194,7 @@
|
|
|
200
194
|
>
|
|
201
195
|
<%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
|
|
202
196
|
</a>
|
|
203
|
-
<div class="text-menu3 font-
|
|
197
|
+
<div class="text-menu3 font-light">
|
|
204
198
|
<strong class="block font-medium">We're hiring!</strong>
|
|
205
199
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">
|
|
206
200
|
Learn more at Glassdoor
|
|
@@ -231,29 +225,29 @@
|
|
|
231
225
|
<div class="flex mr-24">
|
|
232
226
|
<%= 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")) %>
|
|
233
227
|
<div>
|
|
234
|
-
<p class="ui-footer-compliance-text font-
|
|
235
|
-
<p class="ui-footer-compliance-text font-
|
|
228
|
+
<p class="ui-footer-compliance-text font-medium whitespace-nowrap">SOC 2 Type 2</p>
|
|
229
|
+
<p class="ui-footer-compliance-text font-light mb-24">Certified</p>
|
|
236
230
|
</div>
|
|
237
231
|
</div>
|
|
238
232
|
<div class="flex mr-24 md:col-start-2">
|
|
239
233
|
<%= 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")) %>
|
|
240
234
|
<div>
|
|
241
|
-
<p class="ui-footer-compliance-text font-
|
|
242
|
-
<p class="ui-footer-compliance-text font-
|
|
235
|
+
<p class="ui-footer-compliance-text font-medium whitespace-nowrap">HIPAA</p>
|
|
236
|
+
<p class="ui-footer-compliance-text font-light mb-24">Compliant</p>
|
|
243
237
|
</div>
|
|
244
238
|
</div>
|
|
245
239
|
<div class="flex mr-24 md:col-start-3">
|
|
246
240
|
<%= 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")) %>
|
|
247
241
|
<div>
|
|
248
|
-
<p class="ui-footer-compliance-text font-
|
|
249
|
-
<p class="ui-footer-compliance-text font-
|
|
242
|
+
<p class="ui-footer-compliance-text font-medium whitespace-nowrap">EU GDPR</p>
|
|
243
|
+
<p class="ui-footer-compliance-text font-light mb-24">Certified</p>
|
|
250
244
|
</div>
|
|
251
245
|
</div>
|
|
252
246
|
<div class="flex mr-24 md:col-start-4">
|
|
253
247
|
<%= 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")) %>
|
|
254
248
|
<div>
|
|
255
|
-
<p class="ui-footer-compliance-text font-
|
|
256
|
-
<p class="ui-footer-compliance-text font-
|
|
249
|
+
<p class="ui-footer-compliance-text font-medium whitespace-nowrap">256-bit AES</p>
|
|
250
|
+
<p class="ui-footer-compliance-text font-light mb-24">Encryption</p>
|
|
257
251
|
</div>
|
|
258
252
|
</div>
|
|
259
253
|
</div>
|
|
@@ -8,22 +8,22 @@ 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-
|
|
11
|
+
<footer className="bg-light-grey font-sans antialiased" 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
|
|
16
|
+
<h2 className="text-overline2 col-span-full font-medium uppercase tracking-widen-0.1">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="
|
|
19
|
+
<p className="text-p3 py-16 font-medium 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>
|
|
23
23
|
|
|
24
24
|
<ul className="grid grid-cols-1">
|
|
25
25
|
<li className="p-menu-row-snug">
|
|
26
|
-
<a href={absUrl("/
|
|
26
|
+
<a href={absUrl("/solutions/channels")} className="ui-footer-menu-row-link">
|
|
27
27
|
Pub/sub messaging
|
|
28
28
|
</a>
|
|
29
29
|
</li>
|
|
@@ -42,11 +42,6 @@ export default function Footer({ paths, urlBase }) {
|
|
|
42
42
|
Multiple protocol messaging
|
|
43
43
|
</a>
|
|
44
44
|
</li>
|
|
45
|
-
<li className="p-menu-row-snug">
|
|
46
|
-
<a href={absUrl("/hub")} className="ui-footer-menu-row-link">
|
|
47
|
-
Streaming data sources
|
|
48
|
-
</a>
|
|
49
|
-
</li>
|
|
50
45
|
</ul>
|
|
51
46
|
</div>
|
|
52
47
|
|
|
@@ -83,11 +78,6 @@ export default function Footer({ paths, urlBase }) {
|
|
|
83
78
|
Healthcare
|
|
84
79
|
</a>
|
|
85
80
|
</li>
|
|
86
|
-
<li className="p-menu-row-snug">
|
|
87
|
-
<a href={absUrl("/hub")} className="ui-footer-menu-row-link">
|
|
88
|
-
Streaming data sources
|
|
89
|
-
</a>
|
|
90
|
-
</li>
|
|
91
81
|
<li className="p-menu-row-snug">
|
|
92
82
|
<a href={absUrl("/solutions/ecommerce-and-retail")} className="ui-footer-menu-row-link">
|
|
93
83
|
eCommerce & Retail
|
|
@@ -274,7 +264,7 @@ export default function Footer({ paths, urlBase }) {
|
|
|
274
264
|
>
|
|
275
265
|
<Icon name="glassdoor" size="1.5rem" />
|
|
276
266
|
</a>
|
|
277
|
-
<div className="pl-16 text-menu3 font-
|
|
267
|
+
<div className="pl-16 text-menu3 font-light">
|
|
278
268
|
<strong className="block font-medium">We're hiring!</strong>
|
|
279
269
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" className="ui-footer-link">
|
|
280
270
|
Learn more at Glassdoor
|
|
@@ -294,7 +284,7 @@ export default function Footer({ paths, urlBase }) {
|
|
|
294
284
|
>
|
|
295
285
|
<Icon name="glassdoor" size="1.5rem" />
|
|
296
286
|
</a>
|
|
297
|
-
<div className="text-menu3 font-
|
|
287
|
+
<div className="text-menu3 font-light">
|
|
298
288
|
<strong className="block font-medium">We're hiring!</strong>
|
|
299
289
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" className="ui-footer-link">
|
|
300
290
|
Learn more at Glassdoor
|
|
@@ -335,29 +325,29 @@ export default function Footer({ paths, urlBase }) {
|
|
|
335
325
|
<div className="flex mr-24">
|
|
336
326
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
337
327
|
<div>
|
|
338
|
-
<p className="ui-footer-compliance-text font-
|
|
339
|
-
<p className="ui-footer-compliance-text font-
|
|
328
|
+
<p className="ui-footer-compliance-text font-medium whitespace-nowrap">SOC 2 Type 2</p>
|
|
329
|
+
<p className="ui-footer-compliance-text font-light mb-24">Certified</p>
|
|
340
330
|
</div>
|
|
341
331
|
</div>
|
|
342
332
|
<div className="flex mr-24 md:col-start-2">
|
|
343
333
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
344
334
|
<div>
|
|
345
|
-
<p className="ui-footer-compliance-text font-
|
|
346
|
-
<p className="ui-footer-compliance-text font-
|
|
335
|
+
<p className="ui-footer-compliance-text font-medium whitespace-nowrap">HIPAA</p>
|
|
336
|
+
<p className="ui-footer-compliance-text font-light mb-24">Compliant</p>
|
|
347
337
|
</div>
|
|
348
338
|
</div>
|
|
349
339
|
<div className="flex mr-24 md:col-start-3">
|
|
350
340
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
351
341
|
<div>
|
|
352
|
-
<p className="ui-footer-compliance-text font-
|
|
353
|
-
<p className="ui-footer-compliance-text font-
|
|
342
|
+
<p className="ui-footer-compliance-text font-medium whitespace-nowrap">EU GDPR</p>
|
|
343
|
+
<p className="ui-footer-compliance-text font-light mb-24">Certified</p>
|
|
354
344
|
</div>
|
|
355
345
|
</div>
|
|
356
346
|
<div className="flex mr-24 md:col-start-4">
|
|
357
347
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
358
348
|
<div>
|
|
359
|
-
<p className="ui-footer-compliance-text font-
|
|
360
|
-
<p className="ui-footer-compliance-text font-
|
|
349
|
+
<p className="ui-footer-compliance-text font-medium whitespace-nowrap">256-bit AES</p>
|
|
350
|
+
<p className="ui-footer-compliance-text font-light mb-24">Encryption</p>
|
|
361
351
|
</div>
|
|
362
352
|
</div>
|
|
363
353
|
</div>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
z-index: var(--stacking-context-page-meganav);
|
|
8
8
|
|
|
9
9
|
@apply fixed top-0 w-full;
|
|
10
|
-
@apply antialiased font-
|
|
10
|
+
@apply antialiased font-sans transition-colors;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.ui-meganav {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
.ui-meganav-link {
|
|
54
|
-
@apply text-menu2 font-
|
|
54
|
+
@apply text-menu2 font-medium block;
|
|
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
|
|
66
|
+
@apply text-menu2 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-light;
|
|
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-medium group-hover:text-gui-hover group-focus:text-gui-focus;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.ui-meganav-media-copy {
|
|
104
|
-
@apply text-p3
|
|
104
|
+
@apply text-p3 text-dark-grey font-light;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
.ui-meganav-overline {
|
|
108
|
-
@apply text-overline2 text-cool-black uppercase font-
|
|
108
|
+
@apply text-overline2 text-cool-black uppercase font-medium tracking-widen-0.15 p-overline;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
.ui-meganav-hr {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"panels": [
|
|
32
|
-
{ "label": "
|
|
32
|
+
{ "label": "Products", "shortLabel": "Products", "id": "products-panel", "component": "MeganavContentProducts" },
|
|
33
33
|
{ "label": "Solutions", "shortLabel": "Solutions", "id": "use-cases-panel", "component": "MeganavContentUseCases" },
|
|
34
34
|
{ "label": "Company", "shortLabel": "Company", "id": "company-panel", "component": "MeganavContentCompany" },
|
|
35
35
|
{ "label": "Developers", "shortLabel": "Developers", "id": "developers-panel", "component": "MeganavContentDevelopers" }
|
|
@@ -14,7 +14,7 @@ import Notice from "../Notice/component.jsx";
|
|
|
14
14
|
import MeganavData from "./component.json";
|
|
15
15
|
import _absUrl from "../url-base";
|
|
16
16
|
|
|
17
|
-
import
|
|
17
|
+
import MeganavContentProducts from "../MeganavContentProducts/component.jsx";
|
|
18
18
|
import MeganavContentUseCases from "../MeganavContentUseCases/component.jsx";
|
|
19
19
|
import MeganavContentCompany from "../MeganavContentCompany/component.jsx";
|
|
20
20
|
import MeganavContentDevelopers from "../MeganavContentDevelopers/component.jsx";
|
|
@@ -58,7 +58,7 @@ SignIn.propTypes = {
|
|
|
58
58
|
const SignInPlaceholder = () => <div />;
|
|
59
59
|
|
|
60
60
|
const panels = {
|
|
61
|
-
|
|
61
|
+
MeganavContentProducts: MeganavContentProducts,
|
|
62
62
|
MeganavContentUseCases: MeganavContentUseCases,
|
|
63
63
|
MeganavContentCompany: MeganavContentCompany,
|
|
64
64
|
MeganavContentDevelopers: MeganavContentDevelopers,
|
|
@@ -30,10 +30,10 @@ module AblyUi
|
|
|
30
30
|
def panels
|
|
31
31
|
[
|
|
32
32
|
{
|
|
33
|
-
label: '
|
|
34
|
-
short_label: '
|
|
35
|
-
id: '
|
|
36
|
-
class: 'AblyUi::Core::
|
|
33
|
+
label: 'Products',
|
|
34
|
+
short_label: 'Products',
|
|
35
|
+
id: 'products-panel',
|
|
36
|
+
class: 'AblyUi::Core::MeganavContentProducts'
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
label: 'Solutions',
|
|
@@ -33,6 +33,15 @@
|
|
|
33
33
|
</div>
|
|
34
34
|
<% end %>
|
|
35
35
|
</li>
|
|
36
|
+
<li>
|
|
37
|
+
<%= link_to abs_url("/examples"), class: "ui-meganav-media-with-image group" do %>
|
|
38
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-examples-col", size: "2.5rem")) %>
|
|
39
|
+
<div class="flex flex-col justify-center">
|
|
40
|
+
<p class="ui-meganav-media-heading">Live examples</p>
|
|
41
|
+
<p class="ui-meganav-media-copy">Discover our features and their use cases.</p>
|
|
42
|
+
</div>
|
|
43
|
+
<% end %>
|
|
44
|
+
</li>
|
|
36
45
|
</ul>
|
|
37
46
|
</div>
|
|
38
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">
|
|
@@ -39,6 +39,15 @@ const MeganavContentDevelopers = ({ absUrl }) => (
|
|
|
39
39
|
</div>
|
|
40
40
|
</a>
|
|
41
41
|
</li>
|
|
42
|
+
<li>
|
|
43
|
+
<a href={absUrl("/examples")} className="ui-meganav-media-with-image group">
|
|
44
|
+
<Icon name="icon-display-examples-col" size="2.5rem" />
|
|
45
|
+
<div className="flex flex-col justify-center">
|
|
46
|
+
<p className="ui-meganav-media-heading">Live examples</p>
|
|
47
|
+
<p className="ui-meganav-media-copy">Discover our features and their use cases.</p>
|
|
48
|
+
</div>
|
|
49
|
+
</a>
|
|
50
|
+
</li>
|
|
42
51
|
</ul>
|
|
43
52
|
</div>
|
|
44
53
|
|
|
@@ -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="text-p2 font-medium text-cool-black 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>
|
|
@@ -16,52 +16,34 @@
|
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
<div class="col-span-full md:col-span-4 pt-24 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white">
|
|
19
|
-
<h3 class="ui-meganav-overline" id="meganav-
|
|
20
|
-
|
|
19
|
+
<h3 class="ui-meganav-overline" id="meganav-products-panel-list-examples">
|
|
20
|
+
Products
|
|
21
|
+
</h3>
|
|
22
|
+
<ul class="mb-16" aria-labelledby="meganav-products-panel-list-examples">
|
|
21
23
|
<li>
|
|
22
|
-
<%= link_to abs_url("/
|
|
23
|
-
<p class="ui-meganav-media-heading">
|
|
24
|
-
<p class="ui-meganav-media-copy">
|
|
24
|
+
<%= link_to abs_url("/solutions/channels"), class: "ui-meganav-media group" do %>
|
|
25
|
+
<p class="ui-meganav-media-heading">Pub/Sub Channels</p>
|
|
26
|
+
<p class="ui-meganav-media-copy">Build infinitely scalable realtime applications.</p>
|
|
25
27
|
<% end %>
|
|
26
28
|
</li>
|
|
27
29
|
<li>
|
|
28
|
-
<%= link_to abs_url("/
|
|
29
|
-
<p class="ui-meganav-media-heading">
|
|
30
|
-
<p class="ui-meganav-media-copy">
|
|
30
|
+
<%= link_to abs_url("/spaces"), class: "ui-meganav-media group" do %>
|
|
31
|
+
<p class="ui-meganav-media-heading">Spaces (Beta)</p>
|
|
32
|
+
<p class="ui-meganav-media-copy">Create multi-user collaborative environments.</p>
|
|
31
33
|
<% end %>
|
|
32
34
|
</li>
|
|
33
35
|
<li>
|
|
34
|
-
<%= link_to abs_url("/
|
|
35
|
-
<p class="ui-meganav-media-heading">
|
|
36
|
-
<p class="ui-meganav-media-copy">
|
|
37
|
-
<% end %>
|
|
38
|
-
</li>
|
|
39
|
-
<li>
|
|
40
|
-
<%= link_to abs_url("/examples/live-cursors"), class: "ui-meganav-media group" do %>
|
|
41
|
-
<p class="ui-meganav-media-heading">Live Cursors</p>
|
|
42
|
-
<p class="ui-meganav-media-copy">Track all cursors in realtime.</p>
|
|
43
|
-
<% end %>
|
|
44
|
-
</li>
|
|
45
|
-
<li>
|
|
46
|
-
<%= link_to abs_url("/examples/typing-indicator"), class: "ui-meganav-media group" do %>
|
|
47
|
-
<p class="ui-meganav-media-heading">Typing Indicator</p>
|
|
48
|
-
<p class="ui-meganav-media-copy">See when a user is typing a message.</p>
|
|
49
|
-
<% end %>
|
|
50
|
-
</li>
|
|
51
|
-
<li>
|
|
52
|
-
<%= link_to abs_url("/examples/chat-admin-privileges"), class: "ui-meganav-media group" do %>
|
|
53
|
-
<p class="ui-meganav-media-heading">Chat Admin Privileges</p>
|
|
54
|
-
<p class="ui-meganav-media-copy">Control who can take admin actions in a digital space.</p>
|
|
36
|
+
<%= link_to abs_url("/livesync"), class: "ui-meganav-media group" do %>
|
|
37
|
+
<p class="ui-meganav-media-heading">LiveSync (Pre release)</p>
|
|
38
|
+
<p class="ui-meganav-media-copy">Keep clients in sync with any relational database.</p>
|
|
55
39
|
<% end %>
|
|
56
40
|
</li>
|
|
57
41
|
</ul>
|
|
58
|
-
|
|
59
|
-
<%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/examples"), text_size: 'text-p3')) do %>Explore all live examples<% end %>
|
|
60
42
|
</div>
|
|
61
43
|
|
|
62
44
|
<div class="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 bg-white">
|
|
63
|
-
<h3 class="ui-meganav-overline" id="meganav-
|
|
64
|
-
<ul class="mb-16" aria-labelledby="meganav-
|
|
45
|
+
<h3 class="ui-meganav-overline" id="meganav-products-panel-list-our-technology">Technology</h3>
|
|
46
|
+
<ul class="mb-16" aria-labelledby="meganav-products-panel-list-our-technology">
|
|
65
47
|
<li>
|
|
66
48
|
<%= link_to abs_url("/four-pillars-of-dependability#performance"), class: "ui-meganav-media group" do %>
|
|
67
49
|
<p class="ui-meganav-media-heading">Predictable performance</p>
|
|
@@ -3,7 +3,7 @@ import T from "prop-types";
|
|
|
3
3
|
|
|
4
4
|
import FeaturedLink from "../FeaturedLink/component.jsx";
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const MeganavContentProducts = ({ paths, absUrl }) => (
|
|
7
7
|
<div className="flex max-w-screen-xl mx-auto">
|
|
8
8
|
<div className="ui-meganav-content-spacer bg-extra-light-grey"></div>
|
|
9
9
|
<section className="grid grid-cols-12 ui-grid-gap-x w-full">
|
|
@@ -12,7 +12,7 @@ const MeganavContentPlatform = ({ 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="text-p2 font-medium text-cool-black 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>
|
|
@@ -23,57 +23,36 @@ const MeganavContentPlatform = ({ paths, absUrl }) => (
|
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
25
|
<div className="col-span-full md:col-span-4 pt-24 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white">
|
|
26
|
-
<h3 className="ui-meganav-overline" id="meganav-
|
|
27
|
-
|
|
26
|
+
<h3 className="ui-meganav-overline" id="meganav-products-panel-list-examples">
|
|
27
|
+
Products
|
|
28
28
|
</h3>
|
|
29
|
-
<ul className="mb-16" aria-labelledby="meganav-
|
|
29
|
+
<ul className="mb-16" aria-labelledby="meganav-products-panel-list-examples">
|
|
30
30
|
<li>
|
|
31
|
-
<a href={absUrl("/
|
|
32
|
-
<p className="ui-meganav-media-heading">
|
|
33
|
-
<p className="ui-meganav-media-copy">
|
|
31
|
+
<a href={absUrl("/solutions/channels")} className="group ui-meganav-media">
|
|
32
|
+
<p className="ui-meganav-media-heading">Pub/Sub Channels</p>
|
|
33
|
+
<p className="ui-meganav-media-copy">Build infinitely scalable realtime applications.</p>
|
|
34
34
|
</a>
|
|
35
35
|
</li>
|
|
36
36
|
<li>
|
|
37
|
-
<a href={absUrl("/
|
|
38
|
-
<p className="ui-meganav-media-heading">
|
|
39
|
-
<p className="ui-meganav-media-copy">
|
|
37
|
+
<a href={absUrl("/spaces")} className="group ui-meganav-media">
|
|
38
|
+
<p className="ui-meganav-media-heading">Spaces (Beta)</p>
|
|
39
|
+
<p className="ui-meganav-media-copy">Create multi-user collaborative environments.</p>
|
|
40
40
|
</a>
|
|
41
41
|
</li>
|
|
42
42
|
<li>
|
|
43
|
-
<a href={absUrl("/
|
|
44
|
-
<p className="ui-meganav-media-heading">
|
|
45
|
-
<p className="ui-meganav-media-copy">
|
|
46
|
-
</a>
|
|
47
|
-
</li>
|
|
48
|
-
<li>
|
|
49
|
-
<a href={absUrl("/examples/live-cursors")} className="ui-meganav-media group">
|
|
50
|
-
<p className="ui-meganav-media-heading">Live Cursors</p>
|
|
51
|
-
<p className="ui-meganav-media-copy">Track all cursors in realtime.</p>
|
|
52
|
-
</a>
|
|
53
|
-
</li>
|
|
54
|
-
<li>
|
|
55
|
-
<a href={absUrl("/examples/typing-indicator")} className="ui-meganav-media group">
|
|
56
|
-
<p className="ui-meganav-media-heading">Typing Indicator</p>
|
|
57
|
-
<p className="ui-meganav-media-copy">See when a user is typing a message.</p>
|
|
58
|
-
</a>
|
|
59
|
-
</li>
|
|
60
|
-
<li>
|
|
61
|
-
<a href={absUrl("/examples/chat-admin-privileges")} className="ui-meganav-media group">
|
|
62
|
-
<p className="ui-meganav-media-heading">Chat Admin Privileges</p>
|
|
63
|
-
<p className="ui-meganav-media-copy">Control who can take admin actions in a digital space.</p>
|
|
43
|
+
<a href={absUrl("/livesync")} className="group ui-meganav-media">
|
|
44
|
+
<p className="ui-meganav-media-heading">LiveSync (Pre release)</p>
|
|
45
|
+
<p className="ui-meganav-media-copy">Keep clients in sync with any relational database.</p>
|
|
64
46
|
</a>
|
|
65
47
|
</li>
|
|
66
48
|
</ul>
|
|
67
|
-
<FeaturedLink url={absUrl("/examples")} textSize="text-p3">
|
|
68
|
-
Explore all live examples
|
|
69
|
-
</FeaturedLink>
|
|
70
49
|
</div>
|
|
71
50
|
|
|
72
51
|
<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 bg-white">
|
|
73
|
-
<h3 className="ui-meganav-overline" id="meganav-
|
|
74
|
-
|
|
52
|
+
<h3 className="ui-meganav-overline" id="meganav-products-panel-list-our-technology">
|
|
53
|
+
Technology
|
|
75
54
|
</h3>
|
|
76
|
-
<ul className="mb-16" aria-labelledby="meganav-
|
|
55
|
+
<ul className="mb-16" aria-labelledby="meganav-products-panel-list-our-technology">
|
|
77
56
|
<li>
|
|
78
57
|
<a href={absUrl("/four-pillars-of-dependability#performance")} className="ui-meganav-media group">
|
|
79
58
|
<p className="ui-meganav-media-heading">Predictable performance</p>
|
|
@@ -115,7 +94,7 @@ const MeganavContentPlatform = ({ paths, absUrl }) => (
|
|
|
115
94
|
</div>
|
|
116
95
|
);
|
|
117
96
|
|
|
118
|
-
|
|
97
|
+
MeganavContentProducts.propTypes = {
|
|
119
98
|
paths: T.shape({
|
|
120
99
|
ablyStack: T.string,
|
|
121
100
|
iconSprites: T.string,
|
|
@@ -123,4 +102,4 @@ MeganavContentPlatform.propTypes = {
|
|
|
123
102
|
absUrl: T.func,
|
|
124
103
|
};
|
|
125
104
|
|
|
126
|
-
export default
|
|
105
|
+
export default MeganavContentProducts;
|
|
@@ -53,11 +53,11 @@
|
|
|
53
53
|
<% end %>
|
|
54
54
|
</li>
|
|
55
55
|
<li>
|
|
56
|
-
<%= link_to abs_url("/solutions/
|
|
57
|
-
<%= render(AblyUi::Core::Icon.new(name: "icon-display-
|
|
56
|
+
<%= link_to abs_url("/solutions/asset-tracking"), class: "ui-meganav-media-with-image group" do %>
|
|
57
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-asset-tracking-col", size: "2.5rem")) %>
|
|
58
58
|
<div class="flex flex-col justify-center">
|
|
59
|
-
<p class="ui-meganav-media-heading">
|
|
60
|
-
<p class="ui-meganav-media-copy">
|
|
59
|
+
<p class="ui-meganav-media-heading">Asset Tracking (Beta)</p>
|
|
60
|
+
<p class="ui-meganav-media-copy">Track assets in realtime with a solution optimised for last mile logistics.</p>
|
|
61
61
|
</div>
|
|
62
62
|
<% end %>
|
|
63
63
|
</li>
|
|
@@ -58,11 +58,11 @@ const MeganavContentUseCases = ({ absUrl }) => (
|
|
|
58
58
|
</a>
|
|
59
59
|
</li>
|
|
60
60
|
<li>
|
|
61
|
-
<a href={absUrl("/solutions/
|
|
62
|
-
<Icon name="icon-display-
|
|
61
|
+
<a href={absUrl("/solutions/asset-tracking")} className="ui-meganav-media-with-image group">
|
|
62
|
+
<Icon name="icon-display-asset-tracking-col" size="2.5rem" />
|
|
63
63
|
<div className="flex flex-col justify-center">
|
|
64
|
-
<p className="ui-meganav-media-heading">
|
|
65
|
-
<p className="ui-meganav-media-copy">
|
|
64
|
+
<p className="ui-meganav-media-heading">Asset Tracking (Beta)</p>
|
|
65
|
+
<p className="ui-meganav-media-copy">Track assets in realtime with a solution optimised for last mile logistics.</p>
|
|
66
66
|
</div>
|
|
67
67
|
</a>
|
|
68
68
|
</li>
|
|
@@ -8,7 +8,7 @@ const MeganavDesktopItems = ({ panels, paths, theme, absUrl }) => (
|
|
|
8
8
|
<ul className="hidden md:flex" data-id="meganav-items-desktop">
|
|
9
9
|
{MeganavData.panels.map((panel) => {
|
|
10
10
|
const PanelComponent = panels[panel.component];
|
|
11
|
-
const bgCSS = ["
|
|
11
|
+
const bgCSS = ["products-panel", "use-cases-panel"].includes(panel.id) ? "ui-meganav-panel-split-bg" : "";
|
|
12
12
|
|
|
13
13
|
return (
|
|
14
14
|
<li className="ui-meganav-item" key={panel.id}>
|
|
@@ -1,8 +1,8 @@
|
|
|
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: "font-
|
|
5
|
-
<strong class="font-
|
|
4
|
+
<%= content_wrapper class: "font-light w-full pr-8 text-p3 self-center" do %>
|
|
5
|
+
<strong class="font-medium 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 %>
|