@ably/ui 8.2.1 → 8.5.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.
Files changed (86) hide show
  1. package/core/Flash.jsx +1 -0
  2. package/core/Footer.jsx +1 -3
  3. package/core/Meganav/component.css +11 -1
  4. package/core/Meganav/component.js +1 -1
  5. package/core/Meganav/component.json +4 -4
  6. package/core/Meganav.jsx +495 -347
  7. package/core/MeganavBlogPostsList/component.js +1 -1
  8. package/core/MeganavBlogPostsList.jsx +7 -4
  9. package/core/{MeganavContentWhyAbly → MeganavContentCompany}/component.js +1 -1
  10. package/core/{MeganavContentWhyAbly.jsx → MeganavContentCompany.jsx} +102 -59
  11. package/core/MeganavContentDevelopers.jsx +80 -102
  12. package/core/MeganavContentPlatform.jsx +34 -17
  13. package/core/MeganavContentUseCases.jsx +128 -36
  14. package/core/MeganavControl/component.js +1 -1
  15. package/core/MeganavControl.jsx +3 -1
  16. package/core/MeganavControlMobilePanelClose.jsx +7 -4
  17. package/core/MeganavItemsDesktop.jsx +13 -5
  18. package/core/MeganavItemsMobile.jsx +11 -6
  19. package/core/MeganavItemsSignedIn.jsx +4 -1
  20. package/core/Notice.jsx +1 -1
  21. package/core/images/icon-tech-aws.svg +4 -0
  22. package/core/sprites.svg +150 -0
  23. package/core/styles.css +4 -0
  24. package/package.json +1 -1
  25. package/src/core/Flash/component.jsx +1 -1
  26. package/src/core/Footer/component.html.erb +1 -1
  27. package/src/core/Footer/component.jsx +1 -6
  28. package/src/core/Meganav/component.css +11 -1
  29. package/src/core/Meganav/component.json +4 -4
  30. package/src/core/Meganav/component.jsx +2 -2
  31. package/src/core/Meganav/component.rb +8 -4
  32. package/src/core/MeganavBlogPostsList/component.html.erb +4 -4
  33. package/src/core/MeganavBlogPostsList/component.js +2 -2
  34. package/src/core/MeganavBlogPostsList/component.jsx +6 -4
  35. package/src/core/MeganavContentCompany/component.html.erb +81 -0
  36. package/src/core/{MeganavContentWhyAbly → MeganavContentCompany}/component.js +0 -0
  37. package/src/core/MeganavContentCompany/component.jsx +108 -0
  38. package/src/core/{MeganavContentWhyAbly → MeganavContentCompany}/component.rb +2 -1
  39. package/src/core/MeganavContentDevelopers/component.html.erb +101 -80
  40. package/src/core/MeganavContentDevelopers/component.jsx +102 -83
  41. package/src/core/MeganavContentPlatform/component.html.erb +95 -91
  42. package/src/core/MeganavContentPlatform/component.jsx +105 -97
  43. package/src/core/MeganavContentUseCases/component.html.erb +112 -83
  44. package/src/core/MeganavContentUseCases/component.jsx +114 -87
  45. package/src/core/MeganavControl/component.html.erb +1 -1
  46. package/src/core/MeganavControl/component.js +9 -1
  47. package/src/core/MeganavControl/component.jsx +3 -2
  48. package/src/core/MeganavControl/component.rb +8 -2
  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 +4 -3
  53. package/src/core/MeganavItemsDesktop/component.jsx +5 -3
  54. package/src/core/MeganavItemsDesktop/component.rb +8 -0
  55. package/src/core/MeganavItemsMobile/component.html.erb +1 -1
  56. package/src/core/MeganavItemsMobile/component.jsx +2 -1
  57. package/src/core/MeganavItemsMobile/component.rb +4 -0
  58. package/src/core/MeganavItemsSignedIn/component.html.erb +1 -1
  59. package/src/core/MeganavItemsSignedIn/component.jsx +1 -1
  60. package/src/core/core.rb +4 -0
  61. package/src/core/icons/icon-display-about-ably-col.svg +4 -0
  62. package/src/core/icons/icon-display-careers-col.svg +9 -0
  63. package/src/core/icons/icon-display-case-studies-col.svg +5 -0
  64. package/src/core/icons/icon-display-chat-stack-col.svg +4 -0
  65. package/src/core/icons/icon-display-chat-stack.svg +4 -0
  66. package/src/core/icons/icon-display-compare-tech-col.svg +9 -0
  67. package/src/core/icons/icon-display-customers-col.svg +15 -0
  68. package/src/core/icons/icon-display-docs-col.svg +7 -0
  69. package/src/core/icons/icon-display-lightbulb-col.svg +10 -0
  70. package/src/core/icons/icon-display-quickstart-guides-col.svg +8 -0
  71. package/src/core/icons/icon-display-resources-col.svg +21 -0
  72. package/src/core/icons/icon-display-sdks-col.svg +11 -0
  73. package/src/core/icons/icon-display-tutorials-demos-col.svg +25 -0
  74. package/src/core/icons/icon-display-virtual-events-col.svg +12 -0
  75. package/src/core/icons/icon-display-virtual-events.svg +12 -0
  76. package/src/core/icons/icon-gui-copy.svg +10 -0
  77. package/src/core/images/icon-tech-aws.svg +4 -0
  78. package/src/core/styles/layout.css +4 -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.2.1",
