Skip to main content
Widget dirender sebagai bilah bergaya glassmorphism dengan tema terang dan gelap bawaan. Kustomisasi tersedia dalam tiga tingkat: prop untuk opsi umum, properti kustom CSS untuk tema, dan override class CSS untuk kontrol penuh.
Opsi gaya ini berlaku untuk widget siap pakai yang dirender oleh komponen React ThunderPhoneWidget dan metode CDN ThunderPhone.mount(). Jika Anda memerlukan UI yang sepenuhnya kustom, gunakan hook headless.

Tema

Prop theme mengontrol skema warna widget. Prop ini menerapkan class tp--light atau tp--dark ke elemen akar widget:
Kedua tema menggunakan desain bilah bergaya glassmorphism dengan blur latar belakang dan transparansi halus.

Properti Kustom CSS

Widget mengekspos properti kustom CSS (variabel) yang dapat Anda timpa untuk mengubah warna tanpa menyentuh setiap class. Properti ini ditentukan oleh class tema (.tp--light atau .tp--dark) yang diterapkan pada root .tp-widget:

Menimpa Properti Kustom

Atur warna aksen melalui prop primaryColor:
--tp-accent ditetapkan sebagai gaya inline dari prop primaryColor, sehingga penimpaan --tp-accent melalui stylesheet tidak berpengaruh. Ubah aksen dengan prop tersebut. Setiap properti kustom lainnya dapat ditimpa dalam CSS.
Timpa properti kustom lainnya dengan CSS. Gunakan selector dua class (.tp-widget.tp--light / .tp-widget.tp--dark) agar aturan Anda memiliki prioritas lebih tinggi daripada class tema yang menentukan default, terlepas dari urutan stylesheet:

Kelas CSS

Semua kelas widget diawali dengan tp- untuk menghindari konflik dengan gaya yang sudah ada.

Contoh

Aksen Kustom melalui Prop

Cara paling sederhana untuk memberi identitas merek pada widget:

Warna Kustom melalui CSS

Timpa properti kustom untuk kontrol warna penuh. Ingat bahwa aksen berasal dari prop primaryColor, bukan CSS:

Ukuran Kustom

Buat widget lebih besar atau lebih kecil dengan menyesuaikan dimensi bilah, tombol, dan teks:

Sembunyikan Label Teks

Semua teks widget berada di .tp-meta. Sembunyikan seluruhnya agar hanya waveform dan tombol yang tersisa:
Atau sembunyikan bagian tertentu:
Label saat idle berada di .tp-name/.tp-sub, bukan .tp-status — menyembunyikan .tp-status saja tetap menampilkan judul saat widget idle.

Override Khusus Tema

Targetkan tema tertentu dengan kelas tema:

Pembatasan Cakupan dengan className

Saat menggunakan komponen React, teruskan prop className untuk membatasi cakupan override Anda ke instance widget tertentu:
Kemudian targetkan kelas tersebut dalam CSS Anda:
Ini memungkinkan Anda memiliki beberapa instance widget pada halaman yang sama dengan gaya berbeda. Berikan setiap instance aksennya sendiri melalui prop primaryColor (CSS tidak dapat menimpa --tp-accent — properti ini ditetapkan secara inline).

UI Sepenuhnya Kustom

Jika override CSS belum cukup, hook headless memberi Anda kontrol penuh. Anda menyediakan semua HTML dan styling, sementara useThunderPhone menangani sesi suara. Hook ini juga menyediakan audioLevelRef untuk membuat visualisasi reaktif terhadap audio seperti waveform.
Hook headless adalah pilihan tepat saat Anda memerlukan animasi reaktif terhadap audio, tata letak kustom, atau integrasi ke dalam library komponen yang sudah ada. Override CSS dan properti kustom lebih baik untuk penyesuaian tema yang cepat.