ProfileCard
profilecard-1779378412607.tsx
'use client'
import { useState } from 'react'
const skills = ['React', 'TypeScript', 'Tailwind', 'Node.js', 'Prisma', 'Next.js']
export default function ProfileCard() {
const [following, setFollowing] = useState(false)
return (
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 48, background: '#0A0A0A' }}>
<div style={{
background: '#111', border: '1px solid rgba(255,255,255,0.08)',
borderRadius: 20, padding: '32px 28px', width: 280, textAlign: 'center',
position: 'relative',
}}>
{/* Background banner */}
<div style={{
position: 'absolute', top: 0, left: 0, right: 0, height: 80,
background: 'linear-gradient(135deg, rgba(201,168,76,0.15), rgba(99,102,241,0.15))',
borderRadius: '20px 20px 0 0',
}} />
{/* Avatar */}
<div style={{ position: 'relative', display: 'inline-block', marginBottom: 12 }}>
<div style={{
width: 80, height: 80, borderRadius: '50%',
background: 'linear-gradient(135deg, #C9A84C, #6366f1)',
display: 'flex', alignItems: 'center', justifyContent: 'center',
fontSize: 32, border: '3px solid #111',
position: 'relative', zIndex: 1,
}}>👨💻</div>
<div style={{
position: 'absolute', bottom: 2, right: 2, zIndex: 2,
width: 14, height: 14, borderRadius: '50%',
background: '#22c55e', border: '2px solid #111',
}} />
</div>
<div style={{ color: '#F5F5F0', fontSize: 18, fontWeight: 700, marginBottom: 2 }}>Alex Johnson</div>
<div style={{ color: '#C9A84C', fontSize: 13, marginBottom: 4 }}>@alexj</div>
<div style={{ color: '#666', fontSize: 13, marginBottom: 20, lineHeight: 1.5 }}>
Full-stack developer building the future of UI.
</div>
{/* Stats */}
<div style={{ display: 'flex', justifyContent: 'space-around', marginBottom: 20, padding: '16px 0', borderTop: '1px solid rgba(255,255,255,0.06)', borderBottom: '1px solid rgba(255,255,255,0.06)' }}>
{[['2.4k', 'Following'], ['18.2k', 'Followers'], ['142', 'Projects']].map(([val, label]) => (
<div key={label} style={{ textAlign: 'center' }}>
<div style={{ color: '#F5F5F0', fontWeight: 700, fontSize: 16 }}>{val}</div>
<div style={{ color: '#555', fontSize: 11 }}>{label}</div>
</div>
))}
</div>
{/* Skills */}
<div style={{ display: 'flex', flexWrap: 'wrap', gap: 6, justifyContent: 'center', marginBottom: 20 }}>
{skills.map(s => (
<span key={s} style={{
background: 'rgba(201,168,76,0.08)', border: '1px solid rgba(201,168,76,0.2)',
color: '#C9A84C', fontSize: 11, padding: '3px 10px', borderRadius: 20, fontWeight: 500,
}}>{s}</span>
))}
</div>
{/* Follow button */}
<button
onClick={() => setFollowing(f => !f)}
style={{
width: '100%', padding: '11px', borderRadius: 10, border: 'none',
cursor: 'pointer', fontWeight: 700, fontSize: 14, transition: 'all 0.2s',
background: following ? 'rgba(255,255,255,0.06)' : '#C9A84C',
color: following ? '#aaa' : '#0A0A0A',
}}
>{following ? 'Following ✓' : 'Follow'}</button>
</div>
</div>
)
}Component info
CategoryCards
Frameworkreact
TierFREE
Views0
Copies0
About
User profile card with avatar, social stats, skills badges, and follow button
More from Cards
'use client';
import React, { useState, useEffect } from 'react';
interface StatsCardProps {
label: string;
value: number;
trend: 'up' | 'down';
percentageChange: number;
sparklineData: number[];
}
const StatsCard: React.FC<StatsCardPropStatsCard
Cards
import React from 'react';
import { useEffect, useState } from 'react';
interface NoisyCardProps {
children: React.ReactNode;
className?: string;
}
const NoisyCard: React.FC<NoisyCardProps> = ({ children, className }) => {
const [noise, setNoNoisyCard
Cards
import React, { useState, useEffect } from 'react';
interface HolographicCardProps {
children: React.ReactNode;
}
const HolographicCard: React.FC<HolographicCardProps> = ({ children }) => {
const [mousePosition, setMousePosition] = useState({ xHolographicCard
Cards
'use client';
import React, { useState } from 'react';
interface Notification {
id: number;
avatar: string;
message: string;
time: string;
unread: boolean;
}
const notifications: Notification[] = [
{ id: 1, avatar: 'https://via.placehoNotificationCard
Cards