import { Gauge, Link2, QrCode } from "lucide-react"; import { Progress } from "@/components/ui/progress"; import { CopyButton } from "@/components/shared/copy-button"; import { QrPreview } from "@/components/shared/qr-preview"; import { formatBytes } from "@/lib/utils"; import { buildSingleNodeUri } from "@/services/subscription"; import type { SubscriptionRecord } from "../subscriptions-types"; interface ProxySubscriptionDetailsProps { sub: SubscriptionRecord; baseUrl: string; } export function ProxySubscriptionDetails({ sub, baseUrl }: ProxySubscriptionDetailsProps) { if (sub.plan.type !== "PROXY") return null; const used = Number(sub.trafficUsed); const limit = sub.trafficLimit ? Number(sub.trafficLimit) : null; const percent = limit ? Math.min(100, Math.round((used / limit) * 100)) : 0; const subUrl = `${baseUrl}/api/subscription/${sub.id}?token=${sub.downloadToken}`; const singleNodeUri = sub.nodeClient ? buildSingleNodeUri(sub.nodeClient) : ""; return (
{limit && (
流量用量
{percent}%

已用 {formatBytes(used)}

剩余 {formatBytes(Math.max(0, limit - used))}

)} {sub.nodeClient ? (
导入信息

SUBSCRIPTION URL

{subUrl}

扫码导入
{singleNodeUri && ( )}
) : (
订阅节点正在准备中,分配完成后这里会展示订阅链接与二维码。
)}
); }