'use client'; import { useTranslations } from 'next-intl'; import { useEffect, useState } from 'react'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Field, FieldGroup, FieldLabel } from '@/components/ui/field'; import { Input } from '@/components/ui/input'; import { Spinner } from '@/components/ui/spinner'; interface CreateRuleDialogProps { open: boolean; pending: boolean; onOpenChange: (open: boolean) => void; onCreate: (name: string) => Promise; } export function CreateRuleDialog({ open, pending, onOpenChange, onCreate, }: CreateRuleDialogProps) { const t = useTranslations('waf'); const tCommon = useTranslations('common'); const [name, setName] = useState(''); useEffect(() => { if (!open) setName(''); }, [open]); const trimmedName = name.trim(); return (
{ event.preventDefault(); if (!trimmedName || pending) return; await onCreate(trimmedName); }} > {t('createDialog.title')} {t('createDialog.description')} {t('createDialog.name')} setName(event.target.value)} placeholder={t('createDialog.namePlaceholder')} autoComplete='off' autoFocus />
); }