npm-Paket
Das @wink/elements npm-Paket ist der schnellste Weg, Wink-Webkomponenten in jedes JavaScript- oder TypeScript-Projekt einzubinden. Es stellt eine load()-Funktion bereit, die die CDN-Ressourcen injiziert und vollständige TypeScript-Typdeklarationen für alle Komponentenattribute liefert.
wink-travel/wink-elements auf GitHub Quellcode, API-Referenz und Anweisungen zur Mitwirkung.
Installation
Abschnitt betitelt „Installation“npm install @wink/elementsSchnellstart
Abschnitt betitelt „Schnellstart“Rufen Sie load() einmal beim Start der App auf. Die Funktion ist idempotent — es ist sicher, sie mehrfach aufzurufen.
import { load } from '@wink/elements';
load({ clientId: 'YOUR_CLIENT_ID' });Verwenden Sie dann jede Wink-Komponente in Ihrem HTML oder JSX:
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID"></wink-content-loader>Framework-Beispiele
Abschnitt betitelt „Framework-Beispiele“Next.js (App Router)
Abschnitt betitelt „Next.js (App Router)“'use client';import { useEffect } from 'react';import { load } from '@wink/elements';
export default function RootLayout({ children }: { children: React.ReactNode }) { useEffect(() => { load({ clientId: process.env.NEXT_PUBLIC_WINK_CLIENT_ID! }); }, []); return <html><body>{children}</body></html>;}import { load } from '@wink/elements';
export default defineNuxtPlugin(() => { load({ clientId: useRuntimeConfig().public.winkClientId });});---import { load } from '@wink/elements';---<script> import { load } from '@wink/elements'; load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID });</script>SvelteKit
Abschnitt betitelt „SvelteKit“import { load as loadWink } from '@wink/elements';import { browser } from '$app/environment';
export function load() { if (browser) { loadWink({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID }); }}TypeScript-Typen
Abschnitt betitelt „TypeScript-Typen“Alle Schnittstellen der Komponentenattribute werden exportiert und können in JSX, Template-Literalen oder typisierten Dictionaries verwendet werden:
import type { WinkContentLoaderAttributes, WinkLayout } from '@wink/elements';
const attrs: WinkContentLoaderAttributes = { layout: 'HOTEL', // TypeScript erkennt ungültige Layout-Werte id: 'abc123', sort: 'POPULARITY',};Verwendung eines Staging-CDNs
Abschnitt betitelt „Verwendung eines Staging-CDNs“load({ clientId: 'YOUR_CLIENT_ID', cdnBaseUrl: 'https://staging-elements.wink.travel',});load(options)
Abschnitt betitelt „load(options)“| Option | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
clientId | string | Ja | — | Ihre Wink OAuth2 Client-ID |
configurationId | string | Nein | — | Optionale Anpassungs-ID |
cdnBaseUrl | string | Nein | https://elements.wink.travel | CDN-URL überschreiben |