@ably/ui 8.1.2 → 8.2.1-dev.f35b482

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/core/.DS_Store +0 -0
  2. package/core/Meganav/component.css +7 -1
  3. package/core/Meganav/component.js +1 -1
  4. package/core/Meganav/component.json +4 -4
  5. package/core/Meganav.jsx +510 -360
  6. package/core/MeganavBlogPostsList/component.js +1 -1
  7. package/core/MeganavBlogPostsList.jsx +5 -3
  8. package/core/MeganavContentCompany/component.js +1 -0
  9. package/core/MeganavContentCompany.jsx +1513 -0
  10. package/core/MeganavContentDevelopers.jsx +80 -102
  11. package/core/MeganavContentPlatform.jsx +51 -31
  12. package/core/MeganavContentUseCases.jsx +128 -36
  13. package/core/MeganavContentWhyAbly/component.js +6 -1
  14. package/core/MeganavContentWhyAbly.jsx +3 -1468
  15. package/core/MeganavControlMobilePanelClose.jsx +7 -4
  16. package/core/MeganavItemsDesktop.jsx +6 -2
  17. package/core/MeganavItemsMobile.jsx +11 -6
  18. package/core/MeganavSearchSuggestions/component.js +1 -1
  19. package/core/Notice/component.js +1 -1
  20. package/core/fonts/.DS_Store +0 -0
  21. package/core/images/.DS_Store +0 -0
  22. package/core/images/icon-tech-aws.svg +4 -0
  23. package/core/scripts.js +1 -1
  24. package/core/sprites.svg +141 -0
  25. package/core/styles.css +4 -0
  26. package/package.json +1 -1
  27. package/{src/core/MeganavContentWhyAbly/component.js → preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/log/.keep} +0 -0
  28. package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/tmp/.keep +0 -0
  29. package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/tmp/pids/.keep +0 -0
  30. package/src/.DS_Store +0 -0
  31. package/src/core/.DS_Store +0 -0
  32. package/src/core/Meganav/component.css +7 -1
  33. package/src/core/Meganav/component.json +4 -4
  34. package/src/core/Meganav/component.jsx +2 -2
  35. package/src/core/Meganav/component.rb +8 -4
  36. package/src/core/MeganavBlogPostsList/component.html.erb +3 -3
  37. package/src/core/MeganavBlogPostsList/component.js +2 -2
  38. package/src/core/MeganavBlogPostsList/component.jsx +3 -3
  39. package/src/core/MeganavContentCompany/component.html.erb +81 -0
  40. package/src/core/MeganavContentCompany/component.js +0 -0
  41. package/src/core/MeganavContentCompany/component.jsx +108 -0
  42. package/src/core/{MeganavContentWhyAbly → MeganavContentCompany}/component.rb +2 -1
  43. package/src/core/MeganavContentDevelopers/component.html.erb +101 -80
  44. package/src/core/MeganavContentDevelopers/component.jsx +102 -83
  45. package/src/core/MeganavContentPlatform/component.html.erb +95 -85
  46. package/src/core/MeganavContentPlatform/component.jsx +99 -92
  47. package/src/core/MeganavContentUseCases/component.html.erb +112 -83
  48. package/src/core/MeganavContentUseCases/component.jsx +114 -87
  49. package/src/core/MeganavControlMobilePanelClose/component.html.erb +4 -2
  50. package/src/core/MeganavControlMobilePanelClose/component.jsx +3 -2
  51. package/src/core/MeganavControlMobilePanelClose/component.rb +4 -1
  52. package/src/core/MeganavItemsDesktop/component.html.erb +2 -1
  53. package/src/core/MeganavItemsDesktop/component.jsx +2 -1
  54. package/src/core/MeganavItemsMobile/component.html.erb +1 -1
  55. package/src/core/MeganavItemsMobile/component.jsx +2 -1
  56. package/src/core/MeganavItemsMobile/component.rb +4 -0
  57. package/src/core/MeganavSearchSuggestions/component.js +15 -5
  58. package/src/core/core.rb +4 -0
  59. package/src/core/fonts/.DS_Store +0 -0
  60. package/src/core/icons/icon-display-about-ably-col.svg +4 -0
  61. package/src/core/icons/icon-display-careers-col.svg +9 -0
  62. package/src/core/icons/icon-display-case-studies-col.svg +5 -0
  63. package/src/core/icons/icon-display-chat-stack-col.svg +4 -0
  64. package/src/core/icons/icon-display-chat-stack.svg +4 -0
  65. package/src/core/icons/icon-display-compare-tech-col.svg +9 -0
  66. package/src/core/icons/icon-display-customers-col.svg +15 -0
  67. package/src/core/icons/icon-display-docs-col.svg +7 -0
  68. package/src/core/icons/icon-display-lightbulb-col.svg +10 -0
  69. package/src/core/icons/icon-display-quickstart-guides-col.svg +8 -0
  70. package/src/core/icons/icon-display-resources-col.svg +21 -0
  71. package/src/core/icons/icon-display-sdks-col.svg +11 -0
  72. package/src/core/icons/icon-display-tutorials-demos-col.svg +25 -0
  73. package/src/core/icons/icon-display-virtual-events-col.svg +12 -0
  74. package/src/core/icons/icon-display-virtual-events.svg +12 -0
  75. package/src/core/images/.DS_Store +0 -0
  76. package/src/core/images/icon-tech-aws.svg +4 -0
  77. package/src/core/styles/layout.css +4 -0
  78. package/src/reset/.DS_Store +0 -0
  79. package/core/images/blog-thumb1.jpg +0 -0
  80. package/core/images/blog-thumb2.jpg +0 -0
  81. package/core/images/blog-thumb3.jpg +0 -0
  82. package/src/core/MeganavContentWhyAbly/component.html.erb +0 -70
  83. package/src/core/MeganavContentWhyAbly/component.jsx +0 -95
  84. package/src/core/images/blog-thumb1.jpg +0 -0
  85. package/src/core/images/blog-thumb2.jpg +0 -0
  86. package/src/core/images/blog-thumb3.jpg +0 -0
