import { zodResolver } from '@hookform/resolvers/zod'; import { Trans, useLingui } from '@lingui/react/macro'; import type { SubscriptionClaim } from '@prisma/client'; import { useForm } from 'react-hook-form'; import type { z } from 'zod'; import { SUBSCRIPTION_CLAIM_FEATURE_FLAGS } from '@documenso/lib/types/subscription'; import { ZCreateSubscriptionClaimRequestSchema } from '@documenso/trpc/server/admin-router/create-subscription-claim.types'; import { Checkbox } from '@documenso/ui/primitives/checkbox'; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from '@documenso/ui/primitives/form/form'; import { Input } from '@documenso/ui/primitives/input'; export type SubscriptionClaimFormValues = z.infer; type SubscriptionClaimFormProps = { subscriptionClaim: Omit; onFormSubmit: (data: SubscriptionClaimFormValues) => Promise; formSubmitTrigger?: React.ReactNode; }; export const SubscriptionClaimForm = ({ subscriptionClaim, onFormSubmit, formSubmitTrigger, }: SubscriptionClaimFormProps) => { const { t } = useLingui(); const form = useForm({ resolver: zodResolver(ZCreateSubscriptionClaimRequestSchema), defaultValues: { name: subscriptionClaim.name, teamCount: subscriptionClaim.teamCount, memberCount: subscriptionClaim.memberCount, flags: subscriptionClaim.flags, }, }); return (
( Name )} /> ( Team Count field.onChange(parseInt(e.target.value, 10) || 0)} /> Number of teams allowed. 0 = Unlimited )} /> ( Member Count field.onChange(parseInt(e.target.value, 10) || 0)} /> Number of members allowed. 0 = Unlimited )} />
Feature Flags
{Object.values(SUBSCRIPTION_CLAIM_FEATURE_FLAGS).map(({ key, label }) => ( (
)} /> ))}
{formSubmitTrigger}
); };