// ============================================================
// BusManager — Main App
// ============================================================

function AppInner() {
  const { user, setUser, version } = useApp();
  const [page, setPage] = useState("dashboard");
  const [nav, setNav] = useState({});
  const [sidebarOpen, setSidebarOpen] = useState(false);

  const handleNav = (p, payload = {}) => {
    setPage(p);
    setNav(payload);
    setSidebarOpen(false);
  };
  const clearNav = () => setNav({});

  if (!user) {
    return <Login onLogin={setUser} />;
  }

  const titles = {
    "dashboard": "Dashboard",
    "kalender": "Kalender Armada",
    "sewa": "Manajemen Sewa",
    "kas": "Manajemen Kas",
    "master-bus": "Master Data",
    "master-sopir": "Master Data",
    "master-penyewa": "Master Data",
    "master-kategori": "Master Data",
    "laporan": "Laporan & Rekap",
    "settings": "Settings",
  };
  const crumbs = {
    "dashboard": "Ringkasan operasional hari ini",
    "kalender": "Operasional / Kalender",
    "sewa": "Operasional / Sewa",
    "kas": "Operasional / Kas",
    "master-bus": "Data / Unit Bus",
    "master-sopir": "Data / Sopir",
    "master-penyewa": "Data / Penyewa",
    "master-kategori": "Data / Kategori Kas",
    "laporan": "Insight / Laporan",
    "settings": "Insight / Settings",
  };

  // version is read so this re-renders on any data mutation
  void version;

  return (
    <div className="app" data-screen-label={`Page · ${titles[page]}`}>
      <Sidebar page={page} onNav={handleNav} user={user} onLogout={() => setUser(null)} mobileOpen={sidebarOpen} onMobileClose={() => setSidebarOpen(false)} />
      <div className="main">
        <TopBar title={titles[page]} crumb={crumbs[page]} onMenuToggle={() => setSidebarOpen(true)} />
        <div className="content">
          {page === "dashboard" && <Dashboard onNav={handleNav} />}
          {page === "kalender" && <KalenderArmada onNav={handleNav} />}
          {page === "sewa" && <ManajemenSewa initialAction={nav.action} initialDetail={nav.detail} onClearInitial={clearNav} />}
          {page === "kas" && <ManajemenKas initialAction={nav.action} onClearInitial={clearNav} />}
          {page === "master-bus" && <MasterBus />}
          {page === "master-sopir" && <MasterSopir />}
          {page === "master-penyewa" && <MasterPenyewa />}
          {page === "master-kategori" && <MasterKategori />}
          {page === "laporan" && <Laporan />}
          {page === "settings" && <Settings />}
        </div>
      </div>
    </div>
  );
}

ReactDOM.createRoot(document.getElementById("root")).render(
  <AppProvider>
    <ToastProvider>
      <AppInner />
    </ToastProvider>
  </AppProvider>
);
