// app/session/end/page.tsx "use client"; import { useRouter, useSearchParams } from "next/navigation"; import { Suspense, useMemo, useState } from "react"; type Mode = "freeflow" | "sprint" | "deepwork"; const BG = "#E9EEF6"; const BORDER = "#C9D7F5"; const PRIMARY = "#2F6FED"; const PRIMARY_HOVER = "#295FD1"; function clampMode(v: string | null): Mode { if (v === "sprint" || v === "deepwork" || v === "freeflow") return v; return "freeflow"; } function modeLabel(mode: Mode) { if (mode === "sprint") return "스프린트"; if (mode === "deepwork") return "딥워크"; return "프리플로우"; } function hhmmss(total: number) { const s = Math.max(0, Math.floor(total)); const hh = String(Math.floor(s / 3600)).padStart(2, "0"); const mm = String(Math.floor((s % 3600) / 60)).padStart(2, "0"); const ss = String(s % 60).padStart(2, "0"); return `${hh}:${mm}:${ss}`; } export default function Page() { return ( } > ); } function SessionEndInner() { const router = useRouter(); const params = useSearchParams(); const [elapsed, setElapsed] = useState(() => { const v = Number(localStorage.getItem("hushroom:session-elapsed") ?? "0"); return Number.isFinite(v) ? v : 0; }); const [goal, setGoal] = useState(() => { const goal = localStorage.getItem("hushroom:session-goal"); return goal; }); const mode = useMemo(() => clampMode(params.get("mode")), [params]); return (
hushroom
{modeLabel(mode)}
{hhmmss(elapsed)}
{/* Goal */} {goal && (
이번 목표
{goal}
)}
세션이 종료됐어요
); }