mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 23:41:08 +02:00
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:
parent
ef538245d1
commit
82abde6cd5
2 changed files with 159 additions and 0 deletions
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
Loading…
Add table
Add a link
Reference in a new issue