add maps to contact page catalog_page added , email addres updated , remove page drop down
This commit is contained in:
13
app/[locale]/catalog_page/page.tsx
Normal file
13
app/[locale]/catalog_page/page.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
@@ -182,12 +182,14 @@ export function Footer() {
|
||||
href="mailto:support@fireforce.com"
|
||||
className="hover:text-[#fa1d1d]"
|
||||
>
|
||||
support@fireforce.com
|
||||
info@ignum-tech.com
|
||||
</a>
|
||||
</li>
|
||||
<li className="flex items-start gap-3">
|
||||
<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>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,7 @@ export function Navbar() {
|
||||
<Link href={`/${locale}/home`} className="hover:cursor-pointer">
|
||||
<div className="flex items-center gap-2">
|
||||
<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>
|
||||
</Link>
|
||||
@@ -62,53 +62,21 @@ export function Navbar() {
|
||||
{t("navbar.about")}
|
||||
</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
|
||||
href={`/${locale}/faq`}
|
||||
className="font-unbounded uppercase block px-4 py-2 text-black text-sm hover:bg-red-600
|
||||
hover:text-white transition-colors"
|
||||
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.faq")}
|
||||
</Link>
|
||||
<Link
|
||||
href={`/${locale}/services`}
|
||||
className="font-unbounded uppercase block px-4 py-2 text-black text-sm hover:bg-red-600
|
||||
hover:text-white transition-colors"
|
||||
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.services")}
|
||||
</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
|
||||
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"
|
||||
>
|
||||
{t("navbar.products")}
|
||||
@@ -210,39 +178,23 @@ export function Navbar() {
|
||||
</Link>
|
||||
|
||||
{/* 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
|
||||
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)}
|
||||
>
|
||||
{t("navbar.faq")}
|
||||
</Link>
|
||||
<Link
|
||||
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)}
|
||||
>
|
||||
{t("navbar.services")}
|
||||
</Link>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<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"
|
||||
onClick={() => setIsMobileMenuOpen(false)}
|
||||
>
|
||||
|
||||
@@ -6,12 +6,7 @@ export default function ContactHeader() {
|
||||
const t = useTranslations();
|
||||
return (
|
||||
<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
|
||||
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"
|
||||
|
||||
@@ -3,6 +3,8 @@ import { Mail, MapPin, Phone } from "lucide-react";
|
||||
import ContactHeader from "./contactHeader";
|
||||
import Form from "./form";
|
||||
import { useTranslations } from "next-intl";
|
||||
import Maps from "./maps";
|
||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||
|
||||
export function Contact() {
|
||||
const t = useTranslations();
|
||||
@@ -46,7 +48,17 @@ export function Contact() {
|
||||
</div>
|
||||
|
||||
{/* 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 />
|
||||
|
||||
<Form />
|
||||
@@ -64,11 +76,14 @@ export function Contact() {
|
||||
<h3 className="font-almarai text-sm font-bold tracking-wider text-white">
|
||||
{info.title}
|
||||
</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>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
31
components/pages/contact/maps.tsx
Normal file
31
components/pages/contact/maps.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
@@ -59,10 +59,10 @@ export function Banner() {
|
||||
{/* Left side - Firefighters Image */}
|
||||
<div className="flex items-end justify-center ">
|
||||
<img
|
||||
src="/images/homeBanner.png"
|
||||
src="/images/homeBanner3.png"
|
||||
alt="Firefighters"
|
||||
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>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"banner": {
|
||||
"title1": "Welcome to Ignum",
|
||||
"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"
|
||||
},
|
||||
"statistics": {
|
||||
@@ -139,9 +139,9 @@
|
||||
"privacy": "You agree to our friendly privacy policy",
|
||||
"send": "SEND MESSAGE",
|
||||
"email": "EMAIL",
|
||||
"emailAddress": "support@ignum.com",
|
||||
"emailAddress": "info@ignum-tech.com",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
@@ -208,7 +208,7 @@
|
||||
"emergency": "Emergency Call!"
|
||||
},
|
||||
"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": {
|
||||
"title": "QUICK LINKS",
|
||||
"home": "Home",
|
||||
@@ -221,7 +221,8 @@
|
||||
"title": "SUPPORT",
|
||||
"contact": "Contact",
|
||||
"help": "Help"
|
||||
}
|
||||
},
|
||||
"address":"Tashkent city, Yunusabad district, 3rd dead-end of Niyozbek Yoli street, house 39"
|
||||
},
|
||||
"rasmlar": "Images",
|
||||
"fotogalereya": "Photo Gallery",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"banner": {
|
||||
"title1": "Добро пожаловать в Ignum",
|
||||
"title2": "Защита от Пожара",
|
||||
"description": "Мы воспринимаемся как луч надежды, фигура, которая приносит спокойствие среди хаоса и свет в самые темные моменты.",
|
||||
"description": "Мы предоставляем профессиональные услуги по установке систем пожарной безопасности и продаже сертифицированных средств защиты.",
|
||||
"cta": "Начать"
|
||||
},
|
||||
"statistics": {
|
||||
@@ -139,9 +139,9 @@
|
||||
"privacy": "Вы соглашаетесь с нашей дружественной политикой конфиденциальности",
|
||||
"send": "ОТПРАВИТЬ СООБЩЕНИЕ",
|
||||
"email": "ЭЛЕКТРОННАЯ ПОЧТА",
|
||||
"emailAddress": "support@ignum.com",
|
||||
"emailAddress": "info@ignum-tech.com",
|
||||
"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": "Телефон"
|
||||
}
|
||||
},
|
||||
@@ -208,7 +208,7 @@
|
||||
"emergency": "Экстренный Вызов!"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Мы воспринимаемся как луч надежды, фигура, которая приносит спокойствие среди хаоса и свет в самые темные моменты.",
|
||||
"description": "Мы предоставляем профессиональные услуги по установке систем пожарной безопасности и продаже сертифицированных средств защиты.",
|
||||
"quickLinks": {
|
||||
"title": "БЫСТРЫЕ ССЫЛКИ",
|
||||
"home": "Главная",
|
||||
@@ -221,7 +221,8 @@
|
||||
"title": "ПОДДЕРЖКА",
|
||||
"contact": "Контакты",
|
||||
"help": "Помощь"
|
||||
}
|
||||
},
|
||||
"address":"г. Ташкент, Юнусабадский район, 3-й тупик улицы Ниязбек йўли, дом 39"
|
||||
},
|
||||
"rasmlar": "Изображения",
|
||||
"fotogalereya": "Фотогалерея",
|
||||
|
||||
@@ -139,9 +139,9 @@
|
||||
"privacy": "Bizning maxfiylik siyosatimizga rozilik bildirasiz",
|
||||
"send": "XABAR YUBORISH",
|
||||
"email": "ELEKTRON POCHTA",
|
||||
"emailAddress": "support@ignum.com",
|
||||
"emailAddress": "info@ignum-tech.com",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
@@ -208,7 +208,7 @@
|
||||
"emergency": "Favqulodda Qo'ng'iroq!"
|
||||
},
|
||||
"footer": {
|
||||
"description": "Biz umid nuri, tartibsizlik davrida tinchlik va eng qiyin vaziyatlarda ishonchli himoya manbai sifatida ko'rilamiz.",
|
||||
"description": "Biz yong‘in xavfsizligi tizimlarini o‘rnatish va sertifikatlangan himoya vositalari savdosi bo‘yicha professional xizmatlar ko‘rsatamiz.",
|
||||
"quickLinks": {
|
||||
"title": "TEZKOR HAVOLALAR",
|
||||
"home": "Asosiy",
|
||||
@@ -221,7 +221,8 @@
|
||||
"title": "YORDAM",
|
||||
"contact": "Aloqa",
|
||||
"help": "Yordam"
|
||||
}
|
||||
},
|
||||
"address": "Toshkent shahri , Yunusabod tumani , Niyozbek yo'li 3 tor ko'chasi , 39 uy"
|
||||
},
|
||||
"rasmlar": "Rasmlar",
|
||||
"fotogalereya": "Fotogalereya",
|
||||
|
||||
BIN
public/images/homeBanner2.png
Normal file
BIN
public/images/homeBanner2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 763 KiB |
BIN
public/images/homeBanner3.png
Normal file
BIN
public/images/homeBanner3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 MiB |
Reference in New Issue
Block a user