mirror of
https://github.com/qdrant/landing_page.git
synced 2026-10-05 19:08:32 +02:00
Add Events page (#2502)
* Add Events page * Create test * delete * A lot of edits * Change date * Add-SF-placeholder * Date edits * Copy edit Edited title and added Berlin save the date * add events link to menus * fix link --------- Co-authored-by: Maddie Duhon <madelyn.duhon@qdrant.com> Co-authored-by: trean <trean.mi@gmail.com>
This commit is contained in:
co-authored by
Maddie Duhon
trean
parent
46c1255fca
commit
282f74c749
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Biomedical AI Copilot with Neo4j and Qdrant"
|
||||
description: "Build a Biomedical GraphRAG AI assistant combining Neo4j knowledge graphs and Qdrant vector search for explainable, multi-hop reasoning over biomedical corpora like PubMed, with answers grounded in verifiable evidence."
|
||||
type: webinar
|
||||
start: "2026-04-21T17:00:00"
|
||||
place: Online
|
||||
link: "https://www.youtube.com/watch?v=10g1iJnfLWQ"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Post-AI Dev Conference Happy Hour for Agent Builders, hosted by Qdrant"
|
||||
description: "An informal post-conference gathering after AI Dev x SF 26, bringing together founders, engineering leaders, and developers for drinks, light food, and networking — no pitches, just people building interesting things in AI."
|
||||
type: meetup
|
||||
start: "2026-04-29T02:30:00"
|
||||
place: San Francisco, CA
|
||||
link: "https://luma.com/yjb156c2"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "TurboQuant in Qdrant Explained"
|
||||
description: "A session covering TurboQuant, Qdrant's quantization option offering 8x, 16x, and 32x compression with consistently higher recall than Binary Quantization at every storage class, plus guidance on when to use it over SQ or BQ."
|
||||
type: webinar
|
||||
start: "2026-05-26T17:00:00"
|
||||
place: Online
|
||||
link: "https://www.youtube.com/watch?v=KawnBQWmtcU"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Vector Space Day San Francisco"
|
||||
description: "A single-track, full-day conference for engineers and researchers building with vector search and AI, covering Search & AI Retrieval, Agents & Memory, and Edge & Robotics AI. Featuring speakers from Google DeepMind, LlamaIndex, Adobe, Slack, and more."
|
||||
type: conference
|
||||
start: "2026-06-11T08:30:00-07:00"
|
||||
end: "2026-06-11T18:30:00-07:00"
|
||||
timezoneLabel: "GMT-7"
|
||||
place: San Francisco, CA
|
||||
link: "https://qdrant.tech/vector-space-day-sf-26-recap/"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Vector Space Meetup: Retrieval in the Age of Agents with Qdrant, n8n, Cognee, deepset, LlamaIndex"
|
||||
description: "An evening contrasting classic RAG — where retrieval is one step in a fixed pipeline — with agentic systems where retrieval becomes a dynamic capability the agent actively manages, featuring a panel with Qdrant, Cognee, deepset, LlamaIndex, and n8n."
|
||||
type: meetup
|
||||
start: "2026-06-11T18:00:00"
|
||||
place: Merantix AI Campus
|
||||
link: "https://luma.com/vsm-berlin"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "Build Retrieval Agents That Evaluate, Adapt, and Improve Mid-Query"
|
||||
description: Learn to build adaptive retrieval loops with per-query strategy selection, in-loop signals to detect weak retrieval early, and a routing gate directing queries to ColBERT reranking or IRCoT decomposition.
|
||||
type: webinar
|
||||
start: "2026-07-08T17:30:00+02:00"
|
||||
end: "2026-07-08T18:30:00+02:00"
|
||||
timezoneLabel: "CEST"
|
||||
place: Online
|
||||
link: "https://www.youtube.com/watch?v=VZ2p3dLsFOs"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: "TwelveLabs + Qdrant: AI Systems for Video Embeddings and Search"
|
||||
description: Discover how multimodal embeddings for video power AI search and retrieval — covering text, audio, and video embeddings in practice, and AI search on the edge for devices and robots.
|
||||
type: meetup
|
||||
start: "2026-07-29T17:30:00-07:00"
|
||||
end: "2026-07-29T21:00:00-07:00"
|
||||
timezoneLabel: "GMT-7"
|
||||
place: Bellevue, WA
|
||||
link: "https://luma.com/kyksgkak"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "[Save the Date] SF Community Meetup"
|
||||
description: "We're bringing together AI engineers and researchers for a community demo night."
|
||||
type: meetup
|
||||
start: "2026-08-25T18:00:00"
|
||||
place: San Francisco, CA
|
||||
link: "https://luma.com/sf-meetup-aug26"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Hard Negatives: AI Engineers Debate & Game Night"
|
||||
description: "RAG is dead. AI is already sentient. Open weights should be banned. We should trust models we can't explain. You don't pick your side. We do."
|
||||
type: meetup
|
||||
start: "2026-08-26T18:00:00"
|
||||
place: NY, NY
|
||||
link: "https://luma.com/nyc-meetup-qdrant-07"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Community Meetup"
|
||||
description: "Save the date"
|
||||
type: meetup
|
||||
start: "2026-09-16T18:00:00"
|
||||
place: Berlin, Germany
|
||||
link: "https://qdrant.tech"
|
||||
sitemapExclude: true
|
||||
---
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: Events
|
||||
description: Events
|
||||
build:
|
||||
render: always
|
||||
cascade:
|
||||
- build:
|
||||
list: local
|
||||
publishResources: false
|
||||
render: never
|
||||
---
|
||||
|
||||
@@ -112,13 +112,16 @@ menuItems:
|
||||
- id: 2
|
||||
name: Articles
|
||||
url: /articles/
|
||||
- id: 3
|
||||
- id: 4
|
||||
name: Events
|
||||
url: /events/
|
||||
- id: 5
|
||||
name: Startup Program
|
||||
url: /qdrant-for-startups/
|
||||
- id: 4
|
||||
- id: 6
|
||||
name: Demos
|
||||
url: /demo/
|
||||
- id: 5
|
||||
- id: 7
|
||||
name: Bug Bounty
|
||||
url: /security/bug-bounty-program/
|
||||
- title: Company
|
||||
|
||||
@@ -140,14 +140,18 @@ menuItems:
|
||||
icon: articles.svg
|
||||
url: /articles/
|
||||
- id: subMenu-3-3
|
||||
name: Events
|
||||
icon: partners.svg
|
||||
url: /events/
|
||||
- id: subMenu-3-4
|
||||
name: Demos
|
||||
icon: demos.svg
|
||||
url: /demo/
|
||||
- id: subMenu-3-4
|
||||
- id: subMenu-3-5
|
||||
name: Startup Program
|
||||
icon: qdrant-for-startups.svg
|
||||
url: /qdrant-for-startups/
|
||||
- id: subMenu-3-5
|
||||
- id: subMenu-3-6
|
||||
name: Bug Bounty Program
|
||||
icon: bug-bounty-program.svg
|
||||
url: /security/bug-bounty-program/
|
||||
|
||||
@@ -81,6 +81,8 @@
|
||||
@import 'partials/cloud-inference-faq';
|
||||
@import 'partials/cta-banner';
|
||||
@import 'partials/subscribe';
|
||||
@import 'partials/events/events-card';
|
||||
@import 'partials/events/events-list';
|
||||
// used by landing pages under /lp/ (e.g. /lp/lucene)
|
||||
@import 'partials/elastic-lucene/index';
|
||||
@import 'partials/vsd/index';
|
||||
|
||||
@@ -0,0 +1,204 @@
|
||||
@use 'sass:math';
|
||||
@use '../../helpers/functions' as *;
|
||||
|
||||
.events-card {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: $spacer * 4;
|
||||
padding: $spacer * 2 $spacer * 1.5;
|
||||
border: pxToRem(1) solid $neutral-20;
|
||||
color: $neutral-70;
|
||||
|
||||
&__date {
|
||||
display: flex;
|
||||
gap: $spacer * 0.5;
|
||||
align-items: center;
|
||||
color: $neutral-90;
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
font-weight: $font-weight-medium;
|
||||
}
|
||||
|
||||
svg {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&__title {
|
||||
margin-top: $spacer;
|
||||
margin-bottom: $spacer;
|
||||
font-size: $h6-font-size;
|
||||
line-height: $spacer * 2;
|
||||
color: $neutral-90;
|
||||
}
|
||||
|
||||
&__description {
|
||||
margin-bottom: $spacer * 4;
|
||||
font-size: $font-size-md;
|
||||
line-height: $spacer * 1.5;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
&__location {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: $spacer;
|
||||
}
|
||||
|
||||
&__type {
|
||||
padding: pxToRem(2) pxToRem(10);
|
||||
border-radius: pxToRem(20);
|
||||
font-size: $font-size-md;
|
||||
line-height: $spacer * 1.5;
|
||||
text-transform: capitalize;
|
||||
display: inline-block;
|
||||
|
||||
&-mobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&-webinar {
|
||||
border: pxToRem(1) solid $secondary-blue-50;
|
||||
color: $secondary-blue-50;
|
||||
background-color: rgba($secondary-blue-50, 0.1);
|
||||
}
|
||||
|
||||
&-conference {
|
||||
border: pxToRem(1) solid $secondary-violet-50;
|
||||
color: $secondary-violet-50;
|
||||
background-color: rgba($secondary-violet-50, 0.1);
|
||||
}
|
||||
|
||||
&-meetup {
|
||||
border: pxToRem(1) solid $secondary-teal-50;
|
||||
color: $secondary-teal-50;
|
||||
background-color: rgba($secondary-teal-50, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
&__place {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: math.div($spacer, 4);
|
||||
margin-bottom: 0;
|
||||
font-size: $font-size-md;
|
||||
line-height: $spacer * 1.5;
|
||||
|
||||
svg {
|
||||
height: $spacer;
|
||||
width: $spacer;
|
||||
}
|
||||
}
|
||||
|
||||
&__time {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: math.div($spacer, 4);
|
||||
margin-bottom: 0;
|
||||
font-size: $font-size-md;
|
||||
line-height: $spacer * 1.5;
|
||||
|
||||
svg {
|
||||
height: $spacer;
|
||||
width: $spacer;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: linear-gradient(180deg, rgba(14, 20, 36, 0.00) 0%, $neutral-20 100%);
|
||||
|
||||
.events-card__date,
|
||||
.events-card__description,
|
||||
.events-card__place,
|
||||
.events-card__time {
|
||||
color: $neutral-90;
|
||||
|
||||
svg {
|
||||
path {
|
||||
stroke: $neutral-90;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
flex-direction: row;
|
||||
align-items: start;
|
||||
gap: $spacer * 2;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
&__date {
|
||||
flex-shrink: 0;
|
||||
width: pxToRem(228);
|
||||
color: $neutral-70;
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
font-weight: $font-weight-medium;
|
||||
font-size: $font-size-l;
|
||||
line-height: $spacer * 1.5;
|
||||
}
|
||||
|
||||
svg {
|
||||
height: pxToRem(18);
|
||||
width: pxToRem(18);
|
||||
|
||||
path {
|
||||
stroke: $neutral-70;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__title {
|
||||
margin-top: 0;
|
||||
margin-bottom: $spacer * 0.5;
|
||||
}
|
||||
|
||||
&__description {
|
||||
margin-bottom: $spacer * 2;
|
||||
}
|
||||
|
||||
&__location {
|
||||
gap: $spacer $spacer * 2;
|
||||
}
|
||||
|
||||
&__type {
|
||||
font-size: $font-size-xs;
|
||||
line-height: pxToRem(18);
|
||||
padding: pxToRem(1) pxToRem(10);
|
||||
display: none;
|
||||
|
||||
&-mobile {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&__place {
|
||||
font-size: $font-size-xs;
|
||||
line-height: pxToRem(18);
|
||||
|
||||
svg {
|
||||
height: pxToRem(12);
|
||||
width: pxToRem(12);
|
||||
}
|
||||
}
|
||||
|
||||
&__time {
|
||||
font-size: $font-size-xs;
|
||||
line-height: pxToRem(18);
|
||||
|
||||
svg {
|
||||
height: pxToRem(12);
|
||||
width: pxToRem(12);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
@use '../../helpers/functions' as *;
|
||||
|
||||
.events-list {
|
||||
margin-bottom: $spacer * 4;
|
||||
background-color: $neutral-10;
|
||||
|
||||
&__section {
|
||||
padding: $spacer * 5 0;
|
||||
|
||||
&-header {
|
||||
color: $neutral-98;
|
||||
}
|
||||
|
||||
&-subtitle {
|
||||
margin-bottom: $spacer;
|
||||
font-size: $font-size-s;
|
||||
line-height: $line-height-sm;
|
||||
font-family: $font-family-monospace;
|
||||
font-weight: $font-weight-medium;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: pxToRem(2);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&-title {
|
||||
margin-bottom: 0;
|
||||
font-size: $h3-font-size;
|
||||
line-height: pxToRem(52);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: $spacer * 4;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
margin-bottom: $spacer * 7.5;
|
||||
|
||||
&__section {
|
||||
padding: $spacer * 7.5 0;
|
||||
|
||||
&-upcoming {
|
||||
border-bottom: pxToRem(1) solid $neutral-30;
|
||||
}
|
||||
|
||||
&-past {
|
||||
position: relative;
|
||||
|
||||
.events-list__section-list {
|
||||
height: pxToRem(972);
|
||||
margin: pxToRem(-120) 0;
|
||||
overflow-y: scroll;
|
||||
scrollbar-width: none;
|
||||
|
||||
&-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.events-card:first-of-type {
|
||||
margin-top: $spacer * 7.5;
|
||||
}
|
||||
|
||||
.events-card:last-of-type {
|
||||
margin-bottom: $spacer * 7.5;
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
height: $spacer * 7.5;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&:before {
|
||||
top: 0;
|
||||
background: linear-gradient(0deg, rgba($neutral-10, 0.00) 0%, $neutral-10 70%);
|
||||
}
|
||||
|
||||
&:after {
|
||||
bottom: 0;
|
||||
background: linear-gradient(0deg, $neutral-10 30%, rgba($neutral-10, 0.00) 100%);
|
||||
}
|
||||
}
|
||||
|
||||
&-subtitle {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&-title {
|
||||
max-width: pxToRem(250);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&-list {
|
||||
gap: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
@import 'events-card';
|
||||
@import 'events-list';
|
||||
@@ -0,0 +1,9 @@
|
||||
{{ define "main" }}
|
||||
{{ partial "site-header" . }}
|
||||
|
||||
{{ partial "events/events-list" . }}
|
||||
|
||||
{{ with (.Site.GetPage "/headless/newsletter") }}
|
||||
{{ partial "newsletter" (dict "context" . "class" "") }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
@@ -0,0 +1 @@
|
||||
{{ define "main" }}{{ end }}
|
||||
@@ -0,0 +1,75 @@
|
||||
{{ $event := . }}
|
||||
{{ $start := time.AsTime $event.Params.start }}
|
||||
|
||||
{{ $end := $start }}
|
||||
{{ with $event.Params.end }}
|
||||
{{ $end = time.AsTime . }}
|
||||
{{ end }}
|
||||
|
||||
{{ $hasStartTime := findRE "T" $event.Params.start }}
|
||||
{{ $hasEndTime := false }}
|
||||
{{ with $event.Params.end }}
|
||||
{{ $hasEndTime = findRE "T" . }}
|
||||
{{ end }}
|
||||
|
||||
<a href="{{ $event.Params.link }}" class="events-card">
|
||||
<div class="events-card__date">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.33333 1.33203V3.9987M10.6667 1.33203V3.9987M2 6.66536H14M5.33333 9.33203H5.34M8 9.33203H8.00667M10.6667 9.33203H10.6733M5.33333 11.9987H5.34M8 11.9987H8.00667M10.6667 11.9987H10.6733M3.33333 2.66536H12.6667C13.403 2.66536 14 3.26232 14 3.9987V13.332C14 14.0684 13.403 14.6654 12.6667 14.6654H3.33333C2.59695 14.6654 2 14.0684 2 13.332V3.9987C2 3.26232 2.59695 2.66536 3.33333 2.66536Z" stroke="#D4D9E6" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
<p>
|
||||
{{ if eq ($start.Format "2006-01-02") ($end.Format "2006-01-02") }}
|
||||
{{ $start.Format "Mon, Jan 2, 2006" }}
|
||||
{{ else }}
|
||||
{{ $start.Format "Mon, Jan 2, 2006" }} - {{ $end.Format "Mon, Jan 2, 2006" }}
|
||||
{{ end }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="events-card__content">
|
||||
<span class="events-card__type events-card__type-{{ $event.Params.type }}">{{ $event.Params.type }}</span>
|
||||
<h3 class="events-card__title">{{ $event.Title }}</h3>
|
||||
<p class="events-card__description">{{ $event.Params.description }}</p>
|
||||
|
||||
<div class="events-card__location">
|
||||
<span class="events-card__type events-card__type-mobile events-card__type-{{ $event.Params.type }}">
|
||||
{{ $event.Params.type }}
|
||||
</span>
|
||||
<p class="events-card__place">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M13.3333 6.66536C13.3333 9.99403 9.64066 13.4607 8.40066 14.5314C8.28514 14.6182 8.14452 14.6652 7.99999 14.6652C7.85546 14.6652 7.71484 14.6182 7.59932 14.5314C6.35932 13.4607 2.66666 9.99403 2.66666 6.66536C2.66666 5.25088 3.22856 3.89432 4.22875 2.89413C5.22895 1.89393 6.5855 1.33203 7.99999 1.33203C9.41448 1.33203 10.771 1.89393 11.7712 2.89413C12.7714 3.89432 13.3333 5.25088 13.3333 6.66536Z" stroke="#8F98B3" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M7.99999 8.66536C9.10456 8.66536 9.99999 7.76993 9.99999 6.66536C9.99999 5.5608 9.10456 4.66536 7.99999 4.66536C6.89542 4.66536 5.99999 5.5608 5.99999 6.66536C5.99999 7.76993 6.89542 8.66536 7.99999 8.66536Z" stroke="#8F98B3" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
{{ $event.Params.place }}
|
||||
</p>
|
||||
|
||||
{{ if $hasStartTime }}
|
||||
{{ $timeFormat := "3:04 PM" }}
|
||||
{{ if $event.Params.timezoneLabel }}
|
||||
{{ $timeFormat = "15:04" }}
|
||||
{{ end }}
|
||||
|
||||
<p class="events-card__time">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_18745_21059)">
|
||||
<path d="M8 3.9987V7.9987L10.6667 6.66536M14.6667 7.9987C14.6667 11.6806 11.6819 14.6654 8 14.6654C4.3181 14.6654 1.33333 11.6806 1.33333 7.9987C1.33333 4.3168 4.3181 1.33203 8 1.33203C11.6819 1.33203 14.6667 4.3168 14.6667 7.9987Z" stroke="#8F98B3" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_18745_21059">
|
||||
<rect width="16" height="16" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
{{ $start.Format $timeFormat }}
|
||||
{{ if and $hasEndTime (ne ($start.Format "15:04") ($end.Format "15:04")) }}
|
||||
- {{ $end.Format $timeFormat }}
|
||||
{{ end }}
|
||||
{{ with $event.Params.timezoneLabel }}
|
||||
<span class="events-card__timezone">{{ . }}</span>
|
||||
{{ end }}
|
||||
</p>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
@@ -0,0 +1,68 @@
|
||||
{{ $now := now.Unix }}
|
||||
{{ $upcoming := slice }}
|
||||
{{ $past := slice }}
|
||||
|
||||
{{ range .Pages }}
|
||||
{{ if not .Params.start }}{{ continue }}{{ end }}
|
||||
|
||||
{{ $start := time.AsTime .Params.start }}
|
||||
{{ $end := $start }}
|
||||
{{ with .Params.end }}
|
||||
{{ $end = time.AsTime . }}
|
||||
{{ end }}
|
||||
|
||||
{{ if ge $end.Unix $now }}
|
||||
{{ $upcoming = $upcoming | append (dict "page" . "start" $start "end" $end) }}
|
||||
{{ else }}
|
||||
{{ $past = $past | append (dict "page" . "start" $start "end" $end) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $upcoming = sort $upcoming "start" "asc" }}
|
||||
{{ $past = sort $past "end" "desc" }}
|
||||
|
||||
<section class="events-list">
|
||||
<div class="container">
|
||||
<div class="events-list__section events-list__section-upcoming">
|
||||
<div class="row gy-6">
|
||||
<div class="col-12 col-lg-4 events-list__section-header">
|
||||
<p class="events-list__section-subtitle">Events</p>
|
||||
<h2 class="events-list__section-title">Upcoming Events</h2>
|
||||
</div>
|
||||
|
||||
{{ if gt (len $upcoming) 0 }}
|
||||
<div class="col-12 col-lg-8 ">
|
||||
<div class="events-list__section-list">
|
||||
{{ range $upcoming }}
|
||||
{{ partial "events/events-card" .page }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ else }}
|
||||
<div class="col-12 col-lg-8">
|
||||
<p class="events-list__section-empty"></p>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="events-list__section events-list__section-past">
|
||||
<div class="row gy-6">
|
||||
<div class="col-12 col-lg-4 events-list__section-header">
|
||||
<p class="events-list__section-subtitle">Events</p>
|
||||
<h2 class="events-list__section-title">Past Events</h2>
|
||||
</div>
|
||||
|
||||
{{ if gt (len $past) 0 }}
|
||||
<div class="col-12 col-lg-8">
|
||||
<div class="events-list__section-list">
|
||||
{{ range $past }}
|
||||
{{ partial "events/events-card" .page }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
Reference in New Issue
Block a user