import React from 'react' import { MoreVertical, Wifi, WifiOff, Settings, Trash2, Edit, Activity, Calendar } from 'lucide-react' import { formatDistanceToNow } from 'date-fns' import { zhCN } from 'date-fns/locale' import { Card, CardContent, CardHeader, CardTitle } from '../ui/card' import { Button } from '../ui/button' import { Badge } from '../ui/badge' import { StatusIndicator } from '../ui/status-indicator' import { DeviceDto, DeviceStatus } from '../../types/device' interface DeviceCardProps { device: DeviceDto onEdit?: (device: DeviceDto) => void onDelete?: (device: DeviceDto) => void onConfigure?: (device: DeviceDto) => void className?: string } export function DeviceCard({ device, onEdit, onDelete, onConfigure, className }: DeviceCardProps) { const getStatusConfig = (status: DeviceStatus) => { switch (status) { case DeviceStatus.ONLINE: return { variant: 'success' as const, icon: , text: '在线' } case DeviceStatus.OFFLINE: return { variant: 'destructive' as const, icon: , text: '离线' } case DeviceStatus.ACTIVE: return { variant: 'success' as const, icon: , text: '活跃' } case DeviceStatus.INACTIVE: return { variant: 'secondary' as const, icon: , text: '非活跃' } case DeviceStatus.MAINTENANCE: return { variant: 'warning' as const, icon: , text: '维护中' } default: return { variant: 'secondary' as const, icon: , text: '未知' } } } const statusConfig = getStatusConfig(device.status) const getLastSeenText = () => { if (!device.lastSeenAt) { return '从未连接' } return formatDistanceToNow(new Date(device.lastSeenAt), { addSuffix: true, locale: zhCN }) } const getRegisteredText = () => { return formatDistanceToNow(new Date(device.registeredAt), { addSuffix: true, locale: zhCN }) } return (
{device.deviceName || '未命名设备'}
{statusConfig.icon} {statusConfig.text}
{/* Dropdown menu would go here in a real implementation */}
{/* Device Details */}
硬件ID {device.hardwareId}
最后连接 {getLastSeenText()}
注册时间 {getRegisteredText()}
{/* Action Buttons */}
{onConfigure && ( )} {onEdit && ( )}
{onDelete && ( )}
) }