- {agent.name}
+ {agent.name}
-
+
{agent.status}
@@ -74,7 +74,7 @@ export default function AgentsPage() {
diff --git a/src/app/admin/layout.tsx b/src/app/admin/layout.tsx
index da2b558..f17498d 100644
--- a/src/app/admin/layout.tsx
+++ b/src/app/admin/layout.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { ReactNode } from "react"
import { LayoutDashboard, Users, Database, Terminal, Settings, FileText, Tag } from "lucide-react"
@@ -11,12 +11,12 @@ export default function AdminLayout({ children }: { children: ReactNode }) {
const pathname = usePathname()
return (
-
+
-
+
Refresh Data
@@ -51,14 +51,14 @@ export default function AdminDashboard() {
+2,401 this week
-
+
AI Agent Accuracy
-
+
- 96.4%
- Based on 1.2M interactions
+ 96.4%
+ Based on 1.2M interactions
@@ -84,8 +84,8 @@ export default function AdminDashboard() {
-
-
+
+
@@ -93,9 +93,9 @@ export default function AdminDashboard() {
`${value}M`} />
-
+
@@ -157,7 +157,7 @@ export default function AdminDashboard() {
Recent Question Uploads
- Add Question
+ Add Question
@@ -178,7 +178,7 @@ export default function AdminDashboard() {
Thermodynamics
An ideal gas undergoes an isothermal expansion...
- Edit
+ Edit
@@ -187,7 +187,7 @@ export default function AdminDashboard() {
Calculus
Evaluate the integral of e^x sin(x) dx...
- Edit
+ Edit
diff --git a/src/app/admin/questions/page.tsx b/src/app/admin/questions/page.tsx
index 9e3308f..21ac204 100644
--- a/src/app/admin/questions/page.tsx
+++ b/src/app/admin/questions/page.tsx
@@ -1,4 +1,4 @@
-import { Button } from "@/components/ui/button"
+import { Button } from "@/components/ui/button"
import { Badge } from "@/components/ui/badge"
import { Search, Plus, Filter, MoreHorizontal, Edit, Trash } from "lucide-react"
@@ -20,7 +20,7 @@ export default function QuestionsPage() {
Filter
-
Add Question
+
Add Question
@@ -31,7 +31,7 @@ export default function QuestionsPage() {
@@ -70,7 +70,7 @@ export default function QuestionsPage() {
@@ -79,7 +79,7 @@ export default function QuestionsPage() {
-
+
diff --git a/src/app/admin/settings/page.tsx b/src/app/admin/settings/page.tsx
index d1e6f99..c8913eb 100644
--- a/src/app/admin/settings/page.tsx
+++ b/src/app/admin/settings/page.tsx
@@ -1,4 +1,4 @@
-"use client";
+"use client";
import { useState, useEffect } from "react";
import { Button } from "@/components/ui/button"
@@ -72,13 +72,13 @@ export default function SettingsPage() {
Primary Model Name
-
+
OpenAI API Key (Fallback)
-
+
- alert("Configuration Saved via Admin Panel")} className="bg-[#00F0FF] text-background hover:bg-[#00F0FF]/90 font-bold">Save Configuration
+ alert("Configuration Saved via Admin Panel")} className="bg-[var(--cyan-ai)] text-background hover:bg-[var(--cyan-ai-80)] font-bold">Save Configuration
@@ -106,7 +106,7 @@ export default function SettingsPage() {
type="number"
value={settings.trial_duration_days}
onChange={(e) => setSettings(prev => ({ ...prev, trial_duration_days: parseInt(e.target.value) || 0 }))}
- className="w-full bg-background border border-border rounded-lg px-4 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-[#00F0FF]"
+ className="w-full bg-background border border-border rounded-lg px-4 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-[var(--cyan-ai)]"
/>
@@ -114,13 +114,13 @@ export default function SettingsPage() {
setSettings(prev => ({ ...prev, trial_tier: e.target.value }))}
- className="w-full bg-background border border-border rounded-lg px-4 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-[#00F0FF]">
+ className="w-full bg-background border border-border rounded-lg px-4 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-[var(--cyan-ai)]">
Pro Tier
AI Coach (All Features)
- saveSettings("Trial Settings")} className="bg-[#00F0FF] text-background hover:bg-[#00F0FF]/90 font-bold">Update Trial Settings
+ saveSettings("Trial Settings")} className="bg-[var(--cyan-ai)] text-background hover:bg-[var(--cyan-ai-80)] font-bold">Update Trial Settings
diff --git a/src/app/admin/students/[studentId]/page.tsx b/src/app/admin/students/[studentId]/page.tsx
index 478d1d4..d9c2329 100644
--- a/src/app/admin/students/[studentId]/page.tsx
+++ b/src/app/admin/students/[studentId]/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { useEffect, useState } from "react"
import { useParams, useRouter } from "next/navigation"
@@ -12,7 +12,7 @@ import {
} from "lucide-react"
const TIER_STYLE: Record = {
- "Al_Coach": "bg-[#00F0FF]/10 text-[#00F0FF] border-[#00F0FF]/20",
+ "Al_Coach": "bg-[var(--cyan-ai-10)] text-[var(--cyan-ai)] border-[var(--cyan-ai-20)]",
"Pro": "bg-yellow-500/10 text-yellow-500 border-yellow-500/20",
"Free": "bg-secondary text-foreground border-border",
}
@@ -114,7 +114,7 @@ export default function StudentKundliPage() {
setEditing(false)} className="gap-2">
Cancel
-
+
{saving ? : }
Save Changes
@@ -131,7 +131,7 @@ export default function StudentKundliPage() {
{data.profile_image_url ? (
) : (
-
+
{data.name.charAt(0)}
)}
@@ -203,7 +203,7 @@ export default function StudentKundliPage() {
{/* Stats Grid */}
{[
- { label: "Tests Attempted", value: data.stats.total_tests, color: "text-[#00F0FF]", icon:
},
+ { label: "Tests Attempted", value: data.stats.total_tests, color: "text-[var(--cyan-ai)]", icon: },
{ label: "Avg Accuracy", value: data.stats.avg_accuracy ? `${data.stats.avg_accuracy}%` : "—", color: "text-green-500", icon: },
{ label: "AI Sessions", value: data.stats.mastered_mistakes, color: "text-purple-400", icon: },
{
@@ -240,7 +240,7 @@ export default function StudentKundliPage() {
- Recent Activity
+ Recent Activity
@@ -255,7 +255,7 @@ export default function StudentKundliPage() {
{formatDate(a.submitted_at)}
-
{a.score}/{a.total_questions}
+
{a.score}/{a.total_questions}
{a.accuracy.toFixed(1)}% acc
@@ -293,7 +293,7 @@ export default function StudentKundliPage() {
- Subscription History
+ Subscription History
diff --git a/src/app/admin/students/page.tsx b/src/app/admin/students/page.tsx
index 9642a5e..28c73e9 100644
--- a/src/app/admin/students/page.tsx
+++ b/src/app/admin/students/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { useEffect, useState } from "react"
import { Badge } from "@/components/ui/badge"
@@ -7,7 +7,7 @@ import { Search, Download, Flame, RefreshCw } from "lucide-react"
import { useRouter } from "next/navigation"
const TIER_STYLE: Record = {
- "Al_Coach": "bg-[#00F0FF]/10 text-[#00F0FF] border-[#00F0FF]/20 font-bold",
+ "Al_Coach": "bg-[var(--cyan-ai-10)] text-[var(--cyan-ai)] border-[var(--cyan-ai-20)] font-bold",
"Pro": "bg-yellow-500/10 text-yellow-500 border-yellow-500/20 font-bold",
"Free": "bg-secondary text-foreground border-border",
}
diff --git a/src/app/cancellation-policy/page.tsx b/src/app/cancellation-policy/page.tsx
index f2b37a9..b3972ac 100644
--- a/src/app/cancellation-policy/page.tsx
+++ b/src/app/cancellation-policy/page.tsx
@@ -1,4 +1,4 @@
-import Link from 'next/link';
+import Link from 'next/link';
export default function CancellationPolicyPage() {
return (
@@ -31,7 +31,7 @@ export default function CancellationPolicyPage() {
Your subscription will not auto-renew at the end of the current billing period
You will continue to have full access to your paid features until the end of the current billing period
- No refund will be issued for the remaining days of the current billing period, except as provided in our Refund Policy
+ No refund will be issued for the remaining days of the current billing period, except as provided in our Refund Policy
2.3 Timing
@@ -44,14 +44,14 @@ export default function CancellationPolicyPage() {
4. Cancellation by PragatiVeer
We reserve the right to cancel or suspend your subscription immediately if:
In such cases, fees paid are non-refundable.
5. Account Deletion
-Cancelling your subscription does not delete your account. To delete your account and all associated data, please follow the process outlined in our Privacy Policy .
+Cancelling your subscription does not delete your account. To delete your account and all associated data, please follow the process outlined in our Privacy Policy .
6. Contact
For any questions regarding this Cancellation Policy, contact us at contact@pragativeer.com or reach out to our Grievance Officer:
diff --git a/src/app/cbt/[examId]/page.tsx b/src/app/cbt/[examId]/page.tsx
index f8da424..f17be0f 100644
--- a/src/app/cbt/[examId]/page.tsx
+++ b/src/app/cbt/[examId]/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { useEffect, useState, use, useRef } from "react"
import { Button } from "@/components/ui/button"
@@ -422,9 +422,9 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri
- setShowCalc(true)} className="gap-2 text-xs font-semibold text-muted-foreground hover:bg-[#00F0FF] hover:text-black transition-colors"> Calculator
- setShowPeriodicTable(true)} className="gap-2 text-xs font-semibold text-muted-foreground hover:bg-[#00F0FF] hover:text-black transition-colors"> Periodic Table
- setShowScratchpad(true)} className="gap-2 text-xs font-semibold text-muted-foreground hover:bg-[#00F0FF] hover:text-black transition-colors"> Scratchpad
+ setShowCalc(true)} className="gap-2 text-xs font-semibold text-muted-foreground hover:bg-[var(--cyan-ai)] hover:text-black transition-colors"> Calculator
+ setShowPeriodicTable(true)} className="gap-2 text-xs font-semibold text-muted-foreground hover:bg-[var(--cyan-ai)] hover:text-black transition-colors"> Periodic Table
+ setShowScratchpad(true)} className="gap-2 text-xs font-semibold text-muted-foreground hover:bg-[var(--cyan-ai)] hover:text-black transition-colors"> Scratchpad
diff --git a/src/app/checkout/page.tsx b/src/app/checkout/page.tsx
index 42c529b..9021f1f 100644
--- a/src/app/checkout/page.tsx
+++ b/src/app/checkout/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { useEffect, useState } from "react"
import { useRouter, useSearchParams } from "next/navigation"
@@ -18,7 +18,7 @@ import { Suspense } from "react"
export default function CheckoutPage() {
return (
-
}>
+
}>
)
@@ -137,7 +137,7 @@ function CheckoutContent() {
address: address
},
theme: {
- color: "#00F0FF"
+ color: "var(--cyan-ai)"
}
}
@@ -171,7 +171,7 @@ function CheckoutContent() {
if (userLoading || !userId) {
return (
-
+
)
}
@@ -179,12 +179,12 @@ function CheckoutContent() {
if (success) {
return (
-
-
+
+
Payment Successful!
Your account has been upgraded to the {tier} tier.
-
+
Redirecting to dashboard...
@@ -217,7 +217,7 @@ function CheckoutContent() {
onChange={(e) => setPhone(e.target.value.replace(/[^0-9]/g, ''))}
maxLength={10}
placeholder="9876543210"
- className="w-full bg-background border border-border rounded-xl px-4 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-[#00F0FF] focus:border-transparent transition-all"
+ className="w-full bg-background border border-border rounded-xl px-4 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan-ai)] focus:border-transparent transition-all"
/>
@@ -227,7 +227,7 @@ function CheckoutContent() {
onChange={(e) => setAddress(e.target.value)}
placeholder="Complete address (House No, Street, City, State, PIN)"
rows={3}
- className="w-full bg-background border border-border rounded-xl px-4 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-[#00F0FF] focus:border-transparent transition-all resize-none"
+ className="w-full bg-background border border-border rounded-xl px-4 py-3 text-sm focus:outline-none focus:ring-2 focus:ring-[var(--cyan-ai)] focus:border-transparent transition-all resize-none"
/>
@@ -239,7 +239,7 @@ function CheckoutContent() {
Summary
-
+
Order Summary
@@ -255,7 +255,7 @@ function CheckoutContent() {
Total Amount
- ₹{amount.toLocaleString()}
+ ₹{amount.toLocaleString()}
{error && (
@@ -266,7 +266,7 @@ function CheckoutContent() {
diff --git a/src/app/dashboard/ai-coach/cbt-dpp/[id]/page.tsx b/src/app/dashboard/ai-coach/cbt-dpp/[id]/page.tsx
index f67ae28..262c42f 100644
--- a/src/app/dashboard/ai-coach/cbt-dpp/[id]/page.tsx
+++ b/src/app/dashboard/ai-coach/cbt-dpp/[id]/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { useState, useEffect } from "react"
import { Card, CardContent } from "@/components/ui/card"
@@ -114,7 +114,7 @@ export default function AIComCBTDPPPage() {
-
+
PrepPilot AI
• {user?.target_exam?.replace("_", " ") || "JEE/NEET"}
@@ -124,14 +124,14 @@ export default function AIComCBTDPPPage() {
-
-
+
+
{formatTime(timeLeft)}
{!submitted ? (
setSubmitted(true)}
- className="bg-[#00F0FF] text-black hover:bg-[#00F0FF]/90 font-bold px-6 rounded-xl shadow-[0_0_15px_rgba(0,240,255,0.2)]"
+ className="bg-[var(--cyan-ai)] text-black hover:bg-[var(--cyan-ai-80)] font-bold px-6 rounded-xl shadow-[0_0_15px_rgba(12,96,96,0.2)]"
>
Submit Test
@@ -171,7 +171,7 @@ export default function AIComCBTDPPPage() {
-
+
Question {activeQuestion + 1} of {sampleQuestions.length}
@@ -192,7 +192,7 @@ export default function AIComCBTDPPPage() {
let btnStyle = "border-border bg-secondary/20 hover:border-primary/50 text-foreground"
if (isSelected) {
- btnStyle = "border-[#00F0FF] bg-[#00F0FF]/15 text-[#00F0FF] font-bold shadow-[0_0_12px_rgba(0,240,255,0.15)]"
+ btnStyle = "border-[var(--cyan-ai)] bg-[var(--cyan-ai)]/15 text-[var(--cyan-ai)] font-bold shadow-[0_0_12px_rgba(12,96,96,0.15)]"
}
if (submitted) {
if (isCorrect) btnStyle = "border-emerald-500 bg-emerald-500/20 text-emerald-400 font-bold"
@@ -216,7 +216,7 @@ export default function AIComCBTDPPPage() {
{submitted && (
-
+
AI Solution & Explanation:
{sampleQuestions[activeQuestion].explanation}
@@ -236,7 +236,7 @@ export default function AIComCBTDPPPage() {
setActiveQuestion(prev => Math.min(sampleQuestions.length - 1, prev + 1))}
- className="bg-[#00F0FF] text-black hover:bg-[#00F0FF]/90 font-bold rounded-xl"
+ className="bg-[var(--cyan-ai)] text-black hover:bg-[var(--cyan-ai-80)] font-bold rounded-xl"
>
Next Question
@@ -258,9 +258,9 @@ export default function AIComCBTDPPPage() {
onClick={() => setActiveQuestion(idx)}
className={`h-10 rounded-xl text-xs font-extrabold transition-all border ${
isCurr
- ? "border-[#00F0FF] bg-[#00F0FF] text-black ring-2 ring-[#00F0FF]/50"
+ ? "border-[var(--cyan-ai)] bg-[var(--cyan-ai)] text-black ring-2 ring-[var(--cyan-ai-10)]"
: isAns
- ? "bg-[#00F0FF]/20 border-[#00F0FF]/40 text-[#00F0FF]"
+ ? "bg-[var(--cyan-ai-20)] border-[var(--cyan-ai-40)] text-[var(--cyan-ai)]"
: "bg-secondary/40 border-border text-muted-foreground hover:border-primary"
}`}
>
@@ -272,10 +272,10 @@ export default function AIComCBTDPPPage() {
- Current Question
+ Current Question
- Answered
+ Answered
Unattempted
diff --git a/src/app/dashboard/ai-coach/cbt-dpp/page.tsx b/src/app/dashboard/ai-coach/cbt-dpp/page.tsx
index 6d56dea..0ebf92e 100644
--- a/src/app/dashboard/ai-coach/cbt-dpp/page.tsx
+++ b/src/app/dashboard/ai-coach/cbt-dpp/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { Button } from "@/components/ui/button"
import { Card, CardContent } from "@/components/ui/card"
@@ -98,8 +98,8 @@ export default function AIDailyPracticePage() {
-
-
+
+
AI Daily Practice (DPP)
@@ -108,7 +108,7 @@ export default function AIDailyPracticePage() {
-
+
AI Powered
@@ -121,7 +121,7 @@ export default function AIDailyPracticePage() {
type="date"
value={dateFilter}
onChange={(e) => setDateFilter(e.target.value)}
- className="px-3 py-1.5 bg-background border border-border rounded-lg text-xs font-bold focus:ring-2 focus:ring-[#00F0FF] outline-none text-muted-foreground mr-2"
+ className="px-3 py-1.5 bg-background border border-border rounded-lg text-xs font-bold focus:ring-2 focus:ring-[var(--cyan-ai)] outline-none text-muted-foreground mr-2"
/>
Difficulty:
{['Mixed', 'Easy', 'Medium', 'Hard'].map((diff) => (
@@ -158,15 +158,15 @@ export default function AIDailyPracticePage() {
const isExpired = endTime ? now > endTime : false;
return (
-
+
- {isAttempted ?
:
}
+ {isAttempted ?
:
}
-
+
{user?.target_exam?.replace("_", " ") || "JEE/NEET"}
•
@@ -183,7 +183,7 @@ export default function AIDailyPracticePage() {
>
) : null}
-
+
{cleanTitle(dpp.title)}
@@ -213,7 +213,7 @@ export default function AIDailyPracticePage() {
{!isExpired && (
-
+
Retake Test
@@ -221,7 +221,7 @@ export default function AIDailyPracticePage() {
>
) : (
-
+
Launch Practice Test
@@ -326,7 +326,7 @@ export default function AIDailyPracticePage() {
Close Reader
-
+
Upgrade to AI Coach
diff --git a/src/app/dashboard/ai-coach/college-predictor/page.tsx b/src/app/dashboard/ai-coach/college-predictor/page.tsx
index 5a6a578..fadc1b9 100644
--- a/src/app/dashboard/ai-coach/college-predictor/page.tsx
+++ b/src/app/dashboard/ai-coach/college-predictor/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { CollegePredictorCard } from "@/components/AI/CollegePredictorCard"
import { Card, CardContent } from "@/components/ui/card"
@@ -27,8 +27,8 @@ export default function CollegePredictorPage() {
-
-
+
+
AI College & Cutoff Predictor
@@ -36,7 +36,7 @@ export default function CollegePredictorPage() {
Discover your probable target medical & engineering colleges based on current mock exam scores and historical cutoffs.
-
+
AI Powered
@@ -45,7 +45,7 @@ export default function CollegePredictorPage() {
{/* Summary KPI Strip */}
{[
- { label: "Predicted Rank", value: isDemo ? "~4,200" : "--", icon:
, color: "border-[#00F0FF]/20 bg-[#00F0FF]/5" },
+ { label: "Predicted Rank", value: isDemo ? "~4,200" : "--", icon:
, color: "border-[var(--cyan-ai-20)] bg-[var(--cyan-ai-10)]" },
{ label: "Target Colleges", value: isDemo ? "12" : "0", icon:
, color: "border-amber-400/20 bg-amber-400/5" },
{ label: "Reach Colleges", value: isDemo ? "5" : "0", icon:
, color: "border-purple-400/20 bg-purple-400/5" },
{ label: "Safe Colleges", value: isDemo ? "18" : "0", icon:
, color: "border-green-400/20 bg-green-400/5" },
@@ -68,7 +68,7 @@ export default function CollegePredictorPage() {
{/* Cutoff Trend Chart */}
-
+
NIT Trichy CSE — Closing Rank Trend
Improving Cutoffs
@@ -79,7 +79,7 @@ export default function CollegePredictorPage() {
{d.rank.toLocaleString()}
{d.year}
@@ -91,25 +91,25 @@ export default function CollegePredictorPage() {
-
-
+
+
Cutoff Modelling Parameters
-
+
Trained on 100,000+ candidate rank trends across 2021–2025 counselling rounds.
-
+
Supports All India Quota (AIQ) & State Quota seat adjustments.
-
+
Simulates category reservation cutoffs : General, OBC, SC, ST, EWS.
-
+
Score updated daily as you complete more mock tests.
@@ -125,7 +125,7 @@ export default function CollegePredictorPage() {
in Maths → upgrades you from NIT Trichy to IIT Roorkee
- Fix Optics
+ Fix Optics
errors to recover ~8 marks in Physics alone
diff --git a/src/app/dashboard/ai-coach/heatmap/page.tsx b/src/app/dashboard/ai-coach/heatmap/page.tsx
index 20841e5..324712a 100644
--- a/src/app/dashboard/ai-coach/heatmap/page.tsx
+++ b/src/app/dashboard/ai-coach/heatmap/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { MistakeHeatmap } from "@/components/AI/MistakeHeatmap"
import { Flame, AlertTriangle, TrendingDown, BookOpen, ArrowRight, BarChart2, Target, CheckCircle2 } from "lucide-react"
@@ -41,8 +41,8 @@ export default function HeatmapPage() {
-
-
+
+
Mistake Heatmap Vault
@@ -50,7 +50,7 @@ export default function HeatmapPage() {
Visual density map of your errors across subjects and topics — pinpoint your weakest areas instantly.
-
+
Error Density Analysis
@@ -143,9 +143,9 @@ export default function HeatmapPage() {
{/* Action card */}
-
+
- What To Do Next
+ What To Do Next
{[
{ label: "Start Mistake Review Session", href: "/dashboard/ai-coach/mistakes" },
@@ -166,7 +166,7 @@ export default function HeatmapPage() {
-
+
Pro Tip: Focus the next 3 days entirely on Rotational Dynamics — it alone is worth 8–12 marks in JEE and shows an 80% error rate across your last 5 tests.
diff --git a/src/app/dashboard/ai-coach/mistakes/page.tsx b/src/app/dashboard/ai-coach/mistakes/page.tsx
index 5db4ed1..479430a 100644
--- a/src/app/dashboard/ai-coach/mistakes/page.tsx
+++ b/src/app/dashboard/ai-coach/mistakes/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { useEffect, useState } from "react"
import { MistakeHeatmap } from "@/components/AI/MistakeHeatmap"
@@ -63,8 +63,8 @@ export default function MistakeTrackingPage() {
-
-
+
+
Mistake Review & Spaced Repetition
@@ -72,7 +72,7 @@ export default function MistakeTrackingPage() {
Review logged errors using our AI-powered spaced repetition engine. Questions resurface at optimal intervals to cement long-term retention.
-
+
AI Powered
@@ -84,7 +84,7 @@ export default function MistakeTrackingPage() {
{[
{ label: "In Today's Queue", value: mistakes.length.toString(), icon:
, color: "border-amber-400/20 bg-amber-400/5" },
{ label: "Reviewed This Session", value: completedCount.toString(), icon:
, color: "border-green-400/20 bg-green-400/5" },
- { label: "Session Progress", value: `${progressPct}%`, icon:
, color: "border-[#00F0FF]/20 bg-[#00F0FF]/5" },
+ { label: "Session Progress", value: `${progressPct}%`, icon:
, color: "border-[var(--cyan-ai-20)] bg-[var(--cyan-ai-10)]" },
{ label: "Avg Error Rate", value: avgErrorRate, icon:
, color: "border-red-400/20 bg-red-400/5" },
].map(kpi => (
@@ -103,11 +103,11 @@ export default function MistakeTrackingPage() {
Session Progress
- {completedCount} of {mistakes.length} reviewed
+ {completedCount} of {mistakes.length} reviewed
@@ -123,7 +123,7 @@ export default function MistakeTrackingPage() {
Active Review Queue
{mistakes.length > 0 && (
-
+
{currentIndex < mistakes.length ? `${currentIndex + 1} / ${mistakes.length}` : "Complete"}
)}
@@ -131,7 +131,7 @@ export default function MistakeTrackingPage() {
{loading ? (
-
+
Loading your review queue...
) : mistakes.length === 0 ? (
@@ -154,15 +154,15 @@ export default function MistakeTrackingPage() {
onSubmitReview={submitReview}
/>
) : (
-
-
+
+
Session Complete! 🎉
All {mistakes.length} questions reviewed. The AI engine has scheduled your next review intervals.
- window.location.reload()} className="bg-[#00F0FF] text-black font-bold rounded-xl px-6 h-10 text-sm">
+ window.location.reload()} className="bg-[var(--cyan-ai)] text-black font-bold rounded-xl px-6 h-10 text-sm">
Check for New Errors
diff --git a/src/app/dashboard/ai-coach/page.tsx b/src/app/dashboard/ai-coach/page.tsx
index 105abe6..b6fdad2 100644
--- a/src/app/dashboard/ai-coach/page.tsx
+++ b/src/app/dashboard/ai-coach/page.tsx
@@ -1,4 +1,4 @@
-"use client";
+"use client";
import { useEffect, useState } from "react"
import { MistakeHeatmap } from "@/components/AI/MistakeHeatmap"
@@ -89,7 +89,7 @@ export default function AICoachDashboard() {
return (
@@ -99,7 +99,7 @@ export default function AICoachDashboard() {
if (!hasAccessTo("ai-mistake-tracking")) {
return (
-
+
@@ -110,7 +110,7 @@ export default function AICoachDashboard() {
-
+
Upgrade to AI Coach Plan
@@ -151,7 +151,7 @@ export default function AICoachDashboard() {
{/* ── QUICK STATS ── */}
{[
- { label: "Questions Solved", value: questionsSolved, color: "text-[#00F0FF]", bg: "bg-[#00F0FF]/5", border: "border-[#00F0FF]/20", icon: },
+ { label: "Questions Solved", value: questionsSolved, color: "text-[var(--cyan-ai)]", bg: "bg-[var(--cyan-ai-10)]", border: "border-[var(--cyan-ai-20)]", icon: },
{ label: "Overall Accuracy", value: overallAccuracy, color: "text-amber-500", bg: "bg-amber-500/5", border: "border-amber-500/20", icon: },
{ label: "Current Streak", value: currentStreakDays, color: "text-yellow-400", bg: "bg-yellow-400/5", border: "border-yellow-400/20", icon: },
{ label: "Mistakes Mastered", value: mistakesMastered, color: "text-green-400", bg: "bg-green-400/5", border: "border-green-400/20", icon: },
@@ -170,12 +170,12 @@ export default function AICoachDashboard() {
{/* ── PREDICTIVE INTELLIGENCE ROW ── */}
-
+
Predictive Intelligence & Strategy
-
+
Full Analytics →
@@ -192,8 +192,8 @@ export default function AICoachDashboard() {
-
-
+
+
Daily Mistake Review Queue
@@ -201,10 +201,10 @@ export default function AICoachDashboard() {
-
+
Open Full Mistake Vault Page →
-
+
{currentIndex < mistakes.length ? `${currentIndex + 1} / ${mistakes.length}` : "Finished"}
@@ -241,9 +241,9 @@ export default function AICoachDashboard() {
- Study Plan
+ Study Plan
-
+
Full Schedule →
@@ -254,7 +254,7 @@ export default function AICoachDashboard() {
Mistake Heatmap
-
+
Heatmap Vault →
@@ -265,9 +265,9 @@ export default function AICoachDashboard() {
- Weekly Progress Overview
+ Weekly Progress Overview
-
+
View Details →
@@ -278,7 +278,7 @@ export default function AICoachDashboard() {
24/7 AI Tutor Chat Assistant
-
+
Full Desk Mode →
diff --git a/src/app/dashboard/ai-coach/readiness/page.tsx b/src/app/dashboard/ai-coach/readiness/page.tsx
index 9b85b87..dcd5579 100644
--- a/src/app/dashboard/ai-coach/readiness/page.tsx
+++ b/src/app/dashboard/ai-coach/readiness/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { ReadinessGauge } from "@/components/AI/ReadinessGauge"
import { Card, CardContent } from "@/components/ui/card"
@@ -38,8 +38,8 @@ export default function ReadinessPage() {
-
-
+
+
Exam Readiness Analytics
@@ -47,7 +47,7 @@ export default function ReadinessPage() {
Real-time algorithmic prediction of your exam readiness — based on speed, accuracy, syllabus coverage, and test history.
-
+
AI Powered
@@ -56,12 +56,12 @@ export default function ReadinessPage() {
{/* KPI Strip */}
{[
- { label: "Overall Score", value: isDemo ? "72 / 100" : "0 / 100", trend: isDemo ? "+5 this week" : "Baseline", trendUp: true, icon:
},
+ { label: "Overall Score", value: isDemo ? "72 / 100" : "0 / 100", trend: isDemo ? "+5 this week" : "Baseline", trendUp: true, icon:
},
{ label: "Accuracy Rate", value: isDemo ? "88%" : "0%", trend: isDemo ? "+3% vs last week" : "0 attempts", trendUp: isDemo, icon:
},
{ label: "Avg Speed / Q", value: isDemo ? "45 sec" : "-- sec", trend: isDemo ? "↓ Needs work" : "Not tested", trendUp: false, icon:
},
{ label: "Syllabus Covered", value: isDemo ? "64%" : "0%", trend: isDemo ? "+8% this month" : "Day 1", trendUp: true, icon:
},
].map((kpi) => (
-
+
{kpi.icon}
@@ -83,7 +83,7 @@ export default function ReadinessPage() {
Composite Readiness Index
-
+
{isDemo ? "Updated Daily" : "Day 1 Initializing"}
@@ -93,12 +93,12 @@ export default function ReadinessPage() {
{/* Subject Confidence Matrix */}
-
+
Subject Confidence Matrix
{[
- { subject: "Biology / Maths", score: isDemo ? 82 : 0, color: "bg-[#00F0FF]", status: isDemo ? "High Readiness" : "Not Started", statusColor: isDemo ? "text-[#00F0FF]" : "text-muted-foreground" },
+ { subject: "Biology / Maths", score: isDemo ? 82 : 0, color: "bg-[var(--cyan-ai)]", status: isDemo ? "High Readiness" : "Not Started", statusColor: isDemo ? "text-[var(--cyan-ai)]" : "text-muted-foreground" },
{ subject: "Chemistry", score: isDemo ? 74 : 0, color: "bg-amber-400", status: isDemo ? "Moderate Readiness" : "Not Started", statusColor: isDemo ? "text-amber-400" : "text-muted-foreground" },
{ subject: "Physics", score: isDemo ? 61 : 0, color: "bg-red-400", status: isDemo ? "Needs Intensive Drill" : "Not Started", statusColor: isDemo ? "text-red-400" : "text-muted-foreground" },
].map((sub) => (
@@ -130,7 +130,7 @@ export default function ReadinessPage() {
!isDemo
? "bg-white/5 border border-white/10"
: i === scoreHistory.length - 1
- ? "bg-gradient-to-t from-[#00F0FF]/60 to-[#00F0FF]"
+ ? "bg-gradient-to-t from-[var(--cyan-ai-50)] to-[var(--cyan-ai)]"
: "bg-gradient-to-t from-white/10 to-white/25"
}`}
style={{ height: isDemo ? `${(d.score / maxScore) * 80}px` : "4px" }}
@@ -170,17 +170,17 @@ export default function ReadinessPage() {
- Quick Actions
+ Quick Actions
{[
- { label: "Practice Physics DPP", href: "/dashboard/ai-coach/cbt-dpp", color: "text-[#00F0FF]" },
+ { label: "Practice Physics DPP", href: "/dashboard/ai-coach/cbt-dpp", color: "text-[var(--cyan-ai)]" },
{ label: "Review Mistake Queue", href: "/dashboard/ai-coach/mistakes", color: "text-red-400" },
{ label: "View Exam Strategy", href: "/dashboard/ai-coach/strategy", color: "text-amber-400" },
{ label: "College Predictor", href: "/dashboard/ai-coach/college-predictor", color: "text-emerald-400" },
].map((a) => (
+ className="flex items-center justify-between p-2.5 rounded-xl border border-border/40 hover:border-[var(--cyan-ai-30)] hover:bg-white/5 transition-all group text-sm font-bold">
{a.label}
→
diff --git a/src/app/dashboard/ai-coach/strategy/page.tsx b/src/app/dashboard/ai-coach/strategy/page.tsx
index cad5562..ae65491 100644
--- a/src/app/dashboard/ai-coach/strategy/page.tsx
+++ b/src/app/dashboard/ai-coach/strategy/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { ExamStrategyCard } from "@/components/AI/ExamStrategyCard"
import { StudyTimeOptimizationCard } from "@/components/AI/StudyTimeOptimizationCard"
@@ -30,8 +30,8 @@ export default function StrategyPage() {
-
-
+
+
Exam Strategy & Time Optimization
@@ -39,7 +39,7 @@ export default function StrategyPage() {
Master time allocation per question, eliminate negative marking traps, and fine-tune your subject sequence for maximum score yield.
-
+
AI Powered
@@ -50,7 +50,7 @@ export default function StrategyPage() {
{[
{ label: "Time Per Question", value: isDemo ? "45 sec" : "-- sec", note: isDemo ? "Target: 38 sec" : "Not calibrated", icon:
, color: "border-red-400/20 bg-red-400/5" },
{ label: "Negative Marks Lost", value: isDemo ? "−29" : "0", note: isDemo ? "Last mock test" : "0 negative marks", icon:
, color: "border-amber-400/20 bg-amber-400/5" },
- { label: "Attempted Questions", value: isDemo ? "93 / 120" : "0 / 120", note: isDemo ? "+7 vs last test" : "0 attempted", icon:
, color: "border-[#00F0FF]/20 bg-[#00F0FF]/5" },
+ { label: "Attempted Questions", value: isDemo ? "93 / 120" : "0 / 120", note: isDemo ? "+7 vs last test" : "0 attempted", icon:
, color: "border-[var(--cyan-ai-20)] bg-[var(--cyan-ai-10)]" },
{ label: "Score Yield", value: isDemo ? "214" : "0", note: isDemo ? "Predicted score" : "Baseline", icon:
, color: "border-green-400/20 bg-green-400/5" },
].map((kpi) => (
@@ -68,7 +68,7 @@ export default function StrategyPage() {
-
+
Subject Sequence Strategy
@@ -131,7 +131,7 @@ export default function StrategyPage() {
{/* Strategy Tips */}
-
+
AI Strategy Recommendations
@@ -140,7 +140,7 @@ export default function StrategyPage() {
{[
{ tip: "Start with Chemistry (highest accuracy) to build momentum and bank easy marks in the first 40 minutes.", color: "text-green-400", label: "Opening Strategy" },
{ tip: "Attempt Physics only if you are 80%+ confident per question. Otherwise, mark and skip — recover in last 10 min buffer.", color: "text-red-400", label: "Physics Guard" },
- { tip: "Reserve 10–15 minutes at the end to revisit starred questions. Your review accuracy is historically 20% higher than first-attempt.", color: "text-[#00F0FF]", label: "Review Window" },
+ { tip: "Reserve 10–15 minutes at the end to revisit starred questions. Your review accuracy is historically 20% higher than first-attempt.", color: "text-[var(--cyan-ai)]", label: "Review Window" },
].map((s) => (
{s.label}
diff --git a/src/app/dashboard/ai-coach/study-plan/page.tsx b/src/app/dashboard/ai-coach/study-plan/page.tsx
index 1ab18cf..a59ff1b 100644
--- a/src/app/dashboard/ai-coach/study-plan/page.tsx
+++ b/src/app/dashboard/ai-coach/study-plan/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { StudyPlanCard } from "@/components/AI/StudyPlanCard"
import { WeeklyProgressReport } from "@/components/AI/WeeklyProgressReport"
@@ -18,8 +18,8 @@ export default function StudyPlanPage() {
-
-
+
+
Personalized Daily & Weekly Study Plan
@@ -27,7 +27,7 @@ export default function StudyPlanPage() {
AI-generated task schedule dynamically tailored to fix your weak areas and maintain optimal syllabus coverage.
-
+
AI Powered
@@ -37,7 +37,7 @@ export default function StudyPlanPage() {
{[
{ label: "Tasks Today", value: isDemo ? "5" : "3", sub: isDemo ? "2 completed" : "0 completed", icon:
, color: "border-green-400/20 bg-green-400/5" },
- { label: "Study Hours Today", value: isDemo ? "3.8 hrs" : "0.0 hrs", sub: "Target: 5 hrs", icon:
, color: "border-[#00F0FF]/20 bg-[#00F0FF]/5" },
+ { label: "Study Hours Today", value: isDemo ? "3.8 hrs" : "0.0 hrs", sub: "Target: 5 hrs", icon:
, color: "border-[var(--cyan-ai-20)] bg-[var(--cyan-ai-10)]" },
{ label: "Syllabus Coverage", value: isDemo ? "64%" : "0%", sub: isDemo ? "+8% this week" : "Day 1 Baseline", icon:
, color: "border-amber-400/20 bg-amber-400/5" },
{ label: "Current Streak", value: `${streakCount} Day${streakCount === 1 ? '' : 's'}`, sub: isDemo ? "Keep it up!" : "Day 1 active", icon:
, color: "border-orange-400/20 bg-orange-400/5" },
].map((kpi) => (
@@ -58,10 +58,10 @@ export default function StudyPlanPage() {
-
+
Today's Schedule
-
+
{new Date().toLocaleDateString("en-IN", { weekday: "long", day: "numeric", month: "long" })}
@@ -80,7 +80,7 @@ export default function StudyPlanPage() {
{/* Syllabus Coverage */}
-
+
Subject Coverage Breakdown
@@ -111,25 +111,25 @@ export default function StudyPlanPage() {
{/* Sidebar */}
-
-
+
+
AI Scheduler Rules
-
+
High-Yield Prioritization: Extra time on topics with heavy exam weightage.
-
+
Error Interleaving: Recent incorrect questions are integrated directly into study blocks.
-
+
Burnout Prevention: 10-minute micro-breaks recommended between intensive problem sets.
-
+
Spaced Repetition: SM-2 algorithm reschedules mistake reviews at optimal intervals.
@@ -140,7 +140,7 @@ export default function StudyPlanPage() {
{[
{ day: "Tue, Aug 5", task: "Full-Length Mock — JEE Mains Pattern", type: "Test", color: "text-purple-400 bg-purple-400/10" },
- { day: "Wed, Aug 6", task: "Rotational Dynamics Intensive Drill", type: "Practice", color: "text-[#00F0FF] bg-[#00F0FF]/10" },
+ { day: "Wed, Aug 6", task: "Rotational Dynamics Intensive Drill", type: "Practice", color: "text-[var(--cyan-ai)] bg-[var(--cyan-ai-10)]" },
{ day: "Thu, Aug 7", task: "Chemistry Organic — Mistake Review", type: "Review", color: "text-red-400 bg-red-400/10" },
{ day: "Fri, Aug 8", task: "Optics + Wave Optics Revision", type: "Revision", color: "text-yellow-400 bg-yellow-400/10" },
].map((item) => (
diff --git a/src/app/dashboard/ai-coach/time-optimization/page.tsx b/src/app/dashboard/ai-coach/time-optimization/page.tsx
index 4236a39..620f272 100644
--- a/src/app/dashboard/ai-coach/time-optimization/page.tsx
+++ b/src/app/dashboard/ai-coach/time-optimization/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { StudyTimeOptimizationCard } from "@/components/AI/StudyTimeOptimizationCard"
import { Clock, Zap, Moon, Sun, AlertCircle, ArrowRight, BarChart2 } from "lucide-react"
@@ -75,8 +75,8 @@ export default function TimeOptimizationPage() {
-
-
+
+
Study Time Optimization
@@ -84,7 +84,7 @@ export default function TimeOptimizationPage() {
Understand your peak productive hours and schedule your hardest topics in your highest-efficiency windows.
-
+
Chronobiology Analytics
@@ -94,7 +94,7 @@ export default function TimeOptimizationPage() {
{[
{ label: "Peak Efficiency", value: isDemo ? "95%" : "--", sub: isDemo ? "2–5 PM window" : "Calibrating", color: "border-yellow-400/20 bg-yellow-400/5", icon:
},
- { label: "Study Hrs Today", value: isDemo ? "3.8 h" : "0.0 h", sub: "Target: 6 h", color: "border-[#00F0FF]/20 bg-[#00F0FF]/5", icon:
},
+ { label: "Study Hrs Today", value: isDemo ? "3.8 h" : "0.0 h", sub: "Target: 6 h", color: "border-[var(--cyan-ai-20)] bg-[var(--cyan-ai-10)]", icon:
},
{ label: "Morning Block", value: isDemo ? "60%" : "0%", sub: "6–9 AM", color: "border-indigo-400/20 bg-indigo-400/5", icon:
},
{ label: "Evening Block", value: isDemo ? "74%" : "0%", sub: "7–9 PM", color: "border-green-400/20 bg-green-400/5", icon:
},
].map(kpi => (
@@ -113,7 +113,7 @@ export default function TimeOptimizationPage() {
{/* Chart — 2/3 */}
-
+
Hourly Efficiency Profile
@@ -131,7 +131,7 @@ export default function TimeOptimizationPage() {
{slot.slot}
= 80 ? (slot.highlight ? "bg-yellow-400" : "bg-green-400") : slot.pct >= 60 ? "bg-[#00F0FF]" : isDemo ? "bg-red-400" : "bg-white/10"}`}
+ className={`h-full rounded-full ${slot.pct >= 80 ? (slot.highlight ? "bg-yellow-400" : "bg-green-400") : slot.pct >= 60 ? "bg-[var(--cyan-ai)]" : isDemo ? "bg-red-400" : "bg-white/10"}`}
style={{ width: `${slot.pct}%` }}
/>
@@ -158,9 +158,9 @@ export default function TimeOptimizationPage() {
))}
-
+
- Apply Insights
+ Apply Insights
{[
{ label: "Schedule Today's Study Plan", href: "/dashboard/ai-coach/study-plan" },
diff --git a/src/app/dashboard/ai-coach/tutor/page.tsx b/src/app/dashboard/ai-coach/tutor/page.tsx
index ce24c8a..2b02797 100644
--- a/src/app/dashboard/ai-coach/tutor/page.tsx
+++ b/src/app/dashboard/ai-coach/tutor/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { TutorChat } from "@/components/AI/TutorChat"
import { BrainCircuit, Sparkles, MessageSquare, Lightbulb } from "lucide-react"
@@ -6,7 +6,7 @@ import { Card, CardContent } from "@/components/ui/card"
const CAPABILITIES = [
{ icon:
, label: "Concept Explanations", desc: "Step-by-step breakdown of Physics, Chemistry, Maths & Biology topics" },
- { icon:
, label: "Problem Solving", desc: "Full worked solutions with formulas, derivations and shortcuts" },
+ { icon:
, label: "Problem Solving", desc: "Full worked solutions with formulas, derivations and shortcuts" },
{ icon:
, label: "Doubt Clearing", desc: "Ask follow-up questions — the AI remembers context within the session" },
]
@@ -18,8 +18,8 @@ export default function TutorChatPage() {
-
-
+
+
AI Tutor — 24/7 Doubt Solver
diff --git a/src/app/dashboard/ai-coach/weekly-progress/page.tsx b/src/app/dashboard/ai-coach/weekly-progress/page.tsx
index 89b1ae3..a4ad1c9 100644
--- a/src/app/dashboard/ai-coach/weekly-progress/page.tsx
+++ b/src/app/dashboard/ai-coach/weekly-progress/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { WeeklyProgressReport } from "@/components/AI/WeeklyProgressReport"
import { Target, TrendingUp, Calendar, Zap, ArrowRight, BookOpen, CheckCircle2 } from "lucide-react"
@@ -47,8 +47,8 @@ export default function WeeklyProgressPage() {
-
-
+
+
Weekly Progress Overview
@@ -57,7 +57,7 @@ export default function WeeklyProgressPage() {
-
+
Live Analytics
@@ -85,7 +85,7 @@ export default function WeeklyProgressPage() {
- This Week at a Glance
+ This Week at a Glance
@@ -122,9 +122,9 @@ export default function WeeklyProgressPage() {
{/* Weekly Goals */}
-
+
- Weekly Goals
+ Weekly Goals
{isDemo ? (
diff --git a/src/app/dashboard/analytics/page.tsx b/src/app/dashboard/analytics/page.tsx
index a7d5086..2a7ab45 100644
--- a/src/app/dashboard/analytics/page.tsx
+++ b/src/app/dashboard/analytics/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "@/components/ui/card"
import { LineChart as LineChartIcon, Activity, BrainCircuit } from "lucide-react"
@@ -59,8 +59,8 @@ export default function AnalyticsPage() {
-
-
+
+
Performance Analytics
@@ -73,7 +73,7 @@ export default function AnalyticsPage() {
- Projected Score Trajectory
+ Projected Score Trajectory
{isDemo ? "Your mock scores over the last 6 months projected towards the final exam." : "Your mock test trajectory will plot here as you complete tests."}
@@ -86,18 +86,18 @@ export default function AnalyticsPage() {
-
+
-
+
- AI Diagnosis
+ AI Diagnosis
diff --git a/src/app/dashboard/cbt/history/[attemptId]/page.tsx b/src/app/dashboard/cbt/history/[attemptId]/page.tsx
index bfc0f23..f5c9b46 100644
--- a/src/app/dashboard/cbt/history/[attemptId]/page.tsx
+++ b/src/app/dashboard/cbt/history/[attemptId]/page.tsx
@@ -1,4 +1,4 @@
-"use client";
+"use client";
import { useEffect, useState, use } from "react";
import Link from "next/link";
@@ -100,7 +100,7 @@ export default function AttemptHistoryPage({ params }: { params: Promise<{ attem
-
+
Score
= 0.6 ? "text-green-500" : "text-amber-500"}>
diff --git a/src/app/dashboard/cbt/page.tsx b/src/app/dashboard/cbt/page.tsx
index 0d39a6b..d4ec6ec 100644
--- a/src/app/dashboard/cbt/page.tsx
+++ b/src/app/dashboard/cbt/page.tsx
@@ -1,4 +1,4 @@
-"use client";
+"use client";
import { useEffect, useState } from "react";
import Link from "next/link";
@@ -118,7 +118,7 @@ export default function CBTPage() {
if (userLoading || loading) {
return (
)
@@ -129,8 +129,8 @@ export default function CBTPage() {
-
-
+
+
Computer Based Tests (CBT)
@@ -145,7 +145,7 @@ export default function CBTPage() {
type="date"
value={dateFilter}
onChange={(e) => setDateFilter(e.target.value)}
- className="w-full px-4 py-2 bg-background border border-border rounded-xl text-sm focus:ring-2 focus:ring-[#00F0FF] outline-none text-foreground dark:[color-scheme:dark] [color-scheme:light]"
+ className="w-full px-4 py-2 bg-background border border-border rounded-xl text-sm focus:ring-2 focus:ring-[var(--cyan-ai)] outline-none text-foreground dark:[color-scheme:dark] [color-scheme:light]"
/>
@@ -155,7 +155,7 @@ export default function CBTPage() {
placeholder="Search exams..."
value={search}
onChange={(e) => setSearch(e.target.value)}
- className="w-full pl-10 pr-4 py-2 bg-background border border-border rounded-xl text-sm focus:ring-2 focus:ring-[#00F0FF] outline-none"
+ className="w-full pl-10 pr-4 py-2 bg-background border border-border rounded-xl text-sm focus:ring-2 focus:ring-[var(--cyan-ai)] outline-none"
/>
@@ -178,7 +178,7 @@ export default function CBTPage() {
- Upcoming & Active Exams
+ Upcoming & Active Exams
{/* BUG-08 fix: Filter out already attempted exams from Upcoming & Active list */}
@@ -218,11 +218,11 @@ export default function CBTPage() {
const isExpired = endTime ? now > endTime : false;
return (
-
+
-
+
{exam.type} Test
{exam.exam_pattern && (
@@ -245,7 +245,7 @@ export default function CBTPage() {
) : null}
-
+
{exam.title}
@@ -262,7 +262,7 @@ export default function CBTPage() {
) : isLocked ? (
setShowUpgradeModal(true)}
- className="w-full gap-2 rounded-xl bg-secondary text-muted-foreground border border-dashed border-border hover:border-[#00F0FF]/50 hover:text-foreground font-bold"
+ className="w-full gap-2 rounded-xl bg-secondary text-muted-foreground border border-dashed border-border hover:border-[var(--cyan-ai-10)] hover:text-foreground font-bold"
>
Unlock Test
@@ -272,7 +272,7 @@ export default function CBTPage() {
) : (
-
+
Start Exam
@@ -331,7 +331,7 @@ export default function CBTPage() {
Accuracy
-
{Math.round(attempt.accuracy)}%
+
{Math.round(attempt.accuracy)}%
diff --git a/src/app/dashboard/community/page.tsx b/src/app/dashboard/community/page.tsx
index b3180ad..5a8cc30 100644
--- a/src/app/dashboard/community/page.tsx
+++ b/src/app/dashboard/community/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { useState } from "react"
import { Card, CardContent, CardHeader, CardTitle, CardFooter } from "@/components/ui/card"
@@ -86,7 +86,7 @@ export default function CommunityPage() {
if (loading) {
return (
-
+
Loading Doubt Forum...
)
@@ -117,8 +117,8 @@ export default function CommunityPage() {
-
-
+
+
Doubt Forum
@@ -128,7 +128,7 @@ export default function CommunityPage() {
setIsAskModalOpen(true)}
- className="px-5 py-2.5 bg-[#00F0FF] text-black font-bold rounded-xl shadow-[0_0_15px_-3px_rgba(0,240,255,0.4)] hover:bg-[#00d0dd] transition-colors"
+ className="px-5 py-2.5 bg-[var(--cyan-ai)] text-black font-bold rounded-xl shadow-[0_0_15px_-3px_rgba(12,96,96,0.4)] hover:bg-[#00d0dd] transition-colors"
>
Ask a Doubt
@@ -142,7 +142,7 @@ export default function CommunityPage() {
setSearchQuery(e.target.value)}
/>
@@ -158,11 +158,11 @@ export default function CommunityPage() {
{filteredDoubts.map((doubt) => (
-
+
{/* Upvote Sidebar */}
-
+
{doubt.upvotes}
@@ -214,7 +214,7 @@ export default function CommunityPage() {
{expandedDoubtId === doubt.id && (
-
+
AI
@@ -232,9 +232,9 @@ export default function CommunityPage() {
-
+
@@ -246,7 +246,7 @@ export default function CommunityPage() {
))}
{filteredDoubts.length === 0 && (
-
+
{activeFilter === 'my-doubts' ? "No Doubts Asked Yet" : "No doubts found matching your criteria."}
@@ -264,7 +264,7 @@ export default function CommunityPage() {
@@ -309,17 +309,17 @@ export default function CommunityPage() {
-
+
Attach Image
setIsAskModalOpen(false)}
- className="flex items-center gap-2 px-6 py-2.5 bg-[#00F0FF] text-black font-bold rounded-xl shadow-[0_0_15px_-3px_rgba(0,240,255,0.4)] hover:bg-[#00d0dd] transition-colors"
+ className="flex items-center gap-2 px-6 py-2.5 bg-[var(--cyan-ai)] text-black font-bold rounded-xl shadow-[0_0_15px_-3px_rgba(12,96,96,0.4)] hover:bg-[#00d0dd] transition-colors"
>
Post Doubt
diff --git a/src/app/dashboard/dpp/page.tsx b/src/app/dashboard/dpp/page.tsx
index 1d6f9cb..9ff4287 100644
--- a/src/app/dashboard/dpp/page.tsx
+++ b/src/app/dashboard/dpp/page.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { Button } from "@/components/ui/button"
import { Card, CardContent } from "@/components/ui/card"
@@ -108,7 +108,7 @@ export default function DPPPage() {
type="date"
value={dateFilter}
onChange={(e) => setDateFilter(e.target.value)}
- className="px-3 py-1.5 bg-background border border-border rounded-lg text-xs font-bold focus:ring-2 focus:ring-[#00F0FF] outline-none text-muted-foreground mr-2"
+ className="px-3 py-1.5 bg-background border border-border rounded-lg text-xs font-bold focus:ring-2 focus:ring-[var(--cyan-ai)] outline-none text-muted-foreground mr-2"
/>
Difficulty:
{['Mixed', 'Easy', 'Medium', 'Hard'].map((diff) => (
@@ -157,15 +157,15 @@ export default function DPPPage() {
const isExpired = endTime ? now > endTime : false;
return (
-
+
- {isAttempted ?
:
}
+ {isAttempted ?
:
}
-
+
{user?.target_exam?.replace("_", " ") || "JEE/NEET"}
•
@@ -182,7 +182,7 @@ export default function DPPPage() {
>
) : null}
-
+
{cleanTitle(dpp.title)}
{dpp.difficulty}
@@ -209,7 +209,7 @@ export default function DPPPage() {
Result
{!isExpired && (
- setSelectedPdfDpp(dpp)} variant="secondary" size="sm" className="font-bold bg-[#00F0FF]/10 text-[#00F0FF] hover:bg-[#00F0FF]/20 gap-2">
+ setSelectedPdfDpp(dpp)} variant="secondary" size="sm" className="font-bold bg-[var(--cyan-ai-10)] text-[var(--cyan-ai)] hover:bg-[var(--cyan-ai-20)] gap-2">
Read PDF
)}
@@ -319,7 +319,7 @@ export default function DPPPage() {
Close Reader
-
+
Upgrade to AI Coach for CBT
diff --git a/src/app/dashboard/layout.tsx b/src/app/dashboard/layout.tsx
index 7bfedd0..0f9fe62 100644
--- a/src/app/dashboard/layout.tsx
+++ b/src/app/dashboard/layout.tsx
@@ -1,4 +1,4 @@
-"use client"
+"use client"
import { ReactNode, useState, useEffect, useRef } from "react"
import { BookOpen, LayoutDashboard, Settings, FileText, Activity, LineChart, Trophy, User, ChevronUp, Lock, ShieldAlert, Flame, Target, Gauge, Zap, Calendar, Clock, BrainCircuit, BarChart3, School, CheckSquare } from "lucide-react"
@@ -67,7 +67,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) {
);
@@ -79,7 +79,7 @@ export default function DashboardLayout({ children }: { children: ReactNode }) {
{switching && (