Skip to main content
El widget se muestra como una barra con efecto vidrio, con temas claro y oscuro integrados. La personalización está disponible en tres niveles: props para opciones comunes, propiedades personalizadas de CSS para los temas y anulaciones de clases CSS para un control total.
Estas opciones de estilo se aplican al widget prediseñado que renderizan el componente React ThunderPhoneWidget y el método CDN ThunderPhone.mount(). Si necesitas una interfaz completamente personalizada, usa el hook headless.

Temas

La prop theme controla el esquema de colores del widget. Aplica una clase tp--light o tp--dark a la raíz del widget:
Ambos temas usan el diseño de barra con efecto vidrio, desenfoque de fondo y transparencia sutil.

Propiedades personalizadas de CSS

El widget expone propiedades personalizadas de CSS (variables) que puedes sobrescribir para cambiar colores sin modificar clases individuales. Se definen mediante la clase de tema (.tp--light o .tp--dark) aplicada a la raíz .tp-widget:

Sobrescribir propiedades personalizadas

Establece el color de acento mediante la prop primaryColor:
--tp-accent se establece como un estilo en línea desde la prop primaryColor, por lo que las sobrescrituras de --tp-accent en la hoja de estilos no tienen efecto. Cambia el acento con la prop. Todas las demás propiedades personalizadas se pueden sobrescribir en CSS.
Sobrescribe las demás propiedades personalizadas con CSS. Usa un selector de dos clases (.tp-widget.tp--light / .tp-widget.tp--dark) para que tu regla tenga prioridad sobre la clase de tema que define los valores predeterminados, independientemente del orden de las hojas de estilos:

Clases de CSS

Todas las clases del widget tienen el prefijo tp- para evitar conflictos con tus estilos existentes.

Ejemplos

Color de acento personalizado mediante props

La forma más sencilla de aplicar tu marca al widget:

Colores personalizados mediante CSS

Sobrescribe las propiedades personalizadas para tener control total sobre los colores. Recuerda que el acento proviene de la prop primaryColor, no de CSS:

Tamaño personalizado

Haz que el widget sea más grande o más pequeño ajustando las dimensiones de la barra, los botones y el texto:

Ocultar las etiquetas de texto

Todo el texto del widget está en .tp-meta. Ocúltalo por completo para conservar solo la forma de onda y los botones:
O bien, oculta elementos individuales:
La etiqueta inactiva está en .tp-name/.tp-sub, no en .tp-status — ocultar solo .tp-status sigue mostrando el título cuando el widget está inactivo.

Sobrescrituras específicas del tema

Aplica estilos a un tema específico mediante la clase del tema:

Alcance con className

Al usar el componente React, pasa una prop className para limitar tus sobrescrituras a una instancia específica del widget:
Luego aplica estilos a esa clase en tu CSS:
Esto te permite tener varias instancias del widget en la misma página con estilos distintos. Asigna a cada instancia su propio acento mediante su prop primaryColor (CSS no puede sobrescribir --tp-accent — se establece en línea).

Interfaz de usuario totalmente personalizada

Si las sobrescrituras de CSS no son suficientes, el hook sin interfaz te brinda control total. Tú proporcionas todo el HTML y los estilos, mientras que useThunderPhone gestiona la sesión de voz. El hook también proporciona audioLevelRef para crear visualizaciones reactivas al audio, como formas de onda.
El hook sin interfaz es la opción adecuada cuando necesitas animaciones reactivas al audio, diseños personalizados o integración con una biblioteca de componentes existente. Las sobrescrituras de CSS y las propiedades personalizadas son mejores para ajustes rápidos de temas.