import { useState } from 'react';
import { ToastProvider } from './lib/ToastContext';
import { useSessions } from './lib/useSessions';
import Navbar from './components/Navbar';
import Hero from './components/Hero';
import DownloadConsole from './components/DownloadConsole';
import SessionsPanel from './components/SessionsPanel';
import SettingsPanel from './components/SettingsPanel';

function Shell() {
  const [settingsOpen, setSettingsOpen] = useState(false);
  const { sessions, connection, addLaunched, cancel, dismiss } = useSessions();

  return (
    <div className="min-h-screen bg-paper text-ink">
      <Navbar
        connection={connection}
        address={typeof window !== 'undefined' ? window.location.host : ''}
        onOpenSettings={() => setSettingsOpen(true)}
      />
      <main>
        <Hero />
        <DownloadConsole onLaunched={addLaunched} />
        <SessionsPanel sessions={sessions} onCancel={cancel} onDismiss={dismiss} />
      </main>
      <footer className="border-t border-line/70 px-6 py-8 text-center text-xs text-ink-faint">
        vdl runs entirely on your machine — nothing you download ever leaves it.
      </footer>
      <SettingsPanel open={settingsOpen} onClose={() => setSettingsOpen(false)} />
    </div>
  );
}

export default function App() {
  return (
    <ToastProvider>
      <Shell />
    </ToastProvider>
  );
}