Initial commit

This commit is contained in:
r2xrzh9q2z-lab
2026-02-02 11:00:08 +07:00
commit d53d4417b2
116 changed files with 79533 additions and 0 deletions

188
app/pricing/page.tsx Normal file
View File

@@ -0,0 +1,188 @@
import pricingData from "./pricing.json";
export default function PricingPage() {
return (
<div className="container mx-auto px-4 py-8">
<div className="max-w-6xl mx-auto">
{/* Header */}
<div className="text-center mb-12">
<h1 className="text-4xl font-bold text-gray-900 mb-4">
{pricingData.title}
</h1>
<p className="text-xl text-gray-600 mb-4">{pricingData.subtitle}</p>
<p className="text-sm text-gray-500 bg-yellow-50 p-3 rounded-lg inline-block">
💡 {pricingData.note}
</p>
</div>
{/* Pricing Packages */}
<div className="grid md:grid-cols-3 gap-8 mb-16">
{pricingData.packages.map((pkg) => (
<div
key={pkg.id}
className={`relative bg-white rounded-lg shadow-lg p-6 ${
pkg.popular ? "ring-2 ring-blue-500 transform scale-105" : ""
}`}
>
{/* Popular Badge */}
{pkg.popular && (
<div className="absolute -top-3 left-1/2 transform -translate-x-1/2">
<span className="bg-blue-500 text-white px-4 py-1 rounded-full text-sm font-medium">
Phổ biến nhất
</span>
</div>
)}
{/* Package Header */}
<div className="text-center mb-6">
<h3 className="text-2xl font-bold text-gray-900 mb-2">
{pkg.name}
</h3>
<p className="text-gray-600 mb-4">{pkg.description}</p>
<div className="text-3xl font-bold text-blue-600">
{parseInt(pkg.price).toLocaleString()} {pkg.currency}
</div>
</div>
{/* Features */}
<div className="mb-6">
<h4 className="font-semibold text-gray-900 mb-3">Bao gồm:</h4>
<ul className="space-y-2">
{pkg.features.map((feature, index) => (
<li key={index} className="flex items-center text-gray-700">
<span className="text-green-500 mr-2"></span>
{feature}
</li>
))}
</ul>
</div>
{/* Limitations */}
{pkg.limitations.length > 0 && (
<div className="mb-6">
<h4 className="font-semibold text-gray-900 mb-3">Lưu ý:</h4>
<ul className="space-y-2">
{pkg.limitations.map((limitation, index) => (
<li
key={index}
className="flex items-center text-gray-600 text-sm"
>
<span className="text-orange-500 mr-2"></span>
{limitation}
</li>
))}
</ul>
</div>
)}
{/* CTA Button */}
<button
className={`w-full py-3 px-6 rounded-lg font-medium transition-colors ${
pkg.popular
? "bg-blue-600 text-white hover:bg-blue-700"
: "bg-gray-100 text-gray-900 hover:bg-gray-200"
}`}
>
Chọn gói này
</button>
</div>
))}
</div>
{/* Additional Services */}
<div className="mb-16">
<h2 className="text-2xl font-bold text-gray-900 mb-8 text-center">
Dịch Vụ Bổ Sung
</h2>
<div className="grid md:grid-cols-2 lg:grid-cols-4 gap-6">
{pricingData.additionalServices.map((service, index) => (
<div
key={index}
className="bg-white rounded-lg shadow-md p-6 text-center"
>
<h3 className="font-semibold text-gray-900 mb-2">
{service.name}
</h3>
<div className="text-2xl font-bold text-blue-600 mb-2">
{parseInt(service.price).toLocaleString()} VNĐ
</div>
<div className="text-sm text-gray-500 mb-3">
/{service.unit}
</div>
<p className="text-gray-700 text-sm">{service.description}</p>
</div>
))}
</div>
</div>
{/* Country Pricing */}
<div>
<h2 className="text-2xl font-bold text-gray-900 mb-8 text-center">
Phí Visa Theo Quốc Gia
</h2>
<div className="bg-white rounded-lg shadow-lg overflow-hidden">
<div className="overflow-x-auto">
<table className="w-full">
<thead className="bg-gray-50">
<tr>
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Quốc gia
</th>
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Phí visa
</th>
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Thời gian xử
</th>
<th className="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Tỷ lệ thành công
</th>
</tr>
</thead>
<tbody className="bg-white divide-y divide-gray-200">
{pricingData.countries.map((country, index) => (
<tr key={index} className="hover:bg-gray-50">
<td className="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">
{country.name}
</td>
<td className="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
{parseInt(country.visaFee).toLocaleString()} VNĐ
</td>
<td className="px-6 py-4 whitespace-nowrap text-sm text-gray-900">
{country.processingTime}
</td>
<td className="px-6 py-4 whitespace-nowrap">
<span className="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">
{country.successRate}
</span>
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</div>
{/* Contact CTA */}
<div className="text-center mt-12 bg-blue-50 rounded-lg p-8">
<h2 className="text-2xl font-bold text-gray-900 mb-4">
Cần Vấn Chi Tiết?
</h2>
<p className="text-gray-700 mb-6">
Liên hệ với chúng tôi đ đưc vấn miễn phí nhận báo giá phù
hợp nhất
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
<button className="bg-blue-600 text-white px-8 py-3 rounded-lg hover:bg-blue-700 transition-colors">
vấn miễn phí
</button>
<button className="bg-white text-blue-600 border border-blue-600 px-8 py-3 rounded-lg hover:bg-blue-50 transition-colors">
Gọi ngay: 1900 1234
</button>
</div>
</div>
</div>
</div>
);
}

128
app/pricing/pricing.json Normal file
View File

@@ -0,0 +1,128 @@
{
"title": "Bảng Giá Dịch Vụ",
"subtitle": "Giá cả minh bạch, không phí ẩn",
"note": "Giá có thể thay đổi tùy theo từng trường hợp cụ thể. Liên hệ để được tư vấn chi tiết.",
"packages": [
{
"id": "basic",
"name": "Gói Cơ Bản",
"description": "Phù hợp cho khách hàng lần đầu xin visa",
"price": "1,500,000",
"currency": "VNĐ",
"popular": false,
"features": [
"Tư vấn miễn phí",
"Kiểm tra hồ sơ cơ bản",
"Hướng dẫn điền form",
"Hỗ trợ qua email",
"Bảo hành 30 ngày"
],
"limitations": [
"Không bao gồm phí lãnh sự",
"Không dịch thuật",
"Hỗ trợ trong giờ hành chính"
]
},
{
"id": "premium",
"name": "Gói Cao Cấp",
"description": "Dịch vụ toàn diện với nhiều ưu đãi",
"price": "3,500,000",
"currency": "VNĐ",
"popular": true,
"features": [
"Tất cả tính năng gói Cơ Bản",
"Dịch thuật chuyên nghiệp",
"Kiểm tra hồ sơ chi tiết",
"Hỗ trợ 24/7",
"Bảo hành 90 ngày",
"Tư vấn trực tiếp",
"Hỗ trợ booking phỏng vấn"
],
"limitations": ["Không bao gồm phí lãnh sự"]
},
{
"id": "vip",
"name": "Gói VIP",
"description": "Dịch vụ cao cấp nhất với cam kết thành công",
"price": "6,500,000",
"currency": "VNĐ",
"popular": false,
"features": [
"Tất cả tính năng gói Cao Cấp",
"Cam kết thành công 99%",
"Hoàn tiền nếu bị từ chối",
"Tư vấn 1-1 với chuyên gia",
"Ưu tiên xử lý hồ sơ",
"Bảo hành 1 năm",
"Hỗ trợ sau khi có visa",
"Tặng bảo hiểm du lịch"
],
"limitations": []
}
],
"additionalServices": [
{
"name": "Dịch thuật công chứng",
"price": "200,000",
"unit": "trang",
"description": "Dịch thuật và công chứng các loại giấy tờ"
},
{
"name": "Chụp ảnh visa",
"price": "100,000",
"unit": "bộ",
"description": "Chụp ảnh theo tiêu chuẩn từng quốc gia"
},
{
"name": "Đặt lịch phỏng vấn",
"price": "500,000",
"unit": "lần",
"description": "Hỗ trợ đặt lịch phỏng vấn tại lãnh sự quán"
},
{
"name": "Tư vấn phỏng vấn",
"price": "800,000",
"unit": "buổi",
"description": "Luyện tập và tư vấn kỹ năng phỏng vấn"
}
],
"countries": [
{
"name": "Mỹ",
"visaFee": "4,600,000",
"processingTime": "3-5 tuần",
"successRate": "95%"
},
{
"name": "Schengen",
"visaFee": "2,200,000",
"processingTime": "2-3 tuần",
"successRate": "98%"
},
{
"name": "Anh",
"visaFee": "3,800,000",
"processingTime": "3-4 tuần",
"successRate": "96%"
},
{
"name": "Canada",
"visaFee": "2,800,000",
"processingTime": "4-6 tuần",
"successRate": "94%"
},
{
"name": "Úc",
"visaFee": "4,200,000",
"processingTime": "2-4 tuần",
"successRate": "97%"
},
{
"name": "Nhật Bản",
"visaFee": "1,200,000",
"processingTime": "1-2 tuần",
"successRate": "99%"
}
]
}