diff --git a/src/components/common/Modal.tsx b/src/components/common/Modal.tsx index 015cd2d..e22c57f 100644 --- a/src/components/common/Modal.tsx +++ b/src/components/common/Modal.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { X } from 'lucide-react'; +import { CloseIcon } from '@mui/icons-material'; interface ModalProps { isOpen: boolean; @@ -32,7 +32,7 @@ const Modal: React.FC = ({ isOpen, onClose, title, children, maxWidt onClick={onClose} className="text-gray-400 hover:text-gray-500 focus:outline-none" > - + diff --git a/src/pages/timetable/ClassDetailPage.tsx b/src/pages/timetable/ClassDetailPage.tsx index 917cbc4..18af775 100644 --- a/src/pages/timetable/ClassDetailPage.tsx +++ b/src/pages/timetable/ClassDetailPage.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import { useParams, Link, useNavigate } from 'react-router-dom'; -import { ArrowLeft, Calendar, Users, BookOpen, Clock, Edit, Trash2, Plus } from 'lucide-react'; +import { AccessTimeIcon, AddIcon, ArrowBackIcon, CalendarTodayIcon, DeleteIcon, EditIcon, MenuBookIcon, PeopleIcon } from '@mui/icons-material'; import useTimetableStore from '../../stores/timetableStore'; import { useProfile } from '../../contexts/ProfileContext'; import Modal from '../../components/common/Modal'; @@ -72,7 +72,7 @@ const ClassDetailPage: React.FC = () => { to="/timetable/classes" className="inline-flex items-center gap-2 text-gray-500 hover:text-gray-700 mb-4" > - + Back to Classes @@ -95,14 +95,14 @@ const ClassDetailPage: React.FC = () => { to={`/timetable/classes/${classId}/edit`} className="inline-flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors" > - + Edit @@ -115,7 +115,7 @@ const ClassDetailPage: React.FC = () => {
- +

Timetables

@@ -126,7 +126,7 @@ const ClassDetailPage: React.FC = () => {
- +

Students

@@ -137,7 +137,7 @@ const ClassDetailPage: React.FC = () => {
- +

Teachers

@@ -194,7 +194,7 @@ const ClassDetailPage: React.FC = () => { to={`/timetable/classes/${classId}/timetables/new`} className="inline-flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors" > - + Add Timetable )} @@ -202,7 +202,7 @@ const ClassDetailPage: React.FC = () => { {timetables.length === 0 ? (
- +

No timetables yet

Create a timetable to start scheduling lessons

@@ -221,7 +221,7 @@ const ClassDetailPage: React.FC = () => { {timetable.is_recurring && ' • Recurring'}

- + ))}
@@ -234,7 +234,7 @@ const ClassDetailPage: React.FC = () => {

Enrolled Students

{enrolledStudents.length === 0 ? (
- +

No students enrolled

Students can request enrollment or be added by teachers

diff --git a/src/pages/timetable/ClassesPage.tsx b/src/pages/timetable/ClassesPage.tsx index 0eb4bd0..08c2980 100644 --- a/src/pages/timetable/ClassesPage.tsx +++ b/src/pages/timetable/ClassesPage.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; -import { Plus, Search, Filter, BookOpen, Users, Calendar } from 'lucide-react'; +import { AddIcon, CalendarTodayIcon, FilterListIcon, MenuBookIcon, PeopleIcon, SearchIcon } from '@mui/icons-material'; import useTimetableStore from '../../stores/timetableStore'; import { useProfile } from '../../contexts/ProfileContext'; @@ -70,7 +70,7 @@ const ClassesPage: React.FC = () => { onClick={() => navigate('/timetable/classes/create')} className="inline-flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors" > - + Create Class )} @@ -80,7 +80,7 @@ const ClassesPage: React.FC = () => {
- + { onClick={() => setShowFilters(!showFilters)} className="inline-flex items-center gap-2 px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors" > - + Filters
) : classes.length === 0 ? (
- +

No classes found

{searchQuery || filterSubject || filterSchoolYear @@ -191,7 +191,7 @@ const ClassesPage: React.FC = () => { >

- +
{cls.subject} @@ -203,11 +203,11 @@ const ClassesPage: React.FC = () => {

- + {cls.student_count} students - + {cls.timetable_count} timetables
diff --git a/src/pages/timetable/EnrollmentRequestsPage.tsx b/src/pages/timetable/EnrollmentRequestsPage.tsx index d0fb9f6..f6ff620 100644 --- a/src/pages/timetable/EnrollmentRequestsPage.tsx +++ b/src/pages/timetable/EnrollmentRequestsPage.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { Check, X, UserPlus, Users, Filter, Search, ChevronDown } from 'lucide-react'; +import { CheckIcon, CloseIcon, FilterListIcon, KeyboardArrowDownIcon, PeopleIcon, PersonAddIcon, SearchIcon } from '@mui/icons-material'; import useTimetableStore from '../../stores/timetableStore'; import Modal from '../../components/common/Modal'; @@ -105,7 +105,7 @@ const EnrollmentRequestsPage: React.FC = () => {
{/* Class Filter */}
- + {
- +
@@ -230,7 +230,7 @@ const EnrollmentRequestsPage: React.FC = () => { }} className="inline-flex items-center px-3 py-1 border border-transparent text-xs font-medium rounded text-green-700 bg-green-100 hover:bg-green-200" > - + Approve
@@ -259,7 +259,7 @@ const EnrollmentRequestsPage: React.FC = () => {
) : (
- +

No enrollment requests

{filters.status === 'pending' diff --git a/src/pages/timetable/LessonPage.tsx b/src/pages/timetable/LessonPage.tsx index 502f598..ea3cbe6 100644 --- a/src/pages/timetable/LessonPage.tsx +++ b/src/pages/timetable/LessonPage.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react'; import { useParams, Link, useNavigate } from 'react-router-dom'; -import { ArrowLeft, Calendar, Clock, MapPin, Edit, Trash2, Users, BookOpen, FileText, CheckCircle, XCircle } from 'lucide-react'; +import { AccessTimeIcon, ArrowBackIcon, CalendarTodayIcon, CancelIcon, CheckCircleIcon, DeleteIcon, DescriptionIcon, EditIcon, LocationOnIcon, MenuBookIcon, PeopleIcon } from '@mui/icons-material'; import useTimetableStore from '../../stores/timetableStore'; import { useProfile } from '../../contexts/ProfileContext'; import { format, parseISO } from 'date-fns'; @@ -119,7 +119,7 @@ const LessonPage: React.FC = () => { to={`/timetable/timetables/${currentTimetable?.id}`} className="inline-flex items-center text-gray-500 hover:text-gray-700 mb-2" > - + Back to Timetable

{currentLesson.title}

@@ -133,14 +133,14 @@ const LessonPage: React.FC = () => { onClick={() => setIsEditModalOpen(true)} className="inline-flex items-center px-3 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors" > - + Edit
@@ -151,12 +151,12 @@ const LessonPage: React.FC = () => {

- + Time & Location

- +

Date

@@ -165,7 +165,7 @@ const LessonPage: React.FC = () => {

- +

Time

@@ -175,7 +175,7 @@ const LessonPage: React.FC = () => {

{(currentLesson.location || currentLesson.room) && (
- +

Location

@@ -191,7 +191,7 @@ const LessonPage: React.FC = () => {

- + Class Information

@@ -218,7 +218,7 @@ const LessonPage: React.FC = () => {

- + Attendance

diff --git a/src/pages/timetable/MyClassesPage.tsx b/src/pages/timetable/MyClassesPage.tsx index 15fb4c2..70d26e2 100644 --- a/src/pages/timetable/MyClassesPage.tsx +++ b/src/pages/timetable/MyClassesPage.tsx @@ -1,6 +1,6 @@ import React, { useEffect } from 'react'; import { Link } from 'react-router-dom'; -import { BookOpen, Users, Clock, ChevronRight, GraduationCap, School } from 'lucide-react'; +import { AccessTimeIcon, KeyboardArrowRightIcon, MenuBookIcon, PeopleIcon, SchoolIcon } from '@mui/icons-material'; import useTimetableStore from '../../stores/timetableStore'; import { useProfile } from '../../contexts/ProfileContext'; @@ -78,7 +78,7 @@ const MyClassesPage: React.FC = () => { {teachingClasses.length > 0 && (
- +

Teaching

{teachingClasses.length} @@ -102,7 +102,7 @@ const MyClassesPage: React.FC = () => {

{classItem.class.code}

)}
- +

@@ -120,12 +120,12 @@ const MyClassesPage: React.FC = () => {

- + {classItem.class?.enrolled_count || 0} students
{classItem.class?.academic_year && (
- + {classItem.class.academic_year}
)} @@ -141,7 +141,7 @@ const MyClassesPage: React.FC = () => { {enrolledClasses.length > 0 && (
- +

Enrolled

{enrolledClasses.length} @@ -165,7 +165,7 @@ const MyClassesPage: React.FC = () => {

{classItem.class.code}

)}
- +

@@ -180,14 +180,14 @@ const MyClassesPage: React.FC = () => {

- + {classItem.class?.teachers?.[0]?.first_name} {classItem.class?.teachers?.[0]?.last_name}
{classItem.class?.academic_year && (
- + {classItem.class.academic_year}
)} @@ -202,7 +202,7 @@ const MyClassesPage: React.FC = () => { {/* Empty State */} {myClasses.length === 0 && (
- +

No classes found

You are not enrolled in or teaching any classes yet. diff --git a/src/pages/timetable/TimetablePage.tsx b/src/pages/timetable/TimetablePage.tsx index 14ffc8e..4e0bd33 100644 --- a/src/pages/timetable/TimetablePage.tsx +++ b/src/pages/timetable/TimetablePage.tsx @@ -1,6 +1,6 @@ import React, { useEffect } from 'react'; import { useParams, Link, useNavigate } from 'react-router-dom'; -import { ArrowLeft, Calendar, Clock, MapPin, Edit, Trash2, Plus, ChevronLeft, ChevronRight } from 'lucide-react'; +import { AccessTimeIcon, AddIcon, ArrowBackIcon, CalendarTodayIcon, DeleteIcon, EditIcon, KeyboardArrowLeftIcon, KeyboardArrowRightIcon, LocationOnIcon } from '@mui/icons-material'; import useTimetableStore from '../../stores/timetableStore'; import { useProfile } from '../../contexts/ProfileContext'; import { format, parseISO, addDays, startOfWeek, isSameDay } from 'date-fns'; @@ -81,7 +81,7 @@ const TimetablePage: React.FC = () => { to={`/timetable/classes/${currentTimetable.class_id}`} className="inline-flex items-center gap-2 text-gray-500 hover:text-gray-700 mb-4" > - + Back to Class @@ -90,7 +90,7 @@ const TimetablePage: React.FC = () => {

{currentTimetable.name}

- + {format(parseISO(currentTimetable.effective_from), 'MMM d, yyyy')} {currentTimetable.effective_until && ` - ${format(parseISO(currentTimetable.effective_until), 'MMM d, yyyy')}`} @@ -107,14 +107,14 @@ const TimetablePage: React.FC = () => { to={`/timetable/timetables/${timetableId}/lessons/new`} className="inline-flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors" > - + Add Lesson
@@ -131,7 +131,7 @@ const TimetablePage: React.FC = () => { {currentLessons.length === 0 ? (
- +

No lessons scheduled

Add lessons to build your timetable

@@ -171,7 +171,7 @@ const TimetablePage: React.FC = () => {
{lesson.location && (
- + {lesson.location}
)}