import { useEffect, useState } from 'react' import { createPortal } from 'react-dom' import { AlertTriangle, PackagePlus, X } from 'lucide-react' import { useLocale } from '@meshkee/dashboard-ui' import { useT } from '../i18n/useT' import styles from './ConfirmBulkAddStoreItemsModal.module.css' export interface BulkAddResult { created: number skipped: number failed: number } interface ConfirmBulkAddStoreItemsModalProps { open: boolean busy: boolean result: BulkAddResult | null onConfirm: () => void onClose: () => void } const ANIMATION_MS = 220 export function ConfirmBulkAddStoreItemsModal({ open, busy, result, onConfirm, onClose, }: ConfirmBulkAddStoreItemsModalProps) { const t = useT() const { locale } = useLocale() const isFa = locale === 'fa' const [mounted, setMounted] = useState(open) const [closing, setClosing] = useState(false) const [agreed, setAgreed] = useState(false) useEffect(() => { if (open) { setMounted(true) setClosing(false) setAgreed(false) } else if (mounted) { setClosing(true) const timer = setTimeout(() => { setMounted(false) setClosing(false) setAgreed(false) }, ANIMATION_MS) return () => clearTimeout(timer) } }, [open, mounted]) useEffect(() => { if (!mounted || closing) return const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape' && !busy) onClose() } document.addEventListener('keydown', onKey) return () => document.removeEventListener('keydown', onKey) }, [mounted, closing, onClose, busy]) if (!mounted) return null const showResult = result !== null return createPortal(
{t('storeItems.create.addAllDone', { created: String(result.created), skipped: String(result.skipped), failed: String(result.failed), })}
) : ( <>{t('storeItems.create.addAllConfirmIntro')}