feat: enhance UserInfo component to conditionally display user details

This commit is contained in:
Yoga Pangestu 2026-04-14 23:10:44 +07:00
parent eaa2662eed
commit 53fc170a7e
2 changed files with 14 additions and 12 deletions

View File

@ -1,5 +1,4 @@
import { usePage } from '@inertiajs/react'; import { usePage } from '@inertiajs/react';
import { ChevronsUpDown } from 'lucide-react';
import { import {
DropdownMenu, DropdownMenu,
DropdownMenuContent, DropdownMenuContent,
@ -31,11 +30,10 @@ export function NavUser() {
<DropdownMenuTrigger asChild> <DropdownMenuTrigger asChild>
<SidebarMenuButton <SidebarMenuButton
size="lg" size="lg"
className="group text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent" className="group hover:bg-transparent data-[state=open]:bg-transparent"
data-test="sidebar-menu-button" data-test="sidebar-menu-button"
> >
<UserInfo user={auth.user} /> <UserInfo user={auth.user} showDetails={false} />
<ChevronsUpDown className="ml-auto size-4" />
</SidebarMenuButton> </SidebarMenuButton>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent <DropdownMenuContent

View File

@ -5,9 +5,11 @@ import type { User } from '@/types';
export function UserInfo({ export function UserInfo({
user, user,
showEmail = false, showEmail = false,
showDetails = true,
}: { }: {
user: User; user: User;
showEmail?: boolean; showEmail?: boolean;
showDetails?: boolean;
}) { }) {
const getInitials = useInitials(); const getInitials = useInitials();
@ -19,14 +21,16 @@ export function UserInfo({
{getInitials(user.name)} {getInitials(user.name)}
</AvatarFallback> </AvatarFallback>
</Avatar> </Avatar>
<div className="grid flex-1 text-left text-sm leading-tight"> {showDetails && (
<span className="truncate font-medium">{user.name}</span> <div className="grid flex-1 text-left text-sm leading-tight">
{showEmail && ( <span className="truncate font-medium">{user.name}</span>
<span className="truncate text-xs text-muted-foreground"> {showEmail && (
{user.email} <span className="truncate text-xs text-muted-foreground">
</span> {user.email}
)} </span>
</div> )}
</div>
)}
</> </>
); );
} }