ajout app

This commit is contained in:
2024-04-17 20:22:30 +02:00
parent cc017cfc5e
commit f9d05a2fd3
8025 changed files with 729805 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
import { useEffect, useState } from 'react'
import { Outlet, useLocation, useNavigate, useParams } from 'react-router-dom'
import { Heading, Tab, TabList, Tabs } from '@chakra-ui/react'
import cx from 'classnames'
import WorkspaceAPI from '@/client/api/workspace'
import { swrConfig } from '@/client/options'
const WorkspaceLayout = () => {
const location = useLocation()
const { id } = useParams()
const navigate = useNavigate()
const { data: workspace } = WorkspaceAPI.useGetById(id, swrConfig())
const [tabIndex, setTabIndex] = useState(0)
useEffect(() => {
const segments = location.pathname.split('/')
const segment = segments[segments.length - 1]
if (segment === 'settings') {
setTabIndex(1)
} else {
setTabIndex(0)
}
}, [location])
if (!workspace) {
return null
}
return (
<div className={cx('flex', 'flex-col', 'gap-3.5', 'h-full')}>
<Heading className={cx('text-heading')}>{workspace.name}</Heading>
<Tabs variant="solid-rounded" colorScheme="gray" index={tabIndex}>
<TabList>
<Tab
onClick={() =>
navigate(`/workspace/${id}/file/${workspace.rootId}`)
}
>
Files
</Tab>
<Tab onClick={() => navigate(`/workspace/${id}/settings`)}>
Settings
</Tab>
</TabList>
</Tabs>
<Outlet />
</div>
)
}
export default WorkspaceLayout