Aucun résultat
)} {filtered.map((sub) => ( handleItemClick(sub)} className="rounded-2xl overflow-hidden block relative" style={{ background: 'var(--color-surface)', minHeight: 120 }} > {sub.imageSource ? ('use client' import { useEffect, useState } from 'react' import Image from 'next/image' import Link from 'next/link' import { useRouter } from 'next/navigation' import { useVisitor } from '@/context/VisitorContext' import { t, tPlain } from '@/lib/i18n' import type { SectionDTO } from '@/lib/api/types' import AppBar from '@/components/ui/AppBar' import { trackEvent } from '@/lib/stats' interface Props { section: SectionDTO slug: string configId: string languages: string[] } export default function MenuSection({ section, slug, configId, languages }: Props) { const { language, setAvailableLanguages, instanceId } = useVisitor() const router = useRouter() const [search, setSearch] = useState('') function handleItemClick(sub: SectionDTO) { if (!instanceId) return trackEvent({ instanceId, configurationId: configId, sectionId: section.id, eventType: 'MenuItemTap', language, metadata: JSON.stringify({ targetSectionId: sub.id, title: tPlain(sub.title, language) }), }) } useEffect(() => { setAvailableLanguages(languages) }, [languages]) const subsections = [...(section.menu?.sections ?? [])] .filter((s) => s.isActive !== false) .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)) const filtered = subsections.filter((s) => { if (!search) return true const title = tPlain(s.title, language).toLowerCase() return title.includes(search.toLowerCase()) }) return (
Aucun résultat
)} {filtered.map((sub) => ( handleItemClick(sub)} className="rounded-2xl overflow-hidden block relative" style={{ background: 'var(--color-surface)', minHeight: 120 }} > {sub.imageSource ? (