"use client"; import { useMemo } from "react"; import Link from "next/link"; import { redirect, useRouter } from "next/navigation"; import { useToggleTheme } from "@/components/theme-provider"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Separator } from "@/components/ui/separator"; import { UserAvatar } from "@/components/ui/user-avatar"; import { useSession } from "@/lib/auth/client"; import { useTranslation } from "@/lib/i18n/client"; import { BookOpen, LogOut, Moon, Paintbrush, Puzzle, Settings, Shield, Sun, Twitter, } from "lucide-react"; import { useTheme } from "next-themes"; import { useWhoAmI } from "@karakeep/shared-react/hooks/users"; import { AdminNoticeBadge } from "../../admin/AdminNotices"; function DarkModeToggle() { const { t } = useTranslation(); const { theme } = useTheme(); if (theme == "dark") { return ( <> {t("options.light_mode")} > ); } else { return ( <> {t("options.dark_mode")} > ); } } export default function SidebarProfileOptions() { const { t } = useTranslation(); const toggleTheme = useToggleTheme(); const { data: session } = useSession(); const { data: whoami } = useWhoAmI(); const router = useRouter(); const avatarImage = whoami?.image ?? null; const avatarUrl = useMemo(() => avatarImage ?? null, [avatarImage]); if (!session) return redirect("/"); return ( {session.user.name} {session.user.email} {t("settings.user_settings")} {session.user.role == "admin" && ( {t("admin.admin_settings")} )} {t("cleanups.cleanups")} {t("options.apps_extensions")} {t("options.documentation")} {t("options.follow_us_on_x")} router.push("/logout")}> {t("actions.sign_out")} ); }
{session.user.name}
{session.user.email}