'use client'; import * as React from 'react'; import { Globe, Loader2, Mail, MapPin, ShieldCheck, Smartphone, UserCheck, } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Sheet, SheetContent, SheetTitle } from '@/components/ui/sheet'; import type { AdminUser } from '@/lib/services/admin'; import { formatDateTime } from '@/lib/utils'; interface UserDetailSheetProps { selectedUser: AdminUser | null; isOpen: boolean; onOpenChange: (open: boolean) => void; detailLoading: boolean; onStatusToggle: (user: AdminUser) => Promise; } export function UserDetailSheet({ selectedUser, isOpen, onOpenChange, detailLoading, onStatusToggle, }: UserDetailSheetProps) { const displayValue = (value?: string) => value && value.trim() ? value : '-'; return ( 用户档案 {selectedUser && ( <>
{selectedUser.username.substring(0, 2).toUpperCase()}

{selectedUser.nickname}

@{selectedUser.username} UID: {selectedUser.id} {selectedUser.is_admin && ( Admin )}
{detailLoading && (
正在刷新详情
)}
注册时间 { formatDateTime(selectedUser.created_at).split( ' ', )[0] }

个人资料

邮箱 {displayValue(selectedUser.email)}
手机 {displayValue(selectedUser.phone)}
⚧ 性别 {displayValue(selectedUser.gender)}
所在地 {displayValue(selectedUser.location)}
网站 {displayValue(selectedUser.website)}
简介 {displayValue(selectedUser.bio)}

系统记录

账户状态 {selectedUser.is_active ? '正常' : '禁用'}
管理员 {selectedUser.is_admin ? '是' : '否'}
最后登录 {formatDateTime(selectedUser.last_login_at)}
注册时间 {formatDateTime(selectedUser.created_at)}
最后更新 {formatDateTime(selectedUser.updated_at)}
{!selectedUser.is_admin && (
)}
)}
); }