import React, { useState } from 'react' import ProfileCoverEditor from './ProfileCoverEditor' import LevelBadge from '../xp/LevelBadge' import XPProgressBar from '../xp/XPProgressBar' import FollowButton from '../social/FollowButton' import FollowersPreview from '../social/FollowersPreview' import MutualFollowersBadge from '../social/MutualFollowersBadge' function formatCompactNumber(value) { const numeric = Number(value ?? 0) return numeric.toLocaleString() } export default function ProfileHero({ user, profile, isOwner, viewerIsFollowing, followerCount, recentFollowers = [], followContext = null, heroBgUrl, countryName, leaderboardRank, extraActions = null }) { const [following, setFollowing] = useState(viewerIsFollowing) const [count, setCount] = useState(followerCount) const [editorOpen, setEditorOpen] = useState(false) const [coverUrl, setCoverUrl] = useState(user?.cover_url || heroBgUrl || null) const [coverPosition, setCoverPosition] = useState(Number.isFinite(user?.cover_position) ? user.cover_position : 50) const uname = user.username || user.name || 'Unknown' const displayName = user.name || uname const joinDate = user.created_at ? new Date(user.created_at).toLocaleDateString('en-US', { month: 'long', year: 'numeric' }) : null const bio = profile?.bio || profile?.about || '' const progressPercent = Math.round(Number(user?.progress_percent ?? 0)) const heroStats = [ { label: 'Followers', value: formatCompactNumber(count) }, { label: 'Level', value: `Lv ${formatCompactNumber(user?.level ?? 1)}` }, ] return ( <>