import React, { useEffect, useRef, useState } from "react"; import { List, Plus } from "@phosphor-icons/react"; import NewWorkspaceModal, { useNewWorkspaceModal, } from "../Modals/NewWorkspace"; import ActiveWorkspaces from "./ActiveWorkspaces"; import useLogo from "@/hooks/useLogo"; import useUser from "@/hooks/useUser"; import Footer from "../Footer"; import SettingsButton from "../SettingsButton"; import { Link } from "react-router-dom"; import paths from "@/utils/paths"; import { useTranslation } from "react-i18next"; import { useSidebarToggle, ToggleSidebarButton } from "./SidebarToggle"; import SearchBox from "./SearchBox"; export default function Sidebar() { const { user } = useUser(); const { logo } = useLogo(); const sidebarRef = useRef(null); const { showSidebar, setShowSidebar, canToggleSidebar } = useSidebarToggle(); const { showing: showingNewWsModal, showModal: showNewWsModal, hideModal: hideNewWsModal, } = useNewWorkspaceModal(); const { t } = useTranslation(); return ( <>
Logo {canToggleSidebar && ( )}
{showingNewWsModal && }
); } export function SidebarMobileHeader() { const { logo } = useLogo(); const sidebarRef = useRef(null); const [showSidebar, setShowSidebar] = useState(false); const [showBgOverlay, setShowBgOverlay] = useState(false); const { showing: showingNewWsModal, showModal: showNewWsModal, hideModal: hideNewWsModal, } = useNewWorkspaceModal(); const { user } = useUser(); const { t } = useTranslation(); useEffect(() => { // Darkens the rest of the screen // when sidebar is open. function handleBg() { if (showSidebar) { setTimeout(() => { setShowBgOverlay(true); }, 300); } else { setShowBgOverlay(false); } } handleBg(); }, [showSidebar]); return ( <>
Logo
setShowSidebar(false)} />
{/* Header Information */}
Logo
{(!user || user?.role !== "default") && (
)}
{/* Primary Body */}
{showingNewWsModal && }
); } function NewWorkspaceButton({ user, showNewWsModal }) { const { t } = useTranslation(); if (!!user && user?.role === "default") return null; return (
); }