import { createPortal } from 'react-dom'; import { useUi } from '../context/ui-context.jsx'; import { Button } from './Button.jsx'; const STRIPE_COLOR = { info: 'accent', success: 'success', warning: 'warning', error: 'danger' }; // ContentDialog global — equivalente al AppDialog de la identidad web. Contrato: // openDialog({ tone, title, message, actions: [{ label, variant, keepOpen, onClick }] }) export function ContentDialogHost() { const { dialog, closeDialog, t } = useUi(); if (!dialog) return null; const tone = dialog.tone || 'info'; const actions = dialog.actions?.length ? dialog.actions : [{ label: t('common_close'), variant: 'accent' }]; async function handleClick(action) { if (action.onClick) await action.onClick(); if (!action.keepOpen) closeDialog(); } // Regla dura: NUNCA se cierra con clic afuera (a diferencia de Flyout) — solo con un boton. // Portal a document.body (igual que Flyout/DetailPopup): garantiza que quede SIEMPRE por // encima de cualquier DetailPopup abierto, sin depender del punto del arbol donde se monta. return createPortal(
{dialog.title}
{dialog.message}
{actions.map((action, i) => ( ))}
, document.body ); }