diff --git a/apps/web/app/profile/page.tsx b/apps/web/app/profile/page.tsx new file mode 100644 index 0000000..bd23060 --- /dev/null +++ b/apps/web/app/profile/page.tsx @@ -0,0 +1,43 @@ +import { Navbar } from "@/components/layout/navbar"; +import { UserInfoCard } from "@/components/profile/UserInfoCard"; + +export default function ProfilePage() { + // Sample data - in a real app, this would come from API/auth + const userData = { + avatarUrl: "/images/avatar-placeholder.jpg", // This would be the user's actual avatar + name: "John Stellar", + role: "Designer", + joinedDate: "Joined March 2023", + hostedCount: 12, + attendedCount: 28, + instagramUrl: "https://instagram.com/johnstellar", + twitterUrl: "https://twitter.com/johnstellar", + mailUrl: "mailto:john@stellar.com", + linkedinUrl: "https://linkedin.com/in/johnstellar" + }; + + return ( +
+ + +
+ {/* Two-column layout */} +
+ {/* Left column - Profile Sidebar */} +
+ +
+ + {/* Right column - Event lists placeholder */} +
+
+

Your Events

+ {/* Event lists — coming in follow-up issue */} +

Event lists will be displayed here in a future update.

+
+
+
+
+
+ ); +} diff --git a/apps/web/components/profile/UserInfoCard.tsx b/apps/web/components/profile/UserInfoCard.tsx new file mode 100644 index 0000000..34ab6ca --- /dev/null +++ b/apps/web/components/profile/UserInfoCard.tsx @@ -0,0 +1,236 @@ +import Image from "next/image"; + +interface UserInfoCardProps { + avatarUrl: string; + name: string; + role: string; + joinedDate: string; + hostedCount: number; + attendedCount: number; + instagramUrl?: string; + twitterUrl?: string; + mailUrl?: string; + linkedinUrl?: string; +} + +export function UserInfoCard({ + avatarUrl, + name, + role, + joinedDate, + hostedCount, + attendedCount, + instagramUrl, + twitterUrl, + mailUrl, + linkedinUrl, +}: UserInfoCardProps) { + return ( +
+ {/* Avatar */} +
+
+ {name} +
+
+ + {/* Name and Role */} +
+

{name}

+

{role}

+
+ + {/* Joined Date */} +
+
+ {/* Calendar icon placeholder - using SVG until icon is available */} + + + + +
+ {joinedDate} +
+ + {/* Stats Row */} +
+
+
{hostedCount}
+
Hosted
+
+
+
{attendedCount}
+
Attended
+
+
+ + {/* Social Icons Row */} +
+ {instagramUrl && ( + + {/* Instagram icon placeholder */} + + + + + + + )} + + {twitterUrl && ( + + {/* X/Twitter icon placeholder */} + + + + + + )} + + {mailUrl && ( + + {/* Mail icon placeholder */} + + + + + + )} + + {linkedinUrl && ( + + {/* LinkedIn icon placeholder */} + + + + + + )} +
+
+ ); +} diff --git a/apps/web/public/images/avatar-placeholder.jpg b/apps/web/public/images/avatar-placeholder.jpg new file mode 100644 index 0000000..e69de29