Next.js
Les composants Wink sont des éléments personnalisés uniquement pour le navigateur — les scripts CDN doivent être chargés côté client. Les modèles ci-dessous couvrent à la fois le App Router (Next.js 13+) et l’ancien Pages Router.
Installation
Section intitulée « Installation »npm install @wink/elementsApp Router (Next.js 13+)
Section intitulée « App Router (Next.js 13+) »Créez un composant client qui appelle load() une fois et rendez-le dans votre layout racine :
'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> );}Utilisez les composants Wink dans n’importe quel Client Component :
'use client';
export default function HotelsPage() { return ( <main> <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" /> </main> );}Pages Router
Section intitulée « Pages Router »Chargez une fois dans _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} />;}Puis utilisez les composants Wink dans n’importe quelle page :
export default function HotelsPage() { return <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />;}Variables d’environnement
Section intitulée « Variables d’environnement »Ajoutez dans .env.local :
NEXT_PUBLIC_WINK_CLIENT_ID=your-client-idLe préfixe NEXT_PUBLIC_ est requis pour exposer la variable au bundle du navigateur.
Types TypeScript
Section intitulée « Types TypeScript »Ajoutez un fichier de déclaration pour que TypeScript reconnaisse les noms des éléments personnalisés dans JSX — voir la page d’intégration React pour le snippet complet wink-elements.d.ts.