Next.js
Wink-componenten zijn browser-only custom elements — CDN-scripts moeten client-side worden geladen. De onderstaande patronen dekken zowel de App Router (Next.js 13+) als de legacy Pages Router.
@wink/elements npm package Installeer en laad de CDN-bundel met TypeScript-typen.
Installeren
Section titled “Installeren”npm install @wink/elementsApp Router (Next.js 13+)
Section titled “App Router (Next.js 13+)”Maak een clientcomponent die load() één keer aanroept en render deze binnen je root layout:
'use client';import { useEffect } from 'react';import { load } from '@wink/elements';
export function WinkLoader() { useEffect(() => { load({ clientId: process.env.NEXT_PUBLIC_WINK_CLIENT_ID! }); }, []); return null;}import { WinkLoader } from '@/components/WinkLoader';
export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <WinkLoader /> {children} </body> </html> );}Gebruik Wink-componenten in elke Client Component:
'use client';
export default function HotelsPage() { return ( <main> <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" /> </main> );}Pages Router
Section titled “Pages Router”Laad één keer in _app.tsx:
import type { AppProps } from 'next/app';import { useEffect } from 'react';import { load } from '@wink/elements';
export default function App({ Component, pageProps }: AppProps) { useEffect(() => { load({ clientId: process.env.NEXT_PUBLIC_WINK_CLIENT_ID! }); }, []); return <Component {...pageProps} />;}Gebruik daarna Wink-componenten in elke pagina:
export default function HotelsPage() { return <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />;}Omgevingsvariabelen
Section titled “Omgevingsvariabelen”Voeg toe aan .env.local:
NEXT_PUBLIC_WINK_CLIENT_ID=your-client-idDe prefix NEXT_PUBLIC_ is vereist om de variabele bloot te stellen aan de browserbundel.
TypeScript-typen
Section titled “TypeScript-typen”Voeg een declaratiebestand toe zodat TypeScript de custom element-namen in JSX herkent — zie de React integratiepagina voor de volledige wink-elements.d.ts snippet.