From 0143c565a9e354ca17b7b9189d51619fdbd56df4 Mon Sep 17 00:00:00 2001 From: Dhruv Pahuja Date: Mon, 14 Oct 2024 20:06:19 +0530 Subject: [PATCH 1/5] fixed issue #80 - nav links not working --- frontend/src/App.tsx | 53 +++++++++++++++------------- frontend/src/appComponents/About.tsx | 4 +-- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index be32633..6823c7f 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { Route, Routes, BrowserRouter as Router, Outlet } from "react-router-dom"; +import { Route, Routes, BrowserRouter as Router } from "react-router-dom"; import Hero from "./appComponents/Herosection"; import Clubs from "./appComponents/Clubs"; import Particles from "@/components/magicui/particles"; @@ -11,12 +11,9 @@ import ClubLogin from "./appComponents/ClubLogin"; import { ClubAdmin } from "./appComponents/ClubAdmin"; import "./App.css"; import QuizPage from "./appComponents/QuizPage"; - import { Navbar } from "./appComponents/Navbar"; - import About from "./appComponents/About"; - function App() { const [showPopup, setShowPopup] = useState(true); const [showLoginPage, setShowLoginPage] = useState(false); @@ -29,14 +26,16 @@ function App() { return ( - - - - +
+ {/* Always visible components */} + + + {/* Home Route */} + + {/* Background effects */} - + {/* Hero section */} + +
- - - {showPopup && } - {showLoginPage && } - - } - > + } + /> } /> - - } /> - } /> - } /> -
+ } /> + } /> + } + /> + } /> + } /> + + + {/* Popups */} + {showPopup && } + {showLoginPage && setShowLoginPage(false)} />} +
); } diff --git a/frontend/src/appComponents/About.tsx b/frontend/src/appComponents/About.tsx index 0f35fda..ffb37d0 100644 --- a/frontend/src/appComponents/About.tsx +++ b/frontend/src/appComponents/About.tsx @@ -6,7 +6,7 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/ import { Input } from "@/components/magicui/input" import { useState } from "react" import { useNavigate } from "react-router-dom" -import { Navigation } from "./Navbar" +// import { Navigation } from "./Navbar" //import { Navigation } from "./Navdar" @@ -34,7 +34,7 @@ const About = () => { - + {/* */} From 5bccbb1eca2ae3bdd33c38961700f4da6306cafc Mon Sep 17 00:00:00 2001 From: Dhruv Pahuja Date: Thu, 17 Oct 2024 23:04:12 +0530 Subject: [PATCH 2/5] fixed conflicts in commit 0923b0ca85c58aeeeeb4aab1748e32c45e5374f8 --- frontend/index.html | 3 +- frontend/package-lock.json | 416 ++++++++++------ frontend/package.json | 4 +- frontend/src/App.tsx | 66 +-- frontend/src/appComponents/About.tsx | 139 +++--- frontend/src/appComponents/Clubs.tsx | 9 + frontend/src/appComponents/ClubsPage.tsx | 31 ++ frontend/src/appComponents/EventCard.tsx | 2 +- frontend/src/appComponents/EventCreation.tsx | 491 ++++++++++--------- frontend/src/appComponents/Events.tsx | 42 +- frontend/src/appComponents/EventsPage.tsx | 40 ++ frontend/src/appComponents/Features.tsx | 88 ++++ frontend/src/appComponents/Footer.tsx | 216 ++++++++ frontend/src/appComponents/Herosection.tsx | 93 +++- frontend/src/appComponents/HiringPage.tsx | 39 ++ frontend/src/appComponents/Navbar.tsx | 107 +--- frontend/src/appComponents/PrivacyPolicy.tsx | 90 ++++ frontend/src/appComponents/Terms.tsx | 75 +++ 18 files changed, 1358 insertions(+), 593 deletions(-) create mode 100644 frontend/src/appComponents/ClubsPage.tsx create mode 100644 frontend/src/appComponents/EventsPage.tsx create mode 100644 frontend/src/appComponents/Features.tsx create mode 100644 frontend/src/appComponents/Footer.tsx create mode 100644 frontend/src/appComponents/HiringPage.tsx create mode 100644 frontend/src/appComponents/PrivacyPolicy.tsx create mode 100644 frontend/src/appComponents/Terms.tsx diff --git a/frontend/index.html b/frontend/index.html index 8e0cc66..4e992a9 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,7 +4,8 @@ - + + dypcetclubs.live diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a589739..1117623 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -26,8 +26,10 @@ "radix-ui": "^1.0.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^6.27.0", + "react-icons": "^5.3.0", + "react-router-dom": "^6.26.1", "react-spinners": "^0.14.1", + "styled-components": "^6.1.13", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7" }, @@ -373,6 +375,27 @@ "node": ">=6.9.0" } }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "license": "MIT" + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -2539,12 +2562,11 @@ "license": "MIT" }, "node_modules/@remix-run/node": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.13.1.tgz", - "integrity": "sha512-2ly7bENj2n2FNBdEN60ZEbNCs5dAOex/QJoo6EZ8RNFfUQxVKAZkMwfQ4ETV2SLWDgkRLj3Jo5n/dx7O2ZGhGw==", - "license": "MIT", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.11.2.tgz", + "integrity": "sha512-gRNFM61EOYWNmYgf+pvBt6MrirWlkDz1G6RQsJNowtRqbYoy05AdDe5HiHGF5w8ZMAZVeXnZiwbL0Nt7ykYBCA==", "dependencies": { - "@remix-run/server-runtime": "2.13.1", + "@remix-run/server-runtime": "2.11.2", "@remix-run/web-fetch": "^4.4.2", "@web3-storage/multipart-parser": "^1.0.0", "cookie-signature": "^1.1.0", @@ -2565,27 +2587,25 @@ } }, "node_modules/@remix-run/router": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", - "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", - "license": "MIT", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", + "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==", "engines": { "node": ">=14.0.0" } }, "node_modules/@remix-run/server-runtime": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.13.1.tgz", - "integrity": "sha512-2DfBPRcHKVzE4bCNsNkKB50BhCCKF73x+jiS836OyxSIAL+x0tguV2AEjmGXefEXc5AGGzoxkus0AUUEYa29Vg==", - "license": "MIT", + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.11.2.tgz", + "integrity": "sha512-abG6ENj0X3eHqDxqO2thWM2NSEiPnqyt58z1BbiQCv+t8g0Zuqd5QHbB4wzdNvfS0vKhg+jJiigcJneAc4sZzw==", "dependencies": { - "@remix-run/router": "1.20.0", + "@remix-run/router": "1.19.1", "@types/cookie": "^0.6.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie": "^0.6.0", "set-cookie-parser": "^2.4.8", "source-map": "^0.7.3", - "turbo-stream": "2.4.0" + "turbo-stream": "2.3.0" }, "engines": { "node": ">=18.0.0" @@ -2651,224 +2671,208 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.2.tgz", + "integrity": "sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.2.tgz", + "integrity": "sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.2.tgz", + "integrity": "sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.2.tgz", + "integrity": "sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.2.tgz", + "integrity": "sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.2.tgz", + "integrity": "sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.2.tgz", + "integrity": "sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.2.tgz", + "integrity": "sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.2.tgz", + "integrity": "sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==", "cpu": [ "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.2.tgz", + "integrity": "sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==", "cpu": [ "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.2.tgz", + "integrity": "sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==", "cpu": [ "s390x" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.2.tgz", + "integrity": "sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.2.tgz", + "integrity": "sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.2.tgz", + "integrity": "sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.2.tgz", + "integrity": "sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==", "cpu": [ "ia32" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.2.tgz", + "integrity": "sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" @@ -3034,15 +3038,13 @@ "node_modules/@types/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "license": "MIT" + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true }, "node_modules/@types/node": { "version": "22.0.2", @@ -3078,6 +3080,12 @@ "@types/react": "*" } }, + "node_modules/@types/stylis": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz", + "integrity": "sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "7.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", @@ -3589,6 +3597,15 @@ "node": ">= 6" } }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001646", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz", @@ -3743,7 +3760,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -3769,6 +3785,26 @@ "node": ">= 8" } }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "license": "MIT", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -3783,8 +3819,7 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/data-uri-to-buffer": { "version": "3.0.1", @@ -5066,10 +5101,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -5339,10 +5373,9 @@ } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "license": "ISC" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -5380,9 +5413,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.40", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz", + "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==", "funding": [ { "type": "opencollective", @@ -5397,11 +5430,10 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", - "source-map-js": "^1.2.1" + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -5645,6 +5677,14 @@ "react": "^18.3.1" } }, + "node_modules/react-icons": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz", + "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -5707,12 +5747,11 @@ } }, "node_modules/react-router": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", - "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", - "license": "MIT", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", + "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", "dependencies": { - "@remix-run/router": "1.20.0" + "@remix-run/router": "1.19.1" }, "engines": { "node": ">=14.0.0" @@ -5722,13 +5761,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", - "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", - "license": "MIT", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", + "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", "dependencies": { - "@remix-run/router": "1.20.0", - "react-router": "6.27.0" + "@remix-run/router": "1.19.1", + "react-router": "6.26.1" }, "engines": { "node": ">=14.0.0" @@ -5840,13 +5878,12 @@ } }, "node_modules/rollup": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", - "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.19.2.tgz", + "integrity": "sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.5" }, "bin": { "rollup": "dist/bin/rollup" @@ -5856,22 +5893,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.0", - "@rollup/rollup-android-arm64": "4.24.0", - "@rollup/rollup-darwin-arm64": "4.24.0", - "@rollup/rollup-darwin-x64": "4.24.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", - "@rollup/rollup-linux-arm-musleabihf": "4.24.0", - "@rollup/rollup-linux-arm64-gnu": "4.24.0", - "@rollup/rollup-linux-arm64-musl": "4.24.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", - "@rollup/rollup-linux-riscv64-gnu": "4.24.0", - "@rollup/rollup-linux-s390x-gnu": "4.24.0", - "@rollup/rollup-linux-x64-gnu": "4.24.0", - "@rollup/rollup-linux-x64-musl": "4.24.0", - "@rollup/rollup-win32-arm64-msvc": "4.24.0", - "@rollup/rollup-win32-ia32-msvc": "4.24.0", - "@rollup/rollup-win32-x64-msvc": "4.24.0", + "@rollup/rollup-android-arm-eabi": "4.19.2", + "@rollup/rollup-android-arm64": "4.19.2", + "@rollup/rollup-darwin-arm64": "4.19.2", + "@rollup/rollup-darwin-x64": "4.19.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.19.2", + "@rollup/rollup-linux-arm-musleabihf": "4.19.2", + "@rollup/rollup-linux-arm64-gnu": "4.19.2", + "@rollup/rollup-linux-arm64-musl": "4.19.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.19.2", + "@rollup/rollup-linux-riscv64-gnu": "4.19.2", + "@rollup/rollup-linux-s390x-gnu": "4.19.2", + "@rollup/rollup-linux-x64-gnu": "4.19.2", + "@rollup/rollup-linux-x64-musl": "4.19.2", + "@rollup/rollup-win32-arm64-msvc": "4.19.2", + "@rollup/rollup-win32-ia32-msvc": "4.19.2", + "@rollup/rollup-win32-x64-msvc": "4.19.2", "fsevents": "~2.3.2" } }, @@ -5920,8 +5957,7 @@ "node_modules/set-cookie-parser": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz", - "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==", - "license": "MIT" + "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==" }, "node_modules/set-function-length": { "version": "1.2.2", @@ -5939,6 +5975,12 @@ "node": ">= 0.4" } }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5982,16 +6024,14 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "license": "BSD-3-Clause", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -6113,6 +6153,74 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/styled-components": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.13.tgz", + "integrity": "sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw==", + "license": "MIT", + "dependencies": { + "@emotion/is-prop-valid": "1.2.2", + "@emotion/unitless": "0.8.1", + "@types/stylis": "4.2.5", + "css-to-react-native": "3.2.0", + "csstype": "3.1.3", + "postcss": "8.4.38", + "shallowequal": "1.1.0", + "stylis": "4.3.2", + "tslib": "2.6.2" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0" + } + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/styled-components/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "node_modules/stylis": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz", + "integrity": "sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==", + "license": "MIT" + }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", @@ -6297,10 +6405,9 @@ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/turbo-stream": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", - "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", - "license": "ISC" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.3.0.tgz", + "integrity": "sha512-PhEr9mdexoVv+rJkQ3c8TjrN3DUghX37GNJkSMksoPR4KrXIPnM2MnqRt07sViIqX9IdlhrgtTSyjoVOASq6cg==" }, "node_modules/type-check": { "version": "0.4.0", @@ -6461,15 +6568,14 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/vite": { - "version": "5.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", - "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz", + "integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==", "dev": true, - "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "postcss": "^8.4.39", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -6488,7 +6594,6 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", - "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -6506,9 +6611,6 @@ "sass": { "optional": true }, - "sass-embedded": { - "optional": true - }, "stylus": { "optional": true }, diff --git a/frontend/package.json b/frontend/package.json index 671d2e5..3f8458d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,8 +30,10 @@ "radix-ui": "^1.0.1", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-router-dom": "^6.27.0", + "react-icons": "^5.3.0", + "react-router-dom": "^6.26.1", "react-spinners": "^0.14.1", + "styled-components": "^6.1.13", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7" }, diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 6823c7f..5f9d099 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; -import { Route, Routes, BrowserRouter as Router } from "react-router-dom"; +import { Route, Routes, BrowserRouter as Router, Outlet } from "react-router-dom"; +import { Navbar } from "./appComponents/Navbar"; import Hero from "./appComponents/Herosection"; import Clubs from "./appComponents/Clubs"; import Particles from "@/components/magicui/particles"; @@ -11,8 +12,14 @@ import ClubLogin from "./appComponents/ClubLogin"; import { ClubAdmin } from "./appComponents/ClubAdmin"; import "./App.css"; import QuizPage from "./appComponents/QuizPage"; -import { Navbar } from "./appComponents/Navbar"; import About from "./appComponents/About"; +import Footer from "./appComponents/Footer.tsx"; +import ClubsPage from "./appComponents/ClubsPage.tsx"; +import EventsPage from "./appComponents/EventsPage.tsx"; +import Features from "./appComponents/Features.js"; +import HiringPage from "./appComponents/HiringPage.tsx"; +import PrivacyPolicy from "./appComponents/PrivacyPolicy.tsx"; +import Terms from "./appComponents/Terms.tsx"; function App() { const [showPopup, setShowPopup] = useState(true); @@ -27,44 +34,43 @@ function App() { return (
- {/* Always visible components */} - {/* Home Route */} - {/* Background effects */} - - - {/* Hero section */} - - - +
+
+ + + + + + +
+ {showPopup && } + {showLoginPage && } +
} - /> - } /> + > + } /> + } /> } /> - } - /> - } /> - } /> + } /> + } /> + } /> + } /> + } /> + } />
- - {/* Popups */} - {showPopup && } - {showLoginPage && setShowLoginPage(false)} />}
); diff --git a/frontend/src/appComponents/About.tsx b/frontend/src/appComponents/About.tsx index ffb37d0..b39e3c8 100644 --- a/frontend/src/appComponents/About.tsx +++ b/frontend/src/appComponents/About.tsx @@ -1,26 +1,27 @@ import { Card, CardContent } from "@/components/magicui/card" import { Button } from "@/components/ui/button" import { ChevronRight, Users, Award, Calendar, Zap } from 'lucide-react' -import { motion } from 'framer-motion' -import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/magicui/accordion" +import {motion} from 'framer-motion' +import { Accordion,AccordionContent,AccordionItem, AccordionTrigger } from "@/components/magicui/accordion" import { Input } from "@/components/magicui/input" import { useState } from "react" import { useNavigate } from "react-router-dom" -// import { Navigation } from "./Navbar" +import { Navigation } from "./Navbar" +import Footer from "./Footer" //import { Navigation } from "./Navdar" -const About = () => { +const About =()=>{ - const [email, setEmail] = useState('') - const route = useNavigate() + const [email,setEmail]=useState('') + const route= useNavigate() const handleSubmit = (e: React.FormEvent) => { e.preventDefault() - + console.log('Signed up with:', email) setEmail('') - } - return ( + } + return(
@@ -28,24 +29,24 @@ const About = () => {

Discover DYPCET Clubs

Where Passion Meets Purpose

- +
- {/* */} - - - + + + +
-
+

Discover Your Community

- At DYPCET, we believe that education extends far beyond the classroom. Our vibrant club ecosystem is the heart of student life, offering a diverse array of opportunities for personal growth, skill development, and unforgettable experiences. Whether you're passionate about technology, arts, sports, or social causes, there's a place for you to thrive and make lasting connections. + At DYPCET, we believe that education extends far beyond the classroom. Our vibrant club ecosystem is the heart of student life, offering a diverse array of opportunities for personal growth, skill development, and unforgettable experiences. Whether you're passionate about technology, arts, sports, or social causes, there's a place for you to thrive and make lasting connections.

{[ @@ -53,21 +54,21 @@ const About = () => { { icon: Award, title: "Leadership Opportunities", desc: "Develop crucial skills for your future career" }, { icon: Calendar, title: "200+ Annual Events", desc: "From workshops to competitions and social gatherings" }, { icon: Zap, title: "Innovation Hub", desc: "Where ideas come to life through collaborative projects" } - ].map((item, index) => ( - ( + - +

{item.title}

{item.desc}

@@ -86,26 +87,26 @@ const About = () => { { year: 2021, title: "National Recognition", desc: "DYPCET Robotics Club won the All India Robotics Challenge" }, { year: 2022, title: "Expansion and Growth", desc: "Number of active clubs doubled, reaching 50+" }, { year: 2023, title: "Community Impact Award", desc: "Recognized for outstanding community service initiatives" } - ].map((item, index) => ( -
+ ].map((item,index)=>( +
- -

{item.year}:{item.title}

-

{item.desc}

+

{item.year}:{item.title}

+

{item.desc}

@@ -126,15 +127,15 @@ const About = () => { { name: "Priya Sharma", role: "President, Coding Club", quote: "Being part of the Coding Club has not only enhanced my technical skills but also opened doors to amazing internship opportunities." }, { name: "Rahul Desai", role: "Member, Environmental Club", quote: "Through our club initiatives, I've learned that even small actions can make a big difference in our community and environment." }, { name: "Ananya Patel", role: "Organizer, Cultural Fest", quote: "Organizing our annual cultural fest taught me invaluable lessons in teamwork, time management, and leadership." } - ].map((item, index) => ( - ( +

{item.quote}

@@ -154,7 +155,7 @@ const About = () => { { question: "Can I start my own club?", answer: "If you have a unique idea for a club, gather a group of interested students and submit a proposal to the Student Activities Office. They'll guide you through the process of officially establishing your club." }, { question: "Are there any fees to join clubs?", answer: "Most clubs are free to join. Some specialized clubs may have minimal fees to cover equipment or event costs, but this information is always provided upfront." }, { question: "How much time commitment is required?", answer: "Time commitment varies by club and your level of involvement. Generally, clubs meet weekly or bi-weekly, with additional time for events or projects. You can always discuss expectations with club leaders." } - ].map((item, index) => ( + ].map((item,index)=>( {item.question} {item.answer} @@ -171,11 +172,11 @@ const About = () => {

Subscribe to our newsletter for the latest updates on club activites, events, and acchievements

setEmail(e.target.value)} - className="flex-grow" + type="email" + placeholder="Enter your email" + value={email} + onChange={(e)=>setEmail(e.target.value)} + className="flex-grow" />
@@ -185,13 +186,13 @@ const About = () => {

Ready to Embark on Your Club Journey

-

+

Explore our diverse range of clubs, find your passion, and become part of our vibrant community today!

-
@@ -199,7 +200,7 @@ const About = () => {
- +
) } diff --git a/frontend/src/appComponents/Clubs.tsx b/frontend/src/appComponents/Clubs.tsx index 5ed2d9b..a83c2f3 100644 --- a/frontend/src/appComponents/Clubs.tsx +++ b/frontend/src/appComponents/Clubs.tsx @@ -1,7 +1,9 @@ +"use client"; import ClubCard from "./ClubCard"; import { useClubs } from "../hooks/useClubs"; export default function Clubs() { + const isHomePage = window.location.pathname === '/'; const { data: clubs, error, isLoading } = useClubs(); const displayedClubs = clubs?.slice(0, 6); @@ -58,6 +60,13 @@ export default function Clubs() { /> ))}
+ {isHomePage && ( +
+

+ Want to Explore more? Visit our Dedicated Clubs Page. +

+
+ )}
); } diff --git a/frontend/src/appComponents/ClubsPage.tsx b/frontend/src/appComponents/ClubsPage.tsx new file mode 100644 index 0000000..0e82d06 --- /dev/null +++ b/frontend/src/appComponents/ClubsPage.tsx @@ -0,0 +1,31 @@ +"use client"; +import { Navigation } from "./Navbar"; +import { Button } from "@/components/ui/button"; +import Clubs from "./Clubs"; +import Footer from "./Footer"; + + +const ClubPage = () => { + return ( +
+ +
+
+
+

Discover DYPCET Clubs

+

Where Passion Meets Purpose

+ +
+
+ + +
+ +
+
+
+
+ ); + } +export default ClubPage; \ No newline at end of file diff --git a/frontend/src/appComponents/EventCard.tsx b/frontend/src/appComponents/EventCard.tsx index edc0712..4bd2371 100644 --- a/frontend/src/appComponents/EventCard.tsx +++ b/frontend/src/appComponents/EventCard.tsx @@ -10,7 +10,7 @@ type EventCardProps = { const EventCard: React.FC = ({ name, description, time }) => { return ( -
+

{name}

{description}

diff --git a/frontend/src/appComponents/EventCreation.tsx b/frontend/src/appComponents/EventCreation.tsx index 3557e2a..4234bce 100644 --- a/frontend/src/appComponents/EventCreation.tsx +++ b/frontend/src/appComponents/EventCreation.tsx @@ -4,7 +4,11 @@ import type { FieldApi } from "@tanstack/react-form"; import { useAuth } from "../context/AuthContext"; import axios from "./axiosInstance"; import { useNavigate } from "react-router-dom"; - +import { ImCross } from "react-icons/im"; +import { useRef } from "react"; +import { MdDelete } from "react-icons/md"; +import { GrUpdate } from "react-icons/gr"; +import { CgMoreO } from "react-icons/cg"; // interface Event { // ClubID: string; // EventName: string; @@ -32,6 +36,9 @@ const EventCreation: React.FC = () => { const [loading, setLoading] = useState({ state: false, id: null }); const [updateOrSubmitState, setUpdateOrSubmitState] = useState(false); const [eventId, setEventId] = useState(null); + const [showForm, setShowForm] = useState(false); + const formRef = useRef(null); // Create a reference to the form + const navigate =useNavigate(); const form = useForm({ @@ -86,6 +93,7 @@ const EventCreation: React.FC = () => { if (response.status == 200) { // setEventData([...eventData, response.data]); form.reset(); + setShowForm(false); // Find the event in the eventData array and replace it with the updated event const updatedEventData = eventData.map((event: any) => { @@ -156,237 +164,273 @@ const EventCreation: React.FC = () => { return; } }; + const handleCreateEventClick = () => { + setShowForm(true); + setTimeout(() => { + formRef.current?.scrollIntoView({ behavior: "smooth" }); + formRef.current?.classList.add("highlight"); + setTimeout(() => formRef.current?.classList.remove("highlight"), 2000); // Remove highlight after 2 seconds + }, 100); + }; return ( -
-
+ <> +
+
+
+ +
+
+ + {showForm && ( +
{ - e.preventDefault(); - e.stopPropagation(); - form.handleSubmit(); - }} - > -
- {/* A type-safe field component*/} - - !value ? "EventName is required" : undefined, - onChangeAsyncDebounceMs: 500, - onChangeAsync: async ({ value }) => { - await new Promise((resolve) => setTimeout(resolve, 1000)); - return ( - value.includes("error") && 'No "error" allowed in EventName' - ); - }, - }} - children={(field) => { - // Avoid hasty abstractions. Render props are great! + className="flex justify-center flex-col items-center gap-4 p-4 border border-black rounded-xl w-fit bg-[#6284eb]" + onSubmit={(e) => { + e.preventDefault(); + e.stopPropagation(); + form.handleSubmit(); + }} + ref={formRef} + > +
+ {/* A type-safe field component*/} + + !value ? "EventName is required" : undefined, + onChangeAsyncDebounceMs: 500, + onChangeAsync: async ({ value }) => { + await new Promise((resolve) => setTimeout(resolve, 1000)); return ( - <> - - field.handleChange(e.target.value)} - /> -
- -
- + value.includes("error") && 'No "error" allowed in EventName' ); - }} - /> -
-
- {/* A type-safe field component*/} - - !value ? "Description is required" : undefined, - onChangeAsyncDebounceMs: 500, - onChangeAsync: async ({ value }) => { - await new Promise((resolve) => setTimeout(resolve, 1000)); - return ( - value.includes("error") && - 'No "error" allowed in Description' - ); - }, - }} - children={(field) => { - // Avoid hasty abstractions. Render props are great! - return ( - <> - - field.handleChange(e.target.value)} - /> -
- + }, + }} + children={(field) => { + // Avoid hasty abstractions. Render props are great! + return ( + <> +
+ {setShowForm(false)})}> + New Event
- + + + field.handleChange(e.target.value)} + /> +
+ +
+ + ); + }} + /> +
+
+ {/* A type-safe field component*/} + + !value ? "Description is required" : undefined, + onChangeAsyncDebounceMs: 500, + onChangeAsync: async ({ value }) => { + await new Promise((resolve) => setTimeout(resolve, 1000)); + return ( + value.includes("error") && + 'No "error" allowed in Description' ); - }} - /> -
-
- {/* A type-safe field component*/} - - !value ? "StartDateTime is required" : undefined, - onChangeAsyncDebounceMs: 500, - onChangeAsync: async ({ value }) => { - await new Promise((resolve) => setTimeout(resolve, 1000)); - return ( - value.includes("error") && - 'No "error" allowed in StartDateTime' - ); - }, - }} - children={(field) => { - // Avoid hasty abstractions. Render props are great! + }, + }} + children={(field) => { + // Avoid hasty abstractions. Render props are great! + return ( + <> + + field.handleChange(e.target.value)} + /> +
+ +
+ + ); + }} + /> +
+
+ {/* A type-safe field component*/} + + !value ? "StartDateTime is required" : undefined, + onChangeAsyncDebounceMs: 500, + onChangeAsync: async ({ value }) => { + await new Promise((resolve) => setTimeout(resolve, 1000)); return ( - <> - - field.handleChange(e.target.value)} - /> -
- -
- + value.includes("error") && + 'No "error" allowed in StartDateTime' ); - }} - /> -
-
- {/* A type-safe field component*/} - - !value ? "EndDateTime is required" : undefined, - onChangeAsyncDebounceMs: 500, - onChangeAsync: async ({ value }) => { - await new Promise((resolve) => setTimeout(resolve, 1000)); - return ( - value.includes("error") && - 'No "error" allowed in EndDateTime' - ); - }, - }} - children={(field) => { - // Avoid hasty abstractions. Render props are great! + }, + }} + children={(field) => { + // Avoid hasty abstractions. Render props are great! + return ( + <> + + field.handleChange(e.target.value)} + /> +
+ +
+ + ); + }} + /> +
+
+ {/* A type-safe field component*/} + + !value ? "EndDateTime is required" : undefined, + onChangeAsyncDebounceMs: 500, + onChangeAsync: async ({ value }) => { + await new Promise((resolve) => setTimeout(resolve, 1000)); return ( - <> - - field.handleChange(e.target.value)} - /> -
- -
- + value.includes("error") && + 'No "error" allowed in EndDateTime' ); - }} - /> -
-
- {/* A type-safe field component*/} - - !value ? "Location is required" : undefined, - onChangeAsyncDebounceMs: 500, - onChangeAsync: async ({ value }) => { - await new Promise((resolve) => setTimeout(resolve, 1000)); - return ( - value.includes("error") && 'No "error" allowed in Location' - ); - }, - }} - children={(field) => { - // Avoid hasty abstractions. Render props are great! + }, + }} + children={(field) => { + // Avoid hasty abstractions. Render props are great! + return ( + <> + + field.handleChange(e.target.value)} + /> +
+ +
+ + ); + }} + /> +
+
+ {/* A type-safe field component*/} + + !value ? "Location is required" : undefined, + onChangeAsyncDebounceMs: 500, + onChangeAsync: async ({ value }) => { + await new Promise((resolve) => setTimeout(resolve, 1000)); return ( - <> - - field.handleChange(e.target.value)} - /> -
- -
- + value.includes("error") && 'No "error" allowed in Location' ); - }} - /> -
- [state.canSubmit, state.isSubmitting]} - children={([canSubmit, isSubmitting]) => ( - - )} + }, + }} + children={(field) => { + // Avoid hasty abstractions. Render props are great! + return ( + <> + + field.handleChange(e.target.value)} + /> +
+ +
+ + ); + }} /> - -
-

