"use client"; import { RiHistoryLine, RiLogoutCircleLine, RiMessageLine, RiSettings2Line, } from "@remixicon/react"; import Image from "next/image"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useMemo, useState } from "react"; import { FeedbackDialogBody } from "@/components/feedback/feedback-dialog"; import { Dialog, DialogTrigger } from "@/components/ui/dialog"; import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Spinner } from "@/components/ui/spinner"; import { authClient } from "@/lib/auth/client"; import { getAvatarSrc } from "@/lib/pagadores/utils"; import { cn } from "@/lib/utils/ui"; import { version } from "@/package.json"; import { Badge } from "../ui/badge"; const itemClass = "flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors hover:bg-accent"; type TopbarUserProps = { user: { id: string; name: string; email: string; image: string | null; }; pagadorAvatarUrl: string | null; }; export function TopbarUser({ user, pagadorAvatarUrl }: TopbarUserProps) { const router = useRouter(); const [logoutLoading, setLogoutLoading] = useState(false); const [feedbackOpen, setFeedbackOpen] = useState(false); const avatarSrc = useMemo(() => { if (pagadorAvatarUrl) return getAvatarSrc(pagadorAvatarUrl); if (user.image) return user.image; return getAvatarSrc(null); }, [user.image, pagadorAvatarUrl]); async function handleLogout() { await authClient.signOut({ fetchOptions: { onSuccess: () => router.push("/login"), onRequest: () => setLogoutLoading(true), onResponse: () => setLogoutLoading(false), }, }); } return ( {user.name}
{user.name} {user.email}
Ajustes Changelog v{version}
setFeedbackOpen(false)} />
); }