Files
encoach_frontend_new_v2/src/components/TeacherLayout.tsx
Yamen Ahmad 110a0b7105 feat: add complete EnCoach frontend application
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
2026-04-01 16:59:11 +04:00

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" />;
}