ably-ui 4.2.0.dev.1a5533f

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +8 -0
  3. data/Gemfile.lock +34 -0
  4. data/LICENSE +13 -0
  5. data/README.md +419 -0
  6. data/ably-ui.gemspec +22 -0
  7. data/lib/ably_ui/core/code/code.html.erb +3 -0
  8. data/lib/ably_ui/core/code/code.rb +11 -0
  9. data/lib/ably_ui/core/code/component.css +70 -0
  10. data/lib/ably_ui/core/code/component.js +1 -0
  11. data/lib/ably_ui/core/connect_state_wrapper/component.js +1 -0
  12. data/lib/ably_ui/core/contact_footer/component.css +12 -0
  13. data/lib/ably_ui/core/contact_footer/component.js +1 -0
  14. data/lib/ably_ui/core/contact_footer/contact_footer.html.erb +32 -0
  15. data/lib/ably_ui/core/contact_footer/contact_footer.rb +13 -0
  16. data/lib/ably_ui/core/cookie_message/component.css +14 -0
  17. data/lib/ably_ui/core/cookie_message/component.js +1 -0
  18. data/lib/ably_ui/core/core.rb +65 -0
  19. data/lib/ably_ui/core/feature_footer/component.css +13 -0
  20. data/lib/ably_ui/core/feature_footer/component.js +1 -0
  21. data/lib/ably_ui/core/feature_footer/feature_footer.html.erb +54 -0
  22. data/lib/ably_ui/core/feature_footer/feature_footer.rb +30 -0
  23. data/lib/ably_ui/core/featured_link/component.css +17 -0
  24. data/lib/ably_ui/core/featured_link/component.js +1 -0
  25. data/lib/ably_ui/core/featured_link/featured_link.html.erb +6 -0
  26. data/lib/ably_ui/core/featured_link/featured_link.rb +17 -0
  27. data/lib/ably_ui/core/flash/component.css +30 -0
  28. data/lib/ably_ui/core/flash/component.js +1 -0
  29. data/lib/ably_ui/core/fonts/NEXT-Book-Light-Italic.eot +0 -0
  30. data/lib/ably_ui/core/fonts/NEXT-Book-Light-Italic.otf +0 -0
  31. data/lib/ably_ui/core/fonts/NEXT-Book-Light-Italic.woff +0 -0
  32. data/lib/ably_ui/core/fonts/NEXT-Book-Light-Italic.woff2 +0 -0
  33. data/lib/ably_ui/core/fonts/NEXT-Book-Light.eot +0 -0
  34. data/lib/ably_ui/core/fonts/NEXT-Book-Light.otf +0 -0
  35. data/lib/ably_ui/core/fonts/NEXT-Book-Light.woff +0 -0
  36. data/lib/ably_ui/core/fonts/NEXT-Book-Light.woff2 +0 -0
  37. data/lib/ably_ui/core/fonts/NEXT-Book-Medium-Italic.eot +0 -0
  38. data/lib/ably_ui/core/fonts/NEXT-Book-Medium-Italic.otf +0 -0
  39. data/lib/ably_ui/core/fonts/NEXT-Book-Medium-Italic.woff +0 -0
  40. data/lib/ably_ui/core/fonts/NEXT-Book-Medium-Italic.woff2 +0 -0
  41. data/lib/ably_ui/core/fonts/NEXT-Book-Medium.eot +0 -0
  42. data/lib/ably_ui/core/fonts/NEXT-Book-Medium.otf +0 -0
  43. data/lib/ably_ui/core/fonts/NEXT-Book-Medium.woff +0 -0
  44. data/lib/ably_ui/core/fonts/NEXT-Book-Medium.woff2 +0 -0
  45. data/lib/ably_ui/core/fonts/next.css +59 -0
  46. data/lib/ably_ui/core/footer/component.css +14 -0
  47. data/lib/ably_ui/core/footer/component.js +1 -0
  48. data/lib/ably_ui/core/footer/footer.html.erb +190 -0
  49. data/lib/ably_ui/core/footer/footer.rb +14 -0
  50. data/lib/ably_ui/core/icon/component.css +1 -0
  51. data/lib/ably_ui/core/icon/component.js +1 -0
  52. data/lib/ably_ui/core/icon/icon.html.erb +3 -0
  53. data/lib/ably_ui/core/icon/icon.rb +25 -0
  54. data/lib/ably_ui/core/images/ably-logo.svg +15 -0
  55. data/lib/ably_ui/core/images/ably-stack.svg +14 -0
  56. data/lib/ably_ui/core/images/blog-thumb1.jpg +0 -0
  57. data/lib/ably_ui/core/images/blog-thumb2.jpg +0 -0
  58. data/lib/ably_ui/core/images/blog-thumb3.jpg +0 -0
  59. data/lib/ably_ui/core/images/cust-logo-ao-col-pos.png +0 -0
  60. data/lib/ably_ui/core/images/cust-logo-ao-col-pos@2x.png +0 -0
  61. data/lib/ably_ui/core/images/cust-logo-ausopen-col-pos.png +0 -0
  62. data/lib/ably_ui/core/images/cust-logo-ausopen-col-pos@2x.png +0 -0
  63. data/lib/ably_ui/core/images/cust-logo-hubspot-col-pos.png +0 -0
  64. data/lib/ably_ui/core/images/cust-logo-hubspot-col-pos@2x.png +0 -0
  65. data/lib/ably_ui/core/images/cust-logo-lightspeed-col-pos.png +0 -0
  66. data/lib/ably_ui/core/images/cust-logo-lightspeed-col-pos@2x.png +0 -0
  67. data/lib/ably_ui/core/images/cust-logo-lightspeed-syst-col-pos.png +0 -0
  68. data/lib/ably_ui/core/images/cust-logo-lightspeed-syst-col-pos@2x.png +0 -0
  69. data/lib/ably_ui/core/images/cust-logo-split-col-pos.png +0 -0
  70. data/lib/ably_ui/core/images/cust-logo-split-col-pos@2x.png +0 -0
  71. data/lib/ably_ui/core/images/cust-logo-vitac-col-pos.png +0 -0
  72. data/lib/ably_ui/core/images/cust-logo-vitac-col-pos@2x.png +0 -0
  73. data/lib/ably_ui/core/images/cust-photo-hubspot-max-freiert.jpg +0 -0
  74. data/lib/ably_ui/core/images/cust-photo-split-pato-echague.jpg +0 -0
  75. data/lib/ably_ui/core/images/cust-photo-vitac-joe-antonio.jpg +0 -0
  76. data/lib/ably_ui/core/images/flexible-companies.png +0 -0
  77. data/lib/ably_ui/core/images/rocket-list-2021.png +0 -0
  78. data/lib/ably_ui/core/images/scale-motif-open-empathetic.svg +1 -0
  79. data/lib/ably_ui/core/images/technical-support-01-800x533.jpg +0 -0
  80. data/lib/ably_ui/core/logo/component.js +1 -0
  81. data/lib/ably_ui/core/logo/logo.html.erb +28 -0
  82. data/lib/ably_ui/core/logo/logo.rb +19 -0
  83. data/lib/ably_ui/core/meganav/component.css +103 -0
  84. data/lib/ably_ui/core/meganav/component.js +1 -0
  85. data/lib/ably_ui/core/meganav/component.json +37 -0
  86. data/lib/ably_ui/core/meganav/meganav.html.erb +26 -0
  87. data/lib/ably_ui/core/meganav/meganav.rb +53 -0
  88. data/lib/ably_ui/core/meganav_blog_posts_list/component.js +1 -0
  89. data/lib/ably_ui/core/meganav_blog_posts_list/meganav_blog_posts_list.html.erb +5 -0
  90. data/lib/ably_ui/core/meganav_blog_posts_list/meganav_blog_posts_list.rb +13 -0
  91. data/lib/ably_ui/core/meganav_content_developers/component.js +1 -0
  92. data/lib/ably_ui/core/meganav_content_developers/meganav_content_developers.html.erb +77 -0
  93. data/lib/ably_ui/core/meganav_content_developers/meganav_content_developers.rb +13 -0
  94. data/lib/ably_ui/core/meganav_content_platform/component.js +1 -0
  95. data/lib/ably_ui/core/meganav_content_platform/meganav_content_platform.html.erb +91 -0
  96. data/lib/ably_ui/core/meganav_content_platform/meganav_content_platform.rb +14 -0
  97. data/lib/ably_ui/core/meganav_content_use_cases/component.js +1 -0
  98. data/lib/ably_ui/core/meganav_content_use_cases/meganav_content_use_cases.html.erb +72 -0
  99. data/lib/ably_ui/core/meganav_content_use_cases/meganav_content_use_cases.rb +13 -0
  100. data/lib/ably_ui/core/meganav_content_why_ably/component.js +1 -0
  101. data/lib/ably_ui/core/meganav_content_why_ably/meganav_content_why_ably.html.erb +70 -0
  102. data/lib/ably_ui/core/meganav_content_why_ably/meganav_content_why_ably.rb +13 -0
  103. data/lib/ably_ui/core/meganav_control/component.js +1 -0
  104. data/lib/ably_ui/core/meganav_control/meganav_control.html.erb +6 -0
  105. data/lib/ably_ui/core/meganav_control/meganav_control.rb +12 -0
  106. data/lib/ably_ui/core/meganav_control_mobile_dropdown/component.js +1 -0
  107. data/lib/ably_ui/core/meganav_control_mobile_dropdown/meganav_control_mobile_dropdown.html.erb +7 -0
  108. data/lib/ably_ui/core/meganav_control_mobile_dropdown/meganav_control_mobile_dropdown.rb +11 -0
  109. data/lib/ably_ui/core/meganav_control_mobile_panel_close/component.js +1 -0
  110. data/lib/ably_ui/core/meganav_control_mobile_panel_close/meganav_control_mobile_panel_close.html.erb +10 -0
  111. data/lib/ably_ui/core/meganav_control_mobile_panel_close/meganav_control_mobile_panel_close.rb +9 -0
  112. data/lib/ably_ui/core/meganav_control_mobile_panel_open/component.js +1 -0
  113. data/lib/ably_ui/core/meganav_control_mobile_panel_open/meganav_control_mobile_panel_open.html.erb +7 -0
  114. data/lib/ably_ui/core/meganav_control_mobile_panel_open/meganav_control_mobile_panel_open.rb +9 -0
  115. data/lib/ably_ui/core/meganav_items_desktop/component.js +1 -0
  116. data/lib/ably_ui/core/meganav_items_desktop/meganav_items_desktop.html.erb +16 -0
  117. data/lib/ably_ui/core/meganav_items_desktop/meganav_items_desktop.rb +15 -0
  118. data/lib/ably_ui/core/meganav_items_mobile/component.js +1 -0
  119. data/lib/ably_ui/core/meganav_items_mobile/meganav_items_mobile.html.erb +47 -0
  120. data/lib/ably_ui/core/meganav_items_mobile/meganav_items_mobile.rb +17 -0
  121. data/lib/ably_ui/core/meganav_items_signed_in/component.js +1 -0
  122. data/lib/ably_ui/core/meganav_items_signed_in/meganav_items_signed_in.html.erb +49 -0
  123. data/lib/ably_ui/core/meganav_items_signed_in/meganav_items_signed_in.rb +33 -0
  124. data/lib/ably_ui/core/notice/component.css +8 -0
  125. data/lib/ably_ui/core/notice/component.js +2 -0
  126. data/lib/ably_ui/core/notice/notice.html.erb +16 -0
  127. data/lib/ably_ui/core/notice/notice.rb +29 -0
  128. data/lib/ably_ui/core/scripts.js +1 -0
  129. data/lib/ably_ui/core/showcase/component.css +31 -0
  130. data/lib/ably_ui/core/showcase/component.js +1 -0
  131. data/lib/ably_ui/core/showcase/showcase.html.erb +76 -0
  132. data/lib/ably_ui/core/showcase/showcase.rb +190 -0
  133. data/lib/ably_ui/core/sign_out_link/component.js +1 -0
  134. data/lib/ably_ui/core/sign_out_link/sign_out_link.html.erb +1 -0
  135. data/lib/ably_ui/core/sign_out_link/sign_out_link.rb +17 -0
  136. data/lib/ably_ui/core/slider/component.css +9 -0
  137. data/lib/ably_ui/core/slider/component.js +1 -0
  138. data/lib/ably_ui/core/slider/slider.html.erb +28 -0
  139. data/lib/ably_ui/core/slider/slider.rb +38 -0
  140. data/lib/ably_ui/core/sprites.svg +113 -0
  141. data/lib/ably_ui/core/styles.css +332 -0
  142. data/lib/ably_ui/core/uptime/component.css +129 -0
  143. data/lib/ably_ui/core/uptime/component.js +1 -0
  144. data/lib/ably_ui/core/uptime/uptime.html.erb +0 -0
  145. data/lib/ably_ui/core/uptime/uptime.rb +7 -0
  146. data/lib/ably_ui/reset/scripts.js +1 -0
  147. data/lib/ably_ui/reset/styles.css +487 -0
  148. data/lib/ably_ui/version.rb +3 -0
  149. data/lib/ably_ui.rb +27 -0
  150. metadata +210 -0
