// Milfers · Carta destacados · carrusel animado + flechas flotantes function MenuSection() { const trackRef = React.useRef(null); const pausedRef = React.useRef(false); // Auto-scroll JS (seamless loop sobre elementos duplicados) — solo desktop React.useEffect(() => { const track = trackRef.current; if (!track) return; let raf; const speed = 0.55; // px por frame function step() { if (!pausedRef.current) { track.scrollLeft += speed; // Reset seamless cuando llega a la mitad if (track.scrollLeft >= track.scrollWidth / 2) { track.scrollLeft = 0; } } raf = requestAnimationFrame(step); } raf = requestAnimationFrame(step); const pause = () => { pausedRef.current = true; }; const resume = () => { pausedRef.current = false; }; track.addEventListener('mouseenter', pause); track.addEventListener('mouseleave', resume); track.addEventListener('touchstart', pause, { passive: true }); track.addEventListener('touchend', resume); return () => { cancelAnimationFrame(raf); track.removeEventListener('mouseenter', pause); track.removeEventListener('mouseleave', resume); track.removeEventListener('touchstart', pause); track.removeEventListener('touchend', resume); }; }, []); function nudge(dir) { const track = trackRef.current; if (!track) return; const cardW = track.querySelector('.mf-star')?.offsetWidth || 360; pausedRef.current = true; track.scrollBy({ left: dir * (cardW + 24), behavior: 'smooth' }); setTimeout(() => { pausedRef.current = false; }, 1200); } return (
3. {window.t('menu.eyebrow')} · {new Date().getFullYear()}

{window.t('menu.intro')}

{window.t('menu.accent')}

{[...STARS, ...STARS].map((s, i) => { const tr = (window.MF_T.menu.stars && window.MF_T.menu.stars[s.n]) || {}; return (
= STARS.length ? 'true' : undefined}>
N°{s.n} {(tr.tag || s.tag) && {tr.tag || s.tag}}

{s.name}

{tr.desc || s.desc}

{(tr.marker || s.marker) && {tr.marker || s.marker}}
); })}
); } function Price({ value, className }) { const m = String(value || '').match(/(\d+)[,.](\d{2})/); if (!m) return {value}; return ( {m[1]},{m[2]} ); } const STARS = [ { n: '01', name: 'Milf', desc: 'La original. Cheddar, queso brie, cebolla caramelizada y bacon ahumado. La que lo empezó todo.', price: '14,00 €', tag: 'La original', marker: 'la que lo empezó todo', photo: 'milf-1.jpg', }, { n: '02', name: 'Truffoie', desc: 'Cheddar, salsa trufada, crujiente de jamón, foie y brotes tiernos. La más pedida.', price: '17,00 €', tag: 'Trufa & foie', marker: 'la más pedida', photo: 'truffoie-1.jpg', }, { n: '03', name: 'Emylf', desc: 'Cheddar ahumado, salsa Emmy, zanahoria caramelizada crispy, pepinillos y bacon ahumado en madera de manzano.', price: '15,50 €', tag: 'La Emmy', marker: 'la más especial', photo: 'emylf-2.jpg', }, { n: '04', name: 'Georgie Dan', desc: 'Cheddar, salsa BBQ, aros de cebolla caseros, tomate valenciano, cebolla crispy y pepinillo agridulce.', price: '15,00 €', tag: 'BBQ & crispy', marker: 'la más canalla', photo: 'georgie-dan-1.jpg', }, { n: '06', name: 'Iberican Milf', desc: 'Cheddar, salsa cítrica, brotes de rabanitos, crujiente de kikos y torrezno de Soria.', price: '15,00 €', tag: 'Ibérica', marker: 'la más española', photo: 'iberican-milf-1.jpg', }, { n: '10', name: 'Lady Blue', desc: 'Cheddar, bacon ahumado, salteado de cebolla y champiñones, nueces y salsa roquefort. Para quien busca intensidad.', price: '15,00 €', tag: 'Queso azul', marker: 'la más intensa', photo: 'lady-blue-2.jpg', }, ]; window.MenuSection = MenuSection;