'use client'; import { Button } from '@workspace/ui/components/button'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@workspace/ui/components/form'; import { Input } from '@workspace/ui/components/input'; import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger, } from '@workspace/ui/components/sheet'; import { ReactNode, useState } from 'react'; import { useForm } from 'react-hook-form'; interface Props { trigger: ReactNode; title: string; loading?: boolean; userId: string; initialData?: API.Subscribe; onSubmit: (values: any) => Promise; } export function SubscriptionForm({ trigger, title, loading, userId, initialData, onSubmit, }: Props) { const [open, setOpen] = useState(false); const form = useForm({ defaultValues: { user_id: userId, name: initialData?.name || '', traffic: initialData?.traffic || 0, speed_limit: initialData?.speed_limit || 0, device_limit: initialData?.device_limit || 0, ...(initialData && { id: initialData.id }), }, }); const handleSubmit = async (values: any) => { const success = await onSubmit(values); if (success) { setOpen(false); form.reset(); } }; return ( {trigger} {title}
( Name )} /> ( Traffic (Bytes) )} /> ( Speed Limit (Mbps) )} /> ( Device Limit )} />
); }