Urembeshaji

Wijeti huonyeshwa kama upau wenye athari ya glassmorphism na mandhari ya mwanga na giza yaliyojengewa ndani. Ubinafsishaji unapatikana katika viwango vitatu: props kwa chaguo za kawaida, sifa maalum za CSS kwa mandhari, na ubatilishaji wa madarasa ya CSS kwa udhibiti kamili.


Mandhari

Prop ya theme hudhibiti mpangilio wa rangi wa wijeti. Huongeza darasa la tp--light au tp--dark kwenye mzizi wa wijeti:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  theme="dark"
/>
MandhariDarasaMaelezo
'light'tp--lightMandharinyuma mepesi yenye maandishi meusi. Chaguo-msingi.
'dark'tp--darkMandharinyuma meusi yenye maandishi mepesi.

Mandhari yote mawili hutumia muundo wa upau wenye athari ya glassmorphism, wenye ukungu wa mandharinyuma na uwazi hafifu.


Sifa Maalum za CSS

Wijeti hutoa sifa maalum za CSS (vigeu) unazoweza kubatilisha ili kubadilisha rangi bila kugusa madarasa binafsi. Zinafafanuliwa na darasa la mandhari (.tp--light au .tp--dark) linalotumika kwenye mzizi wa .tp-widget:

SifaChaguomsingi (mwanga)Chaguomsingi (giza)Maelezo
--tp-accent#000#fffRangi ya msisitizo: kitufe cha kuanza, pau za umbo la mawimbi, nukta ya kuunganisha, maandishi ya hali ya kuunganishwa. Weka ndani ya mstari kutoka kwa prop ya primaryColor.
--tp-bgrgba(255, 255, 255, 0.82)rgba(15, 15, 15, 0.85)Mandharinyuma ya upau (ina uwazi kiasi; inatiwa ukungu na --tp-glass).
--tp-surfacergba(0, 0, 0, 0.04)rgba(255, 255, 255, 0.07)Mandharinyuma ya kitufe cha kunyamazisha.
--tp-surface-hoverrgba(0, 0, 0, 0.07)rgba(255, 255, 255, 0.12)Mandharinyuma ya kitufe cha kunyamazisha unapoelea juu yake.
--tp-borderrgba(0, 0, 0, 0.08)rgba(255, 255, 255, 0.1)Mipaka ya upau na kitufe.
--tp-border-hoverrgba(0, 0, 0, 0.14)rgba(255, 255, 255, 0.18)Rangi ya mpaka unapoelea juu yake.
--tp-textrgba(0, 0, 0, 0.88)rgba(255, 255, 255, 0.95)Maandishi ya msingi (kichwa, jina la ejenti).
--tp-text-2rgba(0, 0, 0, 0.5)rgba(255, 255, 255, 0.55)Maandishi ya pili (kichwa kidogo, mstari wa hali, kipima muda cha simu).
--tp-glassblur(32px) saturate(180%)blur(32px) saturate(180%)backdrop-filter inayounda athari ya kioo kwenye upau.
--tp-shadowmkusanyiko wa vivuli vya tabaka tatumkusanyiko wa vivuli vya tabaka tatubox-shadow ya upau (tabaka za pete + karibu + mbali).
--tp-shadow-hovermkusanyiko wa vivuli vya tabaka tatumkusanyiko wa vivuli vya tabaka tatuImetangazwa kwa ajili ya mwinuko unapoelea juu yake; kwa sasa haitumiki na kanuni yoyote.
--tp-glowinset 0 1px 0 0 rgba(255,255,255,0.5)inset 0 1px 0 0 rgba(255,255,255,0.06)Mwangaza wa ndani wa juu unaowekwa kama tabaka kwenye kivuli cha upau.
--tp-connected#059669#34d399Rangi ya kiashiria cha hali ya kuunganishwa (nukta ya hali).
--tp-error#dc2626#fb7185Rangi ya maandishi ya hali ya hitilafu.
--tp-end-bgrgba(239, 68, 68, 0.08)rgba(251, 113, 133, 0.12)Mandharinyuma ya kitufe cha kumaliza simu.
--tp-end-color#ef4444#fb7185Rangi ya ikoni ya kitufe cha kumaliza simu.
--tp-end-borderrgba(239, 68, 68, 0.12)rgba(251, 113, 133, 0.15)Mpaka wa kitufe cha kumaliza simu.
--tp-end-hoverrgba(239, 68, 68, 0.14)rgba(251, 113, 133, 0.2)Mandharinyuma ya kitufe cha kumaliza simu unapoelea juu yake.
--tp-idle-opacity0.40.3Imetangazwa kwa ajili ya kupunguza mwangaza katika hali ya kutofanya kazi; kwa sasa haitumiki na kanuni yoyote.

Kubatilisha Sifa Maalum

Weka rangi ya msisitizo kupitia prop ya primaryColor:

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

Batilisha sifa nyingine maalum kwa CSS. Tumia kiteuzi cha madarasa mawili (.tp-widget.tp--light / .tp-widget.tp--dark) ili kanuni yako izidi uzito wa darasa la mandhari linalofafanua chaguomsingi, bila kujali mpangilio wa stylesheet:

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

Madarasa ya CSS

Madarasa yote ya wijeti yana kiambishi awali tp- ili kuepuka migongano na mitindo yako iliyopo.

