பாணியமைப்பு

விட்ஜெட், உள்ளமைக்கப்பட்ட ஒளி மற்றும் இருள் தீம்களுடன் கண்ணாடி போன்ற பட்டையாக ரெண்டர் செய்யப்படுகிறது. தனிப்பயனாக்கம் மூன்று நிலைகளில் கிடைக்கிறது: பொதுவான விருப்பங்களுக்கான props, தீமிங்கிற்கான CSS தனிப்பயன் பண்புகள், மற்றும் முழுக் கட்டுப்பாட்டிற்கான CSS கிளாஸ் மேலெழுதல்கள்.


தீம்கள்

theme prop விட்ஜெட்டின் வண்ணத் திட்டத்தைக் கட்டுப்படுத்துகிறது. இது விட்ஜெட் ரூட்டில் tp--light அல்லது tp--dark கிளாஸைப் பயன்படுத்துகிறது:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  theme="dark"
/>
தீம்கிளாஸ்விளக்கம்
'light'tp--lightஇருண்ட உரையுடன் ஒளிரும் பின்னணி. இயல்புநிலை.
'dark'tp--darkஒளிரும் உரையுடன் இருண்ட பின்னணி.

இரண்டு தீம்களும் பின்னணி மங்கலாக்கம் மற்றும் நுட்பமான வெளிப்படைத்தன்மையுடன் கண்ணாடி போன்ற பார் வடிவமைப்பைப் பயன்படுத்துகின்றன.


CSS தனிப்பயன் பண்புகள்

தனிப்பட்ட class-களை மாற்றாமல் நிறங்களை மாற்ற நீங்கள் மேலெழுதக்கூடிய CSS தனிப்பயன் பண்புகளை (மாறிகள்) widget வழங்குகிறது. அவை .tp-widget மூல உறுப்பில் பயன்படுத்தப்படும் theme class (.tp--light அல்லது .tp--dark) மூலம் வரையறுக்கப்படுகின்றன:

பண்புஇயல்புநிலை (ஒளிர்வு)இயல்புநிலை (இருள்)விளக்கம்
--tp-accent#000#fffவலியுறுத்தல் நிறம்: தொடக்கப் பொத்தான், அலைவடிவப் பட்டைகள், இணைக்கும் புள்ளி, இணைந்த நிலை உரை. primaryColor prop-இலிருந்து வரி உட்புறமாக அமைக்கப்படுகிறது.
--tp-bgrgba(255, 255, 255, 0.82)rgba(15, 15, 15, 0.85)பட்டை பின்னணி (ஒளிபுகும் தன்மை கொண்டது; --tp-glass மூலம் மங்கலாக்கப்படுகிறது).
--tp-surfacergba(0, 0, 0, 0.04)rgba(255, 255, 255, 0.07)ஒலியமைப்புப் பொத்தான் பின்னணி.
--tp-surface-hoverrgba(0, 0, 0, 0.07)rgba(255, 255, 255, 0.12)ஒலியமைப்புப் பொத்தானின் ஹோவர் பின்னணி.
--tp-borderrgba(0, 0, 0, 0.08)rgba(255, 255, 255, 0.1)பட்டை மற்றும் பொத்தான் ஓரங்கள்.
--tp-border-hoverrgba(0, 0, 0, 0.14)rgba(255, 255, 255, 0.18)ஹோவரின்போது ஓர நிறம்.
--tp-textrgba(0, 0, 0, 0.88)rgba(255, 255, 255, 0.95)முதன்மை உரை (தலைப்பு, ஏஜென்ட் பெயர்).
--tp-text-2rgba(0, 0, 0, 0.5)rgba(255, 255, 255, 0.55)இரண்டாம் நிலை உரை (துணைத்தலைப்பு, நிலை வரி, அழைப்பு நேரமானி).
--tp-glassblur(32px) saturate(180%)blur(32px) saturate(180%)பட்டையில் கண்ணாடி விளைவை உருவாக்கும் backdrop-filter.
--tp-shadowமூன்று-அடுக்கு நிழல் அடுக்கு அமைப்புமூன்று-அடுக்கு நிழல் அடுக்கு அமைப்புபட்டையின் box-shadow (வளையம் + அருகிலுள்ள + தொலைவிலுள்ள அடுக்குகள்).
--tp-shadow-hoverமூன்று-அடுக்கு நிழல் அடுக்கு அமைப்புமூன்று-அடுக்கு நிழல் அடுக்கு அமைப்புஹோவர் உயர்வுக்காக அறிவிக்கப்பட்டது; தற்போது எந்த விதியாலும் பயன்படுத்தப்படவில்லை.
--tp-glowinset 0 1px 0 0 rgba(255,255,255,0.5)inset 0 1px 0 0 rgba(255,255,255,0.06)பட்டை நிழலின் மீது அடுக்கப்படும் உள்புற மேல் சிறப்பம்சம்.
--tp-connected#059669#34d399இணைந்த நிலை குறியீட்டு நிறம் (நிலைப் புள்ளி).
--tp-error#dc2626#fb7185பிழை நிலை உரை நிறம்.
--tp-end-bgrgba(239, 68, 68, 0.08)rgba(251, 113, 133, 0.12)அழைப்பை முடிக்கும் பொத்தான் பின்னணி.
--tp-end-color#ef4444#fb7185அழைப்பை முடிக்கும் பொத்தான் ஐகான் நிறம்.
--tp-end-borderrgba(239, 68, 68, 0.12)rgba(251, 113, 133, 0.15)அழைப்பை முடிக்கும் பொத்தான் ஓரம்.
--tp-end-hoverrgba(239, 68, 68, 0.14)rgba(251, 113, 133, 0.2)அழைப்பை முடிக்கும் பொத்தானின் ஹோவர் பின்னணி.
--tp-idle-opacity0.40.3செயலற்ற நிலை மங்கலுக்காக அறிவிக்கப்பட்டது; தற்போது எந்த விதியாலும் பயன்படுத்தப்படவில்லை.

