'use client'; import Link from 'next/link'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Loader2 } from 'lucide-react'; import { DeviceStatusBadge } from './device-status'; import { useDeviceStore } from '@/stores/device-store'; import { useDevicePreferencesStore } from '@/stores/device-preferences-store'; import { useTranslation } from '@/lib/i18n'; import type { Device } from '@/types/device'; interface DeviceCardProps { device: Device; isFirstCard?: boolean; } export function DeviceCard({ device, isFirstCard }: DeviceCardProps) { const { t } = useTranslation(); const { connectDevice, disconnectDevice, connectingId, disconnectingId } = useDeviceStore(); const prefs = useDevicePreferencesStore((s) => s.getPreferences(device.id)); const displayName = prefs.alias || device.name; const isConnected = device.status === 'connected' || device.status === 'flashing' || device.status === 'inferencing'; const isConnecting = connectingId === device.id; const isDisconnecting = disconnectingId === device.id; const isBusy = isConnecting || isDisconnecting || connectingId !== null || disconnectingId !== null; return (
{displayName} {prefs.alias && (

{device.name}

)}

{t('devices.type')}

{device.type}

{t('devices.firmware')}

{device.firmwareVersion || t('common.na')}

{device.flashedModel && (

{t('devices.flashedModel')}

{device.flashedModel}

)}
{isConnected ? ( <> ) : ( )}
); }