From 939773551b18d4926c31609443b4bda261b6f6e2 Mon Sep 17 00:00:00 2001 From: Adarsh Thakare Date: Fri, 1 Aug 2025 08:17:58 +0530 Subject: [PATCH 1/4] Buggy Code --- app/(root)/components/AchievementsCard.tsx | 18 - app/(root)/components/Hero.tsx | 80 ---- app/(root)/components/SignInButton.tsx | 13 - app/(root)/components/SignOutButton.tsx | 14 - app/(root)/components/hero.css | 73 ---- app/(root)/layout.tsx | 382 ++------------------ app/(root)/{home => }/page.tsx | 6 +- app/(root)/profile/page.tsx | 8 +- app/(root)/project/ProjectList.tsx | 4 +- app/(root)/project/[id]/Detail.tsx | 2 +- app/(root)/project/create/[id]/page.tsx | 2 +- app/components/AchievementsCard.tsx | 20 + app/{(root) => }/components/Badge.tsx | 0 app/{(root) => }/components/EditProfile.tsx | 0 app/components/Nav/ProfileButton.tsx | 24 ++ app/components/Nav/SignInButton.tsx | 22 ++ app/components/Nav/SignOutButton.tsx | 15 + app/{(root) => }/components/ProfileCard.tsx | 4 +- app/components/Sidebar.tsx | 291 +++++++++++++++ app/{(root) => }/components/Signature.tsx | 2 + app/utils/userActions.ts | 3 +- next.config.ts | 10 +- package-lock.json | 10 + package.json | 1 + public/devguild_logo.png | Bin 0 -> 64218 bytes 25 files changed, 434 insertions(+), 570 deletions(-) delete mode 100644 app/(root)/components/AchievementsCard.tsx delete mode 100644 app/(root)/components/Hero.tsx delete mode 100644 app/(root)/components/SignInButton.tsx delete mode 100644 app/(root)/components/SignOutButton.tsx delete mode 100644 app/(root)/components/hero.css rename app/(root)/{home => }/page.tsx (93%) create mode 100644 app/components/AchievementsCard.tsx rename app/{(root) => }/components/Badge.tsx (100%) rename app/{(root) => }/components/EditProfile.tsx (100%) create mode 100644 app/components/Nav/ProfileButton.tsx create mode 100644 app/components/Nav/SignInButton.tsx create mode 100644 app/components/Nav/SignOutButton.tsx rename app/{(root) => }/components/ProfileCard.tsx (94%) create mode 100644 app/components/Sidebar.tsx rename app/{(root) => }/components/Signature.tsx (96%) create mode 100644 public/devguild_logo.png diff --git a/app/(root)/components/AchievementsCard.tsx b/app/(root)/components/AchievementsCard.tsx deleted file mode 100644 index 03e2764..0000000 --- a/app/(root)/components/AchievementsCard.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from "react"; - -const AchievementsCard = () => { - return ( - <> -
-
-

Achievements

-
-
- Lorem Ipsum -
-
- - ); -}; - -export default AchievementsCard; diff --git a/app/(root)/components/Hero.tsx b/app/(root)/components/Hero.tsx deleted file mode 100644 index ad06802..0000000 --- a/app/(root)/components/Hero.tsx +++ /dev/null @@ -1,80 +0,0 @@ -"use client"; -import React, { useCallback, useEffect, useState } from "react"; -import "./hero.css"; -import Image from "next/image"; - -interface Image { - src: string; - label: string; -} - -const images: Image[] = [ - { src: "/devs.png", label: "Adarsh" }, - { src: "/devs.png", label: "Adarsh" }, - { src: "/devs.png", label: "Adarsh" }, - { src: "/devs.png", label: "Adarsh" }, -]; - -const Hero: React.FC = () => { - const [activeImage, setActiveImage] = useState(0); - const [exiting, setExiting] = useState(false); - const [textEditing, setTextEditing] = useState(false); - - console.log(textEditing); - - const handleButtonClick = useCallback( - (index: number): void => { - if (index !== activeImage) { - setExiting(true); - setTextEditing(true); - setTimeout(() => { - setActiveImage(index); - setExiting(false); - setTimeout(() => { - setTextEditing(false); - }, 720); - }, 500); - } - }, - [activeImage, setExiting, setTextEditing, setActiveImage] - ); - // Handle automatic image rotation every 2 seconds - useEffect(() => { - const interval = setInterval(() => { - const nextIndex = (activeImage + 1) % images.length; - handleButtonClick(nextIndex); - }, 4000); // Rotate every 2 seconds - - return () => clearInterval(interval); // Cleanup interval on component unmount - }, [activeImage, handleButtonClick]); - - return ( - <> -
- {activeImage !== null && ( - <> -
-
-
- {images[activeImage].label} -
-
- - )} -
- - ); -}; - -export default Hero; diff --git a/app/(root)/components/SignInButton.tsx b/app/(root)/components/SignInButton.tsx deleted file mode 100644 index 5a95139..0000000 --- a/app/(root)/components/SignInButton.tsx +++ /dev/null @@ -1,13 +0,0 @@ -"use client"; -import { signIn } from "next-auth/react"; - -export default function SignInButton() { - return ( - - ); -} diff --git a/app/(root)/components/SignOutButton.tsx b/app/(root)/components/SignOutButton.tsx deleted file mode 100644 index 56a689b..0000000 --- a/app/(root)/components/SignOutButton.tsx +++ /dev/null @@ -1,14 +0,0 @@ -"use client"; - -import { signOut } from "next-auth/react"; - -export default function SignOutButton() { - return ( - - ); -} diff --git a/app/(root)/components/hero.css b/app/(root)/components/hero.css deleted file mode 100644 index ccf756e..0000000 --- a/app/(root)/components/hero.css +++ /dev/null @@ -1,73 +0,0 @@ -.Top-container { - position: relative; - display: flex; - align-items: center; - justify-content: center; - width: 100vw; - /* overflow-x: hidden; */ -} - -.Slider { - border-radius: 50%; - background: linear-gradient(rgb(198, 230, 246), rgb(198, 230, 246)), - url("/noise.svg"); - filter: contrast(100%) brightness(100%); - -webkit-mask: radial-gradient(transparent 36rem, #000 90px); - mask: radial-gradient(transparent 36rem, #000 90px); -} - -@keyframes exitAnimation { - 0% { - transform: rotate(135deg); - } - 100% { - transform: rotate(270deg); - } -} - -@keyframes enterAnimation { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(135deg); - } -} - -@keyframes textExitAnimation { - 0% { - opacity: 1; - transform: translateY(0); - } - 100% { - opacity: 0; - transform: translateY(-20px); - } -} - -@keyframes textEnterAnimation { - 0% { - opacity: 0; - transform: translateY(20px); - } - 100% { - opacity: 1; - transform: translateY(0); - } -} - -.exit-animation { - animation: exitAnimation 1.2s forwards ease-in-out; -} - -.enter-animation { - animation: enterAnimation 1.2s forwards ease; -} - -.text-exit-animation { - animation: textExitAnimation 0.5s forwards ease-in-out; -} - -.text-enter-animation { - animation: textEnterAnimation 0.6s forwards ease-in-out; -} diff --git a/app/(root)/layout.tsx b/app/(root)/layout.tsx index f026a56..c4522fa 100644 --- a/app/(root)/layout.tsx +++ b/app/(root)/layout.tsx @@ -4,373 +4,57 @@ import Image from "next/image"; import Link from "next/link"; import { usePathname, useRouter } from "next/navigation"; import { useState, useRef, useEffect } from "react"; -import SignInButton from "./components/SignInButton"; +import SignInButton from "../components/Nav/SignInButton"; import { fetchUserData } from "../utils/userActions"; import useAuthStore from "../store/useAuthStore"; -import SignOutButton from "./components/SignOutButton"; +import SignOutButton from "../components/Nav/SignOutButton"; +import Sidebar from "../components/Sidebar"; export default function RootLayout({ children, }: { children: React.ReactNode; }) { - const [isOpen, setIsOpen] = useState(false); - const sidebarRef = useRef(null); - const pathname = usePathname(); - const router = useRouter(); - - const toggleSidebar = () => { - setIsOpen(!isOpen); - }; - - useEffect(() => { - function handleClickOutside(e: MouseEvent) { - if ( - sidebarRef.current && - !sidebarRef.current.contains(e.target as Node) - ) { - setIsOpen(false); - } - } - - if (isOpen) { - document.addEventListener("mousedown", handleClickOutside); - } else { - document.removeEventListener("mousedown", handleClickOutside); - } - - return () => { - document.removeEventListener("mousedown", handleClickOutside); - }; - }, [isOpen]); - + //calling user from zustand store const { user, setUser } = useAuthStore(); useEffect(() => { async function getUser() { - const user = await fetchUserData(); - setUser({ - id: user._id, - name: user.name, - email: user.email, - image: user.image, - codingPlatforms: user.codingPlatforms, - firstName: user.firstName, - lastName: user.lastName, - gender: user.gender, - skills: user.skills, - profilePic: user.profilePic, - instituteName: user.instituteName, - github: user.github, - linkedin: user.linkedin, - location: user.location, - projectsCompleted: user.projectsCompleted, - rank: user.rank, - projectIds: user.projectIds, - }); + console.log(0); + + try { + const user = await fetchUserData(); + + setUser({ + id: user._id, + name: user.name, + email: user.email, + image: user.image, + codingPlatforms: user.codingPlatforms, + firstName: user.firstName, + lastName: user.lastName, + gender: user.gender, + skills: user.skills, + profilePic: user.profilePic, + instituteName: user.instituteName, + github: user.github, + linkedin: user.linkedin, + location: user.location, + projectsCompleted: user.projectsCompleted, + rank: user.rank, + projectIds: user.projectIds, + }); + } catch (err) { + console.log(err); + } } - getUser(); }, [setUser]); return ( <> -
- DEVELOPERS' GUILD LOGO - - { - setIsOpen(false); - }} - > -
- Home -
- - - { - setIsOpen(false); - }} - > -
- Guild Card -
- - { - setIsOpen(false); - }} - > -
- Dashboard -
- - { - setIsOpen(false); - }} - > -
- Application -
- - { - setIsOpen(false); - }} - > -
- Help -
- - { - setIsOpen(false); - }} - > -
- Feedback -
- - - {/* For Mobile Devices Only */} -
-
-
- { - setIsOpen(false); - }} - > -
- Projects -
- - { - setIsOpen(false); - }} - > -
- Leaderboard -
- - { - setIsOpen(false); - }} - > -
- QnA -
- - { - setIsOpen(false); - }} - > -
- Settings -
- -
- -
-
-
- - DEVELOPERS' GUILD LOGO -
- - Projects - -
-
- - Leaderboard - -
-
- - QnA - -
-
- - Settings - -
-
-
- - {user ? : } -
-
- -
{children}
-
+ +
{children}
); } diff --git a/app/(root)/home/page.tsx b/app/(root)/page.tsx similarity index 93% rename from app/(root)/home/page.tsx rename to app/(root)/page.tsx index 94b5fa5..68afce3 100644 --- a/app/(root)/home/page.tsx +++ b/app/(root)/page.tsx @@ -1,7 +1,7 @@ import { Search } from "lucide-react"; import Image from "next/image"; import React from "react"; -import Hero from "../components/Hero"; +import { auth } from "../auth"; const page = () => { return ( @@ -39,9 +39,7 @@ const page = () => { Search -
- -
+
); }; diff --git a/app/(root)/profile/page.tsx b/app/(root)/profile/page.tsx index c906a91..c49c205 100644 --- a/app/(root)/profile/page.tsx +++ b/app/(root)/profile/page.tsx @@ -1,8 +1,8 @@ "use client"; import React, { useState, useEffect } from "react"; -import ProfileCard from "../components/ProfileCard"; -import AchievementsCard from "../components/AchievementsCard"; -import EditProfile from "../components/EditProfile"; +import ProfileCard from "../../components/ProfileCard"; +import AchievementsCard from "../../components/AchievementsCard"; +import EditProfile from "../../components/EditProfile"; import useAuthStore from "@/app/store/useAuthStore"; import { User } from "@/app/types/user"; @@ -70,7 +70,7 @@ const Page = () => { {!editProfile ? (
-
+
{/* Pass dynamic profileData to ProfileCard */} + ); +} diff --git a/app/components/Nav/SignOutButton.tsx b/app/components/Nav/SignOutButton.tsx new file mode 100644 index 0000000..22c8f64 --- /dev/null +++ b/app/components/Nav/SignOutButton.tsx @@ -0,0 +1,15 @@ +"use client"; +import { LogOut } from "lucide-react"; +import { signOut } from "next-auth/react"; + +export default function SignOutButton() { + return ( + + ); +} diff --git a/app/(root)/components/ProfileCard.tsx b/app/components/ProfileCard.tsx similarity index 94% rename from app/(root)/components/ProfileCard.tsx rename to app/components/ProfileCard.tsx index a12e506..956382e 100644 --- a/app/(root)/components/ProfileCard.tsx +++ b/app/components/ProfileCard.tsx @@ -7,9 +7,9 @@ import { User } from "@/app/types/user"; const ProfileCard = ({ profileData }: { profileData: User }) => { return ( -
+
-
+
diff --git a/app/components/Sidebar.tsx b/app/components/Sidebar.tsx new file mode 100644 index 0000000..20cb091 --- /dev/null +++ b/app/components/Sidebar.tsx @@ -0,0 +1,291 @@ +"use client"; +import Image from "next/image"; +import Link from "next/link"; +import { usePathname } from "next/navigation"; +import { useRouter } from "next/navigation"; +import React, { useEffect, useRef, useState } from "react"; +import useAuthStore from "../store/useAuthStore"; +import SignOutButton from "./Nav/SignOutButton"; +import SignInButton from "./Nav/SignInButton"; +import { Plus } from "lucide-react"; +import ProfileButton from "./Nav/ProfileButton"; + +const Sidebar = () => { + const [isOpen, setIsOpen] = useState(false); + const sidebarRef = useRef(null); + const pathname = usePathname(); + const router = useRouter(); + + const { user, setUser } = useAuthStore(); + + const toggleSidebar = () => { + setIsOpen(!isOpen); + }; + + //for handling closing and opening of the sidebar + useEffect(() => { + function handleClickOutside(e: MouseEvent) { + if ( + sidebarRef.current && + !sidebarRef.current.contains(e.target as Node) + ) { + setIsOpen(false); + } + } + + if (isOpen) { + document.addEventListener("mousedown", handleClickOutside); + } else { + document.removeEventListener("mousedown", handleClickOutside); + } + + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [isOpen]); + + return ( + <> +
+ DEVELOPERS' GUILD LOGO + + { + setIsOpen(false); + }} + > +
+ Home +
+ + + { + setIsOpen(false); + }} + > +
+ Profile +
+ + { + setIsOpen(false); + }} + > +
+ Dashboard +
+ + { + setIsOpen(false); + }} + > +
+ Application +
+ + { + setIsOpen(false); + }} + > +
+ Help +
+ + { + setIsOpen(false); + }} + > +
+ Feedback +
+ + + {/* For Mobile Devices Only */} +
+
+
+ { + setIsOpen(false); + }} + > +
+ Projects +
+ + { + setIsOpen(false); + }} + > +
+ QnA +
+ +
+ +
+
+
+ +
+ DEVELOPERS' GUILD LOGO +

