diff --git a/gradesa/public/logo_placeholder.png b/gradesa/public/logo_placeholder.png new file mode 100644 index 0000000..a190d20 Binary files /dev/null and b/gradesa/public/logo_placeholder.png differ diff --git a/gradesa/src/app/layout.js b/gradesa/src/app/layout.js index 66c5e12..fc061aa 100644 --- a/gradesa/src/app/layout.js +++ b/gradesa/src/app/layout.js @@ -1,5 +1,7 @@ import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; +import Navbar from "@/components/ui/navigation"; +import Sidebar from "@/components/ui/sidenavigation"; const geistSans = Geist({ variable: "--font-geist-sans", @@ -20,6 +22,8 @@ export default function RootLayout({ children }) { return ( + + {children} diff --git a/gradesa/src/components/ui/navbar.css b/gradesa/src/components/ui/navbar.css new file mode 100644 index 0000000..17e006d --- /dev/null +++ b/gradesa/src/components/ui/navbar.css @@ -0,0 +1,23 @@ +@import "/globals.css"; + +.navbar { + display: flex; + justify-content: space-between; + align-items: center; + background-color: var(--bg3); + color: var(--secondary9); + padding: 1rem; +} + +.navbar-left.logo { + font-size: 1.5rem; + font-weight: bold; + text-decoration: none; +} + +.navbar-center.nav-links { + display: flex; + margin: 10px; + padding: 10px; + gap: 20px; +} diff --git a/gradesa/src/components/ui/navigation.js b/gradesa/src/components/ui/navigation.js new file mode 100644 index 0000000..b75908b --- /dev/null +++ b/gradesa/src/components/ui/navigation.js @@ -0,0 +1,26 @@ +import Image from "next/image"; +import Link from "next/link"; +import "./navbar.css"; + +const Navbar = () => { + return ( + + ); +}; + +export default Navbar; diff --git a/gradesa/src/components/ui/sidebar.css b/gradesa/src/components/ui/sidebar.css new file mode 100644 index 0000000..ee168aa --- /dev/null +++ b/gradesa/src/components/ui/sidebar.css @@ -0,0 +1,58 @@ +@import "/globals.css"; + +.sidebar { + position: absolute; + height: 100%; + width: 25%; + padding-top: 20px; + padding-left: 50px; + z-index: 1; + overflow-x: hidden; + left: 0; + display: flex; + flex-direction: column; + align-items: left; + justify-content: left; + background-color: var(--bg3); + white-space: nowrap; +} + +.sidebar-left { + font-size: 1.5rem; + font-weight: bold; + color: var(--secondary9); + text-decoration: none; +} + +.sidebar-left.nav-links { + display: block; + background-color: var(--secondary8); + margin: 10px; + padding: 10px; + gap: 20px; +} + +.dropdown { + width: 20%; + font-size: var(--font-lg); + color: var(--secondary1); + flex-direction: column; + display: block; +} + +.dropdown-button { + cursor: pointer; + background-color: var(--fg2); + color: var(--secondary1); + border: none; + padding: 10px; + text-align: left; + +} + +/* Note: this refers to the dropdown-menu +in sidenavigation.js */ +.menu { + display: none; + position: flex; +} \ No newline at end of file diff --git a/gradesa/src/components/ui/sidenavigation.js b/gradesa/src/components/ui/sidenavigation.js new file mode 100644 index 0000000..3752ac9 --- /dev/null +++ b/gradesa/src/components/ui/sidenavigation.js @@ -0,0 +1,39 @@ +"use client"; + +import { useState } from "react"; +import Link from "next/link"; +import "./sidebar.css"; + +const Sidebar = () => { + const [isDropdownOpen, setDropdownOpen] = useState(false); + + const toggleDropdown = () => { + setDropdownOpen((previousState) => !previousState); + }; + + return ( + + ); +}; + +export default Sidebar;