ThunderPhone 2.0 on nyt julkaistu.Ota käyttöön itse – alkaen 2¢/min.Lue lisää julkistuksesta

Widget

Tyylittely

Mukauta ThunderPhone-puhewidgetin ulkoasua CSS:llä

Widget renderöidään lasimorfisena palkkina, jossa on sisäänrakennetut vaalea ja tumma teema. Mukautuksia on saatavilla kolmella tasolla: propit yleisille asetuksille, CSS-mukautetut ominaisuudet teemoitukseen ja CSS-luokkien ohitukset täydelliseen hallintaan.


Teemat

theme-proppi määrittää widgetin värimaailman. Se lisää tp--light- tai tp--dark-luokan widgetin juurielementtiin:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  theme="dark"
/>
TeemaLuokkaKuvaus
'light'tp--lightVaalea tausta ja tumma teksti. Oletus.
'dark'tp--darkTumma tausta ja vaalea teksti.

Molemmissa teemoissa käytetään lasimorfista palkkimuotoilua, jossa on taustan sumentaminen ja hienovarainen läpinäkyvyys.

CSS-mukautetut ominaisuudet

Widget tarjoaa CSS-mukautettuja ominaisuuksia (muuttujia), joita voit korvata muuttaaksesi värejä koskematta yksittäisiin luokkiin. Ne määritetään .tp-widget-juurielementtiin lisättävällä teemaluokalla (.tp--light tai .tp--dark):

OminaisuusOletus (vaalea)Oletus (tumma)Kuvaus
--tp-accent#000#fffKorostusväri: aloituspainike, aaltomuotopalkit, yhdistämispiste, yhdistetyn tilan teksti. Asetetaan sisäisenä tyylinä primaryColor-propista.
--tp-bgrgba(255, 255, 255, 0.82)rgba(15, 15, 15, 0.85)Palkin tausta (läpikuultava; sumentuu --tp-glass-ominaisuudella).
--tp-surfacergba(0, 0, 0, 0.04)rgba(255, 255, 255, 0.07)Mykistyspainikkeen tausta.
--tp-surface-hoverrgba(0, 0, 0, 0.07)rgba(255, 255, 255, 0.12)Mykistyspainikkeen tausta osoitettaessa.
--tp-borderrgba(0, 0, 0, 0.08)rgba(255, 255, 255, 0.1)Palkin ja painikkeen reunat.
--tp-border-hoverrgba(0, 0, 0, 0.14)rgba(255, 255, 255, 0.18)Reunan väri osoitettaessa.
--tp-textrgba(0, 0, 0, 0.88)rgba(255, 255, 255, 0.95)Ensisijainen teksti (otsikko, agentin nimi).
--tp-text-2rgba(0, 0, 0, 0.5)rgba(255, 255, 255, 0.55)Toissijainen teksti (alaotsikko, tilarivi, puhelun ajastin).
--tp-glassblur(32px) saturate(180%)blur(32px) saturate(180%)Palkin lasiefektin luova backdrop-filter.
--tp-shadowkolmikerroksinen varjopinokolmikerroksinen varjopinoPalkin box-shadow (rengas + lähi- ja kaukokerrokset).
--tp-shadow-hoverkolmikerroksinen varjopinokolmikerroksinen varjopinoMääritetty osoituksesta aiheutuvaa korostusta varten; ei ole tällä hetkellä käytössä missään säännössä.
--tp-glowinset 0 1px 0 0 rgba(255,255,255,0.5)inset 0 1px 0 0 rgba(255,255,255,0.06)Palkin varjon päälle kerrostettu sisäinen yläreunan korostus.
--tp-connected#059669#34d399Yhdistetyn tilan ilmaisimen väri (tilapiste).
--tp-error#dc2626#fb7185Virhetilan tilatekstin väri.
--tp-end-bgrgba(239, 68, 68, 0.08)rgba(251, 113, 133, 0.12)Puhelun lopetuspainikkeen tausta.
--tp-end-color#ef4444#fb7185Puhelun lopetuspainikkeen kuvakkeen väri.
--tp-end-borderrgba(239, 68, 68, 0.12)rgba(251, 113, 133, 0.15)Puhelun lopetuspainikkeen reuna.
--tp-end-hoverrgba(239, 68, 68, 0.14)rgba(251, 113, 133, 0.2)Puhelun lopetuspainikkeen tausta osoitettaessa.
--tp-idle-opacity0.40.3Määritetty käyttämättömän tilan himmennystä varten; ei ole tällä hetkellä käytössä missään säännössä.

Mukautettujen ominaisuuksien korvaaminen

Aseta korostusväri primaryColor-propilla:

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

Korvaa muut mukautetut ominaisuudet CSS:llä. Käytä kahden luokan valitsinta (.tp-widget.tp--light / .tp-widget.tp--dark), jotta sääntösi on oletukset määrittävää teemaluokkaa painavampi tyylitiedostojen järjestyksestä riippumatta:

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

Kaikilla widgetin luokilla on etuliite tp-, jotta ne eivät ole ristiriidassa nykyisten tyyliesi kanssa.

