"use client"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { LayoutDashboard, LogOut } from "lucide-react"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { authClient } from "@/lib/auth-client"; import { toast } from "@/lib/toast"; function getInitials(nameOrEmail: string) { const normalized = nameOrEmail.trim(); if (!normalized) return "U"; const parts = normalized.split(/\s+/).filter(Boolean); if (parts.length >= 2) { return `${parts[0][0]}${parts[1][0]}`.toUpperCase(); } return normalized.slice(0, 2).toUpperCase(); } type CanvasUserMenuProps = { compact?: boolean; }; export function CanvasUserMenu({ compact = false }: CanvasUserMenuProps) { const t = useTranslations('toasts'); const router = useRouter(); const { data: session, isPending } = authClient.useSession(); const displayName = session?.user.name?.trim() || session?.user.email || "Nutzer"; const initials = getInitials(displayName); const handleSignOut = async () => { toast.info(t('auth.signedOut')); await authClient.signOut(); router.replace("/auth/sign-in"); router.refresh(); }; if (isPending && !session?.user) { return (
{displayName}
{session?.user.email ? ({session.user.email}
) : null}