@ably/ui 8.1.2 → 8.2.1-dev.f35b482
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.
- package/core/.DS_Store +0 -0
- package/core/Meganav/component.css +7 -1
- package/core/Meganav/component.js +1 -1
- package/core/Meganav/component.json +4 -4
- package/core/Meganav.jsx +510 -360
- package/core/MeganavBlogPostsList/component.js +1 -1
- package/core/MeganavBlogPostsList.jsx +5 -3
- package/core/MeganavContentCompany/component.js +1 -0
- package/core/MeganavContentCompany.jsx +1513 -0
- package/core/MeganavContentDevelopers.jsx +80 -102
- package/core/MeganavContentPlatform.jsx +51 -31
- package/core/MeganavContentUseCases.jsx +128 -36
- package/core/MeganavContentWhyAbly/component.js +6 -1
- package/core/MeganavContentWhyAbly.jsx +3 -1468
- package/core/MeganavControlMobilePanelClose.jsx +7 -4
- package/core/MeganavItemsDesktop.jsx +6 -2
- package/core/MeganavItemsMobile.jsx +11 -6
- package/core/MeganavSearchSuggestions/component.js +1 -1
- package/core/Notice/component.js +1 -1
- package/core/fonts/.DS_Store +0 -0
- package/core/images/.DS_Store +0 -0
- package/core/images/icon-tech-aws.svg +4 -0
- package/core/scripts.js +1 -1
- package/core/sprites.svg +141 -0
- package/core/styles.css +4 -0
- package/package.json +1 -1
- package/{src/core/MeganavContentWhyAbly/component.js → preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/log/.keep} +0 -0
- package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/tmp/.keep +0 -0
- package/preview/vendor/bundle/ruby/3.0.0/bundler/gems/ably-ui-abffd210ec0f/preview/tmp/pids/.keep +0 -0
- package/src/.DS_Store +0 -0
- package/src/core/.DS_Store +0 -0
- package/src/core/Meganav/component.css +7 -1
- package/src/core/Meganav/component.json +4 -4
- package/src/core/Meganav/component.jsx +2 -2
- package/src/core/Meganav/component.rb +8 -4
- package/src/core/MeganavBlogPostsList/component.html.erb +3 -3
- package/src/core/MeganavBlogPostsList/component.js +2 -2
- package/src/core/MeganavBlogPostsList/component.jsx +3 -3
- package/src/core/MeganavContentCompany/component.html.erb +81 -0
- package/src/core/MeganavContentCompany/component.js +0 -0
- package/src/core/MeganavContentCompany/component.jsx +108 -0
- package/src/core/{MeganavContentWhyAbly → MeganavContentCompany}/component.rb +2 -1
- package/src/core/MeganavContentDevelopers/component.html.erb +101 -80
- package/src/core/MeganavContentDevelopers/component.jsx +102 -83
- package/src/core/MeganavContentPlatform/component.html.erb +95 -85
- package/src/core/MeganavContentPlatform/component.jsx +99 -92
- package/src/core/MeganavContentUseCases/component.html.erb +112 -83
- package/src/core/MeganavContentUseCases/component.jsx +114 -87
- package/src/core/MeganavControlMobilePanelClose/component.html.erb +4 -2
- package/src/core/MeganavControlMobilePanelClose/component.jsx +3 -2
- package/src/core/MeganavControlMobilePanelClose/component.rb +4 -1
- package/src/core/MeganavItemsDesktop/component.html.erb +2 -1
- package/src/core/MeganavItemsDesktop/component.jsx +2 -1
- package/src/core/MeganavItemsMobile/component.html.erb +1 -1
- package/src/core/MeganavItemsMobile/component.jsx +2 -1
- package/src/core/MeganavItemsMobile/component.rb +4 -0
- package/src/core/MeganavSearchSuggestions/component.js +15 -5
- package/src/core/core.rb +4 -0
- package/src/core/fonts/.DS_Store +0 -0
- package/src/core/icons/icon-display-about-ably-col.svg +4 -0
- package/src/core/icons/icon-display-careers-col.svg +9 -0
- package/src/core/icons/icon-display-case-studies-col.svg +5 -0
- package/src/core/icons/icon-display-chat-stack-col.svg +4 -0
- package/src/core/icons/icon-display-chat-stack.svg +4 -0
- package/src/core/icons/icon-display-compare-tech-col.svg +9 -0
- package/src/core/icons/icon-display-customers-col.svg +15 -0
- package/src/core/icons/icon-display-docs-col.svg +7 -0
- package/src/core/icons/icon-display-lightbulb-col.svg +10 -0
- package/src/core/icons/icon-display-quickstart-guides-col.svg +8 -0
- package/src/core/icons/icon-display-resources-col.svg +21 -0
- package/src/core/icons/icon-display-sdks-col.svg +11 -0
- package/src/core/icons/icon-display-tutorials-demos-col.svg +25 -0
- package/src/core/icons/icon-display-virtual-events-col.svg +12 -0
- package/src/core/icons/icon-display-virtual-events.svg +12 -0
- package/src/core/images/.DS_Store +0 -0
- package/src/core/images/icon-tech-aws.svg +4 -0
- package/src/core/styles/layout.css +4 -0
- package/src/reset/.DS_Store +0 -0
- package/core/images/blog-thumb1.jpg +0 -0
- package/core/images/blog-thumb2.jpg +0 -0
- package/core/images/blog-thumb3.jpg +0 -0
- package/src/core/MeganavContentWhyAbly/component.html.erb +0 -70
- package/src/core/MeganavContentWhyAbly/component.jsx +0 -95
- package/src/core/images/blog-thumb1.jpg +0 -0
- package/src/core/images/blog-thumb2.jpg +0 -0
- package/src/core/images/blog-thumb3.jpg +0 -0
|
@@ -1,84 +1,113 @@
|
|
|
1
|
-
<
|
|
2
|
-
<div>
|
|
3
|
-
|
|
4
|
-
<
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<li>
|
|
30
|
-
<%= link_to abs_url("/solutions/gaming"), class: "ui-meganav-media group" do %>
|
|
31
|
-
<p class="ui-meganav-media-heading">Gaming</p>
|
|
32
|
-
<p class="ui-meganav-media-copy">Power interactive gaming experiences that are wicked fast and utterly reliable.</p>
|
|
33
|
-
<% end %>
|
|
34
|
-
</li>
|
|
35
|
-
<li>
|
|
36
|
-
<%= link_to abs_url("/solutions/automotive-logistics-and-mobility"), class: "ui-meganav-media group" do %>
|
|
37
|
-
<p class="ui-meganav-media-heading">Automotive, Logistics, & Mobility</p>
|
|
38
|
-
<p class="ui-meganav-media-copy">Power asset tracking, live transit updates, race-critical diagnostics, and more.</p>
|
|
39
|
-
<% end %>
|
|
40
|
-
</li>
|
|
41
|
-
</ul>
|
|
42
|
-
</div>
|
|
1
|
+
<div class="flex">
|
|
2
|
+
<div class="ui-meganav-content-spacer bg-extra-light-grey"></div>
|
|
3
|
+
<section class="grid grid-cols-12 ui-grid-gap-x w-full">
|
|
4
|
+
<div class="col-span-full md:col-span-4 bg-extra-light-grey py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24">
|
|
5
|
+
<h3 class="ui-meganav-overline" id="meganav-use-cases-panel-use-cases">
|
|
6
|
+
Use cases
|
|
7
|
+
</h3>
|
|
8
|
+
<ul aria-labelledby="meganav-use-cases-panel-industry-use-cases">
|
|
9
|
+
<li>
|
|
10
|
+
<%= link_to abs_url("/solutions/chat"), class: "ui-meganav-media-with-image group" do %>
|
|
11
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-chat-stack-col", size: "2.5rem")) %>
|
|
12
|
+
<div class="flex flex-col justify-center">
|
|
13
|
+
<p class="ui-meganav-media-heading">Chat</p>
|
|
14
|
+
<p class="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale. </p>
|
|
15
|
+
</div>
|
|
16
|
+
<% end %>
|
|
17
|
+
</li>
|
|
18
|
+
<li>
|
|
19
|
+
<%= link_to abs_url("/solutions/virtual-events"), class: "ui-meganav-media-with-image group" do %>
|
|
20
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-virtual-events-col", size: "2.5rem")) %>
|
|
21
|
+
<div class="flex flex-col justify-center">
|
|
22
|
+
<p class="ui-meganav-media-heading">Virtual Events</p>
|
|
23
|
+
<p class="ui-meganav-media-copy">Power engaging virtual events with realtime features.</p>
|
|
24
|
+
</div>
|
|
25
|
+
<% end %>
|
|
26
|
+
</li>
|
|
27
|
+
</ul>
|
|
28
|
+
</div>
|
|
43
29
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
</
|
|
30
|
+
<div class="col-span-full md:col-span-4 pt-24 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
|
|
31
|
+
<h3 class="ui-meganav-overline" id="meganav-use-cases-panel-industry">
|
|
32
|
+
Industry
|
|
33
|
+
</h3>
|
|
34
|
+
<ul aria-labelledby="meganav-use-cases-panel-industry">
|
|
35
|
+
<li>
|
|
36
|
+
<%= link_to abs_url("/solutions/edtech"), class: "ui-meganav-media group" do %>
|
|
37
|
+
<p class="ui-meganav-media-heading">EdTech</p>
|
|
38
|
+
<p class="ui-meganav-media-copy">Deliver interactive learning experiences.</p>
|
|
39
|
+
<% end %>
|
|
40
|
+
</li>
|
|
41
|
+
<li>
|
|
42
|
+
<%= link_to abs_url("/solutions/fintech"), class: "ui-meganav-media group" do %>
|
|
43
|
+
<p class="ui-meganav-media-heading">Fintech</p>
|
|
44
|
+
<p class="ui-meganav-media-copy">Deliver personalised financial data in realtime.</p>
|
|
45
|
+
<% end %>
|
|
46
|
+
</li>
|
|
47
|
+
<li>
|
|
48
|
+
<%= link_to abs_url("/solutions/automotive-logistics-and-mobility"), class: "ui-meganav-media group" do %>
|
|
49
|
+
<p class="ui-meganav-media-heading">Automotive, Logistics, & Mobility</p>
|
|
50
|
+
<p class="ui-meganav-media-copy">Power diagnostics, order tracking and more.</p>
|
|
51
|
+
<% end %>
|
|
52
|
+
</li>
|
|
53
|
+
<li>
|
|
54
|
+
<%= link_to abs_url("/solutions/b2b-platforms"), class: "ui-meganav-media group" do %>
|
|
55
|
+
<p class="ui-meganav-media-heading">B2B Platforms</p>
|
|
56
|
+
<p class="ui-meganav-media-copy">Empower your customers with realtime solutions.</p>
|
|
57
|
+
<% end %>
|
|
58
|
+
</li>
|
|
59
|
+
<li>
|
|
60
|
+
<%= link_to abs_url("/solutions/healthcare"), class: "ui-meganav-media group" do %>
|
|
61
|
+
<p class="ui-meganav-media-heading">Healthcare (HIPAA)</p>
|
|
62
|
+
<p class="ui-meganav-media-copy">Provide trustworthy, HIPAA-compliant realtime apps.</p>
|
|
63
|
+
<% end %>
|
|
64
|
+
</li>
|
|
65
|
+
<li>
|
|
66
|
+
<%= link_to abs_url("/solutions/ecommerce-and-retail"), class: "ui-meganav-media group" do %>
|
|
67
|
+
<p class="ui-meganav-media-heading">eCommerce & Retail</p>
|
|
68
|
+
<p class="ui-meganav-media-copy">Enrich customer experiences with realtime updates.</p>
|
|
69
|
+
<% end %>
|
|
70
|
+
</li>
|
|
71
|
+
<li>
|
|
72
|
+
<%= link_to abs_url("/solutions/sports-and-media"), class: "ui-meganav-media group" do %>
|
|
73
|
+
<p class="ui-meganav-media-heading">Sports, Media & Audience Engagement</p>
|
|
74
|
+
<p class="ui-meganav-media-copy">Deliver engaging global realtime experiences.</p>
|
|
75
|
+
<% end %>
|
|
76
|
+
</li>
|
|
77
|
+
<li>
|
|
78
|
+
<%= link_to abs_url("/solutions/gaming"), class: "ui-meganav-media group" do %>
|
|
79
|
+
<p class="ui-meganav-media-heading">Gaming</p>
|
|
80
|
+
<p class="ui-meganav-media-copy">Power ultra fast and reliable gaming experiences.</p>
|
|
81
|
+
<% end %>
|
|
82
|
+
</li>
|
|
83
|
+
<li>
|
|
84
|
+
<%= link_to abs_url("/solutions/iot-and-connected-devices"), class: "ui-meganav-media group" do %>
|
|
85
|
+
<p class="ui-meganav-media-heading">IoT & Connected Devices</p>
|
|
86
|
+
<p class="ui-meganav-media-copy">Monitor and control global IoT deployments in realtime.</p>
|
|
87
|
+
<% end %>
|
|
88
|
+
</li>
|
|
89
|
+
</ul>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<div class="col-span-full md:col-span-4 pt-8 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
|
|
93
|
+
<h3 class="ui-meganav-overline" id="meganav-use-cases-panel-solutions">
|
|
94
|
+
Solutions
|
|
95
|
+
</h3>
|
|
96
|
+
<ul aria-labelledby="meganav-use-cases-panel-solutions">
|
|
97
|
+
<li>
|
|
98
|
+
<%= link_to abs_url("/solutions/extend-kafka-to-the-edge"), class: "ui-meganav-media group" do %>
|
|
99
|
+
<p class="ui-meganav-media-heading">Extend Kafka to the edge</p>
|
|
100
|
+
<p class="ui-meganav-media-copy">Reliably expand Kafka’s event streaming beyond your private network.</p>
|
|
101
|
+
<% end %>
|
|
102
|
+
</li>
|
|
103
|
+
<li>
|
|
104
|
+
<%= link_to abs_url("/solutions/asset-tracking"), class: "ui-meganav-media group" do %>
|
|
105
|
+
<p class="ui-meganav-media-heading">Asset Tracking</p>
|
|
106
|
+
<p class="ui-meganav-media-copy">Track assets in realtime with a solution optimised for last mile logistics.</p>
|
|
107
|
+
<% end %>
|
|
108
|
+
</li>
|
|
109
|
+
</ul>
|
|
110
|
+
</div>
|
|
111
|
+
</section>
|
|
112
|
+
<div class="ui-meganav-content-spacer"></div>
|
|
113
|
+
</div>
|
|
@@ -1,95 +1,122 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import T from "prop-types";
|
|
3
3
|
|
|
4
|
+
import Icon from "../Icon/component.jsx";
|
|
5
|
+
|
|
4
6
|
const MeganavContentUseCases = ({ absUrl }) => (
|
|
5
|
-
<
|
|
6
|
-
<div>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
</
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
7
|
+
<div className="flex">
|
|
8
|
+
<div className="ui-meganav-content-spacer bg-extra-light-grey"></div>
|
|
9
|
+
<section className="grid grid-cols-12 ui-grid-gap-x w-full">
|
|
10
|
+
<div className="col-span-full md:col-span-4 bg-extra-light-grey py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24">
|
|
11
|
+
<h3 className="ui-meganav-overline" id="meganav-use-cases-panel-use-cases">
|
|
12
|
+
Use cases
|
|
13
|
+
</h3>
|
|
14
|
+
<ul aria-labelledby="meganav-use-cases-panel-industry-use-cases">
|
|
15
|
+
<li>
|
|
16
|
+
<a href={absUrl("/solutions/chat")} className="ui-meganav-media-with-image group">
|
|
17
|
+
<Icon name="icon-display-chat-stack-col" size="2.5rem" />
|
|
18
|
+
<div className="flex flex-col justify-center">
|
|
19
|
+
<p className="ui-meganav-media-heading">Chat</p>
|
|
20
|
+
<p className="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale. </p>
|
|
21
|
+
</div>
|
|
22
|
+
</a>
|
|
23
|
+
</li>
|
|
24
|
+
<li>
|
|
25
|
+
<a href={absUrl("/solutions/virtual-events")} className="ui-meganav-media-with-image group">
|
|
26
|
+
<Icon name="icon-display-virtual-events-col" size="2.5rem" />
|
|
27
|
+
<div className="flex flex-col justify-center">
|
|
28
|
+
<p className="ui-meganav-media-heading">Virtual Events</p>
|
|
29
|
+
<p className="ui-meganav-media-copy">Power engaging virtual events with realtime features.</p>
|
|
30
|
+
</div>
|
|
31
|
+
</a>
|
|
32
|
+
</li>
|
|
33
|
+
</ul>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div className="col-span-full md:col-span-4 pt-24 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
|
|
37
|
+
<h3 className="ui-meganav-overline" id="meganav-use-cases-panel-industry">
|
|
38
|
+
Industry
|
|
39
|
+
</h3>
|
|
40
|
+
<ul aria-labelledby="meganav-use-cases-panel-industry">
|
|
41
|
+
<li>
|
|
42
|
+
<a href={absUrl("/solutions/edtech")} className="ui-meganav-media group">
|
|
43
|
+
<p className="ui-meganav-media-heading">EdTech</p>
|
|
44
|
+
<p className="ui-meganav-media-copy">Deliver interactive learning experiences.</p>
|
|
45
|
+
</a>
|
|
46
|
+
</li>
|
|
47
|
+
<li>
|
|
48
|
+
<a href={absUrl("/solutions/fintech")} className="ui-meganav-media group">
|
|
49
|
+
<p className="ui-meganav-media-heading">Fintech</p>
|
|
50
|
+
<p className="ui-meganav-media-copy">Deliver personalised financial data in realtime.</p>
|
|
51
|
+
</a>
|
|
52
|
+
</li>
|
|
53
|
+
<li>
|
|
54
|
+
<a href={absUrl("/solutions/automotive-logistics-and-mobility")} className="ui-meganav-media group">
|
|
55
|
+
<p className="ui-meganav-media-heading">Automotive, Logistics, & Mobility</p>
|
|
56
|
+
<p className="ui-meganav-media-copy">Power diagnostics, order tracking and more.</p>
|
|
57
|
+
</a>
|
|
58
|
+
</li>
|
|
59
|
+
<li>
|
|
60
|
+
<a href={absUrl("/solutions/b2b-platforms")} className="ui-meganav-media group">
|
|
61
|
+
<p className="ui-meganav-media-heading">B2B Platforms</p>
|
|
62
|
+
<p className="ui-meganav-media-copy">Empower your customers with realtime solutions.</p>
|
|
63
|
+
</a>
|
|
64
|
+
</li>
|
|
65
|
+
<li>
|
|
66
|
+
<a href={absUrl("/solutions/healthcare")} className="ui-meganav-media group">
|
|
67
|
+
<p className="ui-meganav-media-heading">Healthcare (HIPAA)</p>
|
|
68
|
+
<p className="ui-meganav-media-copy">Provide trustworthy, HIPAA-compliant realtime apps.</p>
|
|
69
|
+
</a>
|
|
70
|
+
</li>
|
|
71
|
+
<li>
|
|
72
|
+
<a href={absUrl("/solutions/ecommerce-and-retail")} className="ui-meganav-media group">
|
|
73
|
+
<p className="ui-meganav-media-heading">eCommerce & Retail</p>
|
|
74
|
+
<p className="ui-meganav-media-copy">Enrich customer experiences with realtime updates.</p>
|
|
75
|
+
</a>
|
|
76
|
+
</li>
|
|
77
|
+
<li>
|
|
78
|
+
<a href={absUrl("/solutions/sports-and-media")} className="ui-meganav-media group">
|
|
79
|
+
<p className="ui-meganav-media-heading">Sports, Media & Audience Engagement</p>
|
|
80
|
+
<p className="ui-meganav-media-copy">Deliver engaging global realtime experiences.</p>
|
|
81
|
+
</a>
|
|
82
|
+
</li>
|
|
83
|
+
<li>
|
|
84
|
+
<a href={absUrl("/solutions/gaming")} className="ui-meganav-media group">
|
|
85
|
+
<p className="ui-meganav-media-heading">Gaming</p>
|
|
86
|
+
<p className="ui-meganav-media-copy">Power ultra fast and reliable gaming experiences.</p>
|
|
87
|
+
</a>
|
|
88
|
+
</li>
|
|
89
|
+
<li>
|
|
90
|
+
<a href={absUrl("/solutions/iot-and-connected-devices")} className="ui-meganav-media group">
|
|
91
|
+
<p className="ui-meganav-media-heading">IoT & Connected Devices</p>
|
|
92
|
+
<p className="ui-meganav-media-copy">Monitor and control global IoT deployments in realtime.</p>
|
|
93
|
+
</a>
|
|
94
|
+
</li>
|
|
95
|
+
</ul>
|
|
96
|
+
</div>
|
|
49
97
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<p className="ui-meganav-media-heading">IoT & Connected Devices</p>
|
|
73
|
-
<p className="ui-meganav-media-copy">Monitor and control global IoT deployments of any kind in realtime.</p>
|
|
74
|
-
</a>
|
|
75
|
-
</li>
|
|
76
|
-
<li>
|
|
77
|
-
<a href={absUrl("/solutions/asset-tracking")} className="ui-meganav-media group">
|
|
78
|
-
<p className="ui-meganav-media-heading">Asset Tracking</p>
|
|
79
|
-
<p className="ui-meganav-media-copy">
|
|
80
|
-
Track assets in realtime with a solution optimized for last mile logistics, food delivery applications, and urban mobility services.
|
|
81
|
-
</p>
|
|
82
|
-
</a>
|
|
83
|
-
</li>
|
|
84
|
-
<li>
|
|
85
|
-
<a href={absUrl("/solutions/extend-kafka-to-the-edge")} className="ui-meganav-media group">
|
|
86
|
-
<p className="ui-meganav-media-heading">Extend Kafka to the edge</p>
|
|
87
|
-
<p className="ui-meganav-media-copy">Enhance and reliably expand Kafka's event streaming capabilities beyond your private network.</p>
|
|
88
|
-
</a>
|
|
89
|
-
</li>
|
|
90
|
-
</ul>
|
|
91
|
-
</div>
|
|
92
|
-
</section>
|
|
98
|
+
<div className="col-span-full md:col-span-4 pt-8 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
|
|
99
|
+
<h3 className="ui-meganav-overline" id="meganav-use-cases-panel-solutions">
|
|
100
|
+
Solutions
|
|
101
|
+
</h3>
|
|
102
|
+
<ul aria-labelledby="meganav-use-cases-panel-solutions">
|
|
103
|
+
<li>
|
|
104
|
+
<a href={absUrl("/solutions/extend-kafka-to-the-edge")} className="ui-meganav-media group">
|
|
105
|
+
<p className="ui-meganav-media-heading">Extend Kafka to the edge</p>
|
|
106
|
+
<p className="ui-meganav-media-copy">Reliably expand Kafka’s event streaming beyond your private network.</p>
|
|
107
|
+
</a>
|
|
108
|
+
</li>
|
|
109
|
+
<li>
|
|
110
|
+
<a href={absUrl("/solutions/asset-tracking")} className="ui-meganav-media group">
|
|
111
|
+
<p className="ui-meganav-media-heading">Asset Tracking</p>
|
|
112
|
+
<p className="ui-meganav-media-copy">Track assets in realtime with a solution optimised for last mile logistics.</p>
|
|
113
|
+
</a>
|
|
114
|
+
</li>
|
|
115
|
+
</ul>
|
|
116
|
+
</div>
|
|
117
|
+
</section>
|
|
118
|
+
<div className="ui-meganav-content-spacer"></div>
|
|
119
|
+
</div>
|
|
93
120
|
);
|
|
94
121
|
|
|
95
122
|
MeganavContentUseCases.propTypes = {
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
<%= button_tag(type: "button",
|
|
3
3
|
class: "ui-meganav-mobile-link text-gui-default mb-16",
|
|
4
4
|
data: { id: "meganav-control-mobile-panel-close" },
|
|
5
|
-
aria: { expanded: false, controls:
|
|
5
|
+
aria: { expanded: false, controls: aria_controls, label: "Hide panel" }) do -%>
|
|
6
6
|
<%= render(AblyUi::Core::Icon.new(name: "icon-gui-disclosure-arrow", size: "1.5rem", color: "text-cool-black", additional_css: "relative -top-1 transform rotate-180")) %>
|
|
7
7
|
Back
|
|
8
8
|
<% end %>
|
|
9
|
-
|
|
9
|
+
<% if display_hr %>
|
|
10
|
+
<hr class="ui-meganav-hr" />
|
|
11
|
+
<% end %>
|
|
10
12
|
</div>
|
|
@@ -3,7 +3,7 @@ import T from "prop-types";
|
|
|
3
3
|
|
|
4
4
|
import Icon from "../Icon/component.jsx";
|
|
5
5
|
|
|
6
|
-
const MeganavControlMobilePanelClose = ({ ariaControls }) => (
|
|
6
|
+
const MeganavControlMobilePanelClose = ({ ariaControls, displayHr = true }) => (
|
|
7
7
|
<div className="mx-24 md:mx-32">
|
|
8
8
|
<button
|
|
9
9
|
type="button"
|
|
@@ -16,12 +16,13 @@ const MeganavControlMobilePanelClose = ({ ariaControls }) => (
|
|
|
16
16
|
<Icon name="icon-gui-disclosure-arrow" color="text-cool-black" size="1.5rem" additionalCSS="relative -top-1 transform rotate-180" />
|
|
17
17
|
Back
|
|
18
18
|
</button>
|
|
19
|
-
<hr className="ui-meganav-hr" />
|
|
19
|
+
{displayHr ? <hr className="ui-meganav-hr" /> : null}
|
|
20
20
|
</div>
|
|
21
21
|
);
|
|
22
22
|
|
|
23
23
|
MeganavControlMobilePanelClose.propTypes = {
|
|
24
24
|
ariaControls: T.string,
|
|
25
|
+
displayHr: T.bool,
|
|
25
26
|
};
|
|
26
27
|
|
|
27
28
|
export default MeganavControlMobilePanelClose;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
module AblyUi
|
|
2
2
|
module Core
|
|
3
3
|
class MeganavControlMobilePanelClose < ViewComponent::Base
|
|
4
|
-
|
|
4
|
+
attr_reader :aria_controls, :display_hr
|
|
5
|
+
|
|
6
|
+
def initialize(aria_controls:, display_hr: true)
|
|
5
7
|
@aria_controls = aria_controls
|
|
8
|
+
@display_hr = display_hr
|
|
6
9
|
end
|
|
7
10
|
end
|
|
8
11
|
end
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
<% panels.each do |panel| %>
|
|
3
3
|
<li class="ui-meganav-item">
|
|
4
4
|
<%= render(AblyUi::Core::MeganavControl.new(aria_controls: panel[:id], theme_name: @theme_name)) do %>
|
|
5
|
-
|
|
5
|
+
<span class="hidden lg:inline"><%= panel[:label] %></span>
|
|
6
|
+
<span class="lg:hidden"><%= panel[:short_label] %></span>
|
|
6
7
|
<% end %>
|
|
7
8
|
|
|
8
9
|
<%= content_tag :div, class: 'ui-meganav-panel invisible', data: { id: "meganav-panel" }, id: panel[:id] do %>
|
|
@@ -12,7 +12,8 @@ const MeganavDesktopItems = ({ panels, paths, theme, absUrl }) => (
|
|
|
12
12
|
return (
|
|
13
13
|
<li className="ui-meganav-item" key={panel.id}>
|
|
14
14
|
<MeganavControl theme={theme} ariaControls={panel.id}>
|
|
15
|
-
{panel.label}
|
|
15
|
+
<span className="hidden lg:inline">{panel.label}</span>
|
|
16
|
+
<span className="lg:hidden">{panel.shortLabel}</span>
|
|
16
17
|
</MeganavControl>
|
|
17
18
|
|
|
18
19
|
<div className="ui-meganav-panel invisible" id={panel.id} data-id="meganav-panel">
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
<% end %>
|
|
49
49
|
|
|
50
50
|
<%= content_tag(:div, class: "ui-meganav-panel-mobile hidden", id: "#{panel[:id]}-mobile", data: { scroll_lock_scrollable: true }) do %>
|
|
51
|
-
<%= render(AblyUi::Core::MeganavControlMobilePanelClose.new(aria_controls: "#{panel[:id]}-mobile")) %>
|
|
51
|
+
<%= render(AblyUi::Core::MeganavControlMobilePanelClose.new(aria_controls: "#{panel[:id]}-mobile", display_hr: display_hr(panel[:id]))) %>
|
|
52
52
|
<%= render("AblyUi::Core::#{panel[:component]}".constantize.new(url_base: url_base)) %>
|
|
53
53
|
<% end %>
|
|
54
54
|
</li>
|
|
@@ -68,13 +68,14 @@ const MeganavItemsMobile = ({ panels, paths, sessionState, theme, loginLink, abs
|
|
|
68
68
|
<ul className="mb-16" data-id="meganav-mobile-panel-controls">
|
|
69
69
|
{MeganavData.panels.map((panel) => {
|
|
70
70
|
const PanelComponent = panels[panel.component];
|
|
71
|
+
const displayHr = ["company-panel", "developers-panel"].includes(panel.id);
|
|
71
72
|
|
|
72
73
|
return (
|
|
73
74
|
<li className="ui-meganav-mobile-item" key={`${panel.id}-mobile`}>
|
|
74
75
|
<MeganavControlMobilePanelOpen ariaControls={`${panel.id}-mobile`}>{panel.label}</MeganavControlMobilePanelOpen>
|
|
75
76
|
|
|
76
77
|
<div className="ui-meganav-panel-mobile hidden" id={`${panel.id}-mobile`} data-scroll-lock-scrollable>
|
|
77
|
-
<MeganavControlMobilePanelClose ariaControls={`${panel.id}-mobile`} />
|
|
78
|
+
<MeganavControlMobilePanelClose ariaControls={`${panel.id}-mobile`} displayHr={displayHr} />
|
|
78
79
|
<PanelComponent paths={paths} absUrl={absUrl} />
|
|
79
80
|
</div>
|
|
80
81
|
</li>
|
|
@@ -18,15 +18,16 @@ const getDistance = (e, touchStartX) =>
|
|
|
18
18
|
|
|
19
19
|
const withinBuffer = (distance) => Math.abs(distance) < DRAG_BUFFER;
|
|
20
20
|
|
|
21
|
+
const getItemsTotalWidth = (nodes) =>
|
|
22
|
+
nodes
|
|
23
|
+
.map((item) => item.getBoundingClientRect().width)
|
|
24
|
+
.reduce((acc, val) => acc + val, 0);
|
|
25
|
+
|
|
21
26
|
const MeganavSearchSuggestions = () => {
|
|
22
27
|
const suggestionsToggle = queryId("meganav-mobile-search-input");
|
|
23
28
|
const suggestions = queryId("meganav-mobile-search-suggestions");
|
|
24
29
|
const list = suggestions.querySelector("ul");
|
|
25
|
-
const listItems = list.querySelectorAll("li");
|
|
26
|
-
|
|
27
|
-
const itemsTotalWidth = Array.from(listItems)
|
|
28
|
-
.map((item) => item.getBoundingClientRect().width)
|
|
29
|
-
.reduce((acc, val) => acc + val, 0);
|
|
30
|
+
const listItems = Array.from(list.querySelectorAll("li"));
|
|
30
31
|
|
|
31
32
|
const dragLeft = (distance, threshold) => {
|
|
32
33
|
const currentTranslateX = getTranslateX(list);
|
|
@@ -50,6 +51,7 @@ const MeganavSearchSuggestions = () => {
|
|
|
50
51
|
const listWidth = list.getBoundingClientRect().width;
|
|
51
52
|
const currentTranslateX = getTranslateX(list);
|
|
52
53
|
const translateX = Math.round(currentTranslateX + distance);
|
|
54
|
+
const itemsTotalWidth = getItemsTotalWidth(listItems);
|
|
53
55
|
|
|
54
56
|
if (dragRightBoundary(translateX, itemsTotalWidth, listWidth, threshold)) {
|
|
55
57
|
return;
|
|
@@ -61,6 +63,7 @@ const MeganavSearchSuggestions = () => {
|
|
|
61
63
|
const dragRightEnd = (distance, threshold) => {
|
|
62
64
|
const listWidth = list.getBoundingClientRect().width;
|
|
63
65
|
const currentTranslateX = getTranslateX(list);
|
|
66
|
+
const itemsTotalWidth = getItemsTotalWidth(listItems);
|
|
64
67
|
let translateX = Math.round(currentTranslateX + distance);
|
|
65
68
|
|
|
66
69
|
if (dragRightBoundary(translateX, itemsTotalWidth, listWidth, threshold)) {
|
|
@@ -99,11 +102,18 @@ const MeganavSearchSuggestions = () => {
|
|
|
99
102
|
suggestions.classList.remove("max-h-96");
|
|
100
103
|
};
|
|
101
104
|
|
|
105
|
+
const wheelHandler = (e) => {
|
|
106
|
+
const distance = e.deltaY * 4;
|
|
107
|
+
if (withinBuffer(distance)) return;
|
|
108
|
+
distance > 0 ? dragLeftEnd(distance, 24) : dragRightEnd(distance, 48);
|
|
109
|
+
};
|
|
110
|
+
|
|
102
111
|
suggestionsToggle.addEventListener("focus", focusSuggestionsHandler);
|
|
103
112
|
suggestionsToggle.addEventListener("blur", blurSuggestionsHandler);
|
|
104
113
|
suggestions.addEventListener("touchstart", touchstartHandler);
|
|
105
114
|
suggestions.addEventListener("touchmove", touchmoveHandler);
|
|
106
115
|
suggestions.addEventListener("touchend", touchendHandler);
|
|
116
|
+
suggestions.addEventListener("wheel", wheelHandler);
|
|
107
117
|
|
|
108
118
|
return {
|
|
109
119
|
teardown: () => {
|
package/src/core/core.rb
CHANGED
|
Binary file
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg width="40" height="41" viewBox="0 0 40 41" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<circle cx="20.0002" cy="20.5" r="16.6667" fill="white" stroke="#03020D" stroke-width="1.5"/>
|
|
3
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.0272 27.0696L19.8526 10.9167H17.4716L9.30566 25.8623L11.0272 27.0696ZM28.801 27.0696L19.9756 10.9167H22.3566L26.4396 18.3895L30.5225 25.8623L28.801 27.0696ZM19.9141 20.3011L28.678 27.1647L26.8895 28.4167L19.9141 22.956L12.9387 28.4167L11.1501 27.1647L19.9141 20.3011Z" fill="#FF5416"/>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg width="40" height="41" viewBox="0 0 40 41" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M8.33317 20.1358C7.59669 22.2892 7.16766 25.4578 9.58324 24.25C13.5972 22.243 17.4999 21.75 19.9999 21.75C22.4999 21.75 26.2499 22.5833 29.9999 24.25C32.7175 25.4578 32.3716 22.2892 31.658 20.1358" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
3
|
+
<path d="M30.8332 24.25C30.8332 30.9234 25.9829 36.3333 19.9998 36.3333C14.0168 36.3333 9.1665 30.9234 9.1665 24.25" stroke="#03020D" stroke-width="1.5"/>
|
|
4
|
+
<path d="M25.8332 28.8333H14.1665C14.7221 30.2222 16.6665 33 19.9998 33C23.3332 33 25.2776 30.2222 25.8332 28.8333Z" stroke="#03020D" stroke-width="1.5" stroke-linejoin="round"/>
|
|
5
|
+
<circle cx="23.75" cy="23.4167" r="1.25" fill="#03020D"/>
|
|
6
|
+
<circle cx="16.25" cy="23.4167" r="1.25" fill="#03020D"/>
|
|
7
|
+
<path d="M12.3922 5.81177C14.1833 4.70886 16.6689 4.04167 20.072 4.04167C22.8214 4.04167 24.9898 4.61745 26.675 5.58708C28.3615 6.55753 29.528 7.90188 30.3044 9.38272C31.647 11.9432 31.8294 14.9172 31.5602 17.1667C31.291 19.4161 30.0919 18.3888 29.583 18.2551C29.0741 18.1214 28.3702 17.973 27.4504 17.8366C25.7308 17.5816 23.3003 17.375 20.072 17.375C16.8436 17.375 14.4132 17.5816 12.6935 17.8366C11.6833 17.9864 10.9334 18.1507 10.4163 18.2941C9.89931 18.4375 8.83602 18.873 8.58578 17.1667C8.33554 15.4603 8.03534 12.6242 8.97021 10.0327C9.54628 8.43579 10.5926 6.91989 12.3922 5.81177Z" fill="#FF5416"/>
|
|
8
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M16.5734 14.04L20.3288 7.16667H19.3138L15.833 13.5374L16.5622 14.0488L16.4547 14.133L17.2171 14.6667L20.1904 12.339L23.1638 14.6667L23.9262 14.133L20.1904 11.2073L16.5734 14.04ZM24.1431 14.0521L20.3812 7.16667H21.3961L24.8769 13.5374L24.1431 14.0521Z" fill="white"/>
|
|
9
|
+
</svg>
|