+

+ [state.canSubmit, state.isSubmitting]} + children={([canSubmit, isSubmitting]) => ( + + )} + /> + +
+ )} + + + +
+
+

Events Created by you:{" "}

- - +
+
+ - - - - - - + + + + @@ -394,7 +438,7 @@ const EventCreation: React.FC = () => { {eventData?.map((event: any) => ( @@ -415,10 +459,11 @@ const EventCreation: React.FC = () => { > {loading.state && loading.id == event.EventID ? "deleting..." - : "Delete"} + : } + + }}> ))}
- EventName + + Event Name DescriptionStartDateTimeEndDateTimeLocation + DescriptionStartDate TimeEndDate TimeLocation Operations
{event.EventName}
-
+
+
+ + ); }; export default EventCreation; diff --git a/frontend/src/appComponents/Events.tsx b/frontend/src/appComponents/Events.tsx index c8e778b..98d1193 100644 --- a/frontend/src/appComponents/Events.tsx +++ b/frontend/src/appComponents/Events.tsx @@ -5,6 +5,7 @@ import axios from "./axiosInstance"; const Events = () => { const [events, setEvents] = useState([]); + const isHomePage = window.location.pathname === "/"; // function convertDateTime(eventStartDateTime) { // // Convert the string to Date object @@ -83,9 +84,9 @@ const Events = () => { let month = monthNames[start.getMonth()]; let year = start.getFullYear(); let startHours = start.getHours(); - let startMinutes:string|number = start.getMinutes(); + let startMinutes: string | number = start.getMinutes(); let endHours = end.getHours(); - let endMinutes:string|number = end.getMinutes(); + let endMinutes: string | number = end.getMinutes(); // Convert hours from 24-hour format to 12-hour format let startPeriod = startHours >= 12 ? "PM" : "AM"; @@ -123,9 +124,7 @@ const Events = () => { useEffect(() => { const getAllEvents = async () => { - const response = await axios.get( - "/api/events/getAllEventData", - ); + const response = await axios.get("/api/events/getAllEventData"); setEvents(response.data); // const startDateTime = "2024-09-11T16:00"; // const endDateTime = "2024-09-11T19:00"; @@ -136,16 +135,20 @@ const Events = () => { }, []); return (
- -
-

Upcoming Events

-

- Check out the upcoming events and workshops hosted by our vibrant club - community. -

-
+ {isHomePage && ( +
+ +
+

Upcoming Events

+

+ Check out the upcoming events and workshops hosted by our vibrant + club community. +

+
+
+ )}
- {events.map((event:any) => ( + {events.map((event: any) => ( { /> ))}
+ {isHomePage && ( +
+

+ Want to know about more Events? Visit our Dedicated  + + Events + +  Page. +

+
+ )}
); }; diff --git a/frontend/src/appComponents/EventsPage.tsx b/frontend/src/appComponents/EventsPage.tsx new file mode 100644 index 0000000..5a45cc1 --- /dev/null +++ b/frontend/src/appComponents/EventsPage.tsx @@ -0,0 +1,40 @@ +"use client"; +import { Navigation } from "./Navbar"; +import { Button } from "@/components/ui/button"; +import Footer from "./Footer"; +import Events from "./Events"; +import Meteors from "@/components/magicui/meteors"; + + +const EventsPage = () => { + return ( +
+ +
+
+
+

Gateway To Exciting Events

+

Buckle Up to Explore.

+ +
+
+ + +
+ +
+

Upcoming Events

+

+ Check out the upcoming events and workshops hosted by our vibrant + club community. +

+
+ +
+
+
+
+ ); + } +export default EventsPage; \ No newline at end of file diff --git a/frontend/src/appComponents/Features.tsx b/frontend/src/appComponents/Features.tsx new file mode 100644 index 0000000..18b0927 --- /dev/null +++ b/frontend/src/appComponents/Features.tsx @@ -0,0 +1,88 @@ +import React from "react"; +import { RiCalendar2Fill, RiStickyNote2Fill } from "react-icons/ri"; +import { MdPeople, MdSpeakerPhone } from "react-icons/md"; +import Meteors from "@/components/magicui/meteors"; + +// Define the interface for the feature data structure +interface Feature { + icon: JSX.Element; + title: string; + description: string; + gradient: string; +} + +// Define the feature data array with proper types +const featureData: Feature[] = [ + { + icon: , + title: " Club Registration & Management", + description: "Register and manage club details seamlessly.", + gradient: "bg-black", + }, + { + icon: , + title: "Event Organization", + description: + "Create, edit, and delete events, complete with images and tags.", + gradient: "bg-white", + }, + { + icon: , + title: "Announcement System", + description: "Post rich-text announcements for your club members.", + gradient: "bg-black", + }, + { + icon: , + title: "Member Management", + description: "Easily manage members and assign roles.", + gradient: "bg-white", + }, +]; + +const Features: React.FC = () => { + return ( +
+
+
+
+ +
+

What We Offer to Our Users

+

+ A comprehensive platform for managing college clubs, events, and announcements effectively. +

+
+
+
+ {featureData.map((feature, index) => ( +
+
+
+
+ {feature.icon} +
+

+ {feature.title} +

+
+

{feature.description}

+
+
+ ))} +
+
+
+
+ ); +}; + +export default Features; diff --git a/frontend/src/appComponents/Footer.tsx b/frontend/src/appComponents/Footer.tsx new file mode 100644 index 0000000..b4465f7 --- /dev/null +++ b/frontend/src/appComponents/Footer.tsx @@ -0,0 +1,216 @@ +import { useState } from 'react'; +import { Link } from "react-router-dom"; +import playstore from "../assets/dypLogo.png"; +import { FaGithub, FaRegCopyright, FaDiscord, FaLinkedinIn } from 'react-icons/fa'; +import { FaXTwitter } from 'react-icons/fa6'; // Corrected import for Twitter icon + +const Footer = () => { + const currentYear = new Date().getFullYear(); + const [isModalOpen, setIsModalOpen] = useState(false); + const [rating, setRating] = useState(0); + const [comment, setComment] = useState(''); + + // Define company links with distinct paths + const companyLinks = [ + { name: 'About Us', path: '/about' }, + { name: 'Contact Us', path: '/contact' }, + ]; + + // Define quick links + const quickLinks = [ + { name: 'Clubs', path: '/clubboard' }, + { name: 'Events', path: '/events' }, + { name: 'Hirings', path: '/hiring' }, + ]; + + // Define social media links + const socialMedia = [ + { Icon: FaGithub, link: 'https://github.com/Yash-Ainapure/dypcetclubs.live', color: '#333' }, + { Icon: FaDiscord, link: '#', color: '#7289DA' }, + { Icon: FaXTwitter, link: '#', color: '#1DA1F2' }, // Updated to FaTwitter + { Icon: FaLinkedinIn, link: '#', color: '#0077B5' }, + ]; + + // Define legal links with their paths if available + const legalLinks = [ + { name: 'Privacy Policy', path: '/privacy-policy' }, + { name: 'Terms and Conditions', path: '/terms' }, + ]; + + const handleRating = (value: any) => { + setRating(value); + }; + + const submitRating = () => { + alert(`Thank you for rating us ${rating} out of 5! Comment: ${comment}`); + setIsModalOpen(false); + setRating(0); + setComment(''); + }; + + return ( + + ); +}; + +export default Footer; \ No newline at end of file diff --git a/frontend/src/appComponents/Herosection.tsx b/frontend/src/appComponents/Herosection.tsx index 0821df9..1510145 100644 --- a/frontend/src/appComponents/Herosection.tsx +++ b/frontend/src/appComponents/Herosection.tsx @@ -1,8 +1,19 @@ "use client"; -import React from 'react'; +import { useState } from "react"; +import { Dock, DockIcon } from "@/components/magicui/dock"; +import cross from "../assets/cross-icon.svg"; +import burger from "../assets/burger-menu.svg"; +import { useNavigate } from "react-router-dom"; const Hero: React.FC = () => { + const [isMenuOpen, setIsMenuOpen] = useState(false); + const route= useNavigate() + const toggleMenu = () => { + setIsMenuOpen(!isMenuOpen); + + }; + return (
@@ -15,14 +26,90 @@ const Hero: React.FC = () => { lasting connections.

+ + +
+ + +

+ Home +

+
+ +

route('/clubboard')}> + Clubs +

+
+ +

route('/events')}> + Events +

