Skip to main content
Le widget s’affiche sous la forme d’une barre au style glassmorphique avec des thèmes clair et sombre intégrés. La personnalisation est disponible à trois niveaux : les props pour les options courantes, les propriétés personnalisées CSS pour les thèmes et les remplacements de classes CSS pour un contrôle total.
Ces options de style s’appliquent au widget préconfiguré rendu par le composant React ThunderPhoneWidget et la méthode CDN ThunderPhone.mount(). Si vous avez besoin d’une interface utilisateur entièrement personnalisée, utilisez plutôt le hook headless.

Thèmes

La prop theme contrôle le jeu de couleurs du widget. Elle applique une classe tp--light ou tp--dark à la racine du widget :
Les deux thèmes utilisent le design de barre glassmorphique avec un flou d’arrière-plan et une transparence subtile.

Propriétés personnalisées CSS

Le widget expose des propriétés personnalisées CSS (variables) que vous pouvez remplacer pour modifier les couleurs sans toucher aux classes individuelles. Elles sont définies par la classe de thème (.tp--light ou .tp--dark) appliquée à la racine .tp-widget :

Remplacer des propriétés personnalisées

Définissez la couleur d’accentuation via la prop primaryColor :
--tp-accent est définie comme un style en ligne depuis la prop primaryColor. Les remplacements de --tp-accent dans une feuille de style n’ont donc aucun effet. Modifiez la couleur d’accentuation avec la prop. Toutes les autres propriétés personnalisées peuvent être remplacées en CSS.
Remplacez les autres propriétés personnalisées avec CSS. Utilisez un sélecteur à deux classes (.tp-widget.tp--light / .tp-widget.tp--dark) afin que votre règle l’emporte sur la classe de thème qui définit les valeurs par défaut, quel que soit l’ordre de la feuille de style :

Classes CSS

Toutes les classes du widget sont préfixées par tp- afin d’éviter les conflits avec vos styles existants.

Exemples

Accent personnalisée via les props

La manière la plus simple de personnaliser l’image de marque du widget :

Couleurs personnalisées via CSS

Remplacez les propriétés personnalisées pour contrôler entièrement les couleurs. N’oubliez pas que l’accent provient de la prop primaryColor, et non du CSS :

Taille personnalisée

Agrandissez ou réduisez le widget en ajustant les dimensions de la barre, des boutons et du texte :

Masquer les libellés textuels

Tout le texte du widget se trouve dans .tp-meta. Masquez-le entièrement pour ne conserver que la forme d’onde et les boutons :
Vous pouvez également masquer des éléments individuels :
Le libellé inactif se trouve dans .tp-name/.tp-sub, et non dans .tp-status — masquer uniquement .tp-status affiche toujours le titre lorsque le widget est inactif.

Remplacements spécifiques au thème

Ciblez un thème spécifique avec la classe de thème :

Délimitation avec className

Lorsque vous utilisez le composant React, transmettez une prop className pour limiter vos remplacements à une instance spécifique du widget :
Ciblez ensuite cette classe dans votre CSS :
Cela vous permet d’avoir plusieurs instances du widget sur la même page avec des styles différents. Donnez à chaque instance son propre accent via sa prop primaryColor (le CSS ne peut pas remplacer --tp-accent — il est défini en ligne).

Interface utilisateur entièrement personnalisée

Si les remplacements CSS ne suffisent pas, le hook headless vous donne un contrôle total. Vous fournissez tout le HTML et le style, tandis que useThunderPhone gère la session vocale. Le hook fournit également audioLevelRef pour créer des visualisations réactives à l’audio, comme des formes d’onde.
Le hook headless est le bon choix lorsque vous avez besoin d’animations réactives à l’audio, de mises en page personnalisées ou d’une intégration dans une bibliothèque de composants existante. Les remplacements CSS et les propriétés personnalisées sont préférables pour des ajustements rapides de thème.