/** * SessionDropdown — session switcher for the journal header (GM only) */ import { Component, createSignal, For, Show } from "solid-js"; import { sessions, setSessionId, hydrateFromServer, useJournalStream, } from "../stores/journalStream"; interface SessionDropdownProps { onCreate: () => void; } export const SessionDropdown: Component = (props) => { const stream = useJournalStream(); const manifest = sessions; const [dropdownOpen, setDropdownOpen] = createSignal(false); let dropdownRef!: HTMLDivElement; const handleSessionSelect = (id: string) => { if (id === stream.sessionId) { setDropdownOpen(false); return; } setDropdownOpen(false); setSessionId(id); hydrateFromServer(id).catch(() => {}); }; // Close dropdown on outside click if (typeof document !== "undefined") { document.addEventListener("click", (e) => { if (dropdownRef && !dropdownRef.contains(e.target as Node)) { setDropdownOpen(false); } }); } return (
e.stopPropagation()} > {([id, meta]) => ( )}
); };