ably-ui 8.2.1.dev.611f3bd → 8.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/ably_ui/core/core.rb +0 -4
  4. data/lib/ably_ui/core/images/blog-thumb1.jpg +0 -0
  5. data/lib/ably_ui/core/images/blog-thumb2.jpg +0 -0
  6. data/lib/ably_ui/core/images/blog-thumb3.jpg +0 -0
  7. data/lib/ably_ui/core/meganav/component.css +1 -11
  8. data/lib/ably_ui/core/meganav/component.js +1 -1
  9. data/lib/ably_ui/core/meganav/component.json +4 -4
  10. data/lib/ably_ui/core/meganav/meganav.rb +4 -8
  11. data/lib/ably_ui/core/meganav_blog_posts_list/component.js +1 -1
  12. data/lib/ably_ui/core/meganav_blog_posts_list/meganav_blog_posts_list.html.erb +4 -4
  13. data/lib/ably_ui/core/meganav_content_developers/meganav_content_developers.html.erb +80 -101
  14. data/lib/ably_ui/core/meganav_content_platform/meganav_content_platform.html.erb +91 -95
  15. data/lib/ably_ui/core/meganav_content_use_cases/meganav_content_use_cases.html.erb +83 -112
  16. data/lib/ably_ui/core/{meganav_content_company → meganav_content_why_ably}/component.js +1 -1
  17. data/lib/ably_ui/core/meganav_content_why_ably/meganav_content_why_ably.html.erb +70 -0
  18. data/lib/ably_ui/core/{meganav_content_company/meganav_content_company.rb → meganav_content_why_ably/meganav_content_why_ably.rb} +1 -2
  19. data/lib/ably_ui/core/meganav_control/component.js +1 -1
  20. data/lib/ably_ui/core/meganav_control/meganav_control.html.erb +1 -1
  21. data/lib/ably_ui/core/meganav_control/meganav_control.rb +2 -8
  22. data/lib/ably_ui/core/meganav_control_mobile_panel_close/meganav_control_mobile_panel_close.html.erb +2 -4
  23. data/lib/ably_ui/core/meganav_control_mobile_panel_close/meganav_control_mobile_panel_close.rb +1 -4
  24. data/lib/ably_ui/core/meganav_items_desktop/meganav_items_desktop.html.erb +3 -4
  25. data/lib/ably_ui/core/meganav_items_desktop/meganav_items_desktop.rb +0 -8
  26. data/lib/ably_ui/core/meganav_items_mobile/meganav_items_mobile.html.erb +1 -1
  27. data/lib/ably_ui/core/meganav_items_mobile/meganav_items_mobile.rb +0 -4
  28. data/lib/ably_ui/core/meganav_items_signed_in/meganav_items_signed_in.html.erb +1 -1
  29. data/lib/ably_ui/core/sprites.svg +0 -141
  30. data/lib/ably_ui/core/styles.css +0 -4
  31. data/lib/ably_ui/version.rb +1 -1
  32. metadata +15 -15
  33. data/lib/ably_ui/core/images/icon-tech-aws.svg +0 -4
  34. data/lib/ably_ui/core/meganav_content_company/meganav_content_company.html.erb +0 -81
  35. data/lib/ably_ui/react/connect_state_wrapper/component.js +0 -1
  36. data/lib/ably_ui/react/scripts.js +0 -1
