import React, { useEffect, useRef } from 'react' import { createPortal } from 'react-dom' export default function NovaConfirmDialog({ open, title = 'Please confirm', message, confirmLabel = 'Confirm', cancelLabel = 'Cancel', confirmTone = 'danger', onConfirm, onClose, busy = false, }) { const backdropRef = useRef(null) const cancelButtonRef = useRef(null) useEffect(() => { if (!open) return undefined const timeoutId = window.setTimeout(() => cancelButtonRef.current?.focus(), 60) return () => window.clearTimeout(timeoutId) }, [open]) useEffect(() => { if (!open) return undefined const handleKeyDown = (event) => { if (event.key === 'Escape' && !busy) { onClose?.() } } window.addEventListener('keydown', handleKeyDown) return () => window.removeEventListener('keydown', handleKeyDown) }, [busy, onClose, open]) if (!open) return null const confirmClassName = confirmTone === 'danger' ? 'border border-rose-400/25 bg-rose-500/12 text-rose-100 hover:bg-rose-500/18 focus-visible:ring-rose-300/50' : 'border border-accent/25 bg-accent/90 text-deep hover:brightness-110 focus-visible:ring-accent/50' return createPortal(
Skinbase Nova
{message}