paquete npm
El paquete npm @wink/elements es la forma más rápida de añadir componentes web de Wink a cualquier proyecto de JavaScript o TypeScript. Proporciona una función load() que inyecta los recursos del CDN y las declaraciones completas de tipos TypeScript para todos los atributos de los componentes.
wink-travel/wink-elements en GitHub Código fuente, referencia de API e instrucciones para contribuir.
Instalación
Sección titulada «Instalación»npm install @wink/elementsInicio rápido
Sección titulada «Inicio rápido»Llama a load() una vez al iniciar la aplicación. Es idempotente — seguro llamarlo varias veces.
import { load } from '@wink/elements';
load({ clientId: 'TU_CLIENT_ID' });Luego usa cualquier componente Wink en tu HTML o JSX:
<wink-content-loader layout="HOTEL" id="TU_LAYOUT_ID"></wink-content-loader>Ejemplos por framework
Sección titulada «Ejemplos por framework»Next.js (App Router)
Sección titulada «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
Sección titulada «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 }); }}Tipos de TypeScript
Sección titulada «Tipos de TypeScript»Todas las interfaces de atributos de componentes se exportan para usar en JSX, literales de plantilla o diccionarios tipados:
import type { WinkContentLoaderAttributes, WinkLayout } from '@wink/elements';
const attrs: WinkContentLoaderAttributes = { layout: 'HOTEL', // TypeScript detectará valores inválidos para layout id: 'abc123', sort: 'POPULARITY',};Uso de un CDN de staging
Sección titulada «Uso de un CDN de staging»load({ clientId: 'TU_CLIENT_ID', cdnBaseUrl: 'https://staging-elements.wink.travel',});load(options)
Sección titulada «load(options)»| Opción | Tipo | Obligatorio | Por defecto | Descripción |
|---|---|---|---|---|
clientId | string | Sí | — | Tu Client ID OAuth2 de Wink |
configurationId | string | No | — | ID opcional para personalización |
cdnBaseUrl | string | No | https://elements.wink.travel | URL del CDN a sobrescribir |