@ably/ui 10.9.0 → 10.11.0

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 CHANGED
@@ -294,10 +294,14 @@ To deploy a review app with your in-progress code, you can use the `pre-release`
294
294
  scripts/pre-release.sh
295
295
  ```
296
296
 
297
- This will do a couple of things:
297
+ This script is a combination of two scripts:
298
298
 
299
- update your local dependencies for ably-ui and run a production build
300
- — release a gem and a NPM package with the version built from your current SemVer but adding a pre-release tag based on a short SHA of your HEAD commit
299
+ 1. Pre-Release:
300
+
301
+ - update your local dependencies for ably-ui and run a production build
302
+ - release a gem and a NPM package with the version built from your current SemVer but adding a pre-release tag based on a short SHA of your HEAD commit
303
+
304
+ 2. Update Pre-Release Version:
301
305
 
302
306
  - update the preview app
303
307
  - commit all the above and push to origin
@@ -8,13 +8,23 @@
8
8
  }
9
9
 
10
10
  .ui-footer-link {
11
- @apply text-gui-default hover:text-gui-hover hover:underline text-menu3 font-light;
11
+ @apply text-gui-default hover:text-gui-hover text-menu3 font-light;
12
12
  }
13
13
 
14
14
  .ui-footer-compliance-text {
15
15
  font-size: 12px;
16
16
  }
17
17
 
18
+ .ui-footer-tick-icon {
19
+ min-width: 1.5rem;
20
+ }
21
+
22
+ @media (max-width: 1040px) {
23
+ .ui-footer-bottom-links {
24
+ @apply pb-40;
25
+ }
26
+ }
27
+
18
28
  @media screen {
19
29
  .ui-footer-glassdoor {
20
30
  display: none;
package/core/Footer.jsx CHANGED
@@ -191,9 +191,9 @@ function Footer(_ref) {
191
191
  className: "bg-light-grey font-sans antialiased",
192
192
  "data-id": "footer"
193
193
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
194
- className: "max-w-screen-xl mx-auto py-32 sm:py-40 lg:py-64 ui-grid-gap ui-grid-px grid grid-cols-6"
194
+ 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"
195
195
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
196
- className: "col-span-full lg:col-span-2"
196
+ className: "col-span-full md:col-span-2"
197
197
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
198
198
  className: "flex flex-row p-menu-row-snug"
199
199
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("img", {
@@ -203,11 +203,11 @@ function Footer(_ref) {
203
203
  }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("h2", {
204
204
  className: "text-overline2 col-span-full font-medium uppercase tracking-widen-0.1"
205
205
  }, "The Ably Platform")), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
206
- className: "grid grid-cols-4 lg:col-span-2"
206
+ className: "md:col-span-4 md:w-3/4 xs:w-3/5 w-full"
207
207
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
208
- className: "text-p3 py-16 font-medium p-menu-row-snug col-span-3"
208
+ className: "text-p3 py-16 font-medium p-menu-row-snug"
209
209
  }, "Easily power any realtime experience in your application via a simple API that handles everything realtime.")), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("ul", {
210
- className: "grid xs:grid-cols-2 gap-x-8 md:gap-x-24 xl:gap-x-32 md:grid-cols-1"
210
+ className: "grid grid-cols-1"
211
211
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("li", {
212
212
  className: "p-menu-row-snug"
213
213
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("a", {
@@ -234,7 +234,7 @@ function Footer(_ref) {
234
234
  href: absUrl("/hub"),
235
235
  className: "ui-footer-menu-row-link"
236
236
  }, "Streaming data sources")))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
237
- className: "col-span-full xs:col-span-3 lg:col-span-1"
237
+ className: "col-span-full xs:col-span-3 md:col-span-1"
238
238
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("h2", {
239
239
  className: "ui-footer-col-title"
240
240
  }, "Ably is for"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("ul", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("li", {
@@ -293,7 +293,7 @@ function Footer(_ref) {
293
293
  href: absUrl("/solutions/iot-and-connected-devices"),
294
294
  className: "ui-footer-menu-row-link"
295
295
  }, "IoT & Connected Devices")))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
296
- className: "col-span-full xs:col-span-3 lg:col-span-1"
296
+ className: "col-span-full xs:col-span-3 md:col-span-1"
297
297
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("h2", {
298
298
  className: "ui-footer-col-title"
299
299
  }, "Developers"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("ul", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("li", {
@@ -327,19 +327,19 @@ function Footer(_ref) {
327
327
  href: absUrl("/download"),
328
328
  className: "ui-footer-menu-row-link"
329
329
  }, "SDKs")), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("li", {
330
- className: "p-menu-row-snug flex items-center"
330
+ className: "p-menu-row-snug flex items-center -mt-4"
331
331
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("a", {
332
332
  className: "pr-8 ui-footer-menu-row-link",
333
333
  href: "https://status.ably.com/"
334
334
  }, "System status"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("iframe", {
335
- className: "w-24 h-24 mt-4",
335
+ className: "w-20 h-20 mb-2",
336
336
  src: "https://status.ably.com/embed/icon",
337
337
  allowtransparency: "true",
338
338
  frameBorder: "0",
339
339
  scrolling: "no",
340
340
  title: "System Status"
341
341
  })))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
342
- className: "col-span-full xs:col-span-3 lg:col-span-1"
342
+ className: "col-span-full xs:col-span-3 md:col-span-1"
343
343
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("h2", {
344
344
  className: "ui-footer-col-title"
345
345
  }, "WHY ABLY"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("ul", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("li", {
@@ -373,7 +373,7 @@ function Footer(_ref) {
373
373
  href: absUrl("/integrations"),
374
374
  className: "ui-footer-menu-row-link"
375
375
  }, "Third-party integrations")))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
376
- className: "col-span-full xs:col-span-3 lg:col-span-1"
376
+ className: "col-span-full xs:col-span-3 md:col-span-1"
377
377
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("h2", {
378
378
  className: "ui-footer-col-title"
379
379
  }, "ABOUT"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("ul", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("li", {
@@ -414,17 +414,17 @@ function Footer(_ref) {
414
414
  }, "Contact us"))))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
415
415
  className: "max-w-screen-xl ui-grid-px mx-auto"
416
416
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("hr", {
417
- className: "border-t border-mid-grey"
417
+ className: "border-t border-mid-grey my-0"
418
418
  })), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
419
- className: "max-w-screen-xl mx-auto py-24 md:py-40 lg:py-32 grid ui-grid-gap ui-grid-px sm:grid-cols-2"
419
+ className: "max-w-screen-xl mx-auto py-16 grid ui-grid-gap ui-grid-px sm:grid-cols-2"
420
420
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
421
- className: ""
421
+ className: "md:flex md:items-center"
422
422
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
423
- className: "flex flex-col lg:flex-row flex-auto ml-8 sm:col-span-1 lg:col-span-2"
423
+ className: "flex flex-col md:flex-row flex-auto ml-8 sm:col-span-1 md:col-span-2"
424
424
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
425
425
  className: ""
426
426
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
427
- className: "flex items-center pb-24"
427
+ className: "flex pb-24"
428
428
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("a", {
429
429
  className: "h-24 pr-24 text-cool-black hover:text-icon-twitter",
430
430
  href: "https://twitter.com/ablyrealtime",
@@ -456,7 +456,7 @@ function Footer(_ref) {
456
456
  })))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
457
457
  className: "xs:hidden sm:block ui-footer-glassdoor"
458
458
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
459
- className: "flex sm:pt-24 lg:pt-0 sm:border-t sm:border-l-0 lg:border-t-0 lg:border-l sm:border-mid-grey sm:w-3/4 lg:w-full lg:pl-24"
459
+ className: "flex sm:pt-24 md:pt-0 sm:border-t sm:border-l-0 md:border-t-0 md:border-l sm:border-mid-grey sm:w-3/4 md:w-full md:pl-24"
460
460
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("a", {
461
461
  href: "https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",
462
462
  className: "h-24 text-cool-black hover:text-icon-glassdoor",
@@ -478,7 +478,7 @@ function Footer(_ref) {
478
478
  }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
479
479
  className: "flex py-24"
480
480
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("a", {
481
- className: "h-24 pr-24 text-cool-black hover:text-icon-glassdoor",
481
+ className: "h-24 pr-16 text-cool-black hover:text-icon-glassdoor",
482
482
  href: "https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",
483
483
  title: "Ably reviews on glassdoor"
484
484
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement(component.default, {
@@ -492,29 +492,29 @@ function Footer(_ref) {
492
492
  href: "https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm",
493
493
  className: "ui-footer-link"
494
494
  }, "Learn more at Glassdoor"))))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
495
- className: "col-span-full sm:col-span-1 inline-flex sm:ml-auto"
495
+ className: "col-span-full sm:col-span-1 inline-flex sm:ml-auto sm:items-center"
496
496
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("img", {
497
- className: "mr-24 w-96 h-96",
497
+ className: "mr-24 h-80",
498
498
  src: paths.highestUserAdoption,
499
499
  alt: "Highest User Adoption 2022"
500
500
  }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("img", {
501
- className: "mr-24 w-96 h-96",
501
+ className: "mr-24 h-80",
502
502
  src: paths.usersLoveUs,
503
503
  alt: "Users Love Us"
504
504
  }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("img", {
505
- className: "mr-24 w-96 h-96",
505
+ className: "mr-24 h-80",
506
506
  src: paths.highestPerformer,
507
507
  alt: "High Performer 2022"
508
508
  }))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
509
509
  className: "max-w-screen-xl ui-grid-px mx-auto"
510
510
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("hr", {
511
- className: "border-t border-mid-grey"
511
+ className: "border-t border-mid-grey my-0"
512
512
  })), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
513
- className: "max-w-screen-xl mx-auto py-24 md:py-40 lg:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px "
513
+ className: "max-w-screen-xl mx-auto py-24 sm:py-40 md:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px"
514
514
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
515
- className: "flex flex-col flex-auto pb-40 ml-8 col-span-full md:col-span-1"
515
+ className: "flex ml-8 col-span-full sm:col-span-1 md:pb-16 items-center ui-footer-bottom-links"
516
516
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
517
- className: "inline-flex"
517
+ className: "flex"
518
518
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("a", {
519
519
  href: absUrl("/privacy"),
520
520
  className: "pr-24 ui-footer-link"
@@ -528,49 +528,49 @@ function Footer(_ref) {
528
528
  href: absUrl("/privacy"),
529
529
  className: "ui-footer-link"
530
530
  }, "Privacy"))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
531
- className: "xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 md:pl-0 "
531
+ className: "xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 sm:pl-8 md:justify-items-end"
532
532
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
533
533
  className: "flex mr-24"
534
534
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement(component.default, {
535
535
  name: "icon-gui-tick",
536
536
  color: "text-active-orange",
537
537
  size: "1.5rem",
538
- additionalCSS: "bg-white rounded-full mr-12"
538
+ additionalCSS: "bg-white rounded-full mr-12 ui-footer-tick-icon"
539
539
  }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
540
- className: "ui-footer-compliance-text font-medium"
540
+ className: "ui-footer-compliance-text font-medium whitespace-nowrap"
541
541
  }, "SOC 2 Type 2"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
542
542
  className: "ui-footer-compliance-text font-light mb-24"
543
543
  }, "Certified"))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
544
- className: "flex mr-24 sm:col-start-2"
544
+ className: "flex mr-24 md:col-start-2"
545
545
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement(component.default, {
546
546
  name: "icon-gui-tick",
547
547
  color: "text-active-orange",
548
548
  size: "1.5rem",
549
- additionalCSS: "bg-white rounded-full mr-12"
549
+ additionalCSS: "bg-white rounded-full mr-12 ui-footer-tick-icon"
550
550
  }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
551
- className: "ui-footer-compliance-text font-medium"
551
+ className: "ui-footer-compliance-text font-medium whitespace-nowrap"
552
552
  }, "HIPAA"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
553
553
  className: "ui-footer-compliance-text font-light mb-24"
554
554
  }, "Compliant"))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
555
- className: "flex mr-24 sm:col-start-3"
555
+ className: "flex mr-24 md:col-start-3"
556
556
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement(component.default, {
557
557
  name: "icon-gui-tick",
558
558
  color: "text-active-orange",
559
559
  size: "1.5rem",
560
- additionalCSS: "bg-white rounded-full mr-12"
560
+ additionalCSS: "bg-white rounded-full mr-12 ui-footer-tick-icon"
561
561
  }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
562
- className: "ui-footer-compliance-text font-medium"
562
+ className: "ui-footer-compliance-text font-medium whitespace-nowrap"
563
563
  }, "EU GDPR"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
564
564
  className: "ui-footer-compliance-text font-light mb-24"
565
565
  }, "Certified"))), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", {
566
- className: "flex mr-24 sm:col-start-4"
566
+ className: "flex mr-24 md:col-start-4"
567
567
  }, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement(component.default, {
568
568
  name: "icon-gui-tick",
569
569
  color: "text-active-orange",
570
570
  size: "1.5rem",
571
- additionalCSS: "bg-white rounded-full mr-12"
571
+ additionalCSS: "bg-white rounded-full mr-12 ui-footer-tick-icon"
572
572
  }), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("div", null, /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
573
- className: "ui-footer-compliance-text font-medium"
573
+ className: "ui-footer-compliance-text font-medium whitespace-nowrap"
574
574
  }, "256-bit AES"), /*#__PURE__*/external_commonjs_react_commonjs2_react_default().createElement("p", {
575
575
  className: "ui-footer-compliance-text font-light mb-24"
576
576
  }, "Encryption"))))));
package/core/Meganav.jsx CHANGED
@@ -1252,54 +1252,54 @@ var MeganavContentUseCases = function MeganavContentUseCases(_ref) {
1252
1252
  }, "Use cases"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
1253
1253
  "aria-labelledby": "meganav-use-cases-panel-industry-use-cases"
1254
1254
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
1255
- href: absUrl("/solutions/live-updates-results-metrics"),
1255
+ href: absUrl("/solutions/chat"),
1256
1256
  className: "ui-meganav-media-with-image group"
1257
1257
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
1258
- name: "icon-live-updates-results-metrics-col",
1258
+ name: "icon-display-chat-stack-col",
1259
1259
  size: "2.5rem"
1260
1260
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
1261
1261
  className: "flex flex-col justify-center"
1262
1262
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1263
1263
  className: "ui-meganav-media-heading"
1264
- }, "Live updates, results & metrics"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1264
+ }, "Chat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1265
1265
  className: "ui-meganav-media-copy"
1266
- }, "Deliver live updates to keep users informed.")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
1267
- href: absUrl("/solutions/chat"),
1266
+ }, "Deliver highly reliable chat experiences at scale. ")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
1267
+ href: absUrl("/solutions/multiplayer-collaboration"),
1268
1268
  className: "ui-meganav-media-with-image group"
1269
1269
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
1270
- name: "icon-display-chat-stack-col",
1270
+ name: "icon-multi-user-spaces-col",
1271
1271
  size: "2.5rem"
1272
1272
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
1273
1273
  className: "flex flex-col justify-center"
1274
1274
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1275
1275
  className: "ui-meganav-media-heading"
1276
- }, "Chat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1276
+ }, "Multiplayer Collaboration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1277
1277
  className: "ui-meganav-media-copy"
1278
- }, "Deliver highly reliable chat experiences at scale. ")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
1279
- href: absUrl("/solutions/virtual-events"),
1278
+ }, "Bring collaborative multiplayer experiences to your users.")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
1279
+ href: absUrl("/solutions/data-broadcast"),
1280
1280
  className: "ui-meganav-media-with-image group"
1281
1281
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
1282
- name: "icon-display-virtual-events-col",
1282
+ name: "icon-live-updates-results-metrics-col",
1283
1283
  size: "2.5rem"
1284
1284
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
1285
1285
  className: "flex flex-col justify-center"
1286
1286
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1287
1287
  className: "ui-meganav-media-heading"
1288
- }, "Virtual Events"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1288
+ }, "Data Broadcast"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1289
1289
  className: "ui-meganav-media-copy"
1290
- }, "Power engaging virtual events with realtime features.")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
1291
- href: absUrl("/solutions/multi-user-virtual-spaces"),
1290
+ }, "Broadcast realtime event data to millions of devices around the globe.")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
1291
+ href: absUrl("/solutions/data-synchronization"),
1292
1292
  className: "ui-meganav-media-with-image group"
1293
1293
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
1294
- name: "icon-multi-user-spaces-col",
1294
+ name: "icon-display-virtual-events",
1295
1295
  size: "2.5rem"
1296
1296
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
1297
1297
  className: "flex flex-col justify-center"
1298
1298
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1299
1299
  className: "ui-meganav-media-heading"
1300
- }, "Multi-user virtual spaces"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1300
+ }, "Data Synchronization"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
1301
1301
  className: "ui-meganav-media-copy"
1302
- }, "Build live and interactive multi-user applications.")))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
1302
+ }, "Keep your frontend and backend in realtime sync, at global scale.")))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
1303
1303
  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"
1304
1304
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
1305
1305
  className: "ui-meganav-overline",
@@ -178,54 +178,54 @@ var MeganavContentUseCases = function MeganavContentUseCases(_ref) {
178
178
  }, "Use cases"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", {
179
179
  "aria-labelledby": "meganav-use-cases-panel-industry-use-cases"
180
180
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
181
- href: absUrl("/solutions/live-updates-results-metrics"),
181
+ href: absUrl("/solutions/chat"),
182
182
  className: "ui-meganav-media-with-image group"
183
183
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
184
- name: "icon-live-updates-results-metrics-col",
184
+ name: "icon-display-chat-stack-col",
185
185
  size: "2.5rem"
186
186
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
187
187
  className: "flex flex-col justify-center"
188
188
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
189
189
  className: "ui-meganav-media-heading"
190
- }, "Live updates, results & metrics"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
190
+ }, "Chat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
191
191
  className: "ui-meganav-media-copy"
192
- }, "Deliver live updates to keep users informed.")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
193
- href: absUrl("/solutions/chat"),
192
+ }, "Deliver highly reliable chat experiences at scale. ")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
193
+ href: absUrl("/solutions/multiplayer-collaboration"),
194
194
  className: "ui-meganav-media-with-image group"
195
195
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
196
- name: "icon-display-chat-stack-col",
196
+ name: "icon-multi-user-spaces-col",
197
197
  size: "2.5rem"
198
198
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
199
199
  className: "flex flex-col justify-center"
200
200
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
201
201
  className: "ui-meganav-media-heading"
202
- }, "Chat"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
202
+ }, "Multiplayer Collaboration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
203
203
  className: "ui-meganav-media-copy"
204
- }, "Deliver highly reliable chat experiences at scale. ")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
205
- href: absUrl("/solutions/virtual-events"),
204
+ }, "Bring collaborative multiplayer experiences to your users.")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
205
+ href: absUrl("/solutions/data-broadcast"),
206
206
  className: "ui-meganav-media-with-image group"
207
207
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
208
- name: "icon-display-virtual-events-col",
208
+ name: "icon-live-updates-results-metrics-col",
209
209
  size: "2.5rem"
210
210
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
211
211
  className: "flex flex-col justify-center"
212
212
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
213
213
  className: "ui-meganav-media-heading"
214
- }, "Virtual Events"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
214
+ }, "Data Broadcast"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
215
215
  className: "ui-meganav-media-copy"
216
- }, "Power engaging virtual events with realtime features.")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
217
- href: absUrl("/solutions/multi-user-virtual-spaces"),
216
+ }, "Broadcast realtime event data to millions of devices around the globe.")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
217
+ href: absUrl("/solutions/data-synchronization"),
218
218
  className: "ui-meganav-media-with-image group"
219
219
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Icon_component_jsx__WEBPACK_IMPORTED_MODULE_2__.default, {
220
- name: "icon-multi-user-spaces-col",
220
+ name: "icon-display-virtual-events",
221
221
  size: "2.5rem"
222
222
  }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
223
223
  className: "flex flex-col justify-center"
224
224
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
225
225
  className: "ui-meganav-media-heading"
226
- }, "Multi-user virtual spaces"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
226
+ }, "Data Synchronization"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("p", {
227
227
  className: "ui-meganav-media-copy"
228
- }, "Build live and interactive multi-user applications.")))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
228
+ }, "Keep your frontend and backend in realtime sync, at global scale.")))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
229
229
  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"
230
230
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h3", {
231
231
  className: "ui-meganav-overline",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ably/ui",
3
- "version": "10.9.0",
3
+ "version": "10.11.0",
4
4
  "description": "Home of the Ably design system library ([design.ably.com](https://design.ably.com)). It provides a showcase, development/test environment and a publishing pipeline for different distributables.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,13 +8,23 @@
8
8
  }
9
9
 
10
10
  .ui-footer-link {
11
- @apply text-gui-default hover:text-gui-hover hover:underline text-menu3 font-light;
11
+ @apply text-gui-default hover:text-gui-hover text-menu3 font-light;
12
12
  }
13
13
 
14
14
  .ui-footer-compliance-text {
15
15
  font-size: 12px;
16
16
  }
17
17
 
18
+ .ui-footer-tick-icon {
19
+ min-width: 1.5rem;
20
+ }
21
+
22
+ @media (max-width: 1040px) {
23
+ .ui-footer-bottom-links {
24
+ @apply pb-40;
25
+ }
26
+ }
27
+
18
28
  @media screen {
19
29
  .ui-footer-glassdoor {
20
30
  display: none;
@@ -1,16 +1,16 @@
1
1
  <footer class="bg-light-grey font-sans antialiased" data-id="footer">
2
- <div class="max-w-screen-xl mx-auto py-32 sm:py-40 lg:py-64 ui-grid-gap ui-grid-px grid grid-cols-6">
3
- <div class="col-span-full lg:col-span-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
+ <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
6
  <h2 class="text-overline2 col-span-full font-medium uppercase tracking-widen-0.1">The Ably Platform</h2>
7
7
  </div>
8
- <div class="grid grid-cols-4 lg:col-span-2">
9
- <p class="text-p3 py-16 font-medium p-menu-row-snug col-span-3">
8
+ <div class="md:col-span-4 md:w-3/4 xs:w-3/5 w-full">
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
- <ul class="grid xs:grid-cols-2 gap-x-8 md:gap-x-24 xl:gap-x-32 md:grid-cols-1">
13
+ <ul class="grid grid-cols-1">
14
14
  <li class="p-menu-row-snug">
15
15
  <%= link_to 'Pub/sub messaging', abs_url("/pub-sub-messaging"), class: "ui-footer-menu-row-link" %>
16
16
  </li>
@@ -28,7 +28,7 @@
28
28
  </li>
29
29
  </ul>
30
30
  </div>
31
- <div class="col-span-full xs:col-span-3 lg:col-span-1">
31
+ <div class="col-span-full xs:col-span-3 md:col-span-1">
32
32
  <h2 class="ui-footer-col-title">Ably is for</h2>
33
33
  <ul>
34
34
  <li class="p-menu-row-snug">
@@ -66,7 +66,7 @@
66
66
  </li>
67
67
  </ul>
68
68
  </div>
69
- <div class="col-span-full xs:col-span-3 lg:col-span-1">
69
+ <div class="col-span-full xs:col-span-3 md:col-span-1">
70
70
  <h2 class="ui-footer-col-title">Developers</h2>
71
71
  <ul>
72
72
  <li class="p-menu-row-snug">
@@ -87,13 +87,13 @@
87
87
  <li class="p-menu-row-snug">
88
88
  <%= link_to 'SDKs', abs_url("/download"), class: "ui-footer-menu-row-link" %>
89
89
  </li>
90
- <li class="p-menu-row-snug flex items-center">
90
+ <li class="p-menu-row-snug flex items-center -mt-4">
91
91
  <a class="pr-8 ui-footer-menu-row-link" href="https://status.ably.com/">System status</a>
92
- <iframe class="w-24 h-24 mt-4" src="https://status.ably.com/embed/icon" allowtransparency="true" frameborder="0" scrolling="no"></iframe>
92
+ <iframe class="w-20 h-20 mb-2" src="https://status.ably.com/embed/icon" allowtransparency="true" frameborder="0" scrolling="no"></iframe>
93
93
  </li>
94
94
  </ul>
95
95
  </div>
96
- <div class="col-span-full xs:col-span-3 lg:col-span-1">
96
+ <div class="col-span-full xs:col-span-3 md:col-span-1">
97
97
  <h2 class="ui-footer-col-title">WHY ABLY</h2>
98
98
  <ul>
99
99
  <li class="p-menu-row-snug">
@@ -116,7 +116,7 @@
116
116
  </li>
117
117
  </ul>
118
118
  </div>
119
- <div class="col-span-full xs:col-span-3 lg:col-span-1">
119
+ <div class="col-span-full xs:col-span-3 md:col-span-1">
120
120
  <h2 class="ui-footer-col-title">ABOUT</h2>
121
121
  <ul>
122
122
  <li class="p-menu-row-snug">
@@ -144,14 +144,14 @@
144
144
  </div>
145
145
  </div>
146
146
  <div class="max-w-screen-xl ui-grid-px mx-auto">
147
- <hr class="border-t border-mid-grey" />
147
+ <hr class="border-t border-mid-grey my-0"/>
148
148
  </div>
149
149
  <%# Twitter + Glassdoor SM * above + Glassdoor XS + Badges %>
150
- <div class="max-w-screen-xl mx-auto py-24 md:py-40 lg:py-32 grid ui-grid-gap ui-grid-px sm:grid-cols-2">
151
- <div class="">
152
- <div class="flex flex-col lg:flex-row flex-auto ml-8 sm:col-span-1 lg:col-span-2">
150
+ <div class="max-w-screen-xl mx-auto py-16 grid ui-grid-gap ui-grid-px sm:grid-cols-2">
151
+ <div class="md:flex md:items-center">
152
+ <div class="flex flex-col md:flex-row flex-auto ml-8 sm:col-span-1 md:col-span-2">
153
153
  <div class="">
154
- <div class="flex items-center pb-24">
154
+ <div class="flex pb-24">
155
155
  <a class="h-24 pr-24 text-cool-black hover:text-icon-twitter" href="https://twitter.com/ablyrealtime" title="Ably on Twitter">
156
156
  <%= render(AblyUi::Core::Icon.new(name: "twitter", size: "1.5rem")) %>
157
157
  </a>
@@ -172,7 +172,7 @@
172
172
  </div>
173
173
  <%# GLASSDOOR on SM and Above %>
174
174
  <div class="xs:hidden sm:block ui-footer-glassdoor">
175
- <div class="flex sm:pt-24 lg:pt-0 sm:border-t sm:border-l-0 lg:border-t-0 lg:border-l sm:border-mid-grey sm:w-3/4 lg:w-full lg:pl-24">
175
+ <div class="flex sm:pt-24 md:pt-0 sm:border-t sm:border-l-0 md:border-t-0 md:border-l sm:border-mid-grey sm:w-3/4 md:w-full md:pl-24">
176
176
  <a
177
177
  href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm"
178
178
  class="h-24 text-cool-black hover:text-icon-glassdoor"
@@ -194,7 +194,7 @@
194
194
  <div class="border-t border-mid-grey w-full"></div>
195
195
  <div class="flex py-24">
196
196
  <a
197
- class="h-24 pr-24 text-cool-black hover:text-icon-glassdoor"
197
+ class="h-24 pr-16 text-cool-black hover:text-icon-glassdoor"
198
198
  href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm"
199
199
  title="Ably reviews on glassdoor"
200
200
  >
@@ -209,50 +209,50 @@
209
209
  </div>
210
210
  </div>
211
211
  </div>
212
- <div class="col-span-full sm:col-span-1 inline-flex sm:ml-auto">
213
- <%= image_tag(highest_user_adoption, alt: "Highest User Adoption 2022", class: "mr-24 w-96 h-96") %>
214
- <%= image_tag(users_love_us, alt: "Users Love Us", class: "mr-24 w-96 h-96") %>
215
- <%= image_tag(highest_performer, alt: "High Performer 2022", class: "mr-24 w-96 h-96") %>
212
+ <div class="col-span-full sm:col-span-1 inline-flex sm:ml-auto sm:items-center">
213
+ <%= image_tag(highest_user_adoption, alt: "Highest User Adoption 2022", class: "mr-24 h-80") %>
214
+ <%= image_tag(users_love_us, alt: "Users Love Us", class: "mr-24 h-80") %>
215
+ <%= image_tag(highest_performer, alt: "High Performer 2022", class: "mr-24 h-80") %>
216
216
  </div>
217
217
  </div>
218
218
  <div class="max-w-screen-xl ui-grid-px mx-auto">
219
- <hr class="border-t border-mid-grey" />
219
+ <hr class="border-t border-mid-grey my-0"/>
220
220
  </div>
221
- <div class="max-w-screen-xl mx-auto py-24 md:py-40 lg:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px ">
222
- <div class="flex flex-col flex-auto pb-40 ml-8 col-span-full md:col-span-1">
223
- <div class="inline-flex">
221
+ <div class="max-w-screen-xl mx-auto py-24 sm:py-40 md:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px">
222
+ <div class="flex ml-8 col-span-full sm:col-span-1 md:pb-16 items-center ui-footer-bottom-links">
223
+ <div class="flex">
224
224
  <%= link_to 'Cookies', abs_url("/privacy"), class: "pr-24 ui-footer-link" %>
225
225
  <%= link_to 'Legals', abs_url("/legals"), class: "pr-24 ui-footer-link" %>
226
226
  <%= link_to 'Data Protection', abs_url("/data-protection"), class: "pr-24 ui-footer-link" %>
227
227
  <%= link_to 'Privacy', abs_url("/privacy"), class: "ui-footer-link" %>
228
228
  </div>
229
229
  </div>
230
- <div class="xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 md:pl-0 ">
230
+ <div class="xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 sm:pl-8 md:justify-items-end">
231
231
  <div class="flex mr-24">
232
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12")) %>
232
+ <%= 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
233
  <div>
234
- <p class="ui-footer-compliance-text font-medium">SOC 2 Type 2</p>
234
+ <p class="ui-footer-compliance-text font-medium whitespace-nowrap">SOC 2 Type 2</p>
235
235
  <p class="ui-footer-compliance-text font-light mb-24">Certified</p>
236
236
  </div>
237
237
  </div>
238
- <div class="flex mr-24 sm:col-start-2">
239
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12")) %>
238
+ <div class="flex mr-24 md:col-start-2">
239
+ <%= 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
240
  <div>
241
- <p class="ui-footer-compliance-text font-medium">HIPAA</p>
241
+ <p class="ui-footer-compliance-text font-medium whitespace-nowrap">HIPAA</p>
242
242
  <p class="ui-footer-compliance-text font-light mb-24">Compliant</p>
243
243
  </div>
244
244
  </div>
245
- <div class="flex mr-24 sm:col-start-3">
246
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12")) %>
245
+ <div class="flex mr-24 md:col-start-3">
246
+ <%= 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
247
  <div>
248
- <p class="ui-footer-compliance-text font-medium">EU GDPR</p>
248
+ <p class="ui-footer-compliance-text font-medium whitespace-nowrap">EU GDPR</p>
249
249
  <p class="ui-footer-compliance-text font-light mb-24">Certified</p>
250
250
  </div>
251
251
  </div>
252
- <div class="flex mr-24 sm:col-start-4">
253
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12")) %>
252
+ <div class="flex mr-24 md:col-start-4">
253
+ <%= 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
254
  <div>
255
- <p class="ui-footer-compliance-text font-medium">256-bit AES</p>
255
+ <p class="ui-footer-compliance-text font-medium whitespace-nowrap">256-bit AES</p>
256
256
  <p class="ui-footer-compliance-text font-light mb-24">Encryption</p>
257
257
  </div>
258
258
  </div>
@@ -9,19 +9,19 @@ export default function Footer({ paths, urlBase }) {
9
9
 
10
10
  return (
11
11
  <footer className="bg-light-grey font-sans antialiased" data-id="footer">
12
- <div className="max-w-screen-xl mx-auto py-32 sm:py-40 lg:py-64 ui-grid-gap ui-grid-px grid grid-cols-6">
13
- <div className="col-span-full lg:col-span-2">
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
+ <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
16
  <h2 className="text-overline2 col-span-full font-medium uppercase tracking-widen-0.1">The Ably Platform</h2>
17
17
  </div>
18
- <div className="grid grid-cols-4 lg:col-span-2">
19
- <p className="text-p3 py-16 font-medium p-menu-row-snug col-span-3">
18
+ <div className="md:col-span-4 md:w-3/4 xs:w-3/5 w-full">
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
- <ul className="grid xs:grid-cols-2 gap-x-8 md:gap-x-24 xl:gap-x-32 md:grid-cols-1">
24
+ <ul className="grid grid-cols-1">
25
25
  <li className="p-menu-row-snug">
26
26
  <a href={absUrl("/pub-sub-messaging")} className="ui-footer-menu-row-link">
27
27
  Pub/sub messaging
@@ -50,7 +50,7 @@ export default function Footer({ paths, urlBase }) {
50
50
  </ul>
51
51
  </div>
52
52
 
53
- <div className="col-span-full xs:col-span-3 lg:col-span-1">
53
+ <div className="col-span-full xs:col-span-3 md:col-span-1">
54
54
  <h2 className="ui-footer-col-title">Ably is for</h2>
55
55
  <ul>
56
56
  <li className="p-menu-row-snug">
@@ -111,7 +111,7 @@ export default function Footer({ paths, urlBase }) {
111
111
  </ul>
112
112
  </div>
113
113
 
114
- <div className="col-span-full xs:col-span-3 lg:col-span-1">
114
+ <div className="col-span-full xs:col-span-3 md:col-span-1">
115
115
  <h2 className="ui-footer-col-title">Developers</h2>
116
116
  <ul>
117
117
  <li className="p-menu-row-snug">
@@ -144,12 +144,12 @@ export default function Footer({ paths, urlBase }) {
144
144
  SDKs
145
145
  </a>
146
146
  </li>
147
- <li className="p-menu-row-snug flex items-center">
147
+ <li className="p-menu-row-snug flex items-center -mt-4">
148
148
  <a className="pr-8 ui-footer-menu-row-link" href="https://status.ably.com/">
149
149
  System status
150
150
  </a>
151
151
  <iframe
152
- className="w-24 h-24 mt-4"
152
+ className="w-20 h-20 mb-2"
153
153
  src="https://status.ably.com/embed/icon"
154
154
  allowtransparency="true"
155
155
  frameBorder="0"
@@ -160,7 +160,7 @@ export default function Footer({ paths, urlBase }) {
160
160
  </ul>
161
161
  </div>
162
162
 
163
- <div className="col-span-full xs:col-span-3 lg:col-span-1">
163
+ <div className="col-span-full xs:col-span-3 md:col-span-1">
164
164
  <h2 className="ui-footer-col-title">WHY ABLY</h2>
165
165
  <ul>
166
166
  <li className="p-menu-row-snug">
@@ -196,7 +196,7 @@ export default function Footer({ paths, urlBase }) {
196
196
  </ul>
197
197
  </div>
198
198
 
199
- <div className="col-span-full xs:col-span-3 lg:col-span-1">
199
+ <div className="col-span-full xs:col-span-3 md:col-span-1">
200
200
  <h2 className="ui-footer-col-title">ABOUT</h2>
201
201
  <ul>
202
202
  <li className="p-menu-row-snug">
@@ -238,14 +238,14 @@ export default function Footer({ paths, urlBase }) {
238
238
  </div>
239
239
  </div>
240
240
  <div className="max-w-screen-xl ui-grid-px mx-auto">
241
- <hr className="border-t border-mid-grey" />
241
+ <hr className="border-t border-mid-grey my-0" />
242
242
  </div>
243
- {/* Twitter + Glassdoor SM * above + Glassdoor XS + Badges*/}
244
- <div className="max-w-screen-xl mx-auto py-24 md:py-40 lg:py-32 grid ui-grid-gap ui-grid-px sm:grid-cols-2">
245
- <div className="">
246
- <div className="flex flex-col lg:flex-row flex-auto ml-8 sm:col-span-1 lg:col-span-2">
243
+ {/* Twitter + Glassdoor SM & above + Glassdoor XS + Badges*/}
244
+ <div className="max-w-screen-xl mx-auto py-16 grid ui-grid-gap ui-grid-px sm:grid-cols-2">
245
+ <div className="md:flex md:items-center">
246
+ <div className="flex flex-col md:flex-row flex-auto ml-8 sm:col-span-1 md:col-span-2">
247
247
  <div className="">
248
- <div className="flex items-center pb-24">
248
+ <div className="flex pb-24">
249
249
  <a className="h-24 pr-24 text-cool-black hover:text-icon-twitter" href="https://twitter.com/ablyrealtime" title="Ably on Twitter">
250
250
  <Icon name="twitter" size="1.5rem" />
251
251
  </a>
@@ -266,7 +266,7 @@ export default function Footer({ paths, urlBase }) {
266
266
  </div>
267
267
  {/* GLASSDOOR on SM and Above */}
268
268
  <div className="xs:hidden sm:block ui-footer-glassdoor">
269
- <div className="flex sm:pt-24 lg:pt-0 sm:border-t sm:border-l-0 lg:border-t-0 lg:border-l sm:border-mid-grey sm:w-3/4 lg:w-full lg:pl-24">
269
+ <div className="flex sm:pt-24 md:pt-0 sm:border-t sm:border-l-0 md:border-t-0 md:border-l sm:border-mid-grey sm:w-3/4 md:w-full md:pl-24">
270
270
  <a
271
271
  href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm"
272
272
  className="h-24 text-cool-black hover:text-icon-glassdoor"
@@ -288,7 +288,7 @@ export default function Footer({ paths, urlBase }) {
288
288
  <div className="border-t border-mid-grey w-full"></div>
289
289
  <div className="flex py-24">
290
290
  <a
291
- className="h-24 pr-24 text-cool-black hover:text-icon-glassdoor"
291
+ className="h-24 pr-16 text-cool-black hover:text-icon-glassdoor"
292
292
  href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm"
293
293
  title="Ably reviews on glassdoor"
294
294
  >
@@ -304,19 +304,19 @@ export default function Footer({ paths, urlBase }) {
304
304
  </div>
305
305
  </div>
306
306
 
307
- <div className="col-span-full sm:col-span-1 inline-flex sm:ml-auto">
308
- <img className="mr-24 w-96 h-96" src={paths.highestUserAdoption} alt="Highest User Adoption 2022" />
309
- <img className="mr-24 w-96 h-96" src={paths.usersLoveUs} alt="Users Love Us" />
310
- <img className="mr-24 w-96 h-96" src={paths.highestPerformer} alt="High Performer 2022" />
307
+ <div className="col-span-full sm:col-span-1 inline-flex sm:ml-auto sm:items-center">
308
+ <img className="mr-24 h-80" src={paths.highestUserAdoption} alt="Highest User Adoption 2022" />
309
+ <img className="mr-24 h-80" src={paths.usersLoveUs} alt="Users Love Us" />
310
+ <img className="mr-24 h-80" src={paths.highestPerformer} alt="High Performer 2022" />
311
311
  </div>
312
312
  </div>
313
313
 
314
314
  <div className="max-w-screen-xl ui-grid-px mx-auto">
315
- <hr className="border-t border-mid-grey" />
315
+ <hr className="border-t border-mid-grey my-0" />
316
316
  </div>
317
- <div className="max-w-screen-xl mx-auto py-24 md:py-40 lg:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px ">
318
- <div className="flex flex-col flex-auto pb-40 ml-8 col-span-full md:col-span-1">
319
- <div className="inline-flex">
317
+ <div className="max-w-screen-xl mx-auto py-24 sm:py-40 md:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px">
318
+ <div className="flex ml-8 col-span-full sm:col-span-1 md:pb-16 items-center ui-footer-bottom-links">
319
+ <div className="flex">
320
320
  <a href={absUrl("/privacy")} className="pr-24 ui-footer-link">
321
321
  Cookies
322
322
  </a>
@@ -331,32 +331,32 @@ export default function Footer({ paths, urlBase }) {
331
331
  </a>
332
332
  </div>
333
333
  </div>
334
- <div className="xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 md:pl-0 ">
334
+ <div className="xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 sm:pl-8 md:justify-items-end">
335
335
  <div className="flex mr-24">
336
- <Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12" />
336
+ <Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
337
337
  <div>
338
- <p className="ui-footer-compliance-text font-medium">SOC 2 Type 2</p>
338
+ <p className="ui-footer-compliance-text font-medium whitespace-nowrap">SOC 2 Type 2</p>
339
339
  <p className="ui-footer-compliance-text font-light mb-24">Certified</p>
340
340
  </div>
341
341
  </div>
342
- <div className="flex mr-24 sm:col-start-2">
343
- <Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12" />
342
+ <div className="flex mr-24 md:col-start-2">
343
+ <Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
344
344
  <div>
345
- <p className="ui-footer-compliance-text font-medium">HIPAA</p>
345
+ <p className="ui-footer-compliance-text font-medium whitespace-nowrap">HIPAA</p>
346
346
  <p className="ui-footer-compliance-text font-light mb-24">Compliant</p>
347
347
  </div>
348
348
  </div>
349
- <div className="flex mr-24 sm:col-start-3">
350
- <Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12" />
349
+ <div className="flex mr-24 md:col-start-3">
350
+ <Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
351
351
  <div>
352
- <p className="ui-footer-compliance-text font-medium">EU GDPR</p>
352
+ <p className="ui-footer-compliance-text font-medium whitespace-nowrap">EU GDPR</p>
353
353
  <p className="ui-footer-compliance-text font-light mb-24">Certified</p>
354
354
  </div>
355
355
  </div>
356
- <div className="flex mr-24 sm:col-start-4">
357
- <Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12" />
356
+ <div className="flex mr-24 md:col-start-4">
357
+ <Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
358
358
  <div>
359
- <p className="ui-footer-compliance-text font-medium">256-bit AES</p>
359
+ <p className="ui-footer-compliance-text font-medium whitespace-nowrap">256-bit AES</p>
360
360
  <p className="ui-footer-compliance-text font-light mb-24">Encryption</p>
361
361
  </div>
362
362
  </div>
@@ -7,38 +7,38 @@
7
7
  </h3>
8
8
  <ul aria-labelledby="meganav-use-cases-panel-industry-use-cases">
9
9
  <li>
10
- <%= link_to abs_url("/solutions/live-updates-results-metrics"), class: "ui-meganav-media-with-image group" do %>
11
- <%= render(AblyUi::Core::Icon.new(name: "icon-live-updates-results-metrics-col", size: "2.5rem")) %>
10
+ <%= link_to abs_url("/solutions/chat"), class: "ui-meganav-media-with-image group" do %>
11
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-chat-stack-col", size: "2.5rem")) %>
12
12
  <div class="flex flex-col justify-center">
13
- <p class="ui-meganav-media-heading">Live updates, results & metrics</p>
14
- <p class="ui-meganav-media-copy">Deliver live updates to keep users informed.</p>
13
+ <p class="ui-meganav-media-heading">Chat</p>
14
+ <p class="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale. </p>
15
15
  </div>
16
16
  <% end %>
17
17
  </li>
18
18
  <li>
19
- <%= link_to abs_url("/solutions/chat"), class: "ui-meganav-media-with-image group" do %>
20
- <%= render(AblyUi::Core::Icon.new(name: "icon-display-chat-stack-col", size: "2.5rem")) %>
19
+ <%= link_to abs_url("/solutions/multiplayer-collaboration"), class: "ui-meganav-media-with-image group" do %>
20
+ <%= render(AblyUi::Core::Icon.new(name: "icon-multi-user-spaces-col", size: "2.5rem")) %>
21
21
  <div class="flex flex-col justify-center">
22
- <p class="ui-meganav-media-heading">Chat</p>
23
- <p class="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale. </p>
22
+ <p class="ui-meganav-media-heading">Multiplayer Collaboration</p>
23
+ <p class="ui-meganav-media-copy">Bring collaborative multiplayer experiences to your users.</p>
24
24
  </div>
25
25
  <% end %>
26
26
  </li>
27
27
  <li>
28
- <%= link_to abs_url("/solutions/virtual-events"), class: "ui-meganav-media-with-image group" do %>
29
- <%= render(AblyUi::Core::Icon.new(name: "icon-display-virtual-events-col", size: "2.5rem")) %>
28
+ <%= link_to abs_url("/solutions/data-broadcast"), class: "ui-meganav-media-with-image group" do %>
29
+ <%= render(AblyUi::Core::Icon.new(name: "icon-live-updates-results-metrics-col", size: "2.5rem")) %>
30
30
  <div class="flex flex-col justify-center">
31
- <p class="ui-meganav-media-heading">Virtual Events</p>
32
- <p class="ui-meganav-media-copy">Power engaging virtual events with realtime features.</p>
31
+ <p class="ui-meganav-media-heading">Data Broadcast</p>
32
+ <p class="ui-meganav-media-copy">Broadcast realtime event data to millions of devices around the globe.</p>
33
33
  </div>
34
34
  <% end %>
35
35
  </li>
36
36
  <li>
37
- <%= link_to abs_url("/solutions/multi-user-virtual-spaces"), class: "ui-meganav-media-with-image group" do %>
38
- <%= render(AblyUi::Core::Icon.new(name: "icon-multi-user-spaces-col", size: "2.5rem")) %>
37
+ <%= link_to abs_url("/solutions/data-synchronization"), class: "ui-meganav-media-with-image group" do %>
38
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-virtual-events", size: "2.5rem")) %>
39
39
  <div class="flex flex-col justify-center">
40
- <p class="ui-meganav-media-heading">Multi-user virtual spaces</p>
41
- <p class="ui-meganav-media-copy">Build live and interactive multi-user applications.</p>
40
+ <p class="ui-meganav-media-heading">Data Synchronization</p>
41
+ <p class="ui-meganav-media-copy">Keep your frontend and backend in realtime sync, at global scale.</p>
42
42
  </div>
43
43
  <% end %>
44
44
  </li>
@@ -13,38 +13,38 @@ const MeganavContentUseCases = ({ absUrl }) => (
13
13
  </h3>
14
14
  <ul aria-labelledby="meganav-use-cases-panel-industry-use-cases">
15
15
  <li>
16
- <a href={absUrl("/solutions/live-updates-results-metrics")} className="ui-meganav-media-with-image group">
17
- <Icon name="icon-live-updates-results-metrics-col" size="2.5rem" />
16
+ <a href={absUrl("/solutions/chat")} className="ui-meganav-media-with-image group">
17
+ <Icon name="icon-display-chat-stack-col" size="2.5rem" />
18
18
  <div className="flex flex-col justify-center">
19
- <p className="ui-meganav-media-heading">Live updates, results & metrics</p>
20
- <p className="ui-meganav-media-copy">Deliver live updates to keep users informed.</p>
19
+ <p className="ui-meganav-media-heading">Chat</p>
20
+ <p className="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale. </p>
21
21
  </div>
22
22
  </a>
23
23
  </li>
24
24
  <li>
25
- <a href={absUrl("/solutions/chat")} className="ui-meganav-media-with-image group">
26
- <Icon name="icon-display-chat-stack-col" size="2.5rem" />
25
+ <a href={absUrl("/solutions/multiplayer-collaboration")} className="ui-meganav-media-with-image group">
26
+ <Icon name="icon-multi-user-spaces-col" size="2.5rem" />
27
27
  <div className="flex flex-col justify-center">
28
- <p className="ui-meganav-media-heading">Chat</p>
29
- <p className="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale. </p>
28
+ <p className="ui-meganav-media-heading">Multiplayer Collaboration</p>
29
+ <p className="ui-meganav-media-copy">Bring collaborative multiplayer experiences to your users.</p>
30
30
  </div>
31
31
  </a>
32
32
  </li>
33
33
  <li>
34
- <a href={absUrl("/solutions/virtual-events")} className="ui-meganav-media-with-image group">
35
- <Icon name="icon-display-virtual-events-col" size="2.5rem" />
34
+ <a href={absUrl("/solutions/data-broadcast")} className="ui-meganav-media-with-image group">
35
+ <Icon name="icon-live-updates-results-metrics-col" size="2.5rem" />
36
36
  <div className="flex flex-col justify-center">
37
- <p className="ui-meganav-media-heading">Virtual Events</p>
38
- <p className="ui-meganav-media-copy">Power engaging virtual events with realtime features.</p>
37
+ <p className="ui-meganav-media-heading">Data Broadcast</p>
38
+ <p className="ui-meganav-media-copy">Broadcast realtime event data to millions of devices around the globe.</p>
39
39
  </div>
40
40
  </a>
41
41
  </li>
42
42
  <li>
43
- <a href={absUrl("/solutions/multi-user-virtual-spaces")} className="ui-meganav-media-with-image group">
44
- <Icon name="icon-multi-user-spaces-col" size="2.5rem" />
43
+ <a href={absUrl("/solutions/data-synchronization")} className="ui-meganav-media-with-image group">
44
+ <Icon name="icon-display-virtual-events" size="2.5rem" />
45
45
  <div className="flex flex-col justify-center">
46
- <p className="ui-meganav-media-heading">Multi-user virtual spaces</p>
47
- <p className="ui-meganav-media-copy">Build live and interactive multi-user applications.</p>
46
+ <p className="ui-meganav-media-heading">Data Synchronization</p>
47
+ <p className="ui-meganav-media-copy">Keep your frontend and backend in realtime sync, at global scale.</p>
48
48
  </div>
49
49
  </a>
50
50
  </li>