"use client" import { useState } from "react" import { authClient } from "@/lib/auth-client" import { Loader2, Save } from "lucide-react" import { motion } from "motion/react" import { ProfilePhotoUpload } from "@/components/profile/profile-photo-upload" interface SettingsProfileTabProps { name: string email: string role: string | null createdAt: string image?: string | null userId: string onImageChange?: (url: string | null) => void } export function SettingsProfileTab({ name, email, role, createdAt, image, userId, onImageChange }: SettingsProfileTabProps) { const [displayName, setDisplayName] = useState(name) const [isSaving, setIsSaving] = useState(false) const [message, setMessage] = useState<{ type: "success" | "error"; text: string } | null>(null) const handleSaveName = async () => { if (!displayName.trim()) { setMessage({ type: "error", text: "Name cannot be empty" }) return } setIsSaving(true) setMessage(null) const { error } = await authClient.updateUser({ name: displayName.trim(), }) if (error) { setMessage({ type: "error", text: error.message || "Failed to update name" }) } else { setMessage({ type: "success", text: "Name updated successfully" }) } setIsSaving(false) } const joinDate = new Date(createdAt).toLocaleDateString("en-US", { month: "long", year: "numeric", }) return ( {/* Profile Photo */} { onImageChange?.(url) await authClient.updateUser({ image: url ?? "" }) }} /> {/* Display Name */}

Display Name

setDisplayName(e.target.value)} className="w-full px-3 py-2 rounded-lg bg-text/5 border border-border text-sm text-text focus:outline-none focus:border-primary/60 focus:ring-1 focus:ring-primary/30 transition-colors" placeholder="Your display name" />
{message && (

{message.text}

)}
{/* Email (read-only) */}

Email

{email}

Email changes require verification. Contact support if needed.

{/* Account Info (read-only) */}

Account Info

Role

{role || "user"}

Member since

{joinDate}

) }