import { useState, useEffect } from 'react' import { X } from 'lucide-react' import TagInput from './TagInput' const FIELDS = [ { key: 'name', label: 'Nom affiché', placeholder: 'Mon VPS 1', required: true, type: 'text' }, { key: 'host', label: 'IP ou hostname', placeholder: '192.168.1.10', required: true, type: 'text' }, { key: 'port', label: 'Port agent', placeholder: '8001', required: true, type: 'number' }, { key: 'api_key', label: 'Clé API agent', placeholder: 'Laisser vide pour conserver la clé actuelle', required: false, type: 'password' }, { key: 'description', label: 'Description', placeholder: 'Optionnel', required: false, type: 'text' }, ] export default function EditVpsModal({ vps, onSave, onClose }) { const [form, setForm] = useState({ name: vps.name ?? '', host: vps.host ?? '', port: String(vps.port ?? 8001), api_key: '', description: vps.description ?? '', tags: vps.tags ?? [], }) const [saving, setSaving] = useState(false) const [error, setError] = useState('') useEffect(() => { const handler = (e) => { if (e.key === 'Escape') onClose() } window.addEventListener('keydown', handler) return () => window.removeEventListener('keydown', handler) }, [onClose]) const set = (key) => (e) => setForm(f => ({ ...f, [key]: e.target.value })) const handleSubmit = async (e) => { e.preventDefault() setSaving(true) setError('') try { await onSave(vps.id, { ...form, port: parseInt(form.port, 10) }) } catch (err) { setError(err.message) setSaving(false) } } return (
{ if (e.target === e.currentTarget) onClose() }} >

Modifier le VPS

{vps.id}

{FIELDS.map(({ key, label, placeholder, required, type }) => (
))} {error && (

{error}

)}
setForm(f => ({ ...f, tags }))} />

Entrée ou virgule pour valider

) }