import { ArrowLeftRight, Coins, Diamond, DoorOpen, Eye, Gem, MessageSquare, Pencil, Shield, Sparkles, Wifi, WifiOff, } from 'lucide-react' import Link from 'next/link' import { AdminBreadcrumb } from '@/components/admin/admin-breadcrumb' import { UserWatchToggle } from '@/components/admin/user-watch-toggle' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { getAvatarUrl } from '@/lib/imager' interface UserHeroProps { user: { id: number username: string motto: string look: string rank: number credits: number pixels: number online: string permission: { rankName: string } twoFactorConfirmed: number } diamonds: number duckets: number roomCount: number chatCount: number tradeCount: number isOnline: boolean activeBan: boolean mode: 'show' | 'edit' canEdit: boolean /** When non-null, render the watch toggle with this initial state. */ watching?: boolean | null } export function UserHero({ user, diamonds, duckets, roomCount, chatCount, tradeCount, isOnline, activeBan, mode, canEdit, watching, }: UserHeroProps) { return ( <>
{/* Avatar */}
{user.username} {isOnline && ( )}
{/* Info */}

{user.username}

ID: {user.id} {/* Mode switch buttons */} {mode === 'show' && canEdit && ( )} {mode === 'edit' && ( )} {watching != null && ( )}
{user.motto && (

“{user.motto}”

)}
{user.permission.rankName || `Rank ${user.rank}`} {isOnline ? ( <> Online ) : ( <> Offline )} {activeBan && Banned} {user.twoFactorConfirmed ? ( 2FA ) : null}
{/* Currency row */}
{user.credits.toLocaleString()} credits
{diamonds.toLocaleString()} diamonds
{duckets.toLocaleString()} duckets
{user.pixels.toLocaleString()} pixels
{/* Quick stats cards */}

{roomCount}

Rooms

{chatCount.toLocaleString()}

Messages

{tradeCount}

Trades

) }