3
+ "version": "8.5.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",
@@ -167,5 +167,5 @@ BackendFlashes.propTypes = {
167
167
  flashes: T.arrayOf(T.arrayOf(T.string)),
168
168
  };
169
169
 
170
- export { reducerFlashes, FLASH_DATA_ID };
170
+ export { reducerFlashes, FLASH_DATA_ID, Flashes };
171
171
  export default BackendFlashes;
@@ -141,7 +141,7 @@
141
141
  <%= link_to 'Open protocol policy', abs_url("/open-policy"), class: "ui-footer-menu-row-link" %>
142
142
  </li>
143
143
  <li class="p-menu-row-snug">
144
- <a href="https://www.notion.so/ably/Ably-Press-Center-551152f5be724d4495a7c2e29d9f51c7" target="_blank" rel="noopener" class="ui-footer-menu-row-link">Press & Media</a>
144
+ <%= link_to 'Press & Media', abs_url("/press-center"), class: "ui-footer-menu-row-link" %>
145
145
  </li>
146
146
  <li class="p-menu-row-snug">
147
147
  <%= link_to 'Contact us', abs_url("/contact"), class: "ui-footer-menu-row-link" %>
@@ -219,12 +219,7 @@ export default function Footer({ paths, urlBase }) {
219
219
  </a>
220
220
  </li>
221
221
  <li className="p-menu-row-snug">
222
- <a
223
- href="https://www.notion.so/ably/Ably-Press-Center-551152f5be724d4495a7c2e29d9f51c7"
224
- rel="noopener noreferrer"
225
- target="_blank"
226
- className="ui-footer-menu-row-link"
227
- >
222
+ <a href={absUrl("/press-center")} className="ui-footer-menu-row-link">
228
223
  Press & Media
229
224
  </a>
230
225
  </li>
@@ -46,6 +46,10 @@
46
46
  @apply bg-white rounded-t-none;
47
47
  }
48
48
 
49
+ .ui-meganav-panel-split-bg {
50
+ background: linear-gradient(to right, #fafafb 33%, white 33%, white 100%);
51
+ }
52
+
49
53
  .ui-meganav-link {
50
54
  @apply text-menu2 font-medium block;
51
55
  @apply mr-12 lg:mr-24 px-0 py-20;
@@ -74,6 +78,12 @@
74
78
  @apply px-24 md:px-32 lg:px-32 xl:px-64;
75
79
  }
76
80
 
81
+ /* This is implemented not as padding so we can change the color of just this space, while keeping the grid
82
+ as close to the designs as possible */
83
+ .ui-meganav-content-spacer {
84
+ @apply hidden md:block md:w-32 lg:w-32 xl:w-64 self-stretch flex-shrink-0 flex-grow-0;
85
+ }
86
+
77
87
  .ui-meganav-media {
78
88
  @apply block px-8 py-8 hover:bg-light-grey rounded relative -left-8 w-extend-8;
79
89
  }
@@ -83,7 +93,7 @@
83
93
  grid-template-rows: min-content 1fr;
84
94
 
85
95
  @apply block px-8 py-8 hover:bg-light-grey rounded relative -left-8 w-extend-8;
86
- @apply grid gap-x-16;
96
+ @apply grid gap-x-8;
87
97
  }
88
98
 
89
99
  .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>
4
- <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/blog"))) do %>More from our Blog<% end %>
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
+ <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/blog"), text_size: 'text-p3')) 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">
@@ -20,7 +20,9 @@ const MeganavBlogPostsList = ({ recentBlogPosts, absUrl }) =>
20
20
  ))}
21
21
  </ul>
22
22
 
23
- <FeaturedLink url={absUrl("/blog")}>More from our Blog</FeaturedLink>
23
+ <FeaturedLink url={absUrl("/blog")} textSize="text-p3">
24
+ More from our Blog
25
+ </FeaturedLink>
24
26
  </div>
25
27
  ) : null;
26
28
 
@@ -0,0 +1,81 @@
1
+ <div class="flex max-w-screen-xl mx-auto">
2
+ <div class="ui-meganav-content-spacer"></div>
3
+ <section class="grid grid-cols-12 ui-grid-gap-x w-full">
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 benefiting 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("/about"), 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>
@@ -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 max-w-screen-xl mx-auto">
16
+ <div className="ui-meganav-content-spacer"></div>
17
+ <section className="grid grid-cols-12 ui-grid-gap-x w-full">
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 benefiting 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 max-w-screen-xl mx-auto">
2
+ <div class="ui-meganav-content-spacer"></div>
3
+ <section class="grid grid-cols-12 ui-grid-gap-x w-full">
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 started 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>