Skip to main content
O widget é renderizado como uma barra glassmórfica com temas claro e escuro integrados. A personalização está disponível em três níveis: props para opções comuns, propriedades personalizadas de CSS para temas e substituições de classes CSS para controle total.
Estas opções de estilo se aplicam ao widget pré-configurado renderizado pelo componente React ThunderPhoneWidget e pelo método CDN ThunderPhone.mount(). Se precisar de uma interface completamente personalizada, use o hook headless.

Temas

A prop theme controla o esquema de cores do widget. Ela aplica uma classe tp--light ou tp--dark à raiz do widget:
Ambos os temas usam o design de barra glassmórfica com desfoque de fundo e transparência sutil.

Propriedades CSS Personalizadas

O widget expõe propriedades CSS personalizadas (variáveis) que você pode substituir para alterar as cores sem modificar classes individuais. Elas são definidas pela classe de tema (.tp--light ou .tp--dark) aplicada à raiz .tp-widget:

Substituindo propriedades personalizadas

Defina a cor de destaque pela prop primaryColor:
--tp-accent é definida como um estilo inline pela prop primaryColor, portanto substituições de --tp-accent na folha de estilos não têm efeito. Altere a cor de destaque com a prop. Todas as outras propriedades personalizadas podem ser substituídas em CSS.
Substitua as outras propriedades personalizadas com CSS. Use um seletor de duas classes (.tp-widget.tp--light / .tp-widget.tp--dark) para que sua regra tenha prioridade sobre a classe de tema que define os padrões, independentemente da ordem da folha de estilos:

Classes CSS

Todas as classes do widget têm o prefixo tp- para evitar conflitos com seus estilos existentes.

Exemplos

Cor de destaque personalizada via props

A maneira mais simples de aplicar a marca ao widget:

Cores personalizadas via CSS

Substitua as propriedades personalizadas para ter controle total das cores. Lembre-se de que a cor de destaque vem da prop primaryColor, não do CSS:

Tamanho personalizado

Aumente ou diminua o widget ajustando as dimensões da barra, dos botões e do texto:

Ocultar os rótulos de texto

Todo o texto do widget fica em .tp-meta. Oculte-o completamente para manter apenas a forma de onda e os botões:
Ou oculte partes individuais:
O rótulo de inatividade fica em .tp-name/.tp-sub, não em .tp-status — ocultar apenas .tp-status ainda exibe o título quando o widget está inativo.

Substituições específicas por tema

Direcione um tema específico com a classe do tema:

Escopo com className

Ao usar o componente React, passe uma prop className para limitar suas substituições a uma instância específica do widget:
Em seguida, direcione essa classe no seu CSS:
Isso permite ter várias instâncias do widget na mesma página com estilos diferentes. Dê a cada instância sua própria cor de destaque por meio da prop primaryColor (o CSS não pode substituir --tp-accent — ela é definida inline).

UI totalmente personalizada

Se as substituições de CSS não forem suficientes, o hook headless oferece controle total. Você fornece todo o HTML e a estilização, enquanto useThunderPhone gerencia a sessão de voz. O hook também fornece audioLevelRef para criar visualizações reativas ao áudio, como formas de onda.
O hook headless é a escolha certa quando você precisa de animações reativas ao áudio, layouts personalizados ou integração com uma biblioteca de componentes existente. As substituições de CSS e as propriedades personalizadas são melhores para ajustes rápidos de tema.