| | <!DOCTYPE html> |
| | <html lang="en"> |
| | <head> |
| | <meta charset="UTF-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>ExamPro - Online Examination Platform</title> |
| | <script src="https://cdn.tailwindcss.com"></script> |
| | <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
| | <style> |
| | |
| | .question-editor { |
| | min-height: 150px; |
| | border: 1px solid #e2e8f0; |
| | padding: 1rem; |
| | border-radius: 0.375rem; |
| | } |
| | |
| | .exam-card:hover { |
| | transform: translateY(-2px); |
| | box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1); |
| | } |
| | |
| | .tab-content { |
| | display: none; |
| | } |
| | |
| | .tab-content.active { |
| | display: block; |
| | } |
| | |
| | |
| | @keyframes slideIn { |
| | from { transform: translateX(100%); } |
| | to { transform: translateX(0); } |
| | } |
| | |
| | .notification { |
| | animation: slideIn 0.3s ease-out; |
| | } |
| | </style> |
| | </head> |
| | <body class="bg-gray-50 font-sans"> |
| | |
| | <nav class="bg-indigo-700 text-white shadow-lg"> |
| | <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| | <div class="flex justify-between h-16 items-center"> |
| | <div class="flex items-center"> |
| | <div class="flex-shrink-0 flex items-center"> |
| | <i class="fas fa-graduation-cap text-2xl mr-2"></i> |
| | <span class="text-xl font-bold">ExamPro</span> |
| | </div> |
| | </div> |
| | <div class="hidden md:block"> |
| | <div class="ml-10 flex items-center space-x-4"> |
| | <a href="#" id="home-link" class="bg-indigo-800 text-white px-3 py-2 rounded-md text-sm font-medium">Home</a> |
| | <a href="#" id="exams-link" class="text-indigo-200 hover:bg-indigo-600 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Exams</a> |
| | <a href="#" id="results-link" class="text-indigo-200 hover:bg-indigo-600 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Results</a> |
| | <a href="#" id="profile-link" class="text-indigo-200 hover:bg-indigo-600 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Profile</a> |
| | </div> |
| | </div> |
| | <div class="flex items-center"> |
| | <button id="login-btn" class="bg-white text-indigo-700 px-4 py-1 rounded-md text-sm font-medium mr-2">Login</button> |
| | <button id="register-btn" class="bg-indigo-500 text-white px-4 py-1 rounded-md text-sm font-medium">Register</button> |
| | <div id="user-dropdown" class="hidden ml-3 relative"> |
| | <div> |
| | <button class="flex items-center text-sm text-white focus:outline-none" id="user-menu-button"> |
| | <span class="mr-2">John Doe</span> |
| | <img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt=""> |
| | </button> |
| | </div> |
| | <div id="dropdown-menu" class="hidden origin-top-right absolute right-0 mt-2 w-48 rounded-md shadow-lg py-1 bg-white ring-1 ring-black ring-opacity-5 focus:outline-none z-50"> |
| | <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Your Profile</a> |
| | <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Settings</a> |
| | <a href="#" class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">Sign out</a> |
| | </div> |
| | </div> |
| | </div> |
| | <div class="-mr-2 flex md:hidden"> |
| | <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-indigo-200 hover:text-white hover:bg-indigo-600 focus:outline-none" aria-controls="mobile-menu" aria-expanded="false"> |
| | <span class="sr-only">Open main menu</span> |
| | <i class="fas fa-bars"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </nav> |
| |
|
| | |
| | <main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"> |
| | |
| | <div id="login-modal" class="hidden fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full z-50"> |
| | <div class="relative top-20 mx-auto p-5 border w-96 shadow-lg rounded-md bg-white"> |
| | <div class="flex justify-between items-center mb-4"> |
| | <h3 class="text-lg font-medium text-gray-900">Login to ExamPro</h3> |
| | <button id="close-login-modal" class="text-gray-400 hover:text-gray-500"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | <form class="space-y-6"> |
| | <div> |
| | <label for="email" class="block text-sm font-medium text-gray-700">Email address</label> |
| | <div class="mt-1"> |
| | <input id="email" name="email" type="email" autocomplete="email" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"> |
| | </div> |
| | </div> |
| |
|
| | <div> |
| | <label for="password" class="block text-sm font-medium text-gray-700">Password</label> |
| | <div class="mt-1"> |
| | <input id="password" name="password" type="password" autocomplete="current-password" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"> |
| | </div> |
| | </div> |
| |
|
| | <div class="flex items-center justify-between"> |
| | <div class="flex items-center"> |
| | <input id="remember-me" name="remember-me" type="checkbox" class="h-4 w-4 text-indigo-600 focus:ring-indigo-500 border-gray-300 rounded"> |
| | <label for="remember-me" class="ml-2 block text-sm text-gray-900">Remember me</label> |
| | </div> |
| |
|
| | <div class="text-sm"> |
| | <a href="#" class="font-medium text-indigo-600 hover:text-indigo-500">Forgot your password?</a> |
| | </div> |
| | </div> |
| |
|
| | <div> |
| | <button type="submit" class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">Sign in</button> |
| | </div> |
| | </form> |
| | <div class="mt-4 text-center text-sm"> |
| | <p>Don't have an account? <a href="#" id="switch-to-register" class="text-indigo-600 hover:text-indigo-500">Register here</a></p> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div id="register-modal" class="hidden fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full z-50"> |
| | <div class="relative top-20 mx-auto p-5 border w-96 shadow-lg rounded-md bg-white"> |
| | <div class="flex justify-between items-center mb-4"> |
| | <h3 class="text-lg font-medium text-gray-900">Create an Account</h3> |
| | <button id="close-register-modal" class="text-gray-400 hover:text-gray-500"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | <form class="space-y-6"> |
| | <div> |
| | <label for="full-name" class="block text-sm font-medium text-gray-700">Full Name</label> |
| | <div class="mt-1"> |
| | <input id="full-name" name="full-name" type="text" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"> |
| | </div> |
| | </div> |
| |
|
| | <div> |
| | <label for="register-email" class="block text-sm font-medium text-gray-700">Email address</label> |
| | <div class="mt-1"> |
| | <input id="register-email" name="register-email" type="email" autocomplete="email" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"> |
| | </div> |
| | </div> |
| |
|
| | <div> |
| | <label for="register-password" class="block text-sm font-medium text-gray-700">Password</label> |
| | <div class="mt-1"> |
| | <input id="register-password" name="register-password" type="password" autocomplete="new-password" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"> |
| | </div> |
| | </div> |
| |
|
| | <div> |
| | <label for="confirm-password" class="block text-sm font-medium text-gray-700">Confirm Password</label> |
| | <div class="mt-1"> |
| | <input id="confirm-password" name="confirm-password" type="password" autocomplete="new-password" required class="appearance-none block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm placeholder-gray-400 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"> |
| | </div> |
| | </div> |
| |
|
| | <div> |
| | <label class="block text-sm font-medium text-gray-700">Account Type</label> |
| | <div class="mt-1 flex space-x-4"> |
| | <div class="flex items-center"> |
| | <input id="student-role" name="role" type="radio" checked class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <label for="student-role" class="ml-2 block text-sm text-gray-900">Student</label> |
| | </div> |
| | <div class="flex items-center"> |
| | <input id="teacher-role" name="role" type="radio" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <label for="teacher-role" class="ml-2 block text-sm text-gray-900">Teacher</label> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | <div> |
| | <button type="submit" class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">Register</button> |
| | </div> |
| | </form> |
| | <div class="mt-4 text-center text-sm"> |
| | <p>Already have an account? <a href="#" id="switch-to-login" class="text-indigo-600 hover:text-indigo-500">Login here</a></p> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div id="notification-area" class="fixed top-4 right-4 z-50 space-y-2"></div> |
| |
|
| | |
| | <div id="home-content" class="tab-content active"> |
| | <div class="bg-white shadow rounded-lg p-6 mb-8"> |
| | <h2 class="text-2xl font-bold text-gray-800 mb-4">Welcome to ExamPro</h2> |
| | <p class="text-gray-600 mb-6">Your complete online examination platform for students and teachers. Create, manage, and take exams with ease.</p> |
| | |
| | <div class="grid grid-cols-1 md:grid-cols-3 gap-6"> |
| | <div class="bg-indigo-50 p-6 rounded-lg"> |
| | <div class="flex items-center mb-4"> |
| | <div class="bg-indigo-100 p-3 rounded-full mr-4"> |
| | <i class="fas fa-book text-indigo-600 text-xl"></i> |
| | </div> |
| | <h3 class="text-lg font-semibold text-gray-800">For Students</h3> |
| | </div> |
| | <p class="text-gray-600">Take exams anytime, anywhere. Get instant results and detailed feedback on your performance.</p> |
| | </div> |
| | |
| | <div class="bg-purple-50 p-6 rounded-lg"> |
| | <div class="flex items-center mb-4"> |
| | <div class="bg-purple-100 p-3 rounded-full mr-4"> |
| | <i class="fas fa-chalkboard-teacher text-purple-600 text-xl"></i> |
| | </div> |
| | <h3 class="text-lg font-semibold text-gray-800">For Teachers</h3> |
| | </div> |
| | <p class="text-gray-600">Create comprehensive exams with various question types. Monitor student progress and performance.</p> |
| | </div> |
| | |
| | <div class="bg-green-50 p-6 rounded-lg"> |
| | <div class="flex items-center mb-4"> |
| | <div class="bg-green-100 p-3 rounded-full mr-4"> |
| | <i class="fas fa-chart-line text-green-600 text-xl"></i> |
| | </div> |
| | <h3 class="text-lg font-semibold text-gray-800">Analytics</h3> |
| | </div> |
| | <p class="text-gray-600">Get detailed analytics on exam performance, question difficulty, and student progress.</p> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="bg-white shadow rounded-lg p-6"> |
| | <h2 class="text-2xl font-bold text-gray-800 mb-4">Upcoming Exams</h2> |
| | <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> |
| | <div class="border border-gray-200 rounded-lg p-4 exam-card transition duration-300"> |
| | <div class="flex justify-between items-start mb-2"> |
| | <h3 class="font-semibold text-lg text-gray-800">Mathematics Midterm</h3> |
| | <span class="bg-yellow-100 text-yellow-800 text-xs px-2 py-1 rounded-full">Upcoming</span> |
| | </div> |
| | <p class="text-gray-600 text-sm mb-3">Algebra and Geometry concepts</p> |
| | <div class="flex items-center text-sm text-gray-500 mb-3"> |
| | <i class="far fa-calendar-alt mr-2"></i> |
| | <span>Due: May 15, 2023</span> |
| | </div> |
| | <div class="flex items-center text-sm text-gray-500"> |
| | <i class="far fa-clock mr-2"></i> |
| | <span>Duration: 60 minutes</span> |
| | </div> |
| | <button class="mt-4 w-full bg-indigo-600 text-white py-2 px-4 rounded-md text-sm hover:bg-indigo-700 transition duration-300">View Details</button> |
| | </div> |
| | |
| | <div class="border border-gray-200 rounded-lg p-4 exam-card transition duration-300"> |
| | <div class="flex justify-between items-start mb-2"> |
| | <h3 class="font-semibold text-lg text-gray-800">History Final</h3> |
| | <span class="bg-yellow-100 text-yellow-800 text-xs px-2 py-1 rounded-full">Upcoming</span> |
| | </div> |
| | <p class="text-gray-600 text-sm mb-3">World History from 1900-2000</p> |
| | <div class="flex items-center text-sm text-gray-500 mb-3"> |
| | <i class="far fa-calendar-alt mr-2"></i> |
| | <span>Due: June 5, 2023</span> |
| | </div> |
| | <div class="flex items-center text-sm text-gray-500"> |
| | <i class="far fa-clock mr-2"></i> |
| | <span>Duration: 90 minutes</span> |
| | </div> |
| | <button class="mt-4 w-full bg-indigo-600 text-white py-2 px-4 rounded-md text-sm hover:bg-indigo-700 transition duration-300">View Details</button> |
| | </div> |
| | |
| | <div class="border border-gray-200 rounded-lg p-4 exam-card transition duration-300"> |
| | <div class="flex justify-between items-start mb-2"> |
| | <h3 class="font-semibold text-lg text-gray-800">Science Quiz</h3> |
| | <span class="bg-green-100 text-green-800 text-xs px-2 py-1 rounded-full">Available</span> |
| | </div> |
| | <p class="text-gray-600 text-sm mb-3">Basic Chemistry and Physics</p> |
| | <div class="flex items-center text-sm text-gray-500 mb-3"> |
| | <i class="far fa-calendar-alt mr-2"></i> |
| | <span>Due: May 10, 2023</span> |
| | </div> |
| | <div class="flex items-center text-sm text-gray-500"> |
| | <i class="far fa-clock mr-2"></i> |
| | <span>Duration: 30 minutes</span> |
| | </div> |
| | <button class="mt-4 w-full bg-indigo-600 text-white py-2 px-4 rounded-md text-sm hover:bg-indigo-700 transition duration-300">Start Exam</button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div id="exams-content" class="tab-content"> |
| | <div class="bg-white shadow rounded-lg p-6 mb-8"> |
| | <div class="flex justify-between items-center mb-6"> |
| | <h2 class="text-2xl font-bold text-gray-800">Available Exams</h2> |
| | <div class="flex space-x-2"> |
| | <button id="create-exam-btn" class="bg-green-600 text-white px-4 py-2 rounded-md text-sm font-medium hover:bg-green-700 hidden">Create Exam</button> |
| | <div class="relative"> |
| | <select class="appearance-none bg-white border border-gray-300 rounded-md pl-3 pr-8 py-2 text-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <option>All Subjects</option> |
| | <option>Mathematics</option> |
| | <option>Science</option> |
| | <option>History</option> |
| | <option>Literature</option> |
| | </select> |
| | <div class="pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700"> |
| | <i class="fas fa-chevron-down text-xs"></i> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="overflow-x-auto"> |
| | <table class="min-w-full divide-y divide-gray-200"> |
| | <thead class="bg-gray-50"> |
| | <tr> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Exam Title</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Subject</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Due Date</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Duration</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Status</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Actions</th> |
| | </tr> |
| | </thead> |
| | <tbody class="bg-white divide-y divide-gray-200"> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="font-medium text-gray-900">Mathematics Midterm</div> |
| | <div class="text-sm text-gray-500">Algebra and Geometry</div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Mathematics</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">May 15, 2023</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">60 min</td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-yellow-100 text-yellow-800">Upcoming</span> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm font-medium"> |
| | <button class="text-indigo-600 hover:text-indigo-900 mr-3">View</button> |
| | <button class="text-green-600 hover:text-green-900">Start</button> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="font-medium text-gray-900">Science Quiz</div> |
| | <div class="text-sm text-gray-500">Basic Chemistry</div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Science</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">May 10, 2023</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">30 min</td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">Available</span> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm font-medium"> |
| | <button class="text-indigo-600 hover:text-indigo-900 mr-3">View</button> |
| | <button class="text-green-600 hover:text-green-900">Start</button> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <div class="font-medium text-gray-900">History Final</div> |
| | <div class="text-sm text-gray-500">World History 1900-2000</div> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">History</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">June 5, 2023</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">90 min</td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-yellow-100 text-yellow-800">Upcoming</span> |
| | </td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm font-medium"> |
| | <button class="text-indigo-600 hover:text-indigo-900 mr-3">View</button> |
| | <button class="text-green-600 hover:text-green-900">Start</button> |
| | </td> |
| | </tr> |
| | </tbody> |
| | </table> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div id="results-content" class="tab-content"> |
| | <div class="bg-white shadow rounded-lg p-6"> |
| | <h2 class="text-2xl font-bold text-gray-800 mb-6">Exam Results</h2> |
| | |
| | <div class="mb-6"> |
| | <div class="flex items-center justify-between mb-4"> |
| | <h3 class="text-lg font-semibold text-gray-800">Completed Exams</h3> |
| | <div class="relative"> |
| | <select class="appearance-none bg-white border border-gray-300 rounded-md pl-3 pr-8 py-2 text-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <option>All Subjects</option> |
| | <option>Mathematics</option> |
| | <option>Science</option> |
| | <option>History</option> |
| | </select> |
| | <div class="pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700"> |
| | <i class="fas fa-chevron-down text-xs"></i> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> |
| | <div class="border border-gray-200 rounded-lg p-4"> |
| | <div class="flex justify-between items-start mb-2"> |
| | <h4 class="font-semibold text-gray-800">Science Midterm</h4> |
| | <span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-full">Completed</span> |
| | </div> |
| | <p class="text-gray-600 text-sm mb-3">Basic Physics and Chemistry</p> |
| | <div class="flex justify-between items-center mb-2"> |
| | <span class="text-sm text-gray-500">Score</span> |
| | <span class="font-semibold">85/100</span> |
| | </div> |
| | <div class="flex justify-between items-center mb-2"> |
| | <span class="text-sm text-gray-500">Percentage</span> |
| | <span class="font-semibold">85%</span> |
| | </div> |
| | <div class="flex justify-between items-center mb-4"> |
| | <span class="text-sm text-gray-500">Date Taken</span> |
| | <span class="text-sm">Apr 20, 2023</span> |
| | </div> |
| | <button class="w-full bg-indigo-600 text-white py-2 px-4 rounded-md text-sm hover:bg-indigo-700">View Details</button> |
| | </div> |
| | |
| | <div class="border border-gray-200 rounded-lg p-4"> |
| | <div class="flex justify-between items-start mb-2"> |
| | <h4 class="font-semibold text-gray-800">Literature Quiz</h4> |
| | <span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-full">Completed</span> |
| | </div> |
| | <p class="text-gray-600 text-sm mb-3">Shakespeare and Modern Poetry</p> |
| | <div class="flex justify-between items-center mb-2"> |
| | <span class="text-sm text-gray-500">Score</span> |
| | <span class="font-semibold">92/100</span> |
| | </div> |
| | <div class="flex justify-between items-center mb-2"> |
| | <span class="text-sm text-gray-500">Percentage</span> |
| | <span class="font-semibold">92%</span> |
| | </div> |
| | <div class="flex justify-between items-center mb-4"> |
| | <span class="text-sm text-gray-500">Date Taken</span> |
| | <span class="text-sm">Mar 15, 2023</span> |
| | </div> |
| | <button class="w-full bg-indigo-600 text-white py-2 px-4 rounded-md text-sm hover:bg-indigo-700">View Details</button> |
| | </div> |
| | |
| | <div class="border border-gray-200 rounded-lg p-4"> |
| | <div class="flex justify-between items-start mb-2"> |
| | <h4 class="font-semibold text-gray-800">Algebra Test</h4> |
| | <span class="bg-blue-100 text-blue-800 text-xs px-2 py-1 rounded-full">Completed</span> |
| | </div> |
| | <p class="text-gray-600 text-sm mb-3">Linear Equations and Functions</p> |
| | <div class="flex justify-between items-center mb-2"> |
| | <span class="text-sm text-gray-500">Score</span> |
| | <span class="font-semibold">78/100</span> |
| | </div> |
| | <div class="flex justify-between items-center mb-2"> |
| | <span class="text-sm text-gray-500">Percentage</span> |
| | <span class="font-semibold">78%</span> |
| | </div> |
| | <div class="flex justify-between items-center mb-4"> |
| | <span class="text-sm text-gray-500">Date Taken</span> |
| | <span class="text-sm">Feb 28, 2023</span> |
| | </div> |
| | <button class="w-full bg-indigo-600 text-white py-2 px-4 rounded-md text-sm hover:bg-indigo-700">View Details</button> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div> |
| | <h3 class="text-lg font-semibold text-gray-800 mb-4">Performance Overview</h3> |
| | <div class="bg-gray-50 p-4 rounded-lg"> |
| | <div class="h-64 flex items-center justify-center"> |
| | <p class="text-gray-500">Performance chart would be displayed here</p> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div id="profile-content" class="tab-content"> |
| | <div class="bg-white shadow rounded-lg p-6"> |
| | <div class="flex flex-col md:flex-row"> |
| | <div class="md:w-1/3 mb-6 md:mb-0"> |
| | <div class="flex flex-col items-center"> |
| | <img class="h-32 w-32 rounded-full mb-4" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="Profile picture"> |
| | <h3 class="text-xl font-semibold text-gray-800">John Doe</h3> |
| | <p class="text-gray-600">Student</p> |
| | <button class="mt-4 bg-indigo-600 text-white py-2 px-4 rounded-md text-sm hover:bg-indigo-700">Change Photo</button> |
| | </div> |
| | </div> |
| | |
| | <div class="md:w-2/3 md:pl-8"> |
| | <h3 class="text-lg font-semibold text-gray-800 mb-4">Personal Information</h3> |
| | <form class="space-y-4"> |
| | <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> |
| | <div> |
| | <label for="first-name" class="block text-sm font-medium text-gray-700">First Name</label> |
| | <input type="text" id="first-name" value="John" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | <div> |
| | <label for="last-name" class="block text-sm font-medium text-gray-700">Last Name</label> |
| | <input type="text" id="last-name" value="Doe" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | </div> |
| | |
| | <div> |
| | <label for="email" class="block text-sm font-medium text-gray-700">Email</label> |
| | <input type="email" id="email" value="john.doe@example.com" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | |
| | <div> |
| | <label for="bio" class="block text-sm font-medium text-gray-700">Bio</label> |
| | <textarea id="bio" rows="3" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500">Computer Science student interested in web development and machine learning.</textarea> |
| | </div> |
| | |
| | <div class="pt-4 border-t border-gray-200"> |
| | <h3 class="text-lg font-semibold text-gray-800 mb-4">Change Password</h3> |
| | <div class="space-y-4"> |
| | <div> |
| | <label for="current-password" class="block text-sm font-medium text-gray-700">Current Password</label> |
| | <input type="password" id="current-password" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | <div> |
| | <label for="new-password" class="block text-sm font-medium text-gray-700">New Password</label> |
| | <input type="password" id="new-password" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | <div> |
| | <label for="confirm-new-password" class="block text-sm font-medium text-gray-700">Confirm New Password</label> |
| | <input type="password" id="confirm-new-password" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="flex justify-end pt-4"> |
| | <button type="button" class="bg-white py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">Cancel</button> |
| | <button type="submit" class="ml-3 inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">Save Changes</button> |
| | </div> |
| | </form> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div id="exam-creation-content" class="tab-content hidden"> |
| | <div class="bg-white shadow rounded-lg p-6"> |
| | <div class="flex justify-between items-center mb-6"> |
| | <h2 class="text-2xl font-bold text-gray-800">Create New Exam</h2> |
| | <button id="save-exam-btn" class="bg-green-600 text-white px-4 py-2 rounded-md text-sm font-medium hover:bg-green-700">Save Exam</button> |
| | </div> |
| | |
| | <div class="space-y-6"> |
| | <div class="grid grid-cols-1 md:grid-cols-2 gap-6"> |
| | <div> |
| | <label for="exam-title" class="block text-sm font-medium text-gray-700">Exam Title</label> |
| | <input type="text" id="exam-title" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500" placeholder="e.g. Midterm Exam"> |
| | </div> |
| | |
| | <div> |
| | <label for="exam-subject" class="block text-sm font-medium text-gray-700">Subject</label> |
| | <select id="exam-subject" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <option>Mathematics</option> |
| | <option>Science</option> |
| | <option>History</option> |
| | <option>Literature</option> |
| | <option>Computer Science</option> |
| | </select> |
| | </div> |
| | </div> |
| | |
| | <div class="grid grid-cols-1 md:grid-cols-3 gap-6"> |
| | <div> |
| | <label for="exam-date" class="block text-sm font-medium text-gray-700">Exam Date</label> |
| | <input type="date" id="exam-date" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | |
| | <div> |
| | <label for="exam-duration" class="block text-sm font-medium text-gray-700">Duration (minutes)</label> |
| | <input type="number" id="exam-duration" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500" placeholder="60"> |
| | </div> |
| | |
| | <div> |
| | <label for="exam-total-marks" class="block text-sm font-medium text-gray-700">Total Marks</label> |
| | <input type="number" id="exam-total-marks" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500" placeholder="100"> |
| | </div> |
| | </div> |
| | |
| | <div> |
| | <label for="exam-description" class="block text-sm font-medium text-gray-700">Description</label> |
| | <textarea id="exam-description" rows="3" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500" placeholder="Brief description of the exam content"></textarea> |
| | </div> |
| | |
| | <div> |
| | <label class="block text-sm font-medium text-gray-700">Instructions</label> |
| | <div id="exam-instructions" class="mt-1 space-y-2"> |
| | <div class="flex items-start"> |
| | <input type="text" value="Answer all questions" class="flex-1 border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <button class="ml-2 text-red-500 hover:text-red-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | <div class="flex items-start"> |
| | <input type="text" value="No calculators allowed" class="flex-1 border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <button class="ml-2 text-red-500 hover:text-red-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | </div> |
| | <button id="add-instruction-btn" class="mt-2 inline-flex items-center text-sm text-indigo-600 hover:text-indigo-500"> |
| | <i class="fas fa-plus mr-1"></i> Add Instruction |
| | </button> |
| | </div> |
| | |
| | <div class="pt-4 border-t border-gray-200"> |
| | <div class="flex justify-between items-center mb-4"> |
| | <h3 class="text-lg font-semibold text-gray-800">Questions</h3> |
| | <div class="relative"> |
| | <button id="add-question-btn" class="bg-indigo-600 text-white px-4 py-2 rounded-md text-sm font-medium hover:bg-indigo-700 flex items-center"> |
| | <i class="fas fa-plus mr-2"></i> Add Question |
| | </button> |
| | </div> |
| | </div> |
| | |
| | <div id="questions-container" class="space-y-6"> |
| | |
| | <div class="border border-gray-200 rounded-lg p-4 question-item"> |
| | <div class="flex justify-between items-start mb-4"> |
| | <h4 class="font-medium text-gray-800">Question 1</h4> |
| | <div class="flex space-x-2"> |
| | <select class="question-type border border-gray-300 rounded-md pl-2 pr-8 py-1 text-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <option value="mcq">Multiple Choice</option> |
| | <option value="true-false">True/False</option> |
| | <option value="short-answer">Short Answer</option> |
| | <option value="essay">Essay</option> |
| | <option value="matching">Matching</option> |
| | </select> |
| | <button class="text-red-500 hover:text-red-700 delete-question"> |
| | <i class="fas fa-trash"></i> |
| | </button> |
| | </div> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <label class="block text-sm font-medium text-gray-700 mb-1">Question Text</label> |
| | <div class="question-editor bg-white">What is the capital of France?</div> |
| | </div> |
| | |
| | <div class="question-options space-y-2"> |
| | <div class="flex items-center"> |
| | <input type="radio" name="q1-answer" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <input type="text" value="Paris" class="ml-2 flex-1 border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <button class="ml-2 text-red-500 hover:text-red-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | <div class="flex items-center"> |
| | <input type="radio" name="q1-answer" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <input type="text" value="London" class="ml-2 flex-1 border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <button class="ml-2 text-red-500 hover:text-red-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | <div class="flex items-center"> |
| | <input type="radio" name="q1-answer" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <input type="text" value="Berlin" class="ml-2 flex-1 border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <button class="ml-2 text-red-500 hover:text-red-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | </div> |
| | <button class="mt-2 inline-flex items-center text-sm text-indigo-600 hover:text-indigo-500 add-option-btn"> |
| | <i class="fas fa-plus mr-1"></i> Add Option |
| | </button> |
| | |
| | <div class="mt-4 grid grid-cols-1 md:grid-cols-2 gap-4"> |
| | <div> |
| | <label for="q1-marks" class="block text-sm font-medium text-gray-700">Marks</label> |
| | <input type="number" id="q1-marks" value="1" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | <div> |
| | <label for="q1-difficulty" class="block text-sm font-medium text-gray-700">Difficulty</label> |
| | <select id="q1-difficulty" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <option>Easy</option> |
| | <option selected>Medium</option> |
| | <option>Hard</option> |
| | </select> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="border border-gray-200 rounded-lg p-4 question-item"> |
| | <div class="flex justify-between items-start mb-4"> |
| | <h4 class="font-medium text-gray-800">Question 2</h4> |
| | <div class="flex space-x-2"> |
| | <select class="question-type border border-gray-300 rounded-md pl-2 pr-8 py-1 text-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <option value="mcq">Multiple Choice</option> |
| | <option value="true-false" selected>True/False</option> |
| | <option value="short-answer">Short Answer</option> |
| | <option value="essay">Essay</option> |
| | <option value="matching">Matching</option> |
| | </select> |
| | <button class="text-red-500 hover:text-red-700 delete-question"> |
| | <i class="fas fa-trash"></i> |
| | </button> |
| | </div> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <label class="block text-sm font-medium text-gray-700 mb-1">Question Text</label> |
| | <div class="question-editor bg-white">The Earth is flat.</div> |
| | </div> |
| | |
| | <div class="question-options space-y-2"> |
| | <div class="flex items-center"> |
| | <input type="radio" name="q2-answer" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300" checked> |
| | <span class="ml-2">True</span> |
| | </div> |
| | <div class="flex items-center"> |
| | <input type="radio" name="q2-answer" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <span class="ml-2">False</span> |
| | </div> |
| | </div> |
| | |
| | <div class="mt-4 grid grid-cols-1 md:grid-cols-2 gap-4"> |
| | <div> |
| | <label for="q2-marks" class="block text-sm font-medium text-gray-700">Marks</label> |
| | <input type="number" id="q2-marks" value="1" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | </div> |
| | <div> |
| | <label for="q2-difficulty" class="block text-sm font-medium text-gray-700">Difficulty</label> |
| | <select id="q2-difficulty" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <option>Easy</option> |
| | <option selected>Medium</option> |
| | <option>Hard</option> |
| | </select> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div id="exam-taking-content" class="tab-content hidden"> |
| | <div class="bg-white shadow rounded-lg p-6"> |
| | <div class="flex justify-between items-center mb-6"> |
| | <div> |
| | <h2 class="text-2xl font-bold text-gray-800">Science Quiz</h2> |
| | <p class="text-gray-600">Basic Chemistry and Physics</p> |
| | </div> |
| | <div class="flex items-center"> |
| | <div class="bg-gray-100 px-4 py-2 rounded-md mr-4"> |
| | <span class="font-medium">Time Left: </span> |
| | <span id="exam-timer" class="font-bold">59:45</span> |
| | </div> |
| | <button id="submit-exam-btn" class="bg-green-600 text-white px-4 py-2 rounded-md text-sm font-medium hover:bg-green-700">Submit Exam</button> |
| | </div> |
| | </div> |
| | |
| | <div class="border-t border-gray-200 pt-4"> |
| | <div class="mb-6"> |
| | <h3 class="text-lg font-semibold text-gray-800 mb-2">Instructions</h3> |
| | <ul class="list-disc pl-5 space-y-1 text-gray-700"> |
| | <li>Answer all questions</li> |
| | <li>No calculators allowed</li> |
| | <li>You have 60 minutes to complete the exam</li> |
| | </ul> |
| | </div> |
| | |
| | <div id="exam-questions" class="space-y-8"> |
| | |
| | <div class="border-b border-gray-200 pb-6 question-container"> |
| | <div class="flex justify-between items-start mb-4"> |
| | <div class="flex items-center"> |
| | <span class="font-medium text-gray-800 mr-2">Question 1</span> |
| | <span class="text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full">1 point</span> |
| | </div> |
| | <button class="text-indigo-600 hover:text-indigo-800 text-sm font-medium flag-question" data-question="1"> |
| | <i class="far fa-flag mr-1"></i> Flag |
| | </button> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <p class="text-gray-800">What is the capital of France?</p> |
| | </div> |
| | |
| | <div class="space-y-2"> |
| | <div class="flex items-center"> |
| | <input type="radio" id="q1-option1" name="q1" value="Paris" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <label for="q1-option1" class="ml-3 block text-gray-700">Paris</label> |
| | </div> |
| | <div class="flex items-center"> |
| | <input type="radio" id="q1-option2" name="q1" value="London" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <label for="q1-option2" class="ml-3 block text-gray-700">London</label> |
| | </div> |
| | <div class="flex items-center"> |
| | <input type="radio" id="q1-option3" name="q1" value="Berlin" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <label for="q1-option3" class="ml-3 block text-gray-700">Berlin</label> |
| | </div> |
| | <div class="flex items-center"> |
| | <input type="radio" id="q1-option4" name="q1" value="Madrid" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <label for="q1-option4" class="ml-3 block text-gray-700">Madrid</label> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="border-b border-gray-200 pb-6 question-container"> |
| | <div class="flex justify-between items-start mb-4"> |
| | <div class="flex items-center"> |
| | <span class="font-medium text-gray-800 mr-2">Question 2</span> |
| | <span class="text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full">1 point</span> |
| | </div> |
| | <button class="text-indigo-600 hover:text-indigo-800 text-sm font-medium flag-question" data-question="2"> |
| | <i class="far fa-flag mr-1"></i> Flag |
| | </button> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <p class="text-gray-800">The Earth is flat.</p> |
| | </div> |
| | |
| | <div class="space-y-2"> |
| | <div class="flex items-center"> |
| | <input type="radio" id="q2-true" name="q2" value="true" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <label for="q2-true" class="ml-3 block text-gray-700">True</label> |
| | </div> |
| | <div class="flex items-center"> |
| | <input type="radio" id="q2-false" name="q2" value="false" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <label for="q2-false" class="ml-3 block text-gray-700">False</label> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="border-b border-gray-200 pb-6 question-container"> |
| | <div class="flex justify-between items-start mb-4"> |
| | <div class="flex items-center"> |
| | <span class="font-medium text-gray-800 mr-2">Question 3</span> |
| | <span class="text-xs bg-blue-100 text-blue-800 px-2 py-1 rounded-full">2 points</span> |
| | </div> |
| | <button class="text-indigo-600 hover:text-indigo-800 text-sm font-medium flag-question" data-question="3"> |
| | <i class="far fa-flag mr-1"></i> Flag |
| | </button> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <p class="text-gray-800">Explain the difference between an element and a compound.</p> |
| | </div> |
| | |
| | <div> |
| | <textarea rows="4" class="shadow-sm focus:ring-indigo-500 focus:border-indigo-500 block w-full sm:text-sm border border-gray-300 rounded-md" placeholder="Your answer..."></textarea> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="mt-8 flex justify-between items-center"> |
| | <button id="prev-question-btn" class="bg-white py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 disabled:opacity-50" disabled> |
| | Previous Question |
| | </button> |
| | <div class="flex space-x-2"> |
| | <button class="bg-gray-100 text-gray-800 px-3 py-1 rounded-md text-sm font-medium hover:bg-gray-200 question-nav-btn" data-question="1">1</button> |
| | <button class="bg-gray-100 text-gray-800 px-3 py-1 rounded-md text-sm font-medium hover:bg-gray-200 question-nav-btn" data-question="2">2</button> |
| | <button class="bg-gray-100 text-gray-800 px-3 py-1 rounded-md text-sm font-medium hover:bg-gray-200 question-nav-btn" data-question="3">3</button> |
| | </div> |
| | <button id="next-question-btn" class="bg-indigo-600 text-white py-2 px-4 rounded-md shadow-sm text-sm font-medium hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"> |
| | Next Question |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </main> |
| |
|
| | |
| | <footer class="bg-gray-800 text-white py-8"> |
| | <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| | <div class="grid grid-cols-1 md:grid-cols-4 gap-8"> |
| | <div> |
| | <h3 class="text-lg font-semibold mb-4">ExamPro</h3> |
| | <p class="text-gray-400">The complete online examination platform for students and teachers.</p> |
| | </div> |
| | <div> |
| | <h3 class="text-lg font-semibold mb-4">For Students</h3> |
| | <ul class="space-y-2"> |
| | <li><a href="#" class="text-gray-400 hover:text-white">Take Exams</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-white">View Results</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-white">Study Resources</a></li> |
| | </ul> |
| | </div> |
| | <div> |
| | <h3 class="text-lg font-semibold mb-4">For Teachers</h3> |
| | <ul class="space-y-2"> |
| | <li><a href="#" class="text-gray-400 hover:text-white">Create Exams</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-white">Manage Classes</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-white">Analytics</a></li> |
| | </ul> |
| | </div> |
| | <div> |
| | <h3 class="text-lg font-semibold mb-4">Contact Us</h3> |
| | <ul class="space-y-2"> |
| | <li class="text-gray-400"><i class="fas fa-envelope mr-2"></i> support@exampro.com</li> |
| | <li class="text-gray-400"><i class="fas fa-phone mr-2"></i> +1 (555) 123-4567</li> |
| | <li class="text-gray-400"><i class="fas fa-map-marker-alt mr-2"></i> 123 Education St, Learning City</li> |
| | </ul> |
| | </div> |
| | </div> |
| | <div class="border-t border-gray-700 mt-8 pt-8 flex flex-col md:flex-row justify-between items-center"> |
| | <p class="text-gray-400">© 2023 ExamPro. All rights reserved.</p> |
| | <div class="flex space-x-6 mt-4 md:mt-0"> |
| | <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-facebook-f"></i></a> |
| | <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-twitter"></i></a> |
| | <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-instagram"></i></a> |
| | <a href="#" class="text-gray-400 hover:text-white"><i class="fab fa-linkedin-in"></i></a> |
| | </div> |
| | </div> |
| | </div> |
| | </footer> |
| |
|
| | <script> |
| | |
| | const loginBtn = document.getElementById('login-btn'); |
| | const registerBtn = document.getElementById('register-btn'); |
| | const loginModal = document.getElementById('login-modal'); |
| | const registerModal = document.getElementById('register-modal'); |
| | const closeLoginModal = document.getElementById('close-login-modal'); |
| | const closeRegisterModal = document.getElementById('close-register-modal'); |
| | const switchToRegister = document.getElementById('switch-to-register'); |
| | const switchToLogin = document.getElementById('switch-to-login'); |
| | const notificationArea = document.getElementById('notification-area'); |
| | const createExamBtn = document.getElementById('create-exam-btn'); |
| | const examCreationContent = document.getElementById('exam-creation-content'); |
| | const saveExamBtn = document.getElementById('save-exam-btn'); |
| | const addInstructionBtn = document.getElementById('add-instruction-btn'); |
| | const examInstructions = document.getElementById('exam-instructions'); |
| | const addQuestionBtn = document.getElementById('add-question-btn'); |
| | const questionsContainer = document.getElementById('questions-container'); |
| | const submitExamBtn = document.getElementById('submit-exam-btn'); |
| | const examTakingContent = document.getElementById('exam-taking-content'); |
| | const prevQuestionBtn = document.getElementById('prev-question-btn'); |
| | const nextQuestionBtn = document.getElementById('next-question-btn'); |
| | const questionNavBtns = document.querySelectorAll('.question-nav-btn'); |
| | const flagQuestions = document.querySelectorAll('.flag-question'); |
| | const examTimer = document.getElementById('exam-timer'); |
| | |
| | |
| | const tabLinks = { |
| | 'home-link': 'home-content', |
| | 'exams-link': 'exams-content', |
| | 'results-link': 'results-content', |
| | 'profile-link': 'profile-content' |
| | }; |
| | |
| | |
| | let currentUser = null; |
| | let isTeacher = false; |
| | |
| | |
| | document.addEventListener('DOMContentLoaded', () => { |
| | |
| | Object.keys(tabLinks).forEach(linkId => { |
| | document.getElementById(linkId).addEventListener('click', (e) => { |
| | e.preventDefault(); |
| | |
| | document.querySelectorAll('.tab-content').forEach(tab => { |
| | tab.classList.remove('active'); |
| | }); |
| | |
| | document.getElementById(tabLinks[linkId]).classList.add('active'); |
| | |
| | |
| | document.querySelectorAll('nav a').forEach(navLink => { |
| | navLink.classList.remove('bg-indigo-800', 'text-white'); |
| | navLink.classList.add('text-indigo-200', 'hover:bg-indigo-600', 'hover:text-white'); |
| | }); |
| | e.target.classList.add('bg-indigo-800', 'text-white'); |
| | e.target.classList.remove('text-indigo-200', 'hover:bg-indigo-600', 'hover:text-white'); |
| | }); |
| | }); |
| | |
| | |
| | loginBtn.addEventListener('click', () => loginModal.classList.remove('hidden')); |
| | registerBtn.addEventListener('click', () => registerModal.classList.remove('hidden')); |
| | closeLoginModal.addEventListener('click', () => loginModal.classList.add('hidden')); |
| | closeRegisterModal.addEventListener('click', () => registerModal.classList.add('hidden')); |
| | switchToRegister.addEventListener('click', (e) => { |
| | e.preventDefault(); |
| | loginModal.classList.add('hidden'); |
| | registerModal.classList.remove('hidden'); |
| | }); |
| | switchToLogin.addEventListener('click', (e) => { |
| | e.preventDefault(); |
| | registerModal.classList.add('hidden'); |
| | loginModal.classList.remove('hidden'); |
| | }); |
| | |
| | |
| | const loginForm = loginModal.querySelector('form'); |
| | loginForm.addEventListener('submit', (e) => { |
| | e.preventDefault(); |
| | const email = document.getElementById('email').value; |
| | const password = document.getElementById('password').value; |
| | |
| | |
| | currentUser = { |
| | name: 'John Doe', |
| | email: email, |
| | role: isTeacher ? 'teacher' : 'student' |
| | }; |
| | |
| | loginModal.classList.add('hidden'); |
| | showNotification('Login successful!', 'success'); |
| | |
| | |
| | loginBtn.classList.add('hidden'); |
| | registerBtn.classList.add('hidden'); |
| | document.getElementById('user-dropdown').classList.remove('hidden'); |
| | |
| | |
| | if (isTeacher) { |
| | createExamBtn.classList.remove('hidden'); |
| | } |
| | }); |
| | |
| | |
| | const registerForm = registerModal.querySelector('form'); |
| | registerForm.addEventListener('submit', (e) => { |
| | e.preventDefault(); |
| | const fullName = document.getElementById('full-name').value; |
| | const email = document.getElementById('register-email').value; |
| | const password = document.getElementById('register-password').value; |
| | const confirmPassword = document.getElementById('confirm-password').value; |
| | isTeacher = document.getElementById('teacher-role').checked; |
| | |
| | if (password !== confirmPassword) { |
| | showNotification('Passwords do not match!', 'error'); |
| | return; |
| | } |
| | |
| | |
| | currentUser = { |
| | name: fullName, |
| | email: email, |
| | role: isTeacher ? 'teacher' : 'student' |
| | }; |
| | |
| | registerModal.classList.add('hidden'); |
| | showNotification('Registration successful! Please login.', 'success'); |
| | |
| | |
| | document.getElementById('email').value = email; |
| | }); |
| | |
| | |
| | createExamBtn.addEventListener('click', () => { |
| | |
| | document.querySelectorAll('.tab-content').forEach(tab => { |
| | tab.classList.remove('active'); |
| | }); |
| | |
| | examCreationContent.classList.remove('hidden'); |
| | examCreationContent.classList.add('active'); |
| | }); |
| | |
| | saveExamBtn.addEventListener('click', () => { |
| | showNotification('Exam saved successfully!', 'success'); |
| | |
| | document.getElementById('exams-link').click(); |
| | }); |
| | |
| | addInstructionBtn.addEventListener('click', (e) => { |
| | e.preventDefault(); |
| | const newInstruction = document.createElement('div'); |
| | newInstruction.className = 'flex items-start'; |
| | newInstruction.innerHTML = ` |
| | <input type="text" class="flex-1 border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500" placeholder="New instruction"> |
| | <button class="ml-2 text-red-500 hover:text-red-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | `; |
| | examInstructions.appendChild(newInstruction); |
| | |
| | |
| | newInstruction.querySelector('button').addEventListener('click', () => { |
| | newInstruction.remove(); |
| | }); |
| | }); |
| | |
| | addQuestionBtn.addEventListener('click', () => { |
| | const questionCount = document.querySelectorAll('.question-item').length + 1; |
| | const newQuestion = document.createElement('div'); |
| | newQuestion.className = 'border border-gray-200 rounded-lg p-4 question-item'; |
| | newQuestion.innerHTML = ` |
| | <div class="flex justify-between items-start mb-4"> |
| | <h4 class="font-medium text-gray-800">Question ${questionCount}</h4> |
| | <div class="flex space-x-2"> |
| | <select class="question-type border border-gray-300 rounded-md pl-2 pr-8 py-1 text-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <option value="mcq">Multiple Choice</option> |
| | <option value="true-false">True/False</option> |
| | <option value="short-answer">Short Answer</option> |
| | <option value="essay">Essay</option> |
| | <option value="matching">Matching</option> |
| | </select> |
| | <button class="text-red-500 hover:text-red-700 delete-question"> |
| | <i class="fas fa-trash"></i> |
| | </button> |
| | </div> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <label class="block text-sm font-medium text-gray-700 mb-1">Question Text</label> |
| | <div class="question-editor bg-white" contenteditable="true">Enter your question here...</div> |
| | </div> |
| | |
| | <div class="question-options space-y-2"> |
| | <div class="flex items-center"> |
| | <input type="radio" name="q${questionCount}-answer" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <input type="text" value="Option 1" class="ml-2 flex-1 border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <button class="ml-2 text-red-500 hover:text-red-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | <div class="flex items-center"> |
| | <input type="radio" name="q${questionCount}-answer" class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300"> |
| | <input type="text" value="Option 2" class="ml-2 flex-1 border border-gray-300 rounded-md shadow-sm py-1 px-2 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| | <button class="ml-2 text-red-500 hover:text-red-700"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | </div> |
| | <button class="mt-2 inline-flex items-center text-sm text-indigo-600 hover:text-indigo-500 add-option-btn"> |
| | <i class="fas fa-plus mr-1"></i> Add Option |
| | </button> |
| | |
| | <div class="mt-4 grid grid-cols-1 md:grid-cols-2 gap-4"> |
| | <div> |
| | |
| | <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=galipalli/test4ai" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| | </html> |