Edge page update (#2143)

* edge page update

Co-authored-by: Cursor <cursoragent@cursor.com>

* refactoring and renaming (#2145)

* rename edge-beta to edge in file names and style classes, moved some files to improve files organization

* audit fix

* fix paths

* fixes

* add a button to scroll to the form

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
trean
2026-02-19 23:13:19 +01:00
committed by GitHub
co-authored by Cursor
parent 3d8279f0a0
commit 92ff228b79
35 changed files with 1119 additions and 506 deletions
@@ -1,35 +0,0 @@
---
title: Real-time vector retrieval for Edge AI in resource-constrained environments
features:
- id: 0
image:
src: /img/edge-beta-features/native-vector.svg
alt: Native Vector Search
title: Native Vector Search for Embedded & Edge AI
description: Runs as a lightweight, in-process library. No background threads, no services - ideal for mobile, robotic, and embedded environments.
- id: 1
image:
src: /img/edge-beta-features/optimized-for-low-memory.svg
alt: Low-Memory
title: Optimized for Low-Memory, Low-Compute Devices
description: Dramatically Designed for resource-constrained hardware. No idle overhead, no runtime daemons. Fits into tightly scoped edge deployments. memory usage with built-in compression options and offload data to disk.
- id: 2
image:
src: /img/edge-beta-features/local-by-default.svg
alt: Local by Default
title: Local by Default, Cloud-Connected When Needed
description: Retrieval runs fully offline. Sync with Qdrant Cloud only when required - for data transfer, tenant promotion, or coordination at scale.
- id: 3
image:
src: /img/edge-beta-features/hybrid-and-multimodal-search.svg
alt: Hybrid & Multimodal Search
title: Hybrid & Multimodal Search On-Device
description: Supports dense and multimodal vectors with structured filtering. Enables real-time retrieval from text, image, audio, or sensor-derived embeddings.
- id: 4
image:
src: /img/edge-beta-features/multitenancy-built.svg
alt: Multitenancy Built
title: Edge-Scale Multitenancy with Native SDKs
description: Supports payload- and shard-based tenant isolation. Routes queries across uneven edge workloads. Native SDKs in Java (Android), Swift (Apple), and more.
sitemapExclude: true
---
@@ -1,29 +0,0 @@
---
title: Purpose-Built for On-Device AI Workloads
cards:
- id: 0
icon:
src: /img/edge-beta-vectors/icon1.svg
alt: Robotics & Autonomy
title: Robotics & Autonomy
description: Run multimodal retrieval from onboard sensors (like LiDAR, radar, and cameras) for real-time navigation and decision-making.
- id: 1
icon:
src: /img/edge-beta-vectors/icon2.svg
alt: Offline Voice Assistants
title: Offline Voice Assistants
description: Power local memory for privacy-first assistants on mobile or embedded hardware, without relying on a persistent connection.
- id: 2
icon:
src: /img/edge-beta-vectors/icon3.svg
alt: Smart Retail & Kiosks
title: Smart Retail & Kiosks
description: Enable product similarity and anomaly detection on edge terminals with limited or intermittent connectivity.
- id: 3
icon:
src: /img/edge-beta-vectors/icon4.svg
alt: Industrial IoT
title: Industrial IoT
description: Perform local retrieval and diagnostics from sensor-derived embeddings in air-gapped or bandwidth-constrained environments.
sitemapExclude: true
---
+18
View File
@@ -0,0 +1,18 @@
---
title: Offline Visual Memory for Smart Glasses
label:
title: Demo
icon:
src: /icons/outline/play.svg
alt: Demo
description: This GitHub demo showcases a proof-of-concept for smart glasses that can remember what they see and help you find objects, like your keys, even when fully offline. It runs Qdrant Edge directly on the device, using a vision-language model to convert video frames into vectors for fast, local search while skipping redundant frames to stay efficient.
description2: See how vector search can bring memory-like capabilities to resource-constrained hardware at the edge.
cta:
text: View in GitHub
url: https://github.com/qdrant/qdrant-edge-demo
target: "_blank"
image:
src: /img/edge/demo-visual.png
alt: Offline Visual Memory for Smart Glasses
sitemapExclude: true
---
@@ -9,9 +9,6 @@ questions:
answer: Yes. Read the <a href="https://qdrant.tech/documentation/edge/edge-quickstart/">Quick Start guide</a>,
and view the <a href="https://github.com/qdrant/qdrant-edge-demo">demo</a> on GitHub.
- id: 2
question: What are the minimum requirements to join the beta?
answer: You should have a clear use case for on-device or offline vector search. Preference is given to companies working with embedded hardware or deploying agents at the edge.
- id: 3
question: How do I get access?
answer: If you're building edge-native or embedded AI systems, apply to join the beta. Or, read the <a href="https://qdrant.tech/documentation/edge/edge-quickstart/">Quick Start guide</a>, and view the <a href="https://github.com/qdrant/qdrant-edge-demo">demo</a> on GitHub
sitemapExclude: true
@@ -0,0 +1,35 @@
---
title: Real-time vector retrieval for Edge AI in resource-constrained environments
features:
- id: 0
image:
src: /img/edge-beta-features/native-vector.svg
alt: Native Vector Search
title: Native Vector Search for Embedded & Edge AI
description: Run in-memory, disk-backed, and hybrid vector search on the edge. Deploy on mobile devices, IoT gateways, industrial PCs, drones, and more.
- id: 1
image:
src: /img/edge-beta-features/optimized-for-low-memory.svg
alt: Low-Memory
title: Optimized for Low Memory & Low Compute Devices
description: Optimized for resource-constrained environments with a small memory footprint and efficient CPU/GPU utilization to ensure smooth performance on edge devices.
- id: 2
image:
src: /img/edge-beta-features/local-by-default.svg
alt: Local by Default
title: Local-first, Cloud-Connected When Needed
description: Perform vector search locally with fallback to cloud for more complex queries or when more compute is needed to train your AI model.
- id: 3
image:
src: /img/edge-beta-features/hybrid-and-multimodal-search.svg
alt: Hybrid & Multimodal Search
title: Hybrid & Multi-modal Search On Device
description: Support for various data types, including text, images, audio, and more. Combine multiple modalities for more accurate and context-aware results.
- id: 4
image:
src: /img/edge-beta-features/multitenancy-built.svg
alt: Multitenancy Built
title: Multitenancy Built for Edge Scale
description: Designed to manage multiple tenants, users, or applications on a single edge device. Isolate data and control access for secure and scalable deployments.
sitemapExclude: true
---
@@ -1,6 +1,6 @@
---
title: Apply to Join the Beta
description: Beta available to selected teams building embedded or edge-native AI systems.
title: Submit Your Interest or Project
description: Fill out the form to stay updated about Qdrant Edge news, or let us know about your project.
form:
id: edge-beta-form
hubspotFormOptions: '{
@@ -8,7 +8,10 @@ label:
subtitle: Run Vector Search Inside Embedded and Edge AI Systems
description: Qdrant Edge is a lightweight, in-process vector search engine designed for embedded devices, autonomous systems, and mobile agents. It enables on-device retrieval with minimal memory footprint, no background services, and optional synchronization with Qdrant Cloud.
startFree:
text: Join the Beta
text: Read Quick Start Docs
url: /documentation/edge/edge-quickstart/
contactUs:
text: Contact Us
url: "#form"
image:
src: /img/qdrant-edge-scheme.svg
@@ -0,0 +1,29 @@
---
title: Purpose-Built for On-Device AI Workloads
cards:
- id: 0
icon:
src: /img/edge-beta-vectors/icon1.svg
alt: Robotics & Autonomy
title: Robotics & Autonomy
description: Run real-time vector search to enable robots to make faster, more informed decisions for object recognition, navigation, and more.
- id: 1
icon:
src: /img/edge-beta-vectors/icon2.svg
alt: Offline Voice Assistants
title: Offline Voice Assistants
description: Provide fast, accurate, and private voice search for devices without an internet connection, such as smart speakers, wearables, and more.
- id: 2
icon:
src: /img/edge-beta-vectors/icon3.svg
alt: Smart Retail & Kiosks
title: Smart Retail & Kiosks
description: Personalize in-store experiences, provide product recommendations, and power intelligent kiosks for enhanced customer engagement.
- id: 3
icon:
src: /img/edge-beta-vectors/icon4.svg
alt: Industrial IoT
title: Industrial IoT
description: Perform anomaly detection, predictive maintenance, and real-time insights on sensor data directly at the edge for industrial applications.
sitemapExclude: true
---
+334 -342
View File
File diff suppressed because it is too large Load Diff
@@ -132,12 +132,7 @@
@import 'partials/cloud-inference-cluster';
@import 'partials/cloud-inference-get-started';
@import 'partials/cloud-inference-faq';
@import 'partials/edge-beta-hero';
@import 'partials/edge-beta-features';
@import 'partials/edge-beta-vectors';
@import 'partials/edge-beta-form';
@import 'partials/edge-beta-faq';
@import 'partials/edge-beta-get-started';
@import 'partials/edge/index';
@import 'partials/elastic-lucene/index';
@import 'partials/hr-tech/index';
@import 'partials/healthcare/index';
@@ -0,0 +1,73 @@
@use '../helpers/functions' as *;
.edge-beta-demo {
position: relative;
overflow: hidden;
padding-top: $spacer * 4;
padding-bottom: $spacer * 4;
background: radial-gradient(
ellipse 120% 80% at 0% 0%,
rgba(231, 29, 95, 0.12) 0%,
rgba(133, 71, 255, 0.06) 40%,
transparent 70%
), $neutral-10;
&__lights-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
width: 100%;
height: pxToRem(200);
background-image: url('/img/elastic-lucene/lights.svg');
background-repeat: repeat-x;
background-position: center top;
background-size: cover;
transform: scaleY(-1);
filter: blur(6px);
z-index: 0;
pointer-events: none;
}
&__title {
margin: 0 0 $spacer * 2;
font-size: $h4-font-size;
line-height: 1.2;
font-weight: 600;
color: $neutral-100;
}
&__description {
margin-bottom: $spacer * 1.5;
font-size: $font-size-l;
line-height: $line-height-lg;
color: $neutral-90;
&--secondary {
margin-bottom: $spacer * 2;
}
}
&__button {
border-radius: 12px;
}
&__image {
width: 100%;
max-width: pxToRem(540);
}
@include media-breakpoint-up(lg) {
padding-top: $spacer * 5;
padding-bottom: $spacer * 7.5;
&__title {
line-height: 1.5;
margin-bottom: $spacer * 2.5;
}
&__description {
max-width: pxToRem(540);
}
}
}
@@ -0,0 +1,74 @@
@use '../../helpers/functions' as *;
.edge-demo {
position: relative;
overflow: hidden;
padding-top: $spacer * 4;
padding-bottom: $spacer * 4;
background: radial-gradient(
ellipse 120% 80% at 0% 0%,
rgba(231, 29, 95, 0.12) 0%,
rgba(133, 71, 255, 0.06) 40%,
transparent 70%
), $neutral-10;
&__lights-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
width: 100%;
height: pxToRem(200);
background-image: url('/img/elastic-lucene/lights.svg');
background-repeat: repeat-x;
background-position: center top;
background-size: cover;
transform: scaleY(-1);
filter: blur(6px);
z-index: 0;
pointer-events: none;
}
&__title {
margin: 0 0 $spacer * 2;
font-size: $h4-font-size;
line-height: 1.2;
font-weight: 600;
color: $neutral-100;
}
&__description {
margin-bottom: $spacer * 1.5;
font-size: $font-size-l;
line-height: $line-height-lg;
color: $neutral-98;
&--secondary {
margin-bottom: $spacer * 2;
}
}
&__button {
border-radius: 12px;
}
&__image {
width: 100%;
max-width: pxToRem(540);
}
@include media-breakpoint-up(lg) {
padding-top: $spacer * 5;
padding-bottom: $spacer * 7.5;
&__title {
font-size: $h2-font-size;
line-height: pxToRem(67);
margin-bottom: $spacer * 2.5;
}
&__description {
max-width: pxToRem(540);
}
}
}
@@ -0,0 +1,26 @@
@use '../../helpers/functions' as *;
.edge-faq {
padding-top: $spacer * 4;
padding-bottom: $spacer * 4;
background-color: $neutral-94;
&__title {
margin-bottom: $spacer * 3;
font-size: $h4-font-size;
line-height: $h3-font-size;
color: $neutral-20;
text-align: center;
}
@include media-breakpoint-up(lg) {
padding-top: $spacer * 5;
padding-bottom: $spacer * 5;
&__title {
margin-bottom: $spacer * 5;
font-size: $h2-font-size;
line-height: pxToRem(67);
}
}
}
@@ -0,0 +1,56 @@
@use '../../helpers/functions' as *;
.edge-features {
padding-top: $spacer * 4;
padding-bottom: $spacer * 2.5;
background-color: $neutral-94;
&__title {
margin-bottom: $spacer * 2.5;
font-size: $h5-font-size;
line-height: pxToRem(38);
color: $neutral-20;
}
&__card {
justify-content: flex-start;
padding-bottom: 0;
&-title {
margin-bottom: pxToRem(12);
font-size: $font-size-xl;
line-height: pxToRem(30);
color: $neutral-20;
}
&-description {
margin-bottom: $spacer;
color: $neutral-40;
}
&-image {
width: 100%;
margin-top: auto;
}
}
&__cards {
& > div:first-of-type {
.edge-features__card-image {
width: calc(100% + ($spacer * 3));
margin-left: -$spacer * 1.5;
margin-right: -$spacer * 1.5;
}
}
}
@include media-breakpoint-up(lg) {
padding-top: $spacer * 7.5;
&__title {
margin-bottom: $spacer * 4;
font-size: $h3-font-size;
line-height: pxToRem(58);
}
}
}
@@ -0,0 +1,161 @@
@use '../../helpers/functions' as *;
.edge-form {
position: relative;
padding-top: $spacer * 4;
padding-bottom: $spacer * 4;
background-color: $neutral-10;
overflow: hidden;
&__title {
margin-bottom: $spacer * 1.5;
font-size: $h5-font-size;
line-height: pxToRem(38);
color: $neutral-98;
text-align: center;
}
&__description {
max-width: pxToRem(730);
margin: 0 auto $spacer * 3;
font-size: $font-size-xl;
line-height: pxToRem(30);
color: $neutral-70;
text-align: center;
}
&__container {
position: relative;
width: 100%;
max-width: pxToRem(720);
margin: 0 auto;
border-radius: $spacer * 0.5;
background: linear-gradient($neutral-20, #0e1424);
* {
font-family: $font-family-base;
}
[data-hsfc-id=Renderer] .hsfc-Step .hsfc-Step__Content {
padding: $spacer * 1.5;
}
.hsfc-RichText span, .hsfc-FieldLabel span, .hsfc-ProgressBar__Text {
font-size: $font-size-s !important;
line-height: $line-height-sm !important;
color: $neutral-98 !important;
}
.hsfc-FieldLabel {
margin-bottom: $spacer * 0.5 !important;
}
[data-hsfc-id=Renderer] .hsfc-TextInput, [data-hsfc-id=Renderer] .hsfc-TextareaInput {
display: block;
background-color: transparent;
border: pxToRem(1) solid $neutral-50;
margin-bottom: $spacer * 0.5;
padding: $spacer * 0.5 $spacer;
font-size: $font-size-md;
line-height: $spacer * 1.5;
color: $neutral-98;
border-radius: $spacer * 0.5;
&:focus, &:active {
box-shadow: none !important;
}
&::placeholder {
color: $neutral-70;
}
}
[data-hsfc-id=Renderer] .hsfc-ErrorAlert {
font-size: $font-size-xs;
line-height: $font-size-l;
color: $primary-40;
}
[data-hsfc-id=Renderer] .hsfc-Button {
display: inline-flex;
align-items: center;
justify-content: center;
flex-wrap: nowrap;
cursor: pointer;
border: none;
border-radius: $spacer * 0.5;
color: $neutral-100;
text-decoration: none;
height: $spacer * 2.5;
padding: pxToRem(22);
font-weight: 700;
font-size: map-get($font-sizes-text, md);
z-index: 1;
background: linear-gradient(180deg, $primary-50, $primary-40) !important;
box-shadow: 0 2px 1px 0 $primary-60 inset !important;
transition: none !important;
&:hover {
background: $primary-50 !important;
border: none !important;
box-shadow: 0 2px 1px 0 $primary-70 inset !important;
transform: none !important;
}
&:active {
background: $primary-50 !important;
border: none !important;
box-shadow:
0 2px 1px 0 $primary-60 inset,
0 0 0 2px rgba(220, 36, 76, 0.4) !important;
}
&.button_disabled,
&:disabled {
background: $primary-70 !important;
border: none !important;
box-shadow: none !important;
}
}
}
&__form-overlay {
position: absolute;
right: 0;
top: 0;
width: pxToRem(210);
height: pxToRem(210);
background-image: url('/img/blurred/blurred-light-15.svg');
background-position: top;
background-size: cover;
border-radius: 0 pxToRem(12) 0 0;
}
&__overlay {
position: absolute;
left: 0;
bottom: -$spacer * 1.5;
width: pxToRem(637);
height: pxToRem(444);
background-image: url('/img/blurred/blurred-light-19.svg');
background-position: bottom;
background-size: cover;
}
@include media-breakpoint-up(lg) {
padding-top: $spacer * 7.5;
padding-bottom: $spacer * 7.5;
&__title {
font-size: $h3-font-size;
line-height: pxToRem(58);
}
&__container {
[data-hsfc-id=Renderer] .hsfc-Step .hsfc-Step__Content {
padding: $spacer * 4;
}
}
}
}
@@ -0,0 +1,14 @@
@use '../../mixins/get-started-small' as get-started-small;
@use '../../helpers/functions' as *;
.edge-get-started {
@include get-started-small.base(
$spacer * 5,
$spacer * 2.5,
$spacer * 7.5,
$spacer * 5,
$neutral-94,
$neutral-10,
$neutral-10
);
}
@@ -0,0 +1,65 @@
@use '../../helpers/functions' as *;
.edge-hero {
position: relative;
padding-top: $spacer * 2.5;
padding-bottom: $spacer * 4;
background-color: $neutral-10;
&__title {
margin: $spacer * 1.5 0;
font-size: $h4-font-size;
line-height: $h3-font-size;
color: $neutral-98;
}
&__subtitle {
margin-bottom: $spacer * 1.5;
font-size: $h6-font-size;
line-height: pxToRem(34);
color: $neutral-98;
}
&__description {
margin-bottom: $spacer * 2;
font-size: $font-size-l;
line-height: $line-height-lg;
color: $neutral-70;
}
&__buttons {
display: flex;
gap: 1.5rem;
}
&__image {
width: 100%;
max-width: pxToRem(540);
}
&__overlay {
position: absolute;
right: 0;
left: 0;
bottom: 0;
width: 100%;
height: pxToRem(176);
background-image: url('/img/blurred/blurred-light-11.png');
background-position: center;
background-size: cover;
}
@include media-breakpoint-up(lg) {
padding-top: $spacer * 5;
padding-bottom: $spacer * 7.5;
&__title {
font-size: $h2-font-size;
line-height: pxToRem(67);
}
&__subtitle, &__description {
max-width: pxToRem(500);
}
}
}
@@ -0,0 +1,102 @@
@use '../../helpers/functions' as *;
.edge-vectors {
padding-top: $spacer * 4;
padding-bottom: $spacer * 4;
background-color: $neutral-94;
&__title {
max-width: pxToRem(920);
margin: 0 auto $spacer * 4;
font-size: $h4-font-size;
line-height: $h3-font-size;
color: $neutral-20;
}
&__card {
&-info {
padding-bottom: $spacer * 2;
}
&-icon {
height: $spacer * 3.5;
width: $spacer * 3.5;
margin-bottom: $spacer;
}
&-title {
font-size: $h5-font-size;
line-height: $h4-font-size;
margin-bottom: $spacer;
color: $neutral-20;
}
&-description {
font-size: $font-size-l;
line-height: $line-height-lg;
margin-bottom: 0;
color: $neutral-30;
}
}
@include media-breakpoint-up(lg) {
padding-top: $spacer * 7.5;
padding-bottom: $spacer * 7.5;
&__title {
font-size: $h3-font-size;
line-height: pxToRem(58);
text-align: center;
}
&__card {
position: relative;
&:nth-of-type(2),
&:nth-of-type(4) {
& > div {
&:before {
content: "";
display: block;
height: 100%;
width: pxToRem(1);
position: absolute;
top: 0;
left: 0;
background-color: $neutral-80;
}
}
}
&:nth-of-type(1),
&:nth-of-type(2) {
& > div {
&:after {
content: "";
display: block;
width: 100%;
height: pxToRem(1);
position: absolute;
bottom: 0;
left: 0;
background-color: $neutral-80;
}
}
}
&-info {
max-width: pxToRem(400);
margin: auto;
padding: $spacer * 3.5 0;
}
}
}
@include media-breakpoint-up(xl) {
&__card {
&-info {
max-width: pxToRem(443);
}
}
}
}
@@ -0,0 +1,7 @@
@import 'edge-hero';
@import 'edge-features';
@import 'edge-vectors';
@import 'edge-demo';
@import 'edge-form';
@import 'edge-faq';
@import 'edge-get-started';
@@ -1,13 +0,0 @@
{{ define "main" }}
{{ partial "site-header" . }}
{{ partial "edge-beta-hero" . }}
{{ partial "edge-beta-features" . }}
{{ partial "edge-beta-vectors" . }}
{{ partial "edge-beta-form" . }}
{{ partial "edge-beta-faq" . }}
{{ with (.Site.GetPage "/edge-beta/edge-beta-get-started") }}
{{ partial "get-started-small" (dict "context" . "class" "edge-beta-get-started") }}
{{ end }}
{{ end }}
@@ -0,0 +1,14 @@
{{ define "main" }}
{{ partial "site-header" . }}
{{ partial "edge/edge-hero" . }}
{{ partial "edge/edge-features" . }}
{{ partial "edge/edge-vectors" . }}
{{ partial "edge/edge-demo" . }}
{{ partial "edge/edge-form" . }}
{{ partial "edge/edge-faq" . }}
{{ with (.Site.GetPage "/edge/edge-get-started") }}
{{ partial "get-started-small" (dict "context" . "class" "edge-get-started") }}
{{ end }}
{{ end }}
@@ -1,8 +0,0 @@
{{ with (.Site.GetPage "/edge-beta/edge-beta-faq") }}
<section class="edge-beta-faq">
<div class="container">
<h2 class="edge-beta-faq__title">{{ .Params.title }}</h2>
{{ partial "accordion" . }}
</div>
</section>
{{ end }}
@@ -1,18 +0,0 @@
{{ with (.Site.GetPage "/edge-beta/edge-beta-features") }}
<section class="edge-beta-features">
<div class="container">
<h2 class="edge-beta-features__title">{{ .Params.title }}</h2>
<div class="edge-beta-features__cards row g-4">
{{ range $index, $element := .Params.features }}
<div class="col-12 {{ if eq $index 0 }}col-lg-8{{ else }}col-lg-4 {{ end }}">
<div class="card edge-beta-features__card">
<h6 class="edge-beta-features__card-title">{{ .title }}</h6>
<p class="edge-beta-features__card-description">{{ .description }}</p>
<img class="edge-beta-features__card-image" src="{{ .image.src }}" alt="{{ .image.alt }}" />
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
@@ -1,23 +0,0 @@
{{ with (.Site.GetPage "/edge-beta/edge-beta-hero") }}
<section class="edge-beta-hero">
<div class="container">
<div class="row align-items-lg-center g-5 g-lg-0">
<div class="col-12 col-lg-6 z-1">
{{ partial "label" . }}
<h3 class="edge-beta-hero__title">{{ .Params.title }}</h3>
<h5 class="edge-beta-hero__subtitle">{{ .Params.subtitle }}</h5>
<p class="edge-beta-hero__description">{{ .Params.description }}</p>
<div class="edge-beta-hero__buttons">
<a href="{{ .Params.startFree.url }}" class="button button_contained button_lg">
{{ .Params.startFree.text }}
</a>
</div>
</div>
<div class="col-12 col-lg-6 d-flex justify-content-center z-1">
<img class="edge-beta-hero__image" src="{{ .Params.image.src }}" alt="{{ .Params.image.alt }}" />
</div>
</div>
</div>
<div class="edge-beta-hero__overlay"></div>
</section>
{{ end }}
@@ -1,18 +0,0 @@
{{ with (.Site.GetPage "edge-beta/edge-beta-vectors") }}
<section class="edge-beta-vectors">
<div class="container">
<h2 class="edge-beta-vectors__title">{{ .Params.title }}</h2>
<div class="edge-beta-vectors__cards row g-4 g-lg-0">
{{ range $index, $element := .Params.cards }}
<div class="edge-beta-vectors__card col-12 col-lg-6">
<div class="edge-beta-vectors__card-info">
<img class="edge-beta-vectors__card-icon" src="{{ .icon.src }}" alt="{{ .icon.alt }}" />
<h5 class="edge-beta-vectors__card-title">{{ .title }}</h5>
<p class="edge-beta-vectors__card-description">{{ .description }}</p>
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
@@ -0,0 +1,26 @@
{{ with (.Site.GetPage "/edge/edge-demo") }}
<section class="edge-demo">
<div class="edge-demo__lights-overlay"></div>
<div class="container">
<div class="row align-items-lg-center g-5 g-lg-0">
<div class="col-12 col-lg-6 z-1">
<h2 class="edge-demo__title">
{{ .Params.label.title }}: {{ .Params.title }}
</h2>
<p class="edge-demo__description">{{ .Params.description }}</p>
{{ with .Params.description2 }}
<p class="edge-demo__description edge-demo__description--secondary">{{ . }}</p>
{{ end }}
<div class="edge-demo__buttons">
<a href="{{ .Params.cta.url }}" class="button button_contained button_lg edge-demo__button" target="{{ .Params.cta.target }}">
{{ .Params.cta.text }}
</a>
</div>
</div>
<div class="col-12 col-lg-6 d-flex justify-content-center z-1">
<img class="edge-demo__image" src="{{ .Params.image.src }}" alt="{{ .Params.image.alt }}" />
</div>
</div>
</div>
</section>
{{ end }}
@@ -0,0 +1,8 @@
{{ with (.Site.GetPage "/edge/edge-faq") }}
<section class="edge-faq">
<div class="container">
<h2 class="edge-faq__title">{{ .Params.title }}</h2>
{{ partial "accordion" . }}
</div>
</section>
{{ end }}
@@ -0,0 +1,18 @@
{{ with (.Site.GetPage "/edge/edge-features") }}
<section class="edge-features">
<div class="container">
<h2 class="edge-features__title">{{ .Params.title }}</h2>
<div class="edge-features__cards row g-4">
{{ range $index, $element := .Params.features }}
<div class="col-12 {{ if eq $index 0 }}col-lg-8{{ else }}col-lg-4 {{ end }}">
<div class="card edge-features__card">
<h6 class="edge-features__card-title">{{ .title }}</h6>
<p class="edge-features__card-description">{{ .description }}</p>
<img class="edge-features__card-image" src="{{ .image.src }}" alt="{{ .image.alt }}" />
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
@@ -1,12 +1,12 @@
{{ with (.Site.GetPage "/edge-beta/edge-beta-form") }}
<section class="edge-beta-form" id="form">
<div class="edge-beta-form__overlay"></div>
{{ with (.Site.GetPage "/edge/edge-form") }}
<section class="edge-form" id="form">
<div class="edge-form__overlay"></div>
<div class="container">
<h2 class="edge-beta-form__title">{{ .Params.title }}</h2>
<p class="edge-beta-form__description">{{ .Params.description }}</p>
<h2 class="edge-form__title">{{ .Params.title }}</h2>
<p class="edge-form__description">{{ .Params.description }}</p>
<div class="edge-beta-form__container">
<div class="edge-beta-form__form-overlay"></div>
<div class="edge-form__container">
<div class="edge-form__form-overlay"></div>
<script src="https://js-eu1.hsforms.net/forms/embed/developer/139603372.js" defer></script>
<script>
@@ -32,7 +32,7 @@
fallbackButtonContainer.appendChild(fallbackButton);
{{ end }}
document.getElementsByClassName("edge-beta-form__container")[0].appendChild(fallbackButtonContainer);
document.getElementsByClassName("edge-form__container")[0].appendChild(fallbackButtonContainer);
}
});
</script>
@@ -0,0 +1,26 @@
{{ with (.Site.GetPage "/edge/edge-hero") }}
<section class="edge-hero">
<div class="container">
<div class="row align-items-lg-center g-5 g-lg-0">
<div class="col-12 col-lg-6 z-1">
{{ partial "label" . }}
<h3 class="edge-hero__title">{{ .Params.title }}</h3>
<h5 class="edge-hero__subtitle">{{ .Params.subtitle }}</h5>
<p class="edge-hero__description">{{ .Params.description }}</p>
<div class="edge-hero__buttons">
<a href="{{ .Params.startFree.url }}" class="button button_contained button_lg">
{{ .Params.startFree.text }}
</a>
<a href="{{ .Params.contactUs.url }}" class="button button_outlined button_lg">
{{ .Params.contactUs.text }}
</a>
</div>
</div>
<div class="col-12 col-lg-6 d-flex justify-content-center z-1">
<img class="edge-hero__image" src="{{ .Params.image.src }}" alt="{{ .Params.image.alt }}" />
</div>
</div>
</div>
<div class="edge-hero__overlay"></div>
</section>
{{ end }}
@@ -0,0 +1,18 @@
{{ with (.Site.GetPage "edge/edge-vectors") }}
<section class="edge-vectors">
<div class="container">
<h2 class="edge-vectors__title">{{ .Params.title }}</h2>
<div class="edge-vectors__cards row g-4 g-lg-0">
{{ range $index, $element := .Params.cards }}
<div class="edge-vectors__card col-12 col-lg-6">
<div class="edge-vectors__card-info">
<img class="edge-vectors__card-icon" src="{{ .icon.src }}" alt="{{ .icon.alt }}" />
<h5 class="edge-vectors__card-title">{{ .title }}</h5>
<p class="edge-vectors__card-description">{{ .description }}</p>
</div>
</div>
{{ end }}
</div>
</div>
</section>
{{ end }}
Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB