gitscope
← marzneshin / v0.5.4 / dashboard/src/features/users/components/dialogs/mutation/sections/expiration-method/index.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/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/features/users";
11import {
12    ExpireDateField,
13    ActivationDeadlineField,
14    UsageDurationField,
15} from "@marzneshin/features/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};