Oblikovanje

Gradnik se upodobi kot steklast trak z vgrajenima svetlo in temno temo. Prilagajanje je na voljo na treh ravneh: lastnosti za pogoste možnosti, lastnosti CSS po meri za oblikovanje teme in preglasitve razredov CSS za popoln nadzor.


Teme

Lastnost theme nadzoruje barvno shemo gradnika. Koren gradnika dobi razred tp--light ali tp--dark:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  theme="dark"
/>
TemaRazredOpis
'light'tp--lightSvetlo ozadje s temnim besedilom. Privzeto.
'dark'tp--darkTemno ozadje s svetlim besedilom.

Obe temi uporabljata zasnovo steklastega traku z zameglitvijo ozadja in nežno prosojnostjo.


CSS-lastnosti po meri

Gradnik izpostavlja CSS-lastnosti po meri (spremenljivke), ki jih lahko prepišete za spreminjanje barv, ne da bi spreminjali posamezne razrede. Določene so s razredom teme (.tp--light ali .tp--dark), uporabljenim na korenskem elementu .tp-widget:

LastnostPrivzeto (svetlo)Privzeto (temno)Opis
--tp-accent#000#fffBarva poudarka: gumb za začetek, stolpci valovne oblike, pika povezovanja, besedilo stanja povezave. Nastavljena v vrstičnem slogu z lastnostjo primaryColor.
--tp-bgrgba(255, 255, 255, 0.82)rgba(15, 15, 15, 0.85)Ozadje vrstice (polprosojno; zamegljeno z --tp-glass).
--tp-surfacergba(0, 0, 0, 0.04)rgba(255, 255, 255, 0.07)Ozadje gumba za utišanje.
--tp-surface-hoverrgba(0, 0, 0, 0.07)rgba(255, 255, 255, 0.12)Ozadje gumba za utišanje ob prehodu miške.
--tp-borderrgba(0, 0, 0, 0.08)rgba(255, 255, 255, 0.1)Obrobe vrstice in gumbov.
--tp-border-hoverrgba(0, 0, 0, 0.14)rgba(255, 255, 255, 0.18)Barva obrobe ob prehodu miške.
--tp-textrgba(0, 0, 0, 0.88)rgba(255, 255, 255, 0.95)Primarno besedilo (naslov, ime agenta).
--tp-text-2rgba(0, 0, 0, 0.5)rgba(255, 255, 255, 0.55)Sekundarno besedilo (podnaslov, vrstica stanja, časovnik klica).
--tp-glassblur(32px) saturate(180%)blur(32px) saturate(180%)backdrop-filter, ki na vrstici ustvari stekleni učinek.
--tp-shadowtrislojni niz senctrislojni niz sencbox-shadow vrstice (plasti obroča + bližnja + oddaljena).
--tp-shadow-hovertrislojni niz senctrislojni niz sencDoločeno za dvig ob prehodu miške; trenutno ni uporabljeno v nobenem pravilu.
--tp-glowinset 0 1px 0 0 rgba(255,255,255,0.5)inset 0 1px 0 0 rgba(255,255,255,0.06)Notranji zgornji poudarek, dodan senci vrstice.
--tp-connected#059669#34d399Barva indikatorja povezanega stanja (pika stanja).
--tp-error#dc2626#fb7185Barva besedila stanja napake.
--tp-end-bgrgba(239, 68, 68, 0.08)rgba(251, 113, 133, 0.12)Ozadje gumba za končanje klica.
--tp-end-color#ef4444#fb7185Barva ikone gumba za končanje klica.
--tp-end-borderrgba(239, 68, 68, 0.12)rgba(251, 113, 133, 0.15)Obroba gumba za končanje klica.
--tp-end-hoverrgba(239, 68, 68, 0.14)rgba(251, 113, 133, 0.2)Ozadje gumba za končanje klica ob prehodu miške.
--tp-idle-opacity0.40.3Določeno za zatemnitev v mirovanju; trenutno ni uporabljeno v nobenem pravilu.

Prepisovanje lastnosti po meri

Barvo poudarka nastavite z lastnostjo primaryColor:

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

Druge lastnosti po meri prepišite s CSS. Uporabite izbirnik z dvema razredoma (.tp-widget.tp--light / .tp-widget.tp--dark), da bo vaše pravilo prevladalo nad razredom teme, ki določa privzete vrednosti, ne glede na vrstni red slogovne predloge:

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

Razredi CSS

Vsi razredi pripomočka imajo predpono tp-, da preprečite spore z obstoječimi slogi.

