Maak een dynamische landingspagina voor de studio "Bolly".
BELANGRIJK: De pagina moet bij het laden data ophalen van deze API endpoint:
https://caistudio.nl/api/v1/landing-page/10abce10-8af1-4e46-bf59-fedc768d8e11
Gebruik fetch() om de data op te halen bij page load en render alle secties dynamisch op basis van de response. Hieronder staat de huidige data als referentie voor de structuur, maar de pagina moet ALTIJD live data ophalen van de API.
== API Response structuur (huidige data als voorbeeld) ==
Studio naam: Bolly
Titel: Bolly
Subtitel:
Beschrijving: Dealer gerichte AV hulp
AV-Studio voor Dealers
Afbeelding URL: https://caistudio.nl/images/studio/10abce10-8af1-4e46-bf59-fedc768d8e11?v=1772181494
Logo URL:
Eigenaar: peter paul Krijnen
Juridische documenten: [array van {label, url} objecten]
BELANGRIJK: De API response bevat een "checkoutEnabled" boolean. Als checkoutEnabled FALSE is, mogen er GEEN checkout/koop/aanmeld knoppen getoond worden. Toon in plaats daarvan "Binnenkort beschikbaar" of "Coming soon" als placeholder. Alle CTA knoppen die naar checkoutUrl linken moeten conditioneel zijn op basis van checkoutEnabled.
De studio is gratis te gebruiken. Checkout URL: https://caistudio.nl/studio/peter-paul-krijnen/bolly/checkout
Het is een maandelijks abonnement. Dit is van groot belang dat het overal correct weergegeven wordt. Er moeten geen referenties van eenmalige betalingen of iets dergelijks in zitten.
== Assistenten (komen uit API response "assistants" array) ==
== Vereiste secties (in deze volgorde) ==
== Technische vereisten ==
data.assistants.length. Dus NIET "7 AI-assistenten" maar ${data.assistants.length} AI-assistenten.Now let me read the existing files and then build the landing page:
Now I have everything I need. Let me build the landing page. I'll update the globals.css with a dark navy/electric blue theme and create all the components:
Now let me update the layout.tsx and create all the components:
Now let me add the heading font variable to globals.css:
Now let me create all the landing page components:
Now let's create the main LandingPage client component and update the page:
Now I need to add the id="faq" to the FaqSection and update the page.tsx:
Now let me also add a smooth scroll behavior and some additional polish to the globals.css:
Let me verify all the files look good:
All 13 landing components are in place. The full landing page is complete. Here's a summary of what was built:
De Bolly landingspagina is een volledig dynamische, op API-data gebaseerde pagina met de volgende structuur:
LandingPage.tsx — Hoofdcomponent die fetch() uitvoert bij mount, een loading/error state toont, en alle secties samensteltCtaButton — Centraal checkout-knop component: toont de knop alleen als checkoutEnabled === true, anders "Binnenkort beschikbaar" — dit is consequent toegepast op elke CTA in de pagina