BrowserUX Share Button

Bienvenue dans la documentation de BrowserUX Share Button

BrowserUX Share Button est un Web Component moderne et adaptable qui simplifie le partage de contenu sur tous les appareils et plateformes. Il privilégie l’utilisation de l’API Web Share native lorsqu’elle est disponible, tout en offrant une alternative élégante et universelle en cas d’incompatibilité. Léger, multilingue et indépendant de tout framework.

I. Fonctionnement

Le Web Component browserux-share-button fournit une expérience de partage fluide en tirant parti de l’API Web Share lorsqu’elle est disponible, et en proposant une modale accessible et complète sur les plateformes qui ne la prennent pas en charge.

1. Détection automatique des capacités de partage

Lorsqu’un utilisateur clique sur le bouton :

  • Si navigator.share() est pris en charge (généralement sur mobile ou PWA), la fiche de partage native s’ouvre.
  • Sinon, une modale personnalisée s’affiche, avec des liens de partage et une option de copie du lien dans le presse-papiers.

2. Résolution des métadonnées

Le composant détermine automatiquement les données à partager :

  • Titre : depuis l’attribut title, la balise <title> ou le manifest.
  • Texte : depuis l’attribut text, la meta description ou le manifest.
  • URL : depuis l’attribut url ou location.href.

Ce comportement permet une intégration immédiate : il suffit d’ajouter le composant dans le HTML.

3. Modale de secours personnalisable

Lorsque le fallback est activé, la modale :

  • Affiche uniquement les plateformes activées (email, X, WhatsApp, etc.).
  • Présente un encart avec l’icône de l’application, le titre et le lien à partager.
  • Permet à l’utilisateur de copier le lien avec un retour visuel (Lien copié !).
  • Prend en charge la navigation au clavier et tactile (touche Échap, swipe pour fermer sur mobile).

4. Langue et accessibilité

  • Le composant détecte automatiquement la langue de l’interface via l’attribut lang ou la balise html lang.
  • Tous les libellés et messages ARIA sont traduits (plus de 10 langues prises en charge).
  • La modale et le bouton sont entièrement accessibles (rôles ARIA, navigation au clavier, gestion du focus).

II. Installation


npm install browserux-share-button

Ou via CDN :


<script type="module" src="https://unpkg.com/browserux-share-button/dist/browserux-share-button.min.js"></script>

Utilisez la version .esm.js si vous intégrez le composant dans un projet avec bundler (React, Vue, etc.), et la version .min.js pour une intégration directe via une balise <script> dans une page HTML.

III. Utilisation

1. Projet moderne avec bundler (Vite, Webpack, etc.)

1. Importez le composant globalement dans votre script principal :


import 'browserux-share-button';

2. Utilisez-le ensuite dans votre HTML :


<browserux-share-button></browserux-share-button>

2. React / Next.js

1. Importez dynamiquement le composant à l’intérieur d’un useEffect :


import { useEffect } from 'react';

useEffect(() => {
  import('browserux-share-button');
}, []);

2. Utilisez-le ensuite dans votre JSX comme une balise HTML standard :


<browserux-share-button></browserux-share-button>

Ajoutez un fichier types/browserux-share-button.d.ts pour un meilleur support TypeScript avec JSX.

3. Vue 3

1. Importez-le globalement dans votre main.js ou main.ts :


import 'browserux-share-button';

2. Utilisez-le comme un élément HTML natif :


<browserux-share-button></browserux-share-button>

4. Angular

1. Importez-le dans main.ts :


import 'browserux-share-button';

2. Ajoutez CUSTOM_ELEMENTS_SCHEMA à votre AppModule :


import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

