|
| 1 | +--- |
| 2 | +import Section from "@ui/Section.astro"; |
| 3 | +import Headline from "@ui/Headline.astro"; |
| 4 | +
|
| 5 | +const testimonials = [ |
| 6 | + { |
| 7 | + id: 1, |
| 8 | + name: "Thibaud Colas", |
| 9 | + profileImage: "/images/thibaud.jpeg", |
| 10 | + quote: "Pretty sure EuroPython 2025 was my top 1 fav conference ever. Just the perfect mixture of catching up with people I know, meeting people I don't know, learning new things. Time well spent chatting w/ Python veterans and also first-timers.", |
| 11 | + linkedinUrl: "https://www.linkedin.com/posts/thibaudcolas_django-python-europython2025-activity-7353026711569035265-bb1U" |
| 12 | + }, |
| 13 | + { |
| 14 | + id: 2, |
| 15 | + name: "Wojciech Nowicki, MBA", |
| 16 | + profileImage: "/images/wojciech.jpeg", |
| 17 | + quote: "I learned from brilliant speakers across topics spanning Python best practices, data engineering, and AI/ML applications. Even more valuable were the conversations with fellow developers, maintainers, community organizers, and representatives from many companies across the Python ecosystem.", |
| 18 | + linkedinUrl: "https://www.linkedin.com/posts/wonowicki_europython-python-opensource-activity-7352947135354433536-W_pQ" |
| 19 | + }, |
| 20 | + { |
| 21 | + id: 3, |
| 22 | + name: "Diego Russo", |
| 23 | + profileImage: "/images/diego.jpeg", |
| 24 | + quote: "I've been attending EuroPython since 2011. To me, this is the Python conference. Period. I'm proud to be part of this community, and I will do my best to keep it that way.", |
| 25 | + linkedinUrl: "https://www.linkedin.com/posts/diegor_back-fromeuropython-2025and-still-buzzing-activity-7353354177646845953-4nNo/" |
| 26 | + }, |
| 27 | + { |
| 28 | + id: 4, |
| 29 | + name: "Jodie Burchell", |
| 30 | + profileImage: "/images/jodie.jpeg", |
| 31 | + quote: "Last week's EuroPython was one of the most wonderful conferences I've ever been to, and my heart is still overflowing with all of the wonderful moments.", |
| 32 | + linkedinUrl: "https://www.linkedin.com/posts/jodieburchell_last-weeks-europython-was-one-of-the-most-ugcPost-7354418947993042947-NsXG/" |
| 33 | + }, |
| 34 | + { |
| 35 | + id: 5, |
| 36 | + name: "Vassiliki Dalakiari", |
| 37 | + profileImage: "/images/vassillikki.jpeg", |
| 38 | + quote: "This event was built by the community, for the community, with authentic support for local groups. From the PyLadies meetups to the Python documentary screening, inclusivity felt genuine and present throughout the conference.", |
| 39 | + linkedinUrl: "https://www.linkedin.com/posts/activity-7355237790462148608-VYL-/" |
| 40 | + }, |
| 41 | + { |
| 42 | + id: 6, |
| 43 | + name: "Rodrigo Girão Serrão", |
| 44 | + profileImage: "/images/rodrigo.jpeg", |
| 45 | + quote: `This was also the most rewarding conference for me so far. A conference like EuroPython is much more than just talks and tutorials. |
| 46 | +There is the hallway track, lightning talks ⚡️, social events, snacks exchange 🍿, the sprints weekend, ...`, |
| 47 | + linkedinUrl: "https://www.linkedin.com/posts/rodrigo-gir%C3%A3o-serr%C3%A3o_its-been-4-weeks-but-it-feels-like-it-was-activity-7360678874222936064-N1eg/" |
| 48 | + } |
| 49 | +]; |
| 50 | +
|
| 51 | +const sectionTitle = "See what participants say"; |
| 52 | +const sectionSubtitle = "Hear from our community"; |
| 53 | +--- |
| 54 | + |
| 55 | +<Section variant="primary"> |
| 56 | + <Headline id="testimonials" title={sectionTitle} center="true" /> |
| 57 | + <div class="container mx-auto px-6"> |
| 58 | + <div class="text-center mb-12"> |
| 59 | + <p class="text-lg text-gray-600 max-w-2xl mx-auto">{sectionSubtitle}</p> |
| 60 | + </div> |
| 61 | + |
| 62 | + <div class="testimonials-grid grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 max-w-6xl mx-auto"> |
| 63 | + {testimonials.map((testimonial) => ( |
| 64 | + <a |
| 65 | + href={testimonial.linkedinUrl} |
| 66 | + target="_blank" |
| 67 | + rel="noopener noreferrer" |
| 68 | + class="testimonial-card bg-white rounded-xl shadow-lg hover:shadow-xl transition-all duration-300 p-6 border border-gray-100 hover:border-[#0077b5] hover:-translate-y-1 group" |
| 69 | + > |
| 70 | + <div class="flex items-center mb-4"> |
| 71 | + <img |
| 72 | + src={testimonial.profileImage} |
| 73 | + alt={`${testimonial.name}'s profile picture`} |
| 74 | + class="w-12 h-12 rounded-full mr-3 border-2 border-gray-200" |
| 75 | + /> |
| 76 | + <div> |
| 77 | + <h3 class="font-semibold text-gray-900 group-hover:text-[#0077b5] transition-colors"> |
| 78 | + {testimonial.name} |
| 79 | + </h3> |
| 80 | + </div> |
| 81 | + <div class="ml-auto"> |
| 82 | + <svg class="w-5 h-5 text-[#0077b5]" fill="currentColor" viewBox="0 0 24 24"> |
| 83 | + <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/> |
| 84 | + </svg> |
| 85 | + </div> |
| 86 | + </div> |
| 87 | + <p class="text-gray-700 leading-relaxed italic"> |
| 88 | + "{testimonial.quote}" |
| 89 | + </p> |
| 90 | + </a> |
| 91 | + ))} |
| 92 | + </div> |
| 93 | + </div> |
| 94 | +</Section> |
| 95 | + |
| 96 | +<style> |
| 97 | + .testimonial-card:hover { |
| 98 | + transform: translateY(-4px); |
| 99 | + } |
| 100 | + |
| 101 | + .testimonials-grid { |
| 102 | + animation: fadeInUp 0.6s ease-out; |
| 103 | + } |
| 104 | + |
| 105 | + @keyframes fadeInUp { |
| 106 | + from { |
| 107 | + opacity: 0; |
| 108 | + transform: translateY(30px); |
| 109 | + } |
| 110 | + to { |
| 111 | + opacity: 1; |
| 112 | + transform: translateY(0); |
| 113 | + } |
| 114 | + } |
| 115 | + |
| 116 | + .container { |
| 117 | + max-width: 1150px; |
| 118 | + } |
| 119 | +</style> |
0 commit comments