/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import { Fragment, useEffect, useState } from "react"; import { observer } from "mobx-react"; import { useTheme as useNextTheme } from "next-themes"; import { LogOut, UserCog2, Palette } from "lucide-react"; import { Menu, Transition } from "@headlessui/react"; // plane internal packages import { API_BASE_URL } from "@plane/constants"; import { AuthService } from "@plane/services"; import { Avatar } from "@plane/ui"; import { getFileURL, cn } from "@plane/utils"; // hooks import { useTheme, useUser } from "@/hooks/store"; // service initialization const authService = new AuthService(); export const AdminSidebarDropdown = observer(function AdminSidebarDropdown() { // store hooks const { isSidebarCollapsed } = useTheme(); const { currentUser, signOut } = useUser(); // hooks const { resolvedTheme, setTheme } = useNextTheme(); // state const [csrfToken, setCsrfToken] = useState(undefined); const handleThemeSwitch = () => { const newTheme = resolvedTheme === "dark" ? "light" : "dark"; setTheme(newTheme); }; const handleSignOut = () => signOut(); const getSidebarMenuItems = (align: "left" | "right" = "left") => (
{currentUser?.email}
{resolvedTheme === "dark" ? "Светлая тема" : "Темная тема"}
Выйти
); useEffect(() => { if (csrfToken === undefined) void authService.requestCSRFToken().then((data) => data?.csrf_token && setCsrfToken(data.csrf_token)); }, [csrfToken]); return (
{isSidebarCollapsed && ( {getSidebarMenuItems()} )}
{!isSidebarCollapsed && (

Глобальный админ

Супер-администратор
)} {!isSidebarCollapsed && currentUser && ( {getSidebarMenuItems("right")} )}
); });