/* PrimaDelta — app root + router. */
function App() {
  const { route, authed, nav } = window.useStore();
  const v = route.view;

  const PUBLIC = ["home", "services", "portfolio", "estate", "contact"];
  const ADMIN = ["dashboard", "assets", "maintenance", "vault", "inbox"];

  // guard admin routes
  React.useEffect(() => {
    if (ADMIN.includes(v) && !authed) nav("login");
  }, [v, authed]);

  if (v === "login") return <window.Login />;

  if (ADMIN.includes(v)) {
    if (!authed) return <window.Login />;
    const pages = {
      dashboard: window.Dashboard, assets: window.AssetRegister,
      maintenance: window.Maintenance, vault: window.DocumentVault, inbox: window.Inbox
    };
    const Page = pages[v] || window.Dashboard;
    return (
      <window.AdminShell>
        <Page />
      </window.AdminShell>
    );
  }

  // public
  const dark = v === "home";
  const pages = {
    home: window.Home, services: window.Services,
    portfolio: window.Portfolio, estate: window.EstateDetail, contact: window.Contact
  };
  const Page = pages[v] || window.Home;
  return (
    <div key={v} className="fade-in">
      <window.PubNav dark={dark} />
      <main><Page /></main>
      <window.PubFooter />
    </div>
  );
}

function Root() {
  return (
    <window.StoreProvider>
      <App />
      <window.Toasts />
    </window.StoreProvider>
  );
}

ReactDOM.createRoot(document.getElementById("root")).render(<Root />);