LuokkaElementtiKuvaus
.tp-widgetJuurikääreKiinteästi sijoitettu säilö (position: fixed, kulma määritetään position-propilla, z-index: 9999). Sisältää teemaluokan ja fontin perusasetukset; ei omaa visuaalista kehystä.
.tp--light / .tp--darkTeeman muokkaajatKäytetään .tp-widget-luokan yhteydessä teeman mukaan; määrittävät kaikki --tp-*-mukautetut ominaisuudet.
.tp-barPalkkiItse lasimainen pillerielementti: tausta, taustan sumennus, reunus, 99px säde, varjo. Leveys 300px.
.tp-metaTekstilohkoSäilö kaikelle tekstille -- otsikolle ja alaotsikolle lepotilassa sekä agentin nimelle ja tilalle puhelun aikana.
.tp-nameEnsisijainen tunnisteNäyttää title-propin lepotilassa ja yhdistetyn agentin nimen (varavaihtoehtona title) puhelun aikana.
.tp-subAlaotsikkoLepotilassa näkyvä "Saatavilla nyt" -rivi.
.tp-startLepotilan soittonappiPyöreä korostusvärinen aloituspainike (42px). Käyttää taustana --tp-accent-arvoa.
.tp-dotYhdistämispisteSykkivä korostusvärinen piste, joka näkyy palkin vasemmalla puolella yhdistämisen aikana.
.tp-wave / .tp-wave--idleAaltomuotoViisipalkkinen aaltomuoto. --idle lisää hitaan hengitysanimaation; puhelun aikana palkit reagoivat ääneen.
.tp-buttonPuhelunaikaiset painikkeetPuhelunaikaisten ohjainten perustyyli (42px, pyöristetty 12px).
.tp-button-groupPainikeriviSisältää mykistys- ja lopetuspainikkeet puhelun aikana.
.tp-button--startYhdistämispainikkeen muunnelmaKorostusvärinen muunnelma, joka näytetään puhelun käynnistyessä.
.tp-button--muteMykistyksen kytkinMykistää tai poistaa mikrofonin mykistyksen puhelun aikana. Käyttää --tp-surface-arvoa.
.tp-button--endPuhelun lopetuspainikeLopettaa puhelun. Käyttää --tp-end-*-palettia.
.tp-button--loadingLatauksen muokkaajaHimmentää painiketta yhdistämisen aikana.
.tp-icon / .tp-spinKuvakkeetPainikekuvakkeiden mitoitus; tp-spin animoi yhdistämisen latauskuvaketta.
.tp-statusPuhelunaikainen tilalohkoSisältää tilarivin yhdistämis-, yhdistetty- ja virhetiloissa.
.tp-status__textTilariviYhteyden tilateksti (esim. "Yhdistetään...") tai puhelun ajastin. Saa tilan mukaan .tp-status--connected-luokan (korostusväri) tai .tp-status--error-luokan (virheväri).
.tp-status__nameAgentin nimipaikkaOsa tilalohkoa, mutta sitä ei renderöidä nykyisessä palkkiasettelussa -- agentin nimi näkyy sen sijaan .tp-name-elementissä.
.tp-status__dotTilapisteSykkivä yhdistetyn tilan pisteen tyyli (käyttää --tp-connected-arvoa).

Esimerkit

Mukautettu korostusväri propseilla

Helpoin tapa brändätä widget:

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

Mukautetut värit CSS:llä

Ohita mukautetut ominaisuudet, jotta saat värien täyden hallinnan. Muista, että korostusväri tulee primaryColor-propista, ei CSS:stä:

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

Mukautettu koko

Tee widgetistä suurempi tai pienempi säätämällä palkin, painikkeiden ja tekstin mittoja:

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

Piilota tekstiselitteet

Kaikki widgetin teksti on .tp-meta-elementissä. Piilota se kokonaan, jos haluat säilyttää vain aaltomuodon ja painikkeet:

.tp-meta {
  display: none;
}

Voit myös piilottaa yksittäisiä osia:

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

Teemakohtaiset ohitukset

Kohdista tiettyyn teemaan teemaluokan avulla:

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

Rajaus className-propilla

Kun käytät React-komponenttia, välitä className-proppi rajataksesi ohitukset tiettyyn widget-instanssiin:

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

Kohdista sitten kyseiseen luokkaan CSS:ssä:

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

Näin samalla sivulla voi olla useita eri tyylisiä widget-instansseja. Anna jokaiselle instanssille oma korostusvärinsä primaryColor-propin kautta (CSS ei voi ohittaa --tp-accent-arvoa -- se asetetaan inline-tyylinä).


Täysin mukautettu käyttöliittymä

Jos CSS-ohitukset eivät riitä, headless-hook antaa sinulle täyden hallinnan. Tarjoat kaiken HTML:n ja tyylittelyn, kun taas useThunderPhone hallitsee puheistuntoa. Hook tarjoaa myös audioLevelRef-viitteen audioreaktiivisten visualisointien, kuten aaltomuotojen, rakentamiseen.

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