Initial commit: Safeteb Next.js website.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-08-14 13:33:09 +03:30
co-authored by Cursor
commit 424e339986
188 changed files with 31563 additions and 0 deletions
+76
View File
@@ -0,0 +1,76 @@
import { aboutText } from "@/data/home";
export default function AboutSection() {
return (
<div className="wb-frame" id="about-section">
<section
id="about"
className="testimonial-area testimonial-default-area rtl position-relative"
style={{ backgroundImage: "url(/images/sections/about-banner.jpg)" }}
>
<div className="container-xxl">
<div className="row">
<div className="col-lg-6 order-force-2">
<div className="section-title stitle-style2">
<h2
className="title mb-0"
style={{ letterSpacing: 0, fontWeight: 300, fontSize: "40px", color: "rgb(0, 0, 0)" }}
>
درباره سیف طب
</h2>
<p
className="mb-0"
style={{
letterSpacing: "5px",
fontWeight: 100,
fontSize: "10px",
fontFamily: "montserrat",
color: "rgb(193, 193, 193)",
}}
>
ABOUT US
</p>
</div>
<div className="testimonial-content">
<div className="testimonial-slider-content">
<div className="testimonial-slider-container">
<div className="testimonial-slider">
<div className="testimonial-single">
<div className="client-content">
<p
style={{
letterSpacing: "0px",
fontWeight: 200,
textAlign: "justify",
fontFamily: "iran-sans",
fontSize: "15px",
color: "#2c2c2c",
}}
dangerouslySetInnerHTML={{ __html: aboutText }}
/>
</div>
<a className="btn-theme" href="/about">
<span style={{ fontWeight: 0 }}>مشاهده بیشتر</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div className="col-lg-6 order-force-1">
<div className="bg-img text-center">
<img
className="mt-5 mr-5"
style={{ height: "450px" }}
alt="درباره سیف طب"
src="/images/sections/about-bg.png"
/>
</div>
</div>
</div>
</div>
</section>
</div>
);
}
+74
View File
@@ -0,0 +1,74 @@
import { articles } from "@/data/home";
export default function ArticlesSection() {
return (
<div className="wb-frame" id="article">
<section id="articles" className="blog-area blog-default-area" style={{ backgroundColor: "#FFFFFF" }}>
<div className="container">
<div className="row mb-4 align-items-center">
<div className="col-6 text-right">
<div className="section-title text-center">
<h2
className="title mb-0"
style={{
fontWeight: 200,
direction: "ltr",
textAlign: "right",
fontSize: "25px",
letterSpacing: "0px",
}}
>
مقاله ها
</h2>
<div className="desc">
<p
style={{
fontWeight: 0,
letterSpacing: "5px",
textAlign: "justify",
fontSize: "10px",
fontFamily: "montserrat",
color: "#C1C1C1",
}}
>
ARTICLES
</p>
</div>
</div>
</div>
<div className="col-6 text-start">
<a className="btn-theme" href="#articles">
<span style={{ fontWeight: 0 }}>مشاهده بیشتر</span>
</a>
</div>
</div>
<div className="row pt-2 pb-2">
{articles.map((article) => (
<div key={article.id} className="col-6 col-md-3">
<div className="post-item mb-md-30">
<div className="thumb">
<a href="#">
<img src={article.image} alt={article.title} />
</a>
</div>
<div className="content">
<h3 className="title">
<a href="#">{article.title}</a>
</h3>
<p className="post-abstract">{article.excerpt}</p>
<div className="meta">
<div className="post-date">
<i className="WMi-calendar-1" />
<span>{article.date}</span>
</div>
</div>
</div>
</div>
</div>
))}
</div>
</div>
</section>
</div>
);
}
+48
View File
@@ -0,0 +1,48 @@
"use client";
import { FormEvent, useState } from "react";
import { contactPage } from "@/data/pages";
export default function ContactForm() {
const [sent, setSent] = useState(false);
function onSubmit(event: FormEvent<HTMLFormElement>) {
event.preventDefault();
setSent(true);
}
return (
<form className="contact-form-wrapper" onSubmit={onSubmit}>
<div className="section-title mb-4">
<h2 className="title mb-1" style={{ fontSize: "25px", fontWeight: 300, color: "#16171b" }}>
{contactPage.formTitle}
</h2>
<p className="mb-0" style={{ letterSpacing: "5px", fontSize: "10px", color: "#c1c1c1", fontFamily: "montserrat" }}>
{contactPage.formTitleEn}
</p>
</div>
<div className="row">
<div className="col-md-6 mb-3">
<input className="form-control" type="text" name="name" placeholder="نام" required />
</div>
<div className="col-md-6 mb-3">
<input className="form-control" type="email" name="email" placeholder="ایمیل" required />
</div>
<div className="col-md-12 mb-3">
<input className="form-control" type="text" name="title" placeholder="موضوع" required />
</div>
<div className="col-md-12 mb-3">
<textarea className="form-control" name="message" rows={5} placeholder="متن پیام" required />
</div>
<div className="col-md-12">
<button className="btn-theme" type="submit">
<span>ارسال پیام</span>
</button>
{sent ? <p className="contact-form-success mt-3 mb-0">پیام شما با موفقیت ثبت شد.</p> : null}
</div>
</div>
</form>
);
}
+143
View File
@@ -0,0 +1,143 @@
import Link from "next/link";
import { footerDescription, footerLinks, phoneNumber } from "@/data/home";
export default function Footer() {
return (
<footer className="wb-footer">
<div className="wb-frame" id="footer">
<footer
id="contact"
className="footer-area pt-md-5 default-style bg-img"
style={{ backgroundImage: "url(/images/footer/footer-bg.jpg)" }}
>
<div className="footer-main">
<div className="container">
<div className="row">
<div className="col-md-6 col-lg-6">
<div className="widget-item mb-sm-30">
<div className="about-widget">
<h1 style={{ letterSpacing: "0px", fontWeight: 0, color: "#FFFFFF", fontSize: "20px" }}>
سیف طب
</h1>
<p
style={{ fontWeight: 0, textAlign: "justify", letterSpacing: "0px" }}
dangerouslySetInnerHTML={{ __html: footerDescription }}
/>
<div className="widget-social-icons">
<a href="https://www.instagram.com/safetebcom" title="اینستاگرام">
<i style={{ lineHeight: 0, fontSize: "16px" }} className="WMi-instagram-2" />
</a>
<a href="tel:02188430531" title="تماس">
<i style={{ lineHeight: 0, fontSize: "16px" }} className="WMi-phone" />
</a>
</div>
</div>
</div>
</div>
<div className="col-6 col-md-3 col-lg-2">
<div className="widget-item pr-20 pl-sm-0 mb-sm-30 mb-xs-40">
<h3 style={{ fontWeight: 0, letterSpacing: "0px", color: "#FFFFFF", fontSize: "20px" }}>
پیوند ها
</h3>
<nav className="widget-menu-wrap">
<ul className="nav-menu nav">
{footerLinks.map((link) => (
<li key={link.label}>
<Link href={link.href}>
<span style={{ fontWeight: 0, letterSpacing: "0" }}>{link.label}</span>
</Link>
</li>
))}
</ul>
</nav>
</div>
</div>
<div className="col-6 col-md-3 col-lg-2">
<div className="widget-item mb-xs-50">
<h3 style={{ fontWeight: 0, letterSpacing: "0px", fontSize: "20px", color: "#FFFFFF" }}>
راه های ارتباطی
</h3>
<div className="widget-contact-info">
<div className="contact-info-item">
<div className="icon-box">
<img alt="تلفن فروشگاه" src="/images/footer/phone-icon.png" />
</div>
<div className="content">
<h3 className="title" style={{ fontWeight: 0 }}>
تلفن تماس:
</h3>
<a href="tel:02188430531">
<p
style={{
fontWeight: 0,
letterSpacing: "0px",
textAlign: "right",
fontFamily: "iran-sans",
}}
>
{phoneNumber}
</p>
</a>
</div>
</div>
</div>
</div>
</div>
<div className="col-6 col-md-3 col-lg-2">
<a
referrerPolicy="origin"
target="_blank"
rel="noreferrer"
href="https://trustseal.enamad.ir/?id=301851&Code=dttwt9yz2JqjfXlEjIb6"
>
<img
referrerPolicy="origin"
src="/images/footer/enamad.png"
alt="نماد اعتماد"
style={{ cursor: "pointer" }}
/>
</a>
</div>
</div>
</div>
</div>
<div className="footer-bottom">
<div className="container">
<div className="footer-bottom-content">
<div className="footer-bottom-bar">
<div className="footer-bottom-site">سیف طب</div>
<a
href="https://meshkee.com"
target="_blank"
rel="noopener noreferrer"
dir="ltr"
className="meshkee-credit"
>
<span className="meshkee-credit__frame" aria-hidden>
<span className="meshkee-credit__line meshkee-credit__line--l" />
<span className="meshkee-credit__line meshkee-credit__line--t" />
<span className="meshkee-credit__line meshkee-credit__line--r" />
<span className="meshkee-credit__line meshkee-credit__line--b" />
</span>
<img
src="/images/footer/MeshkeeLogo-White.png"
alt="Meshkee"
className="meshkee-credit__logo"
width={42}
height={42}
/>
<span className="meshkee-credit__text">
<span className="meshkee-credit__label">Designed And Developed By</span>
<span className="meshkee-credit__name">Meshkee E-Commerce Team</span>
</span>
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
</footer>
);
}
+124
View File
@@ -0,0 +1,124 @@
import Link from "next/link";
import { navLinks } from "@/data/home";
type SubMenuItem = {
label: string;
href: string;
submenu?: { label: string; href: string }[];
};
export default function Header() {
return (
<header className="wb-header">
<div className="wb-frame" id="header">
<header className="header-area header-default header-style sticky-header">
<div className="container">
<div className="header-bar">
<div className="header-logo-area">
<Link href="/" title="سیف طب">
<img
className="logo-main"
alt="سیف طب"
src="/images/hero/banner-main.png"
/>
</Link>
</div>
<div className="header-navigation-area d-none d-xl-block">
<ul className="main-menu nav position-relative">
{navLinks.map((link) => {
const item = link as {
label: string;
href: string;
submenu?: SubMenuItem[];
};
if (item.submenu?.length) {
return (
<li key={item.label} className="has-submenu">
<Link href={item.href}>
{item.label}
<i className="WMi-angle-down" />
</Link>
<ul className="submenu-nav">
{item.submenu.map((sub) =>
sub.submenu?.length ? (
<li key={sub.label} className="has-submenu">
<Link href={sub.href} className="d-flex justify-content-between">
{sub.label}
<i className="WMi-angle-left" />
</Link>
<ul className="submenu-nav">
{sub.submenu.map((nested) => (
<li key={nested.label}>
<Link href={nested.href}>{nested.label}</Link>
</li>
))}
</ul>
</li>
) : (
<li key={sub.label}>
<Link href={sub.href} className="d-flex justify-content-between">
{sub.label}
<i />
</Link>
</li>
),
)}
</ul>
</li>
);
}
return (
<li key={item.label}>
<Link href={item.href}>{item.label}</Link>
</li>
);
})}
</ul>
</div>
<div className="header-action-area">
<button type="button" className="btn-menu d-xl-none">
<i className="fa fa-bars" />
</button>
<div className="header-action-cart">
<a className="btn-cart cart-icon" href="#">
<span className="cart-count">0</span>
<i className="WMi-shop-bag-2" />
</a>
</div>
<div className="d-none d-lg-block">
<a className="d-inline-flex color-black align-items-center" href="#">
<i className="WMi-user-linear btn-cart" />
</a>
</div>
</div>
</div>
</div>
</header>
<aside className="off-canvas-wrapper">
<div className="off-canvas-inner">
<div className="off-canvas-overlay d-none" />
<div className="off-canvas-content">
<div className="off-canvas-header">
<div className="close-action">
<button type="button" className="btn-close">
<i className="pe-7s-close" />
</button>
</div>
</div>
<div className="off-canvas-item">
<div className="res-mobile-menu" />
</div>
<div className="off-canvas-footer" />
</div>
</div>
</aside>
</div>
</header>
);
}
+128
View File
@@ -0,0 +1,128 @@
import { quickLinks } from "@/data/home";
export default function HeroSection() {
return (
<>
<div className="wb-frame" id="slider">
<section className="home-slider-area slider-default mb-2">
<div className="home-slider-content">
<div className="swiper home-slider-container">
<div className="swiper-wrapper">
<div className="swiper-slide">
<div className="home-slider-item">
<a href="#">
<div
className="bg-thumb bg-img"
style={{ backgroundImage: "url(/images/sections/hero-bg.jpg)" }}
/>
<div className="slider-content-area" />
</a>
</div>
</div>
</div>
<div className="swiper-btn-wrap">
<div className="swiper-btn-prev">
<i className="fa fa-angle-left" style={{ lineHeight: 0 }} />
</div>
<div className="swiper-btn-next">
<i className="fa fa-angle-right" style={{ lineHeight: 0 }} />
</div>
</div>
</div>
</div>
</section>
</div>
<div className="wb-frame" id="search">
<section className="wrapper direction-auto search-section py-sm-4 overflow-visible position-relative">
<div className="container">
<div className="row mt-md-n70p mb-0" style={{ position: "relative", zIndex: 2 }}>
<div className="col-xl-10 mx-auto">
<div className="card image-wrapper bg-full bg-overlay bg-overlay-400 radius-15">
<div className="card-body p-0">
<form className="search-form d-inline-flex align-items-center" action="#">
<button
className="button-search btn btn-outline-info radius-15 lh-1"
type="submit"
>
<i className="WMi-search-1" />
</button>
<input
className="form-control"
type="text"
placeholder="نام محصول مورد نظر را وارد کنید ..."
/>
</form>
<p className="mb-0 noitem" style={{ display: "none" }}>
چنین آیتم در فروشگاه وجود ندارد
</p>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
<div className="wb-frame" id="section5">
<section className="features-area py-lg-5 py-2" style={{ zIndex: 1, position: "relative" }}>
<div className="container-xxl">
<div className="row">
{quickLinks.map((link) => (
<div key={link.id} className="col-lg-3 col-md-6 col-12 mb-sm-20 mb-md-4">
<div className="d-flex align-items-start">
<div>
<img alt={link.title} src={link.image} />
</div>
<div className="mr-10">
<a href={link.href} title={link.title}>
<p
className="mb-0"
style={{ letterSpacing: "0px", fontWeight: 600, color: "#16171B" }}
>
{link.title}
</p>
</a>
<p
className="mb-0"
style={{
letterSpacing: "5px",
fontWeight: 200,
fontSize: "10px",
fontFamily: "montserrat",
color: "#C1C1C1",
}}
>
{link.subtitle}
</p>
</div>
</div>
</div>
))}
</div>
</div>
</section>
</div>
<div className="wb-frame" id="infoitems_1">
<section className="classical-workout-area">
<div className="container-xxl">
<div className="row align-items-stretch">
<div className="col-lg-6 col-md-6 col-12 mb-3 mb-md-0">
<a href="#online-program" className="d-block h-100 promo-banner">
<img width="100%" alt="" src="/images/sections/online-program.png" />
</a>
</div>
<div className="col-lg-6 col-md-6 col-12">
<a href="#products" className="d-block h-100 promo-banner">
<img width="100%" alt="" src="/images/sections/online-program-mobile.png" />
</a>
</div>
</div>
</div>
</section>
</div>
</>
);
}
+88
View File
@@ -0,0 +1,88 @@
"use client";
import Script from "next/script";
import { useEffect, useRef } from "react";
declare global {
interface Window {
Swiper?: new (
element: string | HTMLElement,
options?: Record<string, unknown>,
) => {
destroy: (deleteInstance?: boolean, cleanStyles?: boolean) => void;
};
}
}
function initSwipers() {
const Swiper = window.Swiper;
if (!Swiper) return [];
const instances: Array<{ destroy: (deleteInstance?: boolean, cleanStyles?: boolean) => void }> = [];
document.querySelectorAll<HTMLElement>(".home-slider-container").forEach((element) => {
instances.push(
new Swiper(element, {
slidesPerView: 1,
loop: true,
spaceBetween: 0,
effect: "fade",
fadeEffect: { crossFade: true },
autoplay: { delay: 2000, disableOnInteraction: true },
navigation: {
nextEl: ".home-slider-container .swiper-btn-next",
prevEl: ".home-slider-container .swiper-btn-prev",
},
}),
);
});
document.querySelectorAll<HTMLElement>(".gallery-slider-container").forEach((element) => {
instances.push(
new Swiper(element, {
loop: true,
spaceBetween: 30,
autoplay: { delay: 20000, disableOnInteraction: true },
navigation: {
nextEl: element.parentElement?.querySelector(".swiper-btn-next"),
prevEl: element.parentElement?.querySelector(".swiper-btn-prev"),
},
breakpoints: {
1200: { slidesPerView: 4 },
992: { slidesPerView: 3 },
768: { slidesPerView: 3 },
576: { slidesPerView: 2, spaceBetween: 15 },
0: { slidesPerView: 2, spaceBetween: 15 },
},
}),
);
});
return instances;
}
export default function HomeSwipers() {
const instancesRef = useRef<Array<{ destroy: (deleteInstance?: boolean, cleanStyles?: boolean) => void }>>([]);
useEffect(() => {
if (window.Swiper) {
instancesRef.current = initSwipers();
}
return () => {
instancesRef.current.forEach((instance) => instance.destroy(true, true));
instancesRef.current = [];
};
}, []);
return (
<Script
src="/theme/js/swiper.min.js"
strategy="afterInteractive"
onLoad={() => {
instancesRef.current.forEach((instance) => instance.destroy(true, true));
instancesRef.current = initSwipers();
}}
/>
);
}
+101
View File
@@ -0,0 +1,101 @@
import { medicinalPlantsText } from "@/data/home";
export default function MedicinalPlantsSection() {
return (
<>
<div className="wb-frame" id="medicinal-plants">
<section
className="testimonial-area testimonial-default-area rtl position-relative"
style={{ backgroundColor: "#f5f5f5" }}
>
<div className="container-xxl">
<div className="row">
<div className="col-lg-6 order-force-2">
<div className="section-title stitle-style2">
<h2
className="title mb-0"
style={{
letterSpacing: "0px",
fontWeight: 300,
fontSize: "40px",
color: "#252525",
}}
>
گیاهان دارویی مخصوص ورزشکاران
</h2>
<p
className="mb-0"
style={{
letterSpacing: "5px",
fontWeight: 100,
fontSize: "10px",
fontFamily: "montserrat",
color: "#C1C1C1",
}}
>
MEDICINAL PLANTS
</p>
</div>
<div className="testimonial-content">
<div className="testimonial-slider-content">
<div className="testimonial-slider-container">
<div className="testimonial-slider">
<div className="testimonial-single">
<div className="client-content">
<p
style={{
letterSpacing: 0,
fontWeight: 200,
fontSize: "15px",
fontFamily: "iran-sans",
textAlign: "justify",
color: "#2c2c2c",
}}
dangerouslySetInnerHTML={{ __html: medicinalPlantsText }}
/>
</div>
<a className="btn-theme" href="#">
<span style={{ letterSpacing: "0px", fontWeight: 0 }}>مشاهده بیشتر</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div className="col-lg-6 order-force-1">
<div className="bg-img text-center">
<img
className="mt-5 mr-5"
style={{ height: "450px" }}
alt="گیاهان دارویی"
src="/images/sections/medicinal-plants.png"
/>
</div>
</div>
</div>
</div>
</section>
</div>
<div className="wb-frame" id="section1">
<section className="classical-workout-area">
<div className="container-xxl">
<div className="row">
<div className="col-lg-6 col-md-6">
<a href="#products" title="لوازم ورزشی">
<img width="100%" alt="لوازم ورزشی" src="/images/sections/medicinal-plants-bg.png" />
</a>
</div>
<div className="col-lg-6 col-md-6">
<a href="#products" title="لوازم ورزشی">
<img width="100%" alt="لوازم ورزشی" src="/images/sections/about.png" />
</a>
</div>
</div>
</div>
</section>
</div>
</>
);
}
+75
View File
@@ -0,0 +1,75 @@
import { onlineProgramText } from "@/data/home";
export default function OnlineProgramSection() {
return (
<div className="wb-frame" id="section2">
<section
id="online-program"
className="testimonial-area testimonial-default-area rtl position-relative"
style={{ backgroundColor: "#FFFFFF" }}
>
<div className="container-xxl">
<div className="row">
<div className="col-lg-6 order-force-2">
<div className="section-title stitle-style2">
<h2
className="title mb-0"
style={{ letterSpacing: 0, fontWeight: 300, fontSize: "40px" }}
>
گوشیتو مربیت کن!
</h2>
<p
className="mb-0"
style={{
letterSpacing: "5px",
fontWeight: 100,
fontFamily: "montserrat",
color: "#C1C1C1",
fontSize: "10px",
}}
>
ONLINE PROGRAM
</p>
</div>
<div className="testimonial-content">
<div className="testimonial-slider-content">
<div className="testimonial-slider-container">
<div className="testimonial-slider">
<div className="testimonial-single">
<div className="client-content">
<p
style={{
letterSpacing: "0px",
fontWeight: 200,
fontSize: "15px",
textAlign: "justify",
color: "#2c2c2c",
}}
dangerouslySetInnerHTML={{ __html: onlineProgramText }}
/>
</div>
<a className="btn-theme" href="#online-program">
<span style={{ letterSpacing: "0px", fontWeight: 0 }}>مشاهده بیشتر</span>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div className="col-lg-6 order-force-1">
<div className="bg-img text-center">
<img
className="mr-5"
style={{ height: "450px" }}
alt="برنامه آنلاین"
src="/images/sections/rehab-equipment.png"
/>
</div>
</div>
</div>
</div>
</section>
</div>
);
}
+35
View File
@@ -0,0 +1,35 @@
import Link from "next/link";
type Crumb = {
label: string;
href?: string;
};
type PageHeroProps = {
title: string;
titleEn: string;
breadcrumb: Crumb[];
};
export default function PageHero({ title, titleEn, breadcrumb }: PageHeroProps) {
return (
<section className="page-title-area page-hero">
<div className="container">
<div className="page-title-content text-center">
<h1 className="title mb-1">{title}</h1>
<p className="page-hero-en mb-3">{titleEn}</p>
<nav className="page-breadcrumb" aria-label="breadcrumb">
<ol>
{breadcrumb.map((item, index) => (
<li key={`${item.label}-${index}`}>
{item.href ? <Link href={item.href}>{item.label}</Link> : <span>{item.label}</span>}
{index < breadcrumb.length - 1 ? <span className="sep">/</span> : null}
</li>
))}
</ol>
</nav>
</div>
</div>
</section>
);
}
+119
View File
@@ -0,0 +1,119 @@
import { products } from "@/data/home";
function ProductStars() {
return (
<div className="stars">
<i className="fa fa-star" />
<i className="fa fa-star" />
<i className="fa fa-star" />
<i className="fa fa-star" />
<i className="fa fa-star-o" />
</div>
);
}
export default function ProductsSection() {
return (
<>
<div className="wb-frame" id="product_last">
<section
id="products"
className="product-area product-grid-area"
style={{ backgroundColor: "#f5f5f5" }}
>
<div className="container-xxl position-relative">
<div className="row align-items-center rtl">
<div className="col-7 col-lg-6 text-right">
<div className="section-title text-center">
<h2
className="title mb-1"
style={{
letterSpacing: 0,
fontWeight: 300,
textAlign: "right",
direction: "ltr",
fontSize: "25px",
color: "#252525",
}}
>
جدیدترین محصولات
</h2>
<div className="desc">
<p
style={{
letterSpacing: "5px",
fontWeight: 100,
textAlign: "justify",
fontSize: "10px",
fontFamily: "montserrat",
color: "#C1C1C1",
}}
>
LASTES PRODUCTS
</p>
</div>
</div>
</div>
<div className="col-5 col-lg-6 text-start">
<a className="btn-theme" href="#products">
<span style={{ letterSpacing: "0px", fontWeight: 0 }}>مشاهده بیشتر</span>
</a>
</div>
</div>
<div className="row">
<div className="overflow-hidden position-relative-responsive py-3">
<div className="swiper gallery-slider-container">
<div className="swiper-wrapper">
{products.map((product) => (
<div key={product.id} className="swiper-slide">
<div className="product-item">
<div className="product-thumb">
<a href="#">
<img src={product.image} alt={product.title} />
</a>
<div className="product-action">
<a className="btn-theme" title={product.contactOnly ? "تماس با فروشگاه" : "افزودن به سبد خرید"} href="#">
{product.contactOnly ? "تماس با فروشگاه" : "افزودن به سبد خرید"}
</a>
</div>
</div>
<div className="product-info">
<h3 className="title mb-0">
<a href="#">{product.title}</a>
</h3>
<ProductStars />
<div className="prices">
{product.contactOnly ? (
<div className="mt-auto">
<span className="callus">تماس بگیرید</span>
</div>
) : (
<div className="mt-auto">
<span className="price">{product.price}</span>
<span className="toman">تومان</span>
</div>
)}
</div>
</div>
</div>
</div>
))}
</div>
<div className="swiper-btn-wrap">
<div className="swiper-btn-prev">
<i className="fa fa-angle-left" style={{ lineHeight: 0 }} />
</div>
<div className="swiper-btn-next">
<i className="fa fa-angle-right" style={{ lineHeight: 0 }} />
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</>
);
}
+66
View File
@@ -0,0 +1,66 @@
import { serviceCards } from "@/data/home";
export default function ServicesSection() {
return (
<div className="wb-frame" id="section">
<section className="features-area py-lg-5 py-2">
<div className="container-xxl">
<div className="row">
<div className="col-12">
<div className="featured-columns-wrap">
<div
className="featured-items-style2 bg-img"
style={{ backgroundImage: "url(/images/sections/products-banner.png)" }}
>
<div className="row row-gutter-0">
{serviceCards.map((card) => (
<div key={card.id} className="col-md-6">
<div className="featured-item">
<div className="featured-icon">
<img alt={card.title} src={card.image} />
</div>
<div className="featured-info">
<a href={card.href} title={card.title}>
<h2
style={{
letterSpacing: "0px",
fontWeight: 600,
fontFamily: "iran-sans",
fontSize: "20px",
color: "#000000",
}}
>
{card.title}
</h2>
<p
style={{
letterSpacing: "5px",
fontWeight: 100,
color: "#C1C1C1",
fontFamily: "montserrat",
fontSize: "10px",
}}
>
{card.subtitle}
</p>
</a>
</div>
</div>
</div>
))}
</div>
</div>
<div className="featured-discount-item">
<div
className="thumb"
style={{ backgroundImage: "url(/images/sections/category-bg.png)" }}
/>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
);
}
+28
View File
@@ -0,0 +1,28 @@
export default function ThemeStyles() {
const theme = "/theme/css";
const cdn = "https://cdn.meshkee.com";
const styles = [
`${cdn}/web-builder/global/main-color-image.min.css`,
`${cdn}/web-builder/fonts/montserrat/montserrat.css`,
`${cdn}/web-builder/fonts/iran-sans/iran-sans.css`,
`${theme}/bootstrap.min.css`,
`${theme}/font-awesome.min.css`,
`${theme}/fontello.css`,
`${theme}/pe-icon-7-stroke.min.css`,
`${theme}/animate.css`,
`${theme}/aos.css`,
`${theme}/swiper.min.css`,
`${theme}/slick.css`,
`${theme}/style.css`,
`${theme}/rtl.css`,
];
return (
<>
{styles.map((href) => (
<link key={href} rel="stylesheet" href={href} />
))}
</>
);
}
+91
View File
@@ -0,0 +1,91 @@
import { videos } from "@/data/home";
export default function VideosSection() {
return (
<>
<div className="wb-frame" id="video-carousel">
<section
id="videos"
className="product-area product-grid-area"
style={{ backgroundColor: "#FFFFFF" }}
>
<div className="container-xxl position-relative">
<div className="row align-items-center rtl">
<div className="col-6 text-right">
<div className="section-title text-center">
<h2
className="title mb-1"
style={{
letterSpacing: "0px",
fontWeight: 200,
fontSize: "25px",
textAlign: "right",
direction: "rtl",
color: "#252525",
}}
>
آخرین ویدیو ها
</h2>
<div className="desc">
<p
style={{
letterSpacing: 5,
fontWeight: 0,
color: "rgb(193, 193, 193)",
fontSize: "10px",
textAlign: "justify",
}}
>
LATEST VIDEO
</p>
</div>
</div>
</div>
<div className="col-6 text-start">
<a className="btn-theme" href="#videos">
<span style={{ letterSpacing: "0px", fontWeight: 0 }}>مشاهده بیشتر</span>
</a>
</div>
</div>
<div className="row">
<div className="overflow-hidden position-relative-responsive py-3">
<div className="swiper gallery-slider-container">
<div className="swiper-wrapper">
{videos.map((video) => (
<div key={video.id} className="swiper-slide">
<div className="video-wrapper">
<a href="#">
<div className="img">
<img src={video.image} alt={video.title} height="auto" width="auto" />
</div>
</a>
<div className="video-info rtl">
<h4 className="title">
<a href="#" className="mb-0 mt-1 text-extra-dark-gray">
{video.title}
</a>
</h4>
<span className="date d-block">{video.date}</span>
</div>
</div>
</div>
))}
</div>
<div className="swiper-btn-wrap">
<div className="swiper-btn-prev">
<i className="fa fa-angle-left" style={{ lineHeight: 0 }} />
</div>
<div className="swiper-btn-next">
<i className="fa fa-angle-right" style={{ lineHeight: 0 }} />
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</>
);
}