@ably/ui 8.7.0-dev.7021bee → 8.7.0-dev.7072b07

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 (160) hide show
  1. package/README.md +15 -4
  2. package/core/.DS_Store +0 -0
  3. package/core/Code/component.css +2 -0
  4. package/core/Code/component.js +739 -1
  5. package/core/Code.jsx +557 -410
  6. package/core/CompanyAutocomplete/component.css +2 -0
  7. package/core/CompanyAutocomplete/component.js +1161 -1
  8. package/core/ConnectStateWrapper/component.js +22 -1
  9. package/core/ConnectStateWrapper.jsx +29 -15
  10. package/core/ContactFooter/component.css +2 -0
  11. package/core/ContactFooter/component.js +211 -1
  12. package/core/ContactFooter.jsx +221 -144
  13. package/core/CookieMessage/component.css +2 -0
  14. package/core/CookieMessage/component.js +82 -1
  15. package/core/CookieMessage.jsx +62 -45
  16. package/core/CustomerLogos/component.js +22 -1
  17. package/core/CustomerLogos.jsx +16 -7
  18. package/core/DropdownMenu/component.js +22 -1
  19. package/core/DropdownMenu.jsx +26 -13
  20. package/core/FeatureFooter/component.css +2 -0
  21. package/core/FeatureFooter/component.js +211 -1
  22. package/core/FeaturedLink/component.css +2 -0
  23. package/core/FeaturedLink/component.js +82 -1
  24. package/core/FeaturedLink.jsx +25 -12
  25. package/core/Flash/component.css +2 -0
  26. package/core/Flash/component.js +82 -1
  27. package/core/Flash.jsx +132 -104
  28. package/core/Footer/component.css +23 -1
  29. package/core/Footer/component.js +82 -1
  30. package/core/Footer.jsx +307 -203
  31. package/core/Icon/component.js +22 -1
  32. package/core/Icon.jsx +16 -7
  33. package/core/Loader/component.js +22 -1
  34. package/core/Loader.jsx +16 -7
  35. package/core/Logo/component.js +22 -1
  36. package/core/Logo.jsx +16 -7
  37. package/core/Meganav/component.css +3 -3
  38. package/core/Meganav/component.js +992 -1
  39. package/core/Meganav/component.json +2 -2
  40. package/core/Meganav.jsx +2702 -2361
  41. package/core/MeganavBlogPostsList/component.js +1159 -1
  42. package/core/MeganavBlogPostsList.jsx +34 -17
  43. package/core/MeganavContentCompany/component.js +22 -1
  44. package/core/MeganavContentCompany.jsx +293 -216
  45. package/core/MeganavContentDevelopers/component.js +22 -1
  46. package/core/MeganavContentDevelopers.jsx +68 -30
  47. package/core/MeganavContentPlatform/component.js +1 -1
  48. package/core/MeganavContentPlatform.jsx +26 -50
  49. package/core/MeganavContentProducts/component.js +22 -0
  50. package/core/MeganavContentProducts.jsx +350 -0
  51. package/core/MeganavContentUseCases/component.js +22 -1
  52. package/core/MeganavContentUseCases.jsx +77 -56
  53. package/core/MeganavControl/component.js +241 -1
  54. package/core/MeganavControl.jsx +25 -12
  55. package/core/MeganavControlMobileDropdown/component.js +180 -1
  56. package/core/MeganavControlMobileDropdown.jsx +26 -13
  57. package/core/MeganavControlMobilePanelClose/component.js +142 -1
  58. package/core/MeganavControlMobilePanelClose.jsx +25 -12
  59. package/core/MeganavControlMobilePanelOpen/component.js +170 -1
  60. package/core/MeganavControlMobilePanelOpen.jsx +25 -12
  61. package/core/MeganavItemsDesktop/component.js +22 -1
  62. package/core/MeganavItemsDesktop.jsx +42 -22
  63. package/core/MeganavItemsMobile/component.js +22 -1
  64. package/core/MeganavItemsMobile.jsx +104 -60
  65. package/core/MeganavItemsSignedIn/component.js +22 -1
  66. package/core/MeganavItemsSignedIn.jsx +93 -52
  67. package/core/MeganavSearch/component.js +22 -1
  68. package/core/MeganavSearch.jsx +64 -35
  69. package/core/MeganavSearchAutocomplete/component.js +295 -1
  70. package/core/MeganavSearchAutocomplete.jsx +10 -4
  71. package/core/MeganavSearchPanel/component.js +22 -1
  72. package/core/MeganavSearchPanel.jsx +53 -28
  73. package/core/MeganavSearchSuggestions/component.js +258 -1
  74. package/core/MeganavSearchSuggestions.jsx +34 -17
  75. package/core/Notice/component.css +2 -0
  76. package/core/Notice/component.js +872 -1
  77. package/core/Notice.jsx +380 -310
  78. package/core/Showcase/component.css +2 -0
  79. package/core/Showcase/component.js +343 -1
  80. package/core/Showcase.jsx +4 -1
  81. package/core/SignOutLink/component.js +22 -1
  82. package/core/SignOutLink.jsx +16 -7
  83. package/core/Slider/component.css +2 -0
  84. package/core/Slider/component.js +255 -1
  85. package/core/Slider.jsx +208 -156
  86. package/core/Uptime/component.css +2 -0
  87. package/core/Uptime/component.js +82 -1
  88. package/core/Uptime.jsx +46 -23
  89. package/core/images/best-support-2023.svg +1 -0
  90. package/core/images/fastest-implementation-2023.svg +1 -0
  91. package/core/images/high-performer-2022.png +0 -0
  92. package/core/images/high-performer-2023.svg +1 -0
  93. package/core/images/highest-user-adoption-2022.png +0 -0
  94. package/core/images/highest-user-adoption-2023.svg +1 -0
  95. package/core/images/users-love-us-2022.png +0 -0
  96. package/core/scripts.js +1465 -1
  97. package/core/sprites.svg +99 -0
  98. package/core/styles.css +3 -7
  99. package/package.json +5 -3
  100. package/reset/scripts.js +1 -1
  101. package/reset/styles.css +1 -11
  102. package/src/.DS_Store +0 -0
  103. package/src/core/.DS_Store +0 -0
  104. package/src/core/Flash/component.jsx +0 -2
  105. package/src/core/Footer/component.css +21 -1
  106. package/src/core/Footer/component.html.erb +120 -63
  107. package/src/core/Footer/component.jsx +128 -61
  108. package/src/core/Meganav/component.css +1 -1
  109. package/src/core/Meganav/component.json +2 -2
  110. package/src/core/Meganav/component.jsx +2 -2
  111. package/src/core/Meganav/component.rb +6 -6
  112. package/src/core/MeganavContentCompany/component.html.erb +9 -0
  113. package/src/core/MeganavContentCompany/component.jsx +9 -0
  114. package/src/core/MeganavContentDevelopers/component.html.erb +30 -14
  115. package/src/core/MeganavContentDevelopers/component.jsx +32 -13
  116. package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.html.erb +15 -33
  117. package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.jsx +18 -39
  118. package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.rb +1 -1
  119. package/src/core/MeganavContentUseCases/component.html.erb +42 -38
  120. package/src/core/MeganavContentUseCases/component.jsx +41 -38
  121. package/src/core/MeganavItemsDesktop/component.jsx +1 -1
  122. package/src/core/MeganavItemsDesktop/component.rb +1 -1
  123. package/src/core/core.rb +12 -4
  124. package/src/core/icons/icon-display-asset-tracking-col.svg +18 -0
  125. package/src/core/icons/icon-display-chat-col.svg +4 -0
  126. package/src/core/icons/icon-display-data-broadcast-col.svg +26 -0
  127. package/src/core/icons/icon-display-data-synchronization-col.svg +14 -0
  128. package/src/core/icons/icon-display-events-col.svg +13 -0
  129. package/src/core/icons/icon-display-examples-col.svg +11 -0
  130. package/src/core/icons/icon-display-kafka-at-the-edge-col.svg +8 -0
  131. package/src/core/icons/icon-display-push-notifications-col.svg +6 -0
  132. package/src/core/icons/icon-gui-check-circled-fill-black.svg +4 -0
  133. package/src/core/icons/icon-social-x.svg +3 -0
  134. package/src/core/icons/icon-tech-apachekafka.svg +3 -0
  135. package/src/core/images/best-support-2023.svg +1 -0
  136. package/src/core/images/fastest-implementation-2023.svg +1 -0
  137. package/src/core/images/high-performer-2022.png +0 -0
  138. package/src/core/images/high-performer-2023.svg +1 -0
  139. package/src/core/images/highest-user-adoption-2022.png +0 -0
  140. package/src/core/images/highest-user-adoption-2023.svg +1 -0
  141. package/src/core/images/users-love-us-2022.png +0 -0
  142. package/src/core/styles/text.css +1 -1
  143. package/src/core/utils/syntax-highlighter-registry.js +2 -0
  144. package/src/core/utils/syntax-highlighter.js +5 -0
  145. package/tailwind.config.js +1 -0
  146. package/core/Meganav/component.js.LICENSE.txt +0 -7
  147. package/core/MeganavContentWhyAbly/component.js +0 -6
  148. package/core/MeganavContentWhyAbly.jsx +0 -6
  149. package/core/MeganavSearchAutocomplete/component.js.LICENSE.txt +0 -7
  150. package/core/Notice/component.js.LICENSE.txt +0 -9
  151. package/core/fonts/.DS_Store +0 -0
  152. package/core/images/.DS_Store +0 -0
  153. package/core/scripts.js.LICENSE.txt +0 -32
  154. package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/log/.keep +0 -0
  155. package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/tmp/.keep +0 -0
  156. package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/tmp/pids/.keep +0 -0
  157. package/src/core/fonts/.DS_Store +0 -0
  158. package/src/core/images/.DS_Store +0 -0
  159. package/src/reset/.DS_Store +0 -0
  160. /package/src/core/{MeganavContentPlatform → MeganavContentProducts}/component.js +0 -0
package/core/styles.css CHANGED
@@ -347,7 +347,7 @@
347
347
 
348
348
  .ui-text-h4 {
349
349
  @apply font-sans font-medium text-cool-black;
350
- @apply text-h4 uppercase;
350
+ @apply text-h4;
351
351
  @apply tracking-widen-0.1;
352
352
  }
353
353
 
@@ -545,12 +545,6 @@
545
545
  color: #76767c;
