Headless CMS
Wink webové komponenty jsou frameworkově nezávislé vlastní HTML elementy. Pokud vaše headless CMS vykresluje HTML — ať už přes Next.js, Nuxt, Astro, SvelteKit nebo jakýkoli jiný framework — můžete vložit Wink komponenty bez jakékoli speciální integrace.
Tříkrokové vložení
Sekce “Tříkrokové vložení”Každá integrace Wink, bez ohledu na platformu, následuje stejné tři kroky.
1. Zahrňte stylopis
Sekce “1. Zahrňte stylopis”Přidejte toto do <head> dokumentu (nebo ekvivalentního globálního layoutu):
<link rel="stylesheet" href="https://elements.wink.travel/styles.css">2. Zahrňte JavaScript
Sekce “2. Zahrňte JavaScript”Přidejte toto před uzavírací tag </body> (nebo do skriptové sekce vašeho layoutu):
<script src="https://elements.wink.travel/elements.js" type="module" defer></script>3. Přidejte načítač aplikace
Sekce “3. Přidejte načítač aplikace”Umístěte toto jednou na stránku, kamkoli do těla (obvykle do patičky globálního layoutu):
<wink-app-loader client-id="YOUR_CLIENT_ID"></wink-app-loader>Příklady pro frameworky
Sekce “Příklady pro frameworky”Next.js (App Router)
Sekce “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
Sekce “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>Astro
Sekce “Astro”<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
Sekce “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>Umístění komponent do obsahu
Sekce “Umístění komponent do obsahu”Ve vašem CMS v bohatém textu nebo vlastních typech polí vložte značky komponent přímo do HTML výstupu:
<wink-content-loader layout="HOTEL" id="YOUR_LAYOUT_ID"></wink-content-loader>Pro Contentful, Strapi, Sanity nebo podobné headless platformy použijte Rich Text pole nebo Custom Block, který vykresluje surové HTML, a vložte tam značku komponenty.
npm balíček
Sekce “npm balíček”Pro TypeScript projekty poskytuje balíček @wink/elements:
- Funkci
load(), která programově vloží CDN skripty - Kompletní deklarace typů TypeScript pro všechny atributy komponent
npm install @wink/elementsimport { load } from '@wink/elements';
// Zavolejte jednou při spuštění aplikaceload({ clientId: 'YOUR_CLIENT_ID' });Dostupné komponenty
Sekce “Dostupné komponenty”| Komponenta | HTML tag | Účel |
|---|---|---|
| Content loader | <wink-content-loader> | Zobrazení hotelových karet, mřížek, map |
| Lookup | <wink-lookup> | Vyhledávací lišta pro destinace |
| Search button | <wink-search-button> | Otevření výběru itineráře |
| Account button | <wink-account-button> | Přihlášení / uživatelské menu |
| Itinerary button | <wink-itinerary-button> | Zobrazení aktuálního itineráře |
| Itinerary picker | <wink-itinerary-picker> | Kompletní formulář itineráře |
| Shopping cart | <wink-shopping-cart-button> | Tlačítko souhrnu košíku |
Podívejte se na Web Components pro kompletní referenci atributů.