ably-ui 8.2.1.dev.611f3bd → 8.2.1

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 (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