Skip to content

Commit c3399d3

Browse files
committed
Rework user profile
1 parent 482fea1 commit c3399d3

File tree

7 files changed

+75
-7
lines changed

7 files changed

+75
-7
lines changed

apps/client/src/components/Pages/User/UserDetailsTab.tsx

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
1-
import UserDetailsForm from '../../User/UserDetailsForm';
1+
import { Link } from 'react-router-dom';
2+
import IconButton from '../../IconButton';
3+
import { BsPencil } from 'react-icons/bs';
4+
import UserProfileCard from '../../UserProfileCard';
25

36
function UserDetailsTab() {
47
return (
58
<div className="mt-8">
6-
<h2 className="mb-4 text-3xl">User Details</h2>
7-
<UserDetailsForm />
9+
<h2 className="mb-6 text-3xl">My account</h2>
10+
<UserProfileCard />
11+
<div className="py-6">
12+
<Link
13+
to="update"
14+
className="inline-block"
15+
>
16+
<IconButton icon={BsPencil}>Edit profile</IconButton>
17+
</Link>
18+
</div>
819
</div>
920
);
1021
}

apps/client/src/components/Pages/User/UserSettingsPage.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ function UserSettingsPage() {
1313
icon={BsSliders}
1414
title="User Settings"
1515
>
16-
<GoBackButton />
16+
<GoBackButton to="/dashboard" />
1717
</SecondaryNavbar>
1818
<SettingsLayout sidebar={<UserSettingsSidebar />}>
1919
<Outlet />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import UserDetailsForm from '../../User/UserDetailsForm';
2+
3+
function UserUpdateTab() {
4+
return (
5+
<div className="mt-8">
6+
<h2 className="mb-4 text-3xl">Edit user Details</h2>
7+
<UserDetailsForm />
8+
</div>
9+
);
10+
}
11+
export default UserUpdateTab;

apps/client/src/components/Router.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import RegisterSelect from './RegisterSelect';
4545
import { ProtectedRoute, PublicRoute } from './SpecialRoutes';
4646
import EmailConfirmPage from './Pages/EmailConfirmPage';
4747
import PasswordResetPage from './Pages/PasswordResetPage';
48+
import UserUpdateTab from './Pages/User/UserUpdateTab';
4849

4950
function Router() {
5051
const router = createBrowserRouter([
@@ -124,6 +125,10 @@ function Router() {
124125
path: '',
125126
element: <UserDetailsTab />,
126127
},
128+
{
129+
path: 'update',
130+
element: <UserUpdateTab />,
131+
},
127132
{
128133
path: 'security',
129134
element: <UserSecurityTab />,

apps/client/src/components/UserAvatar.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ function UserAvatar({ user, variant = 'square', size = 6 }: UserAvatarProps) {
1111
return (
1212
<div style={{ width: `${size / 4}rem` }}>
1313
<img
14-
height={64}
15-
width={64}
14+
height={size * 4}
15+
width={size * 4}
1616
className={classNames(
1717
'w-100',
1818
{

apps/client/src/components/UserInfo.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ function UserInfo() {
3232
user={user}
3333
variant="circle"
3434
/>
35-
<div>{user.email}</div>
35+
<div>{user.username}</div>
3636
{user.isDemo && (
3737
<Badge>
3838
<BsPerson />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { useContext } from 'react';
2+
import { UserContext } from '../context/UserContext';
3+
import UserAvatar from './UserAvatar';
4+
5+
function UserProfileCard() {
6+
const { user } = useContext(UserContext);
7+
8+
console.log(user);
9+
10+
return (
11+
<div className="my-4 flex flex-col overflow-hidden rounded-md border">
12+
<div className="flex gap-5 bg-gray-150 p-6">
13+
<UserAvatar
14+
user={user}
15+
variant="circle"
16+
size={22}
17+
/>
18+
<div className="flex flex-col justify-center">
19+
<div className="text-lg font-semibold">{user.username}</div>
20+
<div className="text-muted">{user.email}</div>
21+
{user.isDemo && <div className="text-danger">(Temporary demonstration account)</div>}
22+
</div>
23+
</div>
24+
<div className="flex flex-col gap-4 px-8 py-6">
25+
<div>
26+
<div className="font-medium">Username</div>
27+
<div className="text-muted">{user.username}</div>
28+
</div>
29+
<div>
30+
<div className="font-medium">E-mail</div>
31+
<div className="text-muted">{user.email}</div>
32+
</div>
33+
<div>
34+
<div className="font-medium">Internal ID</div>
35+
<code>{user.id}</code>
36+
</div>
37+
</div>
38+
</div>
39+
);
40+
}
41+
export default UserProfileCard;

0 commit comments

Comments
 (0)