import React, { useState, useEffect } from "react"; import { Archive, Sliders, UploadCloud, X } from "react-feather"; import DocumentSettings from "./Documents"; import WorkspaceSettings from "./Settings"; import { useParams } from "react-router-dom"; import Workspace from "../../../models/workspace"; import System from "../../../models/system"; import UploadToWorkspace from "./Upload"; const TABS = { documents: DocumentSettings, settings: WorkspaceSettings, upload: UploadToWorkspace, }; const noop = () => false; export default function ManageWorkspace({ hideModal = noop, providedSlug = null, }) { const { slug } = useParams(); const [selectedTab, setSelectedTab] = useState("documents"); const [workspace, setWorkspace] = useState(null); const [fileTypes, setFileTypes] = useState(null); useEffect(() => { async function checkSupportedFiletypes() { const acceptedTypes = await System.acceptedDocumentTypes(); setFileTypes(acceptedTypes ?? {}); } checkSupportedFiletypes(); }, []); useEffect(() => { async function fetchWorkspace() { const workspace = await Workspace.bySlug(providedSlug ?? slug); setWorkspace(workspace); } fetchWorkspace(); }, [selectedTab, slug]); if (!workspace) return null; const Component = TABS[selectedTab || "documents"]; return (

Update "{workspace.name}"

); } function WorkspaceSettingTabs({ selectedTab, changeTab }) { return (
); } function WorkspaceTab({ active = false, displayName, tabName, icon = "", onClick, }) { const classes = active ? "text-blue-600 border-blue-600 active dark:text-blue-400 dark:border-blue-400 bg-blue-500 bg-opacity-5" : "border-transparent hover:text-gray-600 hover:border-gray-300 dark:hover:text-gray-300"; return (
  • ); } export function useManageWorkspaceModal() { const [showing, setShowing] = useState(false); const showModal = () => { setShowing(true); }; const hideModal = () => { setShowing(false); }; return { showing, showModal, hideModal }; }