diff --git a/client/src/features/usersV2/show/UserAvatar.module.scss b/client/src/features/usersV2/show/UserAvatar.module.scss index ba1a034ce5..83f7ddde52 100644 --- a/client/src/features/usersV2/show/UserAvatar.module.scss +++ b/client/src/features/usersV2/show/UserAvatar.module.scss @@ -26,4 +26,9 @@ --size: 56px; --font-size: 24px; } + + &.extraLarge { + --size: 56px; + --font-size: 24px; + } } diff --git a/client/src/features/usersV2/show/UserShow.tsx b/client/src/features/usersV2/show/UserShow.tsx index 3c9cd67e60..499976f65b 100644 --- a/client/src/features/usersV2/show/UserShow.tsx +++ b/client/src/features/usersV2/show/UserShow.tsx @@ -19,13 +19,13 @@ import { skipToken } from "@reduxjs/toolkit/query"; import cx from "classnames"; import { useEffect } from "react"; +import { InfoCircle, JournalAlbum } from "react-bootstrap-icons"; import { generatePath, useNavigate, useParams, } from "react-router-dom-v5-compat"; -import { Badge, Col, Row } from "reactstrap"; - +import { Badge, Card, CardBody, CardHeader, Col, Row } from "reactstrap"; import { Loader } from "../../../components/Loader"; import ContainerWrap from "../../../components/container/ContainerWrap"; import { ABSOLUTE_ROUTES } from "../../../routing/routes.constants"; @@ -34,13 +34,16 @@ import DataConnectorsBox from "../../dataConnectorsV2/components/DataConnectorsB import { useGetNamespacesByNamespaceSlugQuery } from "../../projectsV2/api/projectV2.enhanced-api"; import ProjectV2ListDisplay from "../../projectsV2/list/ProjectV2ListDisplay"; import UserNotFound from "../../projectsV2/notFound/UserNotFound"; -import { EntityPill } from "../../searchV2/components/SearchV2Results"; -import { useGetUserByIdQuery, useGetUserQuery } from "../api/users.api"; -import UserAvatar, { UserAvatarSize } from "./UserAvatar"; +import { + useGetUserByIdQuery, + useGetUserQuery, + UserWithId, +} from "../api/users.api"; +import UserAvatar, { AvatarTypeWrap, UserAvatarSize } from "./UserAvatar"; +import { EntityWatermark } from "../../../components/entityWatermark/EntityWatermark"; export default function UserShow() { const { username } = useParams<{ username: string }>(); - const navigate = useNavigate(); const { @@ -50,6 +53,7 @@ export default function UserShow() { } = useGetNamespacesByNamespaceSlugQuery( username ? { namespaceSlug: username } : skipToken ); + const { data: user, isLoading: isLoadingUser, @@ -60,6 +64,11 @@ export default function UserShow() { : skipToken ); + const name = + user?.first_name && user?.last_name + ? `${user.first_name} ${user.last_name}` + : user?.first_name || user?.last_name; + const isLoading = isLoadingNamespace || isLoadingUser; const error = namespaceError ?? userError; @@ -82,66 +91,65 @@ export default function UserShow() { return ; } - const name = - user.first_name && user.last_name - ? `${user.first_name} ${user.last_name}` - : user.first_name || user.last_name; - - return ( - -
-
-
-
- -

{name ?? "Unknown user"}

-
- -
- - -
-
-

{`@${username}`}

-
+ const information = ( +
+
+ + Identifier:
+
@{username}
+
+ ); -
-

Personal Projects

- -
-
- - - - - -
+ return ( + + + + + + + + + + + + + + + + + + + + + +
+

+ + Info +

+
+
+ {information} +
+ +
+ +
); } @@ -171,3 +179,28 @@ function ItsYouBadge({ username }: ItsYouBadgeProps) { return null; } + +function UserHeader({ + username, + name, +}: { + user: UserWithId; + username: string; + name: string; +}) { + return ( +
+
+ + + +
+

{name}

+
+ +
+
+
+
+ ); +}