"use client"; // Genesis (docs/DESIGN.md) Navigation: sticky แถบบน 56px + backdrop-blur + เส้นแบ่ง // ล่าง 1px — โลโก้ซ้าย / ผู้ใช้ + ออกจากระบบ ขวา ใช้ที่หน้าแรก /note และหน้า // เครื่องมือทดสอบ /note/dev — หน้ากลุ่ม /note/groups/[typeId] เลิกใช้ตาม // redesign 2026-09-24 (ไม่มี navbar เหลือ back link) // // ฉบับ token 2026-10-30: เป็น client component อ่าน session จาก localStorage // ("note-auth") เอง — มี = ชื่อผู้ใช้ + ปุ่มออกจากระบบ (ล้าง token), ไม่มี = // hint "เข้าผ่านลิงก์ e-Court" (ไม่มีปุ่ม logout — ไม่มี session ให้ล้าง) · // อ่านหลัง mount กัน hydration mismatch (server ไม่รู้ localStorage) import Link from "next/link"; import { useEffect, useState } from "react"; import LogoutButton from "./LogoutButton"; import { readNoteSession, type NoteSession } from "@/lib/note-session"; export default function AppNav() { const [session, setSession] = useState(null); useEffect(() => { setSession(readNoteSession()); }, []); return ( // appnav: hook ของกฎ coarse 44px ให้ปุ่มในแถบนี้ (globals.css — อย่าถอด)
{/* ชื่อแบรนด์เป็น ink ตามกฎ "น้ำเงินเฉพาะของ interactive" — tile JN น้ำเงินคือ แบรนด์มาร์ก (สืบต่อจากหน้าสรุป/login ดั้งเดิม) ทั้งแถบเป็นลิงก์กลับหน้าหลัก */} JN Judge's Note

{session?.username ?? "เข้าผ่านลิงก์ e-Court"}

{session !== null && setSession(null)} />}
); }