Vsd 26 recap page (#2467)

* add vsd recap page

* fixes

* fix logos and styles
This commit is contained in:
trean
2026-07-02 20:08:23 +02:00
committed by GitHub
parent 5567b0ad10
commit 637c06d69a
34 changed files with 1479 additions and 11 deletions
@@ -0,0 +1,104 @@
{{ with (.Site.GetPage "/vsd-recap/vsd-sessions") }}
{{ $badgeIconsPath := .Params.badgeIconsPath }}
<section class="vsd-recap-sessions" id="sessions">
<div class="container">
<h2 class="vsd-recap-sessions__title">{{ .Params.title }}</h2>
{{ with .Params.featuredVideoId }}
<div class="vsd-recap-sessions__featured">
<iframe
src="https://www.youtube.com/embed/{{ . }}?rel=0"
title="Vector Space Day Highlights"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerpolicy="strict-origin-when-cross-origin"
allowfullscreen
loading="lazy"
></iframe>
</div>
{{ end }}
<div class="vsd-recap-sessions__cards">
{{ range .Params.sessions }}
<article class="vsd-recap-sessions__card{{ if .reverse }} vsd-recap-sessions__card_reverse{{ end }}" data-speakers="{{ len .speakers }}">
<div class="vsd-recap-sessions__card-content">
<div class="vsd-recap-sessions__card-header">
{{ if .companyLogo }}
<img
src="{{ .companyLogo }}"
alt=""
class="vsd-recap-sessions__card-logo{{ if .companyLogoWide }} vsd-recap-sessions__card-logo_wide{{ end }}"
{{ with .companyLogoOffset }}
style="transform: translateY({{ .value }}px);"
{{ end }}
loading="lazy"
decoding="async"
/>
{{ end }}
{{ if .badge }}
<span class="vsd-recap-sessions__badge vsd-recap-sessions__badge--{{ .badge_type }}">
{{ with .badge_icon }}
{{ partial "svg" (dict "icon" . "path" $badgeIconsPath) }}
{{ end }}
<span class="vsd-recap-sessions__badge-label">{{ .badge }}</span>
</span>
{{ end }}
</div>
<div class="vsd-recap-sessions__card-body">
<h3 class="vsd-recap-sessions__card-title">{{ .title }}</h3>
<p class="vsd-recap-sessions__card-description">{{ .description }}</p>
{{ with .speakers }}
<div class="vsd-recap-sessions__speakers">
{{ range . }}
<p class="vsd-recap-sessions__speaker">
<span class="vsd-recap-sessions__speaker-name">{{ .name }}</span>
<span class="vsd-recap-sessions__speaker-role">{{ .role }}</span>
</p>
{{ end }}
</div>
{{ end }}
</div>
</div>
<div class="vsd-recap-sessions__video">
{{ if .videoId }}
<iframe
src="https://www.youtube.com/embed/{{ .videoId }}?rel=0"
title="{{ .title }}"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
referrerpolicy="strict-origin-when-cross-origin"
allowfullscreen
loading="lazy"
></iframe>
{{ else }}
<a
class="vsd-recap-sessions__video-placeholder"
href="{{ $.Params.playlistUrl }}"
target="_blank"
rel="noopener noreferrer"
>
<span>Watch on YouTube</span>
</a>
{{ end }}
</div>
</article>
{{ end }}
</div>
</div>
</section>
<script>
(function () {
if (window.innerWidth < 992) return;
document.querySelectorAll('.vsd-recap-sessions__card-description').forEach(function (el) {
if (el.scrollHeight <= el.clientHeight) return;
var words = el.textContent.split(/\s+/);
while (words.length && el.scrollHeight > el.clientHeight) {
words.pop();
el.textContent = words.join(' ') + '\u2026';
}
el.textContent = words.join(' ').replace(/[,;:\-–—]+$/, '') + '\u2026';
});
})();
</script>
{{ end }}
@@ -0,0 +1,39 @@
{{ with (.Site.GetPage "/vsd-recap/vsd-speaker-lineup") }}
<section class="vsd-recap-speaker-lineup" id="speakers">
<div class="container">
<div class="vsd-recap-speaker-lineup__banner">
<div class="vsd-recap-speaker-lineup__intro">
<h2 class="vsd-recap-speaker-lineup__title">{{ .Params.title }}</h2>
<div class="vsd-recap-speaker-lineup__logos">
{{ range .Params.logos }}
<div class="vsd-recap-speaker-lineup__logo">
<img src="{{ .src }}" alt="{{ .alt }}" loading="lazy" decoding="async">
</div>
{{ end }}
</div>
<p class="vsd-recap-speaker-lineup__description">{{ .Params.description | safeHTML }}</p>
</div>
{{ with .Params.speakers }}
<div class="vsd-recap-speaker-lineup__cards">
{{ range . }}
<article class="vsd-recap-speaker-lineup__card">
{{ with .companyLogo }}
<img src="{{ . }}" alt="" class="vsd-recap-speaker-lineup__card-logo" loading="lazy" decoding="async">
{{ end }}
<p class="vsd-recap-speaker-lineup__card-speaker">{{ .speaker | safeHTML }}</p>
<p class="vsd-recap-speaker-lineup__card-theme">{{ .theme }}</p>
</article>
{{ end }}
</div>
{{ end }}
<a href="{{ .Params.button.url }}" class="button button_contained button_lg vsd-recap-speaker-lineup__button">
{{ .Params.button.text }}
</a>
</div>
</div>
</section>
{{ end }}
@@ -0,0 +1,29 @@
{{ with (.Site.GetPage "/vsd-recap/vsd-sponsors") }}
<section class="vsd-recap-sponsors" id="sponsorship">
<div class="container">
<div class="vsd-recap-sponsors__banner">
<div class="vsd-recap-sponsors__group">
<h2 class="vsd-recap-sponsors__title">{{ .Params.sponsors.title }}</h2>
<div class="vsd-recap-sponsors__logos">
{{ range .Params.sponsors.logos }}
<div class="vsd-recap-sponsors__logo">
<img src="{{ .src }}" alt="{{ .alt }}" loading="lazy" decoding="async">
</div>
{{ end }}
</div>
</div>
<div class="vsd-recap-sponsors__group vsd-recap-sponsors__group_community">
<p class="vsd-recap-sponsors__subtitle">{{ .Params.communitySponsor.title }}</p>
<div class="vsd-recap-sponsors__logos">
{{ range .Params.communitySponsor.logos }}
<div class="vsd-recap-sponsors__logo">
<img src="{{ .src }}" alt="{{ .alt }}" loading="lazy" decoding="async">
</div>
{{ end }}
</div>
</div>
</div>
</div>
</section>
{{ end }}
@@ -1,4 +1,5 @@
{{ with (.Site.GetPage "/vsd/vsd-header") }}
{{ $root := .Scratch.Get "vsdContentRoot" | default "/vsd" }}
{{ with (.Site.GetPage (printf "%s/vsd-header" $root)) }}
<header class="site-header site-header_no-stars vsd-header">
<div class="main-menu z-2">
<a href="/">
@@ -1,11 +1,14 @@
{{ with (.Site.GetPage "/vsd/vsd-hero") }}
<section class="vsd-hero">
{{ $root := .Scratch.Get "vsdContentRoot" | default "/vsd" }}
{{ with (.Site.GetPage (printf "%s/vsd-hero" $root)) }}
<section class="vsd-hero{{ if eq $root "/vsd-recap" }} vsd-hero--recap{{ end }}">
<div class="container">
<div class="vsd-hero__banner">
<div class="vsd-hero__place">
<p>{{ .Params.place }}</p>
<p>{{ .Params.eventDate }}</p>
<p>{{ .Params.time }}</p>
{{ with .Params.time }}
<p>{{ . }}</p>
{{ end }}
</div>
<h1 class="vsd-hero__title">{{ .Params.title | safeHTML }}</h1>
<a href="{{ .Params.button.url }}" class="button button_contained button_lg vsd-hero__button">
@@ -0,0 +1,13 @@
{{ define "main" }}
{{ .Scratch.Set "vsdContentRoot" "/vsd-recap" }}
{{ partial "vsd/vsd-header" . }}
{{ partial "vsd/vsd-hero" . }}
{{ partial "vsd-recap/vsd-sessions" . }}
{{ partial "vsd-recap/vsd-speaker-lineup" . }}
{{ partial "vsd-recap/vsd-sponsors" . }}
{{ end }}
@@ -0,0 +1 @@
{{ define "main" }}{{ end }}