faq , statistics , gallary parts connected to backend
This commit is contained in:
@@ -1,37 +1,53 @@
|
||||
"use client";
|
||||
import Link from "next/link";
|
||||
import FAQAccordion from "./faqAccardion";
|
||||
import { faqItems } from "@/lib/demoData";
|
||||
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 = [
|
||||
{
|
||||
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"),
|
||||
},
|
||||
];
|
||||
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">
|
||||
@@ -48,7 +64,7 @@ export function Togle() {
|
||||
|
||||
{/* FAQ Section */}
|
||||
<div className="max-w-250 w-full">
|
||||
<FAQAccordion items={faqItems} />
|
||||
<FAQAccordion items={faq} />
|
||||
</div>
|
||||
</div>
|
||||
{/* ASK QUESTION */}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
'use client';
|
||||
"use client";
|
||||
|
||||
import * as Accordion from '@radix-ui/react-accordion';
|
||||
import { ChevronDown } from 'lucide-react';
|
||||
import * as Accordion from "@radix-ui/react-accordion";
|
||||
import { ChevronDown } from "lucide-react";
|
||||
|
||||
interface FAQItem {
|
||||
id: string;
|
||||
export interface FAQItem {
|
||||
id: number;
|
||||
question: string;
|
||||
answer: string;
|
||||
}
|
||||
@@ -17,7 +17,11 @@ 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={item.id} className="border-b border-slate-700 py-6">
|
||||
<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}
|
||||
@@ -31,7 +35,9 @@ export default function FAQAccordion({ items }: FAQAccordionProps) {
|
||||
</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>
|
||||
<p className="font-almarai leading-relaxed text-sm md:text-base">
|
||||
{item.answer}
|
||||
</p>
|
||||
</Accordion.Content>
|
||||
</Accordion.Item>
|
||||
))}
|
||||
|
||||
Reference in New Issue
Block a user