import { type ApiKeyConfig } from "@/hooks/use-api-key"; import { Button } from "@pram/ui/components/button"; import { Input } from "@pram/ui/components/input"; import { Label } from "@pram/ui/components/label"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@pram/ui/components/card"; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@pram/ui/components/select"; type FormState = Omit & { apiKey: string }; interface ProviderOption { value: string; label: string; } interface ApiKeyFormProps { isAdding: boolean; isSaving: boolean; form: FormState; canSave: boolean; providers: ProviderOption[]; onChange: (field: keyof FormState, value: string | number) => void; onSave: () => void; onCancel: () => void; } export function ApiKeyForm({ isAdding, isSaving, form, canSave, providers, onChange, onSave, onCancel }: ApiKeyFormProps) { return ( {isAdding ? "Tambah API Key Baru" : "Edit API Key"} {isAdding ? "Tambahkan konfigurasi provider baru." : "Kosongkan field API Key jika tidak ingin mengubahnya."}
onChange("name", e.target.value)} placeholder="Contoh: OpenAI GPT-4o" className="rounded-[var(--radius-lg)] border-2 border-[var(--oat-border)] bg-[var(--pure-white)] text-[var(--clay-black)]" />
onChange("modelName", e.target.value)} placeholder="gpt-4o-mini" className="rounded-[var(--radius-lg)] border-2 border-[var(--oat-border)] bg-[var(--pure-white)] text-[var(--clay-black)]" />
onChange("baseUrl", e.target.value)} placeholder="https://api.openai.com/v1" className="rounded-[var(--radius-lg)] border-2 border-[var(--oat-border)] bg-[var(--pure-white)] text-[var(--clay-black)]" />
onChange("maxTokens", Number(e.target.value))} placeholder="16384" className="rounded-[var(--radius-lg)] border-2 border-[var(--oat-border)] bg-[var(--pure-white)] text-[var(--clay-black)]" />
onChange("apiKey", e.target.value)} placeholder={isAdding ? "sk-..." : "•••••••• (kosongkan untuk tidak mengubah)"} className="rounded-[var(--radius-lg)] border-2 border-[var(--oat-border)] bg-[var(--pure-white)] text-[var(--clay-black)]" />
); }