import Image from "next/image"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { Menu, Transition } from "@headlessui/react"; import { t } from "@lingui/core/macro"; import { Fragment } from "react"; import { twMerge } from "tailwind-merge"; import { authClient } from "@kan/auth/client"; import { useIsMobile } from "~/hooks/useMediaQuery"; import { useModal } from "~/providers/modal"; import { useTheme } from "next-themes"; import { getAvatarUrl } from "~/utils/helpers"; interface UserMenuProps { imageUrl: string | undefined; email: string; isLoading: boolean; isCollapsed?: boolean; onCloseSideNav?: () => void; } export default function UserMenu({ imageUrl, email, isLoading, isCollapsed = false, onCloseSideNav, }: UserMenuProps) { const router = useRouter(); const { theme, setTheme } = useTheme(); const { openModal } = useModal(); const isMobile = useIsMobile(); const handleLogout = async () => { if (onCloseSideNav && isMobile) { onCloseSideNav(); } await authClient.signOut(); router.push("/login"); }; const handleLinkClick = () => { if (onCloseSideNav && isMobile) { onCloseSideNav(); } }; const handleModalOpen = (modalType: string) => { if (onCloseSideNav && isMobile) { onCloseSideNav(); } openModal(modalType); }; const avatarUrl = imageUrl ? getAvatarUrl(imageUrl) : null; return (
); }