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 { useForm } from '@inertiajs/react'; import { Button } from '@/components/ui/button'; import { LoaderCircle } from 'lucide-react'; import { Label } from '@/components/ui/label'; import { Input } from '@/components/ui/input'; import InputError from '@/components/ui/input-error'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Checkbox } from '@/components/ui/checkbox'; import { Site } from '@/types/site'; import { Textarea } from '@/components/ui/textarea'; import { Alert, AlertDescription } from '@/components/ui/alert'; type CreateForm = { type: string; email: string; certificate: string; private: string; expires_at: string; aliases: boolean; }; export default function CreateSSL({ site, children }: { site: Site; children: ReactNode }) { const [open, setOpen] = useState(false); const form = useForm({ type: '', email: '', certificate: '', private: '', expires_at: '', aliases: false, }); const submit = (e: FormEvent) => { e.preventDefault(); form.post(route('ssls.store', { server: site.server_id, site: site.id }), { onSuccess: () => { form.reset(); setOpen(false); }, }); }; return ( {children} Create SSL Create new SSL
{form.data.type === 'letsencrypt' && ( <>

Let's Encrypt has rate limits. Read more about them{' '} here .

form.setData('email', e.target.value)} /> )} {form.data.type === 'custom' && ( <>