@ably/ui 8.7.0-dev.3fee7c0 → 8.7.0-dev.40be3cd
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/Code/component.css +2 -0
- package/core/Code/component.js +1 -1
- package/core/Code.jsx +108 -88
- package/core/CompanyAutocomplete/component.js +1 -1
- package/core/ConnectStateWrapper/component.js +1 -1
- package/core/ConnectStateWrapper.jsx +7 -7
- package/core/ContactFooter/component.js +1 -1
- package/core/ContactFooter.jsx +12 -12
- package/core/CookieMessage/component.js +1 -1
- package/core/CookieMessage.jsx +10 -10
- package/core/CustomerLogos/component.js +1 -1
- package/core/CustomerLogos.jsx +7 -7
- package/core/DropdownMenu/component.js +1 -1
- package/core/DropdownMenu.jsx +11 -11
- package/core/FeatureFooter/component.js +1 -1
- package/core/FeaturedLink/component.css +1 -1
- package/core/FeaturedLink/component.js +1 -1
- package/core/FeaturedLink.jsx +10 -10
- package/core/Flash/component.js +1 -1
- package/core/Flash.jsx +19 -19
- package/core/Footer/component.css +2 -2
- package/core/Footer/component.js +1 -1
- package/core/Footer.jsx +32 -32
- package/core/Icon/component.js +1 -1
- package/core/Icon.jsx +7 -7
- package/core/Loader/component.js +1 -1
- package/core/Loader.jsx +7 -7
- package/core/Logo/component.js +1 -1
- package/core/Logo.jsx +7 -7
- package/core/Meganav/component.css +8 -10
- package/core/Meganav/component.js +1 -1
- package/core/Meganav.jsx +205 -172
- package/core/MeganavBlogPostsList/component.js +1 -1
- package/core/MeganavBlogPostsList.jsx +13 -13
- package/core/MeganavContentCompany/component.js +1 -1
- package/core/MeganavContentCompany.jsx +39 -27
- package/core/MeganavContentDevelopers/component.js +1 -1
- package/core/MeganavContentDevelopers.jsx +30 -17
- package/core/MeganavContentPlatform/component.js +1 -1
- package/core/MeganavContentPlatform.jsx +16 -16
- package/core/MeganavContentUseCases/component.js +1 -1
- package/core/MeganavContentUseCases.jsx +51 -43
- package/core/MeganavControl/component.js +1 -1
- package/core/MeganavControl.jsx +10 -10
- package/core/MeganavControlMobileDropdown/component.js +1 -1
- package/core/MeganavControlMobileDropdown.jsx +11 -11
- package/core/MeganavControlMobilePanelClose/component.js +1 -1
- package/core/MeganavControlMobilePanelClose.jsx +10 -10
- package/core/MeganavControlMobilePanelOpen/component.js +1 -1
- package/core/MeganavControlMobilePanelOpen.jsx +10 -10
- package/core/MeganavItemsDesktop/component.js +1 -1
- package/core/MeganavItemsDesktop.jsx +16 -16
- package/core/MeganavItemsMobile/component.js +1 -1
- package/core/MeganavItemsMobile.jsx +39 -39
- package/core/MeganavItemsSignedIn/component.js +1 -1
- package/core/MeganavItemsSignedIn.jsx +33 -33
- package/core/MeganavSearch/component.js +1 -1
- package/core/MeganavSearch.jsx +23 -23
- package/core/MeganavSearchAutocomplete/component.js +1 -1
- package/core/MeganavSearchAutocomplete.jsx +4 -4
- package/core/MeganavSearchPanel/component.js +1 -1
- package/core/MeganavSearchPanel.jsx +19 -19
- package/core/MeganavSearchSuggestions/component.js +1 -1
- package/core/MeganavSearchSuggestions.jsx +13 -13
- package/core/Notice/component.css +1 -1
- package/core/Notice/component.js +1 -1
- package/core/Notice.jsx +32 -32
- package/core/Showcase/component.js +1 -1
- package/core/Showcase.jsx +1 -1
- package/core/SignOutLink/component.js +1 -1
- package/core/SignOutLink.jsx +7 -7
- package/core/Slider/component.js +1 -1
- package/core/Slider.jsx +14 -14
- package/core/Uptime/component.js +1 -1
- package/core/Uptime.jsx +15 -15
- package/core/fonts/jetBrains-mono.css +3 -0
- package/core/fonts/manrope.css +3 -0
- package/core/scripts.js +1 -1
- package/core/sprites.svg +64 -0
- package/core/styles.css +122 -94
- package/package.json +1 -1
- package/reset/scripts.js +1 -1
- package/reset/styles.css +1 -11
- package/src/core/FeaturedLink/component.css +1 -1
- package/src/core/Footer/component.css +2 -2
- package/src/core/Footer/component.html.erb +11 -11
- package/src/core/Footer/component.jsx +13 -13
- package/src/core/Meganav/component.css +8 -8
- package/src/core/MeganavContentCompany/component.html.erb +9 -0
- package/src/core/MeganavContentCompany/component.jsx +9 -0
- package/src/core/MeganavContentDevelopers/component.html.erb +10 -3
- package/src/core/MeganavContentDevelopers/component.jsx +11 -1
- package/src/core/MeganavContentPlatform/component.jsx +1 -1
- package/src/core/MeganavContentUseCases/component.html.erb +30 -26
- package/src/core/MeganavContentUseCases/component.jsx +29 -26
- package/src/core/Notice/component.css +1 -1
- package/src/core/Notice/component.html.erb +2 -2
- package/src/core/Notice/component.jsx +2 -2
- package/src/core/fonts/jetBrains-mono.css +3 -0
- package/src/core/fonts/manrope.css +3 -0
- package/src/core/icons/icon-display-data-broadcast-col.svg +26 -0
- package/src/core/icons/icon-display-data-synchronization-col.svg +14 -0
- package/src/core/icons/icon-display-events-col.svg +13 -0
- package/src/core/icons/icon-display-kafka-at-the-edge-col.svg +8 -0
- package/src/core/icons/icon-display-push-notifications-col.svg +6 -0
- package/src/core/icons/icon-tech-apachekafka.svg +3 -0
- package/src/core/styles/buttons.css +5 -5
- package/src/core/styles/forms.css +5 -5
- package/src/core/styles/properties.css +47 -31
- package/src/core/styles/text.css +65 -47
- package/src/core/utils/syntax-highlighter-registry.js +2 -0
- package/src/core/utils/syntax-highlighter.css +2 -0
- package/src/core/utils/syntax-highlighter.js +5 -0
- package/tailwind.config.js +42 -26
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<footer class="bg-light-grey font-
|
|
1
|
+
<footer class="bg-light-grey font-manrope antialiased" data-id="footer">
|
|
2
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">
|
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
>
|
|
181
181
|
<%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
|
|
182
182
|
</a>
|
|
183
|
-
<div class="pl-16 text-menu3 font-
|
|
183
|
+
<div class="pl-16 text-menu3 font-manrope font-medium">
|
|
184
184
|
<strong class="block font-medium">We're hiring!</strong>
|
|
185
185
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">
|
|
186
186
|
Learn more at Glassdoor
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
>
|
|
201
201
|
<%= render(AblyUi::Core::Icon.new(name: "glassdoor", size: "1.5rem")) %>
|
|
202
202
|
</a>
|
|
203
|
-
<div class="text-menu3 font-
|
|
203
|
+
<div class="text-menu3 font-manrope font-medium">
|
|
204
204
|
<strong class="block font-medium">We're hiring!</strong>
|
|
205
205
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" class="ui-footer-link">
|
|
206
206
|
Learn more at Glassdoor
|
|
@@ -231,29 +231,29 @@
|
|
|
231
231
|
<div class="flex mr-24">
|
|
232
232
|
<%= 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")) %>
|
|
233
233
|
<div>
|
|
234
|
-
<p class="ui-footer-compliance-text font-
|
|
235
|
-
<p class="ui-footer-compliance-text font-
|
|
234
|
+
<p class="ui-footer-compliance-text font-bold whitespace-nowrap">SOC 2 Type 2</p>
|
|
235
|
+
<p class="ui-footer-compliance-text font-medium mb-24">Certified</p>
|
|
236
236
|
</div>
|
|
237
237
|
</div>
|
|
238
238
|
<div class="flex mr-24 md:col-start-2">
|
|
239
239
|
<%= 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")) %>
|
|
240
240
|
<div>
|
|
241
|
-
<p class="ui-footer-compliance-text font-
|
|
242
|
-
<p class="ui-footer-compliance-text font-
|
|
241
|
+
<p class="ui-footer-compliance-text font-bold whitespace-nowrap">HIPAA</p>
|
|
242
|
+
<p class="ui-footer-compliance-text font-medium mb-24">Compliant</p>
|
|
243
243
|
</div>
|
|
244
244
|
</div>
|
|
245
245
|
<div class="flex mr-24 md:col-start-3">
|
|
246
246
|
<%= 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")) %>
|
|
247
247
|
<div>
|
|
248
|
-
<p class="ui-footer-compliance-text font-
|
|
249
|
-
<p class="ui-footer-compliance-text font-
|
|
248
|
+
<p class="ui-footer-compliance-text font-bold whitespace-nowrap">EU GDPR</p>
|
|
249
|
+
<p class="ui-footer-compliance-text font-medium mb-24">Certified</p>
|
|
250
250
|
</div>
|
|
251
251
|
</div>
|
|
252
252
|
<div class="flex mr-24 md:col-start-4">
|
|
253
253
|
<%= 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")) %>
|
|
254
254
|
<div>
|
|
255
|
-
<p class="ui-footer-compliance-text font-
|
|
256
|
-
<p class="ui-footer-compliance-text font-
|
|
255
|
+
<p class="ui-footer-compliance-text font-bold whitespace-nowrap">256-bit AES</p>
|
|
256
|
+
<p class="ui-footer-compliance-text font-medium mb-24">Encryption</p>
|
|
257
257
|
</div>
|
|
258
258
|
</div>
|
|
259
259
|
</div>
|
|
@@ -8,15 +8,15 @@ export default function Footer({ paths, urlBase }) {
|
|
|
8
8
|
const absUrl = (path) => _absUrl(path, urlBase);
|
|
9
9
|
|
|
10
10
|
return (
|
|
11
|
-
<footer className="bg-light-grey font-
|
|
11
|
+
<footer className="bg-light-grey font-manrope antialiased" data-id="footer">
|
|
12
12
|
<div className="max-w-screen-xl mx-auto py-32 sm:py-40 md:py-64 ui-grid-gap ui-grid-px grid grid-cols-6">
|
|
13
13
|
<div className="col-span-full md:col-span-2">
|
|
14
14
|
<div className="flex flex-row p-menu-row-snug">
|
|
15
15
|
<img className="mr-24 -mt-16" src={paths.ablyStack} alt="Ably homepage" />
|
|
16
|
-
<h2 className="text-overline2 col-span-full
|
|
16
|
+
<h2 className="text-overline2 font-jetbrains_mono font-bold col-span-full uppercase tracking-widen-0.16">The Ably Platform</h2>
|
|
17
17
|
</div>
|
|
18
18
|
<div className="md:col-span-4 md:w-3/4 xs:w-3/5 w-full">
|
|
19
|
-
<p className="text-p3 py-16 font-
|
|
19
|
+
<p className="font-manrope text-p3 py-16 font-bold p-menu-row-snug">
|
|
20
20
|
Easily power any realtime experience in your application via a simple API that handles everything realtime.
|
|
21
21
|
</p>
|
|
22
22
|
</div>
|
|
@@ -274,7 +274,7 @@ export default function Footer({ paths, urlBase }) {
|
|
|
274
274
|
>
|
|
275
275
|
<Icon name="glassdoor" size="1.5rem" />
|
|
276
276
|
</a>
|
|
277
|
-
<div className="pl-16 text-menu3 font-
|
|
277
|
+
<div className="pl-16 text-menu3 font-manrope font-medium">
|
|
278
278
|
<strong className="block font-medium">We're hiring!</strong>
|
|
279
279
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" className="ui-footer-link">
|
|
280
280
|
Learn more at Glassdoor
|
|
@@ -294,7 +294,7 @@ export default function Footer({ paths, urlBase }) {
|
|
|
294
294
|
>
|
|
295
295
|
<Icon name="glassdoor" size="1.5rem" />
|
|
296
296
|
</a>
|
|
297
|
-
<div className="text-menu3 font-
|
|
297
|
+
<div className="text-menu3 font-manrope font-medium">
|
|
298
298
|
<strong className="block font-medium">We're hiring!</strong>
|
|
299
299
|
<a href="https://www.glassdoor.co.uk/Overview/Working-at-Ably-EI_IE2184188.11,15.htm" className="ui-footer-link">
|
|
300
300
|
Learn more at Glassdoor
|
|
@@ -335,29 +335,29 @@ export default function Footer({ paths, urlBase }) {
|
|
|
335
335
|
<div className="flex mr-24">
|
|
336
336
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
337
337
|
<div>
|
|
338
|
-
<p className="ui-footer-compliance-text font-
|
|
339
|
-
<p className="ui-footer-compliance-text font-
|
|
338
|
+
<p className="ui-footer-compliance-text font-bold whitespace-nowrap">SOC 2 Type 2</p>
|
|
339
|
+
<p className="ui-footer-compliance-text font-medium mb-24">Certified</p>
|
|
340
340
|
</div>
|
|
341
341
|
</div>
|
|
342
342
|
<div className="flex mr-24 md:col-start-2">
|
|
343
343
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
344
344
|
<div>
|
|
345
|
-
<p className="ui-footer-compliance-text font-
|
|
346
|
-
<p className="ui-footer-compliance-text font-
|
|
345
|
+
<p className="ui-footer-compliance-text font-bold whitespace-nowrap">HIPAA</p>
|
|
346
|
+
<p className="ui-footer-compliance-text font-medium mb-24">Compliant</p>
|
|
347
347
|
</div>
|
|
348
348
|
</div>
|
|
349
349
|
<div className="flex mr-24 md:col-start-3">
|
|
350
350
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
351
351
|
<div>
|
|
352
|
-
<p className="ui-footer-compliance-text font-
|
|
353
|
-
<p className="ui-footer-compliance-text font-
|
|
352
|
+
<p className="ui-footer-compliance-text font-bold whitespace-nowrap">EU GDPR</p>
|
|
353
|
+
<p className="ui-footer-compliance-text font-medium mb-24">Certified</p>
|
|
354
354
|
</div>
|
|
355
355
|
</div>
|
|
356
356
|
<div className="flex mr-24 md:col-start-4">
|
|
357
357
|
<Icon name="icon-gui-tick" color="text-active-orange" size="1.5rem" additionalCSS="bg-white rounded-full mr-12 ui-footer-tick-icon" />
|
|
358
358
|
<div>
|
|
359
|
-
<p className="ui-footer-compliance-text font-
|
|
360
|
-
<p className="ui-footer-compliance-text font-
|
|
359
|
+
<p className="ui-footer-compliance-text font-bold whitespace-nowrap">256-bit AES</p>
|
|
360
|
+
<p className="ui-footer-compliance-text font-medium mb-24">Encryption</p>
|
|
361
361
|
</div>
|
|
362
362
|
</div>
|
|
363
363
|
</div>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
z-index: var(--stacking-context-page-meganav);
|
|
8
8
|
|
|
9
9
|
@apply fixed top-0 w-full;
|
|
10
|
-
@apply antialiased font-
|
|
10
|
+
@apply antialiased font-manrope transition-colors;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
.ui-meganav {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
.ui-meganav-link {
|
|
54
|
-
@apply text-menu2 font-
|
|
54
|
+
@apply text-menu2 font-bold block font-manrope;
|
|
55
55
|
@apply mr-12 lg:mr-24 px-0 py-20;
|
|
56
56
|
@apply hover:text-gui-hover focus:text-gui-focus focus:outline-none;
|
|
57
57
|
@apply transition-colors;
|
|
@@ -63,13 +63,13 @@
|
|
|
63
63
|
|
|
64
64
|
.ui-meganav-mobile-link {
|
|
65
65
|
@apply p-menu-row relative -left-8 w-extend-8;
|
|
66
|
-
@apply text-menu2 font-medium block text-cool-black text-left;
|
|
66
|
+
@apply text-menu2 font-bold font-jetbrains_mono font-medium block text-cool-black text-left;
|
|
67
67
|
@apply flex items-center;
|
|
68
68
|
@apply focus:text-gui-focus focus:outline-none;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
.ui-meganav-account-link {
|
|
72
|
-
@apply block px-8 py-8 hover:bg-light-grey hover:text-gui-hover rounded relative -left-8 text-menu3 w-extend-8 font-
|
|
72
|
+
@apply block px-8 py-8 hover:bg-light-grey hover:text-gui-hover rounded relative -left-8 text-menu3 w-extend-8 font-bold font-jetbrains_mono;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.ui-meganav-content {
|
|
@@ -93,19 +93,19 @@
|
|
|
93
93
|
grid-template-rows: min-content 1fr;
|
|
94
94
|
|
|
95
95
|
@apply block px-8 py-8 hover:bg-light-grey rounded relative -left-8 w-extend-8;
|
|
96
|
-
@apply grid gap-x-
|
|
96
|
+
@apply grid gap-x-16;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
.ui-meganav-media-heading {
|
|
100
|
-
@apply text-menu3 text-cool-black font-
|
|
100
|
+
@apply text-menu3 text-cool-black font-bold font-manrope group-hover:text-gui-hover group-focus:text-gui-focus;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.ui-meganav-media-copy {
|
|
104
|
-
@apply text-p3 text-dark-grey
|
|
104
|
+
@apply text-p3 font-manrope font-medium text-dark-grey;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
.ui-meganav-overline {
|
|
108
|
-
@apply text-overline2 text-cool-black uppercase font-
|
|
108
|
+
@apply text-overline2 text-cool-black uppercase font-bold font-jetbrains_mono tracking-widen-0.16 p-overline;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
.ui-meganav-hr {
|
|
@@ -72,6 +72,15 @@
|
|
|
72
72
|
</div>
|
|
73
73
|
<% end %>
|
|
74
74
|
</li>
|
|
75
|
+
<li>
|
|
76
|
+
<%= link_to abs_url("/events"), class: "ui-meganav-media-with-image group" do %>
|
|
77
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-events-col", size: "2.5rem")) %>
|
|
78
|
+
<div class="flex flex-col justify-center">
|
|
79
|
+
<p class="ui-meganav-media-heading">Events</p>
|
|
80
|
+
<p class="ui-meganav-media-copy">Join Ably at upcoming events.</p>
|
|
81
|
+
</div>
|
|
82
|
+
<% end %>
|
|
83
|
+
</li>
|
|
75
84
|
</ul>
|
|
76
85
|
</div>
|
|
77
86
|
|
|
@@ -88,6 +88,15 @@ const MeganavContentCompany = ({ paths, absUrl }) => {
|
|
|
88
88
|
</div>
|
|
89
89
|
</a>
|
|
90
90
|
</li>
|
|
91
|
+
<li>
|
|
92
|
+
<a href={absUrl("/events")} className="ui-meganav-media-with-image group">
|
|
93
|
+
<Icon name="icon-display-events-col" size="2.5rem" />
|
|
94
|
+
<div className="flex flex-col justify-center">
|
|
95
|
+
<p className="ui-meganav-media-heading">Events</p>
|
|
96
|
+
<p className="ui-meganav-media-copy">Join Ably at upcoming events.</p>
|
|
97
|
+
</div>
|
|
98
|
+
</a>
|
|
99
|
+
</li>
|
|
91
100
|
</ul>
|
|
92
101
|
</div>
|
|
93
102
|
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
</li>
|
|
36
36
|
</ul>
|
|
37
37
|
</div>
|
|
38
|
-
|
|
39
38
|
<div class="col-span-full md:col-span-4 pb-8 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0">
|
|
40
39
|
<ul class="md:mt-40" aria-labelledby="meganav-developers-panel-explore">
|
|
41
40
|
<li>
|
|
@@ -65,11 +64,19 @@
|
|
|
65
64
|
</div>
|
|
66
65
|
<% end %>
|
|
67
66
|
</li>
|
|
67
|
+
<li>
|
|
68
|
+
<%= link_to abs_url("/reference-guide-multiplayer"), class: "ui-meganav-media-with-image group" do %>
|
|
69
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-multi-user-spaces-col", size: "2.5rem")) %>
|
|
70
|
+
<div class="flex flex-col justify-center">
|
|
71
|
+
<p class="ui-meganav-media-heading">Multiplayer reference guide</p>
|
|
72
|
+
<p class="ui-meganav-media-copy">Learn how to build collaborative features with Ably.</p>
|
|
73
|
+
</div>
|
|
74
|
+
<% end %>
|
|
75
|
+
</li>
|
|
68
76
|
</ul>
|
|
69
77
|
</div>
|
|
70
|
-
|
|
71
78
|
<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">
|
|
72
|
-
<h3 class="ui-meganav-overline uppercase" id=
|
|
79
|
+
<h3 class="ui-meganav-overline uppercase" id=meganav-developers-panel-quick-links">
|
|
73
80
|
Quick links
|
|
74
81
|
</h3>
|
|
75
82
|
<ul aria-labelledby="meganav-developers-panel-quick-links">
|
|
@@ -58,7 +58,7 @@ const MeganavContentDevelopers = ({ absUrl }) => (
|
|
|
58
58
|
<Icon name="icon-display-tutorials-demos-col" size="2.5rem" />
|
|
59
59
|
<div className="flex flex-col justify-center">
|
|
60
60
|
<p className="ui-meganav-media-heading">Tutorials & Demos</p>
|
|
61
|
-
<p className="ui-meganav-media-copy">Get stuck in with our hands-on resources
|
|
61
|
+
<p className="ui-meganav-media-copy">Get stuck in with our hands-on resources.</p>
|
|
62
62
|
</div>
|
|
63
63
|
</a>
|
|
64
64
|
</li>
|
|
@@ -71,6 +71,15 @@ const MeganavContentDevelopers = ({ absUrl }) => (
|
|
|
71
71
|
</div>
|
|
72
72
|
</a>
|
|
73
73
|
</li>
|
|
74
|
+
<li>
|
|
75
|
+
<a href={absUrl("/reference-guide-multiplayer")} className="ui-meganav-media-with-image group">
|
|
76
|
+
<Icon name="icon-multi-user-spaces-col" size="2.5rem" />
|
|
77
|
+
<div className="flex flex-col justify-center">
|
|
78
|
+
<p className="ui-meganav-media-heading">Multiplayer reference guide</p>
|
|
79
|
+
<p className="ui-meganav-media-copy">Learn how to build collaborative features with Ably.</p>
|
|
80
|
+
</div>
|
|
81
|
+
</a>
|
|
82
|
+
</li>
|
|
74
83
|
</ul>
|
|
75
84
|
</div>
|
|
76
85
|
|
|
@@ -99,6 +108,7 @@ const MeganavContentDevelopers = ({ absUrl }) => (
|
|
|
99
108
|
<p className="ui-meganav-media-heading">
|
|
100
109
|
Status
|
|
101
110
|
<iframe
|
|
111
|
+
title="Ably status"
|
|
102
112
|
src="https://status.ably.com/embed/icon"
|
|
103
113
|
allowtransparency="true"
|
|
104
114
|
frameBorder="0"
|
|
@@ -12,7 +12,7 @@ const MeganavContentPlatform = ({ paths, absUrl }) => (
|
|
|
12
12
|
<img src={paths.ablyStack} alt="Ably homepage" />
|
|
13
13
|
<h3 className="ui-meganav-overline ml-24">The Ably Platform</h3>
|
|
14
14
|
</div>
|
|
15
|
-
<p className="text-p2 font-
|
|
15
|
+
<p className="text-p2 font-bold text-cool-black mb-24" style={{ maxWidth: "330px" }}>
|
|
16
16
|
Easily power any realtime experience in your application. No complex infrastructure to manage or provision. Just a simple API that handles everything
|
|
17
17
|
realtime, and lets you focus on your code.
|
|
18
18
|
</p>
|
|
@@ -3,15 +3,16 @@
|
|
|
3
3
|
<section class="grid grid-cols-12 ui-grid-gap-x w-full">
|
|
4
4
|
<div class="col-span-full md:col-span-4 py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24 bg-extra-light-grey">
|
|
5
5
|
<h3 class="ui-meganav-overline" id="meganav-use-cases-panel-use-cases">
|
|
6
|
-
|
|
6
|
+
Solutions
|
|
7
7
|
</h3>
|
|
8
8
|
<ul aria-labelledby="meganav-use-cases-panel-industry-use-cases">
|
|
9
|
+
|
|
9
10
|
<li>
|
|
10
11
|
<%= link_to abs_url("/solutions/chat"), class: "ui-meganav-media-with-image group" do %>
|
|
11
12
|
<%= render(AblyUi::Core::Icon.new(name: "icon-display-chat-stack-col", size: "2.5rem")) %>
|
|
12
13
|
<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
|
|
14
|
+
<p class="ui-meganav-media-heading">Live Chat</p>
|
|
15
|
+
<p class="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale.</p>
|
|
15
16
|
</div>
|
|
16
17
|
<% end %>
|
|
17
18
|
</li>
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
</li>
|
|
27
28
|
<li>
|
|
28
29
|
<%= link_to abs_url("/solutions/data-broadcast"), class: "ui-meganav-media-with-image group" do %>
|
|
29
|
-
<%= render(AblyUi::Core::Icon.new(name: "icon-
|
|
30
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-data-broadcast-col", size: "2.5rem")) %>
|
|
30
31
|
<div class="flex flex-col justify-center">
|
|
31
32
|
<p class="ui-meganav-media-heading">Data Broadcast</p>
|
|
32
33
|
<p class="ui-meganav-media-copy">Broadcast realtime event data to millions of devices around the globe.</p>
|
|
@@ -35,17 +36,35 @@
|
|
|
35
36
|
</li>
|
|
36
37
|
<li>
|
|
37
38
|
<%= link_to abs_url("/solutions/data-synchronization"), class: "ui-meganav-media-with-image group" do %>
|
|
38
|
-
<%= render(AblyUi::Core::Icon.new(name: "icon-display-
|
|
39
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-data-synchronization-col", size: "2.5rem")) %>
|
|
39
40
|
<div class="flex flex-col justify-center">
|
|
40
41
|
<p class="ui-meganav-media-heading">Data Synchronization</p>
|
|
41
42
|
<p class="ui-meganav-media-copy">Keep your frontend and backend in realtime sync, at global scale.</p>
|
|
42
43
|
</div>
|
|
43
44
|
<% end %>
|
|
44
45
|
</li>
|
|
46
|
+
<li>
|
|
47
|
+
<%= link_to abs_url("/push-notifications"), class: "ui-meganav-media-with-image group" do %>
|
|
48
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-push-notifications-col", size: "2.5rem")) %>
|
|
49
|
+
<div class="flex flex-col justify-center">
|
|
50
|
+
<p class="ui-meganav-media-heading">Notifications</p>
|
|
51
|
+
<p class="ui-meganav-media-copy">Deliver cross-platform push notifications with a simple unified API.</p>
|
|
52
|
+
</div>
|
|
53
|
+
<% end %>
|
|
54
|
+
</li>
|
|
55
|
+
<li>
|
|
56
|
+
<%= link_to abs_url("/solutions/extend-kafka-to-the-edge"), class: "ui-meganav-media-with-image group" do %>
|
|
57
|
+
<%= render(AblyUi::Core::Icon.new(name: "icon-display-kafka-at-the-edge-col", size: "2.5rem")) %>
|
|
58
|
+
<div class="flex flex-col justify-center">
|
|
59
|
+
<p class="ui-meganav-media-heading">Extend Kafka to the edge</p>
|
|
60
|
+
<p class="ui-meganav-media-copy">Reliably expand Kafka’s event streaming beyond your private network.</p>
|
|
61
|
+
</div>
|
|
62
|
+
<% end %>
|
|
63
|
+
</li>
|
|
45
64
|
</ul>
|
|
46
65
|
</div>
|
|
47
66
|
|
|
48
|
-
<div class="col-span-full md:col-span-4 pt-24 pb-
|
|
67
|
+
<div class="col-span-full md:col-span-4 pt-24 pb-0 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white">
|
|
49
68
|
<h3 class="ui-meganav-overline" id="meganav-use-cases-panel-industry">
|
|
50
69
|
Industry
|
|
51
70
|
</h3>
|
|
@@ -80,6 +99,11 @@
|
|
|
80
99
|
<p class="ui-meganav-media-copy">Provide trustworthy, HIPAA-compliant realtime apps.</p>
|
|
81
100
|
<% end %>
|
|
82
101
|
</li>
|
|
102
|
+
</ul>
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div class="col-span-full md:col-span-4 pt-0 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white">
|
|
106
|
+
<ul aria-labelledby="meganav-use-cases-panel-solutions" class="mt-0 md:mt-40">
|
|
83
107
|
<li>
|
|
84
108
|
<%= link_to abs_url("/solutions/ecommerce-and-retail"), class: "ui-meganav-media group" do %>
|
|
85
109
|
<p class="ui-meganav-media-heading">eCommerce & Retail</p>
|
|
@@ -106,26 +130,6 @@
|
|
|
106
130
|
</li>
|
|
107
131
|
</ul>
|
|
108
132
|
</div>
|
|
109
|
-
|
|
110
|
-
<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 bg-white">
|
|
111
|
-
<h3 class="ui-meganav-overline" id="meganav-use-cases-panel-solutions">
|
|
112
|
-
Solutions
|
|
113
|
-
</h3>
|
|
114
|
-
<ul aria-labelledby="meganav-use-cases-panel-solutions">
|
|
115
|
-
<li>
|
|
116
|
-
<%= link_to abs_url("/solutions/extend-kafka-to-the-edge"), class: "ui-meganav-media group" do %>
|
|
117
|
-
<p class="ui-meganav-media-heading">Extend Kafka to the edge</p>
|
|
118
|
-
<p class="ui-meganav-media-copy">Reliably expand Kafka’s event streaming beyond your private network.</p>
|
|
119
|
-
<% end %>
|
|
120
|
-
</li>
|
|
121
|
-
<li>
|
|
122
|
-
<%= link_to abs_url("/solutions/asset-tracking"), class: "ui-meganav-media group" do %>
|
|
123
|
-
<p class="ui-meganav-media-heading">Asset Tracking</p>
|
|
124
|
-
<p class="ui-meganav-media-copy">Track assets in realtime with a solution optimised for last mile logistics.</p>
|
|
125
|
-
<% end %>
|
|
126
|
-
</li>
|
|
127
|
-
</ul>
|
|
128
|
-
</div>
|
|
129
133
|
</section>
|
|
130
134
|
<div class="ui-meganav-content-spacer"></div>
|
|
131
135
|
</div>
|
|
@@ -9,15 +9,15 @@ const MeganavContentUseCases = ({ absUrl }) => (
|
|
|
9
9
|
<section className="grid grid-cols-12 ui-grid-gap-x w-full">
|
|
10
10
|
<div className="col-span-full md:col-span-4 py-24 lg:py-32 px-24 sm:px-32 md:pl-0 md:pr-24 bg-extra-light-grey">
|
|
11
11
|
<h3 className="ui-meganav-overline" id="meganav-use-cases-panel-use-cases">
|
|
12
|
-
|
|
12
|
+
Solutions
|
|
13
13
|
</h3>
|
|
14
14
|
<ul aria-labelledby="meganav-use-cases-panel-industry-use-cases">
|
|
15
15
|
<li>
|
|
16
16
|
<a href={absUrl("/solutions/chat")} className="ui-meganav-media-with-image group">
|
|
17
17
|
<Icon name="icon-display-chat-stack-col" size="2.5rem" />
|
|
18
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
|
|
19
|
+
<p className="ui-meganav-media-heading">Live Chat</p>
|
|
20
|
+
<p className="ui-meganav-media-copy">Deliver highly reliable chat experiences at scale.</p>
|
|
21
21
|
</div>
|
|
22
22
|
</a>
|
|
23
23
|
</li>
|
|
@@ -32,7 +32,7 @@ const MeganavContentUseCases = ({ absUrl }) => (
|
|
|
32
32
|
</li>
|
|
33
33
|
<li>
|
|
34
34
|
<a href={absUrl("/solutions/data-broadcast")} className="ui-meganav-media-with-image group">
|
|
35
|
-
<Icon name="icon-
|
|
35
|
+
<Icon name="icon-display-data-broadcast-col" size="2.5rem" />
|
|
36
36
|
<div className="flex flex-col justify-center">
|
|
37
37
|
<p className="ui-meganav-media-heading">Data Broadcast</p>
|
|
38
38
|
<p className="ui-meganav-media-copy">Broadcast realtime event data to millions of devices around the globe.</p>
|
|
@@ -41,17 +41,35 @@ const MeganavContentUseCases = ({ absUrl }) => (
|
|
|
41
41
|
</li>
|
|
42
42
|
<li>
|
|
43
43
|
<a href={absUrl("/solutions/data-synchronization")} className="ui-meganav-media-with-image group">
|
|
44
|
-
<Icon name="icon-display-
|
|
44
|
+
<Icon name="icon-display-data-synchronization-col" size="2.5rem" />
|
|
45
45
|
<div className="flex flex-col justify-center">
|
|
46
46
|
<p className="ui-meganav-media-heading">Data Synchronization</p>
|
|
47
47
|
<p className="ui-meganav-media-copy">Keep your frontend and backend in realtime sync, at global scale.</p>
|
|
48
48
|
</div>
|
|
49
49
|
</a>
|
|
50
50
|
</li>
|
|
51
|
+
<li>
|
|
52
|
+
<a href={absUrl("/push-notifications")} className="ui-meganav-media-with-image group">
|
|
53
|
+
<Icon name="icon-display-push-notifications-col" size="2.5rem" />
|
|
54
|
+
<div className="flex flex-col justify-center">
|
|
55
|
+
<p className="ui-meganav-media-heading">Notifications</p>
|
|
56
|
+
<p className="ui-meganav-media-copy">Deliver cross-platform push notifications with a simple unified API.</p>
|
|
57
|
+
</div>
|
|
58
|
+
</a>
|
|
59
|
+
</li>
|
|
60
|
+
<li>
|
|
61
|
+
<a href={absUrl("/solutions/extend-kafka-to-the-edge")} className="ui-meganav-media-with-image group">
|
|
62
|
+
<Icon name="icon-display-kafka-at-the-edge-col" size="2.5rem" />
|
|
63
|
+
<div className="flex flex-col justify-center">
|
|
64
|
+
<p className="ui-meganav-media-heading">Extend Kafka to the edge</p>
|
|
65
|
+
<p className="ui-meganav-media-copy">Reliably expand Kafka’s event streaming beyond your private network.</p>
|
|
66
|
+
</div>
|
|
67
|
+
</a>
|
|
68
|
+
</li>
|
|
51
69
|
</ul>
|
|
52
70
|
</div>
|
|
53
71
|
|
|
54
|
-
<div className="col-span-full md:col-span-4 pt-24 pb-
|
|
72
|
+
<div className="col-span-full md:col-span-4 pt-24 pb-0 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white">
|
|
55
73
|
<h3 className="ui-meganav-overline" id="meganav-use-cases-panel-industry">
|
|
56
74
|
Industry
|
|
57
75
|
</h3>
|
|
@@ -86,6 +104,11 @@ const MeganavContentUseCases = ({ absUrl }) => (
|
|
|
86
104
|
<p className="ui-meganav-media-copy">Provide trustworthy, HIPAA-compliant realtime apps.</p>
|
|
87
105
|
</a>
|
|
88
106
|
</li>
|
|
107
|
+
</ul>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<div className="col-span-full md:col-span-4 pt-0 pb-24 md:py-24 lg:py-32 px-24 sm:px-32 md:px-0 bg-white">
|
|
111
|
+
<ul aria-labelledby="meganav-use-cases-panel-solutions" className="mt-0 md:mt-40">
|
|
89
112
|
<li>
|
|
90
113
|
<a href={absUrl("/solutions/ecommerce-and-retail")} className="ui-meganav-media group">
|
|
91
114
|
<p className="ui-meganav-media-heading">eCommerce & Retail</p>
|
|
@@ -112,26 +135,6 @@ const MeganavContentUseCases = ({ absUrl }) => (
|
|
|
112
135
|
</li>
|
|
113
136
|
</ul>
|
|
114
137
|
</div>
|
|
115
|
-
|
|
116
|
-
<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 bg-white">
|
|
117
|
-
<h3 className="ui-meganav-overline" id="meganav-use-cases-panel-solutions">
|
|
118
|
-
Solutions
|
|
119
|
-
</h3>
|
|
120
|
-
<ul aria-labelledby="meganav-use-cases-panel-solutions">
|
|
121
|
-
<li>
|
|
122
|
-
<a href={absUrl("/solutions/extend-kafka-to-the-edge")} className="ui-meganav-media group">
|
|
123
|
-
<p className="ui-meganav-media-heading">Extend Kafka to the edge</p>
|
|
124
|
-
<p className="ui-meganav-media-copy">Reliably expand Kafka’s event streaming beyond your private network.</p>
|
|
125
|
-
</a>
|
|
126
|
-
</li>
|
|
127
|
-
<li>
|
|
128
|
-
<a href={absUrl("/solutions/asset-tracking")} className="ui-meganav-media group">
|
|
129
|
-
<p className="ui-meganav-media-heading">Asset Tracking</p>
|
|
130
|
-
<p className="ui-meganav-media-copy">Track assets in realtime with a solution optimised for last mile logistics.</p>
|
|
131
|
-
</a>
|
|
132
|
-
</li>
|
|
133
|
-
</ul>
|
|
134
|
-
</div>
|
|
135
138
|
</section>
|
|
136
139
|
<div className="ui-meganav-content-spacer"></div>
|
|
137
140
|
</div>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<%# Note the style attribute is used for entry animation %>
|
|
2
2
|
<%= tag.div class: "ui-announcement #{bg_color} #{text_color}", data: { id: "ui-notice" }, style: "max-height: 0; overflow: hidden" do %>
|
|
3
3
|
<div class="ui-grid-px py-16 max-w-screen-xl mx-auto flex items-start">
|
|
4
|
-
<%= content_wrapper class: "font-
|
|
5
|
-
<strong class="font-
|
|
4
|
+
<%= content_wrapper class: "font-medium w-full pr-8 text-p3 self-center" do %>
|
|
5
|
+
<strong class="font-bold whitespace-nowrap pr-4"><%= @contents[:title] %></strong>
|
|
6
6
|
<span class="pr-4"><%= @contents[:body_text] %></span>
|
|
7
7
|
<span class="underline cursor-pointer whitespace-nowrap"><%= @contents[:button_label] %></span>
|
|
8
8
|
<% end %>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect } from "react";
|
|
2
2
|
import T from "prop-types";
|
|
3
3
|
|
|
4
|
-
const contentWrapperClasses = "font-
|
|
4
|
+
const contentWrapperClasses = "font-medium w-full pr-8 text-p3 self-center";
|
|
5
5
|
|
|
6
6
|
import NoticeScripts from "./component.js";
|
|
7
7
|
import Icon from "../Icon/component.jsx";
|
|
@@ -38,7 +38,7 @@ const Notice = ({ buttonLink, buttonLabel, bodyText, title, config, closeBtn, bg
|
|
|
38
38
|
<div className={wrapperClasses} data-id="ui-notice" style={{ maxHeight: 0, overflow: "hidden" }}>
|
|
39
39
|
<div className="ui-grid-px py-16 max-w-screen-xl mx-auto flex items-start">
|
|
40
40
|
<ContentWrapper buttonLink={buttonLink}>
|
|
41
|
-
<strong className="font-
|
|
41
|
+
<strong className="font-bold whitespace-nowrap pr-4">{title}</strong>
|
|
42
42
|
<span className="pr-4">{bodyText}</span>
|
|
43
43
|
{buttonLabel && <span className="underline cursor-pointer whitespace-nowrap">{buttonLabel}</span>}
|
|
44
44
|
</ContentWrapper>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M36.5 9.5H33C30.3766 9.5 28.5 11.3766 28.5 14V23C28.5 24.5188 29.4812 25.75 31 25.75H39.75C41.2688 25.75 42.5 24.5188 42.5 23V15.5" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
3
|
+
<path d="M31.4286 17.5H34.75V12.5H31.4286C31.4286 12.5 30.5 12.5 30.5 13.5V16.5C30.5 17.5 31.4286 17.5 31.4286 17.5Z" stroke="#03020D" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M40.5 15V16.5C40.5 17.5 39.5714 17.5 39.5714 17.5C38.6429 17.5 36.25 17.5 36.25 17.5V12.5H37" stroke="#03020D" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
<path d="M29.5 31L31.5 28" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
6
|
+
<path d="M42 31L40 28" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
7
|
+
<path d="M30.5 29.5H41" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
8
|
+
<circle cx="31.5" cy="21.5" r="1.5" fill="#03020D"/>
|
|
9
|
+
<circle cx="39.5" cy="21.5" r="1.5" fill="#03020D"/>
|
|
10
|
+
<path d="M14.5 4.12444C14.0122 4.0426 13.5111 4 13 4C8.02947 4 4.00003 8.02944 4.00003 13C4.00003 17.9706 8.02947 22 13 22C17.9706 22 22 17.9706 22 13C22 12.047 21.8519 11.1286 21.5774 10.2666" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
11
|
+
<path d="M10.3121 12.0403L12.3515 10.3026C12.7252 9.98417 13.2749 9.98417 13.6486 10.3026L15.6879 12.0403C16.0221 12.325 16.1315 12.7943 15.9577 13.1974L15.1176 15.1459C14.9596 15.5125 14.5986 15.75 14.1993 15.75H11.8007C11.4015 15.75 11.0405 15.5125 10.8824 15.1459L10.0424 13.1974C9.86861 12.7943 9.978 12.325 10.3121 12.0403Z" fill="#03020D" stroke="#03020D" stroke-width="1.5"/>
|
|
12
|
+
<path d="M10.1954 4.61029L12.3515 6.44738C12.7252 6.76583 13.2749 6.76583 13.6486 6.44738L14.2736 5.91483C14.4966 5.72484 14.625 5.44662 14.625 5.15367L14.625 4.21875" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
13
|
+
<path d="M21.775 13.5001L19.0118 11.5963C18.8872 11.5104 18.8433 11.3467 18.9083 11.21V11.21C19.0391 10.9352 19.9843 10.2787 20.2844 10.2279C20.5919 10.1758 20.9897 10.1021 21.5 10" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
14
|
+
<path d="M5.37081 7.59113L6.83859 10.6776C7.04946 11.1211 6.9072 11.652 6.50287 11.9306L3.68849 13.8696" stroke="#03020D" stroke-width="1.5"/>
|
|
15
|
+
<path d="M16 18.5L17 18L20 18.5L18 20.5L15.5 21.5L16 18.5Z" fill="#03020D"/>
|
|
16
|
+
<path d="M5.31416 18.3281L8.71616 18.0006C9.20491 17.9535 9.65552 18.2683 9.77955 18.7434L10.6429 22.0503" stroke="#03020D" stroke-width="1.5"/>
|
|
17
|
+
<path d="M15.3563 22.0504L16.22 18.7436C16.3441 18.2686 16.7947 17.9539 17.2835 18.001L20.6854 18.3288" stroke="#03020D" stroke-width="1.5"/>
|
|
18
|
+
<path d="M18.1185 27.5C17.2809 27.1759 16.3772 27 15.448 27C7.936 27.0233 8.2 33.6262 8.104 34.3261C5.8 34.5594 4 36.4726 4 38.7825C4 41.2556 6.064 43 8.608 43H22.288C25.456 42.93 28 40.6723 28 37.5692C28 36.2139 27.514 34.9733 26.7009 34" stroke="#03020D" stroke-width="1.5" stroke-linecap="round"/>
|
|
19
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M19 30C19 27.7909 20.7909 26 23 26C25.2091 26 27 27.7909 27 30C27 32.2091 25.2091 34 23 34C20.7909 34 19 32.2091 19 30Z" fill="#FF5416"/>
|
|
20
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 5C16 2.79086 17.7909 1 20 1C22.2091 1 24 2.79086 24 5C24 7.20914 22.2091 9 20 9C17.7909 9 16 7.20914 16 5Z" fill="#FF5416"/>
|
|
21
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M38 10C38 7.79086 39.7909 6 42 6C44.2091 6 46 7.79086 46 10C46 12.2091 44.2091 14 42 14C39.7909 14 38 12.2091 38 10Z" fill="#FF5416"/>
|
|
22
|
+
<path d="M7 11.5V10.5L5.5 8.5L4 11V13.5L7 11.5Z" fill="#03020D"/>
|
|
23
|
+
<path d="M10 19L9 18L6 18.5L8 20.5L10 21.5V19Z" fill="#03020D"/>
|
|
24
|
+
<path d="M19 11L21 10L22 12L21.5 13L19.5 12L19 11Z" fill="#03020D"/>
|
|
25
|
+
<path d="M14.5 5.5L13 6.5L11 5V4H14.5V5.5Z" fill="#03020D"/>
|
|
26
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M39 10C39 6.13401 31.3888 3 22 3C12.6112 3 5 6.13401 5 10" stroke="#03020D" stroke-width="1.5" stroke-miterlimit="10"/>
|
|
3
|
+
<path d="M39 18C39 21.866 31.3888 25 22 25C12.6112 25 5 21.866 5 18" stroke="#03020D" stroke-width="1.5" stroke-miterlimit="10"/>
|
|
4
|
+
<path d="M5 26C5 29.6251 11.6922 32.6066 20.2671 32.9641" stroke="#03020D" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
5
|
+
<path d="M39 10C39 13.866 31.3888 17 22 17C12.6112 17 5 13.866 5 10" stroke="#03020D" stroke-width="1.5" stroke-miterlimit="10"/>
|
|
6
|
+
<path d="M5 34C5 37.6953 11.9538 40.7218 20.7671 40.9819" stroke="#03020D" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
7
|
+
<path d="M5 10V34" stroke="#03020D" stroke-width="1.5" stroke-miterlimit="10"/>
|
|
8
|
+
<path d="M39 10V25" stroke="#03020D" stroke-width="1.5" stroke-miterlimit="10" stroke-linecap="round"/>
|
|
9
|
+
<circle cx="33.5" cy="37" r="10.5" fill="#FF5416"/>
|
|
10
|
+
<path d="M36.6529 39.0294L38.7706 38.5L39.3 40.6176" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
11
|
+
<path d="M38.7706 38.5C38.3787 39.6105 37.6668 40.5802 36.7247 41.2868C35.7825 41.9934 34.6523 42.4053 33.4765 42.4706C32.3895 42.4708 31.3288 42.1364 30.4385 41.5129C29.5482 40.8893 28.8714 40.0068 28.5 38.9853" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
12
|
+
<path d="M30.1471 35.7938L28.0294 36.3232L27.5 34.2056" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
13
|
+
<path d="M28.3824 35.9706C29.1235 33.9412 31.4 32 33.6765 32C34.7687 32.0031 35.8333 32.3439 36.7242 32.9758C37.6152 33.6076 38.2889 34.4996 38.6529 35.5294" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
14
|
+
</svg>
|