← marzneshin
/
v0.6.1
/
dashboard/src/modules/users/components/dialogs/mutation/sections/expiration-method/index.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/components/dialogs/mutation/sections/expiration-method/index.tsx
· TypeScript
Blame
Raw
1import { FC } from "react";
2import {
3 Tabs,
4 TabsTrigger,
5 TabsContent,
6 FormLabel
7} from '@marzneshin/components';
8import type {
9 UserMutationType,
10} from "@marzneshin/modules/users";
11import {
12 ExpireDateField,
13 ActivationDeadlineField,
14 UsageDurationField,
15} from "@marzneshin/modules/users/components/dialogs/mutation/fields";
16import { TabsList } from "@radix-ui/react-tabs";
17import { useTranslation } from "react-i18next";
18import { useExpirationMethodTabs } from "./use-expiration-method-tabs";
19
20interface ExpirationMethodProps {
21 entity: UserMutationType | null
22}
23
24export const ExpirationMethodFields: FC<ExpirationMethodProps> = ({ entity }) => {
25 const { t } = useTranslation();
26 const {
27 handleTabChange,
28 selectedExpirationMethodTab
29 } = useExpirationMethodTabs(entity);
30
31 return (
32 <>
33 <FormLabel className="text-md">
34 {t('page.users.expire_method')}
35 </FormLabel>
36 <Tabs
37 defaultValue={selectedExpirationMethodTab}
38 onValueChange={handleTabChange}
39 className="w-full"
40 >
41 <TabsList className="flex flex-row items-center p-1 w-full rounded-md bg-accent">
42 <TabsTrigger
43 className="w-full"
44 value="fixed_date">
45 {t('page.users.fixed_date')}
46 </TabsTrigger>
47 <TabsTrigger
48 className="w-full"
49 value="start_on_first_use">
50 {t('page.users.on_first_use')}
51 </TabsTrigger>
52 <TabsTrigger
53 className="w-full"
54 value="never">
55 {t('page.users.never')}
56 </TabsTrigger>
57 </TabsList>
58 <TabsContent value="fixed_date">
59 <ExpireDateField />
60 </TabsContent>
61 <TabsContent value="start_on_first_use">
62 <UsageDurationField />
63 <ActivationDeadlineField />
64 </TabsContent>
65 </Tabs>
66 </>
67 );
68};