தனிப்பயன் பண்புகளை மேலெழுதுதல்

வலியுறுத்தல் நிறத்தை primaryColor prop மூலம் அமைக்கவும்:

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

மற்ற தனிப்பயன் பண்புகளை CSS மூலம் மேலெழுதவும். stylesheet வரிசையைப் பொருட்படுத்தாமல், இயல்புநிலைகளை வரையறுக்கும் theme class-ஐ உங்கள் விதி மீறுவதற்கு இரண்டு-class selector (.tp-widget.tp--light / .tp-widget.tp--dark) பயன்படுத்தவும்:

.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 வகுப்புகள்

உங்கள் ஏற்கனவே உள்ள ஸ்டைல்களுடன் முரண்பாடுகளைத் தவிர்க்க அனைத்து widget வகுப்புகளுக்கும் tp- முன்னொட்டு சேர்க்கப்பட்டுள்ளது.

வகுப்புஉறுப்புவிளக்கம்
.tp-widgetமூல ரேப்பர்நிலையான-நிலை கொண்டெய்னர் (position: fixed, மூலை position prop மூலம் அமைக்கப்படும், z-index: 9999). தீம் வகுப்பு மற்றும் அடிப்படை எழுத்துரு அமைப்புகளைக் கொண்டிருக்கும்; தனிப்பட்ட காட்சி அலங்காரம் எதுவும் இல்லை.
.tp--light / .tp--darkதீம் மாற்றிகள்தீமுடன் சேர்த்து .tp-widget-இல் பயன்படுத்தப்படும்; அனைத்து --tp-* தனிப்பயன் பண்புகளையும் வரையறுக்கும்.
.tp-barபட்டைகண்ணாடித் தோற்றமுள்ள பில் வடிவம்: பின்னணி, பின்புல மங்கல், பார்டர், 99px ஆரம், நிழல். அகலம் 300px.
.tp-metaஉரைத் தொகுதிஅனைத்து உரைகளுக்குமான கொண்டெய்னர் -- செயலற்ற நிலையில் தலைப்பு மற்றும் துணைத்தலைப்பு, அழைப்பின்போது ஏஜென்ட் பெயர் மற்றும் நிலை.
.tp-nameமுதன்மை லேபல்செயலற்ற நிலையில் title prop-ஐயும், அழைப்பின்போது இணைக்கப்பட்ட ஏஜென்ட்டின் பெயரையும் (title-க்கு மாறாகப் பயன்படுத்தி) காட்டும்.
.tp-subதுணைத்தலைப்புசெயலற்ற நிலையில் காட்டப்படும் "இப்போது கிடைக்கிறது" வரி.
.tp-startசெயலற்ற அழைப்பு பொத்தான்வட்ட வடிவ உச்சரிப்பு தொடக்கப் பொத்தான் (42px). பின்னணியாக --tp-accent-ஐப் பயன்படுத்தும்.
.tp-dotஇணைப்பு புள்ளிஇணைக்கும்போது பட்டையின் இடதுபுறத்தில் காட்டப்படும் துடிக்கும் உச்சரிப்பு புள்ளி.
.tp-wave / .tp-wave--idleஅலைவடிவம்ஐந்து-பட்டை அலைவடிவம். --idle மெதுவான சுவாச அனிமேஷனைச் சேர்க்கும்; அழைப்பின்போது பட்டைகள் ஆடியோவுக்கு ஏற்ப செயல்படும்.
.tp-buttonஅழைப்பின்போதான பொத்தான்கள்அழைப்பின்போதான கட்டுப்பாடுகளுக்கான அடிப்படை ஸ்டைல் (42px, வட்டமான 12px).
.tp-button-groupபொத்தான் வரிசைஅழைப்பின்போது மியூட் மற்றும் முடிப்பு பொத்தான்களைச் சுற்றி அமைக்கும்.
.tp-button--startஇணைப்பு பொத்தான் வகைஅழைப்பு தொடங்கும்போது காட்டப்படும் உச்சரிப்பு நிற வகை.
.tp-button--muteமியூட் மாற்றிஅழைப்பின்போது மைக்கை மியூட்/மியூட் நீக்கும். --tp-surface-ஐப் பயன்படுத்தும்.
.tp-button--endஅழைப்பு முடிப்பு பொத்தான்அழைப்பை முடிக்கும். --tp-end-* வண்ணத் தொகுப்பைப் பயன்படுத்தும்.
.tp-button--loadingஏற்றுதல் மாற்றிஇணைக்கும்போது பொத்தானை மங்கச் செய்யும்.
.tp-icon / .tp-spinஐகான்கள்பொத்தான் ஐகான் அளவிடுதல்; tp-spin இணைக்கும் ஸ்பின்னரை அனிமேட் செய்யும்.
.tp-statusஅழைப்பின்போதான நிலைத் தொகுதிஇணைக்கும்/இணைக்கப்பட்ட/பிழை நிலைகளின்போது நிலை வரியைச் சுற்றி அமைக்கும்.
.tp-status__textநிலை வரிஇணைப்பு நிலை உரை (எ.கா., "இணைக்கப்படுகிறது...") அல்லது அழைப்பு டைமர். நிலைக்கேற்ப .tp-status--connected (உச்சரிப்பு நிறம்) அல்லது .tp-status--error (பிழை நிறம்) பெறும்.
.tp-status__nameஏஜென்ட்-பெயர் இடம்நிலைத் தொகுதியின் ஒரு பகுதி, ஆனால் தற்போதைய பட்டை அமைப்பில் ரெண்டர் செய்யப்படாது -- ஏஜென்ட் பெயர் அதற்கு பதிலாக .tp-name-இல் தோன்றும்.
.tp-status__dotநிலைப் புள்ளிதுடிக்கும் இணைக்கப்பட்ட-நிலை புள்ளி ஸ்டைல் (--tp-connected-ஐப் பயன்படுத்தும்).

