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-20 11:44:04 +00:00
|
|
|
import { InfoIcon } 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'>
|
|
|
|
|
<Button onClick={() => navigate("/quotes/add")}>{t("quotes.create.title")}</Button>
|
|
|
|
|
</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-20 11:44:04 +00:00
|
|
|
<TabsTrigger value='emitted'>
|
|
|
|
|
<Trans i18nKey='quotes.list.tabs.emitted' />
|
|
|
|
|
</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}
|
|
|
|
|
>
|
|
|
|
|
<InfoIcon className='w-4 h-4 mr-2' />
|
|
|
|
|
Quote preview
|
|
|
|
|
</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>
|
|
|
|
|
<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>
|
2024-07-24 16:01:31 +00:00
|
|
|
<TabsContent value='emitted'>
|
2024-08-20 11:44:04 +00:00
|
|
|
<QuotesDataTable status='emitted' preview={enabledPreview} />
|
2024-07-11 18:31:01 +00:00
|
|
|
</TabsContent>
|
|
|
|
|
</Tabs>
|
2024-07-01 17:12:15 +00:00
|
|
|
</DataTableProvider>
|
|
|
|
|
);
|
|
|
|
|
};
|