Aller au contenu

Svelte / SvelteKit

Svelte transmet les attributs directement au DOM sans couche de DOM virtuel, ce qui rend les éléments personnalisés parfaitement adaptés. Pour SvelteKit (SSR), chargez le CDN dans onMount ou protégez avec la vérification browser.

Fenêtre de terminal
npm install @wink/elements
src/routes/+layout.ts
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 });
}
}

Alternativement, chargez dans onMount dans +layout.svelte :

src/routes/+layout.svelte
<script>
import { onMount } from 'svelte';
import { load } from '@wink/elements';
onMount(() => {
load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID });
});
</script>
<slot />

Svelte transmet tous les attributs inconnus directement au DOM, donc aucune configuration supplémentaire n’est nécessaire :

<script>
export let layoutId = 'YOUR_LAYOUT_ID';
</script>
<main>
<wink-content-loader layout="HOTEL" id={layoutId} />
<wink-lookup />
</main>
<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} />

SvelteKit expose uniquement les variables préfixées par PUBLIC_ au navigateur :

.env
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}
src/App.svelte
<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" />