'use client'; import { useEffect, useCallback } from 'react'; import { X } from 'lucide-react'; import type { MenuItem } from '@/domain/menu/entities'; import { getDishIngredients } from '@/domain/menu/dish-details'; import { applyNextImageFallback, dishImageUrl, getMenuPosterCandidates, getMenuVideoSrc, } from '@/lib/assets'; interface DishDetailsModalProps { item: MenuItem; description: string; isOpen: boolean; onClose: () => void; labels: { ingredients: string; close: string; }; } export default function DishDetailsModal({ item, description, isOpen, onClose, labels, }: DishDetailsModalProps) { const videoSrc = getMenuVideoSrc(item); const imageSrc = item.image ? dishImageUrl(item.image) : null; const ingredients = getDishIngredients(item.id); const handleKeyDown = useCallback( (e: KeyboardEvent) => { if (e.key === 'Escape') onClose(); }, [onClose], ); useEffect(() => { if (!isOpen) return; document.body.style.overflow = 'hidden'; window.addEventListener('keydown', handleKeyDown); return () => { document.body.style.overflow = ''; window.removeEventListener('keydown', handleKeyDown); }; }, [isOpen, handleKeyDown]); if (!isOpen) return null; return ( <>
{description}
)} {ingredients.length > 0 && (