/* ======================================== TopNav Component — padhle (Refined Workspace) ======================================== */ import { useState, useRef, useEffect } from "react"; import "./TopNav.css"; const TopNav = ({ subjectItems, chapterData, activeGrade, onGradeChange, activeSubject, onSubjectChange, activeChapter, onChapterChange, user, onSignOut }) => { const [openDropdown, setOpenDropdown] = useState(null); const gradeRef = useRef(null); const subjectRef = useRef(null); const chapterRef = useRef(null); // Close dropdown when clicking outside useEffect(() => { const handleClickOutside = (e) => { const refs = [gradeRef, subjectRef, chapterRef]; const isInside = refs.some((ref) => ref.current && ref.current.contains(e.target)); if (!isInside) { setOpenDropdown(null); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); const toggleDropdown = (name) => { setOpenDropdown((prev) => (prev === name ? null : name)); }; const selectOption = (name, value) => { setOpenDropdown(null); switch (name) { case "grade": onGradeChange(value); break; case "subject": onSubjectChange(value); break; case "chapter": onChapterChange(value); break; } }; const grades = [ { id: "choose-standard", label: "Choose standard" }, { id: "Grade 6", label: "Grade 6" }, { id: "Grade 7", label: "Grade 7" }, { id: "Grade 8", label: "Grade 8" }, { id: "Grade 9", label: "Grade 9" }, { id: "Grade 10", label: "Grade 10" }, { id: "Grade 11", label: "Grade 11" }, { id: "Grade 12", label: "Grade 12" }, ]; // Chapters are now generated dynamically from chapterData (see chapterOptions above) // Subjects now come from subjectItems prop // Static list removed — was not subject-aware. const subjectIcons = { math: "calculate", science: "science", history: "account_balance", language: "menu_book", english: "edit", geography: "public", }; /* ─── Resolve subject display (ID → label) ─── */ const resolvedSubjectLabel = activeSubject === "choose-subject" ? "Choose Subject" : subjectItems?.find((s) => s.id === activeSubject)?.label || activeSubject || "Choose Subject"; /* ─── Resolve chapter pill label ─── */ const resolvedChapterLabel = activeChapter === "choose-chapter" || !activeChapter ? "Choose Chapter" : activeChapter; /* ─── Subject-aware chapter options (from chapterData prop) ─── */ const chapterOptions = (() => { const chapters = chapterData?.[activeSubject] || []; return [ { id: "choose-chapter", label: "Choose Chapter" }, ...chapters, ]; })(); return (
{/* Grade Selector */}
{openDropdown === "grade" && (
    {grades.map((grade) => (
  • ))}
)}
{/* Subject Selector */}
{openDropdown === "subject" && (
    {subjectItems?.map((subject) => (
  • ))}
)}
{/* Chapter Selector */}
{openDropdown === "chapter" && (
    {chapterOptions.map((chapter) => (
  • ))}
)}
{/* Search */} {/* Notifications */} {/* User Avatar — Sign out on click */}
); }; export default TopNav;