@@ -0,0 +1,70 @@
1
+ <section class="ui-meganav-content ui-grid-gap md:grid-cols-3">
2
+ <div>
3
+ <h3 class="ui-meganav-overline" id="meganav-why-ably-panel-list-why-companies">Why companies choose Ably</h3>
4
+ <ul aria-labelledby="meganav-why-ably-panel-list-why-companies">
5
+ <li>
6
+ <%= link_to abs_url("/customers"), class: "group ui-meganav-media py-12" do %>
7
+ <p class="ui-meganav-media-heading">Customers</p>
8
+ <% end %>
9
+ </li>
10
+
11
+ <li>
12
+ <%= link_to abs_url("/case-studies"), class: "group ui-meganav-media py-12" do %>
13
+ <p class="ui-meganav-media-heading">Case studies</p>
14
+ <% end %>
15
+ </li>
16
+
17
+ <li>
18
+ <%= link_to abs_url("/compare"), class: "group ui-meganav-media py-12" do %>
19
+ <p class="ui-meganav-media-heading">Compare our tech</p>
20
+ <% end %>
21
+ </li>
22
+
23
+ <li>
24
+ <%= link_to abs_url("/aws"), class: "group ui-meganav-media py-12" do %>
25
+ <p class="ui-meganav-media-heading">Ably & AWS</p>
26
+ <% end %>
27
+ </li>
28
+
29
+ <li>
30
+ <%= link_to abs_url("/resources"), class: "group ui-meganav-media py-12" do %>
31
+ <p class="ui-meganav-media-heading">Resources</p>
32
+ <% end %>
33
+ </li>
34
+ </ul>
35
+ </div>
36
+
37
+ <div>
38
+ <h3 class="ui-meganav-overline" id="meganav-why-ably-panel-list-four-pillars">Four pillars of dependability</h3>
39
+ <ul class="mb-8" aria-labelledby="meganav-why-ably-panel-list-four-pillars">
40
+ <li>
41
+ <%= link_to abs_url("/four-pillars-of-dependability#performance"), class: "ui-meganav-media group" do %>
42
+ <p class="ui-meganav-media-heading">Predictable performance</p>
43
+ <p class="ui-meganav-media-copy">A low-latency global edge network across 200+ PoPs.</p>
44
+ <% end %>
45
+ </li>
46
+ <li>
47
+ <%= link_to abs_url("/four-pillars-of-dependability#integrity"), class: "ui-meganav-media group" do %>
48
+ <p class="ui-meganav-media-heading">Guaranteed ordering & delivery</p>
49
+ <p class="ui-meganav-media-copy">We guarantee in-order data delivery, even after disconnections.</p>
50
+ <% end %>
51
+ </li>
52
+ <li>
53
+ <%= link_to abs_url("/four-pillars-of-dependability#reliability"), class: "ui-meganav-media group" do %>
54
+ <p class="ui-meganav-media-heading">Fault tolerant infrastructure</p>
55
+ <p class="ui-meganav-media-copy">Redundant at regional and global levels with 99.999% uptime SLAs.</p>
56
+ <% end %>
57
+ </li>
58
+ <li>
59
+ <%= link_to abs_url("/four-pillars-of-dependability#availability"), class: "ui-meganav-media group" do %>
60
+ <p class="ui-meganav-media-heading">High scalability & availability</p>
61
+ <p class="ui-meganav-media-copy">Elastic, battle-tested global infrastructure for massive scale.</p>
62
+ <% end %>
63
+ </li>
64
+ </ul>
65
+
66
+ <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/four-pillars-of-dependability"))) do %>Explore our Four Pillars of Dependability<% end %>
67
+ </div>
68
+
69
+ <%= render(AblyUi::Core::MeganavBlogPostsList.new(url_base: url_base)) %>
70
+ </section>
@@ -1,8 +1,7 @@
1
1
  module AblyUi
2
2
  module Core
3
- class MeganavContentCompany < ViewComponent::Base
3
+ class MeganavContentWhyAbly < ViewComponent::Base
4
4
  include Util
5
- include SharedAssets
6
5
 
7
6
  attr_reader :url_base
