Files
Reactive-Resume/apps/client/src/pages/dashboard/resumes/page.tsx
2024-01-21 11:00:24 +01:00

62 lines
1.8 KiB
TypeScript

import { t } from "@lingui/macro";
import { List, SquaresFour } from "@phosphor-icons/react";
import { ScrollArea, Tabs, TabsContent, TabsList, TabsTrigger } from "@reactive-resume/ui";
import { motion } from "framer-motion";
import { useState } from "react";
import { Helmet } from "react-helmet-async";
import { GridView } from "./_layouts/grid";
import { ListView } from "./_layouts/list";
type Layout = "grid" | "list";
export const ResumesPage = () => {
const [layout, setLayout] = useState<Layout>("grid");
return (
<>
<Helmet>
<title>
{t`Resumes`} - {t`Reactive Resume`}
</title>
</Helmet>
<Tabs
value={layout}
onValueChange={(value) => setLayout(value as Layout)}
className="space-y-4"
>
<div className="flex items-center justify-between">
<motion.h1
initial={{ opacity: 0, x: -50 }}
animate={{ opacity: 1, x: 0 }}
className="text-4xl font-bold tracking-tight"
>
{t`Resumes`}
</motion.h1>
<TabsList>
<TabsTrigger value="grid" className="size-8 p-0 sm:h-8 sm:w-auto sm:px-4">
<SquaresFour />
<span className="ml-2 hidden sm:block">{t`Grid`}</span>
</TabsTrigger>
<TabsTrigger value="list" className="size-8 p-0 sm:h-8 sm:w-auto sm:px-4">
<List />
<span className="ml-2 hidden sm:block">{t`List`}</span>
</TabsTrigger>
</TabsList>
</div>
<ScrollArea className="h-[calc(100vh-140px)] lg:h-[calc(100vh-88px)]">
<TabsContent value="grid">
<GridView />
</TabsContent>
<TabsContent value="list">
<ListView />
</TabsContent>
</ScrollArea>
</Tabs>
</>
);
};