diff --git a/src/app/dashboard/layout.tsx b/src/app/dashboard/layout.tsx index bf541d6..dacf9b7 100644 --- a/src/app/dashboard/layout.tsx +++ b/src/app/dashboard/layout.tsx @@ -95,9 +95,10 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { - } label="Overview" active={pathname === "/dashboard"} /> - } label="Leaderboard" active={pathname.startsWith("/dashboard/leaderboard")} /> + } label="Overview" active={pathname === "/dashboard"} /> + } label="Leaderboard" active={pathname.startsWith("/dashboard/leaderboard")} /> } label="Syllabus Tracker" @@ -105,6 +106,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("chapter-wise-progress-tracking")} /> } label="Mock Tests (CBT)" @@ -112,6 +114,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("weekly-test-series")} /> } label="Quick Notes" @@ -119,6 +122,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("detailed-performance-analytics")} /> } label="Performance Analytics" @@ -126,6 +130,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("detailed-performance-analytics")} /> } label="Doubt Forum" @@ -146,6 +151,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { } label="AI Tutor" @@ -153,6 +159,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("ai-tutor-chat")} /> } label="PrepPilot AI" @@ -160,6 +167,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("ai-tutor-chat")} /> } label="Exam Readiness" @@ -167,6 +175,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("detailed-performance-analytics")} /> } label="College Predictor" @@ -174,6 +183,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("college-predictor")} /> } label="Exam Strategy" @@ -181,6 +191,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("exam-day-strategy")} /> } label="AI Study Plan" @@ -188,6 +199,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("personalized-study-plan")} /> } label="Time Optimization" @@ -195,6 +207,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("personalized-study-plan")} /> } label="Mistake Heatmap" @@ -202,6 +215,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("ai-mistake-tracking")} /> } label="Weekly Progress" @@ -209,6 +223,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { isLocked={!hasAccessTo("detailed-performance-analytics")} /> } label="Mistake Analyzer" @@ -332,28 +347,49 @@ export default function DashboardLayout({ children }: { children: ReactNode }) { ) } -function NavItem({ href, icon, label, active, isLocked }: { href: string, icon: React.ReactNode, label: string, active?: boolean, isLocked?: boolean }) { +function NavItem({ href, icon, label, active, isLocked, section }: { href: string, icon: React.ReactNode, label: string, active?: boolean, isLocked?: boolean, section?: "pro" | "ai" }) { + // Section-aware active color tokens (light mode only, dark mode falls back to cyan) + const activeClasses = active + ? section === "pro" + ? "bg-yellow-50 light:bg-yellow-50 text-yellow-700 dark:bg-[#00F0FF]/10 dark:text-[#00F0FF] font-semibold border border-yellow-300/60 dark:border-[#00F0FF]/20 shadow-[0_0_12px_-4px_rgba(234,179,8,0.2)] dark:shadow-[0_0_12px_-4px_rgba(0,240,255,0.3)]" + : section === "ai" + ? "bg-cyan-50 dark:bg-[#00F0FF]/10 text-cyan-800 dark:text-[#00F0FF] font-semibold border border-cyan-300/60 dark:border-[#00F0FF]/20 shadow-[0_0_12px_-4px_rgba(6,182,212,0.2)] dark:shadow-[0_0_12px_-4px_rgba(0,240,255,0.3)]" + : "bg-[#00F0FF]/10 text-[#00F0FF] font-semibold border border-[#00F0FF]/20 shadow-[0_0_12px_-4px_rgba(0,240,255,0.3)]" + : isLocked + ? "text-muted-foreground/40 cursor-not-allowed border border-transparent" + : "text-muted-foreground/80 hover:bg-secondary/60 hover:text-foreground border border-transparent hover:border-border/40" + + const iconActiveClass = active + ? section === "pro" + ? "text-yellow-600 dark:text-[#00F0FF]" + : section === "ai" + ? "text-cyan-700 dark:text-[#00F0FF]" + : "text-[#00F0FF]" + : isLocked + ? "text-muted-foreground/30" + : "text-muted-foreground/60 group-hover:text-foreground/80" + + const activeBarClass = active + ? section === "pro" + ? "w-1 h-4 rounded-full bg-yellow-500 dark:bg-[#00F0FF] shrink-0 shadow-[0_0_6px_rgba(234,179,8,0.6)] dark:shadow-[0_0_6px_rgba(0,240,255,0.8)]" + : section === "ai" + ? "w-1 h-4 rounded-full bg-cyan-600 dark:bg-[#00F0FF] shrink-0 shadow-[0_0_6px_rgba(6,182,212,0.6)] dark:shadow-[0_0_6px_rgba(0,240,255,0.8)]" + : "w-1 h-4 rounded-full bg-[#00F0FF] shrink-0 shadow-[0_0_6px_rgba(0,240,255,0.8)]" + : "" + return (
- + {icon} {label}
{isLocked && } - {active && } + {active && } ) }