+
+ +

+ Hiring +

+
+ +

route('/about')}> + About +

+
+ +
+
+ +
+ +
+ + + {isMenuOpen && ( +
+ + +
    +
  • Home
  • +
  • Clubs
  • +
  • Events
  • +
  • Hiring
  • +
+
+ )} + + +
); }; diff --git a/frontend/src/appComponents/HiringPage.tsx b/frontend/src/appComponents/HiringPage.tsx new file mode 100644 index 0000000..b128a91 --- /dev/null +++ b/frontend/src/appComponents/HiringPage.tsx @@ -0,0 +1,39 @@ +"use client"; +import { Button } from "@/components/ui/button"; +import Footer from "./Footer"; // Make sure the Footer component is in the correct path +import { Navigation } from "./Navbar"; // Ensure Navigation is imported correctly + +const HiringPage = () => { + return ( +
+
+
+
+

Join Our Team!

+

We're Hiring Passionate Individuals.

+ +
+
+ + +
+
+

Current Openings

+

+ Check out our latest job postings below: +

+{/* list the positions for hiring in the card format same as clubs and events*/} +
+ + + +
+ +
+
+ ); +}; + +export default HiringPage; \ No newline at end of file diff --git a/frontend/src/appComponents/Navbar.tsx b/frontend/src/appComponents/Navbar.tsx index d0671db..d434509 100644 --- a/frontend/src/appComponents/Navbar.tsx +++ b/frontend/src/appComponents/Navbar.tsx @@ -7,108 +7,27 @@ import burger from "../assets/burger-menu.svg"; export type IconProps = React.HTMLAttributes; +// Navbar component const Navbar: React.FC = ({ setShowLoginPage }) => { - const [isMenuOpen, setIsMenuOpen] = useState(false); - const navigate=useNavigate(); - const toggleMenu = () => { - setIsMenuOpen(!isMenuOpen); - }; return ( -
+ +
{/* image-logo */} -
- - -

