import type { ReactNode } from "react";
import { Navigate, useParams } from "react-router";
import { homePath, isScreen, orderScreens, type Screen } from "../auth/roles";
import { useAuth } from "../auth/useAuth";
import { AdminPage } from "./admin/AdminPage";
import { ClericalHome } from "./clerical/ClericalHome";
import { PlaceholderScreen } from "./PlaceholderScreen";
import { StallHome } from "./stall/StallHome";
import { SupervisorHome } from "./supervisor/SupervisorHome";
import { WarehouseHome } from "./warehouse/WarehouseHome";
/** A page under a screen, like /clerical/projects/7. Users without the screen go to their first screen. */
export function RequireScreen({ screen, children }: { screen: Screen; children: ReactNode }) {
const { me } = useAuth();
if (!me) return null;
if (!orderScreens(me.screens).includes(screen)) return ;
return <>{children}>;
}
/** /:screen. An unknown screen, or one the user does not have, goes to the user's first screen. */
export function ScreenRoute() {
const { screen } = useParams();
const { me } = useAuth();
if (!me) return null;
const allowed = orderScreens(me.screens);
if (!isScreen(screen) || !allowed.includes(screen)) return ;
if (screen === "admin") return ;
if (screen === "clerical") return ;
if (screen === "warehouse") return ;
if (screen === "supervisor") return ;
if (screen === "stall") return ;
return ;
}