import { FC, useEffect, useRef } from "react"; import { observer } from "mobx-react"; // plane helpers import { useOutsideClickDetector } from "@plane/helpers"; // components import { SidebarDropdown, SidebarHelpSection, SidebarProjectsList, SidebarQuickActions, SidebarUserMenu, SidebarWorkspaceMenu, } from "@/components/workspace"; // helpers import { SidebarFavoritesMenu } from "@/components/workspace/sidebar/favorites/favorites-menu"; import { cn } from "@/helpers/common.helper"; // hooks import { useAppTheme, useUserPermissions } from "@/hooks/store"; // plane web components import useSize from "@/hooks/use-window-size"; import { SidebarAppSwitcher } from "@/plane-web/components/sidebar"; import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions"; export const AppSidebar: FC = observer(() => { // store hooks const { allowPermissions } = useUserPermissions(); const { toggleSidebar, sidebarCollapsed } = useAppTheme(); const windowSize = useSize(); // refs const ref = useRef(null); // derived values const canPerformWorkspaceMemberActions = allowPermissions( [EUserPermissions.ADMIN, EUserPermissions.MEMBER], EUserPermissionsLevel.WORKSPACE ); useOutsideClickDetector(ref, () => { if (sidebarCollapsed === false) { if (window.innerWidth < 768) { toggleSidebar(); } } }); useEffect(() => { if (windowSize[0] < 768) !sidebarCollapsed && toggleSidebar(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [windowSize]); return (


{canPerformWorkspaceMemberActions && }
); });