/ components / ProfileHeader.tsx
ProfileHeader.tsx
 1  import { Button } from "@/components/ui/button"
 2  import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
 3  import { CalendarDays, MapPin, LinkIcon } from 'lucide-react'
 4  import { useAccount } from 'wagmi'
 5  
 6  
 7  interface ProfileHeaderProps {
 8    username: string
 9    handle: string
10    bio: string
11    location: string
12    website: string
13    joinDate: string
14    followersCount: number
15    followingCount: number
16  }
17  
18  export function ProfileHeader({
19    username,
20    handle,
21    bio,
22    location,
23    website,
24    joinDate,
25    followersCount,
26    followingCount
27  }: ProfileHeaderProps) {
28    const { isConnected, address } = useAccount()
29  
30    return (
31      <div className="border-b pb-4">
32        <div className="h-48 bg-gray-200" />
33        <div className="px-4">
34          <div className="flex justify-between items-start">
35            <Avatar className="w-32 h-32 border-4 border-white -mt-16">
36              <AvatarImage src="/placeholder-avatar.jpg" alt={username} />
37              {isConnected && <AvatarFallback>{username[0]}</AvatarFallback>}
38            </Avatar>
39            {isConnected && <Button className="mt-4">Edit profile</Button>}
40          </div>
41          <div className="mt-4">
42            <h2 className="text-2xl font-bold">{username}</h2>
43            <p className="text-gray-500">@{handle}</p>
44          </div>
45          <p className="mt-4">{bio}</p>
46          <div className="flex flex-wrap gap-y-2 mt-4 text-gray-500">
47            {location && (
48              <div className="flex items-center mr-4">
49                <MapPin size={18} className="mr-2" />
50                <span>{location}</span>
51              </div>
52            )}
53            {website && (
54              <div className="flex items-center mr-4">
55                <LinkIcon size={18} className="mr-2" />
56                <a href={website} target="_blank" rel="noopener noreferrer" className="text-blue-500 hover:underline">
57                  {website}
58                </a>
59              </div>
60            )}
61            <div className="flex items-center">
62              <CalendarDays size={18} className="mr-2" />
63              <span>Joined {joinDate}</span>
64            </div>
65          </div>
66          <div className="flex mt-4 space-x-4">
67            <span><strong>{followingCount}</strong> Following</span>
68            <span><strong>{followersCount}</strong> Followers</span>
69          </div>
70        </div>
71      </div>
72    )
73  }
74