import { Children, useCallback, useState } from "react"; import { Translate, useAuthProvider, useGetIdentity, useLogout, UserMenuContext, } from "ra-core"; import { LogOut } from "lucide-react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; export type UserMenuProps = { children?: React.ReactNode; }; /** * A user menu component displayed in the top right corner of the admin layout. * * Provides access to user-related actions such as profile, settings, and logout. * Displays the user's avatar and name from the identity provider, and includes a logout option. * Only displays in applications using authentication. * * @see {@link https://marmelab.com/shadcn-admin-kit/docs/usermenu UserMenu documentation} */ export function UserMenu({ children }: UserMenuProps) { const authProvider = useAuthProvider(); const { data: identity } = useGetIdentity(); const logout = useLogout(); const [open, setOpen] = useState(false); const handleToggleOpen = useCallback(() => { setOpen((prevOpen) => !prevOpen); }, []); const handleClose = useCallback(() => { setOpen(false); }, []); if (!authProvider) return null; return (

{identity?.fullName}

{children} {Children.count(children) > 0 && } logout()} className="cursor-pointer"> Log out
); }