+ {rows.map((row, i) => {
+ const meta = MODES.find((x) => x.mode === row.mode)!;
+ const isRunning = running.includes(row.mode);
+ const state = !row.enabled ? "Off" : dirty ? "Unsaved" : isRunning ? "Running" : "Waiting for SDR";
+ return (
+
+
{row.enabled ? ++rank : ""}
+
edit(rows.map((r, j) => (j === i ? { ...r, enabled: e.target.checked } : r)))}
+ className="rounded bg-gray-800 border-gray-700 text-indigo-600 focus:ring-indigo-500 focus:ring-offset-gray-900"
+ />
+
+
{meta.name}
+
{meta.hint}
+
+ {canEdit && (
+
+ move(i, -1)}
+ disabled={i === 0}
+ aria-label={`Move ${meta.name} up`}
+ className="w-7 h-7 rounded bg-gray-800 hover:bg-gray-700 text-gray-300 disabled:opacity-30"
+ >
+ ▲
+
+ move(i, 1)}
+ disabled={i === rows.length - 1}
+ aria-label={`Move ${meta.name} down`}
+ className="w-7 h-7 rounded bg-gray-800 hover:bg-gray-700 text-gray-300 disabled:opacity-30"
+ >
+ ▼
+
+
+ )}
+
+ {state}
+
+