import { useState } from 'react' import { AlertTriangle } from 'lucide-react' import { useTranslation } from 'react-i18next' import { Button } from '@/components/ui/button' import { Checkbox } from '@/components/ui/checkbox' import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' interface StatusCodeRiskDialogProps { open: boolean onOpenChange: (open: boolean) => void detailItems: string[] onConfirm: () => void } const CHECKLIST_KEYS = [ 'High-risk status code retry risk check 1', 'High-risk status code retry risk check 2', 'High-risk status code retry risk check 3', 'High-risk status code retry risk check 4', ] as const export function StatusCodeRiskDialog({ open, onOpenChange, detailItems, onConfirm, }: StatusCodeRiskDialogProps) { const { t } = useTranslation() const [checkedItems, setCheckedItems] = useState>(new Set()) const [confirmText, setConfirmText] = useState('') const requiredText = t('High-risk status code retry confirmation text') const allChecked = checkedItems.size === CHECKLIST_KEYS.length const textMatches = confirmText.trim() === requiredText.trim() const canConfirm = allChecked && textMatches const handleConfirm = () => { if (!canConfirm) return setCheckedItems(new Set()) setConfirmText('') onConfirm() } const handleCancel = () => { setCheckedItems(new Set()) setConfirmText('') onOpenChange(false) } const toggleCheck = (idx: number) => { setCheckedItems((prev) => { const next = new Set(prev) if (next.has(idx)) next.delete(idx) else next.add(idx) return next }) } return ( {t('High-risk operation confirmation')} {t('High-risk status code retry risk disclaimer')}
{detailItems.length > 0 && (

{t('Detected high-risk status code redirect rules')}

    {detailItems.map((item) => (
  • {item}
  • ))}
)}
{CHECKLIST_KEYS.map((key, idx) => (
toggleCheck(idx)} />
))}
setConfirmText(e.target.value)} placeholder={t('High-risk status code retry input placeholder')} /> {confirmText && !textMatches && (

{t('High-risk status code retry input mismatch')}

)}
) }