"use client"; import { PlugZap } from "lucide-react"; import { CredentialRow, type TestResult, } from "@/components/settings/CredentialRow"; import { EmptyState } from "@/components/ui/EmptyState"; import { SectionHeader } from "@/components/ui/SectionHeader"; import { API_KEY_PROVIDERS } from "@/lib/settings/providers"; import type { ProviderView } from "@/lib/api/types"; interface CredentialsPanelProps { providers: ProviderView[]; drafts: Record; savingId: string | null; testingId: string | null; results: Record; onDraftChange: (providerId: string, value: string) => void; onSave: (providerId: string) => void; onTest: (providerId: string) => void; } // 提供商凭据面板:API-key 提供商列表,逐行保存/测试(UX §6.10)。 export function CredentialsPanel({ providers, drafts, savingId, testingId, results, onDraftChange, onSave, onTest, }: CredentialsPanelProps) { const maskedFor = (id: string): string | null => providers.find((p) => p.provider === id)?.masked_key ?? null; return (
{providers.length === 0 ? ( ) : null}
    {API_KEY_PROVIDERS.map((prov) => ( onDraftChange(prov.id, value)} onSave={() => onSave(prov.id)} onTest={() => onTest(prov.id)} /> ))}
); } function StatItem({ label, value }: { label: string; value: number }) { return (
{label} {value}
); }