snowballtools-base/packages/frontend/src/pages/projects/Project.tsx
prathamesh0 7d54280d5c Add type for outlet context used for projects data (#28)
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
2024-02-01 11:37:57 +05:30

62 lines
1.6 KiB
TypeScript

import React, { useMemo } from 'react';
import { useNavigate, useOutletContext, useParams } from 'react-router-dom';
import { Button, Typography } from '@material-tailwind/react';
import HorizontalLine from '../../components/HorizontalLine';
import ProjectTabs from '../../components/projects/project/ProjectTabs';
import { ProjectsOutletContext } from '../../types/project';
const getProject = (projects: any, id: number) => {
return projects.find((project: any) => {
return Number(project.id) === id;
});
};
const Project = () => {
const { id } = useParams();
const navigate = useNavigate();
const { projects } = useOutletContext<ProjectsOutletContext>();
const project = useMemo(
() => getProject(projects, Number(id)),
[id, projects],
);
return (
<div className="h-full">
{project ? (
<>
<div className="flex p-4 gap-4 items-center">
<Button
variant="outlined"
className="rounded-full"
onClick={() => navigate(-1)}
>
{'<'}
</Button>
<Typography variant="h3" className="grow">
{project?.title}
</Typography>
<Button className="rounded-full" variant="outlined">
Open Repo
</Button>
<Button className="rounded-full" color="blue">
Go to app
</Button>
</div>
<HorizontalLine />
<div className="p-4">
<ProjectTabs project={project} />
</div>
</>
) : (
<h4>Project not found</h4>
)}
</div>
);
};
export default Project;