diff --git a/Dockerfile.x b/Dockerfile.x
index 18c6a56..4a454a5 100644
--- a/Dockerfile.x
+++ b/Dockerfile.x
@@ -15,5 +15,5 @@ CMD ["node_modules/.bin/next", "start"]
-# docker build -f Dockerfile.x -t registry.vnfco.ir/netinashop/vesmeh:1.0.2.4 .
-# docker push registry.vnfco.ir/netinashop/vesmeh:1.0.2.4
\ No newline at end of file
+# docker build -f Dockerfile.x -t registry.vnfco.ir/netinashop/vesmeh:1.0.4.6 .
+# docker push registry.vnfco.ir/netinashop/vesmeh:1.0.4.6
\ No newline at end of file
diff --git a/components/AppsComponent/RootData/page.jsx b/components/AppsComponent/RootData/page.jsx
index 72a6742..3b669a0 100644
--- a/components/AppsComponent/RootData/page.jsx
+++ b/components/AppsComponent/RootData/page.jsx
@@ -57,6 +57,8 @@ const RootData = ({ children }) => {
const [cosmeticData, setCosmeticData] = useState([]);
const [HomeCosmeticData, setHomeCosmeticData] = useState([]);
const [sunCreamData, setSunCreamData] = useState([]);
+ const [eyeCosmeticData, setEyeCosmeticData] = useState([]);
+ const [hairCosmeticData, setHairCosmeticData] = useState([]);
const [isChecked, setIsChecked] = useState(false);
const [selectedBrands, setSelectedBrands] = useState([]);
@@ -454,6 +456,22 @@ const RootData = ({ children }) => {
setHomeCosmeticData(HomeCosmetic);
};
+ const fetchEyeCosmetic = async () => {
+ const res = await fetch(
+ `${process.env.NEXT_PUBLIC_API_URL}/product?page=0&categoryId=2e11e55c-0941-49f8-9d22-dfa21088f639`
+ );
+ const eyeCosmetic = await res.json();
+ setEyeCosmeticData(eyeCosmetic);
+ };
+
+ const fetchHairCosmetic = async () => {
+ const res = await fetch(
+ `${process.env.NEXT_PUBLIC_API_URL}/product?page=0&categoryId=3df995d4-6a36-4de2-9557-a5c3304529fe`
+ );
+ const hairCosmetic = await res.json();
+ setHairCosmeticData(hairCosmetic);
+ };
+
const fetchSunCream = async () => {
const res = await fetch(
`${process.env.NEXT_PUBLIC_API_URL}/product?page=0&categoryId=df80c111-087f-4b2d-bc32-c44d660e76f2`
@@ -541,6 +559,8 @@ const RootData = ({ children }) => {
HomeCosmeticData,
specialOfferData,
sunCreamData,
+ eyeCosmeticData,
+ hairCosmeticData,
},
setCart,
setProducts,
@@ -571,6 +591,7 @@ const RootData = ({ children }) => {
setCooperationSystemProfileContractData,
setCooperationSystemProfileData,
setIsSearched,
+ setEyeCosmeticData,
AddItemToCart,
RemoveItemFromCart,
fetchNavData,
@@ -589,10 +610,13 @@ const RootData = ({ children }) => {
setHomeCosmeticData,
setCosmeticData,
setSpecialOfferData,
+ setHairCosmeticData,
fetchHomeCosmetic,
fetchCosmetic,
fetchSpecialOffer,
fetchSunCream,
+ fetchEyeCosmetic,
+ fetchHairCosmetic,
}}
>
{children}
diff --git a/components/LandingPage/CategoriesHero/page.jsx b/components/LandingPage/CategoriesHero/page.jsx
new file mode 100644
index 0000000..38349da
--- /dev/null
+++ b/components/LandingPage/CategoriesHero/page.jsx
@@ -0,0 +1,167 @@
+import Image from "next/image";
+import Link from "next/link";
+import yek from "../../../public/images/1.png";
+import doo from "../../../public/images/2.png";
+import see from "../../../public/images/3.png";
+import chr from "../../../public/images/4.png";
+import png from "../../../public/images/5.png";
+import shs from "../../../public/images/6.png";
+import React from "react";
+
+const CategoriesHero = () => {
+ return (
+
+ );
+};
+
+export default CategoriesHero;
diff --git a/components/LandingPage/EyeSection/page.jsx b/components/LandingPage/EyeSection/page.jsx
new file mode 100644
index 0000000..ee02045
--- /dev/null
+++ b/components/LandingPage/EyeSection/page.jsx
@@ -0,0 +1,80 @@
+import CardNormal from "@comp/Cards/CardNormal/page";
+import Link from "next/link";
+import { Swiper, SwiperSlide } from "swiper/react";
+
+const EyeSection = ({ data }) => {
+ return (
+
+
+
+
+
+
+
+ آرایش چشم{" "}
+
+
+
+
console.log("slide change")}
+ className="rtl relative mt-5"
+ // dir="rtl"
+ breakpoints={{
+ 320: {
+ slidesPerView: 1.3,
+ },
+ 480: {
+ slidesPerView: 2,
+ },
+ 768: {
+ slidesPerView: 3,
+ },
+ 1024: {
+ slidesPerView: 4.5,
+ },
+ 1440: {
+ slidesPerView: 6,
+ },
+ }}
+ >
+ {data?.map((e, index) => (
+
+
+
+ ))}
+
+
+
+
+
+ مشاهده بیشتر{" "}
+
+
+
+
+
+ );
+};
+
+export default EyeSection;
diff --git a/components/LandingPage/HeroSection/page.jsx b/components/LandingPage/HeroSection/page.jsx
index 131d16c..e3ac521 100644
--- a/components/LandingPage/HeroSection/page.jsx
+++ b/components/LandingPage/HeroSection/page.jsx
@@ -1,175 +1,110 @@
+import { useState, useEffect } from "react";
import Image from "next/image";
+import ban1 from "@img/ban1.jpg";
+import ban2 from "@img/ban2.jpg";
+import ban3 from "@img/ban3.jpg";
+import ban1res from "@img/ban1res.jpg";
+import ban2res from "@img/ban2res.jpg";
+import ban3res from "@img/ban3res.jpg";
import Link from "next/link";
-import yek from "../../../public/images/1.png";
-import doo from "../../../public/images/2.png";
-import see from "../../../public/images/3.png";
-import chr from "../../../public/images/4.png";
-import png from "../../../public/images/5.png";
-import shs from "../../../public/images/6.png";
+
+const slides = [
+ {
+ id: 1,
+ image: ban1,
+ imageResponsive: ban1res,
+ title: "محصولات هیدرودرم",
+ description: "Slide 1 Description",
+ url: "/categories/0/%D9%87%D9%85%D9%87%20%D9%85%D8%AD%D8%B5%D9%88%D9%84%D8%A7%D8%AA?page=0&brandIds=677cfbc5-2aa0-42f2-90ec-69073058e76e",
+ },
+ {
+ id: 2,
+ image: ban2,
+ imageResponsive: ban2res,
+ title: "محصولات فولیکا",
+ description: "Slide 2 Description",
+ url: "/categories/0/%D9%87%D9%85%D9%87%20%D9%85%D8%AD%D8%B5%D9%88%D9%84%D8%A7%D8%AA?brandIds=30be42fe-633b-4c43-886b-c946a68dddcc&page=0",
+ },
+ {
+ id: 3,
+ image: ban3,
+ imageResponsive: ban3res,
+ title: "محصولات بیول",
+ description: "Slide 3 Description",
+ url: "/categories/0/%D9%87%D9%85%D9%87%20%D9%85%D8%AD%D8%B5%D9%88%D9%84%D8%A7%D8%AA?page=0&brandIds=93a2a376-5a18-49f3-b29c-a3c8ef2ff133",
+ },
+ // Add more slides as needed
+];
const HeroSection = () => {
+ const [currentIndex, setCurrentIndex] = useState(0);
+
+ useEffect(() => {
+ const interval = setInterval(() => {
+ setCurrentIndex((prevIndex) => (prevIndex + 1) % slides.length);
+ }, 8000); // 8 seconds interval
+
+ return () => clearInterval(interval);
+ }, []);
+
+ const goToSlide = (index) => {
+ setCurrentIndex(index);
+ };
+
return (
-
-
-
- وسمه ، بُن مضارع زیبایی
-
-
- زیبایی شما در اولویت ماست{" "}
-
-
-
-
-
-
- {" "}
-
-
+ <>
+
+
+ {slides.map((slide) => (
+
+
+
-
-
-
+
+
+
+
+ ))}
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {slides.map((e, index) => (
+
+ ))}
-
+ >
);
};
diff --git a/components/LandingPage/HomeSection/page.jsx b/components/LandingPage/HomeSection/page.jsx
index 138de26..a811399 100644
--- a/components/LandingPage/HomeSection/page.jsx
+++ b/components/LandingPage/HomeSection/page.jsx
@@ -15,7 +15,7 @@ const HomeSection = ({ data }) => {
@@ -23,7 +23,7 @@ const HomeSection = ({ data }) => {
- لوازم بهداشتی منزل وسمه
+ آرایش و مراقبت مو
diff --git a/components/LandingPage/SurpriseSection/page.jsx b/components/LandingPage/SurpriseSection/page.jsx
index 42e42b3..bd3f896 100644
--- a/components/LandingPage/SurpriseSection/page.jsx
+++ b/components/LandingPage/SurpriseSection/page.jsx
@@ -33,7 +33,7 @@ const SurpriseSection = ({ data }) => {
پیشنهاد های ویژه امروز{" "}
-
+ {/*
*/}
= 10"
}
},
+ "node_modules/@next/third-parties": {
+ "version": "14.2.5",
+ "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.5.tgz",
+ "integrity": "sha512-PDRJm8RZ3rnGNporHKjcdCeZqoW8iJ5uP0clo1Z08TqJiQzuntJ66zrGYCJyqTakx62UJNOp73YsQCFo6kbYYg==",
+ "dependencies": {
+ "third-party-capital": "1.0.20"
+ },
+ "peerDependencies": {
+ "next": "^13.0.0 || ^14.0.0",
+ "react": "^18.2.0"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -870,11 +883,17 @@
"integrity": "sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==",
"dev": true
},
+ "node_modules/@swc/counter": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
+ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
+ },
"node_modules/@swc/helpers": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
- "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz",
+ "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==",
"dependencies": {
+ "@swc/counter": "^0.1.3",
"tslib": "^2.4.0"
}
},
@@ -1523,9 +1542,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001570",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
- "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==",
+ "version": "1.0.30001642",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz",
+ "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==",
"funding": [
{
"type": "opencollective",
@@ -2819,11 +2838,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
- },
"node_modules/globals": {
"version": "13.24.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
@@ -3812,18 +3826,17 @@
"dev": true
},
"node_modules/next": {
- "version": "14.0.4",
- "resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz",
- "integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==",
+ "version": "14.2.5",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz",
+ "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==",
"dependencies": {
- "@next/env": "14.0.4",
- "@swc/helpers": "0.5.2",
+ "@next/env": "14.2.5",
+ "@swc/helpers": "0.5.5",
"busboy": "1.6.0",
- "caniuse-lite": "^1.0.30001406",
+ "caniuse-lite": "^1.0.30001579",
"graceful-fs": "^4.2.11",
"postcss": "8.4.31",
- "styled-jsx": "5.1.1",
- "watchpack": "2.4.0"
+ "styled-jsx": "5.1.1"
},
"bin": {
"next": "dist/bin/next"
@@ -3832,18 +3845,19 @@
"node": ">=18.17.0"
},
"optionalDependencies": {
- "@next/swc-darwin-arm64": "14.0.4",
- "@next/swc-darwin-x64": "14.0.4",
- "@next/swc-linux-arm64-gnu": "14.0.4",
- "@next/swc-linux-arm64-musl": "14.0.4",
- "@next/swc-linux-x64-gnu": "14.0.4",
- "@next/swc-linux-x64-musl": "14.0.4",
- "@next/swc-win32-arm64-msvc": "14.0.4",
- "@next/swc-win32-ia32-msvc": "14.0.4",
- "@next/swc-win32-x64-msvc": "14.0.4"
+ "@next/swc-darwin-arm64": "14.2.5",
+ "@next/swc-darwin-x64": "14.2.5",
+ "@next/swc-linux-arm64-gnu": "14.2.5",
+ "@next/swc-linux-arm64-musl": "14.2.5",
+ "@next/swc-linux-x64-gnu": "14.2.5",
+ "@next/swc-linux-x64-musl": "14.2.5",
+ "@next/swc-win32-arm64-msvc": "14.2.5",
+ "@next/swc-win32-ia32-msvc": "14.2.5",
+ "@next/swc-win32-x64-msvc": "14.2.5"
},
"peerDependencies": {
"@opentelemetry/api": "^1.1.0",
+ "@playwright/test": "^1.41.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sass": "^1.3.0"
@@ -3852,6 +3866,9 @@
"@opentelemetry/api": {
"optional": true
},
+ "@playwright/test": {
+ "optional": true
+ },
"sass": {
"optional": true
}
@@ -4649,30 +4666,6 @@
}
}
},
- "node_modules/react-spring-bottom-sheet/node_modules/react-dom": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
- "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
- "peer": true,
- "dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1",
- "scheduler": "^0.20.2"
- },
- "peerDependencies": {
- "react": "17.0.2"
- }
- },
- "node_modules/react-spring-bottom-sheet/node_modules/scheduler": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
- "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
- "peer": true,
- "dependencies": {
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.1"
- }
- },
"node_modules/react-toastify": {
"version": "9.1.3",
"resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.3.tgz",
@@ -5411,6 +5404,11 @@
"node": ">=0.8"
}
},
+ "node_modules/third-party-capital": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/third-party-capital/-/third-party-capital-1.0.20.tgz",
+ "integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA=="
+ },
"node_modules/throttle-debounce": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
@@ -5571,20 +5569,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/typescript": {
- "version": "5.4.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
- "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
- "dev": true,
- "peer": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
"node_modules/unbox-primitive": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
@@ -5684,18 +5668,6 @@
"loose-envify": "^1.0.0"
}
},
- "node_modules/watchpack": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
- "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
- "dependencies": {
- "glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.1.2"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
"node_modules/wcwidth": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
diff --git a/package.json b/package.json
index 9203dc3..de62835 100644
--- a/package.json
+++ b/package.json
@@ -10,11 +10,12 @@
},
"dependencies": {
"@headlessui/react": "^1.7.17",
+ "@next/third-parties": "^14.2.5",
"axios": "^1.6.5",
"framer-motion": "^10.16.16",
"jalali-moment": "^3.3.11",
"lodash": "^4.17.21",
- "next": "14.0.4",
+ "next": "^14.2.5",
"nextjs-toploader": "^1.6.6",
"rc-slider": "^10.5.0",
"react": "^18",
diff --git a/public/images/ban1.jpg b/public/images/ban1.jpg
new file mode 100644
index 0000000..1e19235
Binary files /dev/null and b/public/images/ban1.jpg differ
diff --git a/public/images/ban1res.jpg b/public/images/ban1res.jpg
new file mode 100644
index 0000000..871933c
Binary files /dev/null and b/public/images/ban1res.jpg differ
diff --git a/public/images/ban2.jpg b/public/images/ban2.jpg
new file mode 100644
index 0000000..6ba36d9
Binary files /dev/null and b/public/images/ban2.jpg differ
diff --git a/public/images/ban2res.jpg b/public/images/ban2res.jpg
new file mode 100644
index 0000000..e231209
Binary files /dev/null and b/public/images/ban2res.jpg differ
diff --git a/public/images/ban3.jpg b/public/images/ban3.jpg
new file mode 100644
index 0000000..5de08c0
Binary files /dev/null and b/public/images/ban3.jpg differ
diff --git a/public/images/ban3res.jpg b/public/images/ban3res.jpg
new file mode 100644
index 0000000..373bae7
Binary files /dev/null and b/public/images/ban3res.jpg differ
diff --git a/public/images/khane.jpg b/public/images/khane.jpg
index 99566b8..5de0927 100644
Binary files a/public/images/khane.jpg and b/public/images/khane.jpg differ
diff --git a/src/app/layout.jsx b/src/app/layout.jsx
index a0f8abb..ff9ee48 100644
--- a/src/app/layout.jsx
+++ b/src/app/layout.jsx
@@ -1,4 +1,6 @@
import RootData from "@comp/AppsComponent/RootData/page";
+import { GoogleAnalytics } from "@next/third-parties/google";
+import { Suspense } from "react";
export const metadata = {
icons: {
@@ -86,7 +88,10 @@ export default function RootLayout({ children }) {
/>
- {children}
+
+
+ {children}
+