DarasaKipengeleMaelezo
.tp-widgetKifungashi cha msingiKontena yenye nafasi isiyobadilika (position: fixed, kona huwekwa na prop ya position, z-index: 9999). Hubeba darasa la mandhari na mipangilio ya msingi ya fonti; haina mwonekano wake wa ziada.
.tp--light / .tp--darkVirekebishaji vya mandhariHutumika kwenye .tp-widget pamoja na mandhari; hufafanua sifa zote maalum za --tp-*.
.tp-barUpauKidonge cha glassmorphism chenyewe: mandharinyuma, ukungu wa mandharinyuma, mpaka, radius ya 99px, kivuli. Upana wa 300px.
.tp-metaKizuizi cha maandishiKontena la maandishi yote -- kichwa na manukuu wakati haifanyi kazi, jina la ejenti na hali wakati wa simu.
.tp-nameLebo ya msingiHuonyesha prop ya title wakati haifanyi kazi, na jina la ejenti aliyeunganishwa (ikirejea title) wakati wa simu.
.tp-subManukuuMstari wa "Inapatikana sasa" unaoonyeshwa wakati haifanyi kazi.
.tp-startKitufe cha simu wakati haifanyi kaziKitufe cha mviringo cha kuanzisha chenye rangi kuu (42px). Hutumia --tp-accent kama mandharinyuma.
.tp-dotNukta ya kuunganishaNukta yenye rangi kuu inayodunda inayoonyeshwa upande wa kushoto wa upau wakati wa kuunganisha.
.tp-wave / .tp-wave--idleUmbo la mawimbiUmbo la mawimbi la pau tano. --idle huongeza uhuishaji wa polepole wa kupumua; wakati wa simu pau huitikia sauti.
.tp-buttonVitufe vya wakati wa simuMtindo wa msingi wa vidhibiti vya wakati wa simu (42px, pembe za mviringo 12px).
.tp-button-groupMstari wa vitufeHufunga vitufe vya kunyamazisha na kumaliza wakati wa simu.
.tp-button--startToleo la kitufe cha kuunganishaToleo lenye rangi kuu linaloonyeshwa simu inapoanza.
.tp-button--muteKigeuzi cha kunyamazishaHunyamazisha/huwasha maikrofoni wakati wa simu. Hutumia --tp-surface.
.tp-button--endKitufe cha kumaliza simuHukata simu. Hutumia paleti ya --tp-end-*.
.tp-button--loadingKirekebishaji cha kupakiaHupunguza mwangaza wa kitufe wakati wa kuunganisha.
.tp-icon / .tp-spinAikoniUkubwa wa aikoni za vitufe; tp-spin huweka uhuishaji kwenye kiashiria cha kuunganisha kinachozunguka.
.tp-statusKizuizi cha hali wakati wa simuHufunga mstari wa hali wakati wa hali za kuunganisha/kuunganishwa/hitilafu.
.tp-status__textMstari wa haliMaandishi ya hali ya muunganisho (kwa mfano, "Inaunganisha...") au kipima muda cha simu. Hupata .tp-status--connected (rangi kuu) au .tp-status--error (rangi ya hitilafu) kulingana na hali.
.tp-status__nameNafasi ya jina la ejentiSehemu ya kizuizi cha hali, lakini haionyeshwi katika mpangilio wa sasa wa upau -- jina la ejenti huonekana kwenye .tp-name badala yake.
.tp-status__dotNukta ya haliMtindo wa nukta ya hali ya kuunganishwa inayodunda (hutumia --tp-connected).

Mifano

Rangi Maalum ya Msisitizo kupitia Props

Njia rahisi zaidi ya kuweka chapa kwenye wijeti:

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

Rangi Maalum kupitia CSS

Batilisha sifa maalum ili kudhibiti rangi kikamilifu. Kumbuka kwamba rangi ya msisitizo hutoka kwenye prop ya primaryColor, si 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);
}

Ukubwa Maalum

Fanya wijeti iwe kubwa au ndogo zaidi kwa kurekebisha vipimo vya upau, kitufe na maandishi:

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

Ficha Lebo za Maandishi

Maandishi yote ya wijeti yapo katika .tp-meta. Yafiche yote ili kubakiza tu umbo la mawimbi na vitufe:

.tp-meta {
  display: none;
}

Au ficha sehemu mahususi:

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

Ubatilishaji Mahususi wa Mandhari

Lenga mandhari mahususi kwa kutumia darasa la mandhari:

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

Kuweka Wigo kwa className

Unapotumia kipengele cha React, pitisha prop ya className ili kuweka wigo wa ubatilishaji wako kwa instancia mahususi ya wijeti:

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

Kisha lenga darasa hilo katika CSS yako:

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

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

Hii hukuruhusu kuwa na instancia nyingi za wijeti kwenye ukurasa mmoja zenye mitindo tofauti. Ipe kila instancia rangi yake ya msisitizo kupitia prop yake ya primaryColor (CSS haiwezi kubatilisha --tp-accent -- huwekwa inline).


UI Maalum Kikamilifu

Ikiwa ubatilishaji wa CSS hautoshi, hook isiyo na kiolesura hukupa udhibiti kamili. Unatoa HTML na mtindo wote huku useThunderPhone ikishughulikia kipindi cha sauti. Hook pia hutoa audioLevelRef kwa ajili ya kuunda vielelezo vinavyoitikia sauti kama maumbo ya mawimbi.

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