add maps to contact page catalog_page added , email addres updated , remove page drop down

This commit is contained in:
nabijonovdavronbek619@gmail.com
2026-02-06 23:03:46 +05:00
parent 873bbb82a9
commit 66bf104cb7
13 changed files with 134 additions and 123 deletions

View File

@@ -0,0 +1,13 @@
import Catalog from "@/components/pages/home/blog/catalog";
import { ProductBanner } from "@/components/pages/products";
export default function Page() {
return (
<div className="bg-[#1e1d1c] pb-30">
<ProductBanner />
<div className="max-w-300 mx-auto w-full pt-20">
<Catalog />
</div>
</div>
);
}

View File

@@ -182,12 +182,14 @@ export function Footer() {
href="mailto:support@fireforce.com" href="mailto:support@fireforce.com"
className="hover:text-[#fa1d1d]" className="hover:text-[#fa1d1d]"
> >
support@fireforce.com info@ignum-tech.com
</a> </a>
</li> </li>
<li className="flex items-start gap-3"> <li className="flex items-start gap-3">
<MapPin className="mt-1 h-5 w-5 shrink-0 text-white" /> <MapPin className="mt-1 h-5 w-5 shrink-0 text-white" />
<span>Jl. Dr. Ir Soekarno No. 99x Tabanan - Bali</span> <span>
{t("footer.address")}
</span>
</li> </li>
</ul> </ul>
</div> </div>

View File

@@ -42,7 +42,7 @@ export function Navbar() {
<Link href={`/${locale}/home`} className="hover:cursor-pointer"> <Link href={`/${locale}/home`} className="hover:cursor-pointer">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<div className=" flex items-center justify-center"> <div className=" flex items-center justify-center">
<NavbarLogo/> <Image src={'/images/IGNUM/PNG/1.@6x.png'} alt="logo image" width={80} height={80} />
</div> </div>
</div> </div>
</Link> </Link>
@@ -62,53 +62,21 @@ export function Navbar() {
{t("navbar.about")} {t("navbar.about")}
</Link> </Link>
{/* Pages Dropdown */}
<div className="relative group h-full">
<button
className="font-unbounded uppercase text-white text-sm h-full font-semibold hover:text-red-500
transition-colors flex items-center gap-1"
>
{t("navbar.pages")}
<ChevronDown
size={16}
className="transition-transform group-hover:rotate-180"
/>
</button>
{/* Dropdown Menu */}
<div
className="absolute top-full left-0 w-40 bg-white rounded-b-md shadow-lg
font-semibold opacity-0 invisible group-hover:opacity-100
group-hover:visible transition-all duration-300
transform translate-y-2 group-hover:translate-y-0
pointer-events-none group-hover:pointer-events-auto overflow-hidden"
>
<Link <Link
href={`/${locale}/faq`} href={`/${locale}/faq`}
className="font-unbounded uppercase block px-4 py-2 text-black text-sm hover:bg-red-600 className="font-unbounded uppercase text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
hover:text-white transition-colors"
> >
{t("navbar.faq")} {t("navbar.faq")}
</Link> </Link>
<Link <Link
href={`/${locale}/services`} href={`/${locale}/services`}
className="font-unbounded uppercase block px-4 py-2 text-black text-sm hover:bg-red-600 className="font-unbounded uppercase text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
hover:text-white transition-colors"
> >
{t("navbar.services")} {t("navbar.services")}
</Link> </Link>
{/* <Link
href={`/${locale}/blog`}
className="font-unbounded uppercase block px-4 py-2 text-black text-sm hover:bg-red-600
hover:text-white transition-colors rounded-b-md"
>
Blog
</Link> */}
</div>
</div>
<Link <Link
href={`/${locale}/products`} href={`/${locale}/catalog_page`}
className="font-unbounded uppercase text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition" className="font-unbounded uppercase text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
> >
{t("navbar.products")} {t("navbar.products")}
@@ -210,39 +178,23 @@ export function Navbar() {
</Link> </Link>
{/* Mobile Pages Dropdown */} {/* Mobile Pages Dropdown */}
<div>
<button
onClick={() => setIsDropdownOpen(!isDropdownOpen)}
className="font-unbounded uppercase text-white text-base font-semibold hover:text-red-500 transition flex items-center gap-1 py-2 w-full"
>
{t("navbar.pages")}
<ChevronDown
size={16}
className={`transition-transform ${isDropdownOpen ? "rotate-180" : ""}`}
/>
</button>
{isDropdownOpen && (
<div className="ml-4 mt-2 flex flex-col gap-2">
<Link <Link
href={`/${locale}/faq`} href={`/${locale}/faq`}
className="font-unbounded uppercase text-white/80 text-sm hover:text-red-500 transition py-2" className="font-unbounded uppercase text-white text-base font-semibold hover:text-red-500 transition py-2"
onClick={() => setIsMobileMenuOpen(false)} onClick={() => setIsMobileMenuOpen(false)}
> >
{t("navbar.faq")} {t("navbar.faq")}
</Link> </Link>
<Link <Link
href={`/${locale}/services`} href={`/${locale}/services`}
className="font-unbounded uppercase text-white/80 text-sm hover:text-red-500 transition py-2" className="font-unbounded uppercase text-white text-base font-semibold hover:text-red-500 transition py-2"
onClick={() => setIsMobileMenuOpen(false)} onClick={() => setIsMobileMenuOpen(false)}
> >
{t("navbar.services")} {t("navbar.services")}
</Link> </Link>
</div>
)}
</div>
<Link <Link
href={`/${locale}/products`} href={`/${locale}/catalog_page`}
className="font-unbounded uppercase text-white text-base font-semibold hover:text-red-500 transition py-2" className="font-unbounded uppercase text-white text-base font-semibold hover:text-red-500 transition py-2"
onClick={() => setIsMobileMenuOpen(false)} onClick={() => setIsMobileMenuOpen(false)}
> >

View File

@@ -6,12 +6,7 @@ export default function ContactHeader() {
const t = useTranslations(); const t = useTranslations();
return ( return (
<div className="mb-8 text-center"> <div className="mb-8 text-center">
<div className="mb-4 flex items-center justify-center gap-2">
<DotAnimatsiya />
<span className="font-almarai text-sm font-semibold tracking-wider text-white">
{t("contact.banner.title")}
</span>
</div>
<h2 <h2
className="uppercase font-unbounded bg-linear-to-br from-white via-white to-black className="uppercase font-unbounded bg-linear-to-br from-white via-white to-black
text-transparent bg-clip-text text-4xl font-bold tracking-wide md:text-5xl" text-transparent bg-clip-text text-4xl font-bold tracking-wide md:text-5xl"

View File

@@ -3,6 +3,8 @@ import { Mail, MapPin, Phone } from "lucide-react";
import ContactHeader from "./contactHeader"; import ContactHeader from "./contactHeader";
import Form from "./form"; import Form from "./form";
import { useTranslations } from "next-intl"; import { useTranslations } from "next-intl";
import Maps from "./maps";
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
export function Contact() { export function Contact() {
const t = useTranslations(); const t = useTranslations();
@@ -46,7 +48,17 @@ export function Contact() {
</div> </div>
{/* Content */} {/* Content */}
<div className="relative z-10 mx-auto max-w-4xl px-4 sm:px-6 lg:px-8"> <div className="relative z-10 ">
<div className="flex items-center justify-center w-full">
<div className="mb-4 flex items-center justify-center gap-2">
<DotAnimatsiya />
<span className="font-almarai text-sm font-semibold tracking-wider text-white">
{t("contact.banner.title")}
</span>
</div>
</div>
<Maps />
<div className="relative z-10 mx-auto max-w-4xl px-4 sm:px-6 lg:px-8 space-y-5">
<ContactHeader /> <ContactHeader />
<Form /> <Form />
@@ -64,11 +76,14 @@ export function Contact() {
<h3 className="font-almarai text-sm font-bold tracking-wider text-white"> <h3 className="font-almarai text-sm font-bold tracking-wider text-white">
{info.title} {info.title}
</h3> </h3>
<p className="font-almarai mt-1 text-sm text-gray-400">{info.detail}</p> <p className="font-almarai mt-1 text-sm text-gray-400">
{info.detail}
</p>
</div> </div>
))} ))}
</div> </div>
</div> </div>
</div>
</section> </section>
); );
} }

View File

@@ -0,0 +1,31 @@
export default function Maps() {
return (
<section className="w-full px-4 py-10">
<div className="mx-auto max-w-7xl grid grid-cols-1 md:grid-cols-2 gap-10">
{/* Yandex Map */}
<div className="h-[300px] sm:h-[400px] md:h-[500px] rounded-2xl overflow-hidden shadow-lg border hover:shadow-xl transition">
<iframe
src="https://yandex.uz/map-widget/v1/?ll=69.288118%2C41.323186&mode=search&oid=56350803620&ol=biz&z=16.97"
className="w-full h-full"
frameBorder="0"
allowFullScreen
loading="lazy"
/>
</div>
{/* Google Map */}
<div className="h-[300px] sm:h-[400px] md:h-[500px] rounded-2xl overflow-hidden shadow-lg border hover:shadow-xl transition">
<iframe
src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d2996.342450769356!2d69.28561627695484!3d41.323166199974985!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x38aef56f76215ce7%3A0xfd64c6a930fb1bbb!2sIGNUM!5e0!3m2!1sru!2s!4v1770203090924"
className="w-full h-full"
allowFullScreen
loading="lazy"
referrerPolicy="no-referrer-when-downgrade"
/>
</div>
</div>
</section>
);
}

View File

@@ -59,10 +59,10 @@ export function Banner() {
{/* Left side - Firefighters Image */} {/* Left side - Firefighters Image */}
<div className="flex items-end justify-center "> <div className="flex items-end justify-center ">
<img <img
src="/images/homeBanner.png" src="/images/homeBanner3.png"
alt="Firefighters" alt="Firefighters"
loading="lazy" loading="lazy"
className="lg:w-150 w-100 lg:h-150 max-[300px]:w-[80vw] object-cover object-right rounded-xl drop-shadow-2xl" className="lg:w-150 w-100 lg:h-150 max-[300px]:w-[80vw] object-contain object-right rounded-xl drop-shadow-2xl"
/> />
</div> </div>

View File

@@ -3,7 +3,7 @@
"banner": { "banner": {
"title1": "Welcome to Ignum", "title1": "Welcome to Ignum",
"title2": "FIRE PROTECTION GUARDIAN", "title2": "FIRE PROTECTION GUARDIAN",
"description": "We are seen as a beacon of hope, a figure that brings calm amidst chaos and light in the darkest of moments.", "description": "We provide professional services for the installation of fire safety systems and the sale of certified protective equipment.",
"cta": "Get Started" "cta": "Get Started"
}, },
"statistics": { "statistics": {
@@ -139,9 +139,9 @@
"privacy": "You agree to our friendly privacy policy", "privacy": "You agree to our friendly privacy policy",
"send": "SEND MESSAGE", "send": "SEND MESSAGE",
"email": "EMAIL", "email": "EMAIL",
"emailAddress": "support@ignum.com", "emailAddress": "info@ignum-tech.com",
"location": "Our Location", "location": "Our Location",
"address": "Jl. Dr. Ir. Soekarno No. 99x Tabanan Bali", "address": "Toshkent shahri , Yunusabod tumani , Niyozbek yo'li 3 tor ko'chasi , 39 uy",
"phone": "Phone" "phone": "Phone"
} }
}, },
@@ -208,7 +208,7 @@
"emergency": "Emergency Call!" "emergency": "Emergency Call!"
}, },
"footer": { "footer": {
"description": "We are seen as a beacon of hope, a figure that brings calm amidst chaos and light in the darkest of moments.", "description": "We provide professional services for the installation of fire safety systems and the sale of certified protective equipment.",
"quickLinks": { "quickLinks": {
"title": "QUICK LINKS", "title": "QUICK LINKS",
"home": "Home", "home": "Home",
@@ -221,7 +221,8 @@
"title": "SUPPORT", "title": "SUPPORT",
"contact": "Contact", "contact": "Contact",
"help": "Help" "help": "Help"
} },
"address":"Tashkent city, Yunusabad district, 3rd dead-end of Niyozbek Yoli street, house 39"
}, },
"rasmlar": "Images", "rasmlar": "Images",
"fotogalereya": "Photo Gallery", "fotogalereya": "Photo Gallery",

