"use client"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useEffect, useState } from "react"; import { createPortal } from "react-dom"; import { LuSettings2 } from "react-icons/lu"; import ControlPanel from "./serverMenu"; interface HeroProps { lastUpdated: string | null; } export default function Hero({ lastUpdated }: HeroProps) { const router = useRouter(); const [authed, setAuthed] = useState(false); const [menuOpen, setMenuOpen] = useState(false); useEffect(() => { async function checkAuth() { try { const res = await fetch("/api/auth/check"); setAuthed(res.ok); } finally { } } checkAuth(); }, [router]); return (
{menuOpen && typeof window !== "undefined" && createPortal( setMenuOpen(false)} />, document.body, )}

dell-xps-nixos-serv

Home server

{authed ? (
setMenuOpen(true)} className="align-self-end ml-auto px-[20px] py-[20px] rounded-2xl hover:bg-gray-200 cursor-pointer duration-[200ms] text-gray-600 hover:shadow-sm font-[600]" >
) : (
router.push("/auth")} className="align-self-end ml-auto px-[18px] py-[5px] rounded-xl hover:bg-blue-500 shadow-sm bg-white border-blue-300 hover:border-blue-400 border cursor-pointer duration-[200ms] text-blue-400 hover:shadow-sm hover:text-blue-100 text-[11pt] font-[600]" > Authenticate
)}

{lastUpdated ? `Last updated ${new Date(lastUpdated).toLocaleTimeString()}` : "Fetching system stats..."}

); }