import { createEffect, createSignal, type JSX, Show } from "solid-js"; import { activeView } from "../../view"; import { Activity } from "../views/Activity"; import { Operations } from "../views/Operations"; import { Triage } from "../views/Triage"; import { Rail } from "./Rail"; import { TopBar } from "./TopBar"; export function Shell(): JSX.Element { const [drawerOpen, setDrawerOpen] = createSignal(false); // Close the mobile drawer whenever the active view changes (nav tap). createEffect(() => { activeView(); setDrawerOpen(false); }); const viewDisplay = (v: string): string => (activeView() === v ? "" : "none"); return (
{/* Desktop rail (hidden <1024px) */}
{/* Mobile drawer */}
setDrawerOpen(false)} role="presentation" >
e.stopPropagation()} role="dialog" aria-modal="true" aria-label="Navigation menu" >
{/* Main pane */}
setDrawerOpen(true)} />
{/* All 3 views stay mounted; visibility toggled by activeView so view-local UI state (Logs/Browse filters) persists and Browse does not refetch on view switches. The enter animation (rmp-view-enter) restarts automatically when a view flips none→flex, firing on first paint + view-switch ONLY, never on the 3s data poll (polls never change display). */}
); }