546
546
  }
547
547
 
548
- .ui-textarea:-ms-input-placeholder {
549
- /* CSS vars don't work in ::placeholder in Webkit :( */
550
- /* color: var(--text-dark-grey); */
551
- color: #76767c;
552
- }
553
-
554
548
  .ui-textarea::placeholder {
555
549
  /* CSS vars don't work in ::placeholder in Webkit :( */
556
550
  /* color: var(--text-dark-grey); */
@@ -588,3 +582,5 @@
588
582
  }
589
583
  }
590
584
 
585
+
586
+ /*# sourceMappingURL=data:application/json;charset=utf-8;base64,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Qzs7RUFFQTtJQUNFLHNCQUFzQjtJQUN0Qiw4REFBOEQ7SUFDOUQsMkVBQTJFO0VBQzdFOztFQUVBO0lBQ0Usd0JBQXdCO0VBQzFCOztFQUVBO0lBQ0Usa0JBQWtCO0lBQ2xCLHlDQUF5QztFQUMzQzs7RUFFQTtJQUNFLGtCQUFrQjtJQUNsQix5Q0FBeUM7RUFDM0M7O0VBRUE7SUFDRSxnQ0FBZ0M7RUFDbEM7O0VBRUE7SUFDRSxzQkFBc0I7SUFDdEIsdUJBQXVCO0VBQ3pCOztFQUVBO0lBQ0UsK0NBQStDO0VBQ2pEOztFQUVBO0lBQ0UsWUFBWTtFQUNkOztFQUVBO0lBQ0UsbURBQW1EO0lBQ25ELG9CQUFvQjtJQUNwQixpRkFBaUY7SUFDakYsaUVBQWlFO0lBQ2pFLHlGQUF5RjtFQUMzRjs7RUFFQTtJQUNFLHNEQUFzRDtJQUN0RCxrQ0FBa0M7SUFDbEMsY0FBYztFQUNoQjs7RUFKQTtJQUNFLHNEQUFzRDtJQUN0RCxrQ0FBa0M7SUFDbEMsY0FBYztFQUNoQjtBQUNGO0FDMURBO0VBQ0U7SUFDRSxtSUFBbUk7SUFDbkksaUVBQWlFO0lBQ2pFLHlGQUF5RjtJQUN6RixzQkFBc0I7RUFDeEI7O0VBRUEsNkJBQTZCO0VBQzdCO0lBQ0UsK0JBQStCO0VBQ2pDOztFQUVBO0lBQ0UsMEJBQTBCO0VBQzVCOztFQUVBO0lBQ0UsOEJBQThCO0VBQ2hDOztFQUVBO0lBQ0UsNEVBQTRFOztJQUU1RSxrQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLGdCQUFnQjtJQUNoQixjQUFjO0VBQ2hCO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL3N0eWxlcy9wcm9wZXJ0aWVzLmNzcyIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL3N0eWxlcy9idXR0b25zLmNzcyIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL3N0eWxlcy9sYXlvdXQuY3NzIiwid2VicGFjazovL0FibHlVaS5Db3JlLy4vc3JjL2NvcmUvc3R5bGVzL3RleHQuY3NzIiwid2VicGFjazovL0FibHlVaS5Db3JlLy4vc3JjL2NvcmUvc3R5bGVzL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly9BYmx5VWkuQ29yZS8uL3NyYy9jb3JlL3N0eWxlcy5jb21wb25lbnRzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAbGF5ZXIgYmFzZSB7XG4gIDpyb290IHtcbiAgICAtLWNvbG9yLWNvb2wtYmxhY2s6ICMwMzAyMGQ7XG4gICAgLS1jb2xvci1hY3RpdmUtb3JhbmdlOiAjZmY1NDE2O1xuICAgIC0tY29sb3ItcmVkLW9yYW5nZTogI2U0MDAwMDtcbiAgICAtLWNvbG9yLXdoaXRlOiAjZmZmZmZmO1xuICAgIC0tY29sb3ItZWxlY3RyaWMtY3lhbjogIzRhZjdmZjtcbiAgICAtLWNvbG9yLXppbmd5LWdyZWVuOiAjMDhmZjEzO1xuICAgIC0tY29sb3ItYnJpZ2h0LXJlZDogI2ZmMjczOTtcbiAgICAtLWNvbG9yLWphenp5LXBpbms6ICNmZjE3ZDI7XG4gICAgLS1jb2xvci1leHRyYS1saWdodC1ncmV5OiAjZmFmYWZiO1xuICAgIC0tY29sb3ItbGlnaHQtZ3JleTogI2Y1ZjVmNjtcbiAgICAtLWNvbG9yLW1pZC1ncmV5OiAjZDlkOWRhO1xuICAgIC0tY29sb3ItZGFyay1ncmV5OiAjNzY3NjdjO1xuICAgIC0tY29sb3ItY2hhcmNvYWwtZ3JleTogIzI5MjgzMTtcbiAgICAtLWNvbG9yLWd1aS1kZWZhdWx0OiAjMDA3M2U2O1xuICAgIC0tY29sb3ItZ3VpLWhvdmVyOiAjMDg2N2M0O1xuICAgIC0tY29sb3ItZ3VpLWZvY3VzOiAjMDA3M2U2O1xuICAgIC0tY29sb3ItZ3VpLWZvY3VzLW91dGxpbmU6ICM4MGI5ZjI7XG4gICAgLS1jb2xvci1ndWktYWN0aXZlOiAjMDc0MDk1O1xuICAgIC0tY29sb3ItZ3VpLXZpc2l0ZWQ6ICM0ODg3YzI7XG4gICAgLS1jb2xvci1ndWktdW5hdmFpbGFibGU6ICNhOGE4YTg7XG4gICAgLS1jb2xvci1ndWktZXJyb3I6ICNmYjBjMGM7XG4gICAgLS1jb2xvci1ndWktc3VjY2VzczogIzExY2IyNDtcblxuICAgIC8qIGNvZGUgc3ludGF4OiB0aGVtZSAqL1xuICAgIC0tc3ludGF4LWJsYWNrOiB2YXIoLS1jb2xvci1jb29sLWJsYWNrKTtcbiAgICAtLXN5bnRheC1kYXJrLWdyZXk6IHZhcigtLWNvbG9yLWRhcmstZ3JleSk7XG4gICAgLS1zeW50YXgtbWlkLWdyZXk6IHZhcigtLWNvbG9yLW1pZC1ncmV5KTtcbiAgICAtLXN5bnRheC1saWdodC1ncmV5OiB2YXIoLS1jb2xvci1saWdodC1ncmV5KTtcbiAgICAtLXN5bnRheC1leHRyYS1saWdodC1ncmV5OiB2YXIoLS1jb2xvci1leHRyYS1saWdodC1ncmV5KTtcbiAgICAtLXN5bnRheC1vcmFuZ2U6ICNlNzhjNDU7XG4gICAgLS1zeW50YXgteWVsbG93OiAjZTdjNTQ3O1xuICAgIC0tc3ludGF4LWJsdWU6ICMzNDkwZWM7XG4gICAgLS1zeW50YXgtZ3JlZW46ICNiOWNhNGE7XG4gICAgLS1zeW50YXgtcmVkOiAjZDU0ZTUzO1xuICAgIC0tc3ludGF4LWxpbGFjOiAjYmI4N2QzO1xuXG4gICAgLyogdXB0aW1lIHN0YXR1cyBjb2xvcnMgKi9cbiAgICAtLXVwdGltZS1jb2xvci11cDogIzM5YjU0YTtcbiAgICAtLXVwdGltZS1jb2xvci10cm91YmxlOiAjZTg3NjIzO1xuICAgIC0tdXB0aW1lLWNvbG9yLWRvd246ICNlNjI0MmM7XG5cbiAgICAvKiBmbGF0IGNvbG9ycyBmb3Igc29jaWFsIGljb25zICovXG4gICAgLS1pY29uLWNvbG9yLWxpbmtlZGluOiAjMTI2OWJmO1xuICAgIC0taWNvbi1jb2xvci10d2l0dGVyOiAjMmNhYWUxO1xuICAgIC0taWNvbi1jb2xvci1nbGFzc2Rvb3I6ICMwYmFhNDE7XG4gICAgLS1pY29uLWNvbG9yLWdpdGh1YjogIzAwMDAwMDtcbiAgICAtLWljb24tY29sb3ItZGlzY29yZDogIzU4NjVmMjtcbiAgICAtLWljb24tY29sb3Itc3RhY2tvdmVyZmxvdzogI2Y0ODAyNDtcbiAgICAtLWljb24tY29sb3IteW91dHViZTogI2ZmMDAwMDtcblxuICAgIC0tZ3JhZGllbnQtYWN0aXZlLW9yYW5nZTogbGluZWFyLWdyYWRpZW50KFxuICAgICAgNjEuMmRlZyxcbiAgICAgIHZhcigtLWNvbG9yLWFjdGl2ZS1vcmFuZ2UpIDEwLjQ2JSxcbiAgICAgICNmZTUyMTUgMzguNjMlLFxuICAgICAgI2ZjNGExMyA1NC4zOCUsXG4gICAgICAjZjczYzEwIDY3LjA3JSxcbiAgICAgICNmMTI4MGEgNzguMTMlLFxuICAgICAgI2U5MGYwNCA4OC4wMiUsXG4gICAgICB2YXIoLS1jb2xvci1yZWQtb3JhbmdlKSA5Mi43MyVcbiAgICApO1xuXG4gICAgLyogVXNlZCBmb3Igc21vb3RoIHRyYW5zaXRpb25zIGZyb20gZ3JhZGllbnQgdG8gbm9uLWdyYWRpZW50IGJhY2tncm91bmRzICovXG4gICAgLS1ncmFkaWVudC10cmFuc3BhcmVudDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgMGRlZyxcbiAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCksXG4gICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDApXG4gICAgKTtcblxuICAgIC0tZ3JhZGllbnQtaG90LXBpbms6IGxpbmVhci1ncmFkaWVudChcbiAgICAgIDgwLjJkZWcsXG4gICAgICB2YXIoLS1jb2xvci1icmlnaHQtcmVkKSAwJSxcbiAgICAgIHZhcigtLWNvbG9yLWphenp5LXBpbmspIDEwMCVcbiAgICApO1xuXG4gICAgLS1mcy10aXRsZS14bDogNHJlbTtcbiAgICAtLWZzLXRpdGxlOiAzLjVyZW07XG4gICAgLS1mcy10aXRsZS14czogM3JlbTtcbiAgICAtLWZzLWgxLXhsOiAzLjVyZW07XG4gICAgLS1mcy1oMTogM3JlbTtcbiAgICAtLWZzLWgxLXhzOiAyLjYyNXJlbTtcbiAgICAtLWZzLWgyLXhsOiAyLjVyZW07XG4gICAgLS1mcy1oMjogMnJlbTtcbiAgICAtLWZzLWgyLXhzOiAxLjg3NXJlbTtcbiAgICAtLWZzLWgzOiAxLjVyZW07XG4gICAgLS1mcy1oNDogMS4xMjVyZW07XG4gICAgLS1mcy1wMTogMS4xMjVyZW07XG4gICAgLS1mcy1wMjogMXJlbTtcbiAgICAtLWZzLXAzOiAwLjg3NXJlbTtcbiAgICAtLWZzLXN0YW5kZmlyc3QteGw6IDIuMjVyZW07XG4gICAgLS1mcy1zdGFuZGZpcnN0OiAxLjVyZW07XG4gICAgLS1mcy1zdWItaGVhZGVyOiAxLjVyZW07XG4gICAgLS1mcy1zdWItaGVhZGVyLXhzOiAxLjEyNXJlbTtcbiAgICAtLWZzLW92ZXJsaW5lMTogMXJlbTtcbiAgICAtLWZzLW92ZXJsaW5lMjogMC44NzVyZW07XG4gICAgLS1mcy1idG4xOiAxLjEyNXJlbTtcbiAgICAtLWZzLWJ0bjI6IDFyZW07XG4gICAgLS1mcy1idG4zOiAwLjg3NXJlbTtcbiAgICAtLWZzLW1lbnUxOiAxLjEyNXJlbTtcbiAgICAtLWZzLW1lbnUyOiAxcmVtO1xuICAgIC0tZnMtbWVudTM6IDAuODc1cmVtO1xuICAgIC0tZnMtcXVvdGU6IDEuNXJlbTtcbiAgICAtLWZzLWNvZGU6IDAuODc1cmVtO1xuXG4gICAgLS1saC1kZW5zZTogMTtcbiAgICAtLWxoLXRpZ2h0OiAxLjEyNTtcbiAgICAtLWxoLXNudWc6IDEuMTU7XG4gICAgLS1saC1ub3JtYWw6IDEuMjU7XG4gICAgLS1saC1yZWxheGVkOiAxLjQ1O1xuXG4gICAgLS1scy10aWdodGVuLTBfMDI1OiAtMC4wMjVlbTtcbiAgICAtLWxzLXRpZ2h0ZW4tMF8wMjogLTAuMDJlbTtcbiAgICAtLWxzLXRpZ2h0ZW4tMF8wMTU6IC0wLjAxNWVtO1xuICAgIC0tbHMtdGlnaHRlbi0wXzAxOiAtMC4wMWVtO1xuICAgIC0tbHMtdGlnaHRlbi0wXzAwNTogLTAuMDA1ZW07XG4gICAgLS1scy10aWdodGVuLTBfMDAyNTogLTAuMDAyNWVtO1xuICAgIC0tbHMtd2lkZW4tMF8xOiAwLjFlbTtcbiAgICAtLWxzLXdpZGVuLTBfMTU6IDAuMTVlbTtcblxuICAgIC0tc3BhY2luZy0wOiAwcHg7XG4gICAgLS1zcGFjaW5nLTE6IDFweDtcbiAgICAtLXNwYWNpbmctMjogMC4xMjVyZW07XG4gICAgLS1zcGFjaW5nLTQ6IDAuMjVyZW07XG4gICAgLS1zcGFjaW5nLTY6IDAuMzc1cmVtO1xuICAgIC0tc3BhY2luZy04OiAwLjVyZW07XG4gICAgLS1zcGFjaW5nLTEyOiAwLjc1cmVtO1xuICAgIC0tc3BhY2luZy0xNDogMC44NzVyZW07XG4gICAgLS1zcGFjaW5nLTE2OiAxcmVtO1xuICAgIC0tc3BhY2luZy0yMDogMS4yNXJlbTtcbiAgICAtLXNwYWNpbmctMjQ6IDEuNXJlbTtcbiAgICAtLXNwYWNpbmctMzI6IDJyZW07XG4gICAgLS1zcGFjaW5nLTQwOiAyLjVyZW07XG4gICAgLS1zcGFjaW5nLTQ4OiAzcmVtO1xuICAgIC0tc3BhY2luZy02NDogNHJlbTtcbiAgICAtLXNwYWNpbmctNzI6IDQuNXJlbTtcbiAgICAtLXNwYWNpbmctODA6IDVyZW07XG4gICAgLS1zcGFjaW5nLTg4OiA1LjVyZW07XG4gICAgLS1zcGFjaW5nLTk2OiA2cmVtO1xuICAgIC0tc3BhY2luZy0xMjg6IDhyZW07XG4gICAgLS1zcGFjaW5nLTE2MDogMTByZW07XG4gICAgLS1zcGFjaW5nLTI1NjogMTZyZW07XG5cbiAgICAtLXNwYWNpbmctYnRuLXNtYWxsOiAwLjg3NXJlbSAxLjI1cmVtOyAvKiAxNHB4IDE2cHggKi9cbiAgICAtLXNwYWNpbmctYnRuLXhzbWFsbDogMC44NzVyZW0gMXJlbTsgLyogMTRweCAxNnB4ICovXG4gICAgLS1zcGFjaW5nLWJ0bjogMC44NzVyZW0gMS41cmVtOyAvKiAxNHB4IDI0cHggKi9cbiAgICAtLXNwYWNpbmctYnRuLWxhcmdlOiAwLjg3NXJlbSAxLjc1cmVtOyAvKiAxNHB4IDI4cHggKi9cbiAgICAtLXNwYWNpbmctbWVudS1yb3c6IDAuNjI1cmVtIDAuNXJlbSAwLjY4NzVyZW07IC8qIDEwcHggOHB4IDExcHggKi9cbiAgICAtLXNwYWNpbmctbWVudS1yb3ctc251ZzogMC40Mzc1cmVtIDAuNXJlbSAwLjM3NXJlbTsgLyogN3B4IDhweCA2cHggKi9cbiAgICAtLXNwYWNpbmctbWVudS1yb3ctdGl0bGU6IDAuNjg3NXJlbSAwLjVyZW07IC8qIDExcHggOHB4ICovXG4gICAgLS1zcGFjaW5nLW1lZGlhOiAwLjVyZW07IC8qIDhweCAqL1xuICAgIC0tc3BhY2luZy1pbnB1dDogMC44MTI1cmVtIDFyZW0gMC43NXJlbTsgLyogMTNweCAxNnB4IDEycHggKi9cbiAgICAtLXNwYWNpbmctb3ZlcmxpbmU6IDAuNjg3NXJlbSAwOyAvKiAxMXB4IDAgKi9cbiAgICAtLXNwYWNpbmctY2hpcC14c21hbGw6IDAuMzc1cmVtIDAuNXJlbTsgLyogNnB4IDhweCAqL1xuICAgIC0tc3BhY2luZy1jaGlwLXNtYWxsOiAwLjVyZW0gMC43NXJlbTsgLyogOHB4IDEycHggKi9cbiAgICAtLXNwYWNpbmctY2hpcDogMC43NXJlbSAxcmVtOyAvKiA2cHggOHB4ICovXG4gICAgLS1zcGFjaW5nLWNoaXAtbGFyZ2U6IDFyZW0gMS4yNXJlbTsgLyogMTZweCAyMHB4ICovXG4gICAgLS1zcGFjaW5nLWlubGluZS1jb2RlOiAwLjM3NXJlbSAwLjVyZW07IC8qIDZweCA4cHggKi9cblxuICAgIC8qIEluIGNvbXBvbmVudHMsIHdoZW4gbG9va2luZyBhdCBpbXBsZW1lbnRpbmcgdmlld3BvcnQgbWFyZ2luIGFuZCBzcGFjaW5nIGJldHdlZW4gZWxlbWVudHMsXG4gICAgICAgdGhlIHZhbHVlcyBpbiB0aGUgY29tbWVudHMgY2FuIGJlIHVzZWQgYXMgZ3VpZGUgYXMgdGhleSByZXByZXNlbnQgdGhlIGdyaWQgdGhlIGVsZW1lbnRzIChzaG91bGQpIHNpdCBvbi5cbiAgICAgICBhbHRlcm5hdGl2ZWx5LCBsb29rIGZvciB1aS1ncmlkLSogaGVscGVycy4gKi9cbiAgICAtLWJwLXhzOiA0MjhweDsgLyogZ3V0dGVycyA4cHgsIHNpZGUtbWFyZ2luIDI0cHggKi9cbiAgICAtLWJwLXNtOiA3NjhweDsgLyogZ3V0dGVycyAxNnB4LCBzaWRlLW1hcmdpbiAzMnB4ICovXG4gICAgLS1icC1tZDogMTA0MHB4OyAvKiBndXR0ZXJzIDI0cHgsIHNpZGUtbWFyZ2luIDQwcHgsIG1lZ2FuYXYgZGVza3RvcCAqL1xuICAgIC0tYnAtbGc6IDEyODBweDsgLyogZ3V0dGVycyAyNHB4LCBzaWRlLW1hcmdpbiA2NHB4ICovXG4gICAgLS1icC14bDogMTQ0MHB4OyAvKiBndXR0ZXJzIDMycHgsIHNpZGUtbWFyZ2luIDY0cHggKi9cblxuICAgIC8qIFBhZ2Ugc3RhY2tpbmcgY29udGV4dC4gSWYgY29tcG9uZW50cyBjcmVhdGUgbmV3IHN0YWNraW5nIGNvbnRleHRzIHotaW5kZXggdmFsdWVzIHNob3VsZCBiZSBkZWZpbmVkIHdpdGhpbiB0aGVtLiAqL1xuICAgIC0tc3RhY2tpbmctY29udGV4dC1wYWdlLW1lZ2FuYXY6IDEwMDtcblxuICAgIC8qIEV4cG9zZSBjb21wb25lbnQgdmFsdWVzIGZvciBjcm9zcy1jb21wb25lbnQgdXNhZ2UgKi9cbiAgICAtLXVpLW1lZ2FuYXYtaGVpZ2h0OiA0cmVtO1xuICAgIC0tdWktc2hvd2Nhc2UtY2xpZW50LWxvZ28tbWluLXdpZHRoOiA4Ljc1cmVtOyAvKiAxNDBweCBhdCAxNnB4IGJhc2UqL1xuICAgIC0tdWktc2hvd2Nhc2UtY2xpZW50LWxvZ28tbWF4LXdpZHRoOiAxNXJlbTsgLyogMjQwcHggYXQgMTZweCBiYXNlKi9cbiAgfVxufVxuIiwiQGxheWVyIGNvbXBvbmVudHMge1xuICAudWktYnRuIHtcbiAgICBAYXBwbHkgdGV4dC13aGl0ZSBiZy1jb29sLWJsYWNrIHRleHQtYnRuMiBmb250LXNhbnMgZm9udC1tZWRpdW0gaW5saW5lLWJsb2NrIHJvdW5kZWQgcC1idG47XG4gICAgQGFwcGx5IGhvdmVyOnRleHQtd2hpdGUgaG92ZXI6YmctYWN0aXZlLW9yYW5nZTtcbiAgICBAYXBwbHkgYWN0aXZlOnRleHQtd2hpdGUgYWN0aXZlOmJnLXJlZC1vcmFuZ2U7XG4gICAgQGFwcGx5IGZvY3VzOnRleHQtd2hpdGUgZm9jdXM6YmctY29vbC1ibGFjayBmb2N1czpvdXRsaW5lLWd1aS1mb2N1cztcbiAgICBAYXBwbHkgZGlzYWJsZWQ6dGV4dC1taWQtZ3JleSBkaXNhYmxlZDpiZy1ndWktdW5hdmFpbGFibGUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkO1xuICAgIEBhcHBseSB0cmFuc2l0aW9uLWNvbG9ycztcbiAgICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyO1xuICB9XG5cbiAgLnVpLWJ0bi1hbHQge1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMC4ycztcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICA2MS4yZGVnLFxuICAgICAgdmFyKC0tY29sb3ItYWN0aXZlLW9yYW5nZSkgNSUsXG4gICAgICAjZmU1MjE1IDE5JSxcbiAgICAgICNmYzRhMTMgMjclLFxuICAgICAgI2Y3M2MxMCAzMyUsXG4gICAgICAjZjEyODBhIDM5JSxcbiAgICAgICNlOTBmMDQgNDQlLFxuICAgICAgdmFyKC0tY29sb3ItcmVkLW9yYW5nZSkgNTAlXG4gICAgKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTtcblxuICAgIEBhcHBseSB0ZXh0LXdoaXRlIHRleHQtYnRuMiBmb250LXNhbnMgZm9udC1tZWRpdW0gaW5saW5lLWJsb2NrIHJvdW5kZWQgcC1idG47XG4gICAgQGFwcGx5IGZvY3VzOm91dGxpbmUtZ3VpLWZvY3VzO1xuICAgIEBhcHBseSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXI7XG4gIH1cblxuICAudWktYnRuLWFsdDpob3ZlcixcbiAgLnVpLWJ0bi1hbHQ6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMCU7XG4gIH1cblxuICAudWktYnRuLWFsdDpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHZhcigtLWdyYWRpZW50LXRyYW5zcGFyZW50KSk7XG4gICAgQGFwcGx5IGJnLWd1aS11bmF2YWlsYWJsZSB0ZXh0LW1pZC1ncmV5IGN1cnNvci1ub3QtYWxsb3dlZDtcbiAgfVxuXG4gIC51aS1idG4taW52ZXJ0IHtcbiAgICBAYXBwbHkgdGV4dC1jb29sLWJsYWNrIGJnLXdoaXRlIHRleHQtYnRuMiBmb250LXNhbnMgZm9udC1tZWRpdW0gaW5saW5lLWJsb2NrIHJvdW5kZWQgcC1idG47XG4gICAgQGFwcGx5IGhvdmVyOnRleHQtd2hpdGUgaG92ZXI6YmctYWN0aXZlLW9yYW5nZTtcbiAgICBAYXBwbHkgYWN0aXZlOnRleHQtd2hpdGUgYWN0aXZlOmJnLXJlZC1vcmFuZ2U7XG4gICAgQGFwcGx5IGZvY3VzOnRleHQtd2hpdGUgZm9jdXM6YmctY29vbC1ibGFjayBmb2N1czpvdXRsaW5lLWd1aS1mb2N1cztcbiAgICBAYXBwbHkgZGlzYWJsZWQ6dGV4dC1taWQtZ3JleSBkaXNhYmxlZDpiZy1ndWktdW5hdmFpbGFibGUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkO1xuICAgIEBhcHBseSB0cmFuc2l0aW9uLWNvbG9ycztcbiAgICBAYXBwbHkgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyO1xuICB9XG5cbiAgLnVpLWJ0bi1zZWNvbmRhcnkge1xuICAgIEBhcHBseSB0ZXh0LWNvb2wtYmxhY2sgYmctd2hpdGUgdGV4dC1idG4yIGZvbnQtc2FucyBmb250LW1lZGl1bSBpbmxpbmUtYmxvY2sgYm9yZGVyLWJ0biBib3JkZXItY29vbC1ibGFjayByb3VuZGVkIHAtYnRuO1xuICAgIEBhcHBseSBob3Zlcjp0ZXh0LWNvb2wtYmxhY2sgaG92ZXI6Ym9yZGVyLWFjdGl2ZS1vcmFuZ2UgaG92ZXI6Ymctd2hpdGU7XG4gICAgQGFwcGx5IGFjdGl2ZTpib3JkZXItcmVkLW9yYW5nZSBhY3RpdmU6Ymctd2hpdGU7XG4gICAgQGFwcGx5IGZvY3VzOmJvcmRlci1jb29sLWJsYWNrIGZvY3VzOmJnLXdoaXRlIGZvY3VzOm91dGxpbmUtZ3VpLWZvY3VzO1xuICAgIEBhcHBseSBkaXNhYmxlZDp0ZXh0LWd1aS11bmF2YWlsYWJsZSBkaXNhYmxlZDpib3JkZXItZ3VpLXVuYXZhaWxhYmxlIGRpc2FibGVkOmJnLXdoaXRlIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZDtcbiAgICBAYXBwbHkgdHJhbnNpdGlvbi1jb2xvcnM7XG4gICAgQGFwcGx5IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcjtcbiAgfVxuXG4gIC51aS1idG4tc2Vjb25kYXJ5LWludmVydCB7XG4gICAgQGFwcGx5IHRleHQtd2hpdGUgYmctY29vbC1ibGFjayB0ZXh0LWJ0bjIgZm9udC1zYW5zIGZvbnQtbWVkaXVtIGlubGluZS1ibG9jayBib3JkZXItYnRuIGJvcmRlci1taWQtZ3JleSByb3VuZGVkIHAtYnRuO1xuICAgIEBhcHBseSBob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOmJvcmRlci1hY3RpdmUtb3JhbmdlO1xuICAgIEBhcHBseSBhY3RpdmU6Ym9yZGVyLXJlZC1vcmFuZ2U7XG4gICAgQGFwcGx5IGZvY3VzOm91dGxpbmUtZ3VpLWZvY3VzO1xuICAgIEBhcHBseSBkaXNhYmxlZDp0ZXh0LWd1aS11bmF2YWlsYWJsZSBkaXNhYmxlZDpib3JkZXItZ3VpLXVuYXZhaWxhYmxlIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZDtcbiAgICBAYXBwbHkgdHJhbnNpdGlvbi1jb2xvcnM7XG4gICAgQGFwcGx5IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcjtcbiAgfVxuXG4gIC51aS1idG4taWNvbiB7XG4gICAgQGFwcGx5IHctMjQgaC0yNCBtci0xNjtcbiAgfVxuXG4gIC51aS1idG4taWNvbi1zbWFsbCB7XG4gICAgQGFwcGx5IHctMjAgaC0yMCBtci0xMjtcbiAgfVxuXG4gIC51aS1idG4taWNvbi14c21hbGwge1xuICAgIEBhcHBseSB3LTE2IGgtMTYgbXItODtcbiAgfVxuXG4gIC51aS1jaGlwIHtcbiAgICBAYXBwbHkgdGV4dC1idG4zIHAtY2hpcCByb3VuZGVkIHRleHQtY29vbC1ibGFjaztcbiAgICBAYXBwbHkgaG92ZXI6YmctbWlkLWdyZXk7XG4gICAgQGFwcGx5IGFjdGl2ZTpiZy1yZWQtb3JhbmdlIGFjdGl2ZTp0ZXh0LXdoaXRlO1xuICAgIEBhcHBseSBmb2N1czpiZy1yZWQtb3JhbmdlIGZvY3VzOnRleHQtd2hpdGUgZm9jdXM6b3V0bGluZS1ub25lO1xuICAgIEBhcHBseSBkaXNhYmxlZDp0ZXh0LW1pZC1ncmV5IGRpc2FibGVkOmJnLWd1aS11bmF2YWlsYWJsZSBkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQ7XG4gICAgQGFwcGx5IHRyYW5zaXRpb24tY29sb3JzO1xuICB9XG5cbiAgLnVpLWNoaXBbZGF0YS1zZWxlY3RlZF0ge1xuICAgIEBhcHBseSBiZy1hY3RpdmUtb3JhbmdlIHRleHQtd2hpdGU7XG4gIH1cblxuICAudWktY2hpcFtkYXRhLXNlbGVjdGVkXTpob3ZlciB7XG4gICAgQGFwcGx5IGJnLW1pZC1ncmV5IHRleHQtY29vbC1ibGFjaztcbiAgfVxuXG4gIC51aS1jaGlwW2RhdGEtc2VsZWN0ZWRdOmZvY3VzIHtcbiAgICBAYXBwbHkgYmctcmVkLW9yYW5nZSB0ZXh0LXdoaXRlO1xuICB9XG5cbiAgLnVpLWNoaXAtYWx0IHtcbiAgICBAYXBwbHkgdGV4dC1idG4zIHAtY2hpcCByb3VuZGVkIHRleHQtd2hpdGU7XG4gICAgQGFwcGx5IGhvdmVyOmJnLWd1aS1ob3ZlcjtcbiAgICBAYXBwbHkgYWN0aXZlOmJnLWd1aS1hY3RpdmUgYWN0aXZlOnRleHQtd2hpdGU7XG4gICAgQGFwcGx5IGZvY3VzOmJnLWd1aS1hY3RpdmUgZm9jdXM6dGV4dC13aGl0ZSBmb2N1czpvdXRsaW5lLW5vbmU7XG4gICAgQGFwcGx5IGRpc2FibGVkOnRleHQtbWlkLWdyZXkgZGlzYWJsZWQ6YmctZ3VpLXVuYXZhaWxhYmxlIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZDtcbiAgICBAYXBwbHkgdHJhbnNpdGlvbi1jb2xvcnM7XG4gIH1cblxuICAudWktY2hpcC1hbHRbZGF0YS1zZWxlY3RlZF0ge1xuICAgIEBhcHBseSBiZy1kYXJrLWdyZXkgdGV4dC13aGl0ZTtcbiAgfVxuICAudWktY2hpcC1hbHRbZGF0YS1zZWxlY3RlZF06aG92ZXIge1xuICAgIEBhcHBseSBiZy1ndWktaG92ZXIgdGV4dC13aGl0ZTtcbiAgfVxuXG4gIC51aS1jaGlwLWFsdFtkYXRhLXNlbGVjdGVkXTpmb2N1cyB7XG4gICAgQGFwcGx5IGJnLWd1aS1hY3RpdmUgdGV4dC13aGl0ZTtcbiAgfVxufVxuIiwiQGxheWVyIGNvbXBvbmVudHMge1xuICAudWktc3RhbmRhcmQtY29udGFpbmVyIHtcbiAgICBAYXBwbHkgdy1mdWxsIG1heC13LXNjcmVlbi14bCBteC1hdXRvIHB4LTI0IHNtOnB4LTMyIG1kOnB4LTQwIGxnOnB4LTY0O1xuICB9XG5cbiAgLnVpLWdyaWQtZ2FwIHtcbiAgICBAYXBwbHkgZ2FwLTggc206Z2FwLTE2IG1kOmdhcC0yNCB4bDpnYXAtMzI7XG4gIH1cblxuICAudWktZ3JpZC1nYXAteCB7XG4gICAgQGFwcGx5IGdhcC14LTggc206Z2FwLXgtMTYgbWQ6Z2FwLXgtMjQgeGw6Z2FwLXgtMzI7XG4gIH1cblxuICAudWktZ3JpZC1weCB7XG4gICAgQGFwcGx5IHB4LTI0IHNtOnB4LTMyIG1kOnB4LTQwIGxnOnB4LTY0O1xuICB9XG5cbiAgLnVpLWdyaWQtbXgge1xuICAgIEBhcHBseSBteC0yNCBzbTpteC0zMiBtZDpteC00MCBsZzpteC02NDtcbiAgfVxufVxuIiwiQGxheWVyIGNvbXBvbmVudHMge1xuICAudWktdGV4dC10aXRsZSB7XG4gICAgQGFwcGx5IGZvbnQtc2FucyBmb250LW1lZGl1bSB0ZXh0LWNvb2wtYmxhY2s7XG4gICAgQGFwcGx5IHRleHQtdGl0bGUteHMgeHM6dGV4dC10aXRsZSB4bDp0ZXh0LXRpdGxlLXhsO1xuICAgIEBhcHBseSB0cmFja2luZy10aWdodGVuLTAuMDEgeHM6dHJhY2tpbmctdGlnaHRlbi0wLjAxNSB4bDp0cmFja2luZy10aWdodGVuLTAuMDI7XG4gIH1cblxuICAudWktdGV4dC1oMSB7XG4gICAgQGFwcGx5IGZvbnQtc2FucyBmb250LW1lZGl1bSB0ZXh0LWNvb2wtYmxhY2s7XG4gICAgQGFwcGx5IHRleHQtaDEteHMgeHM6dGV4dC1oMSB4bDp0ZXh0LWgxLXhsO1xuICAgIEBhcHBseSB0cmFja2luZy10aWdodGVuLTAuMDE7XG4gIH1cblxuICAudWktdGV4dC1oMiB7XG4gICAgQGFwcGx5IGZvbnQtc2FucyBmb250LW1lZGl1bSB0ZXh0LWNvb2wtYmxhY2s7XG4gICAgQGFwcGx5IHRleHQtaDIteHMgeHM6dGV4dC1oMiB4bDp0ZXh0LWgyLXhsO1xuICAgIEBhcHBseSB0cmFja2luZy10aWdodGVuLTAuMDA1O1xuICB9XG5cbiAgLnVpLXRleHQtaDMge1xuICAgIEBhcHBseSBmb250LXNhbnMgZm9udC1tZWRpdW0gdGV4dC1jb29sLWJsYWNrO1xuICAgIEBhcHBseSB0ZXh0LWgzO1xuICAgIEBhcHBseSB0cmFja2luZy10aWdodGVuLTAuMDAyNTtcbiAgfVxuXG4gIC51aS10ZXh0LWg0IHtcbiAgICBAYXBwbHkgZm9udC1zYW5zIGZvbnQtbWVkaXVtIHRleHQtY29vbC1ibGFjaztcbiAgICBAYXBwbHkgdGV4dC1oNDtcbiAgICBAYXBwbHkgdHJhY2tpbmctd2lkZW4tMC4xO1xuICB9XG5cbiAgLnVpLXRleHQtcDEge1xuICAgIEBhcHBseSBmb250LXNhbnMgZm9udC1saWdodCB0ZXh0LWNoYXJjb2FsLWdyZXk7XG4gICAgQGFwcGx5IHRleHQtcDE7XG4gIH1cblxuICAudWktdGV4dC1wMiB7XG4gICAgQGFwcGx5IGZvbnQtc2FucyBmb250LWxpZ2h0IHRleHQtY2hhcmNvYWwtZ3JleTtcbiAgICBAYXBwbHkgdGV4dC1wMjtcbiAgfVxuXG4gIC51aS10ZXh0LXAzIHtcbiAgICBAYXBwbHkgZm9udC1zYW5zIGZvbnQtbGlnaHQgdGV4dC1jaGFyY29hbC1ncmV5O1xuICAgIEBhcHBseSB0ZXh0LXAzO1xuICB9XG5cbiAgLnVpLXRleHQtc3RhbmRmaXJzdCB7XG4gICAgQGFwcGx5IGZvbnQtc2FucyBmb250LWxpZ2h0IHRleHQtYWN0aXZlLW9yYW5nZTtcbiAgICBAYXBwbHkgdGV4dC1zdGFuZGZpcnN0IHhsOnRleHQtc3RhbmRmaXJzdC14bDtcbiAgICBAYXBwbHkgdHJhY2tpbmctdGlnaHRlbi0wLjAyNSB4bDp0cmFja2luZy10aWdodGVuLTAuMDE1O1xuICB9XG5cbiAgLnVpLXRleHQtcXVvdGUge1xuICAgIEBhcHBseSBmb250LXNhbnMgZm9udC1saWdodCB0ZXh0LWNvb2wtYmxhY2s7XG4gICAgQGFwcGx5IHRleHQtcXVvdGU7XG4gICAgQGFwcGx5IHRyYWNraW5nLXRpZ2h0ZW4tMC4wMjU7XG4gIH1cblxuICAudWktdGV4dC1zdWItaGVhZGVyIHtcbiAgICBAYXBwbHkgZm9udC1zYW5zIGZvbnQtbGlnaHQgdGV4dC1kYXJrLWdyZXk7XG4gICAgQGFwcGx5IHRleHQtc3ViLWhlYWRlci14cyB4czp0ZXh0LXN1Yi1oZWFkZXI7XG4gICAgQGFwcGx5IHRyYWNraW5nLXRpZ2h0ZW4tMC4wMjU7XG4gIH1cblxuICAudWktdGV4dC1vdmVybGluZTEge1xuICAgIEBhcHBseSBmb250LXNhbnMgZm9udC1tZWRpdW0gdGV4dC1kYXJrLWdyZXkgdXBwZXJjYXNlO1xuICAgIEBhcHBseSB0ZXh0LW92ZXJsaW5lMTtcbiAgICBAYXBwbHkgdHJhY2tpbmctd2lkZW4tMC4xNTtcbiAgfVxuXG4gIC51aS10ZXh0LW92ZXJsaW5lMiB7XG4gICAgQGFwcGx5IGZvbnQtc2FucyBmb250LW1lZGl1bSB0ZXh0LWRhcmstZ3JleSB1cHBlcmNhc2U7XG4gICAgQGFwcGx5IHRleHQtb3ZlcmxpbmUyO1xuICAgIEBhcHBseSB0cmFja2luZy13aWRlbi0wLjE7XG4gIH1cblxuICAudWktdGV4dC1tZW51MSB7XG4gICAgQGFwcGx5IGZvbnQtc2FucyBmb250LWxpZ2h0IHRleHQtY29vbC1ibGFjaztcbiAgICBAYXBwbHkgdGV4dC1tZW51MTtcbiAgfVxuXG4gIC51aS10ZXh0LW1lbnUyIHtcbiAgICBAYXBwbHkgZm9udC1zYW5zIGZvbnQtbGlnaHQgdGV4dC1jb29sLWJsYWNrO1xuICAgIEBhcHBseSB0ZXh0LW1lbnUyO1xuICB9XG5cbiAgLnVpLXRleHQtbWVudTMge1xuICAgIEBhcHBseSBmb250LXNhbnMgZm9udC1saWdodCB0ZXh0LWNvb2wtYmxhY2s7XG4gICAgQGFwcGx5IHRleHQtbWVudTM7XG4gIH1cblxuICAudWktdGV4dC1jb2RlIHtcbiAgICBAYXBwbHkgZm9udC1tb25vIGZvbnQtc2VtaWJvbGQgdGV4dC1jb2RlO1xuICB9XG5cbiAgLnVpLXRleHQtY29kZS1pbmxpbmUge1xuICAgIEBhcHBseSBmb250LW1vbm8gZm9udC1zZW1pYm9sZCB0ZXh0LWNvZGUgdGV4dC1jaGFyY29hbC1ncmV5IGJnLWxpZ2h0LWdyZXkgcC1pbmxpbmUtY29kZSByb3VuZGVkLXNtIG14LTE7XG4gIH1cblxuICAudWktdW5vcmRlcmVkLWxpc3Qge1xuICAgIEBhcHBseSB0ZXh0LXAxIGZvbnQtbGlnaHQgdGV4dC1jb29sLWJsYWNrO1xuICAgIEBhcHBseSBsaXN0LWRpc2MgbWwtMzIgbWItMjQ7XG4gIH1cblxuICAudWktb3JkZXJlZC1saXN0IHtcbiAgICBAYXBwbHkgdGV4dC1wMSBmb250LWxpZ2h0IHRleHQtY29vbC1ibGFjaztcbiAgICBAYXBwbHkgbWwtMzIgbWItMjQgbGlzdC1kZWNpbWFsO1xuICB9XG5cbiAgLnVpLXVub3JkZXJlZC1saXN0IGxpID4gKjpsYXN0LW9mLXR5cGU6bm90KHVsKTpub3Qob2wpLFxuICAudWktb3JkZXJlZC1saXN0IGxpID4gKjpsYXN0LW9mLXR5cGU6bm90KHVsKTpub3Qob2wpIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgLnVpLXVub3JkZXJlZC1saXN0IHVsIHtcbiAgICBAYXBwbHkgbWwtMjQgbXQtMTYgbGlzdC1jaXJjbGU7XG4gIH1cblxuICAudWktb3JkZXJlZC1saXN0IG9sIHtcbiAgICBAYXBwbHkgbWwtMjQgbXQtMTYgbGlzdC1kZWNpbWFsO1xuICB9XG5cbiAgLnVpLXVub3JkZXJlZC1saXN0IHVsIHVsIHtcbiAgICBAYXBwbHkgbGlzdC1zcXVhcmU7XG4gIH1cblxuICAudWktdW5vcmRlcmVkLWxpc3Qtd2l0aC1lbXBoYXNpcyB7XG4gICAgQGFwcGx5IHRleHQtcDEgZm9udC1saWdodCB0ZXh0LWNvb2wtYmxhY2s7XG4gICAgQGFwcGx5IGxpc3QtZGlzYyBtbC0zMiBtdC0zMiAtbWItMTI7XG4gIH1cblxuICAudWktdW5vcmRlcmVkLWxpc3Qtd2l0aC1lbXBoYXNpcyBsaSBkaXYge1xuICAgIEBhcHBseSByZWxhdGl2ZSAtdG9wLTEyO1xuICB9XG5cbiAgLnVpLXVub3JkZXJlZC1saXN0LXdpdGgtZW1waGFzaXMgbGkgZGl2ID4gc3Ryb25nIHtcbiAgICBAYXBwbHkgYmxvY2s7XG4gIH1cblxuICAudWktdW5vcmRlcmVkLWxpc3Qtd2l0aC1lbXBoYXNpcyB1bCB7XG4gICAgbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1zcGFjaW5nLTE2KSArIHZhcigtLXNwYWNpbmctOCkpO1xuICAgIEBhcHBseSBtbC0yNCBsaXN0LWNpcmNsZTtcbiAgfVxuXG4gIC51aS11bm9yZGVyZWQtbGlzdC13aXRoLWVtcGhhc2lzIHVsIHVsIHtcbiAgICBAYXBwbHkgbGlzdC1zcXVhcmU7XG4gIH1cblxuICAudWktbGluayB7XG4gICAgQGFwcGx5IHRleHQtZ3VpLWRlZmF1bHQ7XG4gICAgQGFwcGx5IGhvdmVyOnRleHQtZ3VpLWhvdmVyIGFjdGl2ZTp0ZXh0LWd1aS1hY3RpdmUgZGlzYWJsZWQ6dGV4dC1ndWktdW5hdmFpbGFibGU7XG4gICAgQGFwcGx5IGZvY3VzOnRleHQtZ3VpLWRlZmF1bHQgZm9jdXM6b3V0bGluZS1ndWktZm9jdXM7XG4gICAgQGFwcGx5IG5vLXVuZGVybGluZTtcbiAgfVxuXG4gIC51aS1saW5rLW5ldXRyYWwge1xuICAgIEBhcHBseSBob3Zlcjp0ZXh0LWRhcmstZ3JleSBhY3RpdmU6dGV4dC1jb29sLWJsYWNrIGRpc2FibGVkOnRleHQtZ3VpLXVuYXZhaWxhYmxlO1xuICAgIEBhcHBseSBmb2N1czp0ZXh0LWNoYXJjb2FsLWdyZXkgZm9jdXM6b3V0bGluZS1ndWktZm9jdXMtbmV1dHJhbDtcbiAgICBAYXBwbHkgdW5kZXJsaW5lO1xuICB9XG59XG4iLCJAbGF5ZXIgY29tcG9uZW50cyB7XG4gIC51aS1jaGVja2JveC1wMSB7XG4gICAgQGFwcGx5IGZsZXggaXRlbXMtc3RhcnQgbWItMTYgZm9udC1zYW5zO1xuICB9XG5cbiAgLnVpLWNoZWNrYm94LXAyIHtcbiAgICBAYXBwbHkgZmxleCBpdGVtcy1zdGFydCBtYi0xMiBmb250LXNhbnM7XG4gIH1cblxuICAudWktY2hlY2tib3gtaW5wdXQge1xuICAgIEBhcHBseSBvcGFjaXR5LTAgYWJzb2x1dGUgaC0yMCB3LTIwO1xuICB9XG5cbiAgLnVpLWNoZWNrYm94LXN0eWxlZCB7XG4gICAgQGFwcGx5IHctMjAgaC0yMCBtci0xNjtcbiAgICBAYXBwbHkgYmctd2hpdGUgZmxleCBmbGV4LXNocmluay0wIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlcjtcbiAgICBAYXBwbHkgYm9yZGVyIGJvcmRlci1kYXJrLWdyZXkgcm91bmRlZC1tZCBmb2N1cy13aXRoaW46Ym9yZGVyLWFjdGl2ZS1vcmFuZ2U7XG4gIH1cblxuICAudWktY2hlY2tib3gtc3R5bGVkLXRpY2sge1xuICAgIEBhcHBseSBoaWRkZW4gdGV4dC13aGl0ZTtcbiAgfVxuXG4gIC51aS1jaGVja2JveC1sYWJlbC1wMSB7XG4gICAgQGFwcGx5IHNlbGVjdC1ub25lO1xuICAgIEBhcHBseSB0ZXh0LXAxIGZvbnQtbGlnaHQgdGV4dC1jb29sLWJsYWNrO1xuICB9XG5cbiAgLnVpLWNoZWNrYm94LWxhYmVsLXAyIHtcbiAgICBAYXBwbHkgc2VsZWN0LW5vbmU7XG4gICAgQGFwcGx5IHRleHQtcDIgZm9udC1saWdodCB0ZXh0LWNvb2wtYmxhY2s7XG4gIH1cblxuICAudWktY2hlY2tib3gtaW5wdXQ6ZGlzYWJsZWQgKyAudWktY2hlY2tib3gtc3R5bGVkIHtcbiAgICBAYXBwbHkgYmctZ3VpLXVuYXZhaWxhYmxlIGJvcmRlcjtcbiAgfVxuXG4gIC51aS1jaGVja2JveC1pbnB1dDpmb2N1cyArIC51aS1jaGVja2JveC1zdHlsZWQge1xuICAgIGJvcmRlci13aWR0aDogMC4xMjVyZW07XG4gICAgQGFwcGx5IGJvcmRlci1ndWktZm9jdXM7XG4gIH1cblxuICAudWktY2hlY2tib3gtaW5wdXQ6Y2hlY2tlZCArIC51aS1jaGVja2JveC1zdHlsZWQge1xuICAgIEBhcHBseSBiZy1hY3RpdmUtb3JhbmdlIGJvcmRlci1kYXJrLWdyZXkgYm9yZGVyO1xuICB9XG5cbiAgLnVpLWNoZWNrYm94LWlucHV0OmNoZWNrZWQgKyAudWktY2hlY2tib3gtc3R5bGVkIHN2ZyB7XG4gICAgQGFwcGx5IGJsb2NrO1xuICB9XG5cbiAgLnVpLXRleHRhcmVhIHtcbiAgICBAYXBwbHkgZm9udC1zYW5zIGZvbnQtbGlnaHQgdGV4dC1jb29sLWJsYWNrIHRleHQtcDE7XG4gICAgQGFwcGx5IHAtaW5wdXQgbWItMTY7XG4gICAgQGFwcGx5IGJnLWxpZ2h0LWdyZXkgYm9yZGVyLW1pZC1ncmV5IHRyYW5zaXRpb24taW5wdXQgYm9yZGVyIHJvdW5kZWQgYmxvY2sgdy1mdWxsO1xuICAgIEBhcHBseSBob3ZlcjpiZy13aGl0ZSBob3ZlcjpzaGFkb3ctaW5wdXQgaG92ZXI6Ym9yZGVyLXRyYW5zcGFyZW50O1xuICAgIEBhcHBseSBmb2N1czpiZy13aGl0ZSBmb2N1czpzaGFkb3ctaW5wdXQgZm9jdXM6Ym9yZGVyLXRyYW5zcGFyZW50IGZvY3VzOm91dGxpbmUtZ3VpLWZvY3VzO1xuICB9XG5cbiAgLnVpLXRleHRhcmVhOjpwbGFjZWhvbGRlciB7XG4gICAgLyogQ1NTIHZhcnMgZG9uJ3Qgd29yayBpbiA6OnBsYWNlaG9sZGVyIGluIFdlYmtpdCA6KCAqL1xuICAgIC8qIGNvbG9yOiB2YXIoLS10ZXh0LWRhcmstZ3JleSk7ICovXG4gICAgY29sb3I6ICM3Njc2N2M7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuL3N0eWxlcy9idXR0b25zLmNzc1wiO1xuQGltcG9ydCBcIi4vc3R5bGVzL2xheW91dC5jc3NcIjtcbkBpbXBvcnQgXCIuL3N0eWxlcy90ZXh0LmNzc1wiO1xuQGltcG9ydCBcIi4vc3R5bGVzL2Zvcm1zLmNzc1wiO1xuXG5AbGF5ZXIgY29tcG9uZW50cyB7XG4gIC51aS1pbnB1dCB7XG4gICAgQGFwcGx5IHRleHQtcDIgZm9udC1saWdodCBiZy1saWdodC1ncmV5IHJvdW5kZWQgcC1pbnB1dCB3LWZ1bGwgbGVhZGluZy1ub25lIGFwcGVhcmFuY2Utbm9uZSBib3JkZXIgYm9yZGVyLW1pZC1ncmV5IHRyYW5zaXRpb24taW5wdXQ7XG4gICAgQGFwcGx5IGhvdmVyOmJnLXdoaXRlIGhvdmVyOnNoYWRvdy1pbnB1dCBob3Zlcjpib3JkZXItdHJhbnNwYXJlbnQ7XG4gICAgQGFwcGx5IGZvY3VzOmJnLXdoaXRlIGZvY3VzOnNoYWRvdy1pbnB1dCBmb2N1czpib3JkZXItdHJhbnNwYXJlbnQgZm9jdXM6b3V0bGluZS1ndWktZm9jdXM7XG4gICAgQGFwcGx5IG1heC13LXNjcmVlbi1zbTtcbiAgfVxuXG4gIC8qIEJhc2lzIGZvciBpY29uIGNvbXBvbmVudCAqL1xuICAudWktaWNvbi1jb29sLWJsYWNrIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWNvb2wtYmxhY2spO1xuICB9XG5cbiAgLnVpLWljb24td2hpdGUge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3Itd2hpdGUpO1xuICB9XG5cbiAgLnVpLWljb24tZGFyay1ncmV5IHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWRhcmstZ3JleSk7XG4gIH1cblxuICAudWktdmVyc2lvbi10YWcge1xuICAgIEBhcHBseSBpbmxpbmUtYmxvY2sgYWJzb2x1dGUgYWxpZ24tdG9wIHVwcGVyY2FzZSBmb250LWJvbGQgd2hpdGVzcGFjZS1ub3dyYXA7XG5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdmVydGljYWwtYWxpZ246IHN1cGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAzcHg7XG4gICAgZm9udC1zaXplOiA4cHg7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ably/ui",
3
- "version": "8.7.0-dev.7021bee",
3
+ "version": "8.7.0-dev.7072b07",
4
4
  "description": "Home of the Ably design system library ([design.ably.com](https://design.ably.com)). It provides a showcase, development/test environment and a publishing pipeline for different distributables.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -74,11 +74,13 @@
74
74
  "lodash.throttle": "^4.1.1",
75
75
  "nanoid": "^4.0.0",
76
76
  "prop-types": "^15.7.2",
77
- "react": "^17.0.1",
78
- "react-dom": "^17.0.1",
79
77
  "redux": "^4.0.5",
80
78
  "scroll-lock": "^2.1.4"
81
79
  },
80
+ "peerDependencies": {
81
+ "react": "^18.2.0",
82
+ "react-dom": "^18.2.0"
83
+ },
82
84
  "bugs": {
83
85
  "url": "https://github.com/ably/ably-ui/issues"
84
86
  },
package/reset/scripts.js CHANGED
@@ -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.Reset=t())}(this,(function(){return(()=>{"use strict";var e={};return(e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})})(e),e})()}));
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.Reset=t())}(this,(()=>(()=>{"use strict";var e={};return(e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})})(e),e})()));
package/reset/styles.css CHANGED
@@ -86,8 +86,7 @@
86
86
  abbr[title] {
87
87
  border-bottom: none; /* 1 */