package/core/styles.css CHANGED
@@ -306,6 +306,10 @@
306
306
  @apply gap-8 sm:gap-16 md:gap-24 xl:gap-32;
307
307
  }
308
308
 
309
+ .ui-grid-gap-x {
310
+ @apply gap-x-8 sm:gap-x-16 md:gap-x-24 xl:gap-x-32;
311
+ }
312
+
309
313
  .ui-grid-px {
310
314
  @apply px-24 sm:px-32 md:px-40 lg:px-64;
311
315
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ably/ui",
3
- "version": "8.1.2",
3
+ "version": "8.2.1-dev.f35b482",
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",
package/src/.DS_Store ADDED
Binary file
Binary file
@@ -74,6 +74,12 @@
74
74
  @apply px-24 md:px-32 lg:px-32 xl:px-64;
75
75
  }
76
76
 
77
+ /* This is implemented not as padding so we can change the color of just this space, while keeping the grid
78
+ as close to the designs as possible */
79
+ .ui-meganav-content-spacer {
80
+ @apply hidden md:block md:w-32 lg:w-32 xl:w-64 self-stretch flex-shrink-0 flex-grow-0;
81
+ }
82
+
77
83
  .ui-meganav-media {
78
84
  @apply block px-8 py-8 hover:bg-light-grey rounded relative -left-8 w-extend-8;
79
85
  }
@@ -83,7 +89,7 @@
83
89
  grid-template-rows: min-content 1fr;
84
90
 
85
91
  @apply block px-8 py-8 hover:bg-light-grey rounded relative -left-8 w-extend-8;
86
- @apply grid gap-x-16;
92
+ @apply grid gap-x-8;
87
93
  }
88
94
 
89
95
  .ui-meganav-media-heading {
@@ -29,9 +29,9 @@
29
29
  }
30
30
  },
