Stiilimine

Vidin kuvatakse sisseehitatud heleda ja tumeda teemaga klaasiefektiga ribana. Kohandamine on võimalik kolmel tasemel: propsid levinud valikute jaoks, CSS-i kohandatud omadused teemastamiseks ja CSS-klassi ülekirjutused täielikuks kontrolliks.


Teemad

Prop theme juhib vidina värviskeemi. See rakendab vidina juurelemendile klassi tp--light või tp--dark:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  theme="dark"
/>
TeemaKlassKirjeldus
'light'tp--lightHele taust tumeda tekstiga. Vaikimisi.
'dark'tp--darkTume taust heleda tekstiga.

Mõlemad teemad kasutavad klaasiefektiga ribakujundust tausta hägustuse ja peene läbipaistvusega.


CSS-i kohandatud omadused

Vidin pakub CSS-i kohandatud omadusi (muutujaid), mida saad värvide muutmiseks üle kirjutada ilma üksikuid klasse puudutamata. Need määrab teema klass (.tp--light või .tp--dark), mis on rakendatud .tp-widget juurelemendile:

OmadusVaikimisi (hele)Vaikimisi (tume)Kirjeldus
--tp-accent#000#fffRõhuvärv: alustamisnupp, lainekuju ribad, ühendamise täpp, ühendatud oleku tekst. Määratakse reasiseselt atribuudi primaryColor kaudu.
--tp-bgrgba(255, 255, 255, 0.82)rgba(15, 15, 15, 0.85)Riba taust (poolläbipaistev; hägustatud väärtusega --tp-glass).
--tp-surfacergba(0, 0, 0, 0.04)rgba(255, 255, 255, 0.07)Vaigistusnupu taust.
--tp-surface-hoverrgba(0, 0, 0, 0.07)rgba(255, 255, 255, 0.12)Vaigistusnupu taust hõljutamisel.
--tp-borderrgba(0, 0, 0, 0.08)rgba(255, 255, 255, 0.1)Riba ja nuppude äärised.
--tp-border-hoverrgba(0, 0, 0, 0.14)rgba(255, 255, 255, 0.18)Äärise värv hõljutamisel.
--tp-textrgba(0, 0, 0, 0.88)rgba(255, 255, 255, 0.95)Esmane tekst (pealkiri, agendi nimi).
--tp-text-2rgba(0, 0, 0, 0.5)rgba(255, 255, 255, 0.55)Teisene tekst (alampealkiri, olekurida, kõnetaimer).
--tp-glassblur(32px) saturate(180%)blur(32px) saturate(180%)Ribal klaasefekti loov backdrop-filter.
--tp-shadowkolmekihiline varjude virnkolmekihiline varjude virnRiba box-shadow (rõnga + lähedase + kauge kihi varjud).
--tp-shadow-hoverkolmekihiline varjude virnkolmekihiline varjude virnDeklareeritud hõljutusoleku esiletõstmiseks; seda ei rakenda praegu ükski reegel.
--tp-glowinset 0 1px 0 0 rgba(255,255,255,0.5)inset 0 1px 0 0 rgba(255,255,255,0.06)Riba varjule lisatav sisemine ülemine helendus.
--tp-connected#059669#34d399Ühendatud oleku indikaatori värv (olekutäpp).
--tp-error#dc2626#fb7185Veaoleku olekuteksti värv.
--tp-end-bgrgba(239, 68, 68, 0.08)rgba(251, 113, 133, 0.12)Kõne lõpetamise nupu taust.
--tp-end-color#ef4444#fb7185Kõne lõpetamise nupu ikooni värv.
--tp-end-borderrgba(239, 68, 68, 0.12)rgba(251, 113, 133, 0.15)Kõne lõpetamise nupu ääris.
--tp-end-hoverrgba(239, 68, 68, 0.14)rgba(251, 113, 133, 0.2)Kõne lõpetamise nupu taust hõljutamisel.
--tp-idle-opacity0.40.3Deklareeritud jõudeoleku hämardamiseks; seda ei rakenda praegu ükski reegel.

Kohandatud omaduste üle kirjutamine

Määra rõhuvärv atribuudi primaryColor kaudu:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  primaryColor="#e11d48"
/>

Kirjuta muud kohandatud omadused CSS-iga üle. Kasuta kahe klassiga selektorit (.tp-widget.tp--light / .tp-widget.tp--dark), et sinu reegel oleks vaikimisi väärtusi määravast teemaklassist suurema prioriteediga sõltumata stiililehe järjekorrast:

.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-klassid

Kõik vidina klassid algavad eesliitega tp-, et vältida konflikte sinu olemasolevate stiilidega.

