Stilius
Valdiklis pateikiamas kaip stiklo efektą turinti juosta su integruotomis šviesia ir tamsia temomis. Jį galima tinkinti trimis lygiais: naudojant rekvizitus bendroms parinktims, CSS pasirinktines ypatybes temoms ir CSS klasių perrašymus visiškai kontrolei.
Temos
Rekvizitas theme valdo valdiklio spalvų schemą. Jis pritaiko tp--light arba tp--dark klasę valdiklio šakniniam elementui:
<ThunderPhoneWidget
publishableKey="pk_live_your_publishable_key"
theme="dark"
/>
| Tema | Klasė | Aprašymas |
|---|---|---|
'light' | tp--light | Šviesus fonas su tamsiu tekstu. Numatytoji. |
'dark' | tp--dark | Tamsus fonas su šviesiu tekstu. |
Abi temos naudoja stiklo efektą turinčios juostos dizainą su fono suliejimu ir subtiliu skaidrumu.
CSS pasirinktinės savybės
Valdiklis pateikia CSS pasirinktines savybes (kintamuosius), kurias galite perrašyti, kad pakeistumėte spalvas nekeisdami atskirų klasių. Jos apibrėžiamos temos klasės (.tp--light arba .tp--dark), pritaikytos .tp-widget šakniniam elementui:
| Savybė | Numatytoji (šviesi) | Numatytoji (tamsi) | Aprašymas |
|---|---|---|---|
--tp-accent | #000 | #fff | Akcento spalva: pradžios mygtukas, bangos formos juostos, jungimosi taškas, prisijungimo būsenos tekstas. Nustatoma įterptuoju stiliumi iš primaryColor parametro. |
--tp-bg | rgba(255, 255, 255, 0.82) | rgba(15, 15, 15, 0.85) | Juostos fonas (pusiau skaidrus; suliejamas naudojant --tp-glass). |
--tp-surface | rgba(0, 0, 0, 0.04) | rgba(255, 255, 255, 0.07) | Nutildymo mygtuko fonas. |
--tp-surface-hover | rgba(0, 0, 0, 0.07) | rgba(255, 255, 255, 0.12) | Nutildymo mygtuko fonas užvedus žymeklį. |
--tp-border | rgba(0, 0, 0, 0.08) | rgba(255, 255, 255, 0.1) | Juostos ir mygtuko rėmeliai. |
--tp-border-hover | rgba(0, 0, 0, 0.14) | rgba(255, 255, 255, 0.18) | Rėmelio spalva užvedus žymeklį. |
--tp-text | rgba(0, 0, 0, 0.88) | rgba(255, 255, 255, 0.95) | Pagrindinis tekstas (pavadinimas, agento vardas). |
--tp-text-2 | rgba(0, 0, 0, 0.5) | rgba(255, 255, 255, 0.55) | Antrinis tekstas (paaiškinimas, būsenos eilutė, skambučio laikmatis). |
--tp-glass | blur(32px) saturate(180%) | blur(32px) saturate(180%) | backdrop-filter, sukuriantis stiklo efektą juostoje. |
--tp-shadow | trijų sluoksnių šešėlių rinkinys | trijų sluoksnių šešėlių rinkinys | Juostos box-shadow (žiedo + artimo + tolimo sluoksniai). |
--tp-shadow-hover | trijų sluoksnių šešėlių rinkinys | trijų sluoksnių šešėlių rinkinys | Apibrėžta pakėlimui užvedus žymeklį; šiuo metu netaikoma jokia taisykle. |
--tp-glow | inset 0 1px 0 0 rgba(255,255,255,0.5) | inset 0 1px 0 0 rgba(255,255,255,0.06) | Vidinis viršutinis paryškinimas, pridedamas prie juostos šešėlio. |
--tp-connected | #059669 | #34d399 | Prisijungusios būsenos indikatoriaus spalva (būsenos taškas). |
--tp-error | #dc2626 | #fb7185 | Klaidos būsenos teksto spalva. |
--tp-end-bg | rgba(239, 68, 68, 0.08) | rgba(251, 113, 133, 0.12) | Skambučio pabaigos mygtuko fonas. |
--tp-end-color | #ef4444 | #fb7185 | Skambučio pabaigos mygtuko piktogramos spalva. |
--tp-end-border | rgba(239, 68, 68, 0.12) | rgba(251, 113, 133, 0.15) | Skambučio pabaigos mygtuko rėmelis. |
--tp-end-hover | rgba(239, 68, 68, 0.14) | rgba(251, 113, 133, 0.2) | Skambučio pabaigos mygtuko fonas užvedus žymeklį. |
--tp-idle-opacity | 0.4 | 0.3 | Apibrėžta neveikos būsenos pritemdymui; šiuo metu netaikoma jokia taisykle. |
Pasirinktinių savybių perrašymas
Nustatykite akcento spalvą naudodami primaryColor parametrą:
<ThunderPhoneWidget
publishableKey="pk_live_your_publishable_key"
primaryColor="#e11d48"
/>
Kitas pasirinktines savybes perrašykite naudodami CSS. Naudokite dviejų klasių parinkiklį (.tp-widget.tp--light / .tp-widget.tp--dark), kad jūsų taisyklė turėtų pirmenybę prieš numatytąsias reikšmes apibrėžiančią temos klasę, neatsižvelgiant į stilių lentelės eiliškumą:
.tp-widget.tp--light {
--tp-bg: rgba(0, 0, 0, 0.9);
--tp-text: rgba(255, 255, 255, 0.95);
--tp-text-2: rgba(255, 255, 255, 0.55);
--tp-border: rgba(255, 255, 255, 0.15);
}
CSS klasės
Visų valdiklio klasių pradžioje naudojamas tp-, kad nebūtų konfliktų su esamais stiliais.
| Klasė | Elementas | Aprašymas |
|---|---|---|
.tp-widget | Šakninis apvalkalas | Fiksuotos padėties konteineris (position: fixed, kampas nustatomas naudojant position rekvizitą, z-index: 9999). Turi temos klasę ir pagrindinius šrifto nustatymus; pats neturi vizualaus apipavidalinimo. |
.tp--light / .tp--dark | Temos modifikatoriai | Taikomi .tp-widget kartu su tema; apibrėžia visas --tp-* pasirinktines savybes. |
.tp-bar | Juosta | Pati stiklo efekto kapsulė: fonas, fono suliejimas, kraštinė, 99px spindulys, šešėlis. 300px pločio. |
.tp-meta | Teksto blokas | Viso teksto konteineris -- pavadinimo ir paantraštės laukimo būsenoje, agento vardo ir būsenos skambučio metu. |
.tp-name | Pagrindinė etiketė | Laukimo būsenoje rodo title rekvizitą, o skambučio metu -- prijungto agento vardą (jei jo nėra, naudojamas title). |
.tp-sub | Paantraštė | Eilutė „Dabar pasiekiamas“, rodoma laukimo būsenoje. |
.tp-start | Laukimo būsenos skambinimo mygtukas | Apvalus paryškintos spalvos pradžios mygtukas (42px). Fonui naudoja --tp-accent. |
.tp-dot | Prisijungimo taškas | Pulsuojantis paryškintos spalvos taškas, rodomas kairėje juostos pusėje prisijungiant. |
.tp-wave / .tp-wave--idle | Bangos forma | Penkių juostų bangos forma. --idle prideda lėtą pulsavimo animaciją; skambučio metu juostos reaguoja į garsą. |
.tp-button | Skambučio metu rodomi mygtukai | Pagrindinis skambučio metu naudojamų valdiklių stilius (42px, užapvalinti 12px kampai). |
.tp-button-group | Mygtukų eilutė | Skambučio metu apgaubia nutildymo ir skambučio pabaigos mygtukus. |
.tp-button--start | Prisijungimo mygtuko variantas | Paryškintos spalvos variantas, rodomas pradedant skambutį. |
.tp-button--mute | Nutildymo jungiklis | Skambučio metu nutildo arba įjungia mikrofoną. Naudoja --tp-surface. |
.tp-button--end | Skambučio pabaigos mygtukas | Baigia skambutį. Naudoja --tp-end-* paletę. |
.tp-button--loading | Įkėlimo modifikatorius | Prisijungiant pritemdo mygtuką. |
.tp-icon / .tp-spin | Piktogramos | Mygtukų piktogramų dydis; tp-spin animuoja prisijungimo suktuką. |
.tp-status | Skambučio būsenos blokas | Apgaubia būsenos eilutę prisijungimo, prisijungusios ir klaidos būsenose. |
.tp-status__text | Būsenos eilutė | Prisijungimo būsenos tekstas (pvz., „Jungiama...“) arba skambučio laikmatis. Atsižvelgiant į būseną, gauna .tp-status--connected (paryškinta spalva) arba .tp-status--error (klaidos spalva). |
.tp-status__name | Agento vardo vieta | Būsenos bloko dalis, tačiau dabartiniame juostos išdėstyme nerodoma -- agento vardas rodomas .tp-name. |
.tp-status__dot | Būsenos taškas | Pulsuojančio prisijungusios būsenos taško stilius (naudoja --tp-connected). |
Pavyzdžiai
Pasirinktinė akcentinė spalva per komponento savybes
Paprasčiausias būdas pritaikyti valdiklį savo prekės ženklui:
<ThunderPhoneWidget
publishableKey="pk_live_your_publishable_key"
theme="light"
primaryColor="#059669"
title="Talk to support"
/>
Pasirinktinės spalvos per CSS
Pakeiskite pasirinktines savybes, kad galėtumėte visiškai valdyti spalvas. Atminkite, kad akcentinė spalva nustatoma naudojant primaryColor komponento savybę, o ne CSS:
<ThunderPhoneWidget
publishableKey="pk_live_your_publishable_key"
primaryColor="#059669"
/>
/* Emerald theme for everything else */
.tp-widget.tp--light {
--tp-bg: rgba(236, 253, 245, 0.85);
--tp-text: rgba(6, 78, 59, 0.95);
--tp-text-2: rgba(4, 120, 87, 0.8);
--tp-border: rgba(5, 150, 105, 0.2);
}
Pasirinktinis dydis
Padidinkite arba sumažinkite valdiklį koreguodami juostos, mygtukų ir teksto matmenis:
/* Wider bar */
.tp-bar {
width: 340px;
}
/* Larger buttons (42px by default) */
.tp-start,
.tp-button {
width: 56px;
height: 56px;
}
/* Larger text */
.tp-name {
font-size: 16px;
}
.tp-sub,
.tp-status__text {
font-size: 14px;
}
Slėpkite teksto etiketes
Visas valdiklio tekstas yra .tp-meta. Visiškai jį paslėpkite, kad liktų tik bangos forma ir mygtukai:
.tp-meta {
display: none;
}
Arba paslėpkite atskiras dalis:
/* Hide only the idle "Available now" subtitle */
.tp-sub {
display: none;
}
/* Hide only the in-call status line (connection state / timer) */
.tp-status {
display: none;
}
Konkrečiai temai skirti pakeitimai
Nukreipkite pakeitimus į konkrečią temą naudodami temos klasę:
/* Only affect dark theme */
.tp--dark .tp-start {
box-shadow: 0 0 20px rgba(255, 255, 255, 0.25);
}
/* Only affect light theme */
.tp-widget.tp--light {
--tp-bg: rgba(255, 255, 255, 0.95);
}
Aprėpties nustatymas naudojant className
Naudodami React komponentą, perduokite className komponento savybę, kad pakeitimai būtų taikomi konkrečiam valdiklio egzemplioriui:
<ThunderPhoneWidget
publishableKey="pk_live_your_publishable_key"
theme="dark"
className="support-widget"
/>
Tada CSS nukreipkite į tą klasę:
.support-widget.tp--dark {
--tp-bg: rgba(30, 30, 46, 0.9);
}
.support-widget .tp-name {
font-weight: 700;
}
Taip tame pačiame puslapyje galite turėti kelis skirtingų stilių valdiklio egzempliorius. Kiekvienam egzemplioriui nustatykite atskirą akcentinę spalvą naudodami jo primaryColor komponento savybę (CSS negali pakeisti --tp-accent -- jis nustatomas įterptuoju stiliumi).
Visiškai pasirinktinė sąsaja
Jei CSS pakeitimų nepakanka, be sąsajos kabliukas suteikia jums visišką valdymą. Jūs pateikiate visą HTML ir stilių, o useThunderPhone tvarko balso sesiją. Kabliukas taip pat pateikia audioLevelRef, skirtą garsui reaguojančioms vizualizacijoms, pvz., bangos formoms, kurti.
import { useThunderPhone } from '@thunderphone/widget'
function MyWidget() {
const phone = useThunderPhone({
publishableKey: 'pk_live_your_publishable_key',
})
return (
<div className="my-totally-custom-widget">
{/* Your own buttons, animations, layouts -- anything */}
<button onClick={phone.state === 'connected' ? phone.disconnect : phone.connect}>
{phone.state === 'connected' ? 'Hang up' : 'Call us'}
</button>
{phone.audio}
</div>
)
}