8
7
 
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AblyUi=t():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.MeganavControl=t())}(this,(function(){return(()=>{"use strict";var e={9581:(e,t,r)=>{r.d(t,{A:()=>n,n:()=>o});var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return t.querySelector("[data-id=".concat(e,"]"))},o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return t.querySelectorAll("[data-id=".concat(e,"]"))}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n={};return(()=>{r.d(n,{default:()=>o});var e=r(9581);function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}const o=function(){var r=Array.from((0,e.n)("meganav-control")),n=Array.from((0,e.n)("meganav-panel")),o=getComputedStyle(document.documentElement).getPropertyValue("--bp-md"),a=function(e){return"search"===e.dataset.control},i=function(e,n,a){if(window.matchMedia("(hover: hover) and (pointer: fine) and (min-width: ".concat(o,")")).matches&&!r.some((function(e){return e===document.activeElement}))&&!function(){var e=document.querySelector('[data-id="meganav-panel"]#panel-search');if(e)return!e.classList.contains("invisible")}()){var i,c=["invisible","visible"];(i=n.classList).replace.apply(i,function(e){if(Array.isArray(e))return t(e)}(u=a?c:c.reverse())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(u)||function(e,r){if(e){if("string"==typeof e)return t(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,r):void 0}}(u)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),e.setAttribute("aria-expanded",a),e.dataset.hover=a}var u};return r.map((function(t){var o,c,u=t.parentNode,s=document.querySelector("#".concat(t.getAttribute("aria-controls"))),l=function(t,o){return function(){r.forEach((function(e){return e!==t&&e.setAttribute("aria-expanded",!1)})),n.forEach((function(e){return e!==o&&e.classList.replace("visible","invisible")}));var i=t.getAttribute("aria-expanded"),c="true"===t.dataset.hover;if("true"!==i||c?(t.setAttribute("aria-expanded",!0),o.classList.replace("invisible","visible")):(t.setAttribute("aria-expanded",!1),o.classList.replace("visible","invisible")),c&&(t.dataset.hover=!1),a(t)){var u=(0,e.A)("meganav-search-input",o);if(!u)return;u.focus()}else t.focus()}}(t,s);return t.addEventListener("click",l),a(t)||(o=function(e,t){return function(){return i(e,t,!0)}}(t,s),c=function(e,t){return function(){return i(e,t,!1)}}(t,s),u.addEventListener("mouseenter",o),u.addEventListener("mouseleave",c)),[{teardown:function(){o&&c&&(u.removeEventListener("mouseenter",o),u.removeEventListener("mouseleave",c)),t.removeEventListener("click",l)},clear:function(){t.setAttribute("aria-expanded",!1),s.classList.replace("visible","invisible")}}]})).flat()}})(),n.default})()}));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.AblyUi=t():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.MeganavControl=t())}(this,(function(){return(()=>{"use strict";var e={9581:(e,t,r)=>{r.d(t,{A:()=>n,n:()=>i});var n=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return t.querySelector("[data-id=".concat(e,"]"))},i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return t.querySelectorAll("[data-id=".concat(e,"]"))}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n={};return(()=>{r.d(n,{default:()=>i});var e=r(9581);function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}const i=function(){var r=Array.from((0,e.n)("meganav-control")),n=Array.from((0,e.n)("meganav-panel")),i=getComputedStyle(document.documentElement).getPropertyValue("--bp-md"),o=function(e){return"search"===e.dataset.control},a=function(e,n,o){if(window.matchMedia("(hover: hover) and (pointer: fine) and (min-width: ".concat(i,")")).matches&&!r.some((function(e){return e===document.activeElement}))&&!function(){var e=document.querySelector('[data-id="meganav-panel"]#panel-search');if(e)return!e.classList.contains("invisible")}()){var a,c=["invisible","visible"];(a=n.classList).replace.apply(a,function(e){if(Array.isArray(e))return t(e)}(u=o?c:c.reverse())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(u)||function(e,r){if(e){if("string"==typeof e)return t(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,r):void 0}}(u)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),e.setAttribute("aria-expanded",o)}var u};return r.map((function(t){var i,c,u=t.parentNode,l=document.querySelector("#".concat(t.getAttribute("aria-controls"))),s=function(t,i){return function(){if(r.forEach((function(e){return e!==t&&e.setAttribute("aria-expanded",!1)})),n.forEach((function(e){return e!==i&&e.classList.replace("visible","invisible")})),"true"===t.getAttribute("aria-expanded")?(t.setAttribute("aria-expanded",!1),i.classList.replace("visible","invisible")):(t.setAttribute("aria-expanded",!0),i.classList.replace("invisible","visible")),o(t)){var a=(0,e.A)("meganav-search-input",i);if(!a)return;a.focus()}else t.focus()}}(t,l);return t.addEventListener("click",s),o(t)||(i=function(e,t){return function(){return a(e,t,!0)}}(t,l),c=function(e,t){return function(){return a(e,t,!1)}}(t,l),u.addEventListener("mouseenter",i),u.addEventListener("mouseleave",c)),[{teardown:function(){i&&c&&(u.removeEventListener("mouseenter",i),u.removeEventListener("mouseleave",c)),t.removeEventListener("click",s)},clear:function(){t.setAttribute("aria-expanded",!1),l.classList.replace("visible","invisible")}}]})).flat()}})(),n.default})()}));
@@ -1,6 +1,6 @@
1
1
  <%= button_tag(type: "button",
2
2
  class: ["ui-meganav-link", "h-64", "flex", "items-center", "group", theme(:text_color), additional_css],
3
3
  data: { id: "meganav-control" },
4
- aria: { expanded: false, controls: aria_controls, label: "Show #{aria_label} panel" }) do -%>
4
+ aria: { expanded: false, controls: aria_controls, label: "Show #{content}" }) do -%>
5
5
  <%= content -%><%= render(AblyUi::Core::Icon.new(name: "icon-gui-disclosure-arrow", size: "1.5rem", color: "text-cool-black", additional_css: "transform rotate-90 group-hover:text-gui-hover group-focus:text-gui-focus")) %>
6
6
  <% end %>
@@ -2,16 +2,10 @@ module AblyUi
2
2
  module Core
3
3
  class MeganavControl < ViewComponent::Base
4
4
  include AblyUi::Core::MeganavConfig
5
- attr_reader :aria_controls, :aria_label, :additional_css
5
+ attr_reader :aria_controls, :additional_css
6
6
 
7
- def initialize(
8
- aria_controls:,
9
- aria_label:,
10
- theme_name:,
11
- additional_css: ''
12
- )
7
+ def initialize(aria_controls:, theme_name:, additional_css: '')
13
8
  @aria_controls = aria_controls
14
- @aria_label = aria_label
15
9
  @additional_css = additional_css