RazredElementOpis
.tp-widgetKorenski ovojVsebnik s fiksnim položajem (position: fixed, kot določa lastnost position, z-index: 9999). Vsebuje razred teme in osnovne nastavitve pisave; sam po sebi nima vizualnega okvirja.
.tp--light / .tp--darkModifikatorji temeUporabljena za .tp-widget skupaj s temo; določata vse lastnosti po meri --tp-*.
.tp-barVrsticaSam steklen kapsulast element: ozadje, zameglitev ozadja, obroba, polmer 99px, senca. Širok je 300px.
.tp-metaBesedilni blokVsebnik za vse besedilo -- naslov in podnaslov v stanju pripravljenosti ter ime agenta in stanje med klicem.
.tp-namePrimarna oznakaV stanju pripravljenosti prikaže lastnost title, med klicem pa ime povezanega agenta (če ni na voljo, uporabi title).
.tp-subPodnaslovVrstica »Na voljo zdaj«, prikazana v stanju pripravljenosti.
.tp-startGumb za začetek klica v stanju pripravljenostiKrožni poudarjeni gumb za začetek (42px). Kot ozadje uporablja --tp-accent.
.tp-dotPika povezovanjaUtripajoča poudarjena pika, prikazana na levi strani vrstice med povezovanjem.
.tp-wave / .tp-wave--idleValovna oblikaPetstolpčna valovna oblika. --idle doda počasno animacijo dihanja; med klicem se stolpci odzivajo na zvok.
.tp-buttonGumbi med klicemOsnovni slog za kontrolnike med klicem (42px, zaobljeni na 12px).
.tp-button-groupVrstica gumbovMed klicem obdaja gumba za izklop zvoka in končanje klica.
.tp-button--startRazličica gumba za povezovanjeRazličica v poudarjeni barvi, prikazana med začetkom klica.
.tp-button--mutePreklop izklopa zvokaMed klicem izklopi/vklopi zvok mikrofona. Uporablja --tp-surface.
.tp-button--endGumb za končanje klicaPrekine klic. Uporablja paleto --tp-end-*.
.tp-button--loadingModifikator nalaganjaMed povezovanjem zatemni gumb.
.tp-icon / .tp-spinIkoneDoločanje velikosti ikon gumbov; tp-spin animira indikator povezovanja.
.tp-statusBlok stanja med klicemObdaja vrstico stanja med stanji povezovanja/povezanosti/napake.
.tp-status__textVrstica stanjaBesedilo stanja povezave (npr. »Povezovanje ...«) ali časovnik klica. Glede na stanje dobi .tp-status--connected (poudarjena barva) ali .tp-status--error (barva napake).
.tp-status__nameMesto za ime agentaDel bloka stanja, vendar ni prikazan v trenutni postavitvi vrstice -- ime agenta je namesto tega prikazano v .tp-name.
.tp-status__dotPika stanjaSlog utripajoče pike za stanje povezanosti (uporablja --tp-connected).

Primeri

Barva poudarka po meri prek lastnosti

Najpreprostejši način za prilagoditev znamke gradnika:

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

Barve po meri prek CSS-ja

Za popoln nadzor nad barvami preglasite lastnosti po meri. Ne pozabite, da barva poudarka izhaja iz lastnosti primaryColor, ne iz CSS-ja:

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

Velikost po meri

Gradnik povečajte ali pomanjšajte s prilagoditvijo dimenzij vrstice, gumbov in besedila:

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

Skrijte besedilne oznake

Vse besedilo gradnika je v .tp-meta. Skrijte ga v celoti, da ostanejo samo valovna oblika in gumbi:

.tp-meta {
  display: none;
}

Lahko pa skrijete posamezne dele:

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

Preglasitve za posamezno temo

Določeno temo ciljajte z razredom teme:

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

Omejevanje obsega s className

Pri uporabi komponente React posredujte lastnost className, da preglasitve omejite na določen primerek gradnika:

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

Nato ta razred ciljajte v CSS-ju:

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

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

Tako lahko imate na isti strani več primerkov gradnika z različnimi slogi. Vsakemu primerku nastavite lastno barvo poudarka prek njegove lastnosti primaryColor (CSS ne more preglasiti --tp-accent -- nastavljen je v vrstici).


Popolnoma prilagojen uporabniški vmesnik

Če preglasitve CSS-ja niso dovolj, vam headless kavelj omogoča popoln nadzor. Zagotovite ves HTML in oblikovanje, medtem ko useThunderPhone upravlja glasovno sejo. Kavelj zagotavlja tudi audioLevelRef za izdelavo na zvok odzivnih vizualizacij, kot so valovne oblike.

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