translation
This commit is contained in:
@@ -4,8 +4,10 @@ import React from "react";
|
|||||||
|
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { Mail, Phone, MapPin } from "lucide-react";
|
import { Mail, Phone, MapPin } from "lucide-react";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function Footer() {
|
export function Footer() {
|
||||||
|
const t = useTranslations();
|
||||||
const [email, setEmail] = useState("");
|
const [email, setEmail] = useState("");
|
||||||
const [subscribed, setSubscribed] = useState(false);
|
const [subscribed, setSubscribed] = useState(false);
|
||||||
|
|
||||||
@@ -75,8 +77,7 @@ export function Footer() {
|
|||||||
<span className="text-xl font-bold text-white">FIREFORCE</span>
|
<span className="text-xl font-bold text-white">FIREFORCE</span>
|
||||||
</div>
|
</div>
|
||||||
<p className="text-sm leading-relaxed text-gray-300">
|
<p className="text-sm leading-relaxed text-gray-300">
|
||||||
They are seen as a beacon of hope, a figure who brings calm
|
{t("footer.description")}
|
||||||
amidst chaos and light in the darkest of moments.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -86,12 +87,12 @@ export function Footer() {
|
|||||||
<ul className="space-y-3 text-gray-300">
|
<ul className="space-y-3 text-gray-300">
|
||||||
<li>
|
<li>
|
||||||
<a href="#home" className="transition hover:text-[#fa1d1d]">
|
<a href="#home" className="transition hover:text-[#fa1d1d]">
|
||||||
Home
|
{t("footer.quickLinks.home")}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#about" className="transition hover:text-[#fa1d1d]">
|
<a href="#about" className="transition hover:text-[#fa1d1d]">
|
||||||
About
|
{t("footer.quickLinks.about")}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
@@ -99,20 +100,12 @@ export function Footer() {
|
|||||||
href="#services"
|
href="#services"
|
||||||
className="transition hover:text-[#fa1d1d]"
|
className="transition hover:text-[#fa1d1d]"
|
||||||
>
|
>
|
||||||
Services
|
{t("footer.quickLinks.services")}
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="#pricing"
|
|
||||||
className="transition hover:text-[#fa1d1d]"
|
|
||||||
>
|
|
||||||
Pricing
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="#blog" className="transition hover:text-[#fa1d1d]">
|
<a href="#blog" className="transition hover:text-[#fa1d1d]">
|
||||||
Blog
|
{t("footer.quickLinks.products")}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -120,40 +113,13 @@ export function Footer() {
|
|||||||
|
|
||||||
{/* Support */}
|
{/* Support */}
|
||||||
<div>
|
<div>
|
||||||
<h3 className="mb-6 text-lg font-bold text-white">SUPPORT</h3>
|
<h3 className="mb-6 text-lg font-bold text-white">
|
||||||
|
{t("footer.support.title")}
|
||||||
|
</h3>
|
||||||
<ul className="space-y-3 text-gray-300">
|
<ul className="space-y-3 text-gray-300">
|
||||||
<li>
|
<li>
|
||||||
<a href="#help" className="transition hover:text-[#fa1d1d]">
|
<a href="#help" className="transition hover:text-[#fa1d1d]">
|
||||||
Help Center
|
{t("footer.support.contact")}
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="#disclaimer"
|
|
||||||
className="transition hover:text-[#fa1d1d]"
|
|
||||||
>
|
|
||||||
Disclaimer
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="#faq" className="transition hover:text-[#fa1d1d]">
|
|
||||||
FAQ
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="#support"
|
|
||||||
className="transition hover:text-[#fa1d1d]"
|
|
||||||
>
|
|
||||||
Support
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a
|
|
||||||
href="#contact"
|
|
||||||
className="transition hover:text-[#fa1d1d]"
|
|
||||||
>
|
|
||||||
Contact
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import Link from "next/link";
|
|||||||
import { ChevronDown, Phone, Menu, X } from "lucide-react";
|
import { ChevronDown, Phone, Menu, X } from "lucide-react";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import LanguageSelectRadix from "../languageSwitcher";
|
import LanguageSelectRadix from "../languageSwitcher";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function Navbar() {
|
export function Navbar() {
|
||||||
|
const t = useTranslations();
|
||||||
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
|
||||||
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
||||||
const [scrolled, setScrolled] = useState(false);
|
const [scrolled, setScrolled] = useState(false);
|
||||||
@@ -55,13 +57,13 @@ export function Navbar() {
|
|||||||
href="/"
|
href="/"
|
||||||
className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
|
className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
|
||||||
>
|
>
|
||||||
HOME
|
{t("navbar.home")}
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
href="/about"
|
href="/about"
|
||||||
className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
|
className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
|
||||||
>
|
>
|
||||||
ABOUT
|
{t("navbar.about")}
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{/* Pages Dropdown */}
|
{/* Pages Dropdown */}
|
||||||
@@ -70,7 +72,7 @@ export function Navbar() {
|
|||||||
className="text-white text-sm h-full font-semibold hover:text-red-500
|
className="text-white text-sm h-full font-semibold hover:text-red-500
|
||||||
transition-colors flex items-center gap-1"
|
transition-colors flex items-center gap-1"
|
||||||
>
|
>
|
||||||
PAGES
|
{t("navbar.pages")}
|
||||||
<ChevronDown
|
<ChevronDown
|
||||||
size={16}
|
size={16}
|
||||||
className="transition-transform group-hover:rotate-180"
|
className="transition-transform group-hover:rotate-180"
|
||||||
@@ -90,14 +92,14 @@ export function Navbar() {
|
|||||||
className="block px-4 py-2 text-black text-sm hover:bg-red-600
|
className="block px-4 py-2 text-black text-sm hover:bg-red-600
|
||||||
hover:text-white transition-colors"
|
hover:text-white transition-colors"
|
||||||
>
|
>
|
||||||
FAQ
|
{t("navbar.faq")}
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
href="/services"
|
href="/services"
|
||||||
className="block px-4 py-2 text-black text-sm hover:bg-red-600
|
className="block px-4 py-2 text-black text-sm hover:bg-red-600
|
||||||
hover:text-white transition-colors"
|
hover:text-white transition-colors"
|
||||||
>
|
>
|
||||||
Services
|
{t("navbar.services")}
|
||||||
</Link>
|
</Link>
|
||||||
{/* <Link
|
{/* <Link
|
||||||
href="/blog"
|
href="/blog"
|
||||||
@@ -113,13 +115,13 @@ export function Navbar() {
|
|||||||
href="/products"
|
href="/products"
|
||||||
className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
|
className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
|
||||||
>
|
>
|
||||||
PRODUCTS
|
{t("navbar.products")}
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
href="/contact"
|
href="/contact"
|
||||||
className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
|
className="text-white text-sm h-full flex items-center font-semibold hover:cursor-pointer hover:text-red-500 transition"
|
||||||
>
|
>
|
||||||
CONTACT
|
{t("navbar.contact")}
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -132,7 +134,7 @@ export function Navbar() {
|
|||||||
<Phone size={20} className="text-white" />
|
<Phone size={20} className="text-white" />
|
||||||
<div>
|
<div>
|
||||||
<div className="text-white text-xs font-semibold">
|
<div className="text-white text-xs font-semibold">
|
||||||
Emergency Call!
|
{t("navbar.emergency")}
|
||||||
</div>
|
</div>
|
||||||
<div className="text-white text-sm font-bold">
|
<div className="text-white text-sm font-bold">
|
||||||
+123-456-7890
|
+123-456-7890
|
||||||
@@ -170,14 +172,21 @@ export function Navbar() {
|
|||||||
>
|
>
|
||||||
{/* Mobile Menu Header */}
|
{/* Mobile Menu Header */}
|
||||||
<div className="flex justify-between items-center p-6 border-b border-gray-700">
|
<div className="flex justify-between items-center p-6 border-b border-gray-700">
|
||||||
<div className="flex items-center gap-2">
|
{/* Logo */}
|
||||||
<div className="w-8 h-8 bg-red-600 rounded-full flex items-center justify-center">
|
<Link href="/" className="hover:cursor-pointer">
|
||||||
<div className="w-6 h-6 bg-white rounded-full"></div>
|
<div className="flex items-center gap-2">
|
||||||
|
<div className="p-2 rounded-xl flex items-center justify-center">
|
||||||
|
<Image
|
||||||
|
src="/images/IGNUM/PNG/1.@6x.png"
|
||||||
|
alt="logo image"
|
||||||
|
width={70}
|
||||||
|
height={70}
|
||||||
|
className=""
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
Ignum
|
||||||
</div>
|
</div>
|
||||||
<span className="text-white font-bold text-lg tracking-wider">
|
</Link>
|
||||||
FIREFORCE
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<button
|
<button
|
||||||
onClick={() => setIsMobileMenuOpen(false)}
|
onClick={() => setIsMobileMenuOpen(false)}
|
||||||
className="text-white p-2 hover:bg-red-600 rounded-md transition"
|
className="text-white p-2 hover:bg-red-600 rounded-md transition"
|
||||||
@@ -193,14 +202,14 @@ export function Navbar() {
|
|||||||
className="text-white text-base font-semibold hover:text-red-500 transition py-2"
|
className="text-white text-base font-semibold hover:text-red-500 transition py-2"
|
||||||
onClick={() => setIsMobileMenuOpen(false)}
|
onClick={() => setIsMobileMenuOpen(false)}
|
||||||
>
|
>
|
||||||
HOME
|
{t("navbar.home")}
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
href="/about"
|
href="/about"
|
||||||
className="text-white text-base font-semibold hover:text-red-500 transition py-2"
|
className="text-white text-base font-semibold hover:text-red-500 transition py-2"
|
||||||
onClick={() => setIsMobileMenuOpen(false)}
|
onClick={() => setIsMobileMenuOpen(false)}
|
||||||
>
|
>
|
||||||
ABOUT
|
{t("navbar.about")}
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{/* Mobile Pages Dropdown */}
|
{/* Mobile Pages Dropdown */}
|
||||||
@@ -209,7 +218,7 @@ export function Navbar() {
|
|||||||
onClick={() => setIsDropdownOpen(!isDropdownOpen)}
|
onClick={() => setIsDropdownOpen(!isDropdownOpen)}
|
||||||
className="text-white text-base font-semibold hover:text-red-500 transition flex items-center gap-1 py-2 w-full"
|
className="text-white text-base font-semibold hover:text-red-500 transition flex items-center gap-1 py-2 w-full"
|
||||||
>
|
>
|
||||||
PAGES
|
{t("navbar.pages")}
|
||||||
<ChevronDown
|
<ChevronDown
|
||||||
size={16}
|
size={16}
|
||||||
className={`transition-transform ${isDropdownOpen ? "rotate-180" : ""}`}
|
className={`transition-transform ${isDropdownOpen ? "rotate-180" : ""}`}
|
||||||
@@ -222,14 +231,14 @@ export function Navbar() {
|
|||||||
className="text-white/80 text-sm hover:text-red-500 transition py-2"
|
className="text-white/80 text-sm hover:text-red-500 transition py-2"
|
||||||
onClick={() => setIsMobileMenuOpen(false)}
|
onClick={() => setIsMobileMenuOpen(false)}
|
||||||
>
|
>
|
||||||
FAQ
|
{t("navbar.faq")}
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
href="/services"
|
href="/services"
|
||||||
className="text-white/80 text-sm hover:text-red-500 transition py-2"
|
className="text-white/80 text-sm hover:text-red-500 transition py-2"
|
||||||
onClick={() => setIsMobileMenuOpen(false)}
|
onClick={() => setIsMobileMenuOpen(false)}
|
||||||
>
|
>
|
||||||
Services
|
{t("navbar.services")}
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
@@ -240,14 +249,14 @@ export function Navbar() {
|
|||||||
className="text-white text-base font-semibold hover:text-red-500 transition py-2"
|
className="text-white text-base font-semibold hover:text-red-500 transition py-2"
|
||||||
onClick={() => setIsMobileMenuOpen(false)}
|
onClick={() => setIsMobileMenuOpen(false)}
|
||||||
>
|
>
|
||||||
PRODUCTS
|
{t("navbar.products")}
|
||||||
</Link>
|
</Link>
|
||||||
<Link
|
<Link
|
||||||
href="/contact"
|
href="/contact"
|
||||||
className="text-white text-base font-semibold hover:text-red-500 transition py-2"
|
className="text-white text-base font-semibold hover:text-red-500 transition py-2"
|
||||||
onClick={() => setIsMobileMenuOpen(false)}
|
onClick={() => setIsMobileMenuOpen(false)}
|
||||||
>
|
>
|
||||||
CONTACT
|
{t("navbar.contact")}
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function AboutBanner() {
|
export function AboutBanner() {
|
||||||
|
const t = useTranslations();
|
||||||
return (
|
return (
|
||||||
<section className="relative w-full lg:h-[60vh] h-screen min-h-100 overflow-hidden pt-10">
|
<section className="relative w-full lg:h-[60vh] h-screen min-h-100 overflow-hidden pt-10">
|
||||||
{/* Background Image */}
|
{/* Background Image */}
|
||||||
@@ -24,17 +26,21 @@ export function AboutBanner() {
|
|||||||
<div className="max-w-250 w-full mx-auto px-4">
|
<div className="max-w-250 w-full mx-auto px-4">
|
||||||
<div className="relative z-20 h-full flex max-lg:flex-col items-start justify-between gap-5 pt-30">
|
<div className="relative z-20 h-full flex max-lg:flex-col items-start justify-between gap-5 pt-30">
|
||||||
<div className="spacw-y-4 ">
|
<div className="spacw-y-4 ">
|
||||||
<DotAnimatsiya />
|
<div className="flex items-center gap-3">
|
||||||
|
<DotAnimatsiya />
|
||||||
|
<span className="text-sm text-white font-semibold tracking-wide">
|
||||||
|
{t("about.banner.title")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<p
|
<p
|
||||||
className=" bg-linear-to-br from-white via-white to-black
|
className=" bg-linear-to-br from-white via-white to-black
|
||||||
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
||||||
>
|
>
|
||||||
Fire Fighter <br /> At The Ready
|
{t("about.banner.subtitle")}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="lg:w-[40%] text-gray-300 mt-20">
|
<div className="lg:w-[40%] text-gray-300 mt-20">
|
||||||
It emphasizes that these firefighters are there not just as public
|
{t("about.banner.description")}
|
||||||
servants but as a vital part of the community.
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
import { useTranslations } from "next-intl";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
|
||||||
export function Story() {
|
export function Story() {
|
||||||
|
const t = useTranslations();
|
||||||
return (
|
return (
|
||||||
<div className="bg-[#1e1d1c] pb-0 relative z-10 max-[350px]:pb-30 ">
|
<div className="bg-[#1e1d1c] pb-0 relative z-10 max-[350px]:pb-30 ">
|
||||||
<div className="max-w-260 mx-auto px-4">
|
<div className="max-w-260 mx-auto px-4">
|
||||||
@@ -26,21 +28,11 @@ export function Story() {
|
|||||||
{/* Content */}
|
{/* Content */}
|
||||||
<div className="relative z-20 p-8 lg:p-12 max-w-130">
|
<div className="relative z-20 p-8 lg:p-12 max-w-130">
|
||||||
<h2 className="text-white text-4xl lg:text-5xl font-bold mb-6">
|
<h2 className="text-white text-4xl lg:text-5xl font-bold mb-6">
|
||||||
OUR STORY
|
{t("about.story.title")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="text-gray-300 mb-4">
|
<p className="text-gray-300 mb-4">{t("about.story.description")}</p>
|
||||||
Our story is one of unwavering dedication, selflessness, and a{" "}
|
|
||||||
<span className="text-white font-semibold">
|
|
||||||
deep commitment to the safety
|
|
||||||
</span>
|
|
||||||
and well-being of our communities.
|
|
||||||
</p>
|
|
||||||
<p className="text-gray-400 mb-6">
|
|
||||||
Aliquam lorem ante dapibus in viverra quis a tellus phasellus
|
|
||||||
viverra nulla ut metus varius laoreet quisque rutrum.
|
|
||||||
</p>
|
|
||||||
<button className="text-white flex items-center gap-2 hover:text-red-500 transition">
|
<button className="text-white flex items-center gap-2 hover:text-red-500 transition">
|
||||||
READ MORE
|
{t("about.story.readMore")}
|
||||||
<svg
|
<svg
|
||||||
className="w-4 h-4"
|
className="w-4 h-4"
|
||||||
fill="none"
|
fill="none"
|
||||||
@@ -74,11 +66,10 @@ export function Story() {
|
|||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<div className="space-y-1 text-white">
|
<div className="space-y-1 text-white">
|
||||||
<h2 className="text-xl font-semibold">FIREFORCE VISION</h2>
|
<h2 className="text-xl font-semibold">
|
||||||
<p>
|
{t("about.story.vision.title")}
|
||||||
Phasellus viverra nulla ut metus varius leo imperdiet laoreet.
|
</h2>
|
||||||
Quisque rutrum aenean augue vulputate eleifend.
|
<p>{t("about.story.vision.description")}</p>
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex sm:flex-row flex-col sm:items-center items-start md:rounded-t-xl max-md:rounded-xl max-w-md w-full sm:p-7 p-2 bg-black sm:gap-5 gap-2">
|
<div className="flex sm:flex-row flex-col sm:items-center items-start md:rounded-t-xl max-md:rounded-xl max-w-md w-full sm:p-7 p-2 bg-black sm:gap-5 gap-2">
|
||||||
@@ -92,10 +83,11 @@ export function Story() {
|
|||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
<div className="space-y-1 text-white">
|
<div className="space-y-1 text-white">
|
||||||
<h2 className="text-xl font-semibold">FIREFORCE VISION</h2>
|
<h2 className="text-xl font-semibold">
|
||||||
|
{t("about.story.mission.title")}
|
||||||
|
</h2>
|
||||||
<p>
|
<p>
|
||||||
Phasellus viverra nulla ut metus varius leo imperdiet laoreet.
|
{t("about.story.mission.description")}
|
||||||
Quisque rutrum aenean augue vulputate eleifend.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,13 +3,15 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import { Check } from "lucide-react";
|
import { Check } from "lucide-react";
|
||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function WhyChooseUs() {
|
export function WhyChooseUs() {
|
||||||
|
const t = useTranslations();
|
||||||
const features = [
|
const features = [
|
||||||
{ title: "Fast Response Team" },
|
{ title: t("about.whyChoose.features.fastResponse") },
|
||||||
{ title: "Experienced Firefighter" },
|
{ title: t("about.whyChoose.features.ready24") },
|
||||||
{ title: "Ready 24 Hours" },
|
{ title: t("about.whyChoose.features.experienced") },
|
||||||
{ title: "Fast Response Team" },
|
{ title: t("about.whyChoose.features.quality") },
|
||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -22,23 +24,20 @@ export function WhyChooseUs() {
|
|||||||
<div className="mb-4 flex items-center gap-2">
|
<div className="mb-4 flex items-center gap-2">
|
||||||
<DotAnimatsiya />
|
<DotAnimatsiya />
|
||||||
<span className="text-sm font-semibold tracking-wider text-white">
|
<span className="text-sm font-semibold tracking-wider text-white">
|
||||||
WHY CHOOSE US
|
{t("about.whyChoose.title")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h2
|
<h2
|
||||||
className="bg-linear-to-br from-white via-white to-black
|
className="bg-linear-to-br from-white via-white to-black
|
||||||
text-transparent bg-clip-text text-4xl font-bold sm:text-5xl lg:text-6xl"
|
text-transparent bg-clip-text text-4xl font-bold sm:text-5xl lg:text-6xl"
|
||||||
>
|
>
|
||||||
WE ARE BEST
|
{t("about.whyChoose.subtitle")}
|
||||||
<br />
|
|
||||||
FIREFIGHTER
|
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Description */}
|
{/* Description */}
|
||||||
<p className="text-base leading-relaxed text-gray-400 sm:text-lg">
|
<p className="text-base leading-relaxed text-gray-400 sm:text-lg">
|
||||||
Aliquam lorem ante dapibus in viverra quis a tellus phasellus
|
{t("about.whyChoose.description")}
|
||||||
viverra nulla ut metus varius laoreet quisque rutrum.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{/* Features Grid */}
|
{/* Features Grid */}
|
||||||
@@ -58,7 +57,7 @@ export function WhyChooseUs() {
|
|||||||
{/* CTA Button */}
|
{/* CTA Button */}
|
||||||
<div>
|
<div>
|
||||||
<button className="shadow-[0px_0px_2px_8px_#ff01015c] rounded-full bg-red-600 px-6 py-3 font-bold text-white transition-all hover:bg-red-700 sm:px-8 sm:py-4">
|
<button className="shadow-[0px_0px_2px_8px_#ff01015c] rounded-full bg-red-600 px-6 py-3 font-bold text-white transition-all hover:bg-red-700 sm:px-8 sm:py-4">
|
||||||
CONTACT US
|
{t("about.whyChoose.contact")}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -88,10 +87,7 @@ export function WhyChooseUs() {
|
|||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm font-bold text-white sm:text-base">
|
<p className="text-sm font-bold text-white sm:text-base">
|
||||||
BEST AWARD
|
{t("about.whyChoose.award")}
|
||||||
</p>
|
|
||||||
<p className="text-xs text-gray-400 sm:text-sm">
|
|
||||||
FIREFIGHTER 2025
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,23 +1,25 @@
|
|||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
export default function ContactHeader() {
|
export default function ContactHeader() {
|
||||||
|
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">
|
<div className="mb-4 flex items-center justify-center gap-2">
|
||||||
<DotAnimatsiya />
|
<DotAnimatsiya />
|
||||||
<span className="text-sm font-semibold tracking-wider text-white">
|
<span className="text-sm font-semibold tracking-wider text-white">
|
||||||
CONTACT US
|
{t("contact.banner.title")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h2
|
<h2
|
||||||
className="bg-linear-to-br from-white via-white to-black
|
className="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"
|
||||||
>
|
>
|
||||||
GET IN TOUCH
|
{t("contact.banner.subtitle")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="mt-3 text-sm text-gray-300 italic">
|
<p className="mt-3 text-sm text-gray-300 italic">
|
||||||
We'd love to hear from you. Please fill out this form.
|
{t("contact.banner.description")}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { Check } from "lucide-react";
|
import { Check } from "lucide-react";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
|
|
||||||
interface FormData {
|
interface FormData {
|
||||||
@@ -22,6 +23,7 @@ interface FormErrors {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function Form() {
|
export default function Form() {
|
||||||
|
const t = useTranslations();
|
||||||
const [formData, setFormData] = useState<FormData>({
|
const [formData, setFormData] = useState<FormData>({
|
||||||
firstName: "",
|
firstName: "",
|
||||||
lastName: "",
|
lastName: "",
|
||||||
@@ -124,7 +126,7 @@ export default function Form() {
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
name="firstName"
|
name="firstName"
|
||||||
placeholder="First Name"
|
placeholder={t("contact.form.placeholders.firstName")}
|
||||||
value={formData.firstName}
|
value={formData.firstName}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
className={`w-full rounded-3xl border bg-white px-4 py-3 text-sm text-gray-700 placeholder-gray-400 outline-none transition focus:ring-2 focus:ring-red-500 ${
|
className={`w-full rounded-3xl border bg-white px-4 py-3 text-sm text-gray-700 placeholder-gray-400 outline-none transition focus:ring-2 focus:ring-red-500 ${
|
||||||
@@ -139,7 +141,7 @@ export default function Form() {
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
name="lastName"
|
name="lastName"
|
||||||
placeholder="Last Name"
|
placeholder={t("contact.form.placeholders.lastName")}
|
||||||
value={formData.lastName}
|
value={formData.lastName}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
className={`w-full rounded-3xl border bg-white px-4 py-3 text-sm text-gray-700 placeholder-gray-400 outline-none transition focus:ring-2 focus:ring-red-500 ${
|
className={`w-full rounded-3xl border bg-white px-4 py-3 text-sm text-gray-700 placeholder-gray-400 outline-none transition focus:ring-2 focus:ring-red-500 ${
|
||||||
@@ -158,7 +160,7 @@ export default function Form() {
|
|||||||
<input
|
<input
|
||||||
type="email"
|
type="email"
|
||||||
name="email"
|
name="email"
|
||||||
placeholder="Your Email Address"
|
placeholder={t("contact.form.placeholders.email")}
|
||||||
value={formData.email}
|
value={formData.email}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
className={`w-full rounded-3xl border bg-white px-4 py-3 text-sm text-gray-700 placeholder-gray-400 outline-none transition focus:ring-2 focus:ring-red-500 ${
|
className={`w-full rounded-3xl border bg-white px-4 py-3 text-sm text-gray-700 placeholder-gray-400 outline-none transition focus:ring-2 focus:ring-red-500 ${
|
||||||
@@ -173,7 +175,7 @@ export default function Form() {
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
name="subject"
|
name="subject"
|
||||||
placeholder="Subject"
|
placeholder={t("contact.form.placeholders.subject")}
|
||||||
value={formData.subject}
|
value={formData.subject}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
className={`w-full rounded-3xl border bg-white px-4 py-3 text-sm text-gray-700 placeholder-gray-400 outline-none transition focus:ring-2 focus:ring-red-500 ${
|
className={`w-full rounded-3xl border bg-white px-4 py-3 text-sm text-gray-700 placeholder-gray-400 outline-none transition focus:ring-2 focus:ring-red-500 ${
|
||||||
@@ -190,7 +192,7 @@ export default function Form() {
|
|||||||
<div>
|
<div>
|
||||||
<textarea
|
<textarea
|
||||||
name="message"
|
name="message"
|
||||||
placeholder="Leave us a message"
|
placeholder={t("contact.form.placeholders.message")}
|
||||||
rows={8}
|
rows={8}
|
||||||
value={formData.message}
|
value={formData.message}
|
||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
@@ -221,7 +223,7 @@ export default function Form() {
|
|||||||
)}
|
)}
|
||||||
</button>
|
</button>
|
||||||
<span className="text-sm text-gray-300">
|
<span className="text-sm text-gray-300">
|
||||||
You agree to our friendly privacy policy
|
{t("contact.form.privacy")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
@@ -229,7 +231,7 @@ export default function Form() {
|
|||||||
disabled={isSubmitting}
|
disabled={isSubmitting}
|
||||||
className="shadow-[0px_0px_2px_8px_#ff01015c] rounded-full bg-red-600 px-8 py-3 text-sm font-semibold uppercase tracking-wider text-white transition hover:cursor-pointer hover:scale-90 disabled:cursor-not-allowed disabled:opacity-50"
|
className="shadow-[0px_0px_2px_8px_#ff01015c] rounded-full bg-red-600 px-8 py-3 text-sm font-semibold uppercase tracking-wider text-white transition hover:cursor-pointer hover:scale-90 disabled:cursor-not-allowed disabled:opacity-50"
|
||||||
>
|
>
|
||||||
{isSubmitting ? "Sending..." : "Send Message"}
|
{isSubmitting ? "Sending..." : t("contact.form.send")}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{errors.agreeToPolicy && (
|
{errors.agreeToPolicy && (
|
||||||
|
|||||||
@@ -2,22 +2,24 @@ import Image from "next/image";
|
|||||||
import { Mail, MapPin, Phone, Check } from "lucide-react";
|
import { Mail, MapPin, Phone, Check } from "lucide-react";
|
||||||
import ContactHeader from "./contactHeader";
|
import ContactHeader from "./contactHeader";
|
||||||
import Form from "./form";
|
import Form from "./form";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function Contact() {
|
export function Contact() {
|
||||||
|
const t = useTranslations();
|
||||||
const contactInfo = [
|
const contactInfo = [
|
||||||
{
|
{
|
||||||
icon: Mail,
|
icon: Mail,
|
||||||
title: "EMAIL",
|
title:t("contact.email"),
|
||||||
detail: "support@fireforce",
|
detail: t("contact.emailAddress"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: MapPin,
|
icon: MapPin,
|
||||||
title: "OUR LOCATION",
|
title: t("contact.location"),
|
||||||
detail: "Jl. Dr. Ir. Soekarno No. 99x Tabanan - Bali",
|
detail: t("contact.address"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: Phone,
|
icon: Phone,
|
||||||
title: "PHONE",
|
title: t("contact.phone"),
|
||||||
detail: "+123-456-7890",
|
detail: "+123-456-7890",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,8 +1,37 @@
|
|||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import FAQAccordion from "./faqAccardion";
|
import FAQAccordion from "./faqAccardion";
|
||||||
import { faqItems } from "@/lib/demoData";
|
import { faqItems } from "@/lib/demoData";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function Togle() {
|
export function Togle() {
|
||||||
|
const t = useTranslations();
|
||||||
|
const faqItems = [
|
||||||
|
{
|
||||||
|
id: "faq-1",
|
||||||
|
question: t("faq.question1.question"),
|
||||||
|
answer: t("faq.question1.answer"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "faq-2",
|
||||||
|
question: t("faq.question2.question"),
|
||||||
|
answer: t("faq.question2.answer"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "faq-3",
|
||||||
|
question: t("faq.question3.question"),
|
||||||
|
answer: t("faq.question3.answer"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "faq-4",
|
||||||
|
question: t("faq.question4.question"),
|
||||||
|
answer: t("faq.question4.answer"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "faq-5",
|
||||||
|
question: t("faq.question5.question"),
|
||||||
|
answer: t("faq.question5.answer"),
|
||||||
|
},
|
||||||
|
];
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-[#1e1d1c]">
|
<div className="min-h-screen bg-[#1e1d1c]">
|
||||||
<main className="mx-auto max-w-7xl px-4 py-16 sm:px-6 lg:px-8">
|
<main className="mx-auto max-w-7xl px-4 py-16 sm:px-6 lg:px-8">
|
||||||
@@ -13,7 +42,7 @@ export function Togle() {
|
|||||||
className="bg-linear-to-br from-white via-white/50 to-black
|
className="bg-linear-to-br from-white via-white/50 to-black
|
||||||
text-transparent bg-clip-text text-3xl font-bold uppercase leading-tight sm:text-4xl md:text-5xl lg:text-6xl"
|
text-transparent bg-clip-text text-3xl font-bold uppercase leading-tight sm:text-4xl md:text-5xl lg:text-6xl"
|
||||||
>
|
>
|
||||||
About <br /> Work
|
{t("faq.banner.topic")}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -28,17 +57,17 @@ export function Togle() {
|
|||||||
className="text-center bg-linear-to-br from-white via-white/50 to-black
|
className="text-center bg-linear-to-br from-white via-white/50 to-black
|
||||||
text-transparent bg-clip-text text-3xl font-bold uppercase leading-tight sm:text-4xl md:text-5xl lg:text-6xl"
|
text-transparent bg-clip-text text-3xl font-bold uppercase leading-tight sm:text-4xl md:text-5xl lg:text-6xl"
|
||||||
>
|
>
|
||||||
Still Have Question?
|
{t("faq.ask.question")}
|
||||||
</h1>
|
</h1>
|
||||||
<p className="text-center text-white/80 text-lg">
|
<p className="text-center text-white/80 text-lg">
|
||||||
Nullam dictum felis eu pede mollis pretium integer tincidunt.
|
{t("faq.ask.subtitle")}
|
||||||
</p>
|
</p>
|
||||||
<div className="w-full flex items-center justify-center">
|
<div className="w-full flex items-center justify-center">
|
||||||
<Link
|
<Link
|
||||||
href={"/contact"}
|
href={"/contact"}
|
||||||
className="mx-auto shadow-[0px_0px_2px_8px_#ff01015c] bg-red-600 hover:bg-red-700 text-white font-bold py-3 px-8 rounded-full transition duration-300 transform hover:scale-105 w-fit"
|
className="mx-auto shadow-[0px_0px_2px_8px_#ff01015c] bg-red-600 hover:bg-red-700 text-white font-bold py-3 px-8 rounded-full transition duration-300 transform hover:scale-105 w-fit"
|
||||||
>
|
>
|
||||||
ASK A QUESTION
|
{t("faq.ask.btn")}
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function FaqBanner() {
|
export function FaqBanner() {
|
||||||
|
const t = useTranslations();
|
||||||
return (
|
return (
|
||||||
<section className="relative w-full h-[55vh] min-h-100 overflow-hidden pt-10">
|
<section className="relative w-full h-[55vh] min-h-100 overflow-hidden pt-10">
|
||||||
{/* Background Image */}
|
{/* Background Image */}
|
||||||
@@ -24,12 +26,17 @@ export function FaqBanner() {
|
|||||||
<div className="max-w-250 w-full mx-auto px-4">
|
<div className="max-w-250 w-full mx-auto px-4">
|
||||||
<div className="relative z-20 h-full flex max-lg:flex-col items-start justify-between gap-5 pt-30">
|
<div className="relative z-20 h-full flex max-lg:flex-col items-start justify-between gap-5 pt-30">
|
||||||
<div className="spacw-y-4 ">
|
<div className="spacw-y-4 ">
|
||||||
<DotAnimatsiya />
|
<div className="flex items-center gap-3">
|
||||||
|
<DotAnimatsiya />
|
||||||
|
<span className="text-sm text-white font-semibold tracking-wide">
|
||||||
|
{t("faq.banner.title")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<p
|
<p
|
||||||
className=" bg-linear-to-br from-white via-white to-black
|
className=" bg-linear-to-br from-white via-white to-black
|
||||||
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
||||||
>
|
>
|
||||||
GENERAL <br /> QUESTIONS
|
{t("faq.banner.subtitle")}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { Button } from "@/components/ui/button";
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import { Flame, Building2, Ambulance } from "lucide-react";
|
import { Flame, Building2, Ambulance } from "lucide-react";
|
||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
interface ServiceItem {
|
interface ServiceItem {
|
||||||
icon: React.ReactNode;
|
icon: React.ReactNode;
|
||||||
@@ -13,28 +14,25 @@ interface ServiceItem {
|
|||||||
description: string;
|
description: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const services: ServiceItem[] = [
|
|
||||||
{
|
|
||||||
icon: <Flame width={40} height={40} className="text-red-500" />,
|
|
||||||
title: "FIRE PREVENTION",
|
|
||||||
description:
|
|
||||||
"Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum aenean imperdiet augue",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: <Building2 width={40} height={40} className="text-red-500" />,
|
|
||||||
title: "ACTIVE ACCIDENTS",
|
|
||||||
description:
|
|
||||||
"Nullam dictum felis eu pede mollis pretium. Integer tincidunt cras dapibus vivamus consequat vitae.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
icon: <Ambulance width={40} height={40} className="text-red-500" />,
|
|
||||||
title: "AMBULANCE SERVICE",
|
|
||||||
description:
|
|
||||||
"Donec pede justo fringilla vel aliquet nec vulputate eget arcu enim justo rhoncus ut venenatis.",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export function AboutUs() {
|
export function AboutUs() {
|
||||||
|
const t = useTranslations();
|
||||||
|
const services: ServiceItem[] = [
|
||||||
|
{
|
||||||
|
icon: <Flame width={40} height={40} className="text-red-500" />,
|
||||||
|
title: t("home.about.prevention.title"),
|
||||||
|
description: t("home.about.prevention.description"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <Building2 width={40} height={40} className="text-red-500" />,
|
||||||
|
title: t("home.about.accidents.title"),
|
||||||
|
description: t("home.about.accidents.description"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <Ambulance width={40} height={40} className="text-red-500" />,
|
||||||
|
title: t("home.about.service.title"),
|
||||||
|
description: t("home.about.service.description"),
|
||||||
|
},
|
||||||
|
];
|
||||||
return (
|
return (
|
||||||
<section className="bg-[#1e1d1c] py-16 px-4 sm:py-20 sm:px-6 lg:px-8">
|
<section className="bg-[#1e1d1c] py-16 px-4 sm:py-20 sm:px-6 lg:px-8">
|
||||||
<div className="max-w-7xl mx-auto">
|
<div className="max-w-7xl mx-auto">
|
||||||
@@ -46,16 +44,14 @@ export function AboutUs() {
|
|||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<DotAnimatsiya />
|
<DotAnimatsiya />
|
||||||
<span className="text-white font-bold text-sm tracking-wide">
|
<span className="text-white font-bold text-sm tracking-wide">
|
||||||
ABOUT US
|
{t("home.about.title")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h2
|
<h2
|
||||||
className="text-4xl bg-linear-to-br from-white via-white to-black
|
className="text-4xl bg-linear-to-br from-white via-white to-black
|
||||||
text-transparent bg-clip-text sm:text-5xl lg:text-6xl font-bold leading-tight"
|
text-transparent bg-clip-text sm:text-5xl lg:text-6xl font-bold leading-tight"
|
||||||
>
|
>
|
||||||
FIREFIGHTERS
|
{t("home.about.subtitle")}
|
||||||
<br />
|
|
||||||
AT THE READY
|
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -81,7 +77,7 @@ export function AboutUs() {
|
|||||||
{/* Button */}
|
{/* Button */}
|
||||||
<div>
|
<div>
|
||||||
<Button className="bg-red-600 hover:bg-red-700 text-white font-bold px-8 py-3 rounded-full transition-colors duration-300 shadow-[0px_0px_2px_8px_#ff01015c]">
|
<Button className="bg-red-600 hover:bg-red-700 text-white font-bold px-8 py-3 rounded-full transition-colors duration-300 shadow-[0px_0px_2px_8px_#ff01015c]">
|
||||||
ABOUT US
|
{t("home.about.title")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,10 +108,7 @@ export function AboutUs() {
|
|||||||
/>
|
/>
|
||||||
<div className="text-center">
|
<div className="text-center">
|
||||||
<p className="text-white font-bold text-sm sm:text-base">
|
<p className="text-white font-bold text-sm sm:text-base">
|
||||||
BEST AWARD
|
{t("home.about.award")}
|
||||||
</p>
|
|
||||||
<p className="text-white font-bold text-sm sm:text-base">
|
|
||||||
FIREFIGHTER 2025
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
import { useTranslations } from "next-intl";
|
||||||
import DotAnimatsiya from "../../dot/DotAnimatsiya";
|
import DotAnimatsiya from "../../dot/DotAnimatsiya";
|
||||||
|
|
||||||
export function Banner() {
|
export function Banner() {
|
||||||
|
const t = useTranslations();
|
||||||
return (
|
return (
|
||||||
<section className="relative w-full lg:h-[86vh] h-screen min-h-150 overflow-hidden pt-20">
|
<section className="relative w-full lg:h-[86vh] h-screen min-h-150 overflow-hidden pt-20">
|
||||||
{/* Background Image */}
|
{/* Background Image */}
|
||||||
@@ -22,8 +24,8 @@ export function Banner() {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Content Container */}
|
{/* Content Container */}
|
||||||
<div className="relative z-20 h-full flex items-end lg:mt-0 md:mt-[15vh] sm:mt-[5vh] mt-0">
|
<div className="relative z-20 h-full flex items-center lg:mt-0 md:mt-[20vh] sm:mt-[10vh] mt-0">
|
||||||
<div className="max-w-375 mx-auto px-4 sm:px-6 lg:px-8 w-full">
|
<div className="max-w-400 mx-auto px-4 sm:px-6 lg:px-8 w-full">
|
||||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 lg:gap-12 items-center h-full">
|
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 lg:gap-12 items-center h-full">
|
||||||
{/* Right side - Text Content */}
|
{/* Right side - Text Content */}
|
||||||
<div className="lg:hidden inline-block space-y-6 text-white">
|
<div className="lg:hidden inline-block space-y-6 text-white">
|
||||||
@@ -31,7 +33,7 @@ export function Banner() {
|
|||||||
<div className="flex items-center gap-2 w-fit">
|
<div className="flex items-center gap-2 w-fit">
|
||||||
<DotAnimatsiya />
|
<DotAnimatsiya />
|
||||||
<span className="text-sm font-semibold tracking-wide">
|
<span className="text-sm font-semibold tracking-wide">
|
||||||
WELCOME TO FIREFORCE
|
{t("home.banner.title1")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -40,28 +42,27 @@ export function Banner() {
|
|||||||
className="bg-linear-to-br from-white via-white to-black
|
className="bg-linear-to-br from-white via-white to-black
|
||||||
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
||||||
>
|
>
|
||||||
THE FIRE GUARDIAN
|
{t("home.banner.title2")}
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
{/* Description */}
|
{/* Description */}
|
||||||
<p className="text-base sm:text-lg text-gray-300 leading-relaxed max-w-md">
|
<p className="text-base sm:text-lg text-gray-300 leading-relaxed max-w-md">
|
||||||
They are seen as a beacon of hope, a figure who brings calm
|
{t("home.banner.description")}
|
||||||
amidst chaos and light in the darkest of moments.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{/* CTA Button */}
|
{/* CTA Button */}
|
||||||
<button className="shadow-[0px_0px_2px_8px_#ff01015c] bg-red-600 hover:bg-red-700 text-white font-bold py-3 px-8 rounded-full transition duration-300 transform hover:scale-105 w-fit">
|
<button className="shadow-[0px_0px_2px_8px_#ff01015c] bg-red-600 hover:bg-red-700 text-white font-bold py-3 px-8 rounded-full transition duration-300 transform hover:scale-105 w-fit">
|
||||||
GET STARTED
|
{t("home.banner.cta")}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Left side - Firefighters Image */}
|
{/* Left side - Firefighters Image */}
|
||||||
<div className="flex items-end justify-center">
|
<div className="flex items-end justify-center overflow-hidden ">
|
||||||
<img
|
<img
|
||||||
src="/images/home/bannerHuman.png"
|
src="/images/img15.webp"
|
||||||
alt="Firefighters"
|
alt="Firefighters"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
className="w-full max-lg:w-[80vw] h-auto object-cover drop-shadow-2xl"
|
className="w-150 h-100 max-[300px]:w-[80vw] object-cover object-right rounded-xl drop-shadow-2xl"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -71,24 +72,23 @@ export function Banner() {
|
|||||||
<div className="flex items-center gap-2 w-fit">
|
<div className="flex items-center gap-2 w-fit">
|
||||||
<DotAnimatsiya />
|
<DotAnimatsiya />
|
||||||
<span className="text-sm font-semibold tracking-wide">
|
<span className="text-sm font-semibold tracking-wide">
|
||||||
WELCOME TO FIREFORCE
|
{t("home.banner.title1")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Main Heading */}
|
{/* Main Heading */}
|
||||||
<h1 className="gradient-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty">
|
<h1 className="gradient-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty">
|
||||||
THE FIRE GUARDIAN
|
{t("home.banner.title2")}
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
{/* Description */}
|
{/* Description */}
|
||||||
<p className="text-base sm:text-lg text-gray-300 leading-relaxed max-w-md">
|
<p className="text-base sm:text-lg text-gray-300 leading-relaxed max-w-md">
|
||||||
They are seen as a beacon of hope, a figure who brings calm
|
{t("home.banner.description")}
|
||||||
amidst chaos and light in the darkest of moments.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
{/* CTA Button */}
|
{/* CTA Button */}
|
||||||
<button className="shadow-[0px_0px_2px_8px_#ff01015c] bg-red-600 hover:bg-red-700 text-white font-bold py-3 px-8 rounded-full transition duration-300 transform hover:scale-105 w-fit">
|
<button className="shadow-[0px_0px_2px_8px_#ff01015c] bg-red-600 hover:bg-red-700 text-white font-bold py-3 px-8 rounded-full transition duration-300 transform hover:scale-105 w-fit">
|
||||||
GET STARTED
|
{t("home.banner.cta")}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,35 +1,37 @@
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import { ChevronRight } from "lucide-react";
|
import { ChevronRight } from "lucide-react";
|
||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
const blogPosts = [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
image: "/images/img14.webp",
|
|
||||||
category: "Tips & Trick",
|
|
||||||
title: "BEHIND THE HELMET: LIFE AS A FIREFIGHTER",
|
|
||||||
author: "John Doe",
|
|
||||||
date: "July 24, 2025",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
image: "/images/img15.webp",
|
|
||||||
category: "Insight",
|
|
||||||
title: "FIREFIGHTING EQUIPMENT: TOOLS OF THE TRADE",
|
|
||||||
author: "John Doe",
|
|
||||||
date: "July 24, 2025",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
image: "/images/img16.webp",
|
|
||||||
category: "News",
|
|
||||||
title: "FIREFIGHTER TRAINING TAKES TO BECOME A HERO",
|
|
||||||
author: "John Doe",
|
|
||||||
date: "July 24, 2025",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export function Blog() {
|
export function Blog() {
|
||||||
|
const t = useTranslations();
|
||||||
|
const blogPosts = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
image: "/images/img14.webp",
|
||||||
|
category: "Tips & Trick",
|
||||||
|
title: t("home.blog.articles.article1"),
|
||||||
|
author: "John Doe",
|
||||||
|
date: "July 24, 2025",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
image: "/images/img15.webp",
|
||||||
|
category: "Insight",
|
||||||
|
title: t("home.blog.articles.article2"),
|
||||||
|
author: "John Doe",
|
||||||
|
date: "July 24, 2025",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
image: "/images/img16.webp",
|
||||||
|
category: "News",
|
||||||
|
title: t("home.blog.articles.article3"),
|
||||||
|
author: "John Doe",
|
||||||
|
date: "July 24, 2025",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="bg-[#1f1f1f] py-45">
|
<section className="bg-[#1f1f1f] py-45">
|
||||||
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
<div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
||||||
@@ -38,14 +40,14 @@ export function Blog() {
|
|||||||
<div className="mb-4 flex items-center justify-center gap-2">
|
<div className="mb-4 flex items-center justify-center gap-2">
|
||||||
<DotAnimatsiya />
|
<DotAnimatsiya />
|
||||||
<span className="text-sm font-semibold tracking-wider text-white uppercase">
|
<span className="text-sm font-semibold tracking-wider text-white uppercase">
|
||||||
Blog & Articles
|
{t("home.blog.title")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<h2
|
<h2
|
||||||
className="bg-linear-to-br from-white via-white to-black
|
className="bg-linear-to-br from-white via-white to-black
|
||||||
text-transparent bg-clip-text text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl"
|
text-transparent bg-clip-text text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl"
|
||||||
>
|
>
|
||||||
LATEST BLOG & NEWS
|
{t("home.blog.subtitle")}
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -84,7 +86,7 @@ export function Blog() {
|
|||||||
href="#"
|
href="#"
|
||||||
className="inline-flex items-center gap-1 text-sm font-semibold tracking-wider text-red-600 uppercase transition-colors hover:text-red-500"
|
className="inline-flex items-center gap-1 text-sm font-semibold tracking-wider text-red-600 uppercase transition-colors hover:text-red-500"
|
||||||
>
|
>
|
||||||
Read More
|
{t("home.blog.readMore")}
|
||||||
<ChevronRight className="h-4 w-4" />
|
<ChevronRight className="h-4 w-4" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
import { Phone } from "lucide-react";
|
import { Phone } from "lucide-react";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
|
||||||
export function Line() {
|
export function Line() {
|
||||||
|
const t = useTranslations();
|
||||||
return (
|
return (
|
||||||
<div className="bg-black py-10 px-4">
|
<div className="bg-black py-10 px-4">
|
||||||
<div className="max-w-280 w-full mx-auto relative py-10 flex items-center justify-between ">
|
<div className="max-w-280 w-full mx-auto relative py-10 flex items-center justify-between ">
|
||||||
<div className="text-white flex flex-col items-start justify-start gap-5 ">
|
<div className="text-white flex flex-col items-start justify-start gap-5 ">
|
||||||
<h2 className="lg:text-5xl sm:text-3xl text-2xl max-w-[80%] w-full font-semibold">
|
<h2 className="lg:text-5xl sm:text-3xl text-2xl max-w-[80%] w-full font-semibold">
|
||||||
Ready for Action 24/7: Contact Us at
|
{t("home.contactLine.text")}
|
||||||
</h2>
|
</h2>
|
||||||
<p className="flex items-center justify-center gap-4 font-semibold sm:text-xl text-lg">
|
<p className="flex items-center justify-center gap-4 font-semibold sm:text-xl text-lg">
|
||||||
<span
|
<span
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
import { ChevronRight } from "lucide-react";
|
import { ChevronRight } from "lucide-react";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
export function OurService() {
|
export function OurService() {
|
||||||
|
const t = useTranslations();
|
||||||
return (
|
return (
|
||||||
<div className="bg-[#1e1d1c] py-10 md:py-16 lg:py-20">
|
<div className="bg-[#1e1d1c] py-10 md:py-16 lg:py-20">
|
||||||
<div className="max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8">
|
<div className="max-w-7xl w-full mx-auto px-4 sm:px-6 lg:px-8">
|
||||||
@@ -11,14 +13,13 @@ export function OurService() {
|
|||||||
<div className="space-y-4 md:space-y-6">
|
<div className="space-y-4 md:space-y-6">
|
||||||
<div className="flex items-center justify-center gap-2 text-base sm:text-lg md:text-xl text-white font-bold">
|
<div className="flex items-center justify-center gap-2 text-base sm:text-lg md:text-xl text-white font-bold">
|
||||||
<DotAnimatsiya />
|
<DotAnimatsiya />
|
||||||
OUR SERVICES
|
{t("home.services.title")}
|
||||||
</div>
|
</div>
|
||||||
<h1 className="text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl tracking-wider lg:tracking-[5px] font-bold bg-linear-to-br from-white via-white to-gray-400 text-transparent bg-clip-text text-center w-full">
|
<h1 className="text-2xl sm:text-3xl md:text-4xl lg:text-5xl xl:text-6xl tracking-wider lg:tracking-[5px] font-bold bg-linear-to-br from-white via-white to-gray-400 text-transparent bg-clip-text text-center w-full">
|
||||||
FIREFIGHTER RESPONSIBILITIES
|
{t("home.services.subtitle")}
|
||||||
</h1>
|
</h1>
|
||||||
<p className="text-center text-sm sm:text-base md:text-lg text-gray-400 max-w-3xl mx-auto px-4">
|
<p className="text-center text-sm sm:text-base md:text-lg text-gray-400 max-w-3xl mx-auto px-4">
|
||||||
Aliquam lorem ante dapibus in viverra quis feugiat a tellus
|
{t("home.services.description")}
|
||||||
phasellus viverra nulla ut metus varius laoreet quisque rutrum.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -26,13 +27,13 @@ export function OurService() {
|
|||||||
<div className="max-w-250 w-full mx-auto flex sm:flex-row flex-col items-center gap-5 my-10">
|
<div className="max-w-250 w-full mx-auto flex sm:flex-row flex-col items-center gap-5 my-10">
|
||||||
<div className="relative space-y-4 py-6 px-8 rounded-xl sm:w-[55%] w-full bg-[linear-gradient(to_bottom_right,#000000,#000000,#000000,#d2610a)]">
|
<div className="relative space-y-4 py-6 px-8 rounded-xl sm:w-[55%] w-full bg-[linear-gradient(to_bottom_right,#000000,#000000,#000000,#d2610a)]">
|
||||||
<p className="font-bold bg-linear-to-br from-white via-white to-black text-transparent bg-clip-text">
|
<p className="font-bold bg-linear-to-br from-white via-white to-black text-transparent bg-clip-text">
|
||||||
Operation Force
|
{t("home.services.services.operation.title")}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-gray-400 max-w-80 w-full">
|
<p className="text-gray-400 max-w-80 w-full">
|
||||||
Aliquam lorem ante dapibus in viverra feugiat phasellus.
|
{t("home.services.services.operation.description")}
|
||||||
</p>
|
</p>
|
||||||
<button className="text-[#dc2626] font-semibold flex items-center gap-2 text-sm">
|
<button className="text-[#dc2626] font-semibold flex items-center gap-2 text-sm">
|
||||||
LEARN MORE <ChevronRight size={20} />
|
{t("home.services.learnmore")} <ChevronRight size={20} />
|
||||||
</button>
|
</button>
|
||||||
<Image
|
<Image
|
||||||
src="/images/home/gruop.png"
|
src="/images/home/gruop.png"
|
||||||
@@ -44,13 +45,13 @@ export function OurService() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="relative overflow-hidden space-y-4 py-6 px-8 rounded-xl sm:w-[45%] w-full bg-[linear-gradient(to_bottom_right,#000000,#000000,#000000,#d2610a)]">
|
<div className="relative overflow-hidden space-y-4 py-6 px-8 rounded-xl sm:w-[45%] w-full bg-[linear-gradient(to_bottom_right,#000000,#000000,#000000,#d2610a)]">
|
||||||
<p className="font-bold bg-linear-to-br from-white via-white to-black text-transparent bg-clip-text">
|
<p className="font-bold bg-linear-to-br from-white via-white to-black text-transparent bg-clip-text">
|
||||||
Operation Force
|
{t("home.services.services.suppression.title")}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-gray-400 max-w-70 w-full">
|
<p className="text-gray-400 max-w-70 w-full">
|
||||||
Aliquam lorem ante dapibus in viverra feugiat phasellus.
|
{t("home.services.services.suppression.description")}
|
||||||
</p>
|
</p>
|
||||||
<button className="text-[#dc2626] font-semibold flex items-center gap-2 text-sm">
|
<button className="text-[#dc2626] font-semibold flex items-center gap-2 text-sm">
|
||||||
LEARN MORE <ChevronRight size={20} />
|
{t("home.services.learnmore")} <ChevronRight size={20} />
|
||||||
</button>
|
</button>
|
||||||
<Image
|
<Image
|
||||||
src="/images/home/redShlang.png"
|
src="/images/home/redShlang.png"
|
||||||
@@ -73,26 +74,26 @@ export function OurService() {
|
|||||||
/>
|
/>
|
||||||
<div className="space-y-4 py-6 px-8">
|
<div className="space-y-4 py-6 px-8">
|
||||||
<p className="font-bold bg-linear-to-br from-white via-white to-black text-transparent bg-clip-text">
|
<p className="font-bold bg-linear-to-br from-white via-white to-black text-transparent bg-clip-text">
|
||||||
Operation Force
|
{t("home.services.services.safety.title")}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-gray-400 max-w-80 w-full">
|
<p className="text-gray-400 max-w-80 w-full">
|
||||||
Aliquam lorem ante dapibus in viverra feugiat phasellus.
|
{t("home.services.services.safety.description")}
|
||||||
</p>
|
</p>
|
||||||
<button className="text-[#dc2626] font-semibold flex items-center gap-2 text-sm">
|
<button className="text-[#dc2626] font-semibold flex items-center gap-2 text-sm">
|
||||||
LEARN MORE <ChevronRight size={20} />
|
{t("home.services.learnmore")} <ChevronRight size={20} />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="sm:w-[60%] w-full">
|
<div className="sm:w-[60%] w-full">
|
||||||
<div className="relative overflow-hidden space-y-4 py-6 px-8 rounded-xl w-full bg-[linear-gradient(to_bottom_right,#000000,#000000,#000000,#d2610a)]">
|
<div className="relative overflow-hidden space-y-4 py-6 px-8 rounded-xl w-full bg-[linear-gradient(to_bottom_right,#000000,#000000,#000000,#d2610a)]">
|
||||||
<p className="font-bold bg-linear-to-br from-white via-white to-black text-transparent bg-clip-text">
|
<p className="font-bold bg-linear-to-br from-white via-white to-black text-transparent bg-clip-text">
|
||||||
Operation Force
|
{t("home.services.services.monitoring.title")}
|
||||||
</p>
|
</p>
|
||||||
<p className="text-gray-400 max-w-70 w-full">
|
<p className="text-gray-400 max-w-70 w-full">
|
||||||
Aliquam lorem ante dapibus in viverra feugiat phasellus.
|
{t("home.services.services.monitoring.description")}
|
||||||
</p>
|
</p>
|
||||||
<button className="sm:mt-38 mt-0 text-[#dc2626] font-semibold flex items-center gap-2 text-sm">
|
<button className="sm:mt-38 mt-0 text-[#dc2626] font-semibold flex items-center gap-2 text-sm">
|
||||||
LEARN MORE <ChevronRight size={20} />
|
{t("home.services.learnmore")} <ChevronRight size={20} />
|
||||||
</button>
|
</button>
|
||||||
<Image
|
<Image
|
||||||
src="/images/home/balon.png"
|
src="/images/home/balon.png"
|
||||||
@@ -104,13 +105,13 @@ export function OurService() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="py-8 px-8 rounded-xl mt-5 w-full p-5 bg-[linear-gradient(to_top_right,#000000,#000000,#d2610a)] flex sm:flex-row flex-col gap-5 items-center justify-between">
|
<div className="py-8 px-8 rounded-xl mt-5 w-full p-5 bg-[linear-gradient(to_top_right,#000000,#000000,#d2610a)] flex sm:flex-row flex-col gap-5 items-center justify-between">
|
||||||
<h2 className="sm:text-3xl text-xl font-semibold font-armanai text-white">
|
<h2 className="sm:text-3xl text-xl font-semibold font-armanai text-white">
|
||||||
View more service
|
{t("home.services.viewMoreServices")}
|
||||||
</h2>
|
</h2>
|
||||||
<Link
|
<Link
|
||||||
href="/services"
|
href="/services"
|
||||||
className="shadow-[0px_0px_2px_6px_#a60404ad] bg-red-600 hover:bg-red-700 text-white font-bold sm:py-3 sm:px-8 px-8 py-2 rounded-full transition duration-300 transform hover:scale-105 w-fit"
|
className="shadow-[0px_0px_2px_6px_#a60404ad] bg-red-600 hover:bg-red-700 text-white font-bold sm:py-3 sm:px-8 px-8 py-2 rounded-full transition duration-300 transform hover:scale-105 w-fit"
|
||||||
>
|
>
|
||||||
GET STARTED
|
{t("home.services.viewMore")}
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,24 +1,27 @@
|
|||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function Statistics() {
|
export function Statistics() {
|
||||||
|
const t = useTranslations();
|
||||||
const stats = [
|
const stats = [
|
||||||
{
|
{
|
||||||
number: '25',
|
number: '25',
|
||||||
symbol: '+',
|
symbol: '+',
|
||||||
label: 'Years Experience',
|
label: t("home.statistics.experience"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
number: '450',
|
number: '450',
|
||||||
symbol: '+',
|
symbol: '+',
|
||||||
label: 'Families Saved',
|
label: t("home.statistics.projectsCompleted"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
number: '99',
|
number: '99',
|
||||||
symbol: '+',
|
symbol: '+',
|
||||||
label: 'Trained Staff',
|
label: t("home.statistics.trainedSpecialists"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
number: '93',
|
number: '93',
|
||||||
symbol: '%',
|
symbol: '%',
|
||||||
label: 'Trusted Clients',
|
label: t("home.statistics.trustedClients"),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -5,36 +5,7 @@ import { Autoplay } from "swiper/modules";
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import "swiper/css";
|
import "swiper/css";
|
||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
const testimonials = [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
quote:
|
|
||||||
"I've witnessed Fireforce in action multiple times, and they never cease to amaze me with their dedication and professionalism. They are the backbone of our safety and security. Thank you, Fireforce!",
|
|
||||||
name: "JOHN SMITH",
|
|
||||||
role: "Manager",
|
|
||||||
avatar: "/images/home/avatar.jpg",
|
|
||||||
rating: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
quote:
|
|
||||||
"The team's response time and expertise saved our property from a devastating fire. Their bravery and commitment to protecting our community is truly remarkable. Highly recommend their services!",
|
|
||||||
name: "SARAH JOHNSON",
|
|
||||||
role: "Business Owner",
|
|
||||||
avatar: "/images/home/avatar.jpg",
|
|
||||||
rating: 5,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
quote:
|
|
||||||
"Working alongside Fireforce has been an honor. Their training programs and emergency protocols are second to none. They set the standard for fire safety excellence in our region.",
|
|
||||||
name: "MICHAEL DAVIS",
|
|
||||||
role: "Safety Director",
|
|
||||||
avatar: "/images/home/avatar.jpg",
|
|
||||||
rating: 5,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
function StarRating({ rating }: { rating: number }) {
|
function StarRating({ rating }: { rating: number }) {
|
||||||
return (
|
return (
|
||||||
@@ -53,6 +24,33 @@ function StarRating({ rating }: { rating: number }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function Testimonial() {
|
export function Testimonial() {
|
||||||
|
const t = useTranslations();
|
||||||
|
const testimonials = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
quote:t("home.testimonials.clients.john.text"),
|
||||||
|
name: t("home.testimonials.clients.john.name"),
|
||||||
|
role: t("home.testimonials.clients.john.position"),
|
||||||
|
avatar: "/images/home/avatar.jpg",
|
||||||
|
rating: 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
quote:t("home.testimonials.clients.sarah.text"),
|
||||||
|
name: t("home.testimonials.clients.sarah.name"),
|
||||||
|
role: t("home.testimonials.clients.sarah.position"),
|
||||||
|
avatar: "/images/home/avatar.jpg",
|
||||||
|
rating: 5,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
quote:t("home.testimonials.clients.michael.text"),
|
||||||
|
name: t("home.testimonials.clients.michael.name"),
|
||||||
|
role: t("home.testimonials.clients.michael.position"),
|
||||||
|
avatar: "/images/home/avatar.jpg",
|
||||||
|
rating: 5,
|
||||||
|
},
|
||||||
|
];
|
||||||
return (
|
return (
|
||||||
<section className="w-full bg-[#1a1a1a]">
|
<section className="w-full bg-[#1a1a1a]">
|
||||||
<div className="flex flex-col lg:flex-row min-h-100 lg:min-h-125">
|
<div className="flex flex-col lg:flex-row min-h-100 lg:min-h-125">
|
||||||
@@ -88,7 +86,7 @@ export function Testimonial() {
|
|||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<DotAnimatsiya />
|
<DotAnimatsiya />
|
||||||
<span className="text-white font-semibold text-sm tracking-wider">
|
<span className="text-white font-semibold text-sm tracking-wider">
|
||||||
TESTIMONIALS
|
{t("home.testimonials.title")}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function ProductBanner() {
|
export function ProductBanner() {
|
||||||
|
const t = useTranslations();
|
||||||
return (
|
return (
|
||||||
<section className="relative w-full h-[60vh] min-h-100 overflow-hidden pt-10">
|
<section className="relative w-full h-[60vh] min-h-100 overflow-hidden pt-10">
|
||||||
{/* Background Image */}
|
{/* Background Image */}
|
||||||
@@ -24,17 +26,21 @@ export function ProductBanner() {
|
|||||||
<div className="max-w-250 w-full mx-auto px-4">
|
<div className="max-w-250 w-full mx-auto px-4">
|
||||||
<div className="relative z-20 h-full flex max-lg:flex-col items-start justify-between gap-5 pt-30">
|
<div className="relative z-20 h-full flex max-lg:flex-col items-start justify-between gap-5 pt-30">
|
||||||
<div className="spacw-y-4 ">
|
<div className="spacw-y-4 ">
|
||||||
<DotAnimatsiya />
|
<div className="flex items-center gap-2 w-fit">
|
||||||
|
<DotAnimatsiya />
|
||||||
|
<span className="text-sm font-semibold tracking-wide">
|
||||||
|
{t("products.banner.title")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<p
|
<p
|
||||||
className=" bg-linear-to-br from-white via-white to-black
|
className=" bg-linear-to-br from-white via-white to-black
|
||||||
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
||||||
>
|
>
|
||||||
Ignum technology <br /> At The Ready
|
{t("products.banner.subtitle")}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="lg:w-[40%] text-gray-300 lg:mt-20 md:mt-10 sm:mt-5 ">
|
<div className="lg:w-[40%] text-gray-300 lg:mt-20 md:mt-10 sm:mt-5 ">
|
||||||
It emphasizes that these firefighters are there not just as public
|
{t("products.banner.description")}
|
||||||
servants but as a vital part of the community.
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function ServiceBanner() {
|
export function ServiceBanner() {
|
||||||
|
const t = useTranslations();
|
||||||
return (
|
return (
|
||||||
<section className="relative w-full h-[60vh] min-h-100 overflow-hidden pt-10">
|
<section className="relative w-full h-[60vh] min-h-100 overflow-hidden pt-10">
|
||||||
{/* Background Image */}
|
{/* Background Image */}
|
||||||
@@ -24,17 +26,21 @@ export function ServiceBanner() {
|
|||||||
<div className="max-w-250 w-full mx-auto px-4">
|
<div className="max-w-250 w-full mx-auto px-4">
|
||||||
<div className="relative z-20 h-full flex max-lg:flex-col items-start justify-between gap-5 pt-30">
|
<div className="relative z-20 h-full flex max-lg:flex-col items-start justify-between gap-5 pt-30">
|
||||||
<div className="spacw-y-4 ">
|
<div className="spacw-y-4 ">
|
||||||
<DotAnimatsiya />
|
<div className="flex items-center gap-3">
|
||||||
|
<DotAnimatsiya />
|
||||||
|
<span className="text-sm text-white font-semibold tracking-wide">
|
||||||
|
{t("services.banner.title")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<p
|
<p
|
||||||
className=" bg-linear-to-br from-white via-white to-black
|
className=" bg-linear-to-br from-white via-white to-black
|
||||||
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
text-transparent bg-clip-text text-4xl sm:text-5xl lg:text-6xl font-bold leading-tight text-pretty"
|
||||||
>
|
>
|
||||||
GENERAL <br /> QUESTIONS
|
{t("services.banner.subtitle")}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="lg:w-[40%] text-gray-300 mt-10 text-lg">
|
<div className="lg:w-[40%] text-gray-300 mt-10 text-lg">
|
||||||
Always Ready, Always On Time: Rescuing Lives” represents an
|
{t("services.banner.description")}
|
||||||
unwavering commitment to emergency.
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,8 +1,36 @@
|
|||||||
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
|
||||||
import FAQAccordion from "../faq/faqAccardion";
|
import FAQAccordion from "../faq/faqAccardion";
|
||||||
import { faqItems } from "@/lib/demoData";
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
export function ServiceFaq() {
|
export function ServiceFaq() {
|
||||||
|
const t = useTranslations();
|
||||||
|
const faqItems = [
|
||||||
|
{
|
||||||
|
id: "faq-1",
|
||||||
|
question: t("faq.question1.question"),
|
||||||
|
answer: t("faq.question1.answer"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "faq-2",
|
||||||
|
question: t("faq.question2.question"),
|
||||||
|
answer: t("faq.question2.answer"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "faq-3",
|
||||||
|
question: t("faq.question3.question"),
|
||||||
|
answer: t("faq.question3.answer"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "faq-4",
|
||||||
|
question: t("faq.question4.question"),
|
||||||
|
answer: t("faq.question4.answer"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "faq-5",
|
||||||
|
question: t("faq.question5.question"),
|
||||||
|
answer: t("faq.question5.answer"),
|
||||||
|
},
|
||||||
|
];
|
||||||
return (
|
return (
|
||||||
<div className="bg-[#1e1d1c] py-20 pb-50 space-y-8">
|
<div className="bg-[#1e1d1c] py-20 pb-50 space-y-8">
|
||||||
{/* header */}
|
{/* header */}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
export const DATA = [
|
export const DATA = [
|
||||||
{
|
{
|
||||||
name: "P-0834405",
|
name: "P-0834405",
|
||||||
|
|||||||
@@ -158,28 +158,31 @@
|
|||||||
"subtitle": "General Questions",
|
"subtitle": "General Questions",
|
||||||
"topic": "ABOUT WORK"
|
"topic": "ABOUT WORK"
|
||||||
},
|
},
|
||||||
"questions": [
|
"question1": {
|
||||||
{
|
"question": "How to choose a fire alarm system?",
|
||||||
"question": "How to choose a fire alarm system?",
|
"answer": "Depending on the area, type and features of the facility, our specialists will offer you the most optimal solution. You can get a free consultation."
|
||||||
"answer": "Depending on the area, type and features of the facility, our specialists will offer you the most optimal solution. You can get a free consultation."
|
},
|
||||||
},
|
"question2": {
|
||||||
{
|
"question": "How long does equipment installation take?",
|
||||||
"question": "How long does equipment installation take?",
|
"answer": "Installation time depends on the project scope. Usually, 1-3 days for small facilities, 1-2 weeks for large facilities."
|
||||||
"answer": "Installation time depends on the project scope. Usually, 1-3 days for small facilities, 1-2 weeks for large facilities."
|
},
|
||||||
},
|
"question3": {
|
||||||
{
|
"question": "How is maintenance carried out?",
|
||||||
"question": "How is maintenance carried out?",
|
"answer": "We offer regular maintenance and 24/7 emergency service. Preventive inspections are conducted every six months."
|
||||||
"answer": "We offer regular maintenance and 24/7 emergency service. Preventive inspections are conducted every six months."
|
},
|
||||||
},
|
"question4": {
|
||||||
{
|
"question": "What is the warranty period?",
|
||||||
"question": "What is the warranty period?",
|
"answer": "All our equipment comes with a 2-year warranty and 10-year maintenance guarantee."
|
||||||
"answer": "All our equipment comes with a 2-year warranty and 10-year maintenance guarantee."
|
},
|
||||||
},
|
"question5": {
|
||||||
{
|
"question": "For which facilities are they suitable?",
|
||||||
"question": "For which facilities are they suitable?",
|
"answer": "We have suitable solutions for office buildings, warehouses, industrial plants, shopping malls, residential buildings and all types of public places."
|
||||||
"answer": "We have suitable solutions for office buildings, warehouses, industrial plants, shopping malls, residential buildings and all types of public places."
|
},
|
||||||
}
|
"ask": {
|
||||||
]
|
"question": "Do you still have questions?",
|
||||||
|
"subtitle": "Contact us and our specialists will answer you",
|
||||||
|
"btn": "Ask Question"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"services": {
|
"services": {
|
||||||
"banner": {
|
"banner": {
|
||||||
|
|||||||
@@ -158,28 +158,31 @@
|
|||||||
"subtitle": "Общие Вопросы",
|
"subtitle": "Общие Вопросы",
|
||||||
"topic": "О РАБОТЕ"
|
"topic": "О РАБОТЕ"
|
||||||
},
|
},
|
||||||
"questions": [
|
"question1": {
|
||||||
{
|
"question": "Как выбрать систему пожарной сигнализации?",
|
||||||
"question": "Как выбрать систему пожарной сигнализации?",
|
"answer": "В зависимости от площади, типа и особенностей объекта наши специалисты предложат вам наиболее оптимальное решение. Вы можете получить бесплатную консультацию."
|
||||||
"answer": "В зависимости от площади, типа и особенностей объекта наши специалисты предложат вам наиболее оптимальное решение. Вы можете получить бесплатную консультацию."
|
},
|
||||||
},
|
"question2": {
|
||||||
{
|
"question": "Сколько времени занимает установка оборудования?",
|
||||||
"question": "Сколько времени занимает установка оборудования?",
|
"answer": "Время установки зависит от объема проекта. Обычно для небольших объектов требуется 1-3 дня, для крупных объектов - 1-2 недели."
|
||||||
"answer": "Время установки зависит от объема проекта. Обычно для небольших объектов требуется 1-3 дня, для крупных объектов - 1-2 недели."
|
},
|
||||||
},
|
"question3": {
|
||||||
{
|
"question": "Как проводится техническое обслуживание?",
|
||||||
"question": "Как проводится техническое обслуживание?",
|
"answer": "Мы предлагаем регулярное техническое обслуживание и экстренную службу 24/7. Профилактические проверки проводятся каждые шесть месяцев."
|
||||||
"answer": "Мы предлагаем регулярное техническое обслуживание и экстренную службу 24/7. Профилактические проверки проводятся каждые шесть месяцев."
|
},
|
||||||
},
|
"question4": {
|
||||||
{
|
"question": "Какой срок гарантии?",
|
||||||
"question": "Какой срок гарантии?",
|
"answer": "На все наше оборудование предоставляется 2-летняя гарантия и 10-летняя гарантия на техническое обслуживание."
|
||||||
"answer": "На все наше оборудование предоставляется 2-летняя гарантия и 10-летняя гарантия на техническое обслуживание."
|
},
|
||||||
},
|
"question5": {
|
||||||
{
|
"question": "Для каких объектов подходят?",
|
||||||
"question": "Для каких объектов подходят?",
|
"answer": "У нас есть подходящие решения для офисных зданий, складов, промышленных предприятий, торговых центров, жилых зданий и всех видов общественных мест."
|
||||||
"answer": "У нас есть подходящие решения для офисных зданий, складов, промышленных предприятий, торговых центров, жилых зданий и всех видов общественных мест."
|
},
|
||||||
}
|
"ask": {
|
||||||
]
|
"question": "Остались вопросы?",
|
||||||
|
"subtitle": "Свяжитесь с нами, и наши специалисты ответят вам",
|
||||||
|
"btn": "Задать вопрос"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"services": {
|
"services": {
|
||||||
"banner": {
|
"banner": {
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"viewMoreServices": "Ko'proq Xizmatlar",
|
"viewMoreServices": "Ko'proq Xizmatlar",
|
||||||
"viewMore": "Ko'proq"
|
"viewMore": "Ko'proq ko'rish"
|
||||||
},
|
},
|
||||||
"testimonials": {
|
"testimonials": {
|
||||||
"title": "Mijozlar Fikrlari",
|
"title": "Mijozlar Fikrlari",
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
},
|
},
|
||||||
"blog": {
|
"blog": {
|
||||||
"title": "Blog & Maqolalar",
|
"title": "Blog & Maqolalar",
|
||||||
"subtitle": "SO'NGI BLOG & YANGILIKLAR",
|
"subtitle": "BLOG & SO'NGI YANGILIKLAR",
|
||||||
"articles": {
|
"articles": {
|
||||||
"article1": "YONG'IN HIMOYASI TIZIMLARI: QANDAY ISHLAYDI?",
|
"article1": "YONG'IN HIMOYASI TIZIMLARI: QANDAY ISHLAYDI?",
|
||||||
"article2": "YANGI TEXNOLOGIYALAR: AQLLI O'CHIRISH TIZIMLARI",
|
"article2": "YANGI TEXNOLOGIYALAR: AQLLI O'CHIRISH TIZIMLARI",
|
||||||
@@ -158,28 +158,31 @@
|
|||||||
"subtitle": "Umumiy Savollar",
|
"subtitle": "Umumiy Savollar",
|
||||||
"topic": "ISH HAQIDA"
|
"topic": "ISH HAQIDA"
|
||||||
},
|
},
|
||||||
"questions": [
|
"question1": {
|
||||||
{
|
"question": "Yong'in signalizatsiya tizimini qanday tanlash kerak?",
|
||||||
"question": "Yong'in signalizatsiya tizimini qanday tanlash kerak?",
|
"answer": "Ob'ektning maydoni, turi va xususiyatlariga qarab mutaxassislarimiz sizga eng optimal yechimni taklif qiladilar. Bepul konsultatsiya olishingiz mumkin."
|
||||||
"answer": "Ob'ektning maydoni, turi va xususiyatlariga qarab mutaxassislarimiz sizga eng optimal yechimni taklif qiladilar. Bepul konsultatsiya olishingiz mumkin."
|
},
|
||||||
},
|
"question2": {
|
||||||
{
|
"question": "Uskunalarni o'rnatish qancha vaqt oladi?",
|
||||||
"question": "Uskunalarni o'rnatish qancha vaqt oladi?",
|
"answer": "O'rnatish vaqti loyiha hajmiga bog'liq. Odatda, kichik ob'ektlar uchun 1-3 kun, yirik ob'ektlar uchun 1-2 hafta kerak bo'ladi."
|
||||||
"answer": "O'rnatish vaqti loyiha hajmiga bog'liq. Odatda, kichik ob'ektlar uchun 1-3 kun, yirik ob'ektlar uchun 1-2 hafta kerak bo'ladi."
|
},
|
||||||
},
|
"question3": {
|
||||||
{
|
"question": "Texnik xizmat ko'rsatish qanday amalga oshiriladi?",
|
||||||
"question": "Texnik xizmat ko'rsatish qanday amalga oshiriladi?",
|
"answer": "Biz muntazam texnik xizmat ko'rsatish va 24/7 favqulodda xizmatni taklif etamiz. Har olti oyda bir marta profilaktik tekshiruvlar o'tkaziladi."
|
||||||
"answer": "Biz muntazam texnik xizmat ko'rsatish va 24/7 favqulodda xizmatni taklif etamiz. Har olti oyda bir marta profilaktik tekshiruvlar o'tkaziladi."
|
},
|
||||||
},
|
"question4": {
|
||||||
{
|
"question": "Kafolatiy muddati qancha?",
|
||||||
"question": "Kafolatiy muddati qancha?",
|
"answer": "Barcha uskunalarimiz uchun 2 yillik kafolat va 10 yillik texnik xizmat ko'rsatish kafolati beriladi."
|
||||||
"answer": "Barcha uskunalarimiz uchun 2 yillik kafolat va 10 yillik texnik xizmat ko'rsatish kafolati beriladi."
|
},
|
||||||
},
|
"question5": {
|
||||||
{
|
"question": "Qanday ob'ektlar uchun mos?",
|
||||||
"question": "Qanday ob'ektlar uchun mos?",
|
"answer": "Ofis binalari, omborxonalar, sanoat korxonalari, savdo markazlari, turar-joy binolari va barcha turdagi jamoat joylari uchun mos yechimlarimiz mavjud."
|
||||||
"answer": "Ofis binalari, omborxonalar, sanoat korxonalari, savdo markazlari, turar-joy binolari va barcha turdagi jamoat joylari uchun mos yechimlarimiz mavjud."
|
},
|
||||||
}
|
"ask":{
|
||||||
]
|
"question":"Hali ham savolingiz bormi?",
|
||||||
|
"subtitle":"Bizga bo'glaning va bizni hodilarimiz sizga javob berishadi",
|
||||||
|
"btn":"Savollingizni yo'llang"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"services": {
|
"services": {
|
||||||
"banner": {
|
"banner": {
|
||||||
|
|||||||
Reference in New Issue
Block a user