+ DevGuild +

+
+ +
+ + Projects + +
+ +
+ + QnA + +
+
+
+ + +
+
+
+ + ); +}; + +export default Sidebar; diff --git a/app/(root)/components/Signature.tsx b/app/components/Signature.tsx similarity index 96% rename from app/(root)/components/Signature.tsx rename to app/components/Signature.tsx index 1445757..3141242 100644 --- a/app/(root)/components/Signature.tsx +++ b/app/components/Signature.tsx @@ -21,6 +21,8 @@ const SignatureCard = () => { {image ? ( Signature Preview diff --git a/app/utils/userActions.ts b/app/utils/userActions.ts index 2d3d827..96f5e09 100644 --- a/app/utils/userActions.ts +++ b/app/utils/userActions.ts @@ -5,9 +5,10 @@ import { auth } from "../auth"; export async function fetchUserData() { const session = await auth(); if (session?.user) { + console.log("=>"); try { const { data: user } = await axios.get( - `http://localhost:3000/api/user/${session.user.id}` + `${process.env.NEXT_PUBLIC_CLIENT_URL}/api/user/${session.user.id}` ); return user; } catch (error) { diff --git a/next.config.ts b/next.config.ts index f7cbb8c..39dfdcf 100644 --- a/next.config.ts +++ b/next.config.ts @@ -2,15 +2,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { /* config options here */ - async redirects() { - return [ - { - source: "/", - destination: "/home", - permanent: true, // Set to false if it's temporary - }, - ]; - }, + images: { dangerouslyAllowSVG: true, remotePatterns: [ diff --git a/package-lock.json b/package-lock.json index 47f5036..babd854 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "mongoose": "^8.9.2", "next": "15.1.2", "next-auth": "^5.0.0-beta.25", + "next-themes": "^0.4.6", "react": "^19.0.0", "react-dom": "^19.0.0", "react-icons": "^5.5.0", @@ -5312,6 +5313,15 @@ } } }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", diff --git a/package.json b/package.json index d1b7f93..b5e1544 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "mongoose": "^8.9.2", "next": "15.1.2", "next-auth": "^5.0.0-beta.25", + "next-themes": "^0.4.6", "react": "^19.0.0", "react-dom": "^19.0.0", "react-icons": "^5.5.0", diff --git a/public/devguild_logo.png b/public/devguild_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..770d753a47e8950e31e1504decc42d674f53de92 GIT binary patch literal 64218 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Ö~-VX&eDon0EF`Qu<3UA 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 literal 0 HcmV?d00001 From c45b0ea016d17c5cf2217e941de659ef11d83538 Mon Sep 17 00:00:00 2001 From: Prajyot Tayde Date: Sun, 19 Apr 2026 17:30:32 +0530 Subject: [PATCH 2/4] revamp UI and fix small bugs --- app/(root)/TableComponent.tsx | 50 +- app/(root)/TabsComponent2.tsx | 139 +++-- app/(root)/application/page.tsx | 69 ++- app/(root)/components/AchievementsCard.tsx | 46 +- app/(root)/components/Badge.tsx | 28 +- app/(root)/components/EditProfile.tsx | 305 +++++----- app/(root)/components/ProfileCard.tsx | 131 +++-- app/(root)/components/SignInButton.tsx | 4 +- app/(root)/components/SignOutButton.tsx | 11 +- app/(root)/components/Signature.tsx | 21 +- app/(root)/dashboard/UserProject.tsx | 432 ++++---------- app/(root)/dashboard/page.tsx | 78 +-- app/(root)/feedback/page.tsx | 137 +++-- app/(root)/help/page.tsx | 181 +++--- app/(root)/home/page.tsx | 189 ++++-- app/(root)/layout.tsx | 537 ++++++++---------- app/(root)/leaderboard/layout.tsx | 140 ++--- app/(root)/leaderboard/page.tsx | 111 ++-- app/(root)/notification/[id]/page.tsx | 101 ++-- app/(root)/notification/page.tsx | 94 ++- app/(root)/profile/page.tsx | 89 +-- app/(root)/project/ProjectList.tsx | 203 ++++--- app/(root)/project/Sidebar1.tsx | 284 +++++---- app/(root)/project/[id]/Detail.tsx | 138 ++--- app/(root)/project/[id]/ProjectUpdates.tsx | 123 ++-- app/(root)/project/[id]/Sidebar2.tsx | 164 +++--- app/(root)/project/[id]/page.tsx | 23 +- app/(root)/project/[id]/requests/page.tsx | 141 +++-- app/(root)/project/create/[id]/page.tsx | 397 +++++-------- app/(root)/project/page.tsx | 24 +- app/(root)/qna/page.tsx | 155 +++-- app/(root)/settings/page.tsx | 207 ++----- app/api/linkage/accept/[request_id]/route.ts | 2 +- .../leave/[user_id]/[project_id]/route.ts | 2 +- app/api/linkage/reject/[request_id]/route.ts | 2 +- .../request/[user_id]/[project_id]/route.ts | 4 +- app/api/user/[id]/route.ts | 4 +- app/globals.css | 379 ++++++++++++ app/layout.tsx | 17 +- app/store/useThemeStore.ts | 27 + srs.pdf | Bin 0 -> 79323 bytes tailwind.config.ts | 50 +- 42 files changed, 2822 insertions(+), 2417 deletions(-) create mode 100644 app/store/useThemeStore.ts create mode 100644 srs.pdf diff --git a/app/(root)/TableComponent.tsx b/app/(root)/TableComponent.tsx index 1c71aed..d995232 100644 --- a/app/(root)/TableComponent.tsx +++ b/app/(root)/TableComponent.tsx @@ -1,52 +1,38 @@ "use client"; import { useRouter } from "next/navigation"; import React from "react"; + const data = [ - { - id: 1, - platform: "LinkedIn", - title: "Pranav, Radhika Gupta has a new post for you", - description: "To every woman who sometimes wonders, can I do it, here is a thought...", - date: "Mar 17", - }, - { - id: 2, - platform: "LinkedIn", - title: "Pranav, Nikhil Kamath has a new post for you", - description: "Digressing from the post, but it's about time we need an Indian answer to...", - date: "Mar 14", - }, - { - id: 3, - platform: "LinkedIn", - title: "Pranav, Nikhil Kamath has a new post for you", - description: "Digressing from the post, but it's about time we need an Indian answer to...", - date: "Mar 12", - }, + { id: 1, platform: "LinkedIn", title: "Pranav, Radhika Gupta has a new post", description: "To every woman who sometimes wonders, can I do it...", date: "Mar 17" }, + { id: 2, platform: "LinkedIn", title: "Pranav, Nikhil Kamath has a new post", description: "Digressing from the post, but it's about time...", date: "Mar 14" }, + { id: 3, platform: "LinkedIn", title: "Pranav, Nikhil Kamath has a new post", description: "Digressing from the post, but it's about time...", date: "Mar 12" }, ]; - - const TableComponent = () => { const router = useRouter(); return ( - {data.map((item, index) => ( + {data.map((item) => ( router.push(`/notification/${item.id}`)} > - - - + - + ))} diff --git a/app/(root)/TabsComponent2.tsx b/app/(root)/TabsComponent2.tsx index f0ceb7e..02d4b1c 100644 --- a/app/(root)/TabsComponent2.tsx +++ b/app/(root)/TabsComponent2.tsx @@ -1,80 +1,95 @@ -'use client'; +"use client"; -import * as React from 'react'; -import Tabs from '@mui/material/Tabs'; -import Tab from '@mui/material/Tab'; -import Box from '@mui/material/Box'; +import * as React from "react"; +import Tabs from "@mui/material/Tabs"; +import Tab from "@mui/material/Tab"; +import Box from "@mui/material/Box"; interface TabPanelProps { - children?: React.ReactNode; - index: number; - value: number; + children?: React.ReactNode; + index: number; + value: number; } interface TabsProps { - tabTitles: string[]; - tabContents: React.ReactNode[]; + tabTitles: string[]; + tabContents: React.ReactNode[]; } function CustomTabPanel(props: TabPanelProps) { - const { children, value, index, ...other } = props; - - return ( - - ); + const { children, value, index, ...other } = props; + return ( + + ); } function a11yProps(index: number) { - return { - id: `simple-tab-${index}`, - 'aria-controls': `simple-tabpanel-${index}`, - }; + return { + id: `tab-${index}`, + "aria-controls": `tabpanel-${index}`, + }; } export default function TabsComponent2({ tabTitles, tabContents }: TabsProps) { - const [value, setValue] = React.useState(0); + const [value, setValue] = React.useState(0); - const handleChange = (event: React.SyntheticEvent, newValue: number) => { - setValue(newValue); - }; + const handleChange = (_event: React.SyntheticEvent, newValue: number) => { + setValue(newValue); + }; - return ( - - - - {tabTitles.map((title, index) => ( - - ))} - - - - {tabContents.map((content, index) => ( - - {content} - - ))} - - - ); + return ( + + + + {tabTitles.map((title, index) => ( + + ))} + + + + {tabContents.map((content, index) => ( + + {content} + + ))} + + + ); } diff --git a/app/(root)/application/page.tsx b/app/(root)/application/page.tsx index fdaa7d8..830ee9c 100644 --- a/app/(root)/application/page.tsx +++ b/app/(root)/application/page.tsx @@ -1,39 +1,60 @@ +"use client"; import React from "react"; import TabsComponent2 from "../TabsComponent2"; import TableComponent from "../TableComponent"; -import Image from "next/image"; +import useAuthStore from "@/app/store/useAuthStore"; +import { motion } from "framer-motion"; +import { Briefcase, Sparkles } from "lucide-react"; -// Tab contents with table components const tabContents = [ - , - , - , + , + , + , ]; -const Page = async () => { - // const requests = await fetchJoinRequests() - const tabTitles = ["Submitted(56)", "Bookmarks(23)", "Rejected(23)"]; +const Page = () => { + const { user } = useAuthStore(); + const tabTitles = ["Submitted", "Bookmarks", "Rejected"]; + return ( -
-
Hello, Rohit!
-
-
-

Welcome to Application Status.

-

- This page is designed to help you track and manage your project - collaboration applications with ease. View the status of your - submissions, from drafts to approved or rejected applications, all - in one place. Stay organized, keep track of your progress, and - refine your proposals for future opportunities. +

+ + Hello, {user?.firstName || "Developer"}! + + + +
+
+ +

Application Status

+
+

+ Track and manage your project collaboration applications. View submissions, + bookmarks, and stay informed about your progress.

-
- +
+
-
+
-
Applications
- + +

Applications

+ +
); }; diff --git a/app/(root)/components/AchievementsCard.tsx b/app/(root)/components/AchievementsCard.tsx index 03e2764..11715ed 100644 --- a/app/(root)/components/AchievementsCard.tsx +++ b/app/(root)/components/AchievementsCard.tsx @@ -1,17 +1,45 @@ import React from "react"; +import { Award } from "lucide-react"; const AchievementsCard = () => { return ( - <> -
-
-

Achievements

-
-
- Lorem Ipsum +
+
+

+ + Achievements +

+
+
+
+
+ +
+
+

First Project Completed

+

Complete your first project to earn this badge

+
-
- +
+
+ +
+
+

Team Player

+

Join 5 projects to unlock

+
+
+
+
+ +
+
+

S-Rank Developer

+

Reach S rank to unlock

+
+
+
+
); }; diff --git a/app/(root)/components/Badge.tsx b/app/(root)/components/Badge.tsx index f5631c0..3b2c7f4 100644 --- a/app/(root)/components/Badge.tsx +++ b/app/(root)/components/Badge.tsx @@ -5,27 +5,21 @@ type BadgeProps = { color: string; }; -const colorMap: { [key: string]: string } = { - red: "border-red-500 bg-red-100 text-red-500", - blue: "border-blue-500 bg-blue-100 text-blue-500", - yellow: "border-[#F2AF04] bg-[#FEF9E8] text-[#F2AF04]", - green: "border-green-500 bg-green-100 text-green-500", - purple: "border-purple-500 bg-purple-100 text-purple-500", - pink: "border-pink-500 bg-pink-100 text-pink-500", +const colorMap: { [key: string]: { bg: string; border: string; text: string; glow: string } } = { + red: { bg: "bg-red-500/10", border: "border-red-500/30", text: "text-red-500", glow: "shadow-[0_0_20px_rgba(239,68,68,0.3)]" }, + blue: { bg: "bg-blue-500/10", border: "border-blue-500/30", text: "text-blue-500", glow: "shadow-[0_0_20px_rgba(59,130,246,0.3)]" }, + yellow: { bg: "bg-amber-500/10", border: "border-amber-500/30", text: "text-amber-500", glow: "shadow-[0_0_20px_rgba(245,158,11,0.3)]" }, + green: { bg: "bg-green-500/10", border: "border-green-500/30", text: "text-green-500", glow: "shadow-[0_0_20px_rgba(16,185,129,0.3)]" }, + purple: { bg: "bg-purple-500/10", border: "border-purple-500/30", text: "text-purple-500", glow: "shadow-[0_0_20px_rgba(139,92,246,0.3)]" }, }; +const defaultColor = { bg: "bg-gray-500/10", border: "border-gray-500/30", text: "text-gray-500", glow: "" }; + const Badge: FC = ({ title, color }) => { + const c = colorMap[color] || defaultColor; return ( -
-
+
+
{title}
diff --git a/app/(root)/components/EditProfile.tsx b/app/(root)/components/EditProfile.tsx index 1044306..4e485da 100644 --- a/app/(root)/components/EditProfile.tsx +++ b/app/(root)/components/EditProfile.tsx @@ -3,13 +3,16 @@ import useAuthStore from "@/app/store/useAuthStore"; import { User } from "@/app/types/user"; import Image from "next/image"; import React, { useState } from "react"; +import { toast } from "sonner"; +import axios from "axios"; +import { X, Plus } from "lucide-react"; type EditProfileProps = { onProfileUpdate: (data: User) => void; }; const EditProfile = ({ onProfileUpdate }: EditProfileProps) => { - const { user } = useAuthStore(); + const { user, setUser } = useAuthStore(); const [firstName, setFirstName] = useState(user?.firstName || ""); const [lastName, setLastName] = useState(user?.lastName || ""); @@ -21,201 +24,233 @@ const EditProfile = ({ onProfileUpdate }: EditProfileProps) => { const [skills, setSkills] = useState(user?.skills || []); const [newSkill, setNewSkill] = useState(""); const [isChecked, setIsChecked] = useState(false); + const [isSubmitting, setIsSubmitting] = useState(false); - // Add new skill to the skills list const addSkill = () => { - if (newSkill.trim() && !skills.includes(newSkill)) { - setSkills([...skills, newSkill]); + if (newSkill.trim() && !skills.includes(newSkill.trim())) { + setSkills([...skills, newSkill.trim()]); setNewSkill(""); } }; - // Remove skill from the list const removeSkill = (index: number) => { setSkills(skills.filter((_, i) => i !== index)); }; - // Submit profile data - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); - const updatedProfileData = { + setIsSubmitting(true); + const toastId = toast.loading("Saving profile..."); + + const updatedProfileData: User = { firstName, lastName, id: user?.id || "", name: `${firstName} ${lastName}`, email, - collegeDetails: { - name: instituteName, - }, + collegeDetails: { name: instituteName }, location, skills, github, linkedin, }; - onProfileUpdate(updatedProfileData); + + try { + await axios.put( + `${process.env.NEXT_PUBLIC_CLIENT_URL}/api/user/${user?.id}`, + updatedProfileData + ); + + // Update Zustand store + setUser({ + ...user, + ...updatedProfileData, + id: user?.id || "", + }); + + toast.success("Profile updated successfully!", { id: toastId }); + onProfileUpdate(updatedProfileData); + } catch (error) { + console.error("Error updating profile:", error); + toast.error("Failed to update profile.", { id: toastId }); + } finally { + setIsSubmitting(false); + } }; return ( -
- {/* Left Section with Profile Image */} -
- e.stopPropagation()} /> + + e.stopPropagation()} + className="accent-brand-500" + /> {item.platform} - {item.title} - {item.description} + {item.platform} + {item.title} + — {item.description} {item.date}{item.date}