diff --git a/package-lock.json b/package-lock.json index d52b94f1..875aa320 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,8 @@ "@babel/plugin-transform-private-methods": "^7.25.4", "@eslint/config-array": "^0.18.0", "@eslint/object-schema": "^2.1.4", + "@fortawesome/free-solid-svg-icons": "^6.7.1", + "@fortawesome/react-fontawesome": "^0.2.2", "@headlessui/react": "^2.1.8", "@heroicons/react": "^2.1.5", "@hookform/error-message": "^2.0.1", @@ -19,6 +21,7 @@ "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", "amqplib": "^0.10.4", + "aos": "^2.3.4", "bootstrap": "^5.3.3", "cookie": "^0.7.1", "glob": "^11.0.0", @@ -2458,6 +2461,49 @@ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.1.tgz", + "integrity": "sha512-gbDz3TwRrIPT3i0cDfujhshnXO9z03IT1UKRIVi/VEjpNHtSBIP2o5XSm+e816FzzCFEzAxPw09Z13n20PaQJQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.1.tgz", + "integrity": "sha512-8dBIHbfsKlCk2jHQ9PoRBg2Z+4TwyE3vZICSnoDlnsHA6SiMlTwfmW6yX0lHsRmWJugkeb92sA0hZdkXJhuz+g==", + "peer": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.1.tgz", + "integrity": "sha512-BTKc0b0mgjWZ2UDKVgmwaE0qt0cZs6ITcDgjrti5f/ki7aF5zs+N91V6hitGo3TItCFtnKg6cUVGdTmBFICFRg==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", + "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, "node_modules/@headlessui/react": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.1.8.tgz", @@ -5060,6 +5106,16 @@ "node": ">= 8" } }, + "node_modules/aos": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/aos/-/aos-2.3.4.tgz", + "integrity": "sha512-zh/ahtR2yME4I51z8IttIt4lC1Nw0ktsFtmeDzID1m9naJnWXhCoARaCgNOGXb5CLy3zm+wqmRAEgMYB5E2HUw==", + "dependencies": { + "classlist-polyfill": "^1.0.3", + "lodash.debounce": "^4.0.6", + "lodash.throttle": "^4.0.1" + } + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -6013,6 +6069,11 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==" }, + "node_modules/classlist-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz", + "integrity": "sha512-GzIjNdcEtH4ieA2S8NmrSxv7DfEV5fmixQeyTmqmRmRJPGpRBaSnA2a0VrCjyT8iW8JjEdMbKzDotAJf+ajgaQ==" + }, "node_modules/clean-css": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", @@ -12566,6 +12627,11 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", diff --git a/package.json b/package.json index eb76f6b3..1392aee2 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,8 @@ "@babel/plugin-transform-private-methods": "^7.25.4", "@eslint/config-array": "^0.18.0", "@eslint/object-schema": "^2.1.4", + "@fortawesome/free-solid-svg-icons": "^6.7.1", + "@fortawesome/react-fontawesome": "^0.2.2", "@headlessui/react": "^2.1.8", "@heroicons/react": "^2.1.5", "@hookform/error-message": "^2.0.1", @@ -14,6 +16,7 @@ "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", "amqplib": "^0.10.4", + "aos": "^2.3.4", "bootstrap": "^5.3.3", "cookie": "^0.7.1", "glob": "^11.0.0", diff --git a/src/images/Logo_transparentbg.png b/src/images/Logo_transparentbg.png new file mode 100644 index 00000000..6dd951e5 Binary files /dev/null and b/src/images/Logo_transparentbg.png differ diff --git a/src/shared/components/Navigation/MainNavigation.tsx b/src/shared/components/Navigation/MainNavigation.tsx index 62131eea..4edc0062 100644 --- a/src/shared/components/Navigation/MainNavigation.tsx +++ b/src/shared/components/Navigation/MainNavigation.tsx @@ -5,74 +5,78 @@ import { Link, NavLink, useLocation } from "react-router-dom"; import { useAuth } from "../../../context/AuthContext.tsx"; export default function MainNavigation() { - const { auth } = useAuth(); - const location = useLocation().pathname; + const routes = auth.isAuthenticated ? [ - { name: "Jobs", href: "/jobs", current: true }, - { name: "Create", href: "/create", current: false }, - { name: "Staff", href: "/staff", current: false }, - { name: "Profile", href: "/profile", current: false }, - { name: "Sign Out", href: "/signout", current: false }, - ] + { name: "Jobs", href: "/jobs", current: location === "/jobs" }, + { name: "Create", href: "/create", current: location === "/create" }, + { name: "Staff", href: "/staff", current: location === "/staff" }, + { name: "Profile", href: "/profile", current: location === "/profile" }, + { name: "Sign Out", href: "/signout", current: false }, + ] : [{ name: "Sign In", href: "/signin", current: false }]; return ( - + {({ open }) => ( <> -
-
-
- {/* Mobile menu button*/} - - +
+
+ {/* Logo */} +
+ + LabConnect + +
+ + {/* Desktop Navigation */} +
+
+ {routes.map((item) => ( + + location === item.href + ? "text-blue-600 font-semibold border-b-2 border-blue-600" + : "text-gray-600 hover:text-blue-600 transition-all duration-200" + } + > + {item.name} + + ))} +
+
+ + {/* Mobile Menu Button */} +
+ Open main menu {open ? ( -
-
-
- - LabConnect - -
-
-
- {routes.map((item) => ( - - {item.name} - - ))} -
-
-
+ {/* Mobile Navigation */} -
+
{routes.map((item) => ( {item.name} diff --git a/src/shared/pages/Home.tsx b/src/shared/pages/Home.tsx index 3535883a..14c349a1 100644 --- a/src/shared/pages/Home.tsx +++ b/src/shared/pages/Home.tsx @@ -1,55 +1,105 @@ -import React from "react"; +import React, { useEffect } from "react"; import { Link } from "react-router-dom"; -import logo from "../../images/LabConnect_Logo2.webp"; +import logo from "../../images/Logo_transparentbg.png"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { faUserGraduate, faChalkboardTeacher } from "@fortawesome/free-solid-svg-icons"; import SEO from "../components/SEO.tsx"; +import AOS from "aos"; +import "aos/dist/aos.css"; + +const Home = ({ signOut, signIn }) => { + useEffect(() => { + // Initialize AOS + AOS.init(); + }, []); -const Home = () => { return ( -
+
+ {/* SEO */} -
-
-
-
-
- LabConnect -
-
-
-
-
+ {/* Header Section */} +
+ {/* Logo */} +
+ LabConnect Logo +
-

Welcome to LabConnect!

-
-

- If you are a student, go to the{" "} - - Jobs - {" "} - tab to view currently available research opportunities. -
- If you are a professor or staff member,{" "} - - Sign In - {" "} - and then go to{" "} - - Create - {" "} - to start posting
- opportunities or{" "} - - Profile - {" "} - to view and edit your current posts. + {/* Headline */} +

+ Welcome to LabConnect! +

+

+ Your gateway to lab and research opportunities on campus.

-
-
-
-
-
- ); -}; -export default Home; + {/* Call to Action Button */} + + Explore Opportunities + +
+ + {/* Info Section */} +
+
+
+ {/* Students Card */} +
+ +

+ For Students +

+

+ Browse available research opportunities and connect with professors to kickstart your lab experience. +

+ + Learn More + +
+ + {/* Professors & Staff Card */} +
+ +

+ For Professors & Staff +

+

+ Post research openings and find talented students eager to contribute to your projects. +

+ + Learn More + +
+
+
+
+ + + {/* Background Elements */} +
+
+
+ + ); + }; + + export default Home; + \ No newline at end of file