"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { useAuth } from "../auth-context"; import { API_URL } from "../config"; export default function SumPage() { const [a, setA] = useState(""); const [b, setB] = useState(""); const [result, setResult] = useState(null); const [showResult, setShowResult] = useState(false); const { user, isLoading, logout } = useAuth(); const router = useRouter(); useEffect(() => { if (!isLoading && !user) { router.push("/login"); } }, [isLoading, user, router]); const handleSum = async () => { const numA = parseFloat(a) || 0; const numB = parseFloat(b) || 0; try { const res = await fetch(`${API_URL}/api/sum`, { method: "POST", headers: { "Content-Type": "application/json" }, credentials: "include", body: JSON.stringify({ a: numA, b: numB }), }); const data = await res.json(); setResult(data.result); setShowResult(true); } catch { // Fallback to local calculation if API fails setResult(numA + numB); setShowResult(true); } }; const handleReset = () => { setA(""); setB(""); setResult(null); setShowResult(false); }; const handleLogout = async () => { await logout(); router.push("/login"); }; if (isLoading) { return (
Loading...
); } if (!user) { return null; } return (
Counter Sum Audit
{user.email}
Sum Calculator {!showResult ? (
setA(e.target.value)} placeholder="0" style={styles.input} aria-label="First number" />
+
setB(e.target.value)} placeholder="0" style={styles.input} aria-label="Second number" />
) : (
{parseFloat(a) || 0} + {parseFloat(b) || 0} =

{result}

)}
); } const styles: Record = { main: { minHeight: "100vh", background: "linear-gradient(135deg, #0f0f23 0%, #1a1a3e 50%, #2d1b4e 100%)", display: "flex", flexDirection: "column", }, loader: { flex: 1, display: "flex", alignItems: "center", justifyContent: "center", fontFamily: "'DM Sans', system-ui, sans-serif", color: "rgba(255, 255, 255, 0.5)", fontSize: "1.125rem", }, header: { padding: "1.5rem 2rem", borderBottom: "1px solid rgba(255, 255, 255, 0.06)", display: "flex", justifyContent: "space-between", alignItems: "center", }, nav: { display: "flex", alignItems: "center", gap: "0.75rem", }, navLink: { fontFamily: "'DM Sans', system-ui, sans-serif", color: "rgba(255, 255, 255, 0.5)", fontSize: "0.875rem", textDecoration: "none", transition: "color 0.2s", }, navDivider: { color: "rgba(255, 255, 255, 0.2)", fontSize: "0.75rem", }, navCurrent: { fontFamily: "'DM Sans', system-ui, sans-serif", color: "#a78bfa", fontSize: "0.875rem", fontWeight: 600, }, userInfo: { display: "flex", alignItems: "center", gap: "1rem", }, userEmail: { fontFamily: "'DM Sans', system-ui, sans-serif", color: "rgba(255, 255, 255, 0.6)", fontSize: "0.875rem", }, logoutBtn: { fontFamily: "'DM Sans', system-ui, sans-serif", padding: "0.5rem 1rem", fontSize: "0.875rem", fontWeight: 500, background: "rgba(255, 255, 255, 0.05)", color: "rgba(255, 255, 255, 0.7)", border: "1px solid rgba(255, 255, 255, 0.1)", borderRadius: "8px", cursor: "pointer", transition: "all 0.2s", }, content: { flex: 1, display: "flex", alignItems: "center", justifyContent: "center", padding: "2rem", }, card: { background: "rgba(255, 255, 255, 0.03)", backdropFilter: "blur(10px)", border: "1px solid rgba(255, 255, 255, 0.08)", borderRadius: "32px", padding: "3rem 4rem", textAlign: "center", boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.5)", minWidth: "400px", }, label: { fontFamily: "'DM Sans', system-ui, sans-serif", display: "block", color: "rgba(255, 255, 255, 0.4)", fontSize: "0.875rem", textTransform: "uppercase", letterSpacing: "0.1em", marginBottom: "2rem", }, inputSection: { display: "flex", flexDirection: "column", alignItems: "center", gap: "2rem", }, inputRow: { display: "flex", alignItems: "center", gap: "1rem", }, inputWrapper: { position: "relative", }, input: { fontFamily: "'Instrument Serif', Georgia, serif", fontSize: "3rem", fontWeight: 400, width: "120px", padding: "0.75rem 1rem", textAlign: "center", background: "rgba(255, 255, 255, 0.05)", border: "2px solid rgba(255, 255, 255, 0.1)", borderRadius: "16px", color: "#fff", outline: "none", transition: "border-color 0.2s, box-shadow 0.2s", }, operator: { fontFamily: "'Instrument Serif', Georgia, serif", fontSize: "3rem", color: "#a78bfa", fontWeight: 400, }, sumBtn: { fontFamily: "'DM Sans', system-ui, sans-serif", padding: "1rem 2.5rem", fontSize: "1.125rem", fontWeight: 600, background: "linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)", color: "#fff", border: "none", borderRadius: "16px", cursor: "pointer", display: "inline-flex", alignItems: "center", gap: "0.5rem", transition: "transform 0.2s, box-shadow 0.2s", boxShadow: "0 4px 14px rgba(99, 102, 241, 0.4)", }, equalsIcon: { fontSize: "1.5rem", fontWeight: 400, }, resultSection: { display: "flex", flexDirection: "column", alignItems: "center", }, equation: { display: "flex", alignItems: "center", gap: "0.5rem", marginBottom: "0.5rem", }, equationNum: { fontFamily: "'DM Sans', system-ui, sans-serif", fontSize: "1.25rem", color: "rgba(255, 255, 255, 0.6)", }, equationOp: { fontFamily: "'DM Sans', system-ui, sans-serif", fontSize: "1.25rem", color: "rgba(139, 92, 246, 0.8)", }, result: { fontFamily: "'Instrument Serif', Georgia, serif", fontSize: "7rem", fontWeight: 400, color: "#fff", margin: 0, lineHeight: 1, background: "linear-gradient(135deg, #fff 0%, #a78bfa 100%)", WebkitBackgroundClip: "text", WebkitTextFillColor: "transparent", backgroundClip: "text", }, resetBtn: { fontFamily: "'DM Sans', system-ui, sans-serif", marginTop: "2rem", padding: "0.875rem 2rem", fontSize: "1rem", fontWeight: 500, background: "rgba(255, 255, 255, 0.05)", color: "rgba(255, 255, 255, 0.7)", border: "1px solid rgba(255, 255, 255, 0.1)", borderRadius: "12px", cursor: "pointer", display: "inline-flex", alignItems: "center", gap: "0.5rem", transition: "all 0.2s", }, resetIcon: { fontSize: "1.25rem", }, };