I'll work through these changes systematically. Let me first read all the relevant files to understand the current state.
Let me check the wave-divider component and verify image assets before making changes.
The flavor images at /flavors/*.jpg don't exist. Let me check the public directory to understand what images are available, since removing unoptimized: true requires valid images.
The public directory is empty, meaning the flavor images referenced at /flavors/*.jpg don't exist. Since I'm removing unoptimized: true, I'll generate these images so optimization works. Let me set up tasks and start building.
First, let me create the central data file:
Now I need to generate the missing flavor images since the public directory is empty and I'm removing unoptimized: true. Let me generate them:
The images saved as .png. Let me generate the remaining four:
Now I'll update the menu-data.ts to use .png extensions for the flavors:
Now let me update the navigation with the functional mobile menu:
Now let me add StorySection to the page. The hero section's built-in bottom wave is already #FF4D4D (red), which matches the StorySection's red background. The StorySection's own bottom wave is cream (#FDF5E6), matching DailyFlavorsSection. So I'll place StorySection between them and remove the now-unneeded divider:
Now let me add the LocalBusiness JSON-LD to the page:
Now let me generate an OG sharing image and update the daily-flavors and menu sections to use central data:
Let me update the JSON-LD image reference to .png:
Now update daily-flavors-section.tsx to import from central data:
Since I'm removing ignoreBuildErrors, the optional image field on Specialty would cause a type error where daily-flavors passes item.image to Image src. Let me refine the types in menu-data.ts:
Now update menu-section.tsx to use central data, remove the "TEAM" label, and add the allergen notice:
Now update the data references in menu-section's JSX, remove "TEAM" label, and add allergen notice:
Now add the allergen notice to the footer note of the menu board:
Now let me clean up the footer by removing the social media icons:
Now let me verify there are no tel: links anywhere on the site:
No tel: links exist in the code (only in the instructions file). The PhoneIcon in contact-section is decorative and unlinked. Now let me update the layout.tsx metadata with full SEO/OG tags:
Now create sitemap.ts and robots.ts:
Now update next.config.mjs to remove the production-blocking settings:
With image optimization now enabled, external blob images need remotePatterns configured or they'll fail. Let me check all external image domains:
The map is an iframe (fine), but the next/image components use the external blob domain. With optimization enabled, I must whitelist that domain:
Now let me verify the build passes with TypeScript checking enabled. Let me check for type errors and remaining spezialitaetenData/Image import issues in menu-section:
There's a JSX structure issue in page.tsx. Let me read it:
Automatically resuming...
The type checker flagged a JSX issue. Let me read the full type-check output and the relevant files to understand what's wrong.
Let me read the full page.tsx to see the broken JSX structure:
There's leftover duplicate JSX after the closing }. The earlier edit left stray lines. Let me rewrite the file cleanly:
Now let me re-run the type check to confirm everything passes:
Type check passes cleanly. Now let me verify the menu-section no longer has the unused Image import (since I removed its usage) and check daily-flavors still uses Image correctly:
Let me verify the menu-section imports directly:
The Image import was correctly removed from menu-section. Type check passed, so eissorten, getraenke, and menuSpecialties all exist in menu-data.ts. Let me verify the site renders correctly in the browser using the agent-browser skill.
The hero renders correctly with "Seit 15 Jahren" badge. Let me scroll down to verify the new Story section and the flavor images render properly:
The Story section now appears with the red background flowing smoothly from the hero wave. The "Jetzt geöffnet" badge also shows correctly (no hydration error). Let me check the flavor images and menu board further down:
The generated flavor images (Amarena, Stracciatella, Joghurt, Melone) all render perfectly with image optimization enabled. Let me check the menu board for the allergen notice and removed "TEAM" label, then test the mobile menu:
The menu board now shows just "Eiscafé Venezia" without the "TEAM" label. Let me scroll to confirm the allergen notice at the bottom of the menu board:
The allergen notice "Informationen zu Allergenen und Zusatzstoffen erhalten Sie an der Theke." appears correctly below the "BESTELLUNG BITTE AN DER THEKE!" line. Now let me test the mobile hamburger menu by switching to a mobile viewport:
The mobile menu button (@e1, "Menü öffnen", expanded=false) is present. Let me click it to verify the dropdown opens with the nav links:
The mobile hamburger menu now works perfectly - it opens a dropdown with all three navigation links (Unsere Eissorten, Speisekarte, Kontakt) and shows the X close icon. Let me clean up the test screenshots:
All changes are complete and verified in the browser. Here's a summary of what was done:
Funktionalität & Inhalt
Technik & SEO
lib/menu-data.ts erstellt - Eissorten und Spezialitäten werden jetzt aus einer Quelle gespeist.next.config.mjs entfernt - jetzt produktionsbereit.sitemap.ts, robots.ts und ein OG-Sharing-Bild hinzugefügt.Die Seite ist typgeprüft (keine Fehler) und im Browser auf Desktop und Mobil verifiziert. Du kannst jetzt auf "Publish" klicken, um alles live zu schalten.