diff --git a/qdrant-landing/content/vsd-recap/_index.md b/qdrant-landing/content/vsd-recap/_index.md new file mode 100644 index 000000000..4407267a9 --- /dev/null +++ b/qdrant-landing/content/vsd-recap/_index.md @@ -0,0 +1,13 @@ +--- +title: Vector Space Day SF 2026 Recap +description: Watch session recordings, meet the speakers, and relive Vector Space Day 2026 in San Francisco. +url: /vector-space-day-sf-26-recap/ +social_preview_image: /vsd/vsd-link-preview.jpg +build: + render: always +cascade: + - build: + list: local + publishResources: false + render: never +--- diff --git a/qdrant-landing/content/vsd-recap/vsd-header.md b/qdrant-landing/content/vsd-recap/vsd-header.md new file mode 100644 index 000000000..0452bf838 --- /dev/null +++ b/qdrant-landing/content/vsd-recap/vsd-header.md @@ -0,0 +1,17 @@ +--- +getTickets: + text: Watch The Session Recordings + url: "#sessions" +logoLink: / +menuItems: + - id: menu-0 + name: Watch The Sessions + url: "#sessions" + - id: menu-1 + name: Meet The Speakers + url: "#speakers" + - id: menu-2 + name: Sponsors + url: "#sponsorship" +sitemapExclude: true +--- diff --git a/qdrant-landing/content/vsd-recap/vsd-hero.md b/qdrant-landing/content/vsd-recap/vsd-hero.md new file mode 100644 index 000000000..5a2228cbd --- /dev/null +++ b/qdrant-landing/content/vsd-recap/vsd-hero.md @@ -0,0 +1,9 @@ +--- +title: Vector Space Day +place: The Midway, San Francisco +eventDate: Thursday, June 11 +button: + text: Watch the Recordings + url: "#sessions" +sitemapExclude: true +--- diff --git a/qdrant-landing/content/vsd-recap/vsd-sessions.md b/qdrant-landing/content/vsd-recap/vsd-sessions.md new file mode 100644 index 000000000..f10c322ea --- /dev/null +++ b/qdrant-landing/content/vsd-recap/vsd-sessions.md @@ -0,0 +1,202 @@ +--- +title: Watch the Talks from Vector Space Day 2026 +featuredVideoId: eMLRVlUPoZw +playlistUrl: https://www.youtube.com/playlist?list=PL9IXkWSmb3691YPJcUloHXXfdPHIYjTlM +badgeIconsPath: themes/qdrant-2024/static/img/vsd-sf-26/agenda/ +sessions: + - title: We do it the hard way + description: Qdrant started for search, and remained for search. From its roots as an open source side project to millions of downloads and thousands of community members worldwide, Qdrant always sought to build the highest quality search engine, even when that meant doing things the hard way. Andre Zayarni, Qdrant Co-Founder and CEO, shared our origins, the decisions that shaped the product, and our future trajectory. Welcome to Vector Space Day. + companyLogo: /img/qdrant-logo-red-black.svg + badge: QDRANT + badge_type: qdrant + badge_icon: presentation + videoId: 6CIoByd0Vjs + speakers: + - name: Andre Zayarni + role: CEO, Co-Founder + - title: When Search Gets Serious + description: From a strong Rust core to composable retrieval primitives, Qdrant was built from the start for speed, accuracy, and flexibility. It supported thousands of projects and a growing number of enterprise businesses around the world, all from the same core engine. Manuel Meyer and Neil Kanungo shared where Qdrant is headed next and what it means for the teams building on it. + companyLogo: /img/qdrant-logo-red-black.svg + badge: QDRANT + badge_type: qdrant + badge_icon: presentation + reverse: true + videoId: _hOPIlTSWwI + speakers: + - name: Manuel Meyer + role: COO + - name: Neil Kanungo + role: Head of DevRel + - title: Continual Learning Starts with Memory + description: "Continual learning has long been treated as a training problem: new data, new gradients, new weights. But for production agents, the first unlock isn't retraining, it's memory. This talk reframed continual learning as a memory, retrieval, and state-management problem, showing how agents capture interactions, structure durable context, and improve decisions over time. Taranjeet shared patterns from building Mem0, including trade-offs of a memory layer on vector databases and what breaks at scale." + companyLogo: /img/vsd-sf-26/vsd-logos-color/Mem0.svg + badge: AGENTS & MEMORY + badge_type: agents + badge_icon: brain + videoId: yw-7Ofr27ro + speakers: + - name: Taranjeet Singh + role: CEO, Co-Founder + - title: Using GraphRAG to Improve Enterprise Governance + description: Enterprise AI agents are only as trustworthy as the rules they operate within. This talk presented a practical blueprint for combining Qdrant's vector search with a Neo4j graph governance layer — building agents that retrieve fast and stay policy-compliant. Through a live demo, they showed how the same query returns different results for different users based on governance, not just relevance. Attendees left with a concrete architecture for enterprise AI agents that are smart, fast, and safe. + companyLogo: /img/vsd-sf-26/vsd-logos-color/Adobe.svg + badge: SEARCH & RETRIEVAL + badge_type: search + badge_icon: search + reverse: true + videoId: ulnJo3eOUU8 + speakers: + - name: Murthy Chandrapaty + role: Principal Engineer + - name: Ankush Gumber + role: Software Engineer + - title: "Literal Skill Issue: Are SKILLS.md Holding Your Agents Back?" + description: SKILLS.md files have saved us from the massive headache of MCP servers, but having a human manually write and update static markdown files just doesn't scale. This session broke down the very real limitations of hardcoding what your agents can do, from brittle maintenance loops to capability ceilings that cap what agents can learn on their own. Paige Bailey explained why SKILLS.md is just our awkward transitional phase, and how we're going to replace it with dynamic, autonomous tooling that evolves as your agents do. + companyLogo: /img/vsd-sf-26/vsd-logos-color/Google-Deepmind.svg + badge: AGENTS & MEMORY + badge_type: agents + badge_icon: brain + videoId: KEW0KGsLIZw + speakers: + - name: Paige Bailey + role: Developer Relations Lead + - title: Free Your Agent's Mind...with Context Graphs + description: "AI systems need more than intelligence; they need context that persists. Without it, even strong models misinterpret information, lose decision rationale, or repeat mistakes. Context Graphs address this: a living graph capturing not just what was retrieved, but how context led to actions through tool calls, constraints, and outcomes, stitched across entities and time. This talk showed how context graphs complement retrieval with multi-hop structured assembly and built-in provenance for enterprise-ready AI." + companyLogo: /img/vsd-sf-26/vsd-logos-color/Neo4j.svg + badge: AGENTS & MEMORY + badge_type: agents + badge_icon: brain + reverse: true + videoId: SFsG3uBoHnA + speakers: + - name: Stephen Chin + role: VP of Developer Relations + - title: Building the Infra Behind 20 Billion+ Vectors + description: This talk traced HubSpot's journey from a Helm-based Qdrant deployment, where cluster provisioning and scaling were manual, error-prone, multi-step processes, to a fully automated Kubernetes Operator built on HubSpot's internal kube-operators framework. The team shared how they designed the operator to handle rolling upgrades, automated scaling, and self-healing across a fleet managing 20 billion+ vectors, and the lessons learned running Qdrant at this scale in production. + companyLogo: /img/vsd-sf-26/vsd-logos-color/Hubspot.svg + badge: SEARCH & RETRIEVAL + badge_type: search + badge_icon: search + videoId: 46aQff4pxRE + speakers: + - name: Oleg Tereshin + role: Sr Software Engineer + - name: Xin Liu + role: Tech Lead + - title: "Scaling to Billions: Lessons from Slack's Semantic Search Indexing" + description: "Slack's semantic search indexes trillions of messages into vectors, kept searchable within seconds. This open discussion skipped the \"perfect world\" diagrams and covered what it actually takes to run a vector pipeline at this scale: a Lambda architecture with a \"snowball\" caching system to avoid recomputing billions of embeddings weekly, greedy batching for a 3x inference speedup, and a candid look at why complex quantization methods failed in production." + companyLogo: /img/vsd-sf-26/vsd-logos-color/Slack.svg + badge: SEARCH & RETRIEVAL + badge_type: search + badge_icon: search + reverse: true + videoId: 2cUC38rv7PQ + speakers: + - name: Avirek Ghatia + role: Staff Software Engineer + - name: Brian O'Grady + role: Head of Solutions Architecture + - title: Building the DNA of Search + description: "Qdrant was engineered from the ground up for performance, scale, and flexibility — and Oncotelic Therapeutics put it to the test. Indexing 28M PubMed abstracts to power AI-driven drug development, Oncotelic compressed concept-to-clinic to ~2 years — a fraction of the typical biotech timeline. In this conversation, Qdrant Engineering and Oncotelic walked through what matters most for search at scale: hybrid retrieval, MeSH-enriched metadata filtering, and the operational realities of running a vector database in production." + companyLogo: /img/vsd-sf-26/vsd-logos-color/Co-Logos-Row.svg + companyLogoWide: true + companyLogoOffset: + placement: top + value: -4 + badge: QDRANT + badge_type: qdrant + badge_icon: presentation + videoId: srmU9n95ce0 + speakers: + - name: Bastian Hofmann + role: Head of Product, Qdrant + - name: Saran Saund + role: CBO, Oncotelic Therapeutics + - name: Scott Myers + role: PM, Oncotelic Therapeutics + - title: Building Distributed, Enterprise-ready Agentic AI + description: A high-level look at building intelligent, enterprise-grade AI agents using modern tools and infrastructure. This session explored how scalable systems can support context-aware reasoning, long-term memory, and real-time decision-making at production scale. Gabriel Lebow framed the key architectural patterns behind reliable AI agents in enterprise environments, from retrieval and orchestration to evaluation and observability, and shared how Vultr's global cloud infrastructure powers distributed AI workloads for companies shipping agents today. + companyLogo: /img/vsd-sf-26/vsd-logos-color/Vultr.svg + badge: AGENTS & MEMORY + badge_type: agents + badge_icon: brain + reverse: true + videoId: 6t9EC8bSJ64 + speakers: + - name: Gabriel Lebow + role: Sr GPU Solutions Engineer + - title: "The Document Harness: What Your AI Misses in the 90%" + description: An estimated 90% of enterprise data is unstructured, living in PDFs, PowerPoints, Word, and Excel files that power a majority of knowledge work. There's a huge opportunity to build autonomous agents that can understand, reason over, and edit massive quantities of documents. But real-world documents are too complex for even frontier models to understand. This session walked through core challenges and advances in document OCR and agent harnesses enabling modern document workflow automation. + companyLogo: /img/vsd-sf-26/vsd-logos-color/LlamaIndex.svg + badge: AGENTS & MEMORY + badge_type: agents + badge_icon: brain + videoId: eO7l6j55PxE + speakers: + - name: Preston Carlson + role: AI Engineer + - title: "Stop Vibe Shipping: Evaluate Your Retrieval" + description: '"Looks good to me" is not an evaluation strategy. Yet most teams ship retrieval systems that way: tweak the chunking, run a few demo queries, call it done. This talk replaced vibes with measurement. Laurie Voss covered retrieval metrics that actually matter, how to build golden datasets that survive contact with reality, where LLM-as-judge helps and where it lies, and how to wire continuous evals into CI so regressions show up before customer complaints.' + companyLogo: /img/vsd-sf-26/vsd-logos-color/ArizeAI.svg + badge: SEARCH & RETRIEVAL + badge_type: search + badge_icon: search + reverse: true + videoId: mhhMjHq2yN8 + speakers: + - name: Laurie Voss + role: Head of Developer Relations + - title: "Beyond the Single API Call: Agentic Video Intelligence" + description: Video is a highly information-dense modality, and processing it at scale requires more than standard embed-store-retrieve pipelines. This talk explored how Twelve Labs' multimodal foundation models enable rich semantic understanding of video, from domain-specific search to structured metadata extraction. James Le walked through a real-world anomaly detection app built on Twelve Labs and Qdrant, and introduced Jockey, an agentic framework for multi-step video workflows. + companyLogo: /img/vsd-sf-26/vsd-logos-color/TwelveLabs.svg + badge: SEARCH & RETRIEVAL + badge_type: search + badge_icon: search + videoId: i8xZeKP6t6k + speakers: + - name: James Le + role: Head of Dev Experience + - title: The Long and the Short of AI Memory + description: "What is AI Memory today? Where does it live: markdown files, vectors, graphs, or somewhere else? And where will it be tomorrow? The answer matters because memory is quickly becoming the differentiator between agents that forget everything between sessions and agents that actually compound knowledge over time. In this talk, Dave shared examples of how short-term and long-term memory are used in production today, using OpenClaw as a hands-on example to illustrate the patterns and trade-offs." + companyLogo: /img/vsd-sf-26/vsd-logos-color/Cognee.svg + badge: AGENTS & MEMORY + badge_type: agents + badge_icon: brain + reverse: true + videoId: UKw6PUgsUTQ + speakers: + - name: Dave Nielsen + role: Head of Developer Relations + - title: The World is Becoming More Searchable + description: The surface areas of search are only increasing as more and more data is captured from the physical and digital world. Embeddable systems unlock the ability to run local search across millions of devices, enabling AI at the edge without relying on round trips to the cloud. Dylan Couzon shared what Qdrant Edge is, how it's built, the use cases it opens up, and why it fundamentally changes the game for teams building on-device AI experiences. + companyLogo: /img/qdrant-logo-red-black.svg + badge: EDGE & ROBOTICS + badge_type: edge + badge_icon: database + videoId: RRhbORtWeMI + speakers: + - name: Dylan Couzon + role: Developer Relations Engineer + - title: "When Latency Is the Product: Practical Patterns for On-Device GenAI" + description: "Agents are moving from the cloud to the edge — onto phones, PCs, and edge devices that perceive and act in real time. Alan Zhu shared practical patterns for building agentic AI on-device: how to run models and tap local context for retrieval and memory. He covered the NPU — a chip built for AI inference — and why sustained, private, low-latency AI workloads win on the edge, and how Qualcomm AI Hub lets you optimize any model and run it across devices." + companyLogo: /img/vsd-sf-26/vsd-logos-color/Qualcomm.svg + badge: EDGE & ROBOTICS + badge_type: edge + badge_icon: database + reverse: true + videoId: FlAmmVSYbZY + speakers: + - name: Alan Zhu + role: Senior Product Manager + - title: Tell the Robot What You Want + description: Sandhya Subramani demonstrated how to build robots that respond to natural language commands using an open-source agentic AI framework. Sensors and actuators became agent tools, translating intents into actions. A lightweight hybrid architecture handled low-latency control locally on edge devices while delegating complex reasoning to the cloud. She explored hybrid edge-cloud patterns for low-latency control and intelligent planning, demonstrated live with a working robot. + companyLogo: /img/vsd-sf-26/vsd-logos-color/AWS.svg + badge: EDGE & ROBOTICS + badge_type: edge + badge_icon: database + videoId: lfW9CjAh7a0 + speakers: + - name: Sandhya Subramani + role: Sr. Dev Advocate, GenAI +sitemapExclude: true +--- diff --git a/qdrant-landing/content/vsd-recap/vsd-speaker-lineup.md b/qdrant-landing/content/vsd-recap/vsd-speaker-lineup.md new file mode 100644 index 000000000..5c1b62e11 --- /dev/null +++ b/qdrant-landing/content/vsd-recap/vsd-speaker-lineup.md @@ -0,0 +1,82 @@ +--- +title: Meet the Speakers +description: "We've built a handpicked lineup of technical talks across 3 agenda tracks: Search & AI Retrieval, Agents & Memory, and Edge & Robotics AI." +logos: + - id: 0 + src: /img/vsd-sf-26/vsd-logos/LlamaIndex.svg + alt: LlamaIndex logo + - id: 1 + src: /img/vsd-sf-26/vsd-logos/Google-Deepmind.svg + alt: Google DeepMind logo + - id: 2 + src: /img/vsd-sf-26/vsd-logos/ArizeAI.svg + alt: ArizeAI logo + - id: 3 + src: /img/vsd-sf-26/vsd-logos/TwelveLabs.svg + alt: TwelveLabs logo + - id: 4 + src: /img/vsd-sf-26/vsd-logos/Mem0.svg + alt: Mem0 logo + - id: 5 + src: /img/vsd-sf-26/vsd-logos/Neo4j.svg + alt: Neo4j logo + - id: 6 + src: /img/vsd-sf-26/vsd-logos/Cognee.svg + alt: Cognee logo + - id: 7 + src: /img/vsd-sf-26/vsd-logos/Qualcomm.svg + alt: Qualcomm logo + - id: 8 + src: /img/vsd-sf-26/vsd-logos/Adobe.svg + alt: Adobe logo + - id: 9 + src: /img/vsd-sf-26/vsd-logos/Hubspot.svg + alt: Hubspot logo + - id: 10 + src: /img/vsd-sf-26/vsd-logos/Slack.svg + alt: Slack logo +speakers: + - companyLogo: /img/vsd-sf-26/vsd-logos/Mem0.svg + speaker: Taranjeet Singh, CEO, Co-Founder + theme: Continual Learning Starts with Memory + - companyLogo: /img/vsd-sf-26/vsd-logos/Adobe.svg + speaker: Murthy Chandrapaty, Principal Engineer
Ankush Gumber, Software Engineer + theme: Using GraphRAG to Improve Enterprise Governance + - companyLogo: /img/vsd-sf-26/vsd-logos/Google-Deepmind.svg + speaker: Paige Bailey, Developer Relations Lead + theme: "Literal Skill Issue: Are SKILLS.md Holding Your Agents Back?" + - companyLogo: /img/vsd-sf-26/vsd-logos/Neo4j.svg + speaker: Stephen Chin, VP of Developer Relations + theme: Free Your Agent's Mind...with Context Graphs + - companyLogo: /img/vsd-sf-26/vsd-logos/Hubspot.svg + speaker: Oleg Tereshin, Sr Software Engineer
Xin Liu, Tech Lead + theme: Building the Infra Behind 20 Billion+ Vectors + - companyLogo: /img/vsd-sf-26/vsd-logos/Slack.svg + speaker: Avirek Ghatia, Staff Software Engineer + theme: "Scaling to Billions: Lessons from Slack's Semantic Search Indexing" + - companyLogo: /img/vsd-sf-26/vsd-logos/Vultr.svg + speaker: Gabriel Lebow, Sr GPU Solutions Engineer + theme: Building Distributed, Enterprise-ready Agentic AI + - companyLogo: /img/vsd-sf-26/vsd-logos/LlamaIndex.svg + speaker: Preston Carlson, AI Engineer + theme: "The Document Harness: What Your AI Misses in the 90%" + - companyLogo: /img/vsd-sf-26/vsd-logos/ArizeAI.svg + speaker: Laurie Voss, Head of Developer Relations + theme: "Stop Vibe Shipping: Evaluate Your Retrieval" + - companyLogo: /img/vsd-sf-26/vsd-logos/TwelveLabs.svg + speaker: James Le, Head of Dev Experience + theme: "Beyond the Single API Call: Agentic Video Intelligence" + - companyLogo: /img/vsd-sf-26/vsd-logos/Cognee.svg + speaker: Dave Nielsen, Head of Developer Relations + theme: The Long and the Short of AI Memory + - companyLogo: /img/vsd-sf-26/vsd-logos/Qualcomm.svg + speaker: Alan Zhu, Senior Product Manager + theme: "When Latency Is the Product: Practical Patterns for On-Device GenAI" + - companyLogo: /img/vsd-sf-26/vsd-logos/AWS.svg + speaker: Sandhya Subramani, Sr. Dev Advocate, GenAI + theme: Tell the Robot What You Want +button: + text: See Agenda + url: /vector-space-day-sf-26/agenda/ +sitemapExclude: true +--- diff --git a/qdrant-landing/content/vsd-recap/vsd-sponsors.md b/qdrant-landing/content/vsd-recap/vsd-sponsors.md new file mode 100644 index 000000000..9e69adbee --- /dev/null +++ b/qdrant-landing/content/vsd-recap/vsd-sponsors.md @@ -0,0 +1,18 @@ +--- +sponsors: + title: Sponsors + logos: + - id: 0 + src: /img/vsd-sf-26/vsd-logos/AWS.svg + alt: AWS logo + - id: 1 + src: /img/vsd-sf-26/vsd-logos/Vultr.svg + alt: Vultr logo +communitySponsor: + title: Community Sponsor + logos: + - id: 2 + src: /img/vsd-sf-26/vsd-logos/Hackersquad.svg + alt: HackerSquad logo +sitemapExclude: true +--- diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/main.scss b/qdrant-landing/themes/qdrant-2024/assets/css/main.scss index 12b60ba35..90fdf924e 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/main.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/main.scss @@ -137,12 +137,7 @@ @import 'partials/industries/industries-architecture'; @import 'partials/industries/industries-dark-banner'; @import 'partials/industries/industries-logos'; -@import 'partials/vsd/vsd-speaker-lineup'; -@import 'partials/vsd/vsd-last-year'; -@import 'partials/vsd/vsd-sponsors'; +@import 'partials/vsd/index'; +@import 'partials/vsd-recap/index'; @import 'partials/vsd/vsd-agenda'; -@import 'partials/vsd/vsd-hero'; -@import 'partials/vsd/vsd-last-year-carousel'; -@import 'partials/vsd/vsd-faq'; -@import 'partials/vsd/vsd-join-us'; @import 'partials/agenda'; diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_index.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_index.scss new file mode 100644 index 000000000..30718799f --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_index.scss @@ -0,0 +1,3 @@ +@import 'vsd-recap-sessions'; +@import 'vsd-recap-speaker-lineup'; +@import 'vsd-recap-sponsors'; diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-sessions.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-sessions.scss new file mode 100644 index 000000000..9c415d503 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-sessions.scss @@ -0,0 +1,343 @@ +@use '../../helpers/functions' as *; + +.vsd-recap-sessions { + padding: pxToRem(80) 0; + background-color: $neutral-94; + + &__title { + margin: 0 0 pxToRem(64); + font-size: pxToRem(32); + font-weight: 600; + line-height: 1.3; + letter-spacing: -0.5px; + text-align: center; + color: $neutral-20; + } + + &__featured { + position: relative; + width: 100%; + max-width: pxToRem(920); + aspect-ratio: 16 / 9; + height: auto; + margin: 0 auto pxToRem(64); + background-color: $neutral-90; + overflow: hidden; + + iframe { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + border: 0; + } + } + + &__cards { + display: flex; + flex-direction: column; + gap: pxToRem(64); + } + + &__card { + display: flex; + flex-direction: column; + gap: pxToRem(20); + padding: pxToRem(20); + border: pxToRem(1) solid rgba(0, 0, 0, 0.12); + border-radius: pxToRem(8); + background-color: $neutral-98; + + &_reverse { + .vsd-recap-sessions__card-content, + .vsd-recap-sessions__video { + order: unset; + } + } + } + + &__card-content { + display: flex; + flex-direction: column; + gap: pxToRem(20); + min-width: 0; + } + + &__card-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: pxToRem(16); + flex-shrink: 0; + overflow: visible; + } + + &__card-logo { + height: pxToRem(24); + width: auto; + max-width: pxToRem(168); + object-fit: contain; + } + + // Co-logo row: same height + width:auto principles as agenda-page__slot-company-logo + &__card-logo#{&}__card-logo_wide { + max-width: none; + width: auto; + height: pxToRem(32); + + @include media-breakpoint-up(lg) { + height: pxToRem(44); + } + } + + &__card-body { + display: flex; + flex-direction: column; + gap: pxToRem(16); + } + + &__card-title { + margin: 0; + font-size: pxToRem(20); + line-height: 1.5; + letter-spacing: -0.2px; + font-weight: 600; + color: $neutral-20; + flex-shrink: 0; + } + + &__card-description { + margin: 0; + font-size: pxToRem(16); + line-height: 1.5; + color: $neutral-20; + } + + &__speakers { + display: flex; + flex-direction: column; + gap: pxToRem(16); + flex-shrink: 0; + } + + &__speaker { + display: flex; + flex-direction: column; + margin: 0; + font-size: pxToRem(16); + line-height: 1.5; + } + + &__speaker-name { + font-weight: 600; + color: $neutral-20; + } + + &__speaker-role { + color: $neutral-50; + } + + &__video { + position: relative; + width: 100%; + aspect-ratio: 16 / 9; + height: auto; + flex-shrink: 0; + align-self: flex-start; + background-color: $neutral-90; + border-radius: pxToRem(3); + overflow: hidden; + + iframe { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + border: 0; + } + } + + &__video-placeholder { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + background-color: $neutral-90; + color: $neutral-50; + font-size: pxToRem(16); + font-weight: 600; + text-decoration: none; + + &:hover { + color: $primary-50; + } + } + + &__badge { + display: inline-flex; + align-items: center; + justify-content: center; + gap: pxToRem(7); + padding: pxToRem(6); + border-radius: pxToRem(8); + font-size: pxToRem(14); + font-weight: 500; + letter-spacing: -0.2px; + text-transform: uppercase; + white-space: nowrap; + flex-shrink: 0; + box-shadow: + inset 0 pxToRem(-1) pxToRem(1) rgba(0, 0, 0, 0.1), + inset 0 pxToRem(1) pxToRem(1) rgba(255, 255, 255, 0.1); + + svg { + width: pxToRem(24); + height: pxToRem(24); + flex-shrink: 0; + } + + &-label { + display: none; + } + + &--qdrant { + color: $primary-50; + background-color: rgba($primary-50, 0.1); + } + + &--search { + color: #00897b; + background-color: rgba(#009688, 0.1); + } + + &--agents { + color: #6047ff; + background-color: rgba(96, 71, 255, 0.1); + } + + &--edge { + color: #0288d1; + background-color: rgba(3, 169, 244, 0.1); + } + } + + @include media-breakpoint-up(lg) { + padding: pxToRem(120) 0; + + &__title { + max-width: pxToRem(840); + margin: 0 auto pxToRem(80); + font-size: pxToRem(40); + line-height: 1.2; + } + + &__featured { + margin-bottom: pxToRem(80); + } + + &__cards { + gap: pxToRem(80); + } + + &__card { + flex-direction: row; + align-items: stretch; + // height = video_width × (9/16) + 2 × padding = 500px × 0.5625 + 80px = 361.25px + height: calc(#{pxToRem(500)} * 9 / 16 + #{pxToRem(80)}); + gap: pxToRem(30); + padding: pxToRem(40); + } + + &__card-content { + flex: 1 1 0; + min-width: 0; + min-height: 0; + gap: pxToRem(30); + overflow: visible; + } + + &__card-body { + flex: 1 1 0; + min-height: 0; + gap: pxToRem(4); + overflow: hidden; + } + + &__card-title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + &__card-logo { + margin-block: 0; + } + + &__card-description { + flex: 0 0 auto; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + } + + &__card[data-speakers="0"] .vsd-recap-sessions__card-description { -webkit-line-clamp: 6; line-clamp: 6; } + &__card[data-speakers="1"] .vsd-recap-sessions__card-description { -webkit-line-clamp: 5; line-clamp: 5; } + &__card[data-speakers="2"] .vsd-recap-sessions__card-description { -webkit-line-clamp: 4; line-clamp: 4; } + &__card[data-speakers="3"] .vsd-recap-sessions__card-description { -webkit-line-clamp: 3; line-clamp: 3; } + &__card[data-speakers="4"] .vsd-recap-sessions__card-description { -webkit-line-clamp: 2; line-clamp: 2; } + + &__video { + flex: 0 0 auto; + width: pxToRem(500); + max-width: calc(50% - #{pxToRem(15)}); + align-self: center; + } + + &__card-description, + &__speaker { + font-size: pxToRem(18); + } + + &__card { + &_reverse { + flex-direction: row-reverse; + } + } + + &__speakers { + gap: 0; + margin-top: auto; + } + + &__speaker { + flex-direction: row; + } + + &__speaker-name + &__speaker-role { + margin-left: pxToRem(10); + } + + &__badge { + gap: pxToRem(7); + padding: pxToRem(6) pxToRem(11); + font-size: pxToRem(14); + + svg { + width: pxToRem(17); + height: pxToRem(17); + } + + &-label { + display: inline; + } + } + } + + @include media-breakpoint-up(xl) { + &__featured { + width: pxToRem(920); + max-width: 100%; + } + } +} diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-speaker-lineup.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-speaker-lineup.scss new file mode 100644 index 000000000..04fdb3c19 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-speaker-lineup.scss @@ -0,0 +1,183 @@ +@use '../../helpers/functions' as *; + +.vsd-recap-speaker-lineup { + padding: pxToRem(80) 0; + background-color: #0b0f19; + position: relative; + overflow: hidden; + + &:after { + content: ""; + display: block; + position: absolute; + right: 0; + bottom: 0; + width: 100%; + height: pxToRem(369); + background-image: url('/img/blurred/blurred-light-30.svg'); + background-position: bottom; + background-size: cover; + background-repeat: no-repeat; + pointer-events: none; + z-index: 0; + } + + .container { + position: relative; + z-index: 1; + } + + &__banner { + display: flex; + flex-direction: column; + align-items: center; + gap: pxToRem(64); + position: relative; + } + + &__intro, + &__cards, + &__button { + position: relative; + z-index: 1; + } + + &__intro { + display: flex; + flex-direction: column; + align-items: center; + gap: pxToRem(64); + width: 100%; + max-width: pxToRem(780); + text-align: center; + } + + &__title { + margin: 0; + font-size: pxToRem(32); + line-height: 1.2; + letter-spacing: -0.5px; + color: $neutral-98; + } + + &__description { + margin: 0; + font-size: pxToRem(18); + line-height: 1.5; + color: #abb1c7; + } + + &__logos { + display: flex; + flex-direction: column; + width: 100%; + } + + &__logo { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + min-height: pxToRem(50); + padding: pxToRem(11) pxToRem(22); + border: pxToRem(1) solid rgba(255, 255, 255, 0.12); + margin-top: pxToRem(-1); + + img { + height: pxToRem(27); + width: auto; + max-width: pxToRem(142); + object-fit: contain; + } + } + + &__cards { + display: flex; + flex-direction: column; + gap: 0; + width: 100%; + max-width: pxToRem(1017); + } + + &__card { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: pxToRem(16); + padding: pxToRem(40) pxToRem(24); + border: pxToRem(1) solid rgba(255, 255, 255, 0.12); + margin-top: pxToRem(-1); + } + + &__card-logo { + display: block; + align-self: flex-start; + flex-shrink: 0; + height: pxToRem(32); + width: auto; + max-width: none; + object-fit: contain; + object-position: left center; + } + + &__card-speaker { + margin: 0; + width: 100%; + font-size: pxToRem(20); + line-height: 1.1; + letter-spacing: -0.5px; + font-weight: 600; + color: #abb1c7; + } + + &__card-theme { + margin: 0; + width: 100%; + font-size: pxToRem(20); + line-height: 1.1; + letter-spacing: -0.5px; + font-weight: 400; + color: #abb1c7; + } + + &__button { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + margin: 0 auto; + box-sizing: border-box; + } + + @include media-breakpoint-up(lg) { + &__title { + font-size: pxToRem(40); + } + + &__logos { + flex-direction: row; + flex-wrap: wrap; + justify-content: center; + } + + &__logo { + width: auto; + margin-left: pxToRem(-1); + } + + &__card { + padding: pxToRem(40) pxToRem(64); + } + + &__card-speaker br { + display: none; + } + + &__button { + display: flex; + width: fit-content; + margin-left: auto; + margin-right: auto; + } + } +} diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-sponsors.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-sponsors.scss new file mode 100644 index 000000000..85ddf8b90 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd-recap/_vsd-recap-sponsors.scss @@ -0,0 +1,166 @@ +@use '../../helpers/functions' as *; + +.vsd-recap-sponsors { + padding: pxToRem(80) 0; + background-color: $neutral-94; + + &__banner { + display: flex; + flex-direction: column; + gap: pxToRem(80); + padding: pxToRem(64) pxToRem(24); + border-radius: pxToRem(16); + background-color: #0b0f19; + position: relative; + overflow: hidden; + + &:before { + content: ""; + display: block; + position: absolute; + left: 50%; + top: 50%; + translate: -50% -50%; + width: 100%; + max-width: pxToRem(1110); + height: pxToRem(369); + background-image: url('/img/vsd-sf-26/agenda/texture.png'); + background-size: pxToRem(820) pxToRem(820); + background-position: top left; + background-repeat: no-repeat; + opacity: 0.8; + mix-blend-mode: overlay; + pointer-events: none; + } + + &:after { + content: ""; + display: block; + position: absolute; + right: 0; + bottom: 0; + width: 100%; + height: pxToRem(369); + background-image: url('/img/blurred/blurred-light-30.svg'); + background-position: bottom; + background-size: cover; + background-repeat: no-repeat; + pointer-events: none; + } + } + + &__group { + position: relative; + z-index: 1; + display: flex; + flex-direction: column; + gap: pxToRem(32); + + &_community { + align-items: flex-start; + } + } + + &__title { + margin: 0; + font-size: pxToRem(32); + line-height: 1.2; + letter-spacing: -0.5px; + color: $neutral-98; + } + + &__subtitle { + margin: 0; + font-size: pxToRem(32); + line-height: 1.2; + letter-spacing: -0.5px; + font-weight: 600; + color: $neutral-98; + } + + &__logos { + display: flex; + flex-direction: column; + width: 100%; + } + + &__logo { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + min-height: pxToRem(74); + padding: pxToRem(17) pxToRem(40); + border: pxToRem(1) solid #303547; + margin-top: pxToRem(-1); + + img { + display: block; + height: pxToRem(40); + width: auto; + max-width: pxToRem(214); + object-fit: contain; + } + } + + @include media-breakpoint-up(lg) { + &__banner { + flex-direction: row; + align-items: center; + justify-content: space-between; + gap: pxToRem(80); + padding: pxToRem(64) pxToRem(165); + } + + &__title { + font-size: pxToRem(40); + } + + &__subtitle { + font-family: $font-family-monospace; + font-size: pxToRem(16); + line-height: 1.5; + font-weight: 400; + text-transform: uppercase; + color: #abb1c7; + } + + &__logos { + flex-direction: row; + flex-wrap: wrap; + width: auto; + } + + &__logo { + width: auto; + margin-left: pxToRem(-1); + } + + &__group_community { + align-self: stretch; + align-items: stretch; + justify-content: space-between; + width: pxToRem(164); + + .vsd-recap-sponsors__subtitle { + display: flex; + align-items: center; + width: 100%; + min-height: pxToRem(48); + } + + .vsd-recap-sponsors__logos { + flex-direction: column; + flex-wrap: nowrap; + width: pxToRem(164); + height: pxToRem(73); + } + + .vsd-recap-sponsors__logo { + width: 100%; + margin-left: 0; + padding: pxToRem(17) pxToRem(65); + } + } + } +} diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd/_index.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd/_index.scss new file mode 100644 index 000000000..9f9dd7d85 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd/_index.scss @@ -0,0 +1,7 @@ +@import 'vsd-speaker-lineup'; +@import 'vsd-last-year'; +@import 'vsd-sponsors'; +@import 'vsd-hero'; +@import 'vsd-last-year-carousel'; +@import 'vsd-faq'; +@import 'vsd-join-us'; diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd/_vsd-hero.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd/_vsd-hero.scss index ce283f01f..3e613dbf4 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd/_vsd-hero.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/vsd/_vsd-hero.scss @@ -151,4 +151,37 @@ line-height: pxToRem(84); } } + + &--recap { + @include media-breakpoint-down(lg) { + .vsd-hero__banner { + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + min-height: pxToRem(565); + padding: pxToRem(20); + text-align: center; + } + + .vsd-hero__place { + flex-direction: row; + flex-wrap: wrap; + gap: pxToRem(8); + margin-bottom: 0; + justify-content: center; + + p { + font-size: pxToRem(16); + line-height: 1.5; + } + } + + .vsd-hero__title { + margin-bottom: 0; + font-size: pxToRem(56); + line-height: 1.1; + } + } + } } \ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-sessions.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-sessions.html new file mode 100644 index 000000000..2719b76d3 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-sessions.html @@ -0,0 +1,104 @@ +{{ with (.Site.GetPage "/vsd-recap/vsd-sessions") }} + {{ $badgeIconsPath := .Params.badgeIconsPath }} +
+
+

