feat: complete pragativeer v2 frontend and backend, docker setup, and cbt engine
This commit is contained in:
@@ -4,11 +4,11 @@ import { Search, Download, MoreVertical } from "lucide-react"
|
||||
|
||||
export default function StudentsPage() {
|
||||
const students = [
|
||||
{ id: "STU-001", name: "Rahul Sharma", email: "rahul@example.com", tier: "AI Pro", target: "NEET", joined: "Oct 12, 2025", tests: 42 },
|
||||
{ id: "STU-002", name: "Priya Patel", email: "priya@example.com", tier: "Basic", target: "JEE Main", joined: "Nov 05, 2025", tests: 14 },
|
||||
{ id: "STU-003", name: "Amit Kumar", email: "amit@example.com", tier: "AI Pro", target: "JEE Adv", joined: "Dec 01, 2025", tests: 89 },
|
||||
{ id: "STU-004", name: "Sneha Reddy", email: "sneha@example.com", tier: "AI Pro", target: "NEET", joined: "Dec 15, 2025", tests: 34 },
|
||||
{ id: "STU-005", name: "Vikram Singh", email: "vikram@example.com", tier: "Basic", target: "NEET", joined: "Jan 10, 2026", tests: 5 },
|
||||
{ id: "STU-001", name: "Rahul Sharma", email: "rahul@example.com", tier: "AI Pro", target: "NEET", joined: "Oct 12, 2025", tests: 42, streak: 45, lastLogin: "Today, 08:30 AM" },
|
||||
{ id: "STU-002", name: "Priya Patel", email: "priya@example.com", tier: "Basic", target: "JEE Main", joined: "Nov 05, 2025", tests: 14, streak: 2, lastLogin: "Yesterday, 14:15 PM" },
|
||||
{ id: "STU-003", name: "Amit Kumar", email: "amit@example.com", tier: "AI Pro", target: "JEE Adv", joined: "Dec 01, 2025", tests: 89, streak: 0, lastLogin: "3 Days Ago" },
|
||||
{ id: "STU-004", name: "Sneha Reddy", email: "sneha@example.com", tier: "AI Pro", target: "NEET", joined: "Dec 15, 2025", tests: 34, streak: 12, lastLogin: "Today, 11:45 AM" },
|
||||
{ id: "STU-005", name: "Vikram Singh", email: "vikram@example.com", tier: "Basic", target: "NEET", joined: "Jan 10, 2026", tests: 5, streak: 0, lastLogin: "1 Week Ago" },
|
||||
]
|
||||
|
||||
return (
|
||||
@@ -41,8 +41,9 @@ export default function StudentsPage() {
|
||||
<th className="px-6 py-4 font-semibold">Plan Tier</th>
|
||||
<th className="px-6 py-4 font-semibold">Target Exam</th>
|
||||
<th className="px-6 py-4 font-semibold">Tests Taken</th>
|
||||
<th className="px-6 py-4 font-semibold">Joined Date</th>
|
||||
<th className="px-6 py-4 font-semibold text-right"></th>
|
||||
<th className="px-6 py-4 font-semibold text-center">Streak</th>
|
||||
<th className="px-6 py-4 font-semibold">Last Login</th>
|
||||
<th className="px-6 py-4 font-semibold text-right">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody className="divide-y divide-border">
|
||||
@@ -61,8 +62,16 @@ export default function StudentsPage() {
|
||||
</td>
|
||||
<td className="px-6 py-4 font-medium">{s.target}</td>
|
||||
<td className="px-6 py-4 font-mono">{s.tests}</td>
|
||||
<td className="px-6 py-4 text-muted-foreground">{s.joined}</td>
|
||||
<td className="px-6 py-4 text-right">
|
||||
<td className="px-6 py-4 text-center">
|
||||
<span className={`font-bold ${s.streak > 0 ? 'text-orange-500' : 'text-muted-foreground'}`}>{s.streak}</span>
|
||||
</td>
|
||||
<td className="px-6 py-4 text-muted-foreground">{s.lastLogin}</td>
|
||||
<td className="px-6 py-4 text-right flex items-center justify-end gap-2">
|
||||
{s.streak === 0 && (
|
||||
<Button variant="outline" size="sm" className="h-7 text-[10px] border-red-500/50 text-red-500 hover:bg-red-500/10" onClick={() => window.alert(`Alert sent to ${s.name} regarding broken streak.`)}>
|
||||
Send Alert
|
||||
</Button>
|
||||
)}
|
||||
<button className="p-1.5 hover:text-foreground hover:bg-secondary rounded"><MoreVertical size={16} /></button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user