Skip to main content
Віджет відображається як скляна панель із вбудованими світлою та темною темами. Налаштування доступне на трьох рівнях: пропси для поширених параметрів, користувацькі властивості CSS для темізації та перевизначення класів CSS для повного контролю.
Ці параметри стилізації застосовуються до готового віджета, який відображається React-компонентом ThunderPhoneWidget і CDN-методом ThunderPhone.mount(). Якщо вам потрібен повністю користувацький інтерфейс, натомість використовуйте headless hook.

Теми

Пропс theme керує колірною схемою віджета. Він застосовує клас tp--light або tp--dark до кореневого елемента віджета:
Обидві теми використовують дизайн скляної панелі з розмиванням фону та делікатною прозорістю.

Користувацькі властивості CSS

Віджет надає користувацькі властивості CSS (змінні), які можна перевизначити, щоб змінити кольори без редагування окремих класів. Вони визначаються класом теми (.tp--light або .tp--dark), застосованим до кореневого елемента .tp-widget:

Перевизначення користувацьких властивостей

Установіть акцентний колір через проп primaryColor:
--tp-accent установлюється як вбудований стиль через проп primaryColor, тому перевизначення --tp-accent у таблиці стилів не мають ефекту. Змініть акцентний колір за допомогою пропа. Усі інші користувацькі властивості можна перевизначити в CSS.
Перевизначайте інші користувацькі властивості за допомогою CSS. Використовуйте селектор із двома класами (.tp-widget.tp--light / .tp-widget.tp--dark), щоб ваше правило мало вищий пріоритет, ніж клас теми, що визначає типові значення, незалежно від порядку таблиць стилів:

CSS-класи

Усі класи віджета мають префікс tp-, щоб уникнути конфліктів із вашими наявними стилями.

Приклади

Власний акцент через props

Найпростіший спосіб брендувати віджет:

Власні кольори через CSS

Перевизначте користувацькі властивості для повного контролю над кольорами. Пам’ятайте, що акцент задається через prop primaryColor, а не через CSS:

Власний розмір

Збільште або зменште віджет, налаштувавши розміри панелі, кнопок і тексту:

Приховати текстові мітки

Увесь текст віджета міститься в .tp-meta. Повністю приховайте його, щоб залишити лише форму хвилі та кнопки:
Або приховайте окремі елементи:
Мітки в режимі очікування містяться в .tp-name/.tp-sub, а не в .tp-status — якщо приховати лише .tp-status, заголовок усе одно відображатиметься, коли віджет перебуває в режимі очікування.

Перевизначення для певної теми

Застосуйте клас теми для націлювання на конкретну тему:

Обмеження областю дії за допомогою className

Під час використання React-компонента передайте prop className, щоб обмежити дію перевизначень конкретним екземпляром віджета:
Потім зверніться до цього класу у своєму CSS:
Це дає змогу мати кілька екземплярів віджета на одній сторінці з різними стилями. Надайте кожному екземпляру власний акцент через prop primaryColor (CSS не може перевизначити --tp-accent — його задано inline).

Повністю власний UI

Якщо перевизначень CSS недостатньо, headless hook надає вам повний контроль. Ви надаєте весь HTML і стилізацію, а useThunderPhone керує голосовою сесією. Hook також надає audioLevelRef для створення візуалізацій, що реагують на звук, наприклад форм хвилі.
Headless hook — правильний вибір, коли вам потрібні анімації, що реагують на звук, власні макети або інтеграція з наявною бібліотекою компонентів. Перевизначення CSS і користувацькі властивості краще підходять для швидкого налаштування теми.