Skip to main content
Виджет отображается в виде стекломорфной панели со встроенными светлой и тёмной темами. Настройка доступна на трёх уровнях: свойства для распространённых параметров, пользовательские свойства CSS для темизации и переопределения CSS-классов для полного контроля.
Эти параметры стилизации применяются к готовому виджету, отображаемому React-компонентом ThunderPhoneWidget и CDN-методом ThunderPhone.mount(). Если вам нужен полностью кастомный интерфейс, используйте headless-хук.

Темы

Свойство 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

Переопределите пользовательские свойства для полного контроля над цветами. Помните, что акцентный цвет задаётся свойством primaryColor, а не CSS:

Пользовательский размер

Увеличьте или уменьшите виджет, настроив размеры панели, кнопок и текста:

Скрытие текстовых меток

Весь текст виджета находится в .tp-meta. Полностью скройте его, чтобы оставить только звуковую волну и кнопки:
Или скройте отдельные элементы:
Метка в режиме ожидания находится в .tp-name/.tp-sub, а не в .tp-status — если скрыть только .tp-status, заголовок всё равно будет отображаться, когда виджет находится в режиме ожидания.

Переопределения для конкретной темы

Настройте определённую тему с помощью класса темы:

Область действия с className

При использовании React-компонента передайте свойство className, чтобы ограничить область действия переопределений конкретным экземпляром виджета:
Затем используйте этот класс в CSS:
Это позволяет разместить на одной странице несколько экземпляров виджета с разными стилями. Задайте каждому экземпляру собственный акцентный цвет через свойство primaryColor (CSS не может переопределить --tp-accent — он задаётся встроенно).

Полностью пользовательский интерфейс

Если переопределений CSS недостаточно, headless-хук предоставляет полный контроль. Вы предоставляете весь HTML и стили, а useThunderPhone управляет голосовой сессией. Хук также предоставляет audioLevelRef для создания визуализаций, реагирующих на звук, например звуковых волн.
Headless-хук — правильный выбор, когда нужны анимации, реагирующие на звук, пользовательские макеты или интеграция с существующей библиотекой компонентов. Переопределения CSS и пользовательские свойства лучше подходят для быстрой настройки темы.