file name and location updayed for better be

This commit is contained in:
nabijonovdavronbek619@gmail.com
2026-03-07 16:31:18 +05:00
parent b838025ab0
commit 809438735f
82 changed files with 87 additions and 470 deletions

View File

@@ -0,0 +1,93 @@
"use client";
import Link from "next/link";
import FAQAccordion, { FAQItem } from "./faqAccardion";
import { useTranslations } from "next-intl";
import { useQuery } from "@tanstack/react-query";
import httpClient from "@/request/api";
import { endPoints } from "@/request/links";
import { useEffect, useState } from "react";
export function Togle() {
const t = useTranslations();
const faqItems: FAQItem[] = [
{
id: 1,
question: t("faq.question1.question"),
answer: t("faq.question1.answer"),
},
{
id: 2,
question: t("faq.question2.question"),
answer: t("faq.question2.answer"),
},
{
id: 3,
question: t("faq.question3.question"),
answer: t("faq.question3.answer"),
},
{
id: 4,
question: t("faq.question4.question"),
answer: t("faq.question4.answer"),
},
{
id: 5,
question: t("faq.question5.question"),
answer: t("faq.question5.answer"),
},
];
const [faq, setFaq] = useState<any>(faqItems);
const { data } = useQuery({
queryKey: ["faq"],
queryFn: () => httpClient(endPoints.faq),
select: (data) => data?.data?.results,
});
useEffect(() => {
data && setFaq(data);
}, [data]);
return (
<div className="min-h-screen bg-[#1e1d1c]">
<main className="mx-auto max-w-7xl px-4 py-16 sm:px-6 lg:px-8">
{/* Header Section */}
<div className="mb-16 flex items-start justify-between gap-4 lg:gap-12">
<div className="flex items-center md:col-span-1">
<h1
className="font-unbounded uppercase bg-linear-to-br from-white via-white/50 to-black
text-transparent bg-clip-text text-3xl font-bold leading-tight sm:text-4xl md:text-5xl lg:text-6xl"
>
{t("faq.banner.topic")}
</h1>
</div>
{/* FAQ Section */}
<div className="max-w-250 w-full">
<FAQAccordion items={faq} />
</div>
</div>
{/* ASK QUESTION */}
<div className="space-y-8 w-full mt-10 ">
<h1
className="font-unbounded uppercase text-center bg-linear-to-br from-white via-white/50 to-black
text-transparent bg-clip-text text-3xl font-bold leading-tight sm:text-4xl md:text-5xl lg:text-6xl"
>
{t("faq.ask.question")}
</h1>
<p className="font-almarai text-center text-white/80 text-lg">
{t("faq.ask.subtitle")}
</p>
<div className="w-full flex items-center justify-center">
<Link
href={"/contact"}
className="font-almarai 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"
>
{t("faq.ask.btn")}
</Link>
</div>
</div>
</main>
</div>
);
}

View File

@@ -0,0 +1,46 @@
"use client";
import * as Accordion from "@radix-ui/react-accordion";
import { ChevronDown } from "lucide-react";
export interface FAQItem {
id: number;
question: string;
answer: string;
}
interface FAQAccordionProps {
items: FAQItem[];
}
export default function FAQAccordion({ items }: FAQAccordionProps) {
return (
<Accordion.Root type="single" collapsible className="w-full">
{items.map((item, index) => (
<Accordion.Item
key={item.id}
value={String(item.id)}
className="border-b border-slate-700 py-6"
>
<Accordion.Trigger className="group flex w-full items-center justify-between text-left">
<h3 className="font-almarai text-lg font-bold uppercase tracking-wide text-white transition-colors duration-300 group-hover:cursor-pointer md:text-xl">
{item.question}
</h3>
<div className="ml-4 shrink-0">
<ChevronDown
className="h-6 w-6 text-red-600 transition-transform duration-300 group-data-[state=open]:rotate-180"
aria-hidden="true"
/>
</div>
</Accordion.Trigger>
<Accordion.Content className="overflow-hidden pt-4 text-gray-400 animate-in fade-in slide-in-from-top-2 duration-300 data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=closed]:slide-out-to-top-2">
<p className="font-almarai leading-relaxed text-sm md:text-base">
{item.answer}
</p>
</Accordion.Content>
</Accordion.Item>
))}
</Accordion.Root>
);
}

46
pages/faq/faqBanner.tsx Normal file
View File

@@ -0,0 +1,46 @@
import DotAnimatsiya from "@/components/dot/DotAnimatsiya";
import { useTranslations } from "next-intl";
export function FaqBanner() {
const t = useTranslations();
return (
<section className="relative w-full h-[55vh] min-h-100 overflow-hidden pt-10">
{/* Background Image */}
<div
className="absolute inset-0 z-0"
style={{
backgroundImage: "url(/images/faqBanner.jpg)",
backgroundSize: "cover",
backgroundPosition: "center",
}}
/>
{/* Gradient Overlay - Bottom-left to top-right */}
<div
className="absolute inset-0 z-10"
style={{
background: `linear-gradient(to top right, #d2610a 0%, #1e1d1ce3 30%, #1e1d1ce3 100%)`,
}}
/>
<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="spacw-y-4 ">
<div className="flex items-center gap-3">
<DotAnimatsiya />
<span className="font-almarai text-sm text-white font-semibold tracking-wide">
{t("faq.banner.title")}
</span>
</div>
<p
className="font-unbounded uppercase 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"
>
{t("faq.banner.subtitle")}
</p>
</div>
</div>
</div>
</section>
);
}

2
pages/faq/index.ts Normal file
View File

@@ -0,0 +1,2 @@
export { FaqBanner } from "./faqBanner";
export { Togle } from "./answearQuestions";