View File

@@ -3,7 +3,7 @@
"banner": { "banner": {
"title1": "Добро пожаловать в Ignum", "title1": "Добро пожаловать в Ignum",
"title2": "Защита от Пожара", "title2": "Защита от Пожара",
"description": "Мы воспринимаемся как луч надежды, фигура, которая приносит спокойствие среди хаоса и свет в самые темные моменты.", "description": "Мы предоставляем профессиональные услуги по установке систем пожарной безопасности и продаже сертифицированных средств защиты.",
"cta": "Начать" "cta": "Начать"
}, },
"statistics": { "statistics": {
@@ -139,9 +139,9 @@
"privacy": "Вы соглашаетесь с нашей дружественной политикой конфиденциальности", "privacy": "Вы соглашаетесь с нашей дружественной политикой конфиденциальности",
"send": "ОТПРАВИТЬ СООБЩЕНИЕ", "send": "ОТПРАВИТЬ СООБЩЕНИЕ",
"email": "ЭЛЕКТРОННАЯ ПОЧТА", "email": "ЭЛЕКТРОННАЯ ПОЧТА",
"emailAddress": "support@ignum.com", "emailAddress": "info@ignum-tech.com",
"location": "Наше Местоположение", "location": "Наше Местоположение",
"address": "Jl. Dr. Ir. Soekarno No. 99x Tabanan Bali", "address": "Toshkent shahri , Yunusabod tumani , Niyozbek yo'li 3 tor ko'chasi , 39 uy",
"phone": "Телефон" "phone": "Телефон"
} }
}, },
@@ -208,7 +208,7 @@
"emergency": "Экстренный Вызов!" "emergency": "Экстренный Вызов!"
}, },
"footer": { "footer": {
"description": "Мы воспринимаемся как луч надежды, фигура, которая приносит спокойствие среди хаоса и свет в самые темные моменты.", "description": "Мы предоставляем профессиональные услуги по установке систем пожарной безопасности и продаже сертифицированных средств защиты.",
"quickLinks": { "quickLinks": {
"title": "БЫСТРЫЕ ССЫЛКИ", "title": "БЫСТРЫЕ ССЫЛКИ",
"home": "Главная", "home": "Главная",
@@ -221,7 +221,8 @@
"title": "ПОДДЕРЖКА", "title": "ПОДДЕРЖКА",
"contact": "Контакты", "contact": "Контакты",
"help": "Помощь" "help": "Помощь"
} },
"address":"г. Ташкент, Юнусабадский район, 3-й тупик улицы Ниязбек йўли, дом 39"
}, },
"rasmlar": "Изображения", "rasmlar": "Изображения",
"fotogalereya": "Фотогалерея", "fotogalereya": "Фотогалерея",

