Headless CMS
Wink web komponente su nezavisni prilagođeni HTML elementi. Ako vaš headless CMS prikazuje HTML — bilo kroz Next.js, Nuxt, Astro, SvelteKit ili bilo koji drugi framework — možete ugraditi Wink komponente bez posebne integracije.
Ugradnja u tri koraka
Section titled “Ugradnja u tri koraka”Svaka Wink integracija, bez obzira na platformu, prati ista tri koraka.
1. Uključite stilsku datoteku
Section titled “1. Uključite stilsku datoteku”Dodajte ovo u <head> dokumenta (ili ekvivalentni globalni layout):
<link rel="stylesheet" href="https://elements.wink.travel/styles.css">2. Uključite JavaScript
Section titled “2. Uključite JavaScript”Dodajte ovo pre zatvarajućeg </body> taga (ili u sekciju skripti vašeg layouta):
<script src="https://elements.wink.travel/elements.js" type="module" defer></script>3. Dodajte učitavač aplikacije
Section titled “3. Dodajte učitavač aplikacije”Postavite ovo jednom po stranici, bilo gde u telu dokumenta (obično u footer globalnog layouta):
<wink-app-loader client-id="YOUR_CLIENT_ID"></wink-app-loader>Primeri za frameworke
Section titled “Primeri za frameworke”Next.js (App Router)
Section titled “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> );}Nuxt 3
Section titled “Nuxt 3”<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
Section titled “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>Postavljanje komponenti u sadržaj
Section titled “Postavljanje komponenti u sadržaj”U bogatom tekstu ili prilagođenim tipovima polja vašeg CMS-a, direktno u HTML izlaz umetnite oznake komponenti:
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID"></wink-content-loader>Za Contentful, Strapi, Sanity ili slične headless platforme, koristite Rich Text polje ili Custom Block koji prikazuje sirovi HTML i tamo nalepite oznaku komponente.
npm paket
Section titled “npm paket”Za TypeScript projekte, paket @wink/elements pruža:
load()funkciju koja programatski ubacuje CDN skripte- Potpune TypeScript deklaracije tipova za sve atribute komponenti
npm install @wink/elementsimport { load } from '@wink/elements';
// Pozovite jednom pri pokretanju aplikacijeload({ clientId: 'YOUR_CLIENT_ID' });Dostupne komponente
Section titled “Dostupne komponente”| Komponenta | HTML oznaka | Namena |
|---|---|---|
| Content loader | <wink-content-loader> | Prikaz hotelskih kartica, mreža, mapa |
| Lookup | <wink-lookup> | Pretraživač destinacija |
| Search button | <wink-search-button> | Otvaranje izbora itinerera |
| Account button | <wink-account-button> | Prijava / korisnički meni |
| Itinerary button | <wink-itinerary-button> | Prikaz trenutnog itinerera |
| Itinerary picker | <wink-itinerary-picker> | Kompletan obrazac itinerera |
| Shopping cart | <wink-shopping-cart-button> | Dugme sa pregledom korpe |
Pogledajte Web Components za kompletnu referencu atributa.