import { Site, SiteFeatureAction } from '@/types/site'; import React, { FormEvent, ReactNode, useState } from 'react'; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import { Form, FormField, FormFields } from '@/components/ui/form'; import { Button } from '@/components/ui/button'; import { useForm } from '@inertiajs/react'; import { DynamicFieldConfig } from '@/types/dynamic-field-config'; import DynamicField from '@/components/ui/dynamic-field'; import { LoaderCircleIcon } from 'lucide-react'; export default function FeatureAction({ site, featureId, actionId, action, children, }: { site: Site; featureId: string; actionId: string; action: SiteFeatureAction; children: ReactNode; }) { const [open, setOpen] = useState(false); const form = useForm(); const submit = (e: FormEvent) => { e.preventDefault(); form.post( route('site-features.action', { server: site.server_id, site: site.id, feature: featureId, action: actionId, }), { onSuccess: () => { setOpen(false); form.reset(); }, }, ); }; return ( {children} {action.label} action {action.label}

You're performing action [{action.label}] on site{' '} [{site.domain}]

{action.form?.map((field: DynamicFieldConfig) => ( form.setData(field.name, value)} config={field} error={form.errors[field.name]} /> ))}
); }