import Modal, { ModalCloseButton } from '@/ui/modal'; import { StyledAvatarUploadBtn, StyledCopyButtonContainer, StyledDeleteButtonContainer, StyledMemberAvatar, StyledMemberButtonContainer, StyledMemberEmail, StyledMemberInfo, StyledMemberListContainer, StyledMemberListItem, StyledMemberName, StyledMemberNameContainer, StyledMemberRoleContainer, StyledMemberTitleContainer, StyledMoreVerticalButton, StyledPublishContent, StyledPublishCopyContainer, StyledPublishExplanation, StyledSettingAvatar, StyledSettingAvatarContent, StyledSettingContainer, StyledSettingContent, StyledSettingH2, StyledSettingInputContainer, StyledSettingSidebar, StyledSettingSidebarHeader, StyledSettingTabContainer, StyledSettingTagIconContainer, WorkspaceSettingTagItem, } from './style'; import { EditIcon, UsersIcon, PublishIcon, MoreVerticalIcon, } from '@blocksuite/icons'; import { useEffect, useState } from 'react'; import { Button } from '@/ui/button'; import Input from '@/ui/input'; import { InviteMembers } from '../invite-members/index'; import { Workspace, WorkspaceType } from '@pathfinder/data-services'; enum ActiveTab { 'general' = 'general', 'members' = 'members', 'publish' = 'publish', } type SettingTabProps = { activeTab: ActiveTab; onTabChange?: (tab: ActiveTab) => void; }; type WorkspaceSettingProps = { isShow: boolean; onClose?: () => void; workspace?: Workspace; }; const WorkspaceSettingTab = ({ activeTab, onTabChange }: SettingTabProps) => { return ( { onTabChange && onTabChange(ActiveTab.general); }} > General { onTabChange && onTabChange(ActiveTab.members); }} > Members { onTabChange && onTabChange(ActiveTab.publish); }} > Publish ); }; export const WorkspaceSetting = ({ isShow, onClose, workspace, }: WorkspaceSettingProps) => { const [activeTab, setActiveTab] = useState(ActiveTab.general); const handleTabChange = (tab: ActiveTab) => { setActiveTab(tab); }; const handleClickClose = () => { onClose && onClose(); }; const isPrivate = workspace?.type === WorkspaceType.Private; useEffect(() => { // reset tab when modal is closed if (!isShow) { setActiveTab(ActiveTab.general); } }, [isShow]); return ( Workspace Settings {activeTab === ActiveTab.general && ( )} {activeTab === ActiveTab.members && workspace && ( )} {activeTab === ActiveTab.publish && } ); }; const GeneralPage = ({ workspace }: { workspace?: Workspace }) => { return (
Workspace Avatar W {/* upload */} Workspace Name Workspace Owner
); }; const MembersPage = ({ workspace }: { workspace: Workspace }) => { const [isInviteModalShow, setIsInviteModalShow] = useState(false); return (
Users(88) Access level S Svaney svaneyshen@gmail.com Workspace Owner { setIsInviteModalShow(false); }} workspaceId={workspace.id} open={isInviteModalShow} >
); }; const PublishPage = () => { return (
After publishing to the web, everyone can view the content of this workspace through the link. Share with link
); };