diff --git a/relume-test/src/App.tsx b/relume-test/src/App.tsx index 715b990..5f9426a 100644 --- a/relume-test/src/App.tsx +++ b/relume-test/src/App.tsx @@ -1,12 +1,14 @@ import { Routes, Route } from "react-router-dom"; import Home from "./pages/Home"; import Programm from "./pages/Programm"; +import Speaker from "./pages/Speaker"; function App() { return ( } /> } /> + } /> ); } diff --git a/relume-test/src/assets/speakers/speaker1.jpg b/relume-test/src/assets/speakers/speaker1.jpg new file mode 100644 index 0000000..164bed0 Binary files /dev/null and b/relume-test/src/assets/speakers/speaker1.jpg differ diff --git a/relume-test/src/assets/speakers/speaker2.jpg b/relume-test/src/assets/speakers/speaker2.jpg new file mode 100644 index 0000000..05a0ffc Binary files /dev/null and b/relume-test/src/assets/speakers/speaker2.jpg differ diff --git a/relume-test/src/assets/speakers/speaker3.jpg b/relume-test/src/assets/speakers/speaker3.jpg new file mode 100644 index 0000000..5f44831 Binary files /dev/null and b/relume-test/src/assets/speakers/speaker3.jpg differ diff --git a/relume-test/src/assets/speakers/speaker4.jpg b/relume-test/src/assets/speakers/speaker4.jpg new file mode 100644 index 0000000..9ab093a Binary files /dev/null and b/relume-test/src/assets/speakers/speaker4.jpg differ diff --git a/relume-test/src/components/Team4.tsx b/relume-test/src/components/Team4.tsx new file mode 100644 index 0000000..a73bd4a --- /dev/null +++ b/relume-test/src/components/Team4.tsx @@ -0,0 +1,171 @@ +import speaker1 from "../assets/speakers/speaker1.jpg"; +import speaker2 from "../assets/speakers/speaker2.jpg"; +import speaker3 from "../assets/speakers/speaker3.jpg"; +import speaker4 from "../assets/speakers/speaker4.jpg"; +import { Button } from "@relume_io/relume-ui"; +import type { ButtonProps } from "@relume_io/relume-ui"; +import { BiLogoDribbble, BiLogoLinkedinSquare } from "react-icons/bi"; +import { FaXTwitter } from "react-icons/fa6"; + +type ImageProps = { + src: string; + alt?: string; +}; + +type Footer = { + heading: string; + description: string; + button: ButtonProps; +}; + +type SocialLink = { + href: string; + icon: React.ReactNode; +}; + +type TeamMember = { + image: ImageProps; + name: string; + jobTitle: string; + description: string; + socialLinks: SocialLink[]; +}; + +type Props = { + tagline: string; + heading: string; + description: string; + teamMembers: TeamMember[]; + footerContent: Footer; +}; + +export type Team4Props = React.ComponentPropsWithoutRef<"section"> & Partial; + +export const Team4 = (props: Team4Props) => { + const { tagline, heading, description, teamMembers, footerContent } = { + ...Team4Defaults, + ...props, + }; + return ( +
+
+
+

{tagline}

+

+ {heading} +

+

{description}

+
+
+ {teamMembers.map((member, index) => ( + + ))} +
+
+

+ {footerContent.heading} +

+

{footerContent.description}

+
+ +
+
+
+
+ ); +}; + +const TeamMember = ({ member }: { member: TeamMember }) => { + return ( +
+
+ {member.image.alt} +
+
+
{member.name}
+
{member.jobTitle}
+
+

{member.description}

+
+ {member.socialLinks.map((link, index) => ( + + {link.icon} + + ))} +
+
+ ); +}; + +export const Team4Defaults: Props = { + tagline: "", + heading: "Unsere Speaker", + description: "", + teamMembers: [ + { + image: { src: speaker1, alt: "Jens Riegelsberger" }, + name: "Jens Riegelsberger", + jobTitle: "UX Director · Google", + description: "Jens leitet die UX-Teams für Search und Maps sowie die globale UXR-Infrastruktur.", + socialLinks: [{ href: "#", icon: }], + }, + { + image: { src: speaker2, alt: "Marcus J. Low" }, + name: "Marcus J. Low", + jobTitle: "Principal Designer · Airbnb", + description: "Als Mitentwickler des ersten Airbnb Design Systems spricht Marcus über die Balance zwischen Markenästhetik und funktionaler Logik.", + socialLinks: [{ href: "#", icon: }], + }, + { + image: { src: speaker3, alt: "Reto Gwerder" }, + name: "Reto Gwerder", + jobTitle: "Head of Product · Ginetta", + description: "Reto steht für Schweizer Design-Qualität. Er analysiert, warum Simplizität oft die größte technische Herausforderung ist.", + socialLinks: [{ href: "#", icon: }], + }, + { + image: { src: speaker4, alt: "Dr. Elena Rossi" }, + name: "Dr. Elena Rossi", + jobTitle: "Cognitive Psychologist · University of Milan", + description: "Elena verbindet Wissenschaft mit Design. Sie erklärt, wie unser Gehirn auf Micro-Interactions reagiert.", + socialLinks: [{ href: "#", icon: }], + }, + { + image: { src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg", alt: "Dr. Elena Rossi" }, + name: "Dr. Elena Rossi", + jobTitle: "Cognitive Psychologist · University of Milan", + description: "Elena verbindet Wissenschaft mit Design. Sie erklärt, wie unser Gehirn auf Micro-Interactions reagiert.", + socialLinks: [{ href: "#", icon: }], + }, + { + image: { src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg", alt: "Dr. Elena Rossi" }, + name: "Dr. Elena Rossi", + jobTitle: "Cognitive Psychologist · University of Milan", + description: "Elena verbindet Wissenschaft mit Design. Sie erklärt, wie unser Gehirn auf Micro-Interactions reagiert.", + socialLinks: [{ href: "#", icon: }], + }, + { + image: { src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg", alt: "Dr. Elena Rossi" }, + name: "Dr. Elena Rossi", + jobTitle: "Cognitive Psychologist · University of Milan", + description: "Elena verbindet Wissenschaft mit Design. Sie erklärt, wie unser Gehirn auf Micro-Interactions reagiert.", + socialLinks: [{ href: "#", icon: }], + }, + { + image: { src: "https://d22po4pjz3o32e.cloudfront.net/placeholder-image.svg", alt: "Dr. Elena Rossi" }, + name: "Dr. Elena Rossi", + jobTitle: "Cognitive Psychologist · University of Milan", + description: "Elena verbindet Wissenschaft mit Design. Sie erklärt, wie unser Gehirn auf Micro-Interactions reagiert.", + socialLinks: [{ href: "#", icon: }], + }, + ], + footerContent: { + heading: "", + description: "", + button: { title: "", variant: "secondary" }, + }, +}; diff --git a/relume-test/src/pages/Speaker.tsx b/relume-test/src/pages/Speaker.tsx new file mode 100644 index 0000000..ef4bf00 --- /dev/null +++ b/relume-test/src/pages/Speaker.tsx @@ -0,0 +1,26 @@ +import { Navbar3 } from "../components/Navbar"; +import { Header23 } from "../components/Header23"; +import { Filters5 } from "../components/Filters5"; +import { Team4 } from "../components/Team4"; +import { Footer3 } from "../components/Footer"; + +const Programm = () => { + return ( +
+ + + + + +
+ ); +}; + +export default Programm; \ No newline at end of file diff --git a/relume-test/src/pages/Tickets.tsx b/relume-test/src/pages/Tickets.tsx new file mode 100644 index 0000000..e69de29