"use client"; /** * DeviceCard — 裝置卡片(雲端版) * * 來源:`local-tool/frontend/src/components/devices/device-card.tsx`(雲端版改造) * * 對齊: * - `.autoflow/03-design/components.md` §5(Devices 元件) * - `.autoflow/03-design/pages.md` §5(裝置列表) * - `.autoflow/03-design/flows/flow-offline-handling.md` §4.1 * * 改動: * - 右上角狀態徽章改為 `RemoteDeviceBadge`(雲端版語意) * - 離線(remoteStatus != online)時卡片 opacity-75 + 操作按鈕 disabled * - 「工作區」按鈕只在 remoteStatus=online 時顯示(flow-offline-handling §4.1) * - 移除 local-tool 的 connect/disconnect 按鈕(雲端版這些走 `/devices/[id]` 詳情頁操作) * - 卡片本體包成 Link 到 `/devices/[id]`(design-review M3 統一 hover 規格) */ import Link from "next/link"; import { RemoteDeviceBadge } from "@/components/cloud/remote-device-badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { useT } from "@/lib/i18n/context"; import { cn } from "@/lib/utils"; import type { DeviceSummary } from "@/stores/device-store"; interface DeviceCardProps { device: DeviceSummary; } export function DeviceCard({ device }: DeviceCardProps) { const t = useT(); const displayName = device.alias || device.name; const isOnline = device.remoteStatus === "online"; return (
{displayName} {device.alias && (

{device.name}

)}

{t("devices.type")}

{device.type || "—"}

{t("devices.firmware")}

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

{device.flashedModel && (

{t("devices.flashedModel")}

{device.flashedModel}

)}
{isOnline && device.flashedModel && ( )}
); }