எடுத்துக்காட்டுகள்

Props மூலம் தனிப்பயன் முக்கிய நிறம்

விட்ஜெட்டிற்கு பிராண்டிங் வழங்குவதற்கான எளிய வழி:

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

CSS மூலம் தனிப்பயன் நிறங்கள்

முழுமையான நிறக் கட்டுப்பாட்டிற்கு தனிப்பயன் பண்புகளை மேலெழுதவும். முக்கிய நிறம் CSS-இலிருந்து அல்ல, primaryColor prop-இலிருந்து வருகிறது என்பதை நினைவில் கொள்ளவும்:

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

தனிப்பயன் அளவு

பட்டை, பொத்தான் மற்றும் உரை பரிமாணங்களைச் சரிசெய்து விட்ஜெட்டை பெரிதாகவோ சிறியதாகவோ மாற்றவும்:

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

உரை லேபிள்களை மறைக்கவும்

விட்ஜெட்டின் அனைத்து உரைகளும் .tp-meta-இல் உள்ளன. அலைவடிவம் மற்றும் பொத்தான்களை மட்டும் வைத்திருக்க அதை முழுமையாக மறைக்கவும்:

.tp-meta {
  display: none;
}

அல்லது தனிப்பட்ட பகுதிகளை மறைக்கவும்:

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

தீம்-குறிப்பிட்ட மேலெழுதல்கள்

தீம் வகுப்பைப் பயன்படுத்தி குறிப்பிட்ட தீமை இலக்காகக் கொள்ளவும்:

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

className மூலம் வரம்பிடுதல்

React கூறைப் பயன்படுத்தும்போது, உங்கள் மேலெழுதல்களை குறிப்பிட்ட விட்ஜெட் நிகழ்விற்கு வரம்பிட className prop-ஐ வழங்கவும்:

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

பின்னர் உங்கள் CSS-இல் அந்த வகுப்பை இலக்காகக் கொள்ளவும்:

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

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

இதன் மூலம் ஒரே பக்கத்தில் வேறுபட்ட பாணிகளுடன் பல விட்ஜெட் நிகழ்வுகளை வைத்திருக்கலாம். ஒவ்வொரு நிகழ்விற்கும் அதன் primaryColor prop மூலம் தனிப்பட்ட முக்கிய நிறத்தை வழங்கவும் (CSS-ஆல் --tp-accent-ஐ மேலெழுத முடியாது -- அது இன்லைனாக அமைக்கப்படுகிறது).


முழுமையாக தனிப்பயன் UI

CSS மேலெழுதல்கள் போதுமானதாக இல்லையெனில், ஹெட்லெஸ் ஹுக் உங்களுக்கு முழுமையான கட்டுப்பாட்டை வழங்குகிறது. அனைத்து HTML மற்றும் பாணியமைப்பையும் நீங்கள் வழங்குகிறீர்கள்; useThunderPhone குரல் அமர்வைக் கையாளுகிறது. அலைவடிவங்கள் போன்ற ஆடியோவுக்கு எதிர்வினையாற்றும் காட்சிப்படுத்தல்களை உருவாக்குவதற்கு ஹுக் audioLevelRef-ஐயும் வழங்குகிறது.

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