import React from 'react' const SOCIAL_ICONS = { twitter: { icon: 'fa-brands fa-x-twitter', label: 'X / Twitter' }, deviantart: { icon: 'fa-brands fa-deviantart', label: 'DeviantArt' }, instagram: { icon: 'fa-brands fa-instagram', label: 'Instagram' }, behance: { icon: 'fa-brands fa-behance', label: 'Behance' }, artstation: { icon: 'fa-solid fa-palette', label: 'ArtStation' }, youtube: { icon: 'fa-brands fa-youtube', label: 'YouTube' }, website: { icon: 'fa-solid fa-link', label: 'Website' }, } function InfoRow({ icon, label, children }) { return (
{label}
{children}
) } /** * TabAbout * Bio, social links, metadata - replaces old sidebar profile card. */ export default function TabAbout({ user, profile, socialLinks, countryName, followerCount }) { const uname = user.username || user.name const displayName = user.name || uname const about = profile?.about const website = profile?.website const joinDate = user.created_at ? new Date(user.created_at).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' }) : null const lastVisit = user.last_visit_at ? (() => { try { const d = new Date(user.last_visit_at) return d.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }) } catch { return null } })() : null const genderMap = { M: 'Male', F: 'Female', X: 'Non-binary / N/A' } const genderLabel = genderMap[profile?.gender?.toUpperCase()] ?? null const socialEntries = socialLinks ? Object.entries(socialLinks).filter(([, link]) => link?.url) : [] return (
{/* Bio */} {about ? (

About

{about}

) : (
No bio yet.
)} {/* Info card */}

Profile Info

{displayName && displayName !== uname && ( {displayName} )} @{uname} {genderLabel && ( {genderLabel} )} {countryName && ( {profile?.country_code && ( {countryName} { e.target.style.display = 'none' }} /> )} {countryName} )} {website && ( {(() => { try { const url = website.startsWith('http') ? website : `https://${website}` return new URL(url).hostname } catch { return website } })()} )} {joinDate && ( {joinDate} )} {lastVisit && ( {lastVisit} )} {Number(followerCount).toLocaleString()}
{/* Social links */} {socialEntries.length > 0 && (

Social Links

{socialEntries.map(([platform, link]) => { const si = SOCIAL_ICONS[platform] ?? { icon: 'fa-solid fa-link', label: platform } const href = link.url.startsWith('http') ? link.url : `https://${link.url}` return ( {si.label} ) })}
)}
) }