اسٹائلنگ
ویجیٹ بلٹ اِن ہلکے اور گہرے تھیمز کے ساتھ شیشہ نما بار کے طور پر رینڈر ہوتا ہے۔ تخصیص تین سطحوں پر دستیاب ہے: عام اختیارات کے لیے 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 حسب ضرورت خصوصیات
ویجیٹ CSS حسب ضرورت خصوصیات (ویری ایبلز) فراہم کرتا ہے جنہیں آپ انفرادی کلاسز کو تبدیل کیے بغیر رنگ تبدیل کرنے کے لیے اووررائیڈ کر سکتے ہیں۔ یہ .tp-widget روٹ پر لاگو تھیم کلاس (.tp--light یا .tp--dark) کے ذریعے متعین ہوتی ہیں:
| خصوصیت | ڈیفالٹ (لائٹ) | ڈیفالٹ (ڈارک) | وضاحت |
|---|---|---|---|
--tp-accent | #000 | #fff | نمایاں رنگ: اسٹارٹ بٹن، ویوفارم بارز، کنیکٹ ہونے کا ڈاٹ، کنیکٹڈ اسٹیٹس کا متن۔ primaryColor prop سے ان لائن سیٹ کیا جاتا ہے۔ |
--tp-bg | rgba(255, 255, 255, 0.82) | rgba(15, 15, 15, 0.85) | بار کا پس منظر (نیم شفاف؛ --tp-glass سے بلر کیا جاتا ہے)۔ |
--tp-surface | rgba(0, 0, 0, 0.04) | rgba(255, 255, 255, 0.07) | میوٹ بٹن کا پس منظر۔ |
--tp-surface-hover | rgba(0, 0, 0, 0.07) | rgba(255, 255, 255, 0.12) | میوٹ بٹن کا ہوور پس منظر۔ |
--tp-border | rgba(0, 0, 0, 0.08) | rgba(255, 255, 255, 0.1) | بار اور بٹن کی بارڈرز۔ |
--tp-border-hover | rgba(0, 0, 0, 0.14) | rgba(255, 255, 255, 0.18) | ہوور پر بارڈر کا رنگ۔ |
--tp-text | rgba(0, 0, 0, 0.88) | rgba(255, 255, 255, 0.95) | بنیادی متن (عنوان، ایجنٹ کا نام)۔ |
--tp-text-2 | rgba(0, 0, 0, 0.5) | rgba(255, 255, 255, 0.55) | ثانوی متن (ذیلی عنوان، اسٹیٹس لائن، کال ٹائمر)۔ |
--tp-glass | blur(32px) saturate(180%) | blur(32px) saturate(180%) | backdrop-filter جو بار پر گلاس کا اثر پیدا کرتا ہے۔ |
--tp-shadow | تین تہوں والا شیڈو اسٹیک | تین تہوں والا شیڈو اسٹیک | بار کا box-shadow (رنگ + قریب + دور کی تہیں)۔ |
--tp-shadow-hover | تین تہوں والا شیڈو اسٹیک | تین تہوں والا شیڈو اسٹیک | ہوور ایلیویشن کے لیے متعین؛ فی الحال کسی اصول کے ذریعے لاگو نہیں ہوتا۔ |
--tp-glow | inset 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-bg | rgba(239, 68, 68, 0.08) | rgba(251, 113, 133, 0.12) | کال ختم کرنے کے بٹن کا پس منظر۔ |
--tp-end-color | #ef4444 | #fb7185 | کال ختم کرنے کے بٹن کے آئیکن کا رنگ۔ |
--tp-end-border | rgba(239, 68, 68, 0.12) | rgba(251, 113, 133, 0.15) | کال ختم کرنے کے بٹن کی بارڈر۔ |
--tp-end-hover | rgba(239, 68, 68, 0.14) | rgba(251, 113, 133, 0.2) | کال ختم کرنے کے بٹن کا ہوور پس منظر۔ |
--tp-idle-opacity | 0.4 | 0.3 | غیر فعال حالت میں مدھم کرنے کے لیے متعین؛ فی الحال کسی اصول کے ذریعے لاگو نہیں ہوتا۔ |
حسب ضرورت خصوصیات کو اووررائیڈ کرنا
نمایاں رنگ کو primaryColor prop کے ذریعے سیٹ کریں:
<ThunderPhoneWidget
publishableKey="pk_live_your_publishable_key"
primaryColor="#e11d48"
/>
دیگر حسب ضرورت خصوصیات کو CSS کے ذریعے اووررائیڈ کریں۔ دو کلاسز والا سلیکٹر (.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 کے ذریعے حسب ضرورت رنگ
مکمل رنگ کنٹرول کے لیے حسب ضرورت خصوصیات کو اووررائیڈ کریں۔ یاد رکھیں کہ ایکسنٹ primaryColor prop سے آتا ہے، 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);
}
حسب ضرورت سائز
بار، بٹن اور متن کے ابعاد ایڈجسٹ کر کے ویجیٹ کو بڑا یا چھوٹا بنائیں:
/* 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 اووررائیڈز کافی نہ ہوں تو ہیڈ لیس hook آپ کو مکمل کنٹرول دیتا ہے۔ آپ تمام HTML اور اسٹائلنگ فراہم کرتے ہیں جبکہ useThunderPhone وائس سیشن کو سنبھالتا ہے۔ یہ hook ویوفارمز جیسی آڈیو-ری ایکٹو ویژولائزیشنز بنانے کے لیے 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>
)
}