Astro
Astro no incluye JavaScript por defecto y renderiza todos los componentes a HTML estático en el servidor. Los componentes web de Wink deben cargarse mediante una etiqueta <script> del lado del cliente. La arquitectura island de Astro facilita esto.
Instalación
Sección titulada «Instalación»npm install @wink/elementsCargar en un layout compartido
Sección titulada «Cargar en un layout compartido»Agregá el script loader a tu layout base para que se ejecute en cada página:
<html lang="en"> <head> <meta charset="utf-8" /> <title>My Site</title> </head> <body> <slot />
<script> import { load } from '@wink/elements'; load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); </script> </body></html>Uso en una página
Sección titulada «Uso en una página»Como los componentes Astro se renderizan en el servidor, las etiquetas <wink-*> se generan como HTML estático. El script CDN registra los elementos personalizados cuando la página carga en el navegador:
---import Layout from '../layouts/Layout.astro';---
<Layout> <main> <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" /> <wink-lookup /> </main></Layout>Dentro de un componente de framework (island)
Sección titulada «Dentro de un componente de framework (island)»Si usás React, Vue o Svelte islands junto con Wink, cargá @wink/elements en el layout (como arriba) y usá las etiquetas <wink-*> dentro de tus componentes island normalmente — los elementos personalizados estarán registrados para cuando el island se hidrate.
// src/components/HotelCard.tsx (React island)export default function HotelCard({ layoutId }: { layoutId: string }) { // load() ya fue llamado por el layout — seguro para renderizar acá return <wink-content-loader layout="HOTEL" id={layoutId} />;}---import HotelCard from '../components/HotelCard.tsx';---<HotelCard client:load layoutId="YOUR_LAYOUT_ID" />Variables de entorno
Sección titulada «Variables de entorno»Astro expone solo variables que comienzan con PUBLIC_ al navegador:
PUBLIC_WINK_CLIENT_ID=your-client-id