import { useEffect, useState } from 'react';
import { useUiStore } from '../../store/uiStore';
/** 全局 toast 消息容器(右上角,自动消失)。 */
export function ToastContainer() {
const toasts = useUiStore((s) => s.toasts);
const removeToast = useUiStore((s) => s.removeToast);
if (toasts.length === 0) return null;
return (
{toasts.map((t) => (
{t.msg}
))}
);
}
/** 全局确认/输入弹窗(替代 window.confirm / window.prompt)。 */
export function GlobalDialog() {
const dialog = useUiStore((s) => s.dialog);
const resolveDialog = useUiStore((s) => s.resolveDialog);
const [value, setValue] = useState('');
useEffect(() => {
if (dialog) setValue(dialog.defaultValue || '');
}, [dialog]);
if (!dialog) return null;
const isPrompt = dialog.kind === 'prompt';
return (
{dialog.danger ? '!' : '?'}
{dialog.title}
{dialog.message}
{isPrompt && (
setValue(e.target.value)}
onKeyDown={(e) => { if (e.key === 'Enter') resolveDialog(value.trim()); if (e.key === 'Escape') resolveDialog(null); }}
className="mt-2 w-full bg-gray-800 border border-gray-600 rounded px-2 py-1.5 text-xs text-white focus:outline-none focus:border-blue-500" />
)}
);
}