{{ .Params.title }}

+ + {{ with .Params.featuredVideoId }} + + {{ end }} + +
+ {{ range .Params.sessions }} +
+
+
+ {{ if .companyLogo }} + + {{ end }} + {{ if .badge }} + + {{ with .badge_icon }} + {{ partial "svg" (dict "icon" . "path" $badgeIconsPath) }} + {{ end }} + {{ .badge }} + + {{ end }} +
+ +
+

{{ .title }}

+

{{ .description }}

+ + {{ with .speakers }} +
+ {{ range . }} +

+ {{ .name }} + {{ .role }} +

+ {{ end }} +
+ {{ end }} +
+
+ +
+ {{ if .videoId }} + + {{ else }} + + Watch on YouTube + + {{ end }} +
+
+ {{ end }} +
+
+
+ +{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-speaker-lineup.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-speaker-lineup.html new file mode 100644 index 000000000..49bd8df75 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-speaker-lineup.html @@ -0,0 +1,39 @@ +{{ with (.Site.GetPage "/vsd-recap/vsd-speaker-lineup") }} +
+
+
+
+

{{ .Params.title }}

+ +
+ {{ range .Params.logos }} + + {{ end }} +
+ +

{{ .Params.description | safeHTML }}

+
+ + {{ with .Params.speakers }} +
+ {{ range . }} +
+ {{ with .companyLogo }} + + {{ end }} +

{{ .speaker | safeHTML }}

+

{{ .theme }}

+
+ {{ end }} +
+ {{ end }} + + + {{ .Params.button.text }} + +
+
+
+{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-sponsors.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-sponsors.html new file mode 100644 index 000000000..48b1d604e --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd-recap/vsd-sponsors.html @@ -0,0 +1,29 @@ +{{ with (.Site.GetPage "/vsd-recap/vsd-sponsors") }} +
+
+
+
+

{{ .Params.sponsors.title }}

+
+ {{ range .Params.sponsors.logos }} + + {{ end }} +
+
+ +
+

{{ .Params.communitySponsor.title }}

+
+ {{ range .Params.communitySponsor.logos }} + + {{ end }} +
+
+
+
+
+{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd/vsd-header.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd/vsd-header.html index a0af9cfe0..8eba861b7 100644 --- a/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd/vsd-header.html +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/vsd/vsd-header.html @@ -1,4 +1,5 @@ -{{ with (.Site.GetPage "/vsd/vsd-header") }} +{{ $root := .Scratch.Get "vsdContentRoot" | default "/vsd" }} +{{ with (.Site.GetPage (printf "%s/vsd-header" $root)) }}