Svelte / SvelteKit
Svelte pasa los atributos directamente al DOM sin una capa de DOM virtual, lo que hace que los elementos personalizados encajen de forma natural. Para SvelteKit (SSR), carga el CDN dentro de onMount o protege con la verificación browser.
@wink/elements npm package Instala y carga el paquete CDN con tipos para TypeScript.
Instalar
Sección titulada «Instalar»npm install @wink/elementsSvelteKit — layout raíz
Sección titulada «SvelteKit — layout raíz»import { browser } from '$app/environment';import { load as loadWink } from '@wink/elements';
export function load() { if (browser) { loadWink({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); }}Alternativamente, carga dentro de onMount en +layout.svelte:
<script> import { onMount } from 'svelte'; import { load } from '@wink/elements';
onMount(() => { load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); });</script>
<slot />Uso en componentes
Sección titulada «Uso en componentes»Svelte pasa todos los atributos desconocidos directamente al DOM, por lo que no se necesita configuración adicional:
<script> export let layoutId = 'YOUR_LAYOUT_ID';</script>
<main> <wink-content-loader layout="HOTEL" id={layoutId} /> <wink-lookup /></main>Svelte 5 (sintaxis runes)
Sección titulada «Svelte 5 (sintaxis runes)»<script lang="ts"> import { onMount } from 'svelte'; import { load } from '@wink/elements';
let { layoutId }: { layoutId: string } = $props();
onMount(() => { load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); });</script>
<wink-content-loader layout="HOTEL" id={layoutId} />Variables de entorno
Sección titulada «Variables de entorno»SvelteKit expone solo las variables que comienzan con PUBLIC_ al navegador:
PUBLIC_WINK_CLIENT_ID=your-client-id<script> import { browser } from '$app/environment';</script>
{#if browser} <wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />{/if}Svelte puro (Vite, sin SvelteKit)
Sección titulada «Svelte puro (Vite, sin SvelteKit)»<script> import { onMount } from 'svelte'; import { load } from '@wink/elements';
onMount(() => { load({ clientId: import.meta.env.VITE_WINK_CLIENT_ID }); });</script>
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID" />