KlassElementKirjeldus
.tp-widgetJuurmähisFikseeritud asukohaga konteiner (position: fixed, nurk määratakse position-propi abil, z-index: 9999). Sisaldab teemaklassi ja fondi põhiseadeid; sellel endal puudub visuaalne raamistik.
.tp--light / .tp--darkTeema modifikaatoridRakendatakse koos teemaga elemendile .tp-widget; määravad kõik --tp-* kohandatud omadused.
.tp-barRibaKlaasiefektiga kapsel ise: taust, tausta hägustus, ääris, 99px raadius ja vari. Laius 300px.
.tp-metaTekstiplokkKonteiner kogu teksti jaoks -- jõudeolekus pealkiri ja alapealkiri ning kõne ajal agendi nimi ja olek.
.tp-nameEsmane siltKuvab jõudeolekus title-propi ning kõne ajal ühendatud agendi nime (kasutades varuvariandina title-propi).
.tp-subAlapealkiriJõudeolekus kuvatav rida „Praegu saadaval”.
.tp-startJõudeoleku kõnenuppÜmmargune rõhutatud alustamisnupp (42px). Kasutab taustana --tp-accent.
.tp-dotÜhendamise täppPulseeriv rõhutatud täpp, mida kuvatakse ühendamise ajal riba vasakul küljel.
.tp-wave / .tp-wave--idleHelilainekujuViie ribaga helilainekuju. --idle lisab aeglase hingamisanimatsiooni; kõne ajal reageerivad ribad helile.
.tp-buttonKõneaegsed nupudKõneaegsete juhtnuppude põhistiil (42px, ümardus 12px).
.tp-button-groupNuppude ridaÜmbritseb kõne ajal vaigistamise ja kõne lõpetamise nuppe.
.tp-button--startÜhendusnupu variantRõhutatud värviga variant, mida näidatakse kõne alustamise ajal.
.tp-button--muteVaigistamise lülitiVaigistab või taastab kõne ajal mikrofoni heli. Kasutab --tp-surface.
.tp-button--endKõne lõpetamise nuppLõpetab kõne. Kasutab paletti --tp-end-*.
.tp-button--loadingLaadimise modifikaatorMuudab nupu ühendamise ajal tuhmimaks.
.tp-icon / .tp-spinIkoonidNupuikoonide suurus; tp-spin animeerib ühendamise keerlevat indikaatorit.
.tp-statusKõneaegne olekuplokkÜmbritseb olekurida ühendamise, ühendatud ja vea olekus.
.tp-status__textOlekuridaÜhenduse oleku tekst (nt „Ühendamine...”) või kõnetaimer. Saab olekule vastavalt .tp-status--connected (rõhutatud värv) või .tp-status--error (veavärv).
.tp-status__nameAgendi nime pesaOsa olekuplokist, kuid seda ei renderdata praeguses riba paigutuses -- agendi nimi kuvatakse selle asemel elemendis .tp-name.
.tp-status__dotOleku täppPulseeriva ühendatud oleku täpi stiil (kasutab --tp-connected).

Näited

Kohandatud aktsent propide kaudu

Lihtsaim viis vidina brändimiseks:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  theme="light"
  primaryColor="#059669"
  title="Talk to support"
/>

Kohandatud värvid CSS-i kaudu

Värvide täielikuks juhtimiseks alista kohandatud omadused. Pea meeles, et aktsent tuleb primaryColor propist, mitte CSS-ist:

<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);
}

Kohandatud suurus

Muuda vidin suuremaks või väiksemaks, kohandades riba, nuppude ja teksti mõõtmeid:

/* 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;
}

Peida tekstisildid

Kogu vidina tekst asub .tp-meta-s. Peida see täielikult, et alles jääksid ainult lainekuju ja nupud:

.tp-meta {
  display: none;
}

Või peida üksikud osad:

/* 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;
}

Teemapõhised alistused

Konkreetse teema sihtimiseks kasuta teemaklassi:

/* 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);
}

Ulatuse määramine className'i abil

Reacti komponendi kasutamisel anna className prop, et piirata alistused konkreetse vidinaeksemplariga:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  theme="dark"
  className="support-widget"
/>

Seejärel sihi seda klassi oma CSS-is:

.support-widget.tp--dark {
  --tp-bg: rgba(30, 30, 46, 0.9);
}

.support-widget .tp-name {
  font-weight: 700;
}

See võimaldab samal lehel kasutada mitut eri stiilidega vidinaeksemplari. Anna igale eksemplarile oma aktsent primaryColor propi kaudu (CSS ei saa --tp-accent-i alistada -- see määratakse siseselt).


Täielikult kohandatud kasutajaliides

Kui CSS-i alistustest ei piisa, annab ilma kasutajaliideseta hook sulle täieliku kontrolli. Sina määrad kogu HTML-i ja stiilid, samal ajal kui useThunderPhone haldab häälesessiooni. Hook pakub ka audioLevelRef-i helile reageerivate visualiseeringute, näiteks lainekujude, loomiseks.

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>
  )
}