{ - navigate("/") - }}> - Home -

-
- -

{ - navigate("/clubs") - }} className="flex items-center font-semibold transition-all duration-300 transform size-full"> - Clubs -

-
- -

{ - navigate("/events") - }} className="flex items-center font-semibold transition-all duration-300 transform size-full"> - Events -

-
- -

{ - navigate("/hiring") - }} className="flex items-center font-semibold transition-all duration-300 transform size-full"> - Hiring -

-
- -

{ - navigate("/about") - }} className="flex items-center font-semibold transition-all duration-300 transform size-full"> - About -

-
-
-
-
- - {isMenuOpen && ( -
- - -
    -
  • Home
  • -
  • Clubs
  • -
  • Events
  • -
  • Hiring
  • -
  • About
  • -
-
- )} + {/* Club login button */}
{ - setShowLoginPage(true); - }} - className="mr-[15vw] lg:mr-0 text-base rounded-md shadow-xl text-black bg-white border-white border p-2 font-semibold cursor-pointer hover:scale-105 transform transition-all duration-500 hover:bg-transparent hover:text-white" - > + onClick={() => setShowLoginPage(true)} + className="text-base rounded-md shadow-xl text-black bg-white border-white border p-2 font-semibold cursor-pointer hover:scale-105 transform transition-all duration-500 hover:bg-transparent hover:text-white"> Club login
@@ -152,7 +71,7 @@ const Navigation = () => {

-

navigate("/clubs")}> +

