"use client" import { Camera } from "lucide-react" import Link from "next/link" import { useEffect, useRef, useState } from "react" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" import { Separator } from "@/components/ui/separator" import { Switch } from "@/components/ui/switch" import { Textarea } from "@/components/ui/textarea" import { notifySuccess } from "@/lib/toast" import type { UserRole } from "@/lib/types" import { useAuthStore } from "@/store/auth" export default function SettingsPage() { const { currentRole, verifiedRoles, switchRole, user, updateProfile } = useAuthStore() const [nickname, setNickname] = useState(user?.nickname ?? "") const [bio, setBio] = useState(user?.bio ?? "") const [avatar, setAvatar] = useState(user?.avatar ?? "") const fileRef = useRef(null) useEffect(() => { setNickname(user?.nickname ?? "") setBio(user?.bio ?? "") setAvatar(user?.avatar ?? "") }, [user]) const isRoleVerified = (role: UserRole) => verifiedRoles.includes(role) return (

个人设置

头像
{user?.nickname?.[0] ?? "?"} { const file = event.target.files?.[0] if (!file) return setAvatar(URL.createObjectURL(file)) event.target.value = "" }} />

点击更换头像,支持 JPG、PNG 格式

基本信息
setNickname(event.target.value)} />