88
88
  text-decoration: underline; /* 2 */
89
- -webkit-text-decoration: underline dotted;
90
- text-decoration: underline dotted; /* 2 */
89
+ text-decoration: underline dotted; /* 2 */
91
90
  }
92
91
 
93
92
  /**
@@ -444,19 +443,10 @@
444
443
  resize: vertical;
445
444
  }
446
445
 
447
- input:-ms-input-placeholder,
448
- textarea:-ms-input-placeholder {
449
- color: #a0aec0;
450
- }
451
-
452
446
  input::-moz-placeholder, textarea::-moz-placeholder {
453
447
  color: #a0aec0;
454
448
  }
455
449
 
456
- input:-ms-input-placeholder, textarea:-ms-input-placeholder {
457
- color: #a0aec0;
458
- }
459
-
460
450
  input::placeholder,
461
451
  textarea::placeholder {
462
452
  color: #a0aec0;
package/src/.DS_Store CHANGED
Binary file
Binary file
@@ -149,8 +149,6 @@ const Flashes = ({ flashes }) => {
149
149
  });
150
150
  }, [flashes]);
151
151
 
152
- console.log({ flashesWithIds });
153
-
154
152
  return (
155
153
  <div className="ui-flash" data-id={FLASH_DATA_ID}>
156
154
  {flashesWithIds
@@ -8,6 +8,26 @@
8
8
  }
9
9
 
10
10
  .ui-footer-link {
11
- @apply text-gui-default hover:text-gui-hover hover:underline text-menu3 font-light;
11
+ @apply text-gui-default hover:text-gui-hover text-menu3 font-light;
12
+ }
13
+
14
+ .ui-footer-compliance-text {
15
+ font-size: 12px;
16
+ }
17
+
18
+ .ui-footer-tick-icon {
19
+ min-width: 1.5rem;
20
+ }
21
+
22
+ @media (max-width: 1040px) {
23
+ .ui-footer-bottom-links {
24
+ @apply pb-40;
25
+ }
26
+ }
27
+
28
+ @media screen {
29
+ .ui-footer-glassdoor {
30
+ display: none;
31
+ }
12
32
  }
13
33
  }
@@ -1,20 +1,18 @@
1
1
  <footer class="bg-light-grey font-sans antialiased" data-id="footer">
2
- <div class="max-w-screen-xl mx-auto py-32 sm:py-40 lg:py-64 ui-grid-gap ui-grid-px grid grid-cols-6">
2
+ <div class="max-w-screen-xl mx-auto py-32 sm:py-40 md:py-64 ui-grid-gap ui-grid-px grid grid-cols-6">
3
3
  <div class="col-span-full md:col-span-2">
4
4
  <div class="flex flex-row p-menu-row-snug">
5
5
  <%= image_tag(ably_stack_path, alt: "Ably homepage", class: "mr-24 -mt-16") %>
6
6
  <h2 class="text-overline2 col-span-full font-medium uppercase tracking-widen-0.1">The Ably Platform</h2>
7
7
  </div>
8
-
9
- <div class="grid grid-cols-4">
10
- <p class="text-p3 py-16 font-medium p-menu-row-snug col-span-3">
8
+ <div class="md:col-span-4 md:w-3/4 xs:w-3/5 w-full">
9
+ <p class="text-p3 py-16 font-medium p-menu-row-snug">
11
10
  Easily power any realtime experience in your application via a simple API that handles everything realtime.
12
11
  </p>
13
12
  </div>
14
-
15
- <ul class="grid gap-x-8 sm:gap-x-16 md:gap-x-24 xl:gap-x-32 sm:grid-cols-2 md:grid-cols-1">
13
+ <ul class="grid grid-cols-1">
16
14
  <li class="p-menu-row-snug">
17
- <%= link_to 'Pub/sub messaging', abs_url("/pub-sub-messaging"), class: "ui-footer-menu-row-link" %>
15
+ <%= link_to 'Pub/sub messaging', abs_url("/solutions/channels"), class: "ui-footer-menu-row-link" %>
18
16
  </li>
19
17
  <li class="p-menu-row-snug">
20
18
  <%= link_to 'Push notifications', abs_url("/push-notifications"), class: "ui-footer-menu-row-link" %>
@@ -25,13 +23,9 @@
25
23
  <li class="p-menu-row-snug">
26
24
  <%= link_to 'Multiple protocol messaging', abs_url("/protocols"), class: "ui-footer-menu-row-link" %>
27
25
  </li>
28
- <li class="p-menu-row-snug">
29
- <%= link_to 'Streaming data sources', abs_url("/hub"), class: "ui-footer-menu-row-link" %>
30
- </li>
31
26
  </ul>
32
27
  </div>
33
-
34
- <div class="col-span-full sm:col-span-3 md:col-span-1">
28
+ <div class="col-span-full xs:col-span-3 md:col-span-1">
35
29
  <h2 class="ui-footer-col-title">Ably is for</h2>
36
30
  <ul>
37
31
  <li class="p-menu-row-snug">
@@ -52,9 +46,6 @@
52
46
  <li class="p-menu-row-snug">
53
47
  <%= link_to 'Healthcare', abs_url("/solutions/healthcare"), class: "ui-footer-menu-row-link" %>
54
48
  </li>
55
- <li class="p-menu-row-snug">
56
- <%= link_to 'Streaming data sources', abs_url("/hub"), class: "ui-footer-menu-row-link" %>
57
- </li>
58
49
  <li class="p-menu-row-snug">
59
50
  <%= link_to 'eCommerce & Retail', abs_url("/solutions/ecommerce-and-retail"), class: "ui-footer-menu-row-link" %>
60
51
  </li>
@@ -69,8 +60,7 @@
69
60
  </li>
70
61
  </ul>
71
62
  </div>
72
-
73
- <div class="col-span-full sm:col-span-3 md:col-span-1">
63
+ <div class="col-span-full xs:col-span-3 md:col-span-1">
74
64
  <h2 class="ui-footer-col-title">Developers</h2>
75
65
  <ul>
76
66
  <li class="p-menu-row-snug">
@@ -91,14 +81,13 @@
91
81
  <li class="p-menu-row-snug">
92
82
  <%= link_to 'SDKs', abs_url("/download"), class: "ui-footer-menu-row-link" %>
93
83
  </li>
94
- <li class="p-menu-row-snug flex items-center">
84
+ <li class="p-menu-row-snug flex items-center -mt-4">
95
85
  <a class="pr-8 ui-footer-menu-row-link" href="https://status.ably.com/">System status</a>
96
- <iframe class="w-24 h-24 mt-4" src="https://status.ably.com/embed/icon" allowtransparency="true" frameborder="0" scrolling="no"></iframe>
86
+ <iframe class="w-20 h-20 mb-2" src="https://status.ably.com/embed/icon" allowtransparency="true" frameborder="0" scrolling="no"></iframe>
97
87
  </li>
98
88
  </ul>
99
89
  </div>
100
-
101
- <div class="col-span-full sm:col-span-3 md:col-span-1">
90
+ <div class="col-span-full xs:col-span-3 md:col-span-1">
102
91
  <h2 class="ui-footer-col-title">WHY ABLY</h2>
103
92
  <ul>
104
93
  <li class="p-menu-row-snug">
@@ -121,8 +110,7 @@
121
110
  </li>
122
111
  </ul>
123
112
  </div>
124
-
125
- <div class="col-span-full sm:col-span-3 md:col-span-1">
113
+ <div class="col-span-full xs:col-span-3 md:col-span-1">
126
114
  <h2 class="ui-footer-col-title">ABOUT</h2>
127
115
  <ul>
128
116
  <li class="p-menu-row-snug">
@@ -141,7 +129,7 @@
141
129
  <%= link_to 'Open protocol policy', abs_url("/open-policy"), class: "ui-footer-menu-row-link" %>
142
130
  </li>
143
131
  <li class="p-menu-row-snug">
144
- <%= link_to 'Press & Media', abs_url("/press-center"), class: "ui-footer-menu-row-link" %>
132
+ <%= link_to 'Press & Media', abs_url("/press-center"), class: "ui-footer-menu-row-link" %>
145
133
  </li>
146
134
  <li class="p-menu-row-snug">
147
135
  <%= link_to 'Contact us', abs_url("/contact"), class: "ui-footer-menu-row-link" %>
@@ -149,51 +137,120 @@
149
137
  </ul>
150
138
  </div>
151
139
  </div>
152
-
153
140
  <div class="max-w-screen-xl ui-grid-px mx-auto">
154
- <hr class="border-t border-mid-grey" />
141
+ <hr class="border-t border-mid-grey my-0"/>
155
142
  </div>
156
-
157
- <div class="max-w-screen-xl mx-auto py-24 md:py-40 lg:py-32 grid ui-grid-gap ui-grid-px grid-cols-2">
158
- <div class="flex flex-col flex-auto pb-40 ml-8 col-span-full md:col-span-1">
159
- <div class="inline-flex">
160
- <%= link_to 'Cookies', abs_url("/privacy"), class: "ui-footer-link pr-24" %>
161
- <%= link_to 'Legals', abs_url("/legals"), class: "ui-footer-link pr-24" %>
162
- <%= link_to 'Data Protection', abs_url("/data-protection"), class: "ui-footer-link pr-24" %>
163
- <%= link_to 'Privacy', abs_url("/privacy"), class: "ui-footer-link" %>
143
+ <%# Twitter + Glassdoor SM * above + Glassdoor XS + Badges %>
144
+ <div class="max-w-screen-xl mx-auto py-16 grid ui-grid-gap ui-grid-px sm:grid-cols-2">
145
+ <div class="md:flex md:items-center">
146
+ <div class="flex flex-col md:flex-row flex-auto ml-8 sm:col-span-1 md:col-span-2">
147
+ <div class="">
148
+ <div class="flex pb-24">
149
+ <a class="h-24 pr-24 text-cool-black hover:text-icon-twitter" href="https://twitter.com/ablyrealtime" title="Ably on X">
150
+ <%= render(AblyUi::Core::Icon.new(name: "icon-social-x", size: "1.5rem")) %>
151
+ </a>
152
+ <a
153
+ class="h-24 pr-24 text-cool-black hover:text-icon-linkedin"
154
+ href="https://www.linkedin.com/company/ably-realtime"
155
+ title="Ably on LinkedIn"
156
+ >
157
+ <%= render(AblyUi::Core::Icon.new(name: "linkedin", size: "1.5rem")) %>
158
+ </a>
159
+ <a class="h-24 pr-24 text-cool-black hover:text-icon-github" href="https://github.com/ably/" title="Ably on Github">
160
+ <%= render(AblyUi::Core::Icon.new(name: "github", size: "1.5rem")) %>
161
+ </a>
162
+ <a class="h-24 pr-24 text-cool-black hover:text-icon-discord" href="https://discord.gg/jwBPhEZ9g5" title="Ably on Discord">
163
+ <%= render(AblyUi::Core::Icon.new(name: "discord", size: "1.5rem")) %>
164
+ </a>
165
+ </div>
166
+ </div>
167
+ <%# GLASSDOOR on SM and Above %>
168
+ <div class="xs:hidden sm:block ui-footer-glassdoor">
169
+ <div class="flex sm:pt-24 md:pt-0 sm:border-t sm:border-l-0 md:border-t-0 md:border-l sm:border-mid-grey sm:w-3/4 md:w-full md:pl-24">
170
+ <a
171
+ href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm"
172
+ class="h-24 text-cool-black hover:text-icon-glassdoor"
173
+ title="Ably reviews on glassdoor"
174
+ >
175
+ <%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
176
+ </a>
177
+ <div class="pl-16 text-menu3 font-light">
178
+ <strong class="block font-medium">We&apos;re hiring!</strong>
179
+ <a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">
180
+ Learn more at Glassdoor
181
+ </a>
182
+ </div>
183
+ </div>
184
+ </div>
164
185
  </div>
165
-
166
- <div class="pt-32 flex items-center">
167
- <a class="h-24 pr-24 text-cool-black hover:text-icon-twitter" href="https://twitter.com/ablyrealtime">
168
- <%= render(AblyUi::Core::Icon.new(name: "twitter", size: "1.5rem")) %>
169
- </a>
170
- <a class="h-24 pr-24 text-cool-black hover:text-icon-linkedin" href="https://www.linkedin.com/company/ably-realtime">
171
- <%= render(AblyUi::Core::Icon.new(name: "linkedin", size: "1.5rem")) %>
172
- </a>
173
- <a class="h-24 pr-24 text-cool-black hover:text-icon-github" href="https://github.com/ably/">
174
- <%= render(AblyUi::Core::Icon.new(name: "github", size: "1.5rem")) %>
175
- </a>
176
- <a class="h-24 pr-24 text-cool-black hover:text-icon-discord" href="https://discord.gg/jwBPhEZ9g5">
177
- <%= render(AblyUi::Core::Icon.new(name: "discord", size: "1.5rem")) %>
178
- </a>
179
- <div class="border-l border-mid-grey h-40"></div>
180
- <a
181
- class="flex flex-row pl-24 text-cool-black hover:text-icon-glassdoor"
182
- href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm"
183
- >
184
- <%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
185
- </a>
186
- <div class="pl-16 text-menu3 font-light">
187
- <strong class="block font-medium">We&apos;re hiring!</strong>
188
- <a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">Learn more</a>
189
- at Glassdoor
186
+ <%# GlassDoor on XS ONLY %>
187
+ <div class="xs:block sm:hidden">
188
+ <div class="border-t border-mid-grey w-full"></div>
189
+ <div class="flex py-24">
190
+ <a
191
+ class="h-24 pr-16 text-cool-black hover:text-icon-glassdoor"
192
+ href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm"
193
+ title="Ably reviews on glassdoor"
194
+ >
195
+ <%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
196
+ </a>
197
+ <div class="text-menu3 font-light">
198
+ <strong class="block font-medium">We&apos;re hiring!</strong>
199
+ <a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">
200
+ Learn more at Glassdoor
201
+ </a>
202
+ </div>
190
203
  </div>
191
204
  </div>
192
205
  </div>
193
-
194
- <div class="md:text-right col-span-full md:col-span-1 ml-8 inline-flex md:ml-auto">
195
- <%= image_tag(rocket_list, alt: "Rocket List 2021", class: "mr-24 w-96 h-96") %>
196
- <%= image_tag(flexible_companies, alt: "Flexible Companies 2021", class: "w-96 h-96") %>
206
+ <div class="col-span-full sm:col-span-1 inline-flex sm:ml-auto sm:items-center">
207
+ <%= image_tag(highest_user_adoption, alt: "Highest User Adoption 2023", class: "mr-24 h-80") %>
208
+ <%= image_tag(best_support, alt: "Best Support 2023", class: "mr-24 h-80") %>
209
+ <%= image_tag(fastest_implementation, alt: "Fastest Implementation 2023", class: "mr-24 h-80") %>
210
+ <%= image_tag(highest_performer, alt: "High Performer 2023", class: "mr-24 h-80") %>
211
+ </div>
212
+ </div>
213
+ <div class="max-w-screen-xl ui-grid-px mx-auto">
214
+ <hr class="border-t border-mid-grey my-0"/>
215
+ </div>
216
+ <div class="max-w-screen-xl mx-auto py-24 sm:py-40 md:py-32 md:grid md:grid-cols-2 ui-grid-gap ui-grid-px">
217
+ <div class="flex ml-8 col-span-full sm:col-span-1 md:pb-16 items-center ui-footer-bottom-links">
218
+ <div class="flex">
219
+ <%= link_to 'Cookies', abs_url("/privacy"), class: "pr-24 ui-footer-link" %>
220
+ <%= link_to 'Legals', abs_url("/legals"), class: "pr-24 ui-footer-link" %>
221
+ <%= link_to 'Data Protection', abs_url("/data-protection"), class: "pr-24 ui-footer-link" %>
222
+ <%= link_to 'Privacy', abs_url("/privacy"), class: "ui-footer-link" %>
223
+ </div>
224
+ </div>
225
+ <div class="xs:grid xs:grid-cols-2 sm:grid-cols-4 xs:pl-16 sm:pl-8 md:justify-items-end">
226
+ <div class="flex mr-24">
227
+ <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12 ui-footer-tick-icon")) %>
228
+ <div>
229
+ <p class="ui-footer-compliance-text font-medium whitespace-nowrap">SOC 2 Type 2</p>
230
+ <p class="ui-footer-compliance-text font-light mb-24">Certified</p>
231
+ </div>
232
+ </div>
233
+ <div class="flex mr-24 md:col-start-2">
234
+ <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12 ui-footer-tick-icon")) %>
235
+ <div>
236
+ <p class="ui-footer-compliance-text font-medium whitespace-nowrap">HIPAA</p>
237
+ <p class="ui-footer-compliance-text font-light mb-24">Compliant</p>
238
+ </div>
239
+ </div>
240
+ <div class="flex mr-24 md:col-start-3">
241
+ <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12 ui-footer-tick-icon")) %>
242
+ <div>
243
+ <p class="ui-footer-compliance-text font-medium whitespace-nowrap">EU GDPR</p>
244
+ <p class="ui-footer-compliance-text font-light mb-24">Certified</p>
245
+ </div>
246
+ </div>
247
+ <div class="flex mr-24 md:col-start-4">
248
+ <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", color: "text-active-orange", size: "1.5rem", additional_css:"bg-white rounded-full mr-12 ui-footer-tick-icon")) %>
249
+ <div>
250
+ <p class="ui-footer-compliance-text font-medium whitespace-nowrap">256-bit AES</p>
251
+ <p class="ui-footer-compliance-text font-light mb-24">Encryption</p>
252
+ </div>
253
+ </div>
197
254
  </div>
198
255
  </div>
199
256
  </footer>