"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import type { LucideIcon } from "lucide-react"; import { MapPin, MessageSquareMore, Phone, Plus, Send } from "lucide-react"; import { Fragment } from "react"; import { Controller, useForm } from "react-hook-form"; import z from "zod"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; import { AspectRatio } from "@/components/ui/aspect-ratio"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardTitle } from "@/components/ui/card"; import { Field, FieldError } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { useMediaQuery } from "@/hooks/useMediaQuery"; import { cn } from "@/lib/utils"; type NewsletterData = { title?: string; description?: string; }; type InfoItem = { text: string; title: string; link?: string; icon: LucideIcon; }; type FooterLink = { text: string; link?: string; }; type SocialIcon = { title: string; light: string; dark: string; }; type SocialLink = { link: string; icon: SocialIcon; }; type FooterLinksSection = { title: string; id: string; items: FooterLink[]; }; type FooterDetailsType = { image: { src: string; alt: string; }; homeLink: { logo: { light: string; dark: string; }; link: string; }; title: string; description: string; }; type NewsletterFormProps = NewsletterData; interface EcommerceFooter19Props { newsletter: NewsletterData; infoSectionList: InfoItem[]; footerLinks: FooterLinksSection[]; footerDetails: FooterDetailsType; paymentMethods: string[]; socialLinks: SocialLink[]; submenuLinks: { text: string; link: string; }[]; className?: string; } interface FooterLinksSectionProps { sections: FooterLinksSection[]; } interface SocialMediaSectionProps { links: SocialLink[]; } const NEWSLETTER_DATA: NewsletterData = { title: "خبرنامه", description: "در خبرنامه ما عضو شوید و نکات مراقبت از پوست، روتین‌های پوستی، پیشنهادهای ویژه و دسترسی زودهنگام به جدیدترین محصولات زیبایی باخبر شوید.", }; const INFO_SECTION_DATA: InfoItem[] = [ { title: "پشتیبانی مشتریان", text: "شنبه تا پنج‌شنبه، ۹ صبح تا ۷ شب", icon: MessageSquareMore, }, { title: "با ما تماس بگیرید", text: "+1 855-987-4420 (رایگان)", link: "tel:+18559874420", icon: Phone, }, { title: "به ما ایمیل بزنید", text: "support@lumiskin.co", link: "mailto:support@lumiskin.co", icon: Send, }, { title: "آدرس", text: "خیابان گلستان، پلاک ۱۲۵، واحد ۲۱۰، تهران", icon: MapPin, }, ]; const FOOTER_LINKS: FooterLinksSection[] = [ { title: "فروشگاه", id: "shop", items: [ { text: "محصولات جدید", link: "#", }, { text: "پرفروش‌ترین‌ها", link: "#", }, { text: "روتین پوست", link: "#", }, { text: "هدیه و ست‌ها", link: "#", }, ], }, { title: "پشتیبانی", id: "support", items: [ { text: "تماس با ما", link: "#", }, { text: "سؤالات متداول", link: "#", }, { text: "پیگیری سفارش", link: "#", }, { text: "مرجوعی و تعویض", link: "#", }, ], }, { title: "درباره ما", id: "about", items: [ { text: "درباره ما", link: "#", }, { text: "مواد تشکیل‌دهنده", link: "#", }, { text: "پایداری", link: "#", }, { text: "مطبوعات", link: "#", }, ], }, ]; const FOOTER_DETAILS = { image: { src: "/block-media/shadcnblocks/block/ecommerce/promotional/Luxurious-Cosmetic-Display-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 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 SUBMENU = [ { text: "سیاست ارسال", link: "#", }, { text: "سیاست مرجوعی", link: "#", }, { text: "شرایط استفاده", link: "#", }, { text: "حریم خصوصی", link: "#", }, ]; const EcommerceFooter19 = ({ newsletter = NEWSLETTER_DATA, infoSectionList = INFO_SECTION_DATA, footerLinks = FOOTER_LINKS, footerDetails = FOOTER_DETAILS, paymentMethods = PAYMENT_METHODS, socialLinks = SOCIAL_MEDIA_LINKS, submenuLinks = SUBMENU, className, }: EcommerceFooter19Props) => { return (
{footerDetails.image.alt}
لوگو لوگو

{footerDetails.description}

© ۲۲۶ ساخته‌شده با ❤️ توسط ری یو آی

); }; const newsletterFormSchema = z.object({ email: z .string() .min(1, "ایمیل الزامی است") .email("آدرس ایمیل نامعتبر است"), }); type newsletterFormType = z.infer; const NewsletterSection = ({ title, description }: NewsletterFormProps) => { const form = useForm({ resolver: zodResolver(newsletterFormSchema), defaultValues: { email: "", }, }); const onSubmit = (data: newsletterFormType) => { console.log(data); }; return (

{title}

{description}

( {fieldState.invalid && ( )} )} />

با عضویت، با{" "} شرایط استفاده {" "} و{" "} حریم خصوصی {" "} موافقت می‌کنید.

); }; const InfoSection = ({ list }: { list: InfoItem[] }) => { if (!list) return; return (
{list.map(({ icon: Icon, title, link, text }) => (
{title} {link ? ( {text} ) : (

{text}

)}
))}
); }; const FooterLinksSection = ({ sections }: FooterLinksSectionProps) => { const isDesktop = useMediaQuery("(min-width: 1024px)"); if (!sections) return; const allAccordionIds = sections.map(({ id }) => id); 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 ( ); }; const SocialMediaSection = ({ links }: SocialMediaSectionProps) => { return ( ); }; const FooterSubMenu = ({ links }: { links: FooterLink[] }) => { return ( ); }; export { EcommerceFooter19 };