@NgModule({
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule {}

5. HTML uniquement (sans bundler)

1. Chargez le script directement depuis un CDN :


<script type="module" src="https://unpkg.com/browserux-share-button/dist/browserux-share-button.min.js"></script>

2. Utilisez la balise où vous le souhaitez :


<browserux-share-button></browserux-share-button>

IV. Paramètres de browserux-share-button

browserux-share-button prend en charge plusieurs options de personnalisation et fonctionnalités d’intégration :

Paramètre Type Nom Description
URL Attribut url L’URL à partager (par défaut : location.href actuel)
Titre Attribut title Titre utilisé pour les partages natifs et en fallback
Texte Attribut text Texte d’accompagnement du lien partagé
Langue Attribut lang Force la langue du composant (fr, en, etc.)
Sans Shadow DOM Attribut no-shadow Affiche le composant sans utiliser le Shadow DOM
Désactivation de plateformes Attribut *="false" Désactive une plateforme spécifique dans l’UI de fallback
Manifest personnalisé Attribut manifest-src Chemin personnalisé vers le manifest de l’application pour récupérer les métadonnées
Libellés personnalisés Attribut data data-label-* Surcharge les libellés par défaut (data-label-copy, etc.)
Slot d’icône Slot icon Personnalise l’icône du bouton de partage

1. Ciblage personnalisé (url)

Par défaut, le composant browserux-share-button partage l’URL de la page en cours (location.href). Toutefois, vous pouvez remplacer ce comportement en définissant une URL différente avec l’attribut url.

Attribut : url

  • Type : string (URL valide)
  • Valeur par défaut : location.href
  • Effet : spécifie l’URL à transmettre à l’API Web Share native ou aux liens de partage fallback

Exemple


<browserux-share-button
    url="https://example.com/page-to-share"
></browserux-share-button>

Dans cet exemple, un clic sur le bouton partagera https://example.com/page-to-share, quelle que soit l’URL réelle de la page. Cela est utile pour :

  • Partager une URL canonique ou raccourcie
  • Promouvoir une landing page depuis plusieurs contextes
  • Tester différents liens sans modifier l’URL de la page

Conseil

Assurez-vous que l’URL est accessible publiquement et commence par https:// pour garantir la compatibilité avec les services de partage sociaux et natifs.

2. Titre personnalisé (title)

Le titre est utilisé par certaines plateformes de partage comme objet (email) ou titre visible (ex. X/Twitter ou LinkedIn). Par défaut, le composant essaie d’extraire le titre du document ou du manifest de l’application.

Attribut : title

  • Type : string
  • Valeur par défaut : depuis la balise title ou le manifest
  • Effet : fournit un titre lisible dans le contenu partagé

Exemple


<browserux-share-button
    title="Découvrez cet article génial !"
></browserux-share-button>

Dans ce cas, les plateformes comme l’email utiliseront ce texte comme objet, et X/Twitter l’ajoutera au contenu du message.

Comportement par défaut

Si aucun titre n’est fourni :

  • 1. Le composant lit la balise title de la page
  • 2. Sinon, il essaie de récupérer le champ name du manifest
  • 3. Si rien n’est disponible, aucun titre n’est inclus

Quand surcharger le titre

Utilisez un title personnalisé si :

  • Le titre de la page est trop générique
  • Vous souhaitez mettre en avant un message ou produit spécifique
  • Vous partagez une page dans une app shell ou une vue embarquée

Conseil : combinez les attributs title, text et url pour une présentation optimale sur toutes les plateformes.

3. Texte de partage personnalisé (text)

L’attribut text permet de fournir un message ou résumé accompagnant l’URL partagée. Ce contenu est couramment utilisé dans les applications de messagerie, sur les réseaux sociaux, ou dans le corps des e-mails.

Attribut : text

  • Type : string
  • Valeur par défaut : extraite de la meta description, du manifest (champ description), ou vide
  • Effet : ajoute du contexte au contenu partagé, particulièrement utile si l’URL seule n’est pas suffisamment explicite

Exemple


<browserux-share-button
    text="Voici une lecture rapide que tu devrais apprécier."
></browserux-share-button>

Cas d’usage

  • Donner une raison de cliquer ou de lire le lien
  • Inclure un message promotionnel avec l’URL
  • Décrire plus clairement le contenu lié

4. Langue personnalisée (lang)

L’attribut lang permet de contrôler la langue utilisée pour tous les libellés internes, les descriptions ARIA et le contenu de la modale de secours.

Attribut : lang

  • Type : string
  • Valeur par défaut : déterminée à partir du composant, de la balise html lang ou en par défaut
  • Effet : ajuste les contenus internationalisés affichés par le composant

Exemple


<browserux-share-button
    lang="fr"
></browserux-share-button>

Dans cet exemple, tous les libellés comme "Copier le lien" ou les messages d’erreur s’afficheront en français.

Ordre de détection de la langue

  • 1. Attribut lang explicite sur le composant
  • 2. Sinon, valeur de la balise html lang
  • 3. Sinon, valeur par défaut en (anglais)

Langues prises en charge

Le composant prend en charge les langues suivantes pour les libellés accessibles (aria-label) :

  • 🇬🇧 en – Anglais (par défaut)
  • 🇫🇷 fr – Français
  • 🇪🇸 es – Espagnol
  • 🇩🇪 de – Allemand
  • 🇯🇵 ja – Japonais
  • 🇷🇺 ru – Russe
  • 🇵🇹 pt – Portugais
  • 🇮🇹 it – Italien
  • 🇳🇱 nl – Néerlandais

5. Désactivation du Shadow DOM (no-shadow)

Par défaut, le composant utilise le Shadow DOM pour encapsuler ses styles et sa structure. Vous pouvez désactiver ce comportement en ajoutant l’attribut no-shadow.

Attribut : no-shadow

  • Type : boolean (présence seule)
  • Effet : rend le contenu du composant dans le Light DOM (sans encapsulation)

Exemple


<browserux-share-button
    no-shadow
></browserux-share-button>

Quand l’utiliser

  • Vous souhaitez styliser le composant via du CSS global
  • Vous utilisez un framework qui pose problème avec le Shadow DOM
  • Vous préférez faciliter l’inspection ou le débogage dans les DevTools

⚠️ Désactiver le Shadow DOM rend le composant plus sensible aux conflits de styles globaux.

6. Désactiver des plateformes de partage (facebook="false", etc.)

L’interface fallback du composant browserux-share-button propose plusieurs options de partage. Si certaines plateformes ne sont pas pertinentes pour votre public ou usage, vous pouvez les désactiver via un simple attribut booléen.

Format

  • Nom de l’attribut : identique au nom de la plateforme
  • Valeur : "false" (chaîne de caractères)

Plateformes prises en charge

  • email
  • sms
  • x
  • facebook
  • whatsapp
  • linkedin
  • telegram
  • reddit

Exemple


<browserux-share-button
    facebook="false"
    sms="false"
></browserux-share-button>

7. Manifest personnalisé (manifest-src)

Par défaut, si vous ne renseignez pas explicitement les attributs title ou text, browserux-share-button tente de récupérer les métadonnées depuis le manifest de votre application web.

Le composant recherche :

  • name → utilisé comme titre de partage
  • description → utilisé comme texte de partage

Cela permet une intégration automatique avec les métadonnées d’une PWA existante.

Attribut : manifest-src

  • Type : string (chemin relatif ou URL absolue valide)
  • Par défaut : utilise le <link rel="manifest"> présent dans la page
  • Effet : remplace l’URL du manifest utilisée pour charger les métadonnées

Exemple


<browserux-share-button
    manifest-src="/custom-manifest.webmanifest"
></browserux-share-button>

Quand l’utiliser

  • Votre fichier manifest n’est pas déclaré dans le header de la page
  • Vous souhaitez charger des métadonnées depuis un fichier différent (ex : manifest par page)
  • Le chemin du manifest par défaut est erroné ou inaccessible

Logique de repli

Si aucun manifest-src n’est spécifié :

  • 1. Le composant cherche une balise <link rel="manifest"> dans le <head>
  • 2. Si elle existe, il tente de la charger et de la parser
  • 3. En cas d’échec, il poursuit avec les valeurs par défaut ou vides

Conseil : le manifest doit être servi avec le bon type MIME (application/manifest+json) et accessible via CORS.

8. Libellés personnalisés (ARIA & interface)

Vous pouvez remplacer les libellés intégrés du composant (utilisés dans l’accessibilité ARIA ou l’interface fallback) en utilisant des attributs data-label-*. Cela est particulièrement utile pour la localisation, l’ajustement du ton de marque ou la modification des messages par défaut.

Format

  • Nom de l’attribut : data-label-*
  • Valeur : chaîne personnalisée (visible par les lecteurs d’écran ou dans l’interface)

Attributs disponibles

Attribut Utilisation
data-label-copy Texte affiché sur le bouton "Copier le lien"
data-label-copied Message affiché brièvement après une copie réussie
data-label-error-copy Erreur affichée en cas d’échec de copie dans le presse-papiers
data-label-error-init Avertissement affiché si le manifest ou l’initialisation échoue
data-label-error-share Message affiché lorsque navigator.share() déclenche une erreur

Exemple


<browserux-share-button
    data-label-copied="✅ Copié !"
></browserux-share-button>

Quand l’utiliser

  • Pour fournir des libellés traduits en dehors du système de langue par défaut (lang)
  • Pour adapter le ton ou la formulation à votre marque
  • Pour remplacer les textes par des emojis ou symboles (ex : ✅ Copié !)

Astuce : ces libellés personnalisés ont priorité sur ceux issus de lang, ce qui est utile pour les apps hybrides ou multilingues.

V. Compilation & Développement


npm install
npm run build

Le projet utilise TypeScript + Rollup pour générer les fichiers :

  • dist/browserux-share-button.esm.js
  • dist/browserux-share-button.umd.js
  • dist/browserux-share-button.d.ts

VI. Licence

Licence MIT, libre d’usage, de modification et de distribution.