import React from 'react'; import { App, Button, Card, Layout, Space, Tooltip, Typography } from 'antd'; import ProjectList from 'Components/Client/Projects/ProjectList'; import ProjectTabs from 'Components/Client/Projects/ProjectTabs'; import { useHistory } from 'react-router-dom'; import { useStore } from '@/mstore'; import { observer } from 'mobx-react-lite'; import { KeyIcon, PlusIcon } from 'lucide-react'; import ProjectTabContent from 'Components/Client/Projects/ProjectTabContent'; import { useModal } from 'Components/ModalContext'; import ProjectForm from 'Components/Client/Projects/ProjectForm'; import Project from '@/mstore/types/project'; function Projects() { const { projectsStore } = useStore(); const history = useHistory(); const { project, pid, tab } = projectsStore.config; const { openModal, closeModal } = useModal(); React.useEffect(() => { const params = new URLSearchParams(history.location.search); const pid = params.get('pid'); const tab = params.get('tab'); projectsStore.setConfigProject(pid ? parseInt(pid) : undefined); projectsStore.setConfigTab(tab); }, []); React.useEffect(() => { const params = new URLSearchParams(history.location.search); if (projectsStore.config.pid) { params.set('pid', projectsStore.config.pid + ''); } if (projectsStore.config.tab) { params.set('tab', projectsStore.config.tab); } history.push({ search: params.toString() }); }, [pid, tab]); const createProject = () => { openModal(, { title: 'New Project' }); }; return ( Projects} extra={[ ]} >
{project?.name}
{project && }
); } export default observer(Projects); function ProjectKeyButton({ project }: { project: Project | null }) { const { message } = App.useApp(); const copyKey = () => { if (!project || !project.projectKey) { void message.error('Project key not found'); return; } void navigator.clipboard.writeText(project?.projectKey || ''); void message.success('Project key copied to clipboard'); }; return (