From 0017aff5f4727055b5f31b0ebb0f9e88ef50cbbe Mon Sep 17 00:00:00 2001 From: Hafid Nur <73023445+hafidnrzs@users.noreply.github.com> Date: Thu, 27 Nov 2025 16:08:39 +0700 Subject: [PATCH] feat(hackathon): dark mode for user page --- .../src/app/users/[userId]/layout.tsx | 24 ++++-- .../hackathon/src/app/users/[userId]/page.tsx | 83 +++++++++++-------- 2 files changed, 67 insertions(+), 40 deletions(-) diff --git a/apps/hackathon/src/app/users/[userId]/layout.tsx b/apps/hackathon/src/app/users/[userId]/layout.tsx index d9dd3cd..978bb39 100644 --- a/apps/hackathon/src/app/users/[userId]/layout.tsx +++ b/apps/hackathon/src/app/users/[userId]/layout.tsx @@ -6,21 +6,33 @@ const UserDetailLayout: FC = (): ReactElement => { const [sidebarOpen, setSidebarOpen] = useState(false); return ( -
+
setSidebarOpen(false)} />
{/* Mobile Header with Hamburger */} -
+
-

Hackathon

+

+ Hackathon +

diff --git a/apps/hackathon/src/app/users/[userId]/page.tsx b/apps/hackathon/src/app/users/[userId]/page.tsx index 3d030cf..a6386e8 100644 --- a/apps/hackathon/src/app/users/[userId]/page.tsx +++ b/apps/hackathon/src/app/users/[userId]/page.tsx @@ -5,6 +5,7 @@ import { useUserDetailsById, useTeamsByUserId, } from '@imphnen-frontend-service/service'; +import { Icon } from '@iconify/react'; const UserProfilePage: FC = (): ReactElement => { const { userId } = useParams<{ userId: string }>(); @@ -17,8 +18,8 @@ const UserProfilePage: FC = (): ReactElement => { if (isLoading) { return ( -
-
+
+
Loading user profile...
@@ -27,7 +28,7 @@ const UserProfilePage: FC = (): ReactElement => { if (error || !user) { return ( -
+

User not found

@@ -42,9 +43,9 @@ const UserProfilePage: FC = (): ReactElement => { } return ( -
+
{/* Header */} -
+
@@ -52,12 +53,12 @@ const UserProfilePage: FC = (): ReactElement => { {user.fullname} ) : ( -
- - 👤 +
+ +
)} @@ -65,13 +66,17 @@ const UserProfilePage: FC = (): ReactElement => {

{user.fullname}

-

+

{user.email}

{user.location && (
- - 📍 {user.location} + + + {user.location}
)} @@ -90,11 +95,11 @@ const UserProfilePage: FC = (): ReactElement => {
{/* About Section */} {user.bio && ( -
+

About

-

+

{user.bio}

@@ -102,7 +107,7 @@ const UserProfilePage: FC = (): ReactElement => { {/* Skills Section */} {user.skills && user.skills.length > 0 && ( -
+

Skills

@@ -110,7 +115,7 @@ const UserProfilePage: FC = (): ReactElement => { {user.skills.map((skill: string) => ( {skill} @@ -121,7 +126,7 @@ const UserProfilePage: FC = (): ReactElement => { {/* Teams Section */} {userTeams.length > 0 ? ( -
+

Teams ({userTeams.length})

@@ -130,37 +135,47 @@ const UserProfilePage: FC = (): ReactElement => { - {team.name} +
+ {team.name} +
{team.logo && ( {team.name} )}
-

+

{team.name}

-
+

- 📍 {team.city} + + {team.city}

- 👥 {team.members?.length || 0} members + + {team.members?.length || 0} members

-

+

{team.description}

@@ -169,13 +184,13 @@ const UserProfilePage: FC = (): ReactElement => {
) : ( -
+

Teams

👥
-

+

Not in any team yet

@@ -186,13 +201,13 @@ const UserProfilePage: FC = (): ReactElement => { {/* Sidebar */}
{/* Contact Info */} -
+

Contact Information

-

+

Email

@@ -201,7 +216,7 @@ const UserProfilePage: FC = (): ReactElement => {

{user.location && (
-

+

Location