diff --git a/public/images/grid-background.jpg b/public/images/grid-background.jpg new file mode 100644 index 0000000..e6f0e84 Binary files /dev/null and b/public/images/grid-background.jpg differ diff --git a/public/images/grid-background.png b/public/images/grid-background.png deleted file mode 100644 index f5c00c0..0000000 Binary files a/public/images/grid-background.png and /dev/null differ diff --git a/src/components/Header.jsx b/src/components/Header.jsx index deb40e6..e456c92 100644 --- a/src/components/Header.jsx +++ b/src/components/Header.jsx @@ -17,6 +17,9 @@ const Header = () => {
  • Login
  • +
  • + Assignment +
  • diff --git a/src/pages/AssignmentPage.jsx b/src/pages/AssignmentPage.jsx new file mode 100644 index 0000000..ede6235 --- /dev/null +++ b/src/pages/AssignmentPage.jsx @@ -0,0 +1,107 @@ +// Page - Assignment +import { useEffect, useState } from 'react'; +import '../scss/styles.scss'; + +const AssignmentPage = () => { + const [files, setFiles] = useState([]); + + useEffect(() => { + document.title = 'Assignment'; + }, []); + + const handleFileChange = (e) => { + if (e.target.files) { + const newFiles = Array.from(e.target.files); + setFiles(prevFiles => [...prevFiles, ...newFiles]); + } + }; + + const handleRemoveFile = (index) => { + setFiles(prevFiles => prevFiles.filter((_, i) => i !== index)); + }; + + const handleSubmit = (e) => { + e.preventDefault(); + // Here you would typically send the files to a server + console.log('Files to submit:', files); + alert('Assignment submitted successfully!'); + }; + + return ( +
    +
    +
    +

    Assignment Submission

    +
    +

    Due on Jan 16, 2025 11:59 PM

    +
    +
    + +
    +
    +

    Submit Assignment

    +

    ({files.length}) file(s) to submit

    +

    After uploading, you must click Submit to complete the submission.

    +
    + +
    +
    + + + +
    + + {files.length > 0 && ( +
    +

    Selected Files:

    +
      + {files.map((file, index) => ( +
    • + {file.name} + ({(file.size / 1024).toFixed(2)} KB) + +
    • + ))} +
    +
    + )} +
    + +
    +

    Comments

    + +
    + +
    + + +
    +
    +
    +
    + ); +}; + +export default AssignmentPage; diff --git a/src/routers/AppRouter.jsx b/src/routers/AppRouter.jsx index 09eac42..c4ff117 100644 --- a/src/routers/AppRouter.jsx +++ b/src/routers/AppRouter.jsx @@ -11,6 +11,7 @@ import HomePage from "../pages/HomePage"; import LoginPage from "../pages/LoginPage"; import PageCodeEditor from "../pages/CodeEditor"; import PageNotFound from "../pages/PageNotFound"; +import AssignmentPage from "../pages/AssignmentPage"; import Hero from "../components/Hero"; import Navbar from "../components/Navbar"; import Services from "../components/Services"; @@ -39,6 +40,7 @@ const AppRouter = () => { } /> + } /> } /> diff --git a/src/scss/page/_login.scss b/src/scss/page/_login.scss index 47d2f0e..145d026 100644 --- a/src/scss/page/_login.scss +++ b/src/scss/page/_login.scss @@ -29,7 +29,7 @@ body { background: transparent; - background-image: url("../../../public/images/grid-background.png"); + background-image: url("../../../public/images/grid-background.jpg"); background-size: cover; background-position: center; background-repeat: no-repeat; diff --git a/src/scss/page/assignment.scss b/src/scss/page/assignment.scss new file mode 100644 index 0000000..04c9baf --- /dev/null +++ b/src/scss/page/assignment.scss @@ -0,0 +1,198 @@ +// Assignment Page Styling + +.assignment-page { + display: flex; + flex-direction: column; + align-items: center; + padding: 2rem; + + section { + width: 100%; + max-width: 900px; + } + + .assignment-header { + margin-bottom: 2rem; + border-bottom: 1px solid #e0e0e0; + padding-bottom: 1rem; + + h2 { + font-size: 3rem; + margin-bottom: 1rem; + color: #ffffff; + } + + .due-date { + color: #c6c6c6; + font-size: 1.2rem; + } + } + + .assignment-container { + background-color: #fff; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + padding: 2rem; + + .assignment-info { + margin-bottom: 2rem; + + h3 { + font-size: 1.4rem; + margin-bottom: 0.5rem; + color: #333; + } + + .files-count { + font-size: 1rem; + margin-bottom: 0.5rem; + } + + .submission-note { + font-size: 0.9rem; + color: #666; + } + } + + .file-upload-section { + margin-bottom: 2rem; + + .upload-buttons { + display: flex; + gap: 1rem; + margin-bottom: 1.5rem; + flex-wrap: wrap; + + .file-upload-btn, + .record-audio-btn, + .record-video-btn { + background-color: #f5f5f5; + border: 1px solid #ddd; + border-radius: 4px; + padding: 0.6rem 1rem; + cursor: pointer; + font-size: 0.9rem; + transition: all 0.2s ease; + color: #333; + + &:hover { + background-color: #e9e9e9; + } + } + } + + .files-list { + background-color: #f9f9f9; + border-radius: 6px; + padding: 1rem; + + h4 { + margin-bottom: 0.8rem; + font-size: 1rem; + } + + ul { + list-style: none; + padding: 0; + + .file-item { + display: flex; + align-items: center; + padding: 0.5rem 0; + border-bottom: 1px solid #eee; + + &:last-child { + border-bottom: none; + } + + .file-name { + flex-grow: 1; + font-weight: 500; + } + + .file-size { + color: #777; + margin: 0 1rem; + font-size: 0.8rem; + } + + .remove-file-btn { + background-color: transparent; + border: none; + color: #ff5252; + cursor: pointer; + font-size: 0.8rem; + padding: 0.3rem 0.6rem; + + &:hover { + text-decoration: underline; + } + } + } + } + } + } + + .comments-section { + margin-bottom: 2rem; + + h4 { + margin-bottom: 0.8rem; + font-size: 1rem; + } + + textarea { + width: 100%; + border: 1px solid #ddd; + border-radius: 4px; + padding: 0.8rem; + font-family: inherit; + resize: vertical; + + &:focus { + outline: none; + border-color: #4a90e2; + } + } + } + + .submission-buttons { + display: flex; + gap: 1rem; + + .submit-btn, + .cancel-btn { + padding: 0.7rem 1.5rem; + border-radius: 4px; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; + } + + .submit-btn { + background-color: #4a90e2; + color: white; + border: none; + + &:hover { + background-color: #3a7bc8; + } + + &:disabled { + background-color: #a0c3e8; + cursor: not-allowed; + } + } + + .cancel-btn { + background-color: transparent; + border: 1px solid #ddd; + color: #666; + + &:hover { + background-color: #f5f5f5; + } + } + } + } +} diff --git a/src/scss/styles.scss b/src/scss/styles.scss index 6379fda..aeb88bb 100644 --- a/src/scss/styles.scss +++ b/src/scss/styles.scss @@ -13,6 +13,7 @@ @use "./page//home"; @use "./page//login"; @use "./page/code_editor"; +@use "./page/assignment"; // Utilities @use "./utilities/utility-classes";