import { LogIn } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import type { AccountInfo } from "../lib/contracts"; export function Account({ account }: { account: AccountInfo | null }) { const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { if (!open) { return; } const close = (event: PointerEvent) => { if (event.target instanceof Node && !ref.current?.contains(event.target)) { setOpen(false); } }; const escape = (event: KeyboardEvent) => { if (event.key === "Escape") { setOpen(false); } }; document.addEventListener("pointerdown", close); document.addEventListener("keydown", escape); return () => { document.removeEventListener("pointerdown", close); document.removeEventListener("keydown", escape); }; }, [open]); if (!account?.enabled) { return null; } if (!account.loggedIn) { return account.auth && account.loginUrl ? ( Iniciar sesión ) : null; } const unlimited = account.tier === "pro" || account.tier === "org"; const remaining = account.remainingSec == null || unlimited ? "Sin límite" : `${String(Math.floor(account.remainingSec / 60))}:${String(Math.round(account.remainingSec) % 60).padStart(2, "0")} restantes hoy`; return (
{open && (
{account.username}
{remaining}
{!unlimited && ( Pasar a PRO )} {account.logoutUrl && ( Cerrar sesión )}
)}
); }