تخطَّ إلى المحتوى

Svelte / SvelteKit

يمرر Svelte السمات مباشرة إلى DOM بدون طبقة DOM افتراضية، مما يجعل العناصر المخصصة مناسبة بشكل طبيعي. بالنسبة لـ SvelteKit (SSR)، قم بتحميل CDN داخل onMount أو احمِ ذلك باستخدام فحص browser.

Terminal window
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 });
}
}

بدلاً من ذلك، قم بالتحميل داخل onMount في +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 جميع السمات غير المعروفة مباشرة إلى DOM، لذلك لا حاجة لأي إعداد إضافي:

<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 فقط عن المتغيرات التي تبدأ بـ PUBLIC_ للمتصفح:

.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}

Svelte العادي (Vite، بدون SvelteKit)

Section titled “Svelte العادي (Vite، بدون SvelteKit)”
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" />