navigate("/clubboard")}> Clubs

@@ -200,7 +119,7 @@ const Navigation = () => {
  • { navigate("/"); toggleMenu(); }} className="hover:underline cursor-pointer text-center">Home
  • -
  • { navigate("/clubs"); toggleMenu(); }} className="hover:underline cursor-pointer text-center">Clubs
  • +
  • { navigate("/clubboard"); toggleMenu(); }} className="hover:underline cursor-pointer text-center">Clubs
  • { navigate("/events"); toggleMenu(); }} className="hover:underline cursor-pointer text-center">Events
  • { navigate("/hiring"); toggleMenu(); }} className="hover:underline cursor-pointer text-center">Hiring
  • { navigate("/about"); toggleMenu(); }} className="hover:underline cursor-pointer text-center">About
  • @@ -211,4 +130,4 @@ const Navigation = () => { ); }; -export { Navbar,Navigation }; +export { Navbar, Navigation }; diff --git a/frontend/src/appComponents/PrivacyPolicy.tsx b/frontend/src/appComponents/PrivacyPolicy.tsx new file mode 100644 index 0000000..d21dd71 --- /dev/null +++ b/frontend/src/appComponents/PrivacyPolicy.tsx @@ -0,0 +1,90 @@ +"use client"; +import { Button } from "@/components/ui/button"; +import Footer from "./Footer"; +import { Navigation } from "./Navbar"; + +const PrivacyPolicy = () => { + return ( +
    +
    +
    +
    +

    Privacy Policy

    +

    Your privacy is important to us.

    + + + +
    +
    + + + +
    +

    1. Introduction

    +

    + Welcome to dypcetclubs.live. Your privacy is important to us. This Privacy Policy explains how we collect, use, disclose, and protect your information when you use our website and services. +

    + +

    2. Information We Collect

    +

    + We may collect the following types of information: +

      +
    • Personal Information: When you register or interact with our services, we may collect personal details such as your name, email address, and contact information.
    • +
    • Usage Data: We automatically collect information about how you access and use our services, including your IP address, browser type, pages visited, and the time spent on each page.
    • +
    +

    + +

    3. How We Use Your Information

    +

    + We use the information we collect for various purposes, including: +

      +
    • To provide and maintain our services
    • +
    • To notify you about changes to our services
    • +
    • To allow you to participate in interactive features of our service
    • +
    • To provide customer support
    • +
    • To gather analysis or valuable information so that we can improve our services
    • +
    +

    + +

    4. Sharing Your Information

    +

    + We do not sell or rent your personal information to third parties. We may share your information with: +

      +
    • Service Providers: We may employ third-party companies and individuals to facilitate our services, provide the service on our behalf, or perform service-related services.
    • +
    • Compliance with Laws: We may disclose your personal information if required to do so by law or in response to valid requests by public authorities.
    • +
    +

    + +

    5. Data Security

    +

    + The security of your data is important to us, and we strive to implement and maintain reasonable, commercially acceptable security procedures and practices appropriate to the nature of the information we store to protect it from unauthorized access, destruction, use, modification, or disclosure. +

    + +

    6. Your Data Protection Rights

    +

    + You have the right to request access to the personal information we hold about you. You can also request that we correct any inaccuracies in your data or delete your personal information in certain circumstances. +

    + +

    7. Changes to This Privacy Policy

    +

    + We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. +

    + +

    8. Contact Us

    +

    + If you have any questions about this Privacy Policy, please contact us: +

    +

    +
    + +
    +
    + ); +}; + +export default PrivacyPolicy; \ No newline at end of file diff --git a/frontend/src/appComponents/Terms.tsx b/frontend/src/appComponents/Terms.tsx new file mode 100644 index 0000000..7545ed9 --- /dev/null +++ b/frontend/src/appComponents/Terms.tsx @@ -0,0 +1,75 @@ +"use client"; +import { Button } from "@/components/ui/button"; +import Footer from "./Footer"; +import { Navigation } from "./Navbar"; + +const Terms = () => { + return ( +
    +
    +
    +
    +

    Terms and Conditions

    +

    Please read these terms carefully.

    + + + +
    +
    + + + +
    +

    1. Introduction

    +

    + Welcome to dypcetclubs.live. These terms and conditions outline the rules and regulations for the use of our website and services. By accessing this website, you agree to comply with these terms. +

    + +

    2. Use of the Service

    +

    + You agree to use our services only for lawful purposes and in a manner that does not infringe the rights of, restrict, or inhibit anyone else's use of the service. +

    + +

    3. Account Registration

    +

    + You may need to create an account to access certain features of our services. You agree to provide accurate and complete information during the registration process and keep your account information updated. +

    + +

    4. Intellectual Property

    +

    + All content, trademarks, and other intellectual property on our website are owned by us or our licensors. You are granted a limited license to access and use the site for personal, non-commercial purposes. +

    + +

    5. Limitation of Liability

    +

    + In no event shall dypcetclubs.live, its directors, employees, partners, agents, suppliers, or affiliates be liable for any indirect, incidental, special, consequential, or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses. +

    + +

    6. Changes to Terms

    +

    + We reserve the right to modify these terms at any time. We will notify you of any changes by posting the new Terms and Conditions on this page. +

    + +

    7. Governing Law

    +

    + These terms shall be governed by and construed in accordance with the laws of [Your Country/State]. Any legal action or proceeding arising under these terms will be brought exclusively in the courts located in [Your Jurisdiction]. +

    + +

    8. Contact Us

    +

    + If you have any questions about these Terms and Conditions, please contact us: +

    +

    +
    + +
    +
    + ); +}; + +export default Terms; From e15b3fd9ce04c593b5019e5d90aea24441dae38f Mon Sep 17 00:00:00 2001 From: Dhruv Pahuja Date: Thu, 17 Oct 2024 23:11:22 +0530 Subject: [PATCH 3/5] final resolve in fix-bug-80 --- frontend/src/appComponents/About.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/appComponents/About.tsx b/frontend/src/appComponents/About.tsx index ae07998..057159f 100644 --- a/frontend/src/appComponents/About.tsx +++ b/frontend/src/appComponents/About.tsx @@ -6,6 +6,7 @@ import { Accordion,AccordionContent,AccordionItem, AccordionTrigger } from "@/co import { Input } from "@/components/magicui/input" import { useState } from "react" import { useNavigate } from "react-router-dom" +import Footer from "./Footer" // import { Navigation } from "./Navbar" //import { Navigation } from "./Navdar" From cf015e352ff27c71eb102668786f817a4258f543 Mon Sep 17 00:00:00 2001 From: Dhruv Pahuja Date: Thu, 17 Oct 2024 23:15:05 +0530 Subject: [PATCH 4/5] added footer in about --- frontend/src/appComponents/About.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/appComponents/About.tsx b/frontend/src/appComponents/About.tsx index ae07998..057159f 100644 --- a/frontend/src/appComponents/About.tsx +++ b/frontend/src/appComponents/About.tsx @@ -6,6 +6,7 @@ import { Accordion,AccordionContent,AccordionItem, AccordionTrigger } from "@/co import { Input } from "@/components/magicui/input" import { useState } from "react" import { useNavigate } from "react-router-dom" +import Footer from "./Footer" // import { Navigation } from "./Navbar" //import { Navigation } from "./Navdar" From de4f8c96170149308c14ea16a8c6eceedb211da2 Mon Sep 17 00:00:00 2001 From: yash ainapure Date: Fri, 18 Oct 2024 08:17:32 +0530 Subject: [PATCH 5/5] Update App.tsx --- frontend/src/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 5f9d099..0fb4676 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,5 +1,5 @@ import { useState } from "react"; -import { Route, Routes, BrowserRouter as Router, Outlet } from "react-router-dom"; +import { Route, Routes, BrowserRouter as Router } from "react-router-dom"; import { Navbar } from "./appComponents/Navbar"; import Hero from "./appComponents/Herosection"; import Clubs from "./appComponents/Clubs";