Aller au contenu

package npm

Le package npm @wink/elements est le moyen le plus rapide d’ajouter des composants web Wink à n’importe quel projet JavaScript ou TypeScript. Il fournit une fonction load() qui injecte les ressources CDN ainsi que les déclarations de types TypeScript complètes pour tous les attributs des composants.

Fenêtre de terminal
npm install @wink/elements

Appelez load() une fois au démarrage de l’application. Cette fonction est idempotente — elle peut être appelée plusieurs fois sans problème.

import { load } from '@wink/elements';
load({ clientId: 'VOTRE_CLIENT_ID' });

Puis utilisez n’importe quel composant Wink dans votre HTML ou JSX :

<wink-content-loader layout="HOTEL" id="VOTRE_LAYOUT_ID"></wink-content-loader>
app/layout.tsx
'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>;
}
plugins/wink.client.ts
import { load } from '@wink/elements';
export default defineNuxtPlugin(() => {
load({ clientId: useRuntimeConfig().public.winkClientId });
});
src/layouts/Layout.astro
---
import { load } from '@wink/elements';
---
<script>
import { load } from '@wink/elements';
load({ clientId: import.meta.env.PUBLIC_WINK_CLIENT_ID });
</script>
src/routes/+layout.ts
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 });
}
}

Toutes les interfaces des attributs des composants sont exportées pour une utilisation dans JSX, les littéraux de template ou les dictionnaires typés :

import type { WinkContentLoaderAttributes, WinkLayout } from '@wink/elements';
const attrs: WinkContentLoaderAttributes = {
layout: 'HOTEL', // TypeScript détectera les valeurs invalides pour layout
id: 'abc123',
sort: 'POPULARITY',
};
load({
clientId: 'VOTRE_CLIENT_ID',
cdnBaseUrl: 'https://staging-elements.wink.travel',
});
OptionTypeObligatoirePar défautDescription
clientIdstringOuiVotre Client ID OAuth2 Wink
configurationIdstringNonID de personnalisation optionnel
cdnBaseUrlstringNonhttps://elements.wink.travelURL du CDN à remplacer