"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { ArrowRight, Plus } from "lucide-react"; import { Fragment, useState } from "react"; import { Controller, useForm } from "react-hook-form"; import z from "zod"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; import { Button } from "@/components/ui/button"; import { Field, FieldError } from "@/components/ui/field"; import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, } from "@/components/ui/input-group"; import { Separator } from "@/components/ui/separator"; import { useMediaQuery } from "@/hooks/useMediaQuery"; import { cn } from "@/lib/utils"; type NewsletterData = { title?: string; }; type NewsletterFormProps = NewsletterData; type SocialIcon = { title: string; light: string; dark: string; }; type SocialLink = { link: string; icon: SocialIcon; }; type FooterLink = { text: string; link?: string; }; type FooterLinksSection = { title: string; id: string; items: FooterLink[]; }; interface SocialMediaSectionProps { links: SocialLink[]; } interface FooterLinksSectionProps { sections: FooterLinksSection[]; } interface EcommerceFooter20Props { newsletter: NewsletterData; socialLinks: SocialLink[]; footerLinks: FooterLinksSection[]; paymentMethods: string[]; submenuLinks: { text: string; link: string; }[]; footerData: { image: { src: string; alt: string; }; homeLink: { logo: { light: string; dark: string; }; link: string; }; title: string; description: string; }; className?: string; } const NEWSLETTER_DATA = { title: "از پیشنهادها و محصولات جدید باخبر شوید و ۲۰٪ تخفیف برای اولین سفارش دریافت کنید", }; const SOCIAL_ICONS = { facebook: { title: "Facebook", light: "/block-media/shadcnblocks/block/logos/facebook-icon.svg", dark: "/block-media/shadcnblocks/block/logos/facebook-icon.svg", }, x: { title: "X", light: "/block-media/shadcnblocks/block/logos/x.svg", dark: "/block-media/shadcnblocks/block/logos/x.svg", }, instagram: { title: "Instagram", light: "/block-media/shadcnblocks/block/logos/instagram-icon.svg", dark: "/block-media/shadcnblocks/block/logos/instagram-icon.svg", }, }; const SOCIAL_MEDIA_LINKS = [ { icon: SOCIAL_ICONS.facebook, link: "#", }, { icon: SOCIAL_ICONS.x, link: "#", }, { icon: SOCIAL_ICONS.instagram, link: "#", }, ]; const FOOTER_LINKS: FooterLinksSection[] = [ { title: "مجموعهها", id: "collections", items: [ { text: "تازهها", link: "#", }, { text: "پرفروشترینها", link: "#", }, { text: "پیشنهادهای فصلی", link: "#", }, { text: "محصولات ضروری", link: "#", }, ], }, { title: "راهنما", id: "help", items: [ { text: "تماس با ما", link: "#", }, { text: "سؤالات متداول", link: "#", }, { text: "ارسال و پیگیری", link: "#", }, { text: "مرجوعی و تعویض", link: "#", }, ], }, { title: "اطلاعات", id: "information", items: [ { text: "شرایط و ضوابط", link: "#", }, { text: "حریم خصوصی", link: "#", }, { text: "سیاست ضمانت", link: "#", }, { text: "شرایط استفاده", link: "#", }, ], }, ]; const SUBMENU = [ { text: "سیاست ارسال", link: "#", }, { text: "سیاست مرجوعی", link: "#", }, { text: "شرایط استفاده", link: "#", }, { text: "حریم خصوصی", link: "#", }, { text: "پایداری", link: "#", }, ]; const FOOTER_DATA = { image: { src: "/block-media/shadcnblocks/block/ecommerce/clothes/Modern-Portrait-of-a-Woman-and-Man-2.png", alt: "پرتره مدرن زن و مرد", }, homeLink: { logo: { light: "/block-media/shadcnblocks/block/logos/ShadcnBlockscom-wordmark.svg", dark: "/block-media/shadcnblocks/block/logos/ShadcnBlockscom-wordmark-white.svg", }, link: "#", }, title: "جایی که مد روز با راحتی پیوند میخورد", description: "لباسهایی طراحی میکنیم که به زنان کمک میکند با جزئیات دقیق، برشهای مناسب و پایههای باکیفیت، شخصیت خود را بیان کنند.", }; const PAYMENT_METHODS = [ "/block-media/shadcnblocks/block/ecommerce/payment-methods/amazonpay.svg", "/block-media/shadcnblocks/block/ecommerce/payment-methods/applepay.svg", "/block-media/shadcnblocks/block/ecommerce/payment-methods/mastercard.svg", "/block-media/shadcnblocks/block/ecommerce/payment-methods/paypal.svg", "/block-media/shadcnblocks/block/ecommerce/payment-methods/visa.svg", "/block-media/shadcnblocks/block/ecommerce/payment-methods/discover.svg", ]; const EcommerceFooter20 = ({ newsletter = NEWSLETTER_DATA, socialLinks = SOCIAL_MEDIA_LINKS, footerLinks = FOOTER_LINKS, paymentMethods = PAYMENT_METHODS, submenuLinks = SUBMENU, footerData = FOOTER_DATA, className, }: EcommerceFooter20Props) => { return ( ); }; const newsletterFormSchema = z.object({ email: z .string() .min(1, "ایمیل الزامی است") .email("آدرس ایمیل نامعتبر است"), }); type newsletterFormType = z.infer; const NewsletterSection = ({ title }: NewsletterFormProps) => { const form = useForm({ resolver: zodResolver(newsletterFormSchema), defaultValues: { email: "", }, }); const onSubmit = (data: newsletterFormType) => { console.log(data); }; return ( {title} ( {fieldState.invalid && } )} /> ); }; const SocialMediaSection = ({ links }: SocialMediaSectionProps) => { return ( {links.map(({ icon, link }) => ( ))} ); }; const FooterLinksSection = ({ sections }: FooterLinksSectionProps) => { const isDesktop = useMediaQuery("(min-width: 1024px)"); const [value, setValue] = useState(""); if (!sections) return; const allAccordionIds = sections.map(({ id }) => id); const handleOnValueChange = (value: string) => { setValue(value); }; if (isDesktop) { return ( ); } else { return ( ); } }; const AccordionItems = ({ sections }: { sections: FooterLinksSection[] }) => { return ( {sections.map(({ id, title, items }) => ( {title} {items.map(({ link, text }) => ( {text} ))} ))} ); }; const PaymentMethods = ({ cards }: { cards: string[] }) => { return ( {cards.map((card) => ( ))} ); }; const FooterSubMenu = ({ links }: { links: FooterLink[] }) => { return ( {links.map(({ link, text }) => ( {text} ))} ); }; export { EcommerceFooter20 };