Headless CMS
Komponenty internetowe Wink to niezależne od frameworka niestandardowe elementy HTML. Jeśli Twój headless CMS renderuje HTML — czy to przez Next.js, Nuxt, Astro, SvelteKit czy inny framework — możesz osadzić komponenty Wink bez specjalnej integracji.
Trzystopniowa integracja
Dział zatytułowany „Trzystopniowa integracja”Każda integracja Wink, niezależnie od platformy, przebiega według tych samych trzech kroków.
1. Dołącz arkusz stylów
Dział zatytułowany „1. Dołącz arkusz stylów”Dodaj to do <head> dokumentu (lub odpowiedniego globalnego układu):
<link rel="stylesheet" href="https://elements.wink.travel/styles.css">2. Dołącz JavaScript
Dział zatytułowany „2. Dołącz JavaScript”Dodaj to przed zamknięciem tagu </body> (lub w sekcji skryptu układu):
<script src="https://elements.wink.travel/elements.js" type="module" defer></script>3. Dodaj loader aplikacji
Dział zatytułowany „3. Dodaj loader aplikacji”Umieść to raz na stronę, w dowolnym miejscu w body (zazwyczaj w stopce globalnego układu):
<wink-app-loader client-id="YOUR_CLIENT_ID"></wink-app-loader>Przykłady dla frameworków
Dział zatytułowany „Przykłady dla frameworków”Next.js (App Router)
Dział zatytułowany „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
Dział zatytułowany „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>Umieszczanie komponentów w treści
Dział zatytułowany „Umieszczanie komponentów w treści”W polach typu rich text lub niestandardowych w Twoim CMS osadź tagi komponentów bezpośrednio w wygenerowanym HTML:
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID"></wink-content-loader>Dla Contentful, Strapi, Sanity lub podobnych headless platform użyj pola Rich Text lub Custom Block, które renderuje surowy HTML, i wklej tam tag komponentu.
Pakiet npm
Dział zatytułowany „Pakiet npm”Dla projektów TypeScript pakiet @wink/elements oferuje:
- funkcję
load(), która programowo wstrzykuje skrypty CDN - pełne deklaracje typów TypeScript dla wszystkich atrybutów komponentów
npm install @wink/elementsimport { load } from '@wink/elements';
// Wywołaj raz przy starcie aplikacjiload({ clientId: 'YOUR_CLIENT_ID' });Dostępne komponenty
Dział zatytułowany „Dostępne komponenty”| Komponent | Tag HTML | Przeznaczenie |
|---|---|---|
| Content loader | <wink-content-loader> | Wyświetlanie kart hoteli, siatek, map |
| Lookup | <wink-lookup> | Pasek wyszukiwania destynacji |
| Search button | <wink-search-button> | Otwórz wybór planu podróży |
| Account button | <wink-account-button> | Logowanie / menu użytkownika |
| Itinerary button | <wink-itinerary-button> | Pokaż aktualny plan podróży |
| Itinerary picker | <wink-itinerary-picker> | Pełny formularz planu podróży |
| Shopping cart | <wink-shopping-cart-button> | Przycisk podsumowania koszyka |
Zobacz Web Components dla pełnej referencji atrybutów.