"use client" // import { PublicProfileRead } from "@/lib/types" // We'll need to define this or import generic import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card } from "@/components/ui/card" import { Separator } from "@/components/ui/separator" import { MapPin, CalendarDays, Ticket, Music2, Share2 } from "lucide-react" import Link from "next/link" // Temporary type definition until we sync shared types interface HeadlinerBand { name: string slug: string tier: string logo_url?: string | null } interface SocialHandles { bluesky?: string | null mastodon?: string | null instagram?: string | null } interface ProfilePosterProps { profile: any // Typing loosely first to get the visual structure up } export function ProfilePoster({ profile }: ProfilePosterProps) { const { username, display_name, bio, avatar, avatar_bg_color, location, social_handles, headliners, supporting_acts, stats, joined_at } = profile // Poster Date (Joined At) const memberSince = new Date(joined_at).toLocaleDateString('en-US', { month: 'long', year: 'numeric' }) return (
{/* THE POSTER */}
{/* Background Texture/Gradient */}
{/* LEFT: The "Lineup" (Typography Hierarchy) */}
{/* Top Billing: User Name */}

{display_name}

Presents

{/* Headliners */} {headliners && headliners.length > 0 ? (
{headliners.map((band: HeadlinerBand) => ( {band.name} ))}
) : (
No Headliners Announced
)} {/* Supporting Acts */} {supporting_acts && supporting_acts.length > 0 && (
{supporting_acts.map((band: HeadlinerBand) => ( {band.name} ))}
)} {/* Location / Date Line */}
{location && ( {location} )} Est. {memberSince}
{/* RIGHT: The "Pass" (Avatar) */}
{/* Lanyard String Mockup */}
{/* Pass Header */}
ALL ACCESS
{/* Pass Image */}
{avatar ? ( {username} ) : (
{profile.avatar_text || username.substring(0, 2).toUpperCase()}
)}
{/* Pass Footer */}
@{username}
{/* Barcode mockup */}
{/* LOWER BIO SECTION */}
{/* Stats Card */}

Tour Stats

Shows {stats.shows_attended}
Venues {stats.venues_visited}
Reviews {stats.reviews_written}
{/* Bio & Socials */}

About

{bio || "This fan hasn't written a bio yet. They're probably at a show."}

{social_handles.bluesky && ( )} {social_handles.mastodon && ( )} {social_handles.instagram && ( )}
) }