language and hsow case changed
This commit is contained in:
@@ -98,11 +98,10 @@ export function ContactForm() {
|
|||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
<h3 className="text-2xl font-bold text-gray-900 mb-2">
|
<h3 className="text-2xl font-bold text-gray-900 mb-2">
|
||||||
Get In Touch
|
{t.contact.title}
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-gray-600 mb-8">
|
<p className="text-gray-600 mb-8">
|
||||||
Reach out to us for inquiries, support, or partnership
|
{t.contact.desc}
|
||||||
opportunities.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -110,18 +109,18 @@ export function ContactForm() {
|
|||||||
{[
|
{[
|
||||||
{
|
{
|
||||||
icon: Phone,
|
icon: Phone,
|
||||||
title: "Phone",
|
title: "phone_title",
|
||||||
value: "+998 (99) 123-45-67",
|
value: "+998 (99) 869-74-70",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: MessageSquare,
|
icon: MessageSquare,
|
||||||
title: "Telegram",
|
title: "telegram_title",
|
||||||
value: "@firma_support",
|
value: "@firma_support",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: MapPin,
|
icon: MapPin,
|
||||||
title: "Address",
|
title: "addres_title",
|
||||||
value: "Tashkent, Uzbekistan",
|
value: "Tashkent, Сергели 6 а 179 кв",
|
||||||
},
|
},
|
||||||
].map((item, idx) => {
|
].map((item, idx) => {
|
||||||
const Icon = item.icon;
|
const Icon = item.icon;
|
||||||
@@ -134,7 +133,7 @@ export function ContactForm() {
|
|||||||
<Icon className="text-blue-600 shrink-0" size={24} />
|
<Icon className="text-blue-600 shrink-0" size={24} />
|
||||||
<div>
|
<div>
|
||||||
<h4 className="font-semibold text-gray-900">
|
<h4 className="font-semibold text-gray-900">
|
||||||
{item.title}
|
{t.contact[item.title]}
|
||||||
</h4>
|
</h4>
|
||||||
<p className="text-gray-600">{item.value}</p>
|
<p className="text-gray-600">{item.value}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ export function ShowCase({ images }: ShowCaseProps) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="relative min-h-screen pt-20 pb-20">
|
<section className="relative min-h-screen flex items-center py-20">
|
||||||
{/* background image */}
|
{/* background image */}
|
||||||
<div className="absolute -z-50 top-0 left-0 h-full w-full">
|
<div className="absolute -z-50 top-0 left-0 h-full w-full">
|
||||||
<Image
|
<Image
|
||||||
@@ -57,8 +57,8 @@ export function ShowCase({ images }: ShowCaseProps) {
|
|||||||
</div>
|
</div>
|
||||||
<div className="absolute w-full h-full top-0 left-0 bg-black opacity-25 -z-40" />
|
<div className="absolute w-full h-full top-0 left-0 bg-black opacity-25 -z-40" />
|
||||||
|
|
||||||
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 w-full h-full flex flex-col justify-center ">
|
||||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
|
<div className="flex flex-1 max-w-xl w-full">
|
||||||
{/* Left Content */}
|
{/* Left Content */}
|
||||||
<motion.div
|
<motion.div
|
||||||
initial={{ opacity: 0, x: -50 }}
|
initial={{ opacity: 0, x: -50 }}
|
||||||
@@ -84,7 +84,7 @@ export function ShowCase({ images }: ShowCaseProps) {
|
|||||||
</motion.div>
|
</motion.div>
|
||||||
|
|
||||||
{/* Right - Image Carousel */}
|
{/* Right - Image Carousel */}
|
||||||
<motion.div
|
{/* <motion.div
|
||||||
initial={{ opacity: 0, x: 50 }}
|
initial={{ opacity: 0, x: 50 }}
|
||||||
animate={{ opacity: 1, x: 0 }}
|
animate={{ opacity: 1, x: 0 }}
|
||||||
transition={{ duration: 0.6, delay: 0.2 }}
|
transition={{ duration: 0.6, delay: 0.2 }}
|
||||||
@@ -111,8 +111,6 @@ export function ShowCase({ images }: ShowCaseProps) {
|
|||||||
/>
|
/>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</AnimatePresence>
|
</AnimatePresence>
|
||||||
|
|
||||||
{/* Navigation Buttons */}
|
|
||||||
<motion.button
|
<motion.button
|
||||||
whileHover={{ scale: 1.1 }}
|
whileHover={{ scale: 1.1 }}
|
||||||
whileTap={{ scale: 0.95 }}
|
whileTap={{ scale: 0.95 }}
|
||||||
@@ -130,8 +128,6 @@ export function ShowCase({ images }: ShowCaseProps) {
|
|||||||
>
|
>
|
||||||
<ChevronRight className="text-gray-800" />
|
<ChevronRight className="text-gray-800" />
|
||||||
</motion.button>
|
</motion.button>
|
||||||
|
|
||||||
{/* Indicators */}
|
|
||||||
<div className="absolute bottom-4 left-1/2 -translate-x-1/2 z-10 flex gap-2">
|
<div className="absolute bottom-4 left-1/2 -translate-x-1/2 z-10 flex gap-2">
|
||||||
{images.map((_, idx) => (
|
{images.map((_, idx) => (
|
||||||
<motion.button
|
<motion.button
|
||||||
@@ -150,7 +146,7 @@ export function ShowCase({ images }: ShowCaseProps) {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</motion.div>
|
</motion.div> */}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ type Language = "uz" | "ru"
|
|||||||
interface LanguageContextType {
|
interface LanguageContextType {
|
||||||
language: Language
|
language: Language
|
||||||
setLanguage: (lang: Language) => void
|
setLanguage: (lang: Language) => void
|
||||||
t: (typeof translations)[Language]
|
t: (any)[Language]
|
||||||
}
|
}
|
||||||
|
|
||||||
const LanguageContext = createContext<LanguageContextType | undefined>(undefined)
|
const LanguageContext = createContext<LanguageContextType | undefined>(undefined)
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ export const translations = {
|
|||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
question: "Mahsulotlar uchun kafolat bormi?",
|
question: "Mahsulotlar uchun kafolat bormi?",
|
||||||
answer: "Ha, barcha uskunalarimizga 12 oylik texnik kafolat beriladi.",
|
answer:
|
||||||
|
"Ha, barcha uskunalarimizga 12 oylik texnik kafolat beriladi.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
question: "Yetkazib berish muddati qancha?",
|
question: "Yetkazib berish muddati qancha?",
|
||||||
@@ -39,6 +40,7 @@ export const translations = {
|
|||||||
},
|
},
|
||||||
contact: {
|
contact: {
|
||||||
title: "Bog'lanish",
|
title: "Bog'lanish",
|
||||||
|
desc: "Savollar, qo'llab-quvvatlash yoki hamkorlik imkoniyatlari uchun biz bilan bog'laning.",
|
||||||
name: "Ism",
|
name: "Ism",
|
||||||
phone: "Telefon raqami",
|
phone: "Telefon raqami",
|
||||||
message: "Xabar",
|
message: "Xabar",
|
||||||
@@ -49,6 +51,9 @@ export const translations = {
|
|||||||
namePlaceholder: "Sizning ismingiz",
|
namePlaceholder: "Sizning ismingiz",
|
||||||
phonePlaceholder: "+998 XX XXX XX XX",
|
phonePlaceholder: "+998 XX XXX XX XX",
|
||||||
messagePlaceholder: "Sizning xabaringiz (ixtiyoriy)",
|
messagePlaceholder: "Sizning xabaringiz (ixtiyoriy)",
|
||||||
|
phone_title: "Telefon",
|
||||||
|
telegram_title: "Telegram",
|
||||||
|
addres_title: "Manzil",
|
||||||
},
|
},
|
||||||
footer: {
|
footer: {
|
||||||
copyright: "© 2025 Firma. Barcha huquqlar himoyalangan.",
|
copyright: "© 2025 Firma. Barcha huquqlar himoyalangan.",
|
||||||
@@ -64,14 +69,12 @@ export const translations = {
|
|||||||
pump_2: {
|
pump_2: {
|
||||||
name: "Agregat Nasos",
|
name: "Agregat Nasos",
|
||||||
shortDescription: "Kuchli va ishonchli aggregat nasos",
|
shortDescription: "Kuchli va ishonchli aggregat nasos",
|
||||||
description:
|
description: "Katta volumli neft mahsulotlarini tashishda o'rnatilgan.",
|
||||||
"Katta volumli neft mahsulotlarini tashishda o'rnatilgan.",
|
|
||||||
},
|
},
|
||||||
pump_3: {
|
pump_3: {
|
||||||
name: "СЦЛ 20/24",
|
name: "СЦЛ 20/24",
|
||||||
shortDescription: "Professional kalibrli nasos",
|
shortDescription: "Professional kalibrli nasos",
|
||||||
description:
|
description: "Chuqurligi 20-24 metrda ishlaydigan professional nasos.",
|
||||||
"Chuqurligi 20-24 metrda ishlaydigan professional nasos.",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -119,6 +122,7 @@ export const translations = {
|
|||||||
},
|
},
|
||||||
contact: {
|
contact: {
|
||||||
title: "Свяжитесь с нами",
|
title: "Свяжитесь с нами",
|
||||||
|
desc: "Для вопросов, поддержки или возможностей сотрудничества свяжитесь с нами.",
|
||||||
name: "Имя",
|
name: "Имя",
|
||||||
phone: "Номер телефона",
|
phone: "Номер телефона",
|
||||||
message: "Сообщение",
|
message: "Сообщение",
|
||||||
@@ -129,6 +133,9 @@ export const translations = {
|
|||||||
namePlaceholder: "Ваше имя",
|
namePlaceholder: "Ваше имя",
|
||||||
phonePlaceholder: "+998 XX XXX XX XX",
|
phonePlaceholder: "+998 XX XXX XX XX",
|
||||||
messagePlaceholder: "Ваше сообщение (опционально)",
|
messagePlaceholder: "Ваше сообщение (опционально)",
|
||||||
|
phone_title: "Телефон",
|
||||||
|
telegram_title: "Телеграм",
|
||||||
|
addres_title: "Адрес",
|
||||||
},
|
},
|
||||||
footer: {
|
footer: {
|
||||||
copyright: "© 2025 Firma. Все права защищены.",
|
copyright: "© 2025 Firma. Все права защищены.",
|
||||||
@@ -137,8 +144,7 @@ export const translations = {
|
|||||||
products_list: {
|
products_list: {
|
||||||
pump_1: {
|
pump_1: {
|
||||||
name: "Счетчик Насос",
|
name: "Счетчик Насос",
|
||||||
shortDescription:
|
shortDescription: "Для безопасной транспортировки нефтепродуктов",
|
||||||
"Для безопасной транспортировки нефтепродуктов",
|
|
||||||
description:
|
description:
|
||||||
"Высококачественный счетчиковый насос, используется для транспортировки бензина, дизеля и керосина.",
|
"Высококачественный счетчиковый насос, используется для транспортировки бензина, дизеля и керосина.",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
},
|
},
|
||||||
"contact": {
|
"contact": {
|
||||||
"title": "Свяжитесь с нами",
|
"title": "Свяжитесь с нами",
|
||||||
|
"desc": "Для вопросов, поддержки или возможностей сотрудничества свяжитесь с нами.",
|
||||||
"name": "Имя",
|
"name": "Имя",
|
||||||
"phone": "Номер телефона",
|
"phone": "Номер телефона",
|
||||||
"message": "Сообщение",
|
"message": "Сообщение",
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
},
|
},
|
||||||
"contact": {
|
"contact": {
|
||||||
"title": "Bog'lanish",
|
"title": "Bog'lanish",
|
||||||
|
"desc": "Savollar, qo'llab-quvvatlash yoki hamkorlik imkoniyatlari uchun biz bilan bog'laning.",
|
||||||
"name": "Ism",
|
"name": "Ism",
|
||||||
"phone": "Telefon raqami",
|
"phone": "Telefon raqami",
|
||||||
"message": "Xabar",
|
"message": "Xabar",
|
||||||
|
|||||||
BIN
public/logo.jpg
Normal file
BIN
public/logo.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 178 KiB |
Reference in New Issue
Block a user