import React, { useState } from 'react'; import { Button } from '@/components/ui/index'; import { RefreshCw } from 'lucide-react'; import { RemotesList } from '@/components/Proxmox'; import { AddRemoteForm } from '@/components/Proxmox'; import { EditRemoteForm } from '@/components/Proxmox'; import { RemoveRemoteDialog } from '@/components/Proxmox'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/index'; interface RemoteInfo { id: string; name: string; url: string; username: string; type: 'pve' | 'pbs'; status: 'connected' | 'disconnected' | 'error'; } export function ProxmoxRemotesPage() { const [remotes, setRemotes] = useState([ { id: '1', name: 'Production Cluster', url: 'https://pve1.example.com:8006', username: 'root@pam', type: 'pve', status: 'connected' }, { id: '2', name: 'Backup Server', url: 'https://pbs1.example.com:8007', username: 'root@pam', type: 'pbs', status: 'connected' }, ]); const [showAddDialog, setShowAddDialog] = useState(false); const [editingRemote, setEditingRemote] = useState(null); const [removingRemote, setRemovingRemote] = useState(null); // eslint-disable-next-line @typescript-eslint/no-explicit-any const handleAddRemote = (config: any) => { const newRemote: RemoteInfo = { id: String(remotes.length + 1), name: String(config.name), url: String(config.url), username: String(config.username), type: config.type as 'pve' | 'pbs', status: 'connected', }; setRemotes([...remotes, newRemote]); setShowAddDialog(false); }; // eslint-disable-next-line @typescript-eslint/no-explicit-any const handleEditRemote = (config: any) => { setRemotes(remotes.map(r => r.id === String(config.id) ? { ...r, ...config } as RemoteInfo : r)); setEditingRemote(null); }; const handleRemoveRemote = () => { if (removingRemote) { setRemotes(remotes.filter(r => r.id !== removingRemote.id)); setRemovingRemote(null); } }; return (

Remotes

Manage Proxmox VE and Backup Server connections

{}} onEdit={(remote) => { setEditingRemote(remote as RemoteInfo | null); }} onDelete={(remote) => { setRemovingRemote(remote as RemoteInfo | null); }} /> {showAddDialog && ( Add New Remote setShowAddDialog(false)} /> )} {editingRemote !== null && ( setEditingRemote(null)}> Edit Remote setEditingRemote(null)} /> )} {removingRemote !== null && ( setRemovingRemote(null)}> Remove Remote setRemovingRemote(null)} /> )}
); }