Presupuestador_web/client/src/app/quotes/list.tsx

107 lines
3.9 KiB
TypeScript
Raw Normal View History

2024-06-29 19:39:25 +00:00
import { DataTableProvider } from "@/lib/hooks";
import { Trans } from "react-i18next";
import { QuotesDataTable } from "./components";
2024-06-09 20:22:22 +00:00
2024-08-20 11:44:04 +00:00
import { Button, Tabs, TabsContent, TabsList, TabsTrigger, Toggle } from "@/ui";
import { useToggle } from "@wojtekmaj/react-hooks";
2024-07-03 18:05:26 +00:00
import { t } from "i18next";
2024-08-26 13:58:31 +00:00
import { EyeIcon, EyeOffIcon, PlusIcon } from "lucide-react";
2024-07-01 17:12:15 +00:00
import { useNavigate } from "react-router-dom";
export const QuotesList = () => {
const navigate = useNavigate();
2024-08-20 11:44:04 +00:00
const [enabledPreview, toggleEnabledPreview] = useToggle(false);
2024-07-01 17:12:15 +00:00
return (
<DataTableProvider>
<div className='flex items-center justify-between space-y-2'>
<div>
<h2 className='text-2xl font-bold tracking-tight'>
<Trans i18nKey='quotes.list.title' />
</h2>
2024-07-11 18:31:01 +00:00
<p className='text-muted-foreground'>
<Trans i18nKey='quotes.list.subtitle' />
</p>
2024-07-01 17:12:15 +00:00
</div>
2024-07-03 18:05:26 +00:00
<div className='flex items-center space-x-2'>
2024-08-24 09:32:52 +00:00
<Button onClick={() => navigate("/quotes/add")}>
<PlusIcon className='w-4 h-4 mr-2' />
{t("quotes.create.title")}
</Button>
2024-07-03 18:05:26 +00:00
</div>
2024-07-01 17:12:15 +00:00
</div>
2024-07-11 18:31:01 +00:00
<Tabs defaultValue='all'>
<div className='flex items-center'>
2024-08-20 11:44:04 +00:00
<span className='mr-4 font-medium'>Status</span>
2024-07-11 18:31:01 +00:00
<TabsList>
<TabsTrigger value='all'>
<Trans i18nKey='quotes.list.tabs.all' />
</TabsTrigger>
<TabsTrigger value='draft'>
<Trans i18nKey='quotes.list.tabs.draft' />
</TabsTrigger>
2024-08-26 15:16:42 +00:00
<TabsTrigger value='ready'>
<Trans i18nKey='quotes.list.tabs.ready' />
</TabsTrigger>
<TabsTrigger value='delivered'>
<Trans i18nKey='quotes.list.tabs.delivered' />
</TabsTrigger>
<TabsTrigger value='accepted'>
<Trans i18nKey='quotes.list.tabs.accepted' />
</TabsTrigger>
<TabsTrigger value='rejected'>
<Trans i18nKey='quotes.list.tabs.rejected' />
2024-08-20 11:44:04 +00:00
</TabsTrigger>
2024-07-11 18:31:01 +00:00
<TabsTrigger value='archived' className='hidden sm:flex'>
<Trans i18nKey='quotes.list.tabs.archived' />
</TabsTrigger>
</TabsList>
2024-08-20 11:44:04 +00:00
<div className='flex items-center gap-2 ml-auto'>
<Toggle
aria-label='Show quote preview'
variant={"outline"}
defaultPressed={false}
pressed={enabledPreview}
onPressedChange={toggleEnabledPreview}
>
2024-08-26 13:58:31 +00:00
{enabledPreview ? (
<>
<EyeOffIcon className='w-4 h-4 mr-2' />
{t("common.disable_preview")}
</>
) : (
<>
<EyeIcon className='w-4 h-4 mr-2' />
{t("common.enable_preview")}
</>
)}
2024-08-20 11:44:04 +00:00
</Toggle>
</div>
2024-07-11 18:31:01 +00:00
</div>
<TabsContent value='all'>
2024-08-20 11:44:04 +00:00
<QuotesDataTable status='all' preview={enabledPreview} />
2024-07-11 18:31:01 +00:00
</TabsContent>
<TabsContent value='draft'>
2024-08-20 11:44:04 +00:00
<QuotesDataTable status='draft' preview={enabledPreview} />
2024-07-11 18:31:01 +00:00
</TabsContent>
2024-08-26 15:16:42 +00:00
<TabsContent value='ready'>
<QuotesDataTable status='ready' preview={enabledPreview} />
</TabsContent>
<TabsContent value='delivered'>
<QuotesDataTable status='delivered' preview={enabledPreview} />
</TabsContent>
<TabsContent value='accepted'>
<QuotesDataTable status='accepted' preview={enabledPreview} />
</TabsContent>
<TabsContent value='rejected'>
<QuotesDataTable status='rejected' preview={enabledPreview} />
</TabsContent>
2024-07-11 18:31:01 +00:00
<TabsContent value='archived'>
2024-08-20 11:44:04 +00:00
<QuotesDataTable status='archived' preview={enabledPreview} />
2024-07-11 18:31:01 +00:00
</TabsContent>
</Tabs>
2024-07-01 17:12:15 +00:00
</DataTableProvider>
);
};