@@ -0,0 +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.Meganav=t())}(this,(function(){return(()=>{var e={2498:(e,t,r)=>{"use strict";r.d(t,{default:()=>l});var n=r(9581);function o(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 l=function(){var e=Array.from((0,n.n)("meganav-control")),t=Array.from((0,n.n)("meganav-panel")),r=getComputedStyle(document.documentElement).getPropertyValue("--bp-md"),l=function(t,n,l){if(window.matchMedia("(hover: hover) and (pointer: fine) and (min-width: ".concat(r,")")).matches&&!e.some((function(e){return e===document.activeElement}))){var i,a=["invisible","visible"];(i=n.classList).replace.apply(i,function(e){if(Array.isArray(e))return o(e)}(c=l?a:a.reverse())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(c)||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.")}()),t.setAttribute("aria-expanded",l)}var c};return e.map((function(r){var n=r.parentNode,o=document.querySelector("#".concat(r.getAttribute("aria-controls"))),i=function(r,n){return function(){e.forEach((function(e){return e!==r&&e.setAttribute("aria-expanded",!1)})),t.forEach((function(e){return e!==n&&e.classList.replace("visible","invisible")})),r.getAttribute("aria-expanded")?(r.setAttribute("aria-expanded",!0),n.classList.replace("invisible","visible")):(r.setAttribute("aria-expanded",!1),n.classList.replace("visible","invisible"))}}(r,o),a=function(e,t){return function(){return l(e,t,!0)}}(r,o),c=function(e,t){return function(){return l(e,t,!1)}}(r,o);return n.addEventListener("mouseenter",a),n.addEventListener("mouseleave",c),r.addEventListener("click",i),[{teardown:function(){n.removeEventListener("mouseenter",a),n.removeEventListener("mouseleave",c),r.removeEventListener("click",i)},clear:function(){r.setAttribute("aria-expanded",!1),o.classList.replace("visible","invisible")}}]})).flat()}},1792:(e,t,r)=>{"use strict";r.d(t,{default:()=>i});var n=r(6265),o=r.n(n),l=r(9581);const i=function(e){var t=e.clearPanels,r=(0,l.A)("meganav-control-mobile-dropdown"),n=(0,l.A)("meganav-mobile-dropdown"),i=(0,l.A)("meganav-control-mobile-dropdown-menu"),a=(0,l.A)("meganav-control-mobile-dropdown-close"),c=function(){"false"===r.getAttribute("aria-expanded")?(n.classList.replace("invisible","visible"),r.setAttribute("aria-expanded",!0),o().disablePageScroll()):(n.classList.replace("visible","invisible"),r.setAttribute("aria-expanded",!1),o().enablePageScroll(),t()),i.classList.toggle("hidden"),a.classList.toggle("hidden")};return r.addEventListener("click",c),{teardown:function(){r.removeEventListener("click",c),o().enablePageScroll()},clear:function(){n.classList.replace("visible","invisible"),r.setAttribute("aria-expanded",!1),i.classList.remove("hidden"),a.classList.add("hidden"),o().enablePageScroll()}}}},7359:(e,t,r)=>{"use strict";r.d(t,{default:()=>o});var n=r(9581);const o=function(){var e=Array.from((0,n.n)("meganav-control-mobile-panel-close")),t=Array.from((0,n.n)("meganav-control-mobile-panel-open"));return e.map((function(e){var r=t.find((function(t){return t.getAttribute("aria-controls")===e.getAttribute("aria-controls")})),n=document.querySelector("#".concat(e.getAttribute("aria-controls"))),o=function(e,t,r){return function(){e.setAttribute("aria-expanded",!1),t.setAttribute("aria-expanded",!1),r.classList.replace("block","hidden"),r.style.height=null}}(e,r,n);return e.addEventListener("click",o),{teardown:function(){return e.removeEventListener("click",o)},clear:function(){return e.setAttribute("aria-expanded",!1)}}}))}},9552:(e,t,r)=>{"use strict";r.d(t,{default:()=>o});var n=r(9581);const o=function(){var e,t=Array.from((0,n.n)("meganav-control-mobile-panel-close")),r=Array.from((0,n.n)("meganav-control-mobile-panel-open")),o=(0,n.A)("meganav-mobile-dropdown"),l=(e=getComputedStyle(document.documentElement).getPropertyValue("--ui-meganav-height"),parseFloat(e)*parseFloat(getComputedStyle(document.documentElement).fontSize));return r.map((function(e){var r=t.find((function(t){return t.getAttribute("aria-controls")===e.getAttribute("aria-controls")})),n=document.querySelector("#".concat(e.getAttribute("aria-controls"))),i=function(e,t,r){return function(){e.setAttribute("aria-expanded",!0),t.setAttribute("aria-expanded",!0),r.classList.replace("hidden","block"),r.style.height="".concat(window.innerHeight-l>r.offsetHeight?r.offsetHeight:window.innerHeight-l,"px")}}(e,r,n);return e.addEventListener("click",i),{teardown:function(){return e.removeEventListener("click",i)},clear:function(){n.classList.replace("block","hidden"),o.classList.remove("ui-meganav-mobile-dropdown-expand"),e.setAttribute("aria-expanded",!1),n.style.height=null}}}))}},9581:(e,t,r)=>{"use strict";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,"]"))}},3096:(e,t,r)=>{var n="Expected a function",o=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,a=/^0o[0-7]+$/i,c=parseInt,u="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,s="object"==typeof self&&self&&self.Object===Object&&self,d=u||s||Function("return this")(),f=Object.prototype.toString,p=Math.max,g=Math.min,b=function(){return d.Date.now()};function v(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function m(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==f.call(e)}(e))return NaN;if(v(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=v(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var r=i.test(e);return r||a.test(e)?c(e.slice(2),r?2:8):l.test(e)?NaN:+e}e.exports=function(e,t,r){var o=!0,l=!0;if("function"!=typeof e)throw new TypeError(n);return v(r)&&(o="leading"in r?!!r.leading:o,l="trailing"in r?!!r.trailing:l),function(e,t,r){var o,l,i,a,c,u,s=0,d=!1,f=!1,h=!0;if("function"!=typeof e)throw new TypeError(n);function y(t){var r=o,n=l;return o=l=void 0,s=t,a=e.apply(n,r)}function S(e){return s=e,c=setTimeout(A,t),d?y(e):a}function w(e){var r=e-u;return void 0===u||r>=t||r<0||f&&e-s>=i}function A(){var e=b();if(w(e))return k(e);c=setTimeout(A,function(e){var r=t-(e-u);return f?g(r,i-(e-s)):r}(e))}function k(e){return c=void 0,h&&o?y(e):(o=l=void 0,a)}function L(){var e=b(),r=w(e);if(o=arguments,l=this,u=e,r){if(void 0===c)return S(u);if(f)return c=setTimeout(A,t),y(u)}return void 0===c&&(c=setTimeout(A,t)),a}return t=m(t)||0,v(r)&&(d=!!r.leading,i=(f="maxWait"in r)?p(m(r.maxWait)||0,t):i,h="trailing"in r?!!r.trailing:h),L.cancel=function(){void 0!==c&&clearTimeout(c),s=0,o=u=l=c=void 0},L.flush=function(){return void 0===c?a:k(b())},L}(e,t,{leading:o,maxWait:t,trailing:l})}},6265:function(e){var t;t=function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";r.r(t);var n=function(e){return Array.isArray(e)?e:[e]},o=function(e){return e instanceof Node},l=function(e,t){if(e&&t){e=function(e){return e instanceof NodeList}(e)?e:[e];for(var r=0;r<e.length&&!0!==t(e[r],r,e.length);r++);}},i=function(e){return console.error("[scroll-lock] ".concat(e))},a=function(e){if(Array.isArray(e))return e.join(", ")},c=function(e){var t=[];return l(e,(function(e){return t.push(e)})),t},u=function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:document;if(r&&-1!==c(n.querySelectorAll(t)).indexOf(e))return e;for(;(e=e.parentElement)&&-1===c(n.querySelectorAll(t)).indexOf(e););return e},s=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:document,n=-1!==c(r.querySelectorAll(t)).indexOf(e);return n},d=function(e){if(e)return"hidden"===getComputedStyle(e).overflow},f=function(e){if(e)return!!d(e)||e.scrollTop<=0},p=function(e){if(e){if(d(e))return!0;var t=e.scrollTop,r=e.scrollHeight;return t+e.offsetHeight>=r}},g=function(e){if(e)return!!d(e)||e.scrollLeft<=0},b=function(e){if(e){if(d(e))return!0;var t=e.scrollLeft,r=e.scrollWidth;return t+e.offsetWidth>=r}},v=function(e){return s(e,'textarea, [contenteditable="true"]')},m=function(e){return s(e,'input[type="range"]')};function h(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}r.d(t,"disablePageScroll",(function(){return w})),r.d(t,"enablePageScroll",(function(){return A})),r.d(t,"getScrollState",(function(){return k})),r.d(t,"clearQueueScrollLocks",(function(){return L})),r.d(t,"getTargetScrollBarWidth",(function(){return x})),r.d(t,"getCurrentTargetScrollBarWidth",(function(){return E})),r.d(t,"getPageScrollBarWidth",(function(){return T})),r.d(t,"getCurrentPageScrollBarWidth",(function(){return j})),r.d(t,"addScrollableTarget",(function(){return O})),r.d(t,"removeScrollableTarget",(function(){return G})),r.d(t,"addScrollableSelector",(function(){return W})),r.d(t,"removeScrollableSelector",(function(){return F})),r.d(t,"addLockableTarget",(function(){return P})),r.d(t,"addLockableSelector",(function(){return Y})),r.d(t,"setFillGapMethod",(function(){return q})),r.d(t,"addFillGapTarget",(function(){return M})),r.d(t,"removeFillGapTarget",(function(){return C})),r.d(t,"addFillGapSelector",(function(){return N})),r.d(t,"removeFillGapSelector",(function(){return U})),r.d(t,"refillGaps",(function(){return B}));var y=["padding","margin","width","max-width","none"],S={scroll:!0,queue:0,scrollableSelectors:["[data-scroll-lock-scrollable]"],lockableSelectors:["body","[data-scroll-lock-lockable]"],fillGapSelectors:["body","[data-scroll-lock-fill-gap]","[data-scroll-lock-lockable]"],fillGapMethod:y[0],startTouchY:0,startTouchX:0},w=function(e){S.queue<=0&&(S.scroll=!1,K(),$()),O(e),S.queue++},A=function(e){S.queue>0&&S.queue--,S.queue<=0&&(S.scroll=!0,R(),D()),G(e)},k=function(){return S.scroll},L=function(){S.queue=0},x=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(o(e)){var r=e.style.overflowY;t?k()||(e.style.overflowY=e.getAttribute("data-scroll-lock-saved-overflow-y-property")):e.style.overflowY="scroll";var n=E(e);return e.style.overflowY=r,n}return 0},E=function(e){if(o(e)){if(e===document.body){var t=document.documentElement.clientWidth;return window.innerWidth-t}var r=e.style.borderLeftWidth,n=e.style.borderRightWidth;e.style.borderLeftWidth="0px",e.style.borderRightWidth="0px";var l=e.offsetWidth-e.clientWidth;return e.style.borderLeftWidth=r,e.style.borderRightWidth=n,l}return 0},T=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return x(document.body,e)},j=function(){return E(document.body)},O=function(e){e&&n(e).map((function(e){l(e,(function(e){o(e)?e.setAttribute("data-scroll-lock-scrollable",""):i('"'.concat(e,'" is not a Element.'))}))}))},G=function(e){e&&n(e).map((function(e){l(e,(function(e){o(e)?e.removeAttribute("data-scroll-lock-scrollable"):i('"'.concat(e,'" is not a Element.'))}))}))},W=function(e){e&&n(e).map((function(e){S.scrollableSelectors.push(e)}))},F=function(e){e&&n(e).map((function(e){S.scrollableSelectors=S.scrollableSelectors.filter((function(t){return t!==e}))}))},P=function(e){e&&(n(e).map((function(e){l(e,(function(e){o(e)?e.setAttribute("data-scroll-lock-lockable",""):i('"'.concat(e,'" is not a Element.'))}))})),k()||K())},Y=function(e){e&&(n(e).map((function(e){S.lockableSelectors.push(e)})),k()||K(),N(e))},q=function(e){if(e)if(-1!==y.indexOf(e))S.fillGapMethod=e,B();else{var t=y.join(", ");i('"'.concat(e,'" method is not available!\nAvailable fill gap methods: ').concat(t,"."))}},M=function(e){e&&n(e).map((function(e){l(e,(function(e){o(e)?(e.setAttribute("data-scroll-lock-fill-gap",""),S.scroll||z(e)):i('"'.concat(e,'" is not a Element.'))}))}))},C=function(e){e&&n(e).map((function(e){l(e,(function(e){o(e)?(e.removeAttribute("data-scroll-lock-fill-gap"),S.scroll||J(e)):i('"'.concat(e,'" is not a Element.'))}))}))},N=function(e){e&&n(e).map((function(e){-1===S.fillGapSelectors.indexOf(e)&&(S.fillGapSelectors.push(e),S.scroll||Q(e))}))},U=function(e){e&&n(e).map((function(e){S.fillGapSelectors=S.fillGapSelectors.filter((function(t){return t!==e})),S.scroll||V(e)}))},B=function(){S.scroll||$()},K=function(){var e=a(S.lockableSelectors);_(e)},R=function(){var e=a(S.lockableSelectors);I(e)},_=function(e){var t=document.querySelectorAll(e);l(t,(function(e){H(e)}))},I=function(e){var t=document.querySelectorAll(e);l(t,(function(e){X(e)}))},H=function(e){if(o(e)&&"true"!==e.getAttribute("data-scroll-lock-locked")){var t=window.getComputedStyle(e);e.setAttribute("data-scroll-lock-saved-overflow-y-property",t.overflowY),e.setAttribute("data-scroll-lock-saved-inline-overflow-property",e.style.overflow),e.setAttribute("data-scroll-lock-saved-inline-overflow-y-property",e.style.overflowY),e.style.overflow="hidden",e.setAttribute("data-scroll-lock-locked","true")}},X=function(e){o(e)&&"true"===e.getAttribute("data-scroll-lock-locked")&&(e.style.overflow=e.getAttribute("data-scroll-lock-saved-inline-overflow-property"),e.style.overflowY=e.getAttribute("data-scroll-lock-saved-inline-overflow-y-property"),e.removeAttribute("data-scroll-lock-saved-overflow-property"),e.removeAttribute("data-scroll-lock-saved-inline-overflow-property"),e.removeAttribute("data-scroll-lock-saved-inline-overflow-y-property"),e.removeAttribute("data-scroll-lock-locked"))},$=function(){S.fillGapSelectors.map((function(e){Q(e)}))},D=function(){S.fillGapSelectors.map((function(e){V(e)}))},Q=function(e){var t=document.querySelectorAll(e),r=-1!==S.lockableSelectors.indexOf(e);l(t,(function(e){z(e,r)}))},z=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(o(e)){var r;if(""===e.getAttribute("data-scroll-lock-lockable")||t)r=x(e,!0);else{var n=u(e,a(S.lockableSelectors));r=x(n,!0)}"true"===e.getAttribute("data-scroll-lock-filled-gap")&&J(e);var l=window.getComputedStyle(e);if(e.setAttribute("data-scroll-lock-filled-gap","true"),e.setAttribute("data-scroll-lock-current-fill-gap-method",S.fillGapMethod),"margin"===S.fillGapMethod){var i=parseFloat(l.marginRight);e.style.marginRight="".concat(i+r,"px")}else if("width"===S.fillGapMethod)e.style.width="calc(100% - ".concat(r,"px)");else if("max-width"===S.fillGapMethod)e.style.maxWidth="calc(100% - ".concat(r,"px)");else if("padding"===S.fillGapMethod){var c=parseFloat(l.paddingRight);e.style.paddingRight="".concat(c+r,"px")}}},V=function(e){var t=document.querySelectorAll(e);l(t,(function(e){J(e)}))},J=function(e){if(o(e)&&"true"===e.getAttribute("data-scroll-lock-filled-gap")){var t=e.getAttribute("data-scroll-lock-current-fill-gap-method");e.removeAttribute("data-scroll-lock-filled-gap"),e.removeAttribute("data-scroll-lock-current-fill-gap-method"),"margin"===t?e.style.marginRight="":"width"===t?e.style.width="":"max-width"===t?e.style.maxWidth="":"padding"===t&&(e.style.paddingRight="")}};"undefined"!=typeof window&&window.addEventListener("resize",(function(e){B()})),"undefined"!=typeof document&&(document.addEventListener("touchstart",(function(e){S.scroll||(S.startTouchY=e.touches[0].clientY,S.startTouchX=e.touches[0].clientX)})),document.addEventListener("touchmove",(function(e){if(!S.scroll){var t=S.startTouchY,r=S.startTouchX,n=e.touches[0].clientY,o=e.touches[0].clientX;if(e.touches.length<2){var l=a(S.scrollableSelectors),i={up:t<n,down:t>n,left:r<o,right:r>o},c={up:t+3<n,down:t-3>n,left:r+3<o,right:r-3>o};!function t(r){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(r){var o=u(r,l,!1);if(m(r))return!1;if(n||v(r)&&u(r,l)||s(r,l)){var a=!1;g(r)&&b(r)?(i.up&&f(r)||i.down&&p(r))&&(a=!0):f(r)&&p(r)?(i.left&&g(r)||i.right&&b(r))&&(a=!0):(c.up&&f(r)||c.down&&p(r)||c.left&&g(r)||c.right&&b(r))&&(a=!0),a&&(o?t(o,!0):e.cancelable&&e.preventDefault())}else t(o)}else e.cancelable&&e.preventDefault()}(e.target)}}}),{passive:!1}),document.addEventListener("touchend",(function(e){S.scroll||(S.startTouchY=0,S.startTouchX=0)})));var Z={hide:function(e){i('"hide" is deprecated! Use "disablePageScroll" instead. \n https://github.com/FL3NKEY/scroll-lock#disablepagescrollscrollabletarget'),w(e)},show:function(e){i('"show" is deprecated! Use "enablePageScroll" instead. \n https://github.com/FL3NKEY/scroll-lock#enablepagescrollscrollabletarget'),A(e)},toggle:function(e){i('"toggle" is deprecated! Do not use it.'),k()?w():A(e)},getState:function(){return i('"getState" is deprecated! Use "getScrollState" instead. \n https://github.com/FL3NKEY/scroll-lock#getscrollstate'),k()},getWidth:function(){return i('"getWidth" is deprecated! Use "getPageScrollBarWidth" instead. \n https://github.com/FL3NKEY/scroll-lock#getpagescrollbarwidth'),T()},getCurrentWidth:function(){return i('"getCurrentWidth" is deprecated! Use "getCurrentPageScrollBarWidth" instead. \n https://github.com/FL3NKEY/scroll-lock#getcurrentpagescrollbarwidth'),j()},setScrollableTargets:function(e){i('"setScrollableTargets" is deprecated! Use "addScrollableTarget" instead. \n https://github.com/FL3NKEY/scroll-lock#addscrollabletargetscrollabletarget'),O(e)},setFillGapSelectors:function(e){i('"setFillGapSelectors" is deprecated! Use "addFillGapSelector" instead. \n https://github.com/FL3NKEY/scroll-lock#addfillgapselectorfillgapselector'),N(e)},setFillGapTargets:function(e){i('"setFillGapTargets" is deprecated! Use "addFillGapTarget" instead. \n https://github.com/FL3NKEY/scroll-lock#addfillgaptargetfillgaptarget'),M(e)},clearQueue:function(){i('"clearQueue" is deprecated! Use "clearQueueScrollLocks" instead. \n https://github.com/FL3NKEY/scroll-lock#clearqueuescrolllocks'),L()}},ee=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){h(e,t,r[t])}))}return e}({disablePageScroll:w,enablePageScroll:A,getScrollState:k,clearQueueScrollLocks:L,getTargetScrollBarWidth:x,getCurrentTargetScrollBarWidth:E,getPageScrollBarWidth:T,getCurrentPageScrollBarWidth:j,addScrollableSelector:W,removeScrollableSelector:F,addScrollableTarget:O,removeScrollableTarget:G,addLockableSelector:Y,addLockableTarget:P,addFillGapSelector:N,removeFillGapSelector:U,addFillGapTarget:M,removeFillGapTarget:C,setFillGapMethod:q,refillGaps:B,_state:S},Z);t.default=ee}]).default},e.exports=t()}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var l=t[n]={exports:{}};return e[n].call(l.exports,l,l.exports,r),l.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},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.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var n={};return(()=>{"use strict";r.d(n,{default:()=>g});var e=r(3096),t=r.n(e),o=r(9581),l=r(2498),i=r(1792),a=r(9552),c=r(7359);function u(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}(e)||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.")}()}function s(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}var d=function(e){return window.onblur=function(){return e()},{teardown:function(){return window.onblur=null}}},f=function(e){var t=(0,o.A)("meganav"),r=function(r){t.contains(r.target)||e()};return document.addEventListener("click",r),{teardown:function(){return document.removeEventListener("click",r)}}},p=function(e){if("transparentToWhite"!==e)return{teardown:function(){}};var r=(0,o.A)("meganav"),n=(0,o.n)("meganav-link"),l=(0,o.A)("meganav-control-mobile-dropdown-menu"),i=(0,o.A)("meganav-control-mobile-dropdown-close"),a=(0,o.n)("meganav-control"),c=(0,o.A)("meganav-sign-up-btn"),s=[].concat(u(Array.from(a)),u(Array.from(n)),[(0,o.A)("meganav-logo")]),d=function(e){var t,r,n,o,a=["ui-icon-white","ui-icon-cool-black"],c=[].concat(a).reverse();e?(null==l||(t=l.classList).replace.apply(t,a),null==i||(r=i.classList).replace.apply(r,a)):(null==l||(n=l.classList).replace.apply(n,u(c)),null==i||(o=i.classList).replace.apply(o,u(c)))},f=function(e){e?(null==c||c.classList.replace("bg-white","bg-cool-black"),null==c||c.classList.replace("text-cool-black","text-white")):(null==c||c.classList.replace("bg-cool-black","bg-white"),null==c||c.classList.replace("text-white","text-cool-black"))},p=t()((function(){window.scrollY>5?(r.classList.replace("bg-transparent","bg-white"),f(!0),d(!0),s.forEach((function(e){return e.classList.replace("text-white","text-cool-black")}))):(r.classList.replace("bg-white","bg-transparent"),f(!1),d(!1),s.forEach((function(e){return e.classList.replace("text-cool-black","text-white")})))}),150);return document.addEventListener("scroll",p),{teardown:function(){return document.removeEventListener("scroll",p)}}};function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{themeName:null},t=e.themeName,r=(0,l.default)(),n=(0,a.default)(),o=(0,c.default)(),s=(0,i.default)({clearPanels:function(){return[].concat(u(n),u(o)).forEach((function(e){return e.clear()}))}}),g=function(){return[s].concat(u(n),u(o),u(r)).forEach((function(e){return e.clear()}))},b=[p(t),f(g),d(g),s].concat(u(r),u(n),u(o)).map((function(e){return e.teardown}));return function(){return b.forEach((function(e){return e()}))}}})(),n.default})()}));
@@ -0,0 +1,37 @@
1
+ {
2
+ "themes": {
3
+ "white": {
4
+ "backgroundColor": "bg-white",
5
+ "textColor": "text-cool-black",
6
+ "buttonBackgroundColor": "",
7
+ "buttonTextColor": "",
8
+ "mobileMenuColor": "text-cool-black",
9
+ "logoTextColor": "text-cool-black",
10
+ "barShadow": "shadow-subtle"
11
+ },
12
+ "black": {
13
+ "backgroundColor": "bg-cool-black",
14
+ "textColor": "text-white",
15
+ "buttonBackgroundColor": "bg-white",
16
+ "buttonTextColor": "text-cool-black",
17
+ "mobileMenuColor": "text-white",
18
+ "logoTextColor": "text-white",
19
+ "barShadow": ""
20
+ },
21
+ "transparentToWhite": {
22
+ "backgroundColor": "bg-transparent",
23
+ "textColor": "text-white",
24
+ "buttonBackgroundColor": "bg-white",
25
+ "buttonTextColor": "text-cool-black",
26
+ "mobileMenuColor": "text-white",
27
+ "logoTextColor": "text-white",
28
+ "barShadow": ""
29
+ }
30
+ },
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" }
36
+ ]
37
+ }
@@ -0,0 +1,26 @@
1
+ <%= tag.nav(class: ["ui-meganav-wrapper", theme(:background_color), theme(:bar_shadow)], data: { id: "meganav" }, aria: { label: "Main" }) do %>
2
+ <%= notice %>
3
+
4
+ <div class="ui-meganav ui-grid-px">
5
+ <%= render(AblyUi::Core::Logo.new(theme_name: @theme_name, data_id: "meganav-logo", href: url_base)) %>
6
+ <%= render(AblyUi::Core::MeganavItemsDesktop.new(theme_name: @theme_name, url_base: url_base)) %>
7
+
8
+ <% if @session_data[:signedIn] %>
9
+ <%= render(AblyUi::Core::MeganavItemsSignedIn.new(session_data: @session_data, theme_name: @theme_name, url_base: url_base)) %>
10
+ <% else %>
11
+ <ul class="hidden md:flex items-center">
12
+ <li>
13
+ <%= link_to "Contact us", abs_url("/contact"), data: { id: "meganav-link" }, class: ["ui-meganav-link", theme(:text_color)] %>
14
+ </li>
15
+ <li>
16
+ <%= link_to "Login", abs_url(login_link), data: { id: "meganav-link" }, class: ["ui-meganav-link", theme(:text_color)] %>
17
+ </li>
18
+ <li class="ml-16">
19
+ <%= link_to "Sign up free", abs_url("/sign-up"), data: { id: "meganav-sign-up-btn" }, class: ["ui-btn", "p-btn-small", theme(:button_background_color), theme(:button_text_color)] %>
20
+ </li>
21
+ </ul>
22
+ <% end %>
23
+
24
+ <%= render(AblyUi::Core::MeganavItemsMobile.new(session_data: @session_data, theme_name: @theme_name, login_link: login_link, url_base: url_base)) %>
25
+ </div>
26
+ <% end %>
@@ -0,0 +1,53 @@
1
+ require 'json'
2
+ require_relative '../notice/notice.rb'
3
+
4
+ module AblyUi
5
+ module Core
6
+ class Meganav < ViewComponent::Base
7
+ include MeganavConfig
8
+ include Util
9
+ attr_reader :options, :login_link, :url_base
10
+
11
+ renders_one :notice, AblyUi::Core::Notice
12
+
13
+ def initialize(
14
+ session_data: {},
15
+ theme_name: :white,
16
+ login_link: '/login',
17
+ url_base: AblyUi::Core::Util::DEFAULT_URL_BASE
18
+ )
19
+ @session_data = session_data
20
+ @theme_name = theme_name
21
+ @options = options
22
+ @login_link = login_link
23
+ @url_base = url_base
24
+ theme_setup(theme_name)
25
+ end
26
+
27
+ def panels
28
+ [
29
+ {
30
+ label: 'Platform',
31
+ id: 'platform-panel',
32
+ class: 'AblyUi::Core::MeganavContentPlatform'
33
+ },
34
+ {
35
+ label: 'Use Cases',
36
+ id: 'use-cases-panel',
37
+ class: 'AblyUi::Core::MeganavContentUseCases'
38
+ },
39
+ {
40
+ label: 'Why Ably',
41
+ id: 'why-ably-panel',
42
+ class: 'AblyUi::Core::MeganavContentWhyAbly'
43
+ },
44
+ {
45
+ label: 'Developers',
46
+ id: 'developers-panel',
47
+ class: 'AblyUi::Core::MeganavContentDevelopers'
48
+ }
49
+ ]
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1 @@
1
+ !function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.AblyUi=r():(t.AblyUi=t.AblyUi||{},t.AblyUi.Core=t.AblyUi.Core||{},t.AblyUi.Core.MeganavBlogPostsList=r())}(this,(function(){return(()=>{var t={7757:(t,r,e)=>{e(5666)},5666:t=>{var r=function(t){"use strict";var r,e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{u({},"")}catch(t){u=function(t,r,e){return t[r]=e}}function l(t,r,e,n){var o=r&&r.prototype instanceof v?r:v,i=Object.create(o.prototype),a=new S(n||[]);return i._invoke=function(t,r,e){var n=s;return function(o,i){if(n===p)throw new Error("Generator is already running");if(n===y){if("throw"===o)throw i;return C()}for(e.method=o,e.arg=i;;){var a=e.delegate;if(a){var c=E(a,e);if(c){if(c===d)continue;return c}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if(n===s)throw n=y,e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);n=p;var u=f(t,r,e);if("normal"===u.type){if(n=e.done?y:h,u.arg===d)continue;return{value:u.arg,done:e.done}}"throw"===u.type&&(n=y,e.method="throw",e.arg=u.arg)}}}(t,e,a),i}function f(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var s="suspendedStart",h="suspendedYield",p="executing",y="completed",d={};function v(){}function g(){}function m(){}var b={};b[i]=function(){return this};var w=Object.getPrototypeOf,x=w&&w(w(_([])));x&&x!==e&&n.call(x,i)&&(b=x);var O=m.prototype=v.prototype=Object.create(b);function L(t){["next","throw","return"].forEach((function(r){u(t,r,(function(t){return this._invoke(r,t)}))}))}function j(t,r){function e(o,i,a,c){var u=f(t[o],t,i);if("throw"!==u.type){var l=u.arg,s=l.value;return s&&"object"==typeof s&&n.call(s,"__await")?r.resolve(s.__await).then((function(t){e("next",t,a,c)}),(function(t){e("throw",t,a,c)})):r.resolve(s).then((function(t){l.value=t,a(l)}),(function(t){return e("throw",t,a,c)}))}c(u.arg)}var o;this._invoke=function(t,n){function i(){return new r((function(r,o){e(t,n,r,o)}))}return o=o?o.then(i,i):i()}}function E(t,e){var n=t.iterator[e.method];if(n===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=r,E(t,e),"throw"===e.method))return d;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var o=f(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,d;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=r),e.delegate=null,d):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function A(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function P(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(A,this),this.reset(!0)}function _(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function e(){for(;++o<t.length;)if(n.call(t,o))return e.value=t[o],e.done=!1,e;return e.value=r,e.done=!0,e};return a.next=a}}return{next:C}}function C(){return{value:r,done:!0}}return g.prototype=O.constructor=m,m.constructor=g,g.displayName=u(m,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===g||"GeneratorFunction"===(r.displayName||r.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,m):(t.__proto__=m,u(t,c,"GeneratorFunction")),t.prototype=Object.create(O),t},t.awrap=function(t){return{__await:t}},L(j.prototype),j.prototype[a]=function(){return this},t.AsyncIterator=j,t.async=function(r,e,n,o,i){void 0===i&&(i=Promise);var a=new j(l(r,e,n,o),i);return t.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},L(O),u(O,c,"Generator"),O[i]=function(){return this},O.toString=function(){return"[object Generator]"},t.keys=function(t){var r=[];for(var e in t)r.push(e);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=_,S.prototype={constructor:S,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method="next",this.arg=r,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=r)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function o(n,o){return c.type="throw",c.arg=t,e.next=n,o&&(e.method="next",e.arg=r),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,d):this.complete(a)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),d},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),P(e),d}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;P(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:_(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=r),d}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}}},r={};function e(n){var o=r[n];if(void 0!==o)return o.exports;var i=r[n]={exports:{}};return t[n](i,i.exports,e),i.exports}e.d=(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},e.o=(t,r)=>Object.prototype.hasOwnProperty.call(t,r);var n={};return(()=>{"use strict";e.d(n,{default:()=>l});var t=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;return r.querySelectorAll("[data-id=".concat(t,"]"))};function r(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function o(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?r(Object(n),!0).forEach((function(r){i(t,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(n,r))}))}return t}function i(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}e(7757);var a={recent:null},c=(i({},"blogPosts",(function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,r=arguments.length>1?arguments[1]:void 0;switch(r.type){case"blog/loaded":return o(o({},t),{},{recent:r.payload});default:return t}})),function(t){var r;return null===(r=t.getState().blogPosts)||void 0===r?void 0:r.recent});function u(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=new Array(r);e<r;e++)n[e]=t[e];return n}const l=function(){var r,e,n,o;r=c,e=function(r){if(Array.isArray(r)&&r.length>0){var e=t("meganav-why-ably-panel-blog-section"),n=t("meganav-why-ably-panel-recent-blog-posts");Array.from(n).forEach((function(t){var e=document.createDocumentFragment();r.forEach((function(t){return e.appendChild((i=(r=t).link,a=r.title,c=r.pubDate,n=["li","a","p","p"].map((function(t){return document.createElement(t)})),o=4,l=function(t){if(Array.isArray(t))return t}(n)||function(t,r){var e=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null!=e){var n,o,i=[],a=!0,c=!1;try{for(e=e.call(t);!(a=(n=e.next()).done)&&(i.push(n.value),!r||i.length!==r);a=!0);}catch(t){c=!0,o=t}finally{try{a||null==e.return||e.return()}finally{if(c)throw o}}return i}}(n,o)||function(t,r){if(t){if("string"==typeof t)return u(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?u(t,r):void 0}}(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),f=l[0],s=l[1],h=l[2],p=l[3],s.href=i,s.classList.add("ui-meganav-media","group"),h.textContent=a,h.classList.add("ui-meganav-media-heading"),p.textContent=c,p.classList.add("ui-meganav-media-copy"),s.appendChild(h),s.appendChild(p),f.appendChild(s),f));var r,n,o,i,a,c,l,f,s,h,p})),t.appendChild(e)})),Array.from(e).forEach((function(t){return t.classList.remove("hidden")}))}},n=function(){if(!window.AblyUi.RemoteDataStore)throw new Error("Remote store was called before one was created");return window.AblyUi.RemoteDataStore}(),o=r(n),n.subscribe((function(){var t=r(n);t!==o&&(o=t,e(t))}))}})(),n.default})()}));
@@ -0,0 +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 %>
5
+ </div>
@@ -0,0 +1,13 @@
1
+ module AblyUi
2
+ module Core
3
+ class MeganavBlogPostsList < ViewComponent::Base
4
+ include AblyUi::Core::Util
5
+
6
+ attr_reader :url_base
7
+
8
+ def initialize(url_base:)
9
+ @url_base = url_base
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1 @@
1
+ !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.AblyUi=o():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.MeganavContentDevelopers=o())}(this,(function(){return{}.default}));
@@ -0,0 +1,77 @@
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 %>
9
+ </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
+
14
+ <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/documentation"))) 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
+ </ul>
39
+ </div>
40
+
41
+ <div>
42
+ <h3 class="ui-meganav-overline uppercase" id="meganav-developers-panel-quick-links">Quick links</h3>
43
+ <ul aria-labelledby="meganav-developers-panel-quick-links">
44
+ <li>
45
+ <%= link_to abs_url("/download"), class: "group ui-meganav-media py-12" do %>
46
+ <p class="ui-meganav-media-heading">Download an SDK</p>
47
+ <% end %>
48
+ </li>
49
+
50
+ <li>
51
+ <a href="https://changelog.ably.com/" class="group ui-meganav-media py-12">
52
+ <p class="ui-meganav-media-heading">Platform changelog</p>
53
+ </a>
54
+ </li>
55
+
56
+ <li>
57
+ <%= link_to abs_url("/support"), class: "group ui-meganav-media py-12" do %>
58
+ <p class="ui-meganav-media-heading">Support & FAQs</p>
59
+ <% end %>
60
+ </li>
61
+
62
+ <li>
63
+ <a href="http://status.ably.com/" class="group ui-meganav-media py-12">
64
+ <p class="ui-meganav-media-heading">
65
+ Status<iframe
66
+ src="https://status.ably.com/embed/icon"
67
+ allowtransparency="true"
68
+ frameborder="0"
69
+ scrolling="no"
70
+ class="w-24 h-24 ml-4 border-none pointer-events-none align-middle"
71
+ ></iframe>
72
+ </p>
73
+ </a>
74
+ </li>
75
+ </ul>
76
+ </div>
77
+ </section>
@@ -0,0 +1,13 @@
1
+ module AblyUi
2
+ module Core
3
+ class MeganavContentDevelopers < ViewComponent::Base
4
+ include AblyUi::Core::Util
5
+
6
+ attr_reader :url_base
7
+
8
+ def initialize(url_base:)
9
+ @url_base = url_base
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1 @@
1
+ !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.AblyUi=o():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.MeganavContentPlatform=o())}(this,(function(){return{}.default}));
@@ -0,0 +1,91 @@
1
+ <section class="ui-meganav-content ui-grid-gap sm:grid-cols-2 md:grid-cols-3">
2
+ <div class="sm:col-span-full md:col-span-1">
3
+ <div class="flex mb-20">
4
+ <%= image_tag(ably_stack_path, alt: "Ably homepage") %>
5
+ <h3 class="ui-meganav-overline ml-24">The Ably Platform</h3>
6
+ </div>
7
+
8
+ <p class="text-p2 font-medium text-cool-black mb-8">
9
+ Easily power any realtime experience in your application. No complex infrastructure to manage or provision. Just a simple API that handles everything
10
+ realtime, and lets you focus on your code.
11
+ </p>
12
+
13
+ <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/platform"))) do %>Explore how it works<% end %>
14
+ </div>
15
+
16
+ <div>
17
+ <h3 class="ui-meganav-overline" id="meganav-platform-panel-list-our-features">Our features</h3>
18
+ <ul aria-labelledby="meganav-platform-panel-list-our-features">
19
+ <li>
20
+ <%= link_to abs_url("/pub-sub-messaging"), class: "ui-meganav-media group" do %>
21
+ <p class="ui-meganav-media-heading">Publish/subscribe messaging</p>
22
+ <p class="ui-meganav-media-copy">Feature-rich pub/sub messaging to power any realtime requirement.</p>
23
+ <% end %>
24
+ </li>
25
+ <li>
26
+ <%= link_to abs_url("/push-notifications"), class: "ui-meganav-media group" do %>
27
+ <p class="ui-meganav-media-heading">Push notifications</p>
28
+ <p class="ui-meganav-media-copy">Deliver native notifications at scale with our unified API.</p>
29
+ <% end %>
30
+ </li>
31
+ <li>
32
+ <%= link_to abs_url("/integrations"), class: "ui-meganav-media group" do %>
33
+ <p class="ui-meganav-media-heading">Third-party integrations</p>
34
+ <p class="ui-meganav-media-copy">Integrate and extend Ably with cloud services like AWS Kinesis.</p>
35
+ <% end %>
36
+ </li>
37
+ <li>
38
+ <%= link_to abs_url("/protocols"), class: "ui-meganav-media group" do %>
39
+ <p class="ui-meganav-media-heading">Multi-protocol messaging</p>
40
+ <p class="ui-meganav-media-copy">We support pub/sub over WebSockets, MQTT, SSE, and more.</p>
41
+ <% end %>
42
+ </li>
43
+ <li>
44
+ <%= link_to abs_url("/hub"), class: "ui-meganav-media group" do %>
45
+ <p class="ui-meganav-media-heading">Streaming data sources</p>
46
+ <p class="ui-meganav-media-copy">Augment your apps with realtime updates like weather or transit.</p>
47
+ <% end %>
48
+ </li>
49
+ </ul>
50
+
51
+ <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/platform"))) do %>Explore all platform features<% end %>
52
+ </div>
53
+
54
+ <div>
55
+ <h3 class="ui-meganav-overline" id="meganav-platform-panel-list-our-technology">Our technology</h3>
56
+ <ul class="mb-8" aria-labelledby="meganav-platform-panel-list-our-technology">
57
+ <li>
58
+ <%= link_to abs_url("/four-pillars-of-dependability#performance"), class: "ui-meganav-media group" do %>
59
+ <p class="ui-meganav-media-heading">Predictable performance</p>
60
+ <p class="ui-meganav-media-copy">We provide predictability so you can be confident your realtime application will always perform as expected.</p>
61
+ <% end %>
62
+ </li>
63
+ <li>
64
+ <%= link_to abs_url("/four-pillars-of-dependability#integrity"), class: "ui-meganav-media group" do %>
65
+ <p class="ui-meganav-media-heading">Guaranteed ordering & delivery</p>
66
+ <p class="ui-meganav-media-copy">We guarantee in-order data delivery, even after disconnections.</p>
67
+ <% end %>
68
+ </li>
69
+ <li>
70
+ <%= link_to abs_url("/four-pillars-of-dependability#reliability"), class: "ui-meganav-media group" do %>
71
+ <p class="ui-meganav-media-heading">Fault tolerant infrastructure</p>
72
+ <p class="ui-meganav-media-copy">Redundant at regional and global levels with 99.999% uptime SLAs.</p>
73
+ <% end %>
74
+ </li>
75
+ <li>
76
+ <%= link_to abs_url("/four-pillars-of-dependability#availability"), class: "ui-meganav-media group" do %>
77
+ <p class="ui-meganav-media-heading">High scalability & availability</p>
78
+ <p class="ui-meganav-media-copy">Elastic, battle-tested global infrastructure for massive scale.</p>
79
+ <% end %>
80
+ </li>
81
+ <li>
82
+ <%= link_to abs_url("/network"), class: "ui-meganav-media group" do %>
83
+ <p class="ui-meganav-media-heading">Global edge network</p>
84
+ <p class="ui-meganav-media-copy">An edge network of 15 core routing datacenters and 200+ PoPs.</p>
85
+ <% end %>
86
+ </li>
87
+ </ul>
88
+
89
+ <%= render(AblyUi::Core::FeaturedLink.new(url: abs_url("/four-pillars-of-dependability"))) do %>Explore our technology<% end %>
90
+ </div>
91
+ </section>
@@ -0,0 +1,14 @@
1
+ module AblyUi
2
+ module Core
3
+ class MeganavContentPlatform < ViewComponent::Base
4
+ include SharedAssets
5
+ include Util
6
+
7
+ attr_reader :url_base
8
+
9
+ def initialize(url_base:)
10
+ @url_base = url_base
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1 @@
1
+ !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.AblyUi=o():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.MeganavContentUseCases=o())}(this,(function(){return{}.default}));
@@ -0,0 +1,72 @@
1
+ <section class="ui-meganav-content ui-grid-gap md:grid-cols-2 gap-y-0 md:gap-y-32">
2
+ <div>
3
+ <h3 class="ui-meganav-overline" id="meganav-use-cases-panel-industry-use-cases">By industry use case</h3>
4
+ <ul aria-labelledby="meganav-use-cases-panel-industry-use-cases">
5
+ <li>
6
+ <%= link_to abs_url("/solutions/edtech"), class: "ui-meganav-media group" do %>
7
+ <p class="ui-meganav-media-heading">EdTech</p>
8
+ <p class="ui-meganav-media-copy">Deliver interactive learning experiences like multi-user classrooms with chat.</p>
9
+ <% end %>
10
+ </li>
11
+ <li>
12
+ <%= link_to abs_url("/solutions/automotive-logistics-and-mobility"), class: "ui-meganav-media group" do %>
13
+ <p class="ui-meganav-media-heading">Automotive, Logistics, & Mobility</p>
14
+ <p class="ui-meganav-media-copy">Power asset tracking, live transit updates, race-critical diagnostics, and more.</p>
15
+ <% end %>
16
+ </li>
17
+ <li>
18
+ <%= link_to abs_url("/solutions/b2b-platforms"), class: "ui-meganav-media group" do %>
19
+ <p class="ui-meganav-media-heading">B2B Platforms</p>
20
+ <p class="ui-meganav-media-copy">Empower customers with realtime technology that gives them a competitive edge.</p>
21
+ <% end %>
22
+ </li>
23
+ <li>
24
+ <%= link_to abs_url("/solutions/healthcare"), class: "ui-meganav-media group" do %>
25
+ <p class="ui-meganav-media-heading">Healthcare</p>
26
+ <p class="ui-meganav-media-copy">Provide HIPAA-compliant realtime apps healthcare professionals can depend on.</p>
27
+ <% end %>
28
+ </li>
29
+ <li>
30
+ <%= link_to abs_url("/solutions/virtual-events"), class: "ui-meganav-media group" do %>
31
+ <p class="ui-meganav-media-heading">Virtual Events</p>
32
+ <p class="ui-meganav-media-copy">Power engaging virtual events with interactive realtime features.</p>
33
+ <% end %>
34
+ </li>
35
+ </ul>
36
+ </div>
37
+
38
+ <div>
39
+ <ul class="md:mt-40" aria-labelledby="meganav-use-cases-panel-industry-use-cases">
40
+ <li>
41
+ <%= link_to abs_url("/solutions/iot-and-connected-devices"), class: "ui-meganav-media group" do %>
42
+ <p class="ui-meganav-media-heading">IoT & Connected Devices</p>
43
+ <p class="ui-meganav-media-copy">Monitor and control global IoT deployments of any kind in realtime.</p>
44
+ <% end %>
45
+ </li>
46
+ <li>
47
+ <%= link_to abs_url("/solutions/sports-and-media"), class: "ui-meganav-media group" do %>
48
+ <p class="ui-meganav-media-heading">Sports & Media</p>
49
+ <p class="ui-meganav-media-copy">Deliver global realtime experiences to keep fans informed, engaged, entertained.</p>
50
+ <% end %>
51
+ </li>
52
+ <li>
53
+ <%= link_to abs_url("/solutions/gaming"), class: "ui-meganav-media group" do %>
54
+ <p class="ui-meganav-media-heading">Gaming</p>
55
+ <p class="ui-meganav-media-copy">Power interactive gaming experiences that are wicked fast and utterly reliable.</p>
56
+ <% end %>
57
+ </li>
58
+ <li>
59
+ <%= link_to abs_url("/solutions/ecommerce-and-retail"), class: "ui-meganav-media group" do %>
60
+ <p class="ui-meganav-media-heading">eCommerce & Retail</p>
61
+ <p class="ui-meganav-media-copy">Enable realtime pricing, inventory, and transactions to enrich user experiences.</p>
62
+ <% end %>
63
+ </li>
64
+ <li>
65
+ <%= link_to abs_url("/solutions/asset-tracking"), class: "ui-meganav-media group" do %>
66
+ <p class="ui-meganav-media-heading">Asset Tracking</p>
67
+ <p class="ui-meganav-media-copy">Track assets in realtime with a solution optimized for last mile logistics, food delivery applications, and urban mobility services.</p>
68
+ <% end %>
69
+ </li>
70
+ </ul>
71
+ </div>
72
+ </section>
@@ -0,0 +1,13 @@
1
+ module AblyUi
2
+ module Core
3
+ class MeganavContentUseCases < ViewComponent::Base
4
+ include Util
5
+
6
+ attr_reader :url_base
7
+
8
+ def initialize(url_base:)
9
+ @url_base = url_base
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1 @@
1
+ !function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.AblyUi=o():(e.AblyUi=e.AblyUi||{},e.AblyUi.Core=e.AblyUi.Core||{},e.AblyUi.Core.MeganavContentWhyAbly=o())}(this,(function(){return{}.default}));
@@ -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/datasheets"), 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>
@@ -0,0 +1,13 @@
1
+ module AblyUi
2
+ module Core
3
+ class MeganavContentWhyAbly < ViewComponent::Base
4
+ include Util
5
+
6
+ attr_reader :url_base
7
+
8
+ def initialize(url_base:)
9
+ @url_base = url_base
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +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,{n:()=>n});var n=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,n,o){if(window.matchMedia("(hover: hover) and (pointer: fine) and (min-width: ".concat(i,")")).matches&&!r.some((function(e){return e===document.activeElement}))){var a,u=["invisible","visible"];(a=n.classList).replace.apply(a,function(e){if(Array.isArray(e))return t(e)}(c=o?u:u.reverse())||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||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}}(c)||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 c};return r.map((function(e){var t=e.parentNode,i=document.querySelector("#".concat(e.getAttribute("aria-controls"))),a=function(e,t){return function(){r.forEach((function(t){return t!==e&&t.setAttribute("aria-expanded",!1)})),n.forEach((function(e){return e!==t&&e.classList.replace("visible","invisible")})),e.getAttribute("aria-expanded")?(e.setAttribute("aria-expanded",!0),t.classList.replace("invisible","visible")):(e.setAttribute("aria-expanded",!1),t.classList.replace("visible","invisible"))}}(e,i),u=function(e,t){return function(){return o(e,t,!0)}}(e,i),c=function(e,t){return function(){return o(e,t,!1)}}(e,i);return t.addEventListener("mouseenter",u),t.addEventListener("mouseleave",c),e.addEventListener("click",a),[{teardown:function(){t.removeEventListener("mouseenter",u),t.removeEventListener("mouseleave",c),e.removeEventListener("click",a)},clear:function(){e.setAttribute("aria-expanded",!1),i.classList.replace("visible","invisible")}}]})).flat()}})(),n.default})()}));