{speaker.name}
+ +-
+ {
+ speaker.links.map((link) => (
+
- + {link.type === 'website' ? ( + + + + ) : ( + + + + )} + + )) + } +
+ {speaker.description} +
+diff --git a/public/speakers/ada-lovelace.webp b/public/speakers/ada-lovelace.webp new file mode 100644 index 0000000..17b55e1 Binary files /dev/null and b/public/speakers/ada-lovelace.webp differ diff --git a/src/components/home/SectionSpeakers.astro b/src/components/home/SectionSpeakers.astro new file mode 100644 index 0000000..61374be --- /dev/null +++ b/src/components/home/SectionSpeakers.astro @@ -0,0 +1,37 @@ +--- +import { texts } from '@/i18n/home' +import SectionTitle from '../SectionTitle.astro' +import CenteredPanel from '../CenteredPanel.astro' +import type { ISpeaker } from '../../types/speakers' +import SpeakerCard from './SpeakerCard.astro' + +const speakers = Object.values(import.meta.glob('../../data/speakers/*.md', { eager: true })) as { + frontmatter: ISpeaker +}[] + +interface Props { + lang: string +} + +const { lang } = Astro.props +const t = texts[lang as keyof typeof texts] + +const sortedSpeakers = speakers.map((s) => s.frontmatter).sort((a, b) => a.order - b.order) +--- + +{ + sortedSpeakers.length > 0 && ( +
+ {speaker.description} +
+