Next.js
Los componentes de Wink son elementos personalizados solo para navegador — los scripts CDN deben cargarse del lado del cliente. Los patrones a continuación cubren tanto el App Router (Next.js 13+) como el legado Pages Router.
Instalación
Sección titulada «Instalación»npm install @wink/elementsApp Router (Next.js 13+)
Sección titulada «App Router (Next.js 13+)»Crea un componente cliente que llame a load() una vez y renderízalo dentro de tu layout raíz:
'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> );}Usa componentes Wink en cualquier Client Component:
'use client';
export default function HotelsPage() { return ( <main> <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" /> </main> );}Pages Router
Sección titulada «Pages Router»Carga una vez en _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} />;}Luego usa componentes Wink en cualquier página:
export default function HotelsPage() { return <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />;}Variables de entorno
Sección titulada «Variables de entorno»Añade a .env.local:
NEXT_PUBLIC_WINK_CLIENT_ID=your-client-idEl prefijo NEXT_PUBLIC_ es obligatorio para exponer la variable al bundle del navegador.
Tipos para TypeScript
Sección titulada «Tipos para TypeScript»Añade un archivo de declaración para que TypeScript reconozca los nombres de elementos personalizados en JSX — consulta la página de integración con React para el fragmento completo wink-elements.d.ts.