pacchetto npm
Il pacchetto npm @wink/elements è il modo più rapido per aggiungere componenti web Wink a qualsiasi progetto JavaScript o TypeScript. Fornisce una funzione load() che inietta le risorse CDN e le dichiarazioni di tipo TypeScript complete per tutti gli attributi dei componenti.
wink-travel/wink-elements su GitHub Codice sorgente, riferimento API e istruzioni per contribuire.
Installazione
Sezione intitolata “Installazione”npm install @wink/elementsAvvio rapido
Sezione intitolata “Avvio rapido”Chiama load() una volta all’avvio dell’app. È idempotente — sicuro chiamarlo più volte.
import { load } from '@wink/elements';
load({ clientId: 'YOUR_CLIENT_ID' });Poi usa qualsiasi componente Wink nel tuo HTML o JSX:
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID"></wink-content-loader>Esempi per framework
Sezione intitolata “Esempi per framework”Next.js (App Router)
Sezione intitolata “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
Sezione intitolata “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 }); }}Tipi TypeScript
Sezione intitolata “Tipi TypeScript”Tutte le interfacce degli attributi dei componenti sono esportate per l’uso in JSX, template literal o dizionari tipizzati:
import type { WinkContentLoaderAttributes, WinkLayout } from '@wink/elements';
const attrs: WinkContentLoaderAttributes = { layout: 'HOTEL', // TypeScript rileverà valori layout non validi id: 'abc123', sort: 'POPULARITY',};Uso di un CDN di staging
Sezione intitolata “Uso di un CDN di staging”load({ clientId: 'YOUR_CLIENT_ID', cdnBaseUrl: 'https://staging-elements.wink.travel',});load(options)
Sezione intitolata “load(options)”| Opzione | Tipo | Obbligatorio | Default | Descrizione |
|---|---|---|---|---|
clientId | string | Sì | — | Il tuo Client ID OAuth2 di Wink |
configurationId | string | No | — | ID di personalizzazione opzionale |
cdnBaseUrl | string | No | https://elements.wink.travel | Sovrascrivi l’URL del CDN |