|
@@ -335,14 +335,14 @@ export function PhoneNumbersContent() {
|
|
|
</div>
|
|
</div>
|
|
|
<Button className="bg-slate-600 text-slate-400 cursor-not-allowed" disabled>
|
|
<Button className="bg-slate-600 text-slate-400 cursor-not-allowed" disabled>
|
|
|
<Link className="w-4 h-4 mr-2" />
|
|
<Link className="w-4 h-4 mr-2" />
|
|
|
- Connect
|
|
|
|
|
|
|
+ {t('phoneNumbers.byoc.connect')}
|
|
|
</Button>
|
|
</Button>
|
|
|
</div>
|
|
</div>
|
|
|
</CardHeader>
|
|
</CardHeader>
|
|
|
<CardContent>
|
|
<CardContent>
|
|
|
<div className="space-y-3">
|
|
<div className="space-y-3">
|
|
|
<div className="space-y-2">
|
|
<div className="space-y-2">
|
|
|
- <h5 className="text-sm font-medium text-white">Features</h5>
|
|
|
|
|
|
|
+ <h5 className="text-sm font-medium text-white">{t('phoneNumbers.byoc.features')}</h5>
|
|
|
<ul className="space-y-1">
|
|
<ul className="space-y-1">
|
|
|
{carrier.features.map((feature, idx) => (
|
|
{carrier.features.map((feature, idx) => (
|
|
|
<li key={idx} className="flex items-center gap-2">
|
|
<li key={idx} className="flex items-center gap-2">
|
|
@@ -353,7 +353,7 @@ export function PhoneNumbersContent() {
|
|
|
</ul>
|
|
</ul>
|
|
|
</div>
|
|
</div>
|
|
|
<div className="space-y-2">
|
|
<div className="space-y-2">
|
|
|
- <h5 className="text-sm font-medium text-white">Required Fields</h5>
|
|
|
|
|
|
|
+ <h5 className="text-sm font-medium text-white">{t('phoneNumbers.byoc.requiredFields')}</h5>
|
|
|
<div className="text-xs text-slate-400">
|
|
<div className="text-xs text-slate-400">
|
|
|
{carrier.setupFields.join(", ")}
|
|
{carrier.setupFields.join(", ")}
|
|
|
</div>
|
|
</div>
|
|
@@ -367,8 +367,8 @@ export function PhoneNumbersContent() {
|
|
|
|
|
|
|
|
<div className="space-y-4 opacity-60">
|
|
<div className="space-y-4 opacity-60">
|
|
|
<div className="flex items-center justify-between">
|
|
<div className="flex items-center justify-between">
|
|
|
- <h3 className="text-xl font-semibold text-white">Available Countries</h3>
|
|
|
|
|
- <Badge variant="outline" className="text-slate-400 border-slate-600">Coming Soon</Badge>
|
|
|
|
|
|
|
+ <h3 className="text-xl font-semibold text-white">{t('phoneNumbers.availableCountries.title')}</h3>
|
|
|
|
|
+ <Badge variant="outline" className="text-slate-400 border-slate-600">{t('phoneNumbers.byoc.comingSoon')}</Badge>
|
|
|
</div>
|
|
</div>
|
|
|
<div className="grid gap-6 md:grid-cols-2">
|
|
<div className="grid gap-6 md:grid-cols-2">
|
|
|
{availableCountries.map((country, index) => (
|
|
{availableCountries.map((country, index) => (
|
|
@@ -379,11 +379,11 @@ export function PhoneNumbersContent() {
|
|
|
<span className="text-2xl">{country.flag}</span>
|
|
<span className="text-2xl">{country.flag}</span>
|
|
|
<div>
|
|
<div>
|
|
|
<CardTitle className="text-white">{country.name}</CardTitle>
|
|
<CardTitle className="text-white">{country.name}</CardTitle>
|
|
|
- <p className="text-slate-400 text-sm">Setup: {country.pricing.setup} • Monthly: {country.pricing.monthly}</p>
|
|
|
|
|
|
|
+ <p className="text-slate-400 text-sm">{t('phoneNumbers.availableCountries.setup')}: {country.pricing.setup} • {t('phoneNumbers.availableCountries.monthly')}: {country.pricing.monthly}</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<Button className="bg-slate-600 text-slate-400 cursor-not-allowed" disabled>
|
|
<Button className="bg-slate-600 text-slate-400 cursor-not-allowed" disabled>
|
|
|
- Get Number
|
|
|
|
|
|
|
+ {t('phoneNumbers.availableCountries.getNumber')}
|
|
|
</Button>
|
|
</Button>
|
|
|
</div>
|
|
</div>
|
|
|
</CardHeader>
|
|
</CardHeader>
|
|
@@ -396,13 +396,13 @@ export function PhoneNumbersContent() {
|
|
|
<CheckCircle className="w-4 h-4 text-green-500" />
|
|
<CheckCircle className="w-4 h-4 text-green-500" />
|
|
|
)}
|
|
)}
|
|
|
<span className="text-sm text-slate-300">
|
|
<span className="text-sm text-slate-300">
|
|
|
- {country.kycRequired ? "KYC verification required" : "No verification needed"}
|
|
|
|
|
|
|
+ {country.kycRequired ? t('phoneNumbers.availableCountries.kycRequired') : t('phoneNumbers.availableCountries.noVerification')}
|
|
|
</span>
|
|
</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div className="flex items-center gap-2">
|
|
<div className="flex items-center gap-2">
|
|
|
<Clock className="w-4 h-4 text-blue-500" />
|
|
<Clock className="w-4 h-4 text-blue-500" />
|
|
|
<span className="text-sm text-slate-300">
|
|
<span className="text-sm text-slate-300">
|
|
|
- Activation: {country.availability}
|
|
|
|
|
|
|
+ {t('phoneNumbers.availableCountries.activation')}: {country.availability}
|
|
|
</span>
|
|
</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -416,7 +416,7 @@ export function PhoneNumbersContent() {
|
|
|
<CardHeader>
|
|
<CardHeader>
|
|
|
<div className="flex items-center gap-3">
|
|
<div className="flex items-center gap-3">
|
|
|
<PhoneCall className="w-6 h-6 text-cyan-500" />
|
|
<PhoneCall className="w-6 h-6 text-cyan-500" />
|
|
|
- <CardTitle className="text-white">Phone Number Setup Guide</CardTitle>
|
|
|
|
|
|
|
+ <CardTitle className="text-white">{t('phoneNumbers.setupGuide.title')}</CardTitle>
|
|
|
</div>
|
|
</div>
|
|
|
</CardHeader>
|
|
</CardHeader>
|
|
|
<CardContent className="space-y-4">
|
|
<CardContent className="space-y-4">
|
|
@@ -424,29 +424,29 @@ export function PhoneNumbersContent() {
|
|
|
<div className="flex gap-4">
|
|
<div className="flex gap-4">
|
|
|
<div className="flex-shrink-0 w-8 h-8 bg-cyan-500 text-white rounded-full flex items-center justify-center font-semibold">1</div>
|
|
<div className="flex-shrink-0 w-8 h-8 bg-cyan-500 text-white rounded-full flex items-center justify-center font-semibold">1</div>
|
|
|
<div>
|
|
<div>
|
|
|
- <h4 className="text-white font-medium">Choose your setup method</h4>
|
|
|
|
|
- <p className="text-slate-400">Use our managed numbers or bring your own carrier (Twilio, Telnyx, etc.)</p>
|
|
|
|
|
|
|
+ <h4 className="text-white font-medium">{t('phoneNumbers.setupGuide.step1.title')}</h4>
|
|
|
|
|
+ <p className="text-slate-400">{t('phoneNumbers.setupGuide.step1.description')}</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div className="flex gap-4">
|
|
<div className="flex gap-4">
|
|
|
<div className="flex-shrink-0 w-8 h-8 bg-cyan-500 text-white rounded-full flex items-center justify-center font-semibold">2</div>
|
|
<div className="flex-shrink-0 w-8 h-8 bg-cyan-500 text-white rounded-full flex items-center justify-center font-semibold">2</div>
|
|
|
<div>
|
|
<div>
|
|
|
- <h4 className="text-white font-medium">Complete verification (if required)</h4>
|
|
|
|
|
- <p className="text-slate-400">Some countries require KYC verification. Upload required documents for approval.</p>
|
|
|
|
|
|
|
+ <h4 className="text-white font-medium">{t('phoneNumbers.setupGuide.step2.title')}</h4>
|
|
|
|
|
+ <p className="text-slate-400">{t('phoneNumbers.setupGuide.step2.description')}</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div className="flex gap-4">
|
|
<div className="flex gap-4">
|
|
|
<div className="flex-shrink-0 w-8 h-8 bg-cyan-500 text-white rounded-full flex items-center justify-center font-semibold">3</div>
|
|
<div className="flex-shrink-0 w-8 h-8 bg-cyan-500 text-white rounded-full flex items-center justify-center font-semibold">3</div>
|
|
|
<div>
|
|
<div>
|
|
|
- <h4 className="text-white font-medium">Assign to webshop</h4>
|
|
|
|
|
- <p className="text-slate-400">Connect the phone number to your webshop. Each webshop needs its own dedicated number.</p>
|
|
|
|
|
|
|
+ <h4 className="text-white font-medium">{t('phoneNumbers.setupGuide.step3.title')}</h4>
|
|
|
|
|
+ <p className="text-slate-400">{t('phoneNumbers.setupGuide.step3.description')}</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div className="flex gap-4">
|
|
<div className="flex gap-4">
|
|
|
<div className="flex-shrink-0 w-8 h-8 bg-cyan-500 text-white rounded-full flex items-center justify-center font-semibold">4</div>
|
|
<div className="flex-shrink-0 w-8 h-8 bg-cyan-500 text-white rounded-full flex items-center justify-center font-semibold">4</div>
|
|
|
<div>
|
|
<div>
|
|
|
- <h4 className="text-white font-medium">Start receiving calls</h4>
|
|
|
|
|
- <p className="text-slate-400">Your AI assistant will automatically handle customer calls on the assigned number.</p>
|
|
|
|
|
|
|
+ <h4 className="text-white font-medium">{t('phoneNumbers.setupGuide.step4.title')}</h4>
|
|
|
|
|
+ <p className="text-slate-400">{t('phoneNumbers.setupGuide.step4.description')}</p>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -454,12 +454,12 @@ export function PhoneNumbersContent() {
|
|
|
<div className="flex items-start gap-3">
|
|
<div className="flex items-start gap-3">
|
|
|
<Shield className="w-5 h-5 text-blue-500 mt-0.5" />
|
|
<Shield className="w-5 h-5 text-blue-500 mt-0.5" />
|
|
|
<div>
|
|
<div>
|
|
|
- <h5 className="text-blue-500 font-medium">Carrier Integration Benefits</h5>
|
|
|
|
|
|
|
+ <h5 className="text-blue-500 font-medium">{t('phoneNumbers.setupGuide.carrierBenefits.title')}</h5>
|
|
|
<ul className="text-slate-300 text-sm mt-2 space-y-1">
|
|
<ul className="text-slate-300 text-sm mt-2 space-y-1">
|
|
|
- <li>• Use your existing phone numbers and carrier relationship</li>
|
|
|
|
|
- <li>• Keep your current pricing and billing setup</li>
|
|
|
|
|
- <li>• Leverage carrier-specific features and coverage</li>
|
|
|
|
|
- <li>• Maintain compliance with your carrier's terms</li>
|
|
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.carrierBenefits.benefit1')}</li>
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.carrierBenefits.benefit2')}</li>
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.carrierBenefits.benefit3')}</li>
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.carrierBenefits.benefit4')}</li>
|
|
|
</ul>
|
|
</ul>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -468,13 +468,13 @@ export function PhoneNumbersContent() {
|
|
|
<div className="flex items-start gap-3">
|
|
<div className="flex items-start gap-3">
|
|
|
<AlertTriangle className="w-5 h-5 text-yellow-500 mt-0.5" />
|
|
<AlertTriangle className="w-5 h-5 text-yellow-500 mt-0.5" />
|
|
|
<div>
|
|
<div>
|
|
|
- <h5 className="text-yellow-500 font-medium">Important Notes</h5>
|
|
|
|
|
|
|
+ <h5 className="text-yellow-500 font-medium">{t('phoneNumbers.setupGuide.importantNotes.title')}</h5>
|
|
|
<ul className="text-slate-300 text-sm mt-2 space-y-1">
|
|
<ul className="text-slate-300 text-sm mt-2 space-y-1">
|
|
|
- <li>• Each webshop requires a separate phone number</li>
|
|
|
|
|
- <li>• Free numbers are auto-assigned during onboarding</li>
|
|
|
|
|
- <li>• Premium numbers offer better call quality and additional features</li>
|
|
|
|
|
- <li>• KYC verification may take 1-3 business days</li>
|
|
|
|
|
- <li>• Carrier integrations require valid API credentials</li>
|
|
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.importantNotes.note1')}</li>
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.importantNotes.note2')}</li>
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.importantNotes.note3')}</li>
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.importantNotes.note4')}</li>
|
|
|
|
|
+ <li>• {t('phoneNumbers.setupGuide.importantNotes.note5')}</li>
|
|
|
</ul>
|
|
</ul>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|