Headless CMS
I componenti web di Wink sono elementi HTML personalizzati indipendenti dal framework. Se il tuo headless CMS rende HTML — sia tramite Next.js, Nuxt, Astro, SvelteKit o qualsiasi altro framework — puoi integrare i componenti Wink senza alcuna integrazione speciale.
L’integrazione in tre passaggi
Sezione intitolata “L’integrazione in tre passaggi”Ogni integrazione Wink, indipendentemente dalla piattaforma, segue gli stessi tre passaggi.
1. Includi il foglio di stile
Sezione intitolata “1. Includi il foglio di stile”Aggiungi questo al <head> del tuo documento (o al layout globale equivalente):
<link rel="stylesheet" href="https://elements.wink.travel/styles.css">2. Includi il JavaScript
Sezione intitolata “2. Includi il JavaScript”Aggiungi questo prima del tag di chiusura </body> (o nella sezione script del tuo layout):
<script src="https://elements.wink.travel/elements.js" type="module" defer></script>3. Aggiungi il loader dell’applicazione
Sezione intitolata “3. Aggiungi il loader dell’applicazione”Posiziona questo una sola volta per pagina, ovunque nel body (tipicamente nel footer del layout globale):
<wink-app-loader client-id="YOUR_CLIENT_ID"></wink-app-loader>Esempi per framework
Sezione intitolata “Esempi per framework”Next.js (App Router)
Sezione intitolata “Next.js (App Router)”export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <head> <link rel="stylesheet" href="https://elements.wink.travel/styles.css" /> </head> <body> {children} <script src="https://elements.wink.travel/elements.js" type="module" defer /> <wink-app-loader client-id="YOUR_CLIENT_ID" /> </body> </html> );}<template> <div> <slot /> <wink-app-loader client-id="YOUR_CLIENT_ID" /> </div></template>
<script setup>useHead({ link: [{ rel: 'stylesheet', href: 'https://elements.wink.travel/styles.css' }], script: [{ src: 'https://elements.wink.travel/elements.js', type: 'module', defer: true }],})</script><html lang="en"> <head> <link rel="stylesheet" href="https://elements.wink.travel/styles.css" /> </head> <body> <slot /> <script src="https://elements.wink.travel/elements.js" type="module" is:inline></script> <wink-app-loader client-id="YOUR_CLIENT_ID"></wink-app-loader> </body></html>SvelteKit
Sezione intitolata “SvelteKit”<svelte:head> <link rel="stylesheet" href="https://elements.wink.travel/styles.css" /></svelte:head>
<slot /><wink-app-loader client-id="YOUR_CLIENT_ID" />
<script> import { onMount } from 'svelte'; onMount(async () => { await import('https://elements.wink.travel/elements.js'); });</script>Inserire i componenti nel contenuto
Sezione intitolata “Inserire i componenti nel contenuto”Nel testo arricchito o nei tipi di campo personalizzati del tuo CMS, inserisci direttamente i tag dei componenti nell’output HTML:
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID"></wink-content-loader>Per Contentful, Strapi, Sanity o piattaforme headless simili, usa un campo Rich Text o un Custom Block che renda HTML grezzo, e incolla lì il tag del componente.
Pacchetto npm
Sezione intitolata “Pacchetto npm”Per progetti TypeScript, il pacchetto @wink/elements fornisce:
- Una funzione
load()che inietta gli script CDN in modo programmatico - Dichiarazioni di tipo TypeScript complete per tutti gli attributi dei componenti
npm install @wink/elementsimport { load } from '@wink/elements';
// Chiamare una volta all'avvio dell'appload({ clientId: 'YOUR_CLIENT_ID' });Componenti disponibili
Sezione intitolata “Componenti disponibili”| Componente | Tag HTML | Scopo |
|---|---|---|
| Content loader | <wink-content-loader> | Mostrare schede hotel, griglie, mappe |
| Lookup | <wink-lookup> | Barra di ricerca per destinazioni |
| Search button | <wink-search-button> | Aprire il selettore itinerario |
| Account button | <wink-account-button> | Accesso / menu utente |
| Itinerary button | <wink-itinerary-button> | Mostrare l’itinerario corrente |
| Itinerary picker | <wink-itinerary-picker> | Modulo completo per itinerario |
| Shopping cart | <wink-shopping-cart-button> | Pulsante riepilogo carrello |
Consulta Web Components per la referenza completa degli attributi.