Skip to content

Commit b564ea4

Browse files
committed
Polished Events and Contact pages
1 parent e66b56a commit b564ea4

8 files changed

Lines changed: 145 additions & 99 deletions

File tree

public/Everyone_SoSe2025.jpg

6.14 MB
Loading

src/components/EventCard.tsx

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
import React from "react";
32
import { Card, CardContent, CardFooter, CardHeader } from "@/components/ui/card";
43
import { Badge } from "@/components/ui/badge";
@@ -72,18 +71,44 @@ const EventCard: React.FC<EventCardProps> = ({ event }) => {
7271
<Card className="overflow-hidden h-full flex flex-col transition-all hover:shadow-md">
7372
{/* Image and date/location badges */}
7473
<div className="relative h-48">
75-
<img
76-
src={image}
77-
alt={title}
78-
className="w-full h-full object-cover"
79-
/>
74+
{image ? (
75+
<img
76+
src={image}
77+
alt={title}
78+
className="w-full h-full object-cover"
79+
/>
80+
) : (
81+
<div className="w-full h-full bg-gradient-to-br from-primary-blue/10 to-primary-blue/5 flex items-center justify-center">
82+
<svg
83+
width="120"
84+
height="120"
85+
viewBox="0 0 120 120"
86+
fill="none"
87+
xmlns="http://www.w3.org/2000/svg"
88+
className="opacity-50"
89+
>
90+
{/* Confetti pieces */}
91+
<path d="M20 20l10-10 10 10-10 10z" fill="#AB9A89" />
92+
<path d="M80 30l15-15 15 15-15 15z" fill="rgb(51 51 81)" />
93+
<path d="M40 80l12-12 12 12-12 12z" fill="rgb(248 221 186)" />
94+
<path d="M90 70l8-8 8 8-8 8z" fill="#AB9A89" />
95+
<path d="M60 40l6-6 6 6-6 6z" fill="rgb(51 51 81)" />
96+
<path d="M30 50l9-9 9 9-9 9z" fill="rgb(248 221 186)" />
97+
<path d="M70 90l11-11 11 11-11 11z" fill="#AB9A89" />
98+
{/* Calendar icon in center */}
99+
<rect x="45" y="45" width="30" height="30" rx="4" fill="none" stroke="currentColor" strokeWidth="2" />
100+
<line x1="45" y1="55" x2="75" y2="55" stroke="currentColor" strokeWidth="2" />
101+
<line x1="55" y1="45" x2="55" y2="65" stroke="currentColor" strokeWidth="2" />
102+
</svg>
103+
</div>
104+
)}
80105
<div className="absolute top-3 left-3 flex items-center gap-1 bg-white/80 backdrop-blur-sm px-2 py-1 rounded-md">
81106
<Calendar size={14} className="text-primary-blue flex-shrink-0" />
82107
<span className="text-xs font-medium truncate max-w-[150px]">{formatDate(date)}</span>
83108
</div>
84109
{location && (
85110
<div className="absolute top-3 right-3">
86-
<Badge variant="secondary" className="bg-offwhite text-primary-blue text-xs truncate max-w-[100px]">
111+
<Badge variant="secondary" className="bg-offwhite text-primary-blue text-xs truncate max-w-[120px]">
87112
{location}
88113
</Badge>
89114
</div>
@@ -118,15 +143,15 @@ const EventCard: React.FC<EventCardProps> = ({ event }) => {
118143
<div className="flex flex-wrap gap-1">
119144
{supporters.map((supporter, index) => {
120145
// Get color based on index
121-
const backgroundColor = getRotatingColor(index);
146+
const backgroundColor = "#AB9A89";//getRotatingColor(index);
122147
// Get appropriate text color for contrast
123-
const textColor = getContrastTextColor(backgroundColor);
148+
const textColor = "hsl(40 33% 98%)";//getContrastTextColor("#AB9A89");
124149

125150
return (
126151
<Badge
127152
key={index}
128153
variant="outline"
129-
className="text-xs border truncate max-w-[120px]"
154+
className="text-xs border truncate max-w-[240px]"
130155
style={{
131156
backgroundColor,
132157
borderColor: backgroundColor,

src/components/HeroSection.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
import React from "react";
32
import { Link } from "react-router-dom";
43
import { Button } from "@/components/ui/button";
@@ -55,12 +54,12 @@ const HeroSection = () => {
5554
</div>
5655

5756
{/* Team image with rounded corners */}
58-
<div className="w-full lg:w-1/2 flex justify-center lg:justify-end">
59-
<div className="relative overflow-hidden rounded-2xl shadow-lg border-4 border-offwhite">
57+
<div className="w-full lg:w-1/2 flex justify-center">
58+
<div className="relative overflow-hidden rounded-2xl shadow-lg border-4 border-offwhite h-[600px]">
6059
<img
61-
src="/lovable-uploads/f96871b8-773a-4f10-a7bf-67c1abe3384c.png"
60+
src="/Everyone_SoSe2025.jpg"
6261
alt="OpenHardware Team"
63-
className="w-full max-w-md mx-auto object-cover"
62+
className="w-full h-full object-cover object-center"
6463
/>
6564
</div>
6665
</div>

src/components/TeamMember.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,21 @@ const TeamMember: React.FC<TeamMemberProps> = ({
5252
) : !isOpenPosition ? (
5353
// Placeholder image if no image and not open position
5454
<div className="w-full h-60 flex items-center justify-center bg-gray-100">
55-
<img
56-
src={"placeholder.png"}
57-
alt={name}
58-
className={`w-full h-60 object-cover object-center ${isOpenPosition ? 'opacity-80' : ''}`}
59-
/>
55+
<svg
56+
width="120"
57+
height="120"
58+
viewBox="0 0 120 120"
59+
fill="none"
60+
xmlns="http://www.w3.org/2000/svg"
61+
className="text-gray-300"
62+
>
63+
{/* Person silhouette */}
64+
<circle cx="60" cy="40" r="25" fill="currentColor" />
65+
<path
66+
d="M30 100C30 83.4315 43.4315 70 60 70C76.5685 70 90 83.4315 90 100"
67+
fill="currentColor"
68+
/>
69+
</svg>
6070
</div>
6171
) : (
6272
<div className={`w-full h-60 flex items-center justify-center bg-gray-100 ${isOpenPosition ? 'opacity-80' : ''}`}>

src/data/eventsData.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export interface Event {
3232
title: string;
3333
description: string;
3434
date: string; // Format: YYYY-MM-DD
35-
image: string;
35+
image?: string;
3636
link: {
3737
url: string;
3838
type: "instagram" | "signup" | "linkedin" | "luma" | "other";
@@ -53,7 +53,6 @@ export const eventsData: Event[] = [
5353
title: "ASIP Hackathon 2025",
5454
description: "A hackathon focused on Application-Specific Instruction Set Processors using the ASIP Designer Tool from Synopsys. Participants developed ML inference accelerators with guidance from industry experts.",
5555
date: "2025-03-15",
56-
image: "/media/events/asip-hackathon-2025.png",
5756
link: {
5857
url: "https://www.linkedin.com/events/asiphackathon2025/",
5958
type: "linkedin"
@@ -67,15 +66,14 @@ export const eventsData: Event[] = [
6766
{ name: "AI Processor Design Chair at TUM", type: "chair" },
6867
{ name: "Synopsys", type: "company" }
6968
],
70-
location: "Technical University of Munich",
69+
location: "TUM",
7170
isArchived: true
7271
},
7372
{
7473
id: "2",
7574
title: "Munich Neuromorphic Hackathon 2024",
7675
description: "An immersive hackathon on neuromorphic computing technologies with collaboration from fortiss, neurobus, and IBM, featuring expert talks and hands-on challenges.",
7776
date: "2024-04-20",
78-
image: "/media/events/neuromorphic-hackathon-2024.png",
7977
link: {
8078
url: "https://www.instagram.com/p/munich-neuromorphic-hackathon/",
8179
type: "instagram"
@@ -91,15 +89,14 @@ export const eventsData: Event[] = [
9189
{ name: "neurobus", type: "organization" },
9290
{ name: "IBM", type: "company" }
9391
],
94-
location: "Munich, Germany",
92+
location: "Munich",
9593
isArchived: true
9694
},
9795
{
9896
id: "3",
9997
title: "Neuromorphic Hackathon 2023",
10098
description: "Four-day hackathon focused on neuromorphic technologies, hosted in collaboration with Fortiss Neuromorphic Labs and Intel, featuring team challenges based on state-of-the-art research.",
10199
date: "2023-11-06",
102-
image: "/media/events/neuromorphic-hackathon-2023.png",
103100
link: {
104101
url: "https://luma.com/events/neuromorphic-hackathon-2023",
105102
type: "luma"
@@ -112,7 +109,7 @@ export const eventsData: Event[] = [
112109
{ name: "Fortiss Neuromorphic Labs", type: "organization" },
113110
{ name: "Intel", type: "company" }
114111
],
115-
location: "Fortiss offices, Munich",
112+
location: "Fortiss offices",
116113
isArchived: true
117114
}
118115
];

src/data/peopleData.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@ export const peopleData: Person[] = [
159159
name: "Alyona Starikova",
160160
role: "Former Co-Director",
161161
image: "/media/alumni/alyona-starikova.png",
162-
linkedIn: "https://linkedin.com",
163162
isActive: false,
164163
joinDate: "2021-06",
165164
endDate: "2023-01",
@@ -174,7 +173,6 @@ export const peopleData: Person[] = [
174173
name: "Fabio Veneto",
175174
role: "Former Team Lead",
176175
image: "/media/alumni/fabio-veneto.png",
177-
linkedIn: "https://linkedin.com",
178176
isActive: false,
179177
joinDate: "2021-09",
180178
endDate: "2023-05",
@@ -189,7 +187,6 @@ export const peopleData: Person[] = [
189187
name: "Ingo Fritz",
190188
role: "Former Team Member",
191189
image: "/media/alumni/ingo-fritz.png",
192-
linkedIn: "https://linkedin.com",
193190
isActive: false,
194191
joinDate: "2022-01",
195192
endDate: "2023-04",
@@ -203,7 +200,6 @@ export const peopleData: Person[] = [
203200
name: "Benedikt Witteler",
204201
role: "Former Team Member",
205202
image: "/media/alumni/benedikt-witteler.png",
206-
linkedIn: "https://linkedin.com",
207203
education: "TUM, Master Electrical Engineering and Information Technology",
208204
isActive: false,
209205
joinDate: "2023-11",
@@ -218,7 +214,6 @@ export const peopleData: Person[] = [
218214
name: "Ashik Chalakariyil Jayamon",
219215
role: "Former Team Member",
220216
image: "/media/alumni/ashik-jayamon.png",
221-
linkedIn: "https://linkedin.com",
222217
education: "M.Sc. Communications and Electronics",
223218
isActive: false,
224219
joinDate: "2023-12",
@@ -233,7 +228,6 @@ export const peopleData: Person[] = [
233228
name: "Michael Neumeier",
234229
role: "Former Advisor",
235230
image: "/media/alumni/michael-neumeier.png",
236-
linkedIn: "https://linkedin.com",
237231
education: "Neuromorphic Computing Researcher at Fortiss",
238232
isActive: false,
239233
joinDate: "2023-02",
@@ -248,7 +242,6 @@ export const peopleData: Person[] = [
248242
name: "Elvin Hajizada",
249243
role: "Former Advisor",
250244
image: "/media/alumni/elvin-hajizada.png",
251-
linkedIn: "https://linkedin.com",
252245
education: "Neuromorphic & Continual AI Researcher at Intel Labs",
253246
isActive: false,
254247
joinDate: "2023-03",

src/pages/Alumni.tsx

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -213,15 +213,17 @@ const Alumni = () => {
213213
{formatDate(member.joinDate)} - {member.endDate ? formatDate(member.endDate) : "Present"}
214214
</TableCell>
215215
<TableCell>
216-
<a
217-
href={member.linkedIn}
218-
target="_blank"
219-
rel="noopener noreferrer"
220-
className="flex items-center justify-center p-2 text-primary-blue hover:text-primary-blue/70 transition-colors"
221-
aria-label={`${member.name}'s LinkedIn profile`}
222-
>
223-
<Linkedin size={20} />
224-
</a>
216+
{member.linkedIn && (
217+
<a
218+
href={member.linkedIn}
219+
target="_blank"
220+
rel="noopener noreferrer"
221+
className="flex items-center justify-center p-2 text-primary-blue hover:text-primary-blue/70 transition-colors"
222+
aria-label={`${member.name}'s LinkedIn profile`}
223+
>
224+
<Linkedin size={20} />
225+
</a>
226+
)}
225227
</TableCell>
226228
</TableRow>
227229
))
@@ -252,15 +254,17 @@ const Alumni = () => {
252254
<div key={member.id} className="bg-white p-4 rounded-lg shadow">
253255
<div className="flex justify-between items-start mb-2">
254256
<h4 className="font-bold">{member.name}</h4>
255-
<a
256-
href={member.linkedIn}
257-
target="_blank"
258-
rel="noopener noreferrer"
259-
className="p-1 text-primary-blue hover:text-primary-blue/70"
260-
aria-label={`${member.name}'s LinkedIn profile`}
261-
>
262-
<Linkedin size={18} />
263-
</a>
257+
{member.linkedIn && (
258+
<a
259+
href={member.linkedIn}
260+
target="_blank"
261+
rel="noopener noreferrer"
262+
className="p-1 text-primary-blue hover:text-primary-blue/70"
263+
aria-label={`${member.name}'s LinkedIn profile`}
264+
>
265+
<Linkedin size={18} />
266+
</a>
267+
)}
264268
</div>
265269

266270
<p className="text-gray-600 text-sm mb-2">{member.role || "Member"}</p>

0 commit comments

Comments
 (0)