31
31
  "panels": [
32
- { "label": "Platform", "id": "platform-panel", "component": "MeganavContentPlatform" },
33
- { "label": "Use Cases", "id": "use-cases-panel", "component": "MeganavContentUseCases" },
34
- { "label": "Why Ably", "id": "why-ably-panel", "component": "MeganavContentWhyAbly" },
35
- { "label": "Developers", "id": "developers-panel", "component": "MeganavContentDevelopers" }
32
+ { "label": "Platform", "shortLabel": "Platform", "id": "platform-panel", "component": "MeganavContentPlatform" },
33
+ { "label": "Use Cases & Solutions", "shortLabel": "Use Cases", "id": "use-cases-panel", "component": "MeganavContentUseCases" },
34
+ { "label": "Company", "shortLabel": "Company", "id": "company-panel", "component": "MeganavContentCompany" },
35
+ { "label": "Developers", "shortLabel": "Developers", "id": "developers-panel", "component": "MeganavContentDevelopers" }
36
36
  ]
37
37
  }
@@ -16,7 +16,7 @@ import _absUrl from "../url-base";
16
16
 
17
17
  import MeganavContentPlatform from "../MeganavContentPlatform/component.jsx";
18
18
  import MeganavContentUseCases from "../MeganavContentUseCases/component.jsx";
19
- import MeganavContentWhyAbly from "../MeganavContentWhyAbly/component.jsx";
19
+ import MeganavContentCompany from "../MeganavContentCompany/component.jsx";
20
20
  import MeganavContentDevelopers from "../MeganavContentDevelopers/component.jsx";
21
21
  import MeganavSearch from "../MeganavSearch/component.jsx";
22
22
 
@@ -60,7 +60,7 @@ const SignInPlaceholder = () => <div />;
60
60
  const panels = {
61
61
  MeganavContentPlatform: MeganavContentPlatform,
62
62
  MeganavContentUseCases: MeganavContentUseCases,
63
- MeganavContentWhyAbly: MeganavContentWhyAbly,
63
+ MeganavContentCompany: MeganavContentCompany,
64
64
  MeganavContentDevelopers: MeganavContentDevelopers,
65
65
  };
66
66
 