16
10
  theme_setup(theme_name)
17
11
  end
@@ -2,11 +2,9 @@
2
2
  <%= button_tag(type: "button",
3
3
  class: "ui-meganav-mobile-link text-gui-default mb-16",
4
4
  data: { id: "meganav-control-mobile-panel-close" },
5
- aria: { expanded: false, controls: aria_controls, label: "Hide panel" }) do -%>
5
+ aria: { expanded: false, controls: @aria_controls, label: "Hide panel" }) do -%>
6
6
  <%= render(AblyUi::Core::Icon.new(name: "icon-gui-disclosure-arrow", size: "1.5rem", color: "text-cool-black", additional_css: "relative -top-1 transform rotate-180")) %>
7
7
  Back
8
8
  <% end %>
9
- <% if display_hr %>
10
- <hr class="ui-meganav-hr" />
11
- <% end %>
9
+ <hr class="ui-meganav-hr" />
12
10
  </div>
@@ -1,11 +1,8 @@
1
1
  module AblyUi
2
2
  module Core
3
3
  class MeganavControlMobilePanelClose < ViewComponent::Base
4
- attr_reader :aria_controls, :display_hr
5
-
6
- def initialize(aria_controls:, display_hr: true)
4
+ def initialize(aria_controls:)
7
5
  @aria_controls = aria_controls
8
- @display_hr = display_hr
9
6
  end
10
7
  end
11
8
  end
@@ -1,12 +1,11 @@
1
1
  <ul class="hidden md:flex" data-id="meganav-items-desktop">
2
2
  <% panels.each do |panel| %>
3
3
  <li class="ui-meganav-item">
4
- <%= render(AblyUi::Core::MeganavControl.new(aria_controls: panel[:id], aria_label: panel[:label], theme_name: @theme_name)) do %>
5
- <span class="hidden lg:inline"><%= panel[:label] %></span>
6
- <span class="lg:hidden"><%= panel[:short_label] %></span>
4
+ <%= render(AblyUi::Core::MeganavControl.new(aria_controls: panel[:id], theme_name: @theme_name)) do %>
5
+ <%= panel[:label] %>
7
6
  <% end %>
8
7
 
9
- <%= content_tag :div, class: "ui-meganav-panel invisible #{bg_css(panel[:id])}", data: { id: "meganav-panel" }, id: panel[:id] do %>
8
+ <%= content_tag :div, class: 'ui-meganav-panel invisible', data: { id: "meganav-panel" }, id: panel[:id] do %>
10
9
  <%= render("AblyUi::Core::#{panel[:component]}".constantize.new(url_base: url_base)) %>
11
10
  <% end %>
12
11
  </li>
@@ -10,14 +10,6 @@ module AblyUi
10
10
  @theme_name = theme_name
11
11
  @url_base = url_base
12
12
  end
13
-
14
- def bg_css(panel_id)
15
- if %w[platform-panel use-cases-panel].include?(panel_id)
16
- 'ui-meganav-panel-split-bg'
17
- else
18
- ''
19
- end
20
- end
21
13
  end
22
14
  end
23
15
  end
@@ -48,7 +48,7 @@
48
48
  <% end %>
49
49
 
50
50
  <%= content_tag(:div, class: "ui-meganav-panel-mobile hidden", id: "#{panel[:id]}-mobile", data: { scroll_lock_scrollable: true }) do %>
51
- <%= render(AblyUi::Core::MeganavControlMobilePanelClose.new(aria_controls: "#{panel[:id]}-mobile", display_hr: display_hr(panel[:id]))) %>
51
+ <%= render(AblyUi::Core::MeganavControlMobilePanelClose.new(aria_controls: "#{panel[:id]}-mobile")) %>
52
52
  <%= render("AblyUi::Core::#{panel[:component]}".constantize.new(url_base: url_base)) %>
53
53
  <% end %>
54
54
  </li>
@@ -12,10 +12,6 @@ module AblyUi
12
12
  @login_link = login_link
13
13
  @url_base = url_base
14
14
  end
15
-
16
- def display_hr(panel_id)
17
- %w[company-panel developers-panel].include?(panel_id)
18
- end
19
15
  end
20
16
  end
21
17
  end
@@ -1,6 +1,6 @@
1
1
  <ul class="hidden md:flex items-center">
2
2
  <li class="ui-meganav-item relative">
3
- <%= render(AblyUi::Core::MeganavControl.new(aria_controls: "account-panel", aria_label: "Account", theme_name: @theme_name, additional_css: "mr-0")) do %>
3
+ <%= render(AblyUi::Core::MeganavControl.new(aria_controls: "account-panel", theme_name: @theme_name, additional_css: "mr-0")) do %>
4
4
  <%= account_name %>
5
5
  <% end %>
6
6