fix(wisekeep/landing): add missing TalkGrid and QuoteCollection components

The simon-sinek speaker page imported these components but they were
never created during the wisekeep migration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-02 10:45:14 +02:00
parent ef538245d1
commit 82abde6cd5
2 changed files with 159 additions and 0 deletions

View file

@ -0,0 +1,46 @@
---
export interface Quote {
text: string;
talk: string;
context: string;
}
export interface Props {
quotes: Quote[];
speakerName: string;
}
const { quotes, speakerName } = Astro.props;
---
<section class="py-12">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 class="text-3xl font-bold text-theme-text mb-8">Zitate von {speakerName}</h2>
<div class="grid md:grid-cols-2 gap-6">
{
quotes.map((quote) => (
<div class="bg-theme-card rounded-xl p-6 border border-theme-border/20 hover:border-theme-secondary/30 transition-all duration-300">
<div class="flex gap-3">
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-8 w-8 text-theme-secondary/40 flex-shrink-0 mt-1"
fill="currentColor"
viewBox="0 0 24 24"
>
<path d="M14.017 21v-7.391c0-5.704 3.731-9.57 8.983-10.609l.995 2.151c-2.432.917-3.995 3.638-3.995 5.849h4v10h-9.983zm-14.017 0v-7.391c0-5.704 3.748-9.57 9-10.609l.996 2.151c-2.433.917-3.996 3.638-3.996 5.849h3.983v10h-9.983z" />
</svg>
<div>
<p class="text-theme-text italic leading-relaxed mb-3">"{quote.text}"</p>
<div class="text-sm">
<p class="text-theme-primary font-medium">{quote.talk}</p>
<p class="text-theme-text-muted mt-1">{quote.context}</p>
</div>
</div>
</div>
</div>
))
}
</div>
</div>
</section>

View file

@ -0,0 +1,113 @@
---
export interface Talk {
id: string;
title: string;
date: string;
duration: string;
description: string;
tags: string[];
url: string;
views?: string;
}
export interface Props {
talks: Talk[];
}
const { talks } = Astro.props;
---
<section class="py-12">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 class="text-3xl font-bold text-theme-text mb-8">Alle Vorträge</h2>
<div class="grid md:grid-cols-2 gap-6">
{
talks.map((talk) => (
<a
href={talk.url}
class="bg-theme-card rounded-xl p-6 border border-theme-border/20 hover:border-theme-primary/30 transition-all duration-300 group block"
>
<div class="flex items-start justify-between mb-3">
<h3 class="text-lg font-semibold text-theme-text group-hover:text-theme-primary transition-colors pr-4">
{talk.title}
</h3>
{talk.views && (
<span class="text-sm text-theme-text-muted whitespace-nowrap flex items-center gap-1">
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-4 w-4"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"
/>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
/>
</svg>
{talk.views}
</span>
)}
</div>
<div class="flex items-center gap-4 text-sm text-theme-text-muted mb-3">
<span class="flex items-center gap-1">
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-4 w-4"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
/>
</svg>
{talk.date}
</span>
<span class="flex items-center gap-1">
<svg
xmlns="http://www.w3.org/2000/svg"
class="h-4 w-4"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="2"
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"
/>
</svg>
{talk.duration}
</span>
</div>
<p class="text-theme-text-muted text-sm mb-4 line-clamp-2">{talk.description}</p>
<div class="flex flex-wrap gap-2">
{talk.tags.map((tag) => (
<span class="inline-block bg-theme-primary/10 text-theme-primary text-xs px-2 py-1 rounded-full">
{tag}
</span>
))}
</div>
</a>
))
}
</div>
</div>
</section>