+ {/* Toolbar */}
+
+
⚡ Spatial Hash Dashboard
+
16×16×16 = 4096 cells
+
+
+
+ {/* Voltage mode filter */}
+
+
+
+ {/* Group toggle */}
+
+
+ {/* Live updates toggle */}
+
+
+ {/* Export */}
+
+
+
+ {/* LyteNyte Grid */}
+
+ {
+ if (row.kind === "leaf") {
+ handleRowClick(row.data!);
+ }
+ },
+ },
+ }}
+ />
+
+
+ {/* Selected row detail panel */}
+ {selectedRow && (
+
+ Selected Cell:
+
+ ({selectedRow.x}, {selectedRow.y}, {selectedRow.z})
+
+ Density: {selectedRow.density}
+ FD: {selectedRow.fd.toFixed(2)}
+
+ {selectedRow.voltage_mode}
+
+ Particles: {selectedRow.particle_count}
+ Max Neigh: {selectedRow.max_neighbor}
+
+ id: {selectedRow.id}
+
+
+ )}
+
+ {/* Status bar */}
+
+
+ {rowCount.toLocaleString()} rows
+ {voltageFilter !== "ALL" && ` (filtered by ${voltageFilter})`}
+
+ |
+ {VOLTAGE_MODES.map((m) => (
+
+ {m}: {modeStats[m]}
+
+ ))}
+
+ {liveUpdates ? "🟢 LIVE" : "⏸ PAUSED"}
+
+
+ );
+}
diff --git a/5-Applications/dashboard/lytenyte-storage/src/columns.ts b/5-Applications/dashboard/lytenyte-storage/src/columns.ts
new file mode 100644
index 00000000..caf0a1e1
--- /dev/null
+++ b/5-Applications/dashboard/lytenyte-storage/src/columns.ts
@@ -0,0 +1,135 @@
+/**
+ * columns.ts — LyteNyte column definitions for spatial hash grid.
+ *
+ * Uses the headless column API: id + field + cellRenderer for custom rendering.
+ */
+
+import { createElement } from "react";
+import type { Grid } from "@1771technologies/lytenyte-core";
+import type { SpatialHashRow, VoltageMode } from "./data";
+
+export type LnColumn = Grid.Column