diff --git a/relume-test/src/App.tsx b/relume-test/src/App.tsx
index b281d53..1aabaa9 100644
--- a/relume-test/src/App.tsx
+++ b/relume-test/src/App.tsx
@@ -1,7 +1,9 @@
import { Routes, Route } from "react-router-dom";
import Home from "./pages/Home";
import Programm from "./pages/Programm";
+import ProgrammDetail from "./pages/ProgrammDetail";
import Speaker from "./pages/Speaker";
+import SpeakerDetail from "./pages/SpeakerDetail";
import Tickets from "./pages/Tickets";
function App() {
@@ -9,10 +11,12 @@ function App() {
} />
} />
+ } />
} />
+ } />
} />
);
}
-export default App;
\ No newline at end of file
+export default App;
diff --git a/relume-test/src/components/Event33.tsx b/relume-test/src/components/Event33.tsx
index 384687b..75cff66 100644
--- a/relume-test/src/components/Event33.tsx
+++ b/relume-test/src/components/Event33.tsx
@@ -8,11 +8,14 @@ export type ProgramEvent = {
time: string;
image: { src: string; alt: string };
title: string;
+ subtitle?: string;
speaker: string;
+ speakerSlug?: string;
type: EventType;
level: EventLevel;
day: EventDay;
speakerUrl: string;
+ description?: string;
};
type Props = {
@@ -34,7 +37,9 @@ const EventRow = ({ event }: { event: ProgramEvent }) => (
-
+

-
-
{member.name}
+
+
+
{member.name}
+
{member.role}
}],
@@ -133,8 +147,12 @@ export const Team4Defaults: Props = {
name: "Reto Gwerder",
role: "Head of Product",
company: "Ginetta",
+ slug: "reto-gwerder",
+ location: "Zürich, Schweiz",
description:
"Reto steht für Schweizer Design-Qualität. Er analysiert, warum Simplizität oft die größte technische Herausforderung ist.",
+ fullBio:
+ "Reto Gwerder ist Head of Product bei Ginetta und steht für konsequente Schweizer Design-Qualität. Er analysiert, warum Simplizität oft die größte technische Herausforderung ist und wie man in einem schnellen Produktumfeld trotzdem Qualität bewahrt.",
category: "Strategie",
talks: [{ title: "Talk: Simplify or Die", type: "Talk" }],
socialLinks: [{ href: "#", icon:
}],
@@ -144,8 +162,12 @@ export const Team4Defaults: Props = {
name: "Dr. Elena Rossi",
role: "Cognitive Psychologist",
company: "University of Milan",
+ slug: "dr-elena-rossi",
+ location: "Mailand, Italien",
description:
"Elena verbindet Wissenschaft mit Design. Sie erklärt, wie unser Gehirn auf Micro-Interactions reagiert und wann wir uns manipuliert fühlen.",
+ fullBio:
+ "Dr. Elena Rossi ist Kognitionspsychologin an der Universität Mailand und verbindet Wissenschaft mit Design. Sie erklärt, wie unser Gehirn auf Micro-Interactions reagiert und wann wir uns manipuliert fühlen. Elena forscht seit über einem Jahrzehnt zur Schnittstelle von Psychologie und digitaler Produktgestaltung.",
category: "Psychologie",
talks: [{ title: "Deep Dive: Psychological UX", type: "Talk" }],
socialLinks: [{ href: "#", icon:
}],
@@ -155,8 +177,12 @@ export const Team4Defaults: Props = {
name: "Liam O'Connor",
role: "Lead Product Designer",
company: "Spotify",
+ slug: "liam-oconnor",
+ location: "Stockholm, Schweden",
description:
"Liam gibt Einblicke, wie Spotify Personalisierung nutzt, ohne die Privatsphäre der Nutzer zu verletzen.",
+ fullBio:
+ "Liam O'Connor ist Lead Product Designer bei Spotify und gibt Einblicke, wie das Unternehmen Personalisierung nutzt, ohne die Privatsphäre der Nutzer zu verletzen. Er arbeitet an der Schnittstelle von Daten, Design und Ethik.",
category: "AI & Future",
talks: [{ title: "Talk: Trust in AI UX", type: "Talk" }],
socialLinks: [{ href: "#", icon:
}],
@@ -166,8 +192,12 @@ export const Team4Defaults: Props = {
name: "Fabienne Keller",
role: "Gründerin",
company: "User-First Agency",
+ slug: "fabienne-keller",
+ location: "Basel, Schweiz",
description:
"Fabienne ist Expertin für User Research in komplexen B2B-Umfeldern und wie man Stakeholder von Test-Ergebnissen überzeugt.",
+ fullBio:
+ "Fabienne Keller ist Gründerin der User-First Agency und Expertin für User Research in komplexen B2B-Umfeldern. Sie zeigt, wie man Stakeholder von Test-Ergebnissen überzeugt und eine nachhaltige Research-Kultur in Unternehmen aufbaut.",
category: "Research",
talks: [{ title: "Workshop: Research Repositories", type: "Workshop" }],
socialLinks: [{ href: "#", icon:
}],
@@ -177,8 +207,12 @@ export const Team4Defaults: Props = {
name: 'Thomas "Tom" Meyer',
role: "Creative Director",
company: "Swisscom",
+ slug: "thomas-meyer",
+ location: "Bern, Schweiz",
description:
"Tom zeigt, wie man in großen Konzernen eine Design-Kultur etabliert, die über das visuelle Layer hinausgeht.",
+ fullBio:
+ 'Thomas "Tom" Meyer ist Creative Director bei Swisscom und zeigt, wie man in großen Konzernen eine Design-Kultur etabliert, die über das visuelle Layer hinausgeht. Er bringt über 15 Jahre Erfahrung im Corporate Design Management mit.',
category: "Strategie",
talks: [{ title: "Networking: Leading Teams", type: "Networking" }],
socialLinks: [{ href: "#", icon:
}],
@@ -188,8 +222,12 @@ export const Team4Defaults: Props = {
name: "Sarah M. Widmer",
role: "Senior UX Architect",
company: "SBB",
+ slug: "sarah-m-widmer",
+ location: "Bern, Schweiz",
description:
"Sarah gestaltet die Mobilität von morgen. Sie zeigt, wie man Millionen von Nutzern barrierefrei durch den digitalen öV-Dschungel leitet.",
+ fullBio:
+ "Sarah M. Widmer ist Senior UX Architect bei der SBB und gestaltet die Mobilität von morgen. Sie zeigt, wie man Millionen von Nutzern barrierefrei durch den digitalen öV-Dschungel leitet und dabei Accessibility nicht als Pflicht, sondern als Designprinzip versteht.",
category: "Design / UX",
talks: [{ title: "Talk: Inclusive Design at Scale", type: "Talk" }],
socialLinks: [{ href: "#", icon:
}],
diff --git a/relume-test/src/data/events.tsx b/relume-test/src/data/events.tsx
new file mode 100644
index 0000000..5ea8988
--- /dev/null
+++ b/relume-test/src/data/events.tsx
@@ -0,0 +1,175 @@
+import spk1 from "../assets/speakers/speaker1.jpg";
+import spk2 from "../assets/speakers/speaker2.jpg";
+import spk3 from "../assets/speakers/speaker3.jpg";
+import spk4 from "../assets/speakers/speaker4.jpg";
+import type { ProgramEvent } from "../components/Event33";
+
+export const ALL_EVENTS: ProgramEvent[] = [
+ // Donnerstag
+ {
+ id: "do-1",
+ time: "10:00 – 11:30 Uhr",
+ image: { src: spk1, alt: "Jens Riegelsberger" },
+ title: "Opening Keynote: The Future of UX",
+ subtitle: "Wie KI, Ethik und Nutzerzentriertheit die nächste UX-Ära prägen",
+ speaker: "Jens Riegelsberger",
+ speakerSlug: "jens-riegelsberger",
+ type: "Talk",
+ level: "Senior",
+ day: "Donnerstag",
+ speakerUrl: "/speaker/jens-riegelsberger",
+ description:
+ "In dieser Keynote zeigt Jens Riegelsberger, wie Google seine UX-Teams für Search und Maps aufgebaut hat und welche Rolle Nutzerzentriertheit, Ethik und KI in der nächsten Designgeneration spielen werden. Ein Muss für alle, die verstehen wollen, wohin sich UX in den nächsten fünf Jahren bewegt.",
+ },
+ {
+ id: "do-2",
+ time: "12:00 – 13:00 Uhr",
+ image: { src: spk2, alt: "Marcus J. Low" },
+ title: "Workshop: Design Systems at Scale",
+ subtitle: "Wie Airbnb seine Designsprache global skaliert",
+ speaker: "Marcus J. Low",
+ speakerSlug: "marcus-j-low",
+ type: "Workshop",
+ level: "Mid-Level",
+ day: "Donnerstag",
+ speakerUrl: "/speaker/marcus-j-low",
+ description:
+ "Als Mitentwickler des ersten Airbnb Design Systems spricht Marcus über die Balance zwischen Markenästhetik und funktionaler Logik. In diesem Workshop lernst du, wie du ein Design System aufbaust, das wächst ohne zu brechen.",
+ },
+ {
+ id: "do-3",
+ time: "14:00 – 15:30 Uhr",
+ image: { src: spk3, alt: "Reto Gwerder" },
+ title: "Interaction: Prototyping Fast",
+ subtitle: "Schnell iterieren ohne Qualitätsverlust",
+ speaker: "Reto Gwerder",
+ speakerSlug: "reto-gwerder",
+ type: "Interaction",
+ level: "Junior",
+ day: "Donnerstag",
+ speakerUrl: "/speaker/reto-gwerder",
+ description:
+ "Reto zeigt, wie du mit minimalem Aufwand maximale Erkenntnisse aus Prototypen ziehst. Praktische Methoden für schnelles Iterieren, ohne die Qualität zu opfern.",
+ },
+ {
+ id: "do-4",
+ time: "16:00 – 17:30 Uhr",
+ image: { src: spk4, alt: "Dr. Elena Rossi" },
+ title: "AI and Future: Intelligence in Design",
+ subtitle: "Wenn Algorithmen mitgestalten – Chancen und Risiken",
+ speaker: "Dr. Elena Rossi",
+ speakerSlug: "dr-elena-rossi",
+ type: "AI and Future",
+ level: "Senior",
+ day: "Donnerstag",
+ speakerUrl: "/speaker/dr-elena-rossi",
+ description:
+ "Dr. Elena Rossi untersucht die psychologischen Auswirkungen von KI-gestütztem Design auf Nutzer. Wann erleben wir KI als hilfreich – und wann als manipulativ? Ein tiefes Tauchen in die Kognitionspsychologie des digitalen Zeitalters.",
+ },
+ {
+ id: "do-5",
+ time: "18:00 – 19:30 Uhr",
+ image: { src: spk1, alt: "Liam O'Connor" },
+ title: "Talk: Ethical AI",
+ subtitle: "Verantwortungsvolles Design in der KI-Ära",
+ speaker: "Liam O'Connor",
+ speakerSlug: "liam-oconnor",
+ type: "Talk",
+ level: "Mid-Level",
+ day: "Donnerstag",
+ speakerUrl: "/speaker/liam-oconnor",
+ description:
+ "Liam O'Connor gibt Einblicke, wie Spotify mit ethischen Fragen rund um personalisierte Empfehlungen umgeht. Was bedeutet es, verantwortungsvoll zu gestalten, wenn Algorithmen Entscheidungen treffen?",
+ },
+ // Freitag
+ {
+ id: "fr-1",
+ time: "12:00 – 13:30 Uhr",
+ image: { src: spk1, alt: "Jens Riegelsberger" },
+ title: "Scaling Research",
+ subtitle: "Vom Engpass zum Motor: Scaling Research ohne Qualitätsverlust",
+ speaker: "Jens Riegelsberger",
+ speakerSlug: "jens-riegelsberger",
+ type: "Talk",
+ level: "Senior",
+ day: "Freitag",
+ speakerUrl: "/speaker/jens-riegelsberger",
+ description:
+ "Jeder will Insights, aber dein Research-Team wächst nicht so schnell wie der Backlog? Willkommen im Club. Wenn die Nachfrage nach Nutzererkenntnissen explodiert, wird das Research-Team oft zum Flaschenhals. Aber \"Scaling Research\" bedeutet nicht einfach, mehr Überstunden zu machen oder wahllos Tools zu kaufen. Es geht darum, Systeme zu schaffen, die Wissen demokratisieren, ohne die methodische Integrität zu opfern. In diesem interaktiven Workshop räumen wir mit dem Mythos auf, dass Research nur von Researchern gemacht werden kann. Wir zeigen dir, wie du Research Ops sinnvoll aufbaust, Nicht-Researcher befähigst und eine Kultur schaffst, in der Insights fließen statt zu verstauben.",
+ },
+ {
+ id: "fr-2",
+ time: "12:00 – 13:00 Uhr",
+ image: { src: spk2, alt: "Marcus J. Low" },
+ title: "Workshop: The Future of Tokens",
+ subtitle: "Design Tokens als Brücke zwischen Design und Entwicklung",
+ speaker: "Marcus J. Low",
+ speakerSlug: "marcus-j-low",
+ type: "Workshop",
+ level: "Mid-Level",
+ day: "Freitag",
+ speakerUrl: "/speaker/marcus-j-low",
+ description:
+ "Design Tokens sind mehr als nur Variablen. Marcus zeigt, wie du ein Token-System aufbaust, das Design und Entwicklung wirklich verbindet und auf alle Plattformen skaliert.",
+ },
+ {
+ id: "fr-3",
+ time: "14:00 – 15:30 Uhr",
+ image: { src: spk3, alt: "Reto Gwerder" },
+ title: "Talk: Simplify or Die",
+ subtitle: "Warum Simplizität die härteste Designentscheidung ist",
+ speaker: "Reto Gwerder",
+ speakerSlug: "reto-gwerder",
+ type: "Talk",
+ level: "Junior",
+ day: "Freitag",
+ speakerUrl: "/speaker/reto-gwerder",
+ description:
+ "Reto Gwerder analysiert, warum Simplizität oft die größte technische und gestalterische Herausforderung ist. Weniger ist mehr – aber wie schafft man es, wirklich weniger zu machen?",
+ },
+ {
+ id: "fr-4",
+ time: "16:00 – 17:30 Uhr",
+ image: { src: spk4, alt: "Dr. Elena Rossi" },
+ title: "Deep Dive: Psychological UX",
+ subtitle: "Wie unser Gehirn auf Interfaces reagiert",
+ speaker: "Dr. Elena Rossi",
+ speakerSlug: "dr-elena-rossi",
+ type: "Talk",
+ level: "Senior",
+ day: "Freitag",
+ speakerUrl: "/speaker/dr-elena-rossi",
+ description:
+ "Elena verbindet Wissenschaft mit Design und erklärt, wie unser Gehirn auf Micro-Interactions reagiert. Wann fühlen wir uns von einem Interface gut geführt – und wann manipuliert? Ein wissenschaftlich fundierter Blick auf die Psychologie hinter UX-Entscheidungen.",
+ },
+ {
+ id: "fr-5",
+ time: "18:00 – 19:30 Uhr",
+ image: { src: spk1, alt: "Liam O'Connor" },
+ title: "Talk: Trust in AI",
+ subtitle: "Wie wir Vertrauen in algorithmische Systeme aufbauen",
+ speaker: "Liam O'Connor",
+ speakerSlug: "liam-oconnor",
+ type: "Talk",
+ level: "Mid-Level",
+ day: "Freitag",
+ speakerUrl: "/speaker/liam-oconnor",
+ description:
+ "Vertrauen ist die Währung der Zukunft. Liam erklärt, wie Spotify transparente und ethische KI-Systeme gestaltet, die Nutzer verstehen und akzeptieren können.",
+ },
+ {
+ id: "fr-6",
+ time: "20:00 – 21:30 Uhr",
+ image: { src: spk2, alt: "Fabienne Keller" },
+ title: "Workshop: Research Repositories",
+ subtitle: "Wissen organisieren, das wirklich genutzt wird",
+ speaker: "Fabienne Keller",
+ speakerSlug: "fabienne-keller",
+ type: "Workshop",
+ level: "Senior",
+ day: "Freitag",
+ speakerUrl: "/speaker/fabienne-keller",
+ description:
+ "Fabienne zeigt, wie du ein Research Repository aufbaust, das nicht im Regal verstaubt. Praktische Methoden für die Organisation, Pflege und Aktivierung von Research-Wissen in deinem Team.",
+ },
+];
diff --git a/relume-test/src/pages/Programm.tsx b/relume-test/src/pages/Programm.tsx
index 8310fac..ec60265 100644
--- a/relume-test/src/pages/Programm.tsx
+++ b/relume-test/src/pages/Programm.tsx
@@ -3,30 +3,9 @@ import { Navbar3 } from "../components/Navbar";
import { Header23 } from "../components/Header23";
import { Filters5 } from "../components/Filters5";
import { Event33 } from "../components/Event33";
-import type { ProgramEvent } from "../components/Event33";
import { Banner15 } from "../components/Banner15";
import { Footer3 } from "../components/Footer";
-
-import spk1 from "../assets/speakers/speaker1.jpg";
-import spk2 from "../assets/speakers/speaker2.jpg";
-import spk3 from "../assets/speakers/speaker3.jpg";
-import spk4 from "../assets/speakers/speaker4.jpg";
-
-const ALL_EVENTS: ProgramEvent[] = [
- // Donnerstag
- { id: "do-1", time: "10:00 – 11:30 Uhr", image: { src: spk1, alt: "Jens Riegelsberger" }, title: "Opening Keynote: The Future of UX", speaker: "Jens Riegelsberger", type: "Talk", level: "Senior", day: "Donnerstag", speakerUrl: "/speaker" },
- { id: "do-2", time: "12:00 – 13:00 Uhr", image: { src: spk2, alt: "Marcus J. Low" }, title: "Workshop: Design Systems at Scale", speaker: "Marcus J. Low", type: "Workshop", level: "Mid-Level", day: "Donnerstag", speakerUrl: "/speaker" },
- { id: "do-3", time: "14:00 – 15:30 Uhr", image: { src: spk3, alt: "Reto Gwerder" }, title: "Interaction: Prototyping Fast", speaker: "Reto Gwerder", type: "Interaction", level: "Junior", day: "Donnerstag", speakerUrl: "/speaker" },
- { id: "do-4", time: "16:00 – 17:30 Uhr", image: { src: spk4, alt: "Dr. Elena Rossi" }, title: "AI and Future: Intelligence in Design", speaker: "Dr. Elena Rossi", type: "AI and Future", level: "Senior", day: "Donnerstag", speakerUrl: "/speaker" },
- { id: "do-5", time: "18:00 – 19:30 Uhr", image: { src: spk1, alt: "Liam O'Connor" }, title: "Talk: Ethical AI", speaker: "Liam O'Connor", type: "Talk", level: "Mid-Level", day: "Donnerstag", speakerUrl: "/speaker" },
- // Freitag
- { id: "fr-1", time: "12:00 – 13:30 Uhr", image: { src: spk1, alt: "Jens Riegelsberger" }, title: "Scaling Research", speaker: "Jens Riegelsberger", type: "Talk", level: "Senior", day: "Freitag", speakerUrl: "/speaker" },
- { id: "fr-2", time: "12:00 – 13:00 Uhr", image: { src: spk2, alt: "Marcus J. Low" }, title: "Workshop: The Future of Tokens", speaker: "Marcus J. Low", type: "Workshop", level: "Mid-Level", day: "Freitag", speakerUrl: "/speaker" },
- { id: "fr-3", time: "14:00 – 15:30 Uhr", image: { src: spk3, alt: "Reto Gwerder" }, title: "Talk: Simplify or Die", speaker: "Reto Gwerder", type: "Talk", level: "Junior", day: "Freitag", speakerUrl: "/speaker" },
- { id: "fr-4", time: "16:00 – 17:30 Uhr", image: { src: spk4, alt: "Dr. Elena Rossi" }, title: "Deep Dive: Psychological UX", speaker: "Dr. Elena Rossi", type: "Talk", level: "Senior", day: "Freitag", speakerUrl: "/speaker" },
- { id: "fr-5", time: "18:00 – 19:30 Uhr", image: { src: spk1, alt: "Liam O'Connor" }, title: "Talk: Trust in AI", speaker: "Liam O'Connor", type: "Talk", level: "Mid-Level", day: "Freitag", speakerUrl: "/speaker" },
- { id: "fr-6", time: "20:00 – 21:30 Uhr", image: { src: spk2, alt: "Fabienne Keller" }, title: "Workshop: Research Repositories", speaker: "Fabienne Keller", type: "Workshop", level: "Senior", day: "Freitag", speakerUrl: "/speaker" },
-];
+import { ALL_EVENTS } from "../data/events";
const TYPE_TABS = ["Talk", "Workshop", "Interaction", "AI and Future"];
const LEVEL_TABS: Record
= {
diff --git a/relume-test/src/pages/ProgrammDetail.tsx b/relume-test/src/pages/ProgrammDetail.tsx
new file mode 100644
index 0000000..f67247c
--- /dev/null
+++ b/relume-test/src/pages/ProgrammDetail.tsx
@@ -0,0 +1,149 @@
+import { useParams, Navigate, Link } from "react-router-dom";
+import { Navbar3 } from "../components/Navbar";
+import { Cta30 } from "../components/Cta30";
+import { Footer3 } from "../components/Footer";
+import { Team4Defaults } from "../components/Team4";
+import { ALL_EVENTS } from "../data/events";
+import { BiCalendarAlt, BiMap, BiUser } from "react-icons/bi";
+import { RxCube } from "react-icons/rx";
+
+const SponsorsSection = () => (
+
+
+
+ Unsere Sponsoren & Partner
+
+
+ {Array(15).fill(null).map((_, i) => (
+
+
+ {i % 2 === 0 ? "Webflow" : "Relume"}
+
+
+ ))}
+
+
+
+);
+
+const ProgrammDetail = () => {
+ const { id } = useParams<{ id: string }>();
+ const event = ALL_EVENTS.find((e) => e.id === id);
+
+ if (!event) return ;
+
+ const speaker = Team4Defaults.teamMembers.find((m) => m.slug === event.speakerSlug);
+
+ const dateLabel = event.day === "Donnerstag"
+ ? "Donnerstag, 7. Mai 2026"
+ : "Freitag, 8. Mai 2026";
+
+ return (
+
+
+
+ {/* Hero section */}
+
+
+
+ {/* Left: event info */}
+
+
+ {event.type}
+
+
+ {event.title}
+
+ {event.subtitle && (
+
{event.subtitle}
+ )}
+
+
+
+ {dateLabel}, {event.time}
+
+
+
+ Location
+
+
+
+ {event.speaker}
+
+
+
+ Ticket kaufen
+
+
+
+ {/* Right: speaker image */}
+
+

+
+
+
+
+
+ {/* Speaker bio + event description */}
+
+
+
+ {/* Left: über den speaker */}
+
+
+
+ Über den Speaker
+
+ {speaker ? (
+ <>
+
{speaker.name}
+
{speaker.role}
+
{speaker.company}
+
+ Speaker Details
+
+ >
+ ) : (
+
{event.speaker}
+ )}
+
+
+ {/* Right: das erwartete dich */}
+
+
+
+ Das erwartete dich
+
+
+ {event.description ?? "Weitere Informationen folgen in Kürze."}
+
+
+
+
+
+
+ {/* Stay tuned */}
+
+
+ {/* Sponsors */}
+
+
+
+
+ );
+};
+
+export default ProgrammDetail;
diff --git a/relume-test/src/pages/SpeakerDetail.tsx b/relume-test/src/pages/SpeakerDetail.tsx
new file mode 100644
index 0000000..c460009
--- /dev/null
+++ b/relume-test/src/pages/SpeakerDetail.tsx
@@ -0,0 +1,111 @@
+import { useParams, Navigate } from "react-router-dom";
+import { Navbar3 } from "../components/Navbar";
+import { Team4, Team4Defaults } from "../components/Team4";
+import { Footer3 } from "../components/Footer";
+import { BiLogoLinkedinSquare, BiGlobe } from "react-icons/bi";
+import { FaXTwitter } from "react-icons/fa6";
+
+const ALL_SPEAKERS = Team4Defaults.teamMembers;
+
+const SponsorsSection = () => (
+
+
+
+ Unsere Sponsoren & Partner
+
+
+ {Array(15).fill(null).map((_, i) => (
+
+
+ {i % 2 === 0 ? "Webflow" : "Relume"}
+
+
+ ))}
+
+
+
+);
+
+const SpeakerDetail = () => {
+ const { slug } = useParams<{ slug: string }>();
+ const speaker = ALL_SPEAKERS.find((s) => s.slug === slug);
+
+ if (!speaker) return ;
+
+ const otherSpeakers = ALL_SPEAKERS.filter((s) => s.slug !== slug);
+
+ return (
+
+
+
+ {/* Hero image */}
+
+

+
+
+ {/* Speaker info */}
+
+
+
+ {/* Left: badge, name, location */}
+
+
+ {speaker.category}
+
+
+ {speaker.name}
+
+ {speaker.location && (
+
{speaker.location}
+ )}
+
+
+ {/* Right: bio + social */}
+
+
+ {speaker.fullBio ?? speaker.description}
+
+
+
+
+
+
+
+ {/* Other speakers */}
+
+
+
+
+
+
+ );
+};
+
+export default SpeakerDetail;