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 (
已用 {formatBytes(used)}
剩余 {formatBytes(Math.max(0, limit - used))}
SUBSCRIPTION URL
{subUrl}