شرح صفوف ومحتوى الفقرة
عند بناء نافذة حوارية قياسية باستخدام createPortal()، اجمع بين النقل البصري ومعايير الوصول الشامل ودعم الثيمات: أضف سمات role="dialog" وaria-modal="true" وaria-labelledby، واربط زر الهروب Escape عبر تأثير useEffect() مع دالة تنظيف، واستخدم متغيرات الألوان الدلالية لدعم الوضعين الفاتح والداكن:
HTML
useEffect(() => {
if (!open) return;
const onKey = (e) => e.key === 'Escape' && onClose();
window.addEventListener('keydown', onKey);
return () => {
window.removeEventListener('keydown', onKey);
};
}, [open, onClose]);