@@ -30,21 +30,25 @@ module AblyUi
30
30
  [
31
31
  {
32
32
  label: 'Platform',
33
+ short_label: 'Platform',
33
34
  id: 'platform-panel',
34
35
  class: 'AblyUi::Core::MeganavContentPlatform'
35
36
  },
36
37
  {
37
- label: 'Use Cases',
38
+ label: 'Use Cases & Solutions',
39
+ short_label: 'Use Cases',
38
40
  id: 'use-cases-panel',
39
41
  class: 'AblyUi::Core::MeganavContentUseCases'
40
42
  },
41
43
  {
42
- label: 'Why Ably',
43
- id: 'why-ably-panel',
44
- class: 'AblyUi::Core::MeganavContentWhyAbly'
44
+ label: 'Company',
45
+ short_label: 'Company',
46
+ id: 'company-panel',
47
+ class: 'AblyUi::Core::MeganavContentCompany'
45
48
  },
46
49
  {
47
50
  label: 'Developers',
51
+ short_label: 'Developers',
48
52
  id: 'developers-panel',
49
53
  class: 'AblyUi::Core::MeganavContentDevelopers'
50
54
  }
@@ -1,5 +1,5 @@
1
- <div class="hidden" data-id="meganav-why-ably-panel-blog-section">
2
- <h3 class="ui-meganav-overline" id="meganav-why-ably-panel-recent-blog-posts">Blog</h3>
3
- <ul class="mb-8" aria-labelledby="meganav-why-ably-panel-recent-blog-posts" data-id="meganav-why-ably-panel-recent-blog-posts"></ul>
1
+ <div class="hidden 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" data-id="meganav-company-panel-blog-section">
2
+ <h3 class="ui-meganav-overline" id="meganav-company-panel-recent-blog-posts">Blog</h3>
3
+ <ul class="mb-8" aria-labelledby="meganav-company-panel-recent-blog-posts" data-id="meganav-company-panel-recent-blog-posts"></ul>
4
4
  <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/blog"))) do %>More from our Blog<% end %>
5
5
  </div>
@@ -26,8 +26,8 @@ const template = ({ link, title, pubDate }) => {
26
26
  export default () => {
27
27
  connectState(selectRecentBlogPosts, (recentBlogPosts) => {
28
28
  if (Array.isArray(recentBlogPosts) && recentBlogPosts.length > 0) {
29
- const sections = queryIdAll("meganav-why-ably-panel-blog-section");
30
- const containers = queryIdAll("meganav-why-ably-panel-recent-blog-posts");
29
+ const sections = queryIdAll("meganav-company-panel-blog-section");
30
+ const containers = queryIdAll("meganav-company-panel-recent-blog-posts");
31
31
 
32
32
  Array.from(containers).forEach((container) => {
33
33
  const fragment = document.createDocumentFragment();
@@ -5,11 +5,11 @@ import FeaturedLink from "../FeaturedLink/component.jsx";
5
5
 
6
6
  const MeganavBlogPostsList = ({ recentBlogPosts, absUrl }) =>
7
7
  recentBlogPosts ? (
8
- <div>
9
- <h3 className="ui-meganav-overline" id="meganav-why-ably-panel-list-blog">
8
+ <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">
9
+ <h3 className="ui-meganav-overline" id="meganav-company-panel-list-blog">
10
10
  Blog
11
11
  </h3>
12
- <ul className="mb-8" aria-labelledby="meganav-why-ably-panel-list-blog">
12
+ <ul className="mb-8" aria-labelledby="meganav-company-panel-list-blog">
13
13
  {recentBlogPosts.map((post) => (
14
14
  <li key={post.link}>
15
15
  <a href={post.link} className="ui-meganav-media group">
@@ -0,0 +1,81 @@
1
+ <div class="flex">
2
+ <div class="ui-meganav-content-spacer"></div>
3
+ <section class="grid grid-cols-12 ui-grid-gap-x">
4
+ <div class="col-span-full md:col-span-4 pt-24 md:py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24">
5
+ <h3 class="ui-meganav-overline" id="meganav-company-panel-list-why-companies">Why companies choose Ably</h3>
6
+ <ul aria-labelledby="meganav-company-panel-list-why-companies">
7
+ <li>
8
+ <%= link_to abs_url("/customers"), class: "ui-meganav-media-with-image group" do %>
9
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-customers-col", size: "2.5rem")) %>
10
+ <div class="flex flex-col justify-center">
11
+ <p class="ui-meganav-media-heading">Customers</p>
12
+ <p class="ui-meganav-media-copy">Ably supports customers across multiple industries.</p>
13
+ </div>
14
+ <% end %>
15
+ </li>
16
+ <li>
17
+ <%= link_to abs_url("/case-studies"), class: "ui-meganav-media-with-image group" do %>
18
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-case-studies-col", size: "2.5rem")) %>
19
+ <div class="flex flex-col justify-center">
20
+ <p class="ui-meganav-media-heading">Case studies</p>
21
+ <p class="ui-meganav-media-copy">Discover how customers are benefitting from Ably.</p>
22
+ </div>
23
+ <% end %>
24
+ </li>
25
+ <li>
26
+ <%= link_to abs_url("/compare"), class: "ui-meganav-media-with-image group" do %>
27
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-compare-tech-col", size: "2.5rem")) %>
28
+ <div class="flex flex-col justify-center">
29
+ <p class="ui-meganav-media-heading">Compare our tech</p>
30
+ <p class="ui-meganav-media-copy">Choose the right realtime service.</p>
31
+ </div>
32
+ <% end %>
33
+ </li>
34
+ <li>
35
+ <%= link_to abs_url("/aws"), class: "ui-meganav-media-with-image group" do %>
36
+ <%= image_tag(aws_logo_path, alt: "AWS logo") %>
37
+ <div class="flex flex-col justify-center">
38
+ <p class="ui-meganav-media-heading">Partners</p>
39
+ <p class="ui-meganav-media-copy">Ably collaborates and integrates with AWS.</p>
40
+ </div>
41
+ <% end %>
42
+ </li>
43
+ </ul>
44
+ </div>
45
+
46
+ <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">
47
+ <ul class="md:mt-40" aria-labelledby="meganav-company-panel-list-why-companies">
48
+ <li>
49
+ <%= link_to abs_url("/resources"), class: "ui-meganav-media-with-image group" do %>
50
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-resources-col", size: "2.5rem")) %>
51
+ <div class="flex flex-col justify-center">
52
+ <p class="ui-meganav-media-heading">Resources</p>
53
+ <p class="ui-meganav-media-copy">Learn more about realtime with our handy resources.</p>
54
+ </div>
55
+ <% end %>
56
+ </li>
57
+ <li>
58
+ <%= link_to abs_url("/compare"), class: "ui-meganav-media-with-image group" do %>
59
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-about-ably-col", size: "2.5rem")) %>
60
+ <div class="flex flex-col justify-center">
61
+ <p class="ui-meganav-media-heading">About Ably</p>
62
+ <p class="ui-meganav-media-copy">Find out more about Ably’s mission.</p>
63
+ </div>
64
+ <% end %>
65
+ </li>
66
+ <li>
67
+ <%= link_to abs_url("/careers"), class: "ui-meganav-media-with-image group" do %>
68
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-careers-col", size: "2.5rem")) %>
69
+ <div class="flex flex-col justify-center">
70
+ <p class="ui-meganav-media-heading">Careers</p>
71
+ <p class="ui-meganav-media-copy">Discover our open roles and core Ably values.</p>
72
+ </div>
73
+ <% end %>
74
+ </li>
75
+ </ul>
76
+ </div>
77
+
78
+ <%= render(AblyUi::Core::MeganavBlogPostsList.new(url_base: url_base)) %>
79
+ </section>
80
+ <div class="ui-meganav-content-spacer"></div>
81
+ </div>
File without changes
@@ -0,0 +1,108 @@
1
+ import React from "react";
2
+ import T from "prop-types";
3
+
4
+ import MeganavBlogPostsList from "../MeganavBlogPostsList/component.jsx";
5
+ import ConnectStateWrapper from "../ConnectStateWrapper/component.jsx";
6
+
7
+ import { selectRecentBlogPosts } from "../remote-blogs-posts";
8
+
9
+ import Icon from "../Icon/component.jsx";
10
+
11
+ const MeganavContentCompany = ({ paths, absUrl }) => {
12
+ const BlogPostsList = ConnectStateWrapper(MeganavBlogPostsList, { recentBlogPosts: selectRecentBlogPosts });
13
+
14
+ return (
15
+ <div className="flex">
16
+ <div className="ui-meganav-content-spacer"></div>
17
+ <section className="grid grid-cols-12 ui-grid-gap-x">
18
+ <div className="col-span-full md:col-span-4 pt-24 md:py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24">
19
+ <h3 className="ui-meganav-overline" id="meganav-company-panel-list-why-companies">
20
+ Why companies choose Ably
21
+ </h3>
22
+ <ul aria-labelledby="meganav-company-panel-list-why-companies">
23
+ <li>
24
+ <a href={absUrl("/customers")} className="ui-meganav-media-with-image group">
25
+ <Icon name="icon-display-customers-col" size="2.5rem" />
26
+ <div className="flex flex-col justify-center">
27
+ <p className="ui-meganav-media-heading">Customers</p>
28
+ <p className="ui-meganav-media-copy">Ably supports customers across multiple industries.</p>
29
+ </div>
30
+ </a>
31
+ </li>
32
+ <li>
33
+ <a href={absUrl("/case-studies")} className="ui-meganav-media-with-image group">
34
+ <Icon name="icon-display-case-studies-col" size="2.5rem" />
35
+ <div className="flex flex-col justify-center">
36
+ <p className="ui-meganav-media-heading">Case studies</p>
37
+ <p className="ui-meganav-media-copy">Discover how customers are benefitting from Ably.</p>
38
+ </div>
39
+ </a>
40
+ </li>
41
+ <li>
42
+ <a href={absUrl("/compare")} className="ui-meganav-media-with-image group">
43
+ <Icon name="icon-display-compare-tech-col" size="2.5rem" />
44
+ <div className="flex flex-col justify-center">
45
+ <p className="ui-meganav-media-heading">Compare our tech</p>
46
+ <p className="ui-meganav-media-copy">Choose the right realtime service.</p>
47
+ </div>
48
+ </a>
49
+ </li>
50
+ <li>
51
+ <a href={absUrl("/aws")} className="ui-meganav-media-with-image group">
52
+ <img src={paths.awsLogo} alt="AWS logo" />
53
+ <div className="flex flex-col justify-center">
54
+ <p className="ui-meganav-media-heading">Partners</p>
55
+ <p className="ui-meganav-media-copy">Ably collaborates and integrates with AWS.</p>
56
+ </div>
57
+ </a>
58
+ </li>
59
+ </ul>
60
+ </div>
61
+
62
+ <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">
63
+ <ul className="md:mt-40" aria-labelledby="meganav-company-panel-list-why-companies">
64
+ <li>
65
+ <a href={absUrl("/resources")} className="ui-meganav-media-with-image group">
66
+ <Icon name="icon-display-resources-col" size="2.5rem" />
67
+ <div className="flex flex-col justify-center">
68
+ <p className="ui-meganav-media-heading">Resources</p>
69
+ <p className="ui-meganav-media-copy">Learn more about realtime with our handy resources.</p>
70
+ </div>
71
+ </a>
72
+ </li>
73
+ <li>
74
+ <a href={absUrl("/about")} className="ui-meganav-media-with-image group">
75
+ <Icon name="icon-display-about-ably-col" size="2.5rem" />
76
+ <div className="flex flex-col justify-center">
77
+ <p className="ui-meganav-media-heading">About Ably</p>
78
+ <p className="ui-meganav-media-copy">Find out more about Ably’s mission.</p>
79
+ </div>
80
+ </a>
81
+ </li>
82
+ <li>
83
+ <a href={absUrl("/careers")} className="ui-meganav-media-with-image group">
84
+ <Icon name="icon-display-careers-col" size="2.5rem" />
85
+ <div className="flex flex-col justify-center">
86
+ <p className="ui-meganav-media-heading">Careers</p>
87
+ <p className="ui-meganav-media-copy">Discover our open roles and core Ably values.</p>
88
+ </div>
89
+ </a>
90
+ </li>
91
+ </ul>
92
+ </div>
93
+
94
+ <BlogPostsList absUrl={absUrl} />
95
+ </section>
96
+ <div className="ui-meganav-content-spacer"></div>
97
+ </div>
98
+ );
99
+ };
100
+
101
+ MeganavContentCompany.propTypes = {
102
+ absUrl: T.func,
103
+ paths: T.shape({
104
+ awsLogo: T.string,
105
+ }),
106
+ };
107
+
108
+ export default MeganavContentCompany;
@@ -1,7 +1,8 @@
1
1
  module AblyUi
2
2
  module Core
3
- class MeganavContentWhyAbly < ViewComponent::Base
3
+ class MeganavContentCompany < ViewComponent::Base
4
4
  include Util
5
+ include SharedAssets
5
6
 
6
7
  attr_reader :url_base
7
8
 
@@ -1,83 +1,104 @@
1
- <section class="ui-meganav-content ui-grid-gap md:grid-cols-3">
2
- <div>
3
- <h3 class="ui-meganav-overline md:mb-8">Documentation</h3>
4
- <div class="relative mb-16">
5
- <%= tag.form class: "relative", action: abs_url("/search"), method: "get" do %>
6
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-search", size: "1.5rem", color: "text-cool-black", additional_css: "absolute top-8 left-8 pt-1 mt-1")) %>
7
- <input type="search" name="q" class="ui-input pl-48" placeholder="Search docs" />
8
- <% end %>
1
+ <div class="flex">
2
+ <div class="ui-meganav-content-spacer"></div>
3
+ <section class="grid grid-cols-12 ui-grid-gap-x">
4
+ <div class="col-span-full md:col-span-4 pt-24 md:py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24">
5
+ <h3 class="ui-meganav-overline uppercase" id="meganav-developers-panel-explore">
6
+ Explore
7
+ </h3>
8
+ <ul aria-labelledby="meganav-developers-panel-explore">
9
+ <li>
10
+ <%= link_to abs_url("/docs"), class: "ui-meganav-media-with-image group" do %>
11
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-docs-col", size: "2.5rem")) %>
12
+ <div class="flex flex-col justify-center">
13
+ <p class="ui-meganav-media-heading">Documentation</p>
14
+ <p class="ui-meganav-media-copy">Technical guides to help you build with Ably.</p>
15
+ </div>
16
+ <% end %>
17
+ </li>
18
+ <li>
19
+ <%= link_to abs_url("/docs/key-concepts"), class: "ui-meganav-media-with-image group" do %>
20
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-lightbulb-col", size: "2.5rem")) %>
21
+ <div class="flex flex-col justify-center">
22
+ <p class="ui-meganav-media-heading">Concepts</p>
23
+ <p class="ui-meganav-media-copy">Read about core Ably platform concepts.</p>
24
+ </div>
25
+ <% end %>
26
+ </li>
27
+ <li>
28
+ <%= link_to abs_url("/docs/quick-start-guide"), class: "ui-meganav-media-with-image group" do %>
29
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-quickstart-guides-col", size: "2.5rem")) %>
30
+ <div class="flex flex-col justify-center">
31
+ <p class="ui-meganav-media-heading">Quickstart guides</p>
32
+ <p class="ui-meganav-media-copy">Documentation to help you get up and running quickly.</p>
33
+ </div>
34
+ <% end %>
35
+ </li>
36
+ </ul>
9
37
  </div>
10
- <p class="text-p1 font-medium text-cool-black mb-20">
11
- Docs, quick start guides, tutorials, and API reference to help you start building with Ably’s platform and APIs.
12
- </p>
13
38
 
14
- <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/docs"))) do %>Visit Documentation<% end %>
15
- </div>
16
-
17
- <div>
18
- <h3 class="ui-meganav-overline uppercase" id="meganav-developers-panel-explore">Explore</h3>
19
- <ul aria-labelledby="meganav-developers-panel-explore">
20
- <li>
21
- <%= link_to abs_url("/integrations"), class: "ui-meganav-media group" do %>
22
- <p class="ui-meganav-media-heading">Third-party integrations & plugins</p>
23
- <p class="ui-meganav-media-copy">Integrate and extend Ably with cloud services like AWS Kinesis.</p>
24
- <% end %>
25
- </li>
26
- <li>
27
- <%= link_to abs_url("/protocols"), class: "ui-meganav-media group" do %>
28
- <p class="ui-meganav-media-heading">Multi-protocol messaging</p>
29
- <p class="ui-meganav-media-copy">We support pub/sub over WebSockets, MQTT, SSE, and more.</p>
30
- <% end %>
31
- </li>
32
- <li>
33
- <%= link_to abs_url("/hub"), class: "ui-meganav-media group" do %>
34
- <p class="ui-meganav-media-heading">Streaming data sources</p>
35
- <p class="ui-meganav-media-copy">Augment your apps with realtime updates like weather or transit.</p>
36
- <% end %>
37
- </li>
38
- <li>
39
- <%= link_to abs_url("/periodic-table-of-realtime"), class: "ui-meganav-media group" do %>
40
- <p class="ui-meganav-media-heading">The Periodic Table of Realtime</p>
41
- <p class="ui-meganav-media-copy">A compendium for all things realtime and event-driven.</p>
42
- <% end %>
43
- </li>
44
- </ul>
45
- </div>
46
-
47
- <div>
48
- <h3 class="ui-meganav-overline uppercase" id="meganav-developers-panel-quick-links">Quick links</h3>
49
- <ul aria-labelledby="meganav-developers-panel-quick-links">
50
- <li>
51
- <%= link_to abs_url("/download"), class: "group ui-meganav-media py-12" do %>
52
- <p class="ui-meganav-media-heading">Download an SDK</p>
53
- <% end %>
54
- </li>
55
-
56
- <li>
57
- <a href="https://changelog.ably.com/" class="group ui-meganav-media py-12">
58
- <p class="ui-meganav-media-heading">Platform changelog</p>
59
- </a>
60
- </li>
61
-
62
- <li>
63
- <%= link_to abs_url("/support"), class: "group ui-meganav-media py-12" do %>
64
- <p class="ui-meganav-media-heading">Support & FAQs</p>
65
- <% end %>
66
- </li>
39
+ <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">
40
+ <ul class="md:mt-40" aria-labelledby="meganav-developers-panel-explore">
41
+ <li>
42
+ <%= link_to abs_url("/download"), class: "ui-meganav-media-with-image group" do %>
43
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-sdks-col", size: "2.5rem")) %>
44
+ <div class="flex flex-col justify-center">
45
+ <p class="ui-meganav-media-heading">SDKs</p>
46
+ <p class="ui-meganav-media-copy">Download an SDK to help you build realtime apps faster.</p>
47
+ </div>
48
+ <% end %>
49
+ </li>
50
+ <li>
51
+ <%= link_to abs_url("/tutorials"), class: "ui-meganav-media-with-image group" do %>
52
+ <%= render(AblyUi::Core::Icon.new(name: "icon-display-tutorials-demos-col", size: "2.5rem")) %>
53
+ <div class="flex flex-col justify-center">
54
+ <p class="ui-meganav-media-heading">Tutorials & Demos</p>
55
+ <p class="ui-meganav-media-copy">Get stuck in with our hands-on resources. </p>
56
+ </div>
57
+ <% end %>
58
+ </li>
59
+ </ul>
60
+ </div>
67
61
 
68
- <li>
69
- <a href="https://status.ably.com/" class="group ui-meganav-media py-12">
70
- <p class="ui-meganav-media-heading">
71
- Status<iframe
72
- src="https://status.ably.com/embed/icon"
73
- allowtransparency="true"
74
- frameborder="0"
75
- scrolling="no"
76
- class="w-24 h-24 ml-4 border-none pointer-events-none align-middle"
77
- ></iframe>
78
- </p>
79
- </a>
80
- </li>
81
- </ul>
82
- </div>
83
- </section>
62
+ <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">
63
+ <h3 class="ui-meganav-overline uppercase" id="meganav-developers-panel-quick-links">
64
+ Quick links
65
+ </h3>
66
+ <ul aria-labelledby="meganav-developers-panel-quick-links">
67
+ <li>
68
+ <%= link_to "https://discord.gg/jwBPhEZ9g5", class: "group ui-meganav-media py-12" do %>
69
+ <p class="ui-meganav-media-heading">Discord</p>
70
+ <% end %>
71
+ </li>
72
+ <li>
73
+ <%= link_to "https://github.com/ably", class: "group ui-meganav-media py-12" do %>
74
+ <p class="ui-meganav-media-heading">Github</p>
75
+ <% end %>
76
+ </li>
77
+ <li>
78
+ <%= link_to "https://changelog.ably.com/", class: "group ui-meganav-media py-12" do %>
79
+ <p class="ui-meganav-media-heading">Changelog</p>
80
+ <% end %>
81
+ </li>
82
+ <li>
83
+ <a href="https://status.ably.com/" class="group ui-meganav-media py-12">
84
+ <p class="ui-meganav-media-heading">
85
+ Status<iframe
86
+ src="https://status.ably.com/embed/icon"
87
+ allowtransparency="true"
88
+ frameborder="0"
89
+ scrolling="no"
90
+ class="w-24 h-24 ml-4 border-none pointer-events-none align-middle"
91
+ ></iframe>
92
+ </p>
93
+ </a>
94
+ </li>
95
+ <li>
96
+ <%= link_to abs_url("/support"), class: "group ui-meganav-media py-12" do %>
97
+ <p class="ui-meganav-media-heading">Support & FAQs</p>
98
+ <% end %>
99
+ </li>
100
+ </ul>
101
+ </div>
102
+ </section>
103
+ <div class="ui-meganav-content-spacer"></div>
104
+ </div>