Full React 18 + TypeScript + Vite frontend with: - 90+ pages (admin, student, teacher, public) - shadcn/ui component library with 50+ components - JWT authentication with role-based access control - TanStack React Query for server state management - 30+ API service modules - AI-powered features (coaching, grading, generation) - Adaptive learning UI (diagnostics, proficiency, plans) - Institutional LMS management (courses, batches, timetable) - Communication suite (discussions, announcements, DMs) - Full CRUD with validation and confirmation dialogs Made-with: Cursor
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import RoleLayout, { NavGroup } from "./RoleLayout";
|
|
import {
|
|
LayoutDashboard, BookOpen, ClipboardList, FileText,
|
|
CalendarCheck, Users, Calendar, User, MessageSquare,
|
|
Megaphone, Wand2,
|
|
} from "lucide-react";
|
|
|
|
const navGroups: NavGroup[] = [
|
|
{
|
|
label: "Teaching",
|
|
items: [
|
|
{ title: "Dashboard", url: "/teacher/dashboard", icon: LayoutDashboard },
|
|
{ title: "Courses", url: "/teacher/courses", icon: BookOpen },
|
|
{ title: "Assignments", url: "/teacher/assignments", icon: ClipboardList },
|
|
],
|
|
},
|
|
{
|
|
label: "Management",
|
|
items: [
|
|
{ title: "Attendance", url: "/teacher/attendance", icon: CalendarCheck },
|
|
{ title: "Students", url: "/teacher/students", icon: Users },
|
|
{ title: "Timetable", url: "/teacher/timetable", icon: Calendar },
|
|
],
|
|
},
|
|
{
|
|
label: "Communication",
|
|
items: [
|
|
{ title: "Discussions", url: "/teacher/discussions", icon: MessageSquare },
|
|
{ title: "Announcements", url: "/teacher/announcements", icon: Megaphone },
|
|
],
|
|
},
|
|
{
|
|
label: "Account",
|
|
items: [
|
|
{ title: "Profile", url: "/teacher/profile", icon: User },
|
|
],
|
|
},
|
|
];
|
|
|
|
export default function TeacherLayout() {
|
|
return <RoleLayout navGroups={navGroups} role="teacher" />;
|
|
}
|