"use client"; import { PlusIcon, Trash2Icon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; export interface KeyValueItem { key: string; value: string; } interface KeyValueEditorProps { items: KeyValueItem[]; onChange: (items: KeyValueItem[]) => void; keyPlaceholder?: string; valuePlaceholder?: string; addButtonText?: string; emptyMessage?: string; disabled?: boolean; } export function KeyValueEditor({ items, onChange, keyPlaceholder = "Key", valuePlaceholder = "Value", addButtonText = "Add", disabled = false, }: KeyValueEditorProps) { const addItem = () => { onChange([...items, { key: "", value: "" }]); }; const updateItem = (index: number, field: "key" | "value", value: string) => { const newItems = [...items]; newItems[index] = { ...newItems[index], [field]: value }; onChange(newItems); }; const removeItem = (index: number) => { onChange(items.filter((_, i) => i !== index)); }; return (
{items.map((item, index) => (
updateItem(index, "key", e.target.value)} className="flex-1" disabled={disabled} /> updateItem(index, "value", e.target.value)} className="flex-1" disabled={disabled} />
))}
); }