View File

@@ -139,9 +139,9 @@
"privacy": "Bizning maxfiylik siyosatimizga rozilik bildirasiz", "privacy": "Bizning maxfiylik siyosatimizga rozilik bildirasiz",
"send": "XABAR YUBORISH", "send": "XABAR YUBORISH",
"email": "ELEKTRON POCHTA", "email": "ELEKTRON POCHTA",
"emailAddress": "support@ignum.com", "emailAddress": "info@ignum-tech.com",
"location": "Bizning Manzilimiz", "location": "Bizning Manzilimiz",
"address": "Jl. Dr. Ir. Soekarno No. 99x Tabanan Bali", "address": "Toshkent shahri , Yunusabod tumani , Niyozbek yo'li 3 tor ko'chasi , 39 uy",
"phone": "Telefon" "phone": "Telefon"
} }
}, },
@@ -208,7 +208,7 @@
"emergency": "Favqulodda Qo'ng'iroq!" "emergency": "Favqulodda Qo'ng'iroq!"
}, },
"footer": { "footer": {
"description": "Biz umid nuri, tartibsizlik davrida tinchlik va eng qiyin vaziyatlarda ishonchli himoya manbai sifatida ko'rilamiz.", "description": "Biz yongin xavfsizligi tizimlarini ornatish va sertifikatlangan himoya vositalari savdosi boyicha professional xizmatlar korsatamiz.",
"quickLinks": { "quickLinks": {
"title": "TEZKOR HAVOLALAR", "title": "TEZKOR HAVOLALAR",
"home": "Asosiy", "home": "Asosiy",
@@ -221,7 +221,8 @@
"title": "YORDAM", "title": "YORDAM",
"contact": "Aloqa", "contact": "Aloqa",
"help": "Yordam" "help": "Yordam"
} },
"address": "Toshkent shahri , Yunusabod tumani , Niyozbek yo'li 3 tor ko'chasi , 39 uy"
}, },
"rasmlar": "Rasmlar", "rasmlar": "Rasmlar",
"fotogalereya": "Fotogalereya", "fotogalereya": "Fotogalereya",

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB