import { For, createSignal, onCleanup, onMount, type JSX } from "solid-js"; import { IslandPill, STATUS, CALM, CRITICAL, ModuleCard } from "./IslandMock"; import { ApprovalCardMock, SessionRowMock, DieLine, CLAUDE, CODEX } from "./ModuleMocks"; /** * Feature collage: five cells sold as the app's actual UI. The hero cell * shows the real collapsed pill (campfire slot, camera housing, live data) * dressed in the island's black surface; supporting cells reuse the same * module chrome, status palette, and metric language. */ export function CollageCell(props: { class?: string; kicker: string; title: string; body: string; children?: JSX.Element; }) { return (

{props.kicker}

{props.title}

{props.body}

{props.children}
); } /** * Stage for app-UI mocks: the island's black ink ground. The real island * is always dark (preferredColorScheme .dark), so the mocks read correctly * in both site themes. */ export function InkStage(props: { children: JSX.Element; class?: string }) { return (
{props.children}
); } /** Fans panel mock: RPM gauge rows in the app's card chrome. */ function FansPanelMock() { const fans = [ { rpm: 1270, frac: 0.26 }, { rpm: 1219, frac: 0.25 } ]; return (
{(f) => (
{f.rpm} RPM
)}
Auto MAX
); } /** * Remote agents as the panel draws them: ordinary session rows whose agent * chip names the machine ("Claude Code · build-box"). */ function RemoteMock() { return (
); } /* Deterministic usage wander for the traces. */ const wander = (n: number, k: number) => 0.42 + 0.22 * Math.sin(n * 0.45 + k * 1.7) + 0.12 * Math.sin(n * 1.3 + k); /** * The Temperatures module: one line per die — label, its 60 s usage trace, * its temperature. The GPU climbs past the 70 ° warn line and tints amber. */ function GaugesMock() { const [n, setN] = createSignal(0); onMount(() => { const interval = setInterval(() => setN((v) => v + 1), 700); onCleanup(() => clearInterval(interval)); }); const trace = (k: number) => Array.from({ length: 30 }, (_, i) => Math.max(0.04, Math.min(0.97, wander(n() + i, k)))); const gpuCelsius = () => 62 + 12 * (0.5 + 0.5 * Math.sin(n() * 0.18)); return (
); } export default function FeatureCollage() { return (

Why the Nook

One glance. Everything your agents are doing.

{/* Hero: real collapsed pill on the island surface */}

The island

Every agent, one glance

A pill tucked into your notch — a campfire for your whole fleet on the left, live data on the right. Blue running, green ready, amber needs you.

} />

expand for the full panel ↓

{/* Approvals */}
{/* Fans */}
{/* Remote agents */}
{/* Gauges */}

Plus a mixer, capture, timers, weather, and a dozen more modules —{" "} see them all ↓

); }