"use client"; import { useState } from "react"; import { c2api } from "@/lib/c2api"; import type { NodeRecord, SystemRecord } from "@/lib/types"; interface Props { node: NodeRecord; systems: SystemRecord[]; onClose: () => void; } const PRESETS = [ { value: "rtl-sdr-v3", label: "RTL-SDR v3", hint: "TCXO — LNA:34, tracking off" }, { value: "nesdr-smart-v4", label: "NESDR Smart v4", hint: "TCXO — LNA:32, tracking off" }, { value: "other", label: "Other", hint: "LNA:32, tracking on" }, ]; export function NodeConfigModal({ node, systems, onClose }: Props) { const [systemId, setSystemId] = useState(""); const [preset, setPreset] = useState("rtl-sdr-v3"); const [ppm, setPpm] = useState("0"); const [saving, setSaving] = useState(false); const [error, setError] = useState(null); const ppmVal = parseFloat(ppm); const ppmOverride = !isNaN(ppmVal) && ppmVal !== 0 ? ppmVal : undefined; async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!systemId) return; setSaving(true); setError(null); try { await c2api.assignSystem(node.node_id, systemId, preset, ppmOverride); onClose(); } catch (err) { setError(err instanceof Error ? err.message : "Failed to assign system."); } finally { setSaving(false); } } const selectedPreset = PRESETS.find((p) => p.value === preset); return (

Configure Node

{node.node_id} connected for the first time. Assign it a radio system to begin monitoring.

{selectedPreset && (

{selectedPreset.hint}

)}
setPpm(e.target.value)} step="0.1" className="w-full bg-gray-800 border border-gray-700 rounded-lg px-3 py-2 text-white text-sm font-mono focus:outline-none focus:border-indigo-500" placeholder="0" />
{error &&

{error}

}
); }