diff --git a/.env b/.env index a71ca81..adde5c2 100644 --- a/.env +++ b/.env @@ -2,6 +2,7 @@ NODE_ENV="development" NEXT_PUBLIC_SERVER_URL=http://192.168.88.17:32770 NEXT_PUBLIC_PUBLIC_URL=http://192.168.88.17:32770 NEXT_PUBLIC_API_URL=http://192.168.88.17:32770/api +NEXT_PUBLIC_STORAGE_URL=http://storage.vesmook.com NEXT_PUBLIC_PACKAGE_VERSION=0.1.1 @@ -15,9 +16,12 @@ NEXT_PUBLIC_PACKAGE_VERSION=0.1.1 -# NEXT_PUBLIC_SERVER_URL=https://apinetinashop.visabartar.com -# NEXT_PUBLIC_PUBLIC_URL=https://apinetinashop.visabartar.com -# NEXT_PUBLIC_API_URL=https://apinetinashop.visabartar.com/api +# NEXT_PUBLIC_SERVER_URL=https://api.vesmook.com +# NEXT_PUBLIC_PUBLIC_URL=https://api.vesmook.com +# NEXT_PUBLIC_API_URL=https://api.vesmook.com/api +# NEXT_PUBLIC_STORAGE_URL=http://storage.vesmook.com +# NEXT_PUBLIC_PACKAGE_VERSION=0.1.1 + # NEXT_PUBLIC_API_URL_IMAGE=https://api.macsonline.ir/Files/ReportImages # NEXT_PUBLIC_API_URL_BackUp=https://api.macsonline.ir/Files/BackUps \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8f30e65 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} diff --git a/components/Cards/CardCart/page.jsx b/components/Cards/CardCart/page.jsx index f1d5875..b6b42bc 100644 --- a/components/Cards/CardCart/page.jsx +++ b/components/Cards/CardCart/page.jsx @@ -2,87 +2,58 @@ import Image from "next/image"; import PersianNumber from "plugins/PersianNumber"; import React, { useContext } from "react"; -import p1 from "../../../public/images/product/1.png"; +import logo from "../../../public/images/logo.png"; import p2 from "../../../public/images/product/2.png"; import AppContext from "@ctx/AppContext"; +import AddToCart from "../Components/AddToCart/page"; const CardCart = ({ data }) => { const CTX = useContext(AppContext); - console.log("data", data); - return ( -
+
- + {!!data.mainImage ? ( + + ) : ( +
+ +
+ )}

{data?.persianName}

- {data?.hasDiscount && ( -

- {" "} - 3 عدد موجود انبار -

- )}
-
- {/*{cart.find(e=>id)}*/} - {data?.count < 0 ? ( -
-
CTX.AddItemToCart(data.id, data.persianName)} - > - - - -
-
- ) : ( -
-
CTX.AddItemToCart(data.id)} - > -

+

-
-

- -

-
CTX.RemoveItemFromCart(data.id)} - > -

-

-
-
- )} -
+
{data?.hasDiscount ? (

- +

{" "}

- +

تومان
@@ -91,7 +62,7 @@ const CardCart = ({ data }) => {
{" "}

- +

تومان
diff --git a/components/Cards/CardCategories/page.jsx b/components/Cards/CardCategories/page.jsx index 251a139..89f69be 100644 --- a/components/Cards/CardCategories/page.jsx +++ b/components/Cards/CardCategories/page.jsx @@ -3,16 +3,17 @@ import Image from "next/image"; import PersianNumber from "plugins/PersianNumber"; import React, { useContext, useState } from "react"; -import p1 from "../../../public/images/product/1.png"; +import logo from "../../../public/images/logo.png"; import AppContext from "@ctx/AppContext"; import Link from "next/link"; +import AddToCart from "../Components/AddToCart/page"; const CardCategories = ({ data }) => { const CTX = useContext(AppContext); const cart = CTX.state.cart; return ( -
+
<>
{ // onClick={() => handleRoutineShiftPlanWithDay(index)} > {data.hasDiscount && ( -
-
-
-

- - % -

-
-
{" "} +
+
+

+ + % +

+
)} {data.hasDiscount && (
-
-
+
+

اصالت کالا

{" "}
)} -
- +
+ {!!data.mainImage ? ( + + ) : ( +
+ +
+ )}

{data.persianName}{" "}

- {data.hasDiscount && ( + + {data.stock <= 3 && (

{" "} - 3 عدد موجود انبار + {data.stock}عدد موجود انبار

)}
@@ -65,66 +79,26 @@ const CardCategories = ({ data }) => {
-
- {/*{cart.find(e=>id)}*/} - {!cart.find((item) => item.id === data.id) ? ( -
-
- CTX.AddItemToCart(data.id, data.persianName, data.cost) - } - > - - - -
-
- ) : ( -
-
- CTX.AddItemToCart(data.id, data.persianName, data.cost) - } - > -

+

-
-

- item.id === data.id).count} - /> -

-
CTX.RemoveItemFromCart(data.id)} - > -

-

-
-
- )} +
+
- {data.hasDiscount ? ( + {data?.hasDiscount ? (

- +

{" "}

- +

تومان
@@ -133,7 +107,7 @@ const CardCategories = ({ data }) => {
{" "}

- +

تومان
diff --git a/components/Cards/CardCategoriesMobile/page.jsx b/components/Cards/CardCategoriesMobile/page.jsx index a5596e7..7af8bd3 100644 --- a/components/Cards/CardCategoriesMobile/page.jsx +++ b/components/Cards/CardCategoriesMobile/page.jsx @@ -3,94 +3,73 @@ import Image from "next/image"; import PersianNumber from "plugins/PersianNumber"; import React, { useContext, useState } from "react"; -import p1 from "../../../public/images/product/1.png"; +import logo from "../../../public/images/logo.png"; import AppContext from "@ctx/AppContext"; import Link from "next/link"; +import AddToCart from "../Components/AddToCart/page"; const CardCategoriesMobile = ({ data }) => { const CTX = useContext(AppContext); const cart = CTX.state.cart; - console.log("data ", data, cart); - return (
- + {!!data.mainImage ? ( + + ) : ( +
+ +
+ )}

{data?.persianName}

- {data?.hasDiscount && ( + + {data.stock <= 3 && (

{" "} - 3 عدد موجود انبار + {data.stock}عدد موجود انبار

)}
-
- {/*{cart.find(e=>id)}*/} - {!cart.find((item) => item.id === data.id) ? ( -
-
- CTX.AddItemToCart(data.id, data.persianName, data.cost) - } - > - - - -
-
- ) : ( -
-
- CTX.AddItemToCart(data.id, data.persianName, data.cost) - } - > -

+

-
-

- item.id === data.id).count} - /> -

-
CTX.RemoveItemFromCart(data.id)} - > -

-

-
-
- )} -
- -
+ {" "} +
{data?.hasDiscount ? (
-

+

- + -

+ + + + % + +
{" "}

- +

تومان
@@ -99,7 +78,7 @@ const CardCategoriesMobile = ({ data }) => {
{" "}

- +

تومان
diff --git a/components/Cards/CardNormal/page.jsx b/components/Cards/CardNormal/page.jsx index fe9444b..a318c6f 100644 --- a/components/Cards/CardNormal/page.jsx +++ b/components/Cards/CardNormal/page.jsx @@ -1,15 +1,14 @@ "use client"; import React, { useContext } from "react"; import { SwiperSlide } from "swiper/react"; -import p1 from "../../../public/images/product/1.png"; -import p2 from "../../../public/images/product/2.png"; -import p3 from "../../../public/images/product/3.png"; -import p4 from "../../../public/images/product/4.png"; +import logo from "../../../public/images/logo.png"; + import Image from "next/image"; import PersianNumber from "plugins/PersianNumber"; import AppContext from "@ctx/AppContext"; +import AddToCart from "../Components/AddToCart/page"; -const CardNormal = (props) => { +const CardNormal = ({ data }) => { const CTX = useContext(AppContext); const cart = CTX.state.cart; return ( @@ -17,82 +16,79 @@ const CardNormal = (props) => { {" "} <>
handleRoutineShiftPlanWithDay(index)} > -
-
-

- - % -

-
-
{" "} -
- -
-
-

- لوسیون بدن سلامتی | maya -

-

- {" "} - 3 عدد موجود انبار -

-
-
- -
-
- {/*{cart.find(e=>id)}*/} - {2 == 1 ? ( -
-
CTX.AddItemToCart(123, 1)}> - - +
+

+ - -

-
- ) : ( -
-
-

+

-
-

- -

-
-

-

+ % +

)} + +
+ {!!data.mainImage ? ( + + ) : ( +
+ +
+ )} +
+
+

+ {data.persianName}{" "} +

+ + {data.stock <= 3 && ( +

+ {" "} + {data.stock}عدد موجود انبار +

+ )} +
+
+ +
+
+
- {2 == 2 ? ( + {data?.hasDiscount ? ( <>

- +

{" "}

- +

تومان
@@ -101,7 +97,7 @@ const CardNormal = (props) => {
{" "}

- +

تومان
diff --git a/components/Cards/CardSurprise/page.jsx b/components/Cards/CardSurprise/page.jsx index b608ad0..a7b9ec9 100644 --- a/components/Cards/CardSurprise/page.jsx +++ b/components/Cards/CardSurprise/page.jsx @@ -2,6 +2,7 @@ import Image from "next/image"; import PersianNumber from "plugins/PersianNumber"; import React from "react"; import p1 from "../../../public/images/product/1.png"; +import AddToCart from "../Components/AddToCart/page"; const CardSurprise = () => { return ( @@ -36,42 +37,8 @@ const CardSurprise = () => {
-
-
- {/*
-
- - - -
-
*/} -
-
- - - -
-
-
+
+
{2 == 2 ? ( diff --git a/components/Cards/Components/AddToCart/page.jsx b/components/Cards/Components/AddToCart/page.jsx new file mode 100644 index 0000000..d3dd022 --- /dev/null +++ b/components/Cards/Components/AddToCart/page.jsx @@ -0,0 +1,62 @@ +"use client"; +import AppContext from "@ctx/AppContext"; +import PersianNumber from "plugins/PersianNumber"; +import React, { useContext } from "react"; + +const AddToCart = ({ data }) => { + const CTX = useContext(AppContext); + const cart = CTX.state.cart; + + const handleAddItemToCart = (id) => { + CTX.AddItemToCart( + data.id, + data.persianName, + data.cost, + data.costWithDiscount, + data.mainImage, + data.hasDiscount, + data.maxOrderCount + ); + }; + return ( + <> + {data.stock == 0 ? ( +
+

اتمام موجودی

+
+ ) : ( +
+ {!cart.find((item) => item.id === data.id) ? ( +
+
handleAddItemToCart()}> +

+

+
+
+ ) : ( +
+
handleAddItemToCart()} + > +

+

+
+

+ item.id === data.id).count} + /> +

+
CTX.RemoveItemFromCart(data.id)} + > +

-

+
+
+ )} +
+ )} + + ); +}; + +export default AddToCart; diff --git a/components/Carts/component/NavBarDownCart/page.jsx b/components/Carts/component/NavBarDownCart/page.jsx new file mode 100644 index 0000000..e718182 --- /dev/null +++ b/components/Carts/component/NavBarDownCart/page.jsx @@ -0,0 +1,37 @@ +"use client"; +import Link from "next/link"; +import PersianNumber from "plugins/PersianNumber"; +import React from "react"; + +const NavBarDownCart = ({ calculateTotalCost, event }) => { + return ( +
+
+ {/* */} + + {/* */} +
+

+ قابل پرداخت{" "} +

+
+

+ +

+ + {" "} + تومان + +
+
+
+
+ ); +}; + +export default NavBarDownCart; diff --git a/components/Category/FilterCategory/page.jsx b/components/Category/FilterCategory/page.jsx index 9119902..2884896 100644 --- a/components/Category/FilterCategory/page.jsx +++ b/components/Category/FilterCategory/page.jsx @@ -15,6 +15,7 @@ const FilterCategory = ({ setRangePrice, sortBy, isRangePrice, + theme, }) => { const CTX = useContext(AppContext); const brands = CTX.state.brands; @@ -55,10 +56,18 @@ const FilterCategory = ({ }, [selectedBrands, isChecked]); return ( -
+
-
+

برند

@@ -98,7 +107,11 @@ const FilterCategory = ({ ))}
-
+

فقط محصولات موجود

-
+

محدوده قیمت

diff --git a/components/Category/ListProdocts/page.jsx b/components/Category/ListProdocts/page.jsx index 3735370..7bf7df0 100644 --- a/components/Category/ListProdocts/page.jsx +++ b/components/Category/ListProdocts/page.jsx @@ -33,7 +33,7 @@ const ListProdocts = ({ return (
-
+
diff --git a/components/Category/Mobile/Component/SearchSideBar/page.jsx b/components/Category/Mobile/Component/SearchSideBar/page.jsx new file mode 100644 index 0000000..f62f631 --- /dev/null +++ b/components/Category/Mobile/Component/SearchSideBar/page.jsx @@ -0,0 +1,69 @@ +"use client"; +import SideBarNavBarMobile from "@comp/Navbar/SideBarNavBarMobile/page"; +import AppContext from "@ctx/AppContext"; +import React, { useContext } from "react"; + +const SearchSideBar = () => { + const CTX = useContext(AppContext); + + return ( + <> +
+
+
{ + CTX.setCloseNavbar(true); + }} + > +
+ + + +
+
+
+ + +
+
+ + + +
+
+
+ + + ); +}; + +export default SearchSideBar; diff --git a/components/Category/Mobile/FilterCategoryMobile/page.jsx b/components/Category/Mobile/FilterCategoryMobile/page.jsx index 16813a5..5b1da01 100644 --- a/components/Category/Mobile/FilterCategoryMobile/page.jsx +++ b/components/Category/Mobile/FilterCategoryMobile/page.jsx @@ -1,69 +1,33 @@ "use client"; import SideBarNavBarMobile from "@comp/Navbar/SideBarNavBarMobile/page"; import AppContext from "@ctx/AppContext"; -import React, { useContext } from "react"; +import BottomSheetFilter from "plugins/bottomSheet/BottomSheetFilter"; +import React, { useContext, useEffect, useState } from "react"; const FilterCategoryMobile = (props) => { const CTX = useContext(AppContext); + const [trendFilter, setTrendFilter] = useState(false); + + useEffect(() => { + CTX.fetchProducts( + props.id, + props.selectedBrands, + props.isChecked, + props.rangePrice, + props.rangePrice, + props.sortBy, + props.isRangePrice + ); + }, [props.sortBy]); + return ( <> -
-
-
{ - CTX.setCloseNavbar(true); - }} - > -
- - - -
-
-
- - -
-
- - - -
-
-
- -
-
+
+
CTX.setBottomSheetFilterOpen(true)} + >
{

فیلتر ها

-
+
setTrendFilter(!trendFilter)} + >
{
- + {trendFilter ? ( +
+ {/*
props.setSortBy(1)} + > +

پربازدید ترین ها

+
+
props.setSortBy(2)} + > +

پربازدید ها

+
+
props.setSortBy(3)} + > +

ترین ها

+
+
props.setSortBy(4)} + > +

پربازدید ها

+
+
props.setSortBy(5)} + > +

پربازدید ترین

+
*/} + +
props.setSortBy(1)} + > +

+ پربازدید ترین +

+
+
props.setSortBy(2)} + > +

+ محبوب ترین +

+
+
props.setSortBy(3)} + > +

+ گران ترین +

+
+
props.setSortBy(4)} + > +

+ ارزان ترین +

+
+
props.setSortBy(5)} + > +

+ پرفروش ترین +

+
+
+ ) : ( + "" + )} + + ); }; diff --git a/components/Category/PaginationCategoory/page.jsx b/components/Category/PaginationCategoory/page.jsx index 8f304c8..d0a565b 100644 --- a/components/Category/PaginationCategoory/page.jsx +++ b/components/Category/PaginationCategoory/page.jsx @@ -4,14 +4,14 @@ import React from "react"; const PaginationCategoory = (props) => { return (
-
+
{ />
-
-

- +

+

+

-
-

- +

+

+

-
-

- +

+

+

-
-

- +

+

+

-
-

- +

+

+

-
+
{ return ( <> -
+
@@ -23,7 +24,7 @@ const Footer = () => {
@@ -33,96 +34,130 @@ const Footer = () => {
-
-
-
-
-
+ +
+
+
+
+
+
+
+
+

محصولات

+
+
+ +
+
+
    + +
  • + کرم مرطوب کننده دست و پا{" "} +
  • + + + +
  • + مرطوب کننده و آبرسان صورت{" "} +
  • + + +
  • + شوینده سطوح +
  • + + +
  • + بهداشت دهان و دندان +
  • + + +
  • + نرم کننده مو +
  • + +
+
+
+
    + +
  • + کیت رنگ مو{" "} +
  • + + +
  • + بهداشت خانه و آشپرخانه{" "} +
  • + + +
  • + سرم مو{" "} +
  • + + +
  • + ژل بهداشتی بانوان{" "} +
  • + +
+
+
+
+
-

محصولات

+

درباره ما

- -
-
-
    -
  • - بهداشت شخصی{" "} -
  • -
  • - بهداشت و زیبایی ناخن{" "} -
  • -
  • - مراقبت از کودکان{" "} -
  • -
  • - بهداشت خانگی{" "} -
  • -
  • - ضدعفونی کننده{" "} -
  • -
  • - لوازم آرایشی -
  • -
-
-
-
    -
  • - لوازم آرایشی -
  • -
  • - آرایش و مراقبت مو{" "} -
  • -
  • - مراقبت از پوست{" "} -
  • -
  • - لوازم بهداشتی{" "} -
  • -
  • - عطر، ادوکلن و اسپری{" "} -
  • -
-
+
+
    +
  • + سوالات متداول{" "} +
  • +
  • تماس باما
  • +
  • قوانین سایت
  • +
  • درباره ما
  • +
-
+ +
-

درباره ما

+

چرا وسمه

-
-
    -
  • - سوالات متداول{" "} -
  • -
  • تماس باما
  • -
  • قوانین سایت
  • -
  • درباره ما
  • -
-
-
-
-
-
-

چرا وسمه

-
-
- -

- وسمه تعهد داره تجربه خرید لوازم آرایشی و بهداشتی رو متحول کنه. این - تحول می‌تونه برای مشتری احساس قسمتی از خانواده وسمه‌ بودن رو داشته - باشه. وسمه با برطرف کردن دغدغه‌های خرید لوازم آرایشی و بهداشتی به - ساختن لایف استایل شخصی خانم‌های ایرانی کمک می‌کنه و زندگی راحت‌تری - پیش روی مشتریانش قرار می‌ده. از سال 1400 ما تمام انرژیمون رو به - کار گرفتیم تا با تمرکز برکیفیت کالا، سرعت ارسال و قیمت کالا ، نیاز - افراد رو برطرف کنیم و تجربه جدیدی از لذت خرید به وجود بیاریم. -

- {/* +

+ وسمه تعهد داره تجربه خرید لوازم آرایشی و بهداشتی رو متحول کنه. + این تحول می‌تونه برای مشتری احساس قسمتی از خانواده وسمه‌ بودن رو + داشته باشه. وسمه با برطرف کردن دغدغه‌های خرید لوازم آرایشی و + بهداشتی به ساختن لایف استایل شخصی خانم‌های ایرانی کمک می‌کنه و + زندگی راحت‌تری پیش روی مشتریانش قرار می‌ده. از سال 1400 ما تمام + انرژیمون رو به کار گرفتیم تا با تمرکز برکیفیت کالا، سرعت ارسال و + قیمت کالا ، نیاز افراد رو برطرف کنیم و تجربه جدیدی از لذت خرید + به وجود بیاریم. +

+ {/*
@@ -145,19 +180,18 @@ const Footer = () => {
*/} -
-
-
-
-
+
+
+
+
+
+
-
-
-

+

استفاده از مطالب فروشگاه شاواز فقط برای مقاصد غیرتجاری و باذکر منبع بلامانع است. کلیه حقوق این سایت متعلق به شرکت وسمه می باشد. ورژن {process.env.NEXT_PUBLIC_PACKAGE_VERSION} diff --git a/components/LandingPage/BeautySection/page.jsx b/components/LandingPage/BeautySection/page.jsx index 44ddbce..bcc25f4 100644 --- a/components/LandingPage/BeautySection/page.jsx +++ b/components/LandingPage/BeautySection/page.jsx @@ -6,8 +6,10 @@ import p1 from "../../../public/images/product/1.png"; import p2 from "../../../public/images/product/2.png"; import p3 from "../../../public/images/product/3.png"; import p4 from "../../../public/images/product/4.png"; +import CardNormal from "@comp/Cards/CardNormal/page"; -const BeautySection = () => { +const BeautySection = ({ data }) => { + console.log("BeautySection", data); return (

@@ -34,8 +36,6 @@ const BeautySection = () => {

لوازم بهداشتی زیبایی{" "}

- -

مشاهده بیشتر

{ className="rtl relative mt-5" breakpoints={{ 320: { - slidesPerView: 1.6, + slidesPerView: 1.3, }, 480: { slidesPerView: 2, @@ -62,707 +62,18 @@ const BeautySection = () => { }, }} > - - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
-

- لوسیون بدن سلامتی | maya -

-

- {" "} - 3 عدد موجود انبار -

-
-
- - -
-
- {/*
-
- - - -
-
*/} -
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
- - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
-

- سلامتی | maya -

-

- {" "} - 3 عدد موجود انبار -

-
-
- - -
-
- {/*
-
- - - -
-
*/} -
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
- - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
-

- لوسیو -

-

- {" "} - 3 عدد موجود انبار -

-
-
- - -
-
- {/*
-
- - - -
-
*/} -
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
- - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
-

- لوسیون |mexicano milanono -

-

- {" "} - 3 عدد موجود انبار -

-
-
- - -
-
- {/*
-
- - - -
-
*/} -
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
- - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
-

- لوسیون بدن سلامتی | maya -

-

- {" "} - 3 عدد موجود انبار -

-
-
- - -
-
- {/*
-
- - - -
-
*/} -
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
- - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
-

- لوسیون بدن سلامتی | maya -

-

- {" "} - 3 عدد موجود انبار -

-
-
- - -
-
- {/*
-
- - - -
-
*/} -
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
- - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
-

- لوسیون بدن سلامتی | maya -

-

- {" "} - 3 عدد موجود انبار -

-
-
- - -
-
- {/*
-
- - - -
-
*/} -
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
+ {data?.map((e) => ( + + + + ))}
+ +
+

+ مشاهده بیشتر{" "} +

+
); diff --git a/components/LandingPage/BetweenSexualSection/page.jsx b/components/LandingPage/BetweenSexualSection/page.jsx index 7daaa5c..274d3b8 100644 --- a/components/LandingPage/BetweenSexualSection/page.jsx +++ b/components/LandingPage/BetweenSexualSection/page.jsx @@ -3,6 +3,7 @@ import React from "react"; import between1 from "../../../public/images/between1.png"; import between2 from "../../../public/images/between2.png"; import between from "../../../public/images/between.jpeg"; +import Link from "next/link"; const BetweenSexualSection = () => { return ( @@ -32,34 +33,45 @@ const BetweenSexualSection = () => {

-
-
-
-
- + +
+
+
+
+ +
-
-

لوازم بانوان وسمه

+

لوازم بانوان وسمه

-

- شروع خرید{" "} -

-
-
-
-
-
- +

+ شروع خرید{" "} +

+
+ + + +
+
+
+
+ +
-
-

لوازم آقایان وسمه

+

لوازم آقایان وسمه

-

- شروع خرید{" "} -

-
+

+ شروع خرید{" "} +

+
+
diff --git a/components/LandingPage/HeroSection/page.jsx b/components/LandingPage/HeroSection/page.jsx index f22cb32..43c07e0 100644 --- a/components/LandingPage/HeroSection/page.jsx +++ b/components/LandingPage/HeroSection/page.jsx @@ -7,6 +7,7 @@ import png from "../../../public/images/5.png"; import shs from "../../../public/images/6.png"; import hft from "../../../public/images/7.png"; import Image from "next/image"; +import Link from "next/link"; const HeroSection = () => { return ( @@ -21,99 +22,111 @@ const HeroSection = () => {
-
- {" "} -
-
-
- + +
+ {" "} +
+
+
+ +
-
-
-

عطر و ادکلن

-
+
+

مراقبت پوست

+
+
-
- {" "} -
-
-
- + +
+ {" "} +
+
+
+ +
-
-
-

وسایل بهداشتی

-
+
+

آرایش لب

+
+
-
- {" "} -
-
-
- {" "} + +
+ {" "} +
+
+
+ {" "} +
-
-
-

آرایشی چشم

-
+
+

آرایش ناخن

+
+
-
- {" "} -
-
-
- + +
+ {" "} +
+
+
+ +
-
-
-

آرایش صورت

-
+
+

بهداشت جنسی

+
+
-
- {" "} -
-
-
- + +
+ {" "} +
+
+
+ +
-
-
-

بهداشت زنانه

-
+
+

آرایش چشم

+
+
-
- {" "} -
-
-
- {" "} + +
+ {" "} +
+
+
+ {" "} +
-
-
-

بهداشت مردانه

-
+
+

کرم پودر

+
+
diff --git a/components/LandingPage/HomeSection/page.jsx b/components/LandingPage/HomeSection/page.jsx index b07a77f..8e95ddf 100644 --- a/components/LandingPage/HomeSection/page.jsx +++ b/components/LandingPage/HomeSection/page.jsx @@ -7,8 +7,9 @@ import p2 from "../../../public/images/product/2.png"; import p3 from "../../../public/images/product/3.png"; import p4 from "../../../public/images/product/4.png"; import khane from "../../../public/images/khane.jpg"; +import CardNormal from "@comp/Cards/CardNormal/page"; -const HomeSection = () => { +const HomeSection = ({ data }) => { return (
@@ -38,7 +39,7 @@ const HomeSection = () => { className="rtl relative mt-4" breakpoints={{ 320: { - slidesPerView: 1.6, + slidesPerView: 1.3, }, 480: { slidesPerView: 2, @@ -47,238 +48,18 @@ const HomeSection = () => { slidesPerView: 3, }, 1024: { - slidesPerView: 3.2, + slidesPerView: 3.4, }, 1440: { - slidesPerView: 4, + slidesPerView: 3.8, }, }} > - - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
- - -
-
-
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
- - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
- - -
-
-
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
- - <> -
handleRoutineShiftPlanWithDay(index)} - > -
-
-

- - % -

-
-
{" "} -
- -
-
- - -
-
-
-
- - - -
-
-
- -
- {2 == 2 ? ( - <> -

- - - -

-
- {" "} -

- -

- تومان -
- - ) : ( -
- {" "} -

- -

- تومان -
- )} -
-
-
+ {data?.map((e) => ( + + + + ))}
diff --git a/components/LandingPage/SurpriseSection/page.jsx b/components/LandingPage/SurpriseSection/page.jsx index 33da682..d6fffab 100644 --- a/components/LandingPage/SurpriseSection/page.jsx +++ b/components/LandingPage/SurpriseSection/page.jsx @@ -9,7 +9,8 @@ import p3 from "../../../public/images/product/3.png"; import p4 from "../../../public/images/product/4.png"; import CardNormal from "@comp/Cards/CardNormal/page"; -const SurpriseSection = () => { +const SurpriseSection = ({ data }) => { + console.log("sss injaaaha", data); return (
@@ -32,11 +33,11 @@ const SurpriseSection = () => {
-
+

پیشنهاد های ویژه امروز{" "}

- + {/* */}
{ }, }} > - - - - - - - - - + {data?.map((e) => ( + + + + ))} + +
+

+ مشاهده بیشتر{" "} +

+
); diff --git a/components/Navbar/CartNavbar/page.jsx b/components/Navbar/CartNavbar/page.jsx index 747041c..0cb9c94 100644 --- a/components/Navbar/CartNavbar/page.jsx +++ b/components/Navbar/CartNavbar/page.jsx @@ -1,6 +1,7 @@ "use client"; import CardCart from "@comp/Cards/CardCart/page"; import AppContext from "@ctx/AppContext"; +import Link from "next/link"; import PersianNumber from "plugins/PersianNumber"; import React, { useContext, useState } from "react"; @@ -19,6 +20,14 @@ const CartNavbar = (props) => {

سبد خرید

+
+
+
+ {" "} +
+
+
+ {smallBasket && (
{ onMouseEnter={() => setSmallBasket(true)} onMouseLeave={() => setSmallBasket(false)} > -
+

{ تومان

*/} - + + +
diff --git a/components/Navbar/SideBarNavBarMobile/page.jsx b/components/Navbar/SideBarNavBarMobile/page.jsx index f1780b3..68c4885 100644 --- a/components/Navbar/SideBarNavBarMobile/page.jsx +++ b/components/Navbar/SideBarNavBarMobile/page.jsx @@ -1,12 +1,18 @@ "use client"; import Image from "next/image"; -import React, { useContext } from "react"; +import React, { useContext, useState } from "react"; import logo from "../../../public/images/logo.png"; import Link from "next/link"; import AppContext from "@ctx/AppContext"; const SideBarNavBarMobile = () => { const CTX = useContext(AppContext); + const [firstChild, setFirstChild] = useState([]); + const [firstChildIndex, setFirstChildIndex] = useState(-1); + + const dataNav = CTX.state.navData; + + console.log(firstChild); const closeNavbar = CTX.state.closeNavbar; console.log("closeNavbar", closeNavbar); @@ -14,25 +20,40 @@ const SideBarNavBarMobile = () => { <>
CTX.setCloseNavbar(false) - // setOpenResIgType(false) & - // setResponsiveNavBarItemStep(0) - } - >
+ className="rounded-full text-center m-2 " + onClick={() => { + CTX.setCloseNavbar(false); + setFirstChildIndex(-1); + }} + > + + + +
-
+
@@ -40,31 +61,87 @@ const SideBarNavBarMobile = () => {
- - -
- -
- - - -
- -
- - +
+ + +
+
+
    + {dataNav?.map((e, index) => ( +
  • { + setFirstChild(dataNav[index].children); + setFirstChildIndex(index); + }} + > +
    +

    {e.name}

    + +
    + + + +
    +
    + + {firstChildIndex == index && ( + <> +
      +
    • + CTX.setCloseNavbar(false)} + > +

      + همه موارد +

      + +
    • {" "} + {firstChild.map((e) => ( +
    • + CTX.setCloseNavbar(false)} + > +
      +

      {e.name}

      +
      + +
    • + ))} +
    + + )} +
  • + ))} +
+
diff --git a/components/Navbar/page.jsx b/components/Navbar/page.jsx index f66d65c..071b533 100644 --- a/components/Navbar/page.jsx +++ b/components/Navbar/page.jsx @@ -15,8 +15,11 @@ import CartNavbar from "./CartNavbar/page"; import AppContext from "@ctx/AppContext"; import BottomSheetCart from "plugins/bottomSheet/BottomSheetCart"; import { BottomSheet } from "react-spring-bottom-sheet"; +import SearchSideBar from "@comp/Category/Mobile/Component/SearchSideBar/page"; const Navbar = ({ theme }) => { + const [open, setOpen] = useState(false); + const CTX = useContext(AppContext); const dataNav = CTX.state.navData; const cart = CTX.state.cart; @@ -68,7 +71,7 @@ const Navbar = ({ theme }) => {
@@ -80,7 +83,7 @@ const Navbar = ({ theme }) => {
{1 == 2 ? (
-
+
ورود / عضویت{" "}
@@ -88,7 +91,7 @@ const Navbar = ({ theme }) => {
setSmallDashboard(!smallDashboard)} >

حسین معصومی پور

@@ -103,7 +106,7 @@ const Navbar = ({ theme }) => { onMouseEnter={() => setSmallDashboard(true)} onMouseLeave={() => setSmallDashboard(false)} > -
+
  • @@ -163,8 +166,8 @@ const Navbar = ({ theme }) => {
    @@ -178,7 +181,7 @@ const Navbar = ({ theme }) => { : " relative top-[-18px] " } - ${theme == 0 ? "" : "!bg-white"}`} + ${theme == 0 ? "" : "!bg-gray-100"}`} >
    {dataNav?.map((e, index) => ( @@ -223,7 +226,7 @@ const Navbar = ({ theme }) => {
    @@ -329,19 +332,25 @@ const Navbar = ({ theme }) => { {!isDesktop && ( <>
    {" "} -
    - +
    + {isScrolled ? ( + + ) : ( + + )}
    {1 == 2 ? (
    -
    +
    ورود / عضویت{" "}
    @@ -349,7 +358,7 @@ const Navbar = ({ theme }) => {
    setSmallDashboard(!smallDashboard)} >

    حسین معصومی پور

    @@ -363,7 +372,7 @@ const Navbar = ({ theme }) => { onMouseEnter={() => setSmallDashboard(true)} onMouseLeave={() => setSmallDashboard(false)} > -
    +
    • @@ -420,15 +429,23 @@ const Navbar = ({ theme }) => {
      CTX.setBottomSheetCart(true)} + onClick={() => CTX.setBottomSheetCartOpen(true)} > -
      -
      - -
      +
      + {cart?.length > 0 && ( +
      + +
      + )}
      { > {
    + + )} diff --git a/components/TimerDown/TimerDown.jsx b/components/TimerDown/TimerDown.jsx index bfdfd97..0704450 100644 --- a/components/TimerDown/TimerDown.jsx +++ b/components/TimerDown/TimerDown.jsx @@ -4,7 +4,7 @@ import Link from "next/link"; import PersianNumber from "plugins/PersianNumber"; const TimerDown = () => { - const targetTimestamp = 1704170967 * 1000; // Convert to milliseconds + const targetTimestamp = 1707629566 * 1000; // Convert to milliseconds const [timeRemaining, setTimeRemaining] = useState({ days: 0, diff --git a/next.config.js b/next.config.js index 767719f..51f61fb 100644 --- a/next.config.js +++ b/next.config.js @@ -1,4 +1,9 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {} +const nextConfig = { + reactStrictMode: false, // React Strict Mode is off + images: { + domains: ["storage.vesmook.com"], + }, +}; -module.exports = nextConfig +module.exports = nextConfig; diff --git a/plugins/Gallery/page.jsx b/plugins/Gallery/page.jsx index 26e3251..251cd12 100644 --- a/plugins/Gallery/page.jsx +++ b/plugins/Gallery/page.jsx @@ -7,12 +7,29 @@ import p3 from "../../public/images/product/3.png"; import p4 from "../../public/images/product/4.png"; import Image from "next/image"; -const GalleryBox = () => { +const GalleryBox = ({ file }) => { + console.log(file && file[0]?.fileLocation); return (
    - + {!!file ? ( + + ) : ( +
    + {/* */} +
    + )}
    diff --git a/plugins/bottomSheet/BottomSheetCart.jsx b/plugins/bottomSheet/BottomSheetCart.jsx index a4c4945..170c6e9 100644 --- a/plugins/bottomSheet/BottomSheetCart.jsx +++ b/plugins/bottomSheet/BottomSheetCart.jsx @@ -1,23 +1,58 @@ "use client"; +import CardCart from "@comp/Cards/CardCart/page"; import AppContext from "@ctx/AppContext"; +import Link from "next/link"; +import PersianNumber from "plugins/PersianNumber"; import React, { useContext } from "react"; import { BottomSheet } from "react-spring-bottom-sheet"; import { toast } from "react-toastify"; const BottomSheetCart = (props) => { const CTX = useContext(AppContext); + const cart = CTX.state.cart; return ( CTX.setBottomSheetCart(false)} + open={CTX.state.bottomSheetCartOpen} + onDismiss={() => CTX.setBottomSheetCartOpen(false)} + className={"z-50 relative"} > -
    -

    افزودن نقش جدید

    +
    +

    + + محصول موجود در سبد +

    + + {/*
    */} +
    + {cart.map((e) => ( + + ))} +
    -
    +
    + {/*
    +

    + جمع کل : + + تومان +

    +
    */} + + + +
    ); }; diff --git a/plugins/bottomSheet/BottomSheetDiscount.jsx b/plugins/bottomSheet/BottomSheetDiscount.jsx new file mode 100644 index 0000000..f5eb7da --- /dev/null +++ b/plugins/bottomSheet/BottomSheetDiscount.jsx @@ -0,0 +1,41 @@ +"use client"; + +import CardCart from "@comp/Cards/CardCart/page"; +import AppContext from "@ctx/AppContext"; +import Link from "next/link"; +import PersianNumber from "plugins/PersianNumber"; +import React, { useContext } from "react"; +import { BottomSheet } from "react-spring-bottom-sheet"; +import { toast } from "react-toastify"; + +const BottomSheetDiscount = (props) => { + const CTX = useContext(AppContext); + const cart = CTX.state.cart; + + return ( + CTX.setBottomSheetDiscountOpen(false)} + className={"z-50 relative"} + > +
    +

    افزودن کد تخفیف

    +
    + +
    + +
    +
    + +
    +
    + ); +}; + +export default BottomSheetDiscount; diff --git a/plugins/bottomSheet/BottomSheetFilter.jsx b/plugins/bottomSheet/BottomSheetFilter.jsx new file mode 100644 index 0000000..a3c2ba0 --- /dev/null +++ b/plugins/bottomSheet/BottomSheetFilter.jsx @@ -0,0 +1,40 @@ +"use client"; + +import CardCart from "@comp/Cards/CardCart/page"; +import FilterCategory from "@comp/Category/FilterCategory/page"; +import AppContext from "@ctx/AppContext"; +import PersianNumber from "plugins/PersianNumber"; +import React, { useContext } from "react"; +import { BottomSheet } from "react-spring-bottom-sheet"; +import { toast } from "react-toastify"; + +const BottomSheetFilter = ({ data }) => { + const CTX = useContext(AppContext); + const cart = CTX.state.cart; + + return ( + CTX.setBottomSheetFilterOpen(false)} + className={"z-50 relative"} + > +
    + +
    +
    + ); +}; + +export default BottomSheetFilter; diff --git a/public/images/ap.png b/public/images/ap.png new file mode 100644 index 0000000..625ceb7 Binary files /dev/null and b/public/images/ap.png differ diff --git a/public/images/divider.png b/public/images/divider.png index 38f6b26..068f7d6 100644 Binary files a/public/images/divider.png and b/public/images/divider.png differ diff --git a/public/images/zarin.png b/public/images/zarin.png new file mode 100644 index 0000000..ba96d65 Binary files /dev/null and b/public/images/zarin.png differ diff --git a/src/app/about-us/page.jsx b/src/app/about-us/page.jsx new file mode 100644 index 0000000..b293d1a --- /dev/null +++ b/src/app/about-us/page.jsx @@ -0,0 +1,173 @@ +import Footer from "@comp/Footer/page"; +import Navbar from "@comp/Navbar/page"; +import PersianNumber from "plugins/PersianNumber"; +import React from "react"; + +const page = () => { + const number = "02188195164"; + return ( + <> +
    +
    + + +
    +
    +
    +

    + {" "} + , +

    +
    +
    +
    + +
    +
    +

    + وسمه ، بن ماضی زیبایی +

    + +

    + وسمه تهعد داره تجربه خرید لوازم آرایشی و بهداشتی رو متحول کنه. + این تحول می‌تونه برای مشتری احساس قسمتی از خانواده وسمه‌ بودن رو + داشته باشه. وسمه با برطرف کردن دغدغه‌های خرید لوازم آرایشی و + بهداشتی به ساختن لایف استایل شخصی خانم‌های ایرانی کمک می‌کنه و + زندگی راحت‌تری پیش روی مشتریانش قرار می‌ده. از سال 1400 ما تمام + انرژیمون رو به کار گرفتیم تا با تمرکز برکیفیت کالا، سرعت ارسال و + قیمت کالا ، نیاز افراد رو برطرف کنیم و تجربه جدیدی از لذت خرید + به وجود بیاریم. +

    +
    + +
    +
    +
    +
    +

    + جوایز و تقدیر +

    + +

    + ما مفتخریم که به خاطر کاری که هر روز از طرف مشتریان، + کارمندان و جوامع خود انجام می دهیم، مورد تقدیر قرار می + گیریم. +

    + +
    + +
    +
    +
    +
    +
    +

    + موقعیت های ما +

    + +

    + در حالی که مواضع ما به دقت مورد بررسی قرار می گیرد و + عمیقاً حفظ می شود، فضای زیادی برای بحث سالم و نظرات متفاوت + وجود دارد. ما امیدواریم که شفاف بودن در مورد مواضع ما مفید + باشد. +

    + +
    + +
    +
    +
    +
    +
    +

    + سیاست عمومی{" "} +

    + +

    + ما با سیاستگذاران در مورد طیف وسیعی از موضوعاتی که برای + مشتریان و کارمندان ما مهم است، تعامل داریم. درباره نظرات + ما در مورد مسائل جاری سیاست بیشتر بیاموزید. +

    + +
    + +
    +
    +
    +
    +
    +

    + اصول رهبری +

    + +

    + اصول رهبری ما چیزی فراتر از دیوارکوب های الهام بخش است. + این 16 اصل، هر روز بحث ها و تصمیمات ما را هدایت می کن +

    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +

    + موقعیت های ما در وسمه +

    +

    + فروشگاه ما به عنوان یک منبع قابل اعتماد برای خرید لوازم آرایشی و + زیبایی، به شفافیت و صداقت ارزشمندی می‌دهد. ما به دقت مواضع و + ارزش‌هایمان را تعیین کرده‌ایم و همواره به دنبال بهبود و توسعه آنها + هستیم. همچنین، در فضای ما، به نظرات و دیدگاه‌های مختلف احترام + می‌گذاریم و فضایی را برای بحث سالم و تبادل نظر فراهم می‌کنیم. با + ایجاد این امکان، ما امیدواریم که از تنوع نظرات و دیدگاه‌ها بهره‌مند + شویم و از این طریق، به تصمیمات بهتری برای رشد و پیشرفت فروشگاهمان + برسیم. با شفافیت، احترام به نظرات متفاوت و توجه به مواضع ما، ما به + ایجاد یک جامعه پویا و پایدار از مشتریان و مشتریان آینده‌ی خود تلاش + می‌کنیم +

    + +

    + جوایز و تقدیر در وسمه +

    +

    + ما در "وسمه" مفتخریم که به خاطر کاری که هر روز از طرف مشتریان، + کارمندان و جوامع خود انجام می‌دهیم، مورد تقدیر قرار می‌گیریم. این + تقدیر و اعتراف‌ها، نشان از ارزشی است که ما برای ارتباط مستمر و + صادقانه با همه‌ی اعضای جامعه‌ی ما قائل هستیم. همه‌ی تلاش ما در + "وسمه" به منظور ارائه‌ی بهترین تجربه‌ی ممکن برای مشتریان عزیزمان + است. از انتخاب محصولات با کیفیت تا ارائه‌ی خدمات استثنایی، ما به دقت + به نیازها و خواسته‌های شما توجه می‌کنیم تا اطمینان حاصل شود که هرگز + از "وسمه" ناراضی نخواهید شد. با تمام وجود و انگیزه‌ی بی‌پایان، ما به + ارتقاء محصولات و خدماتمان ادامه می‌دهیم تا همیشه بهترین را برای شما + فراهم کنیم. وعده‌ی ما این است که در "وسمه" همیشه یک محیط پذیرایی، + احترام و نوآوری برای شما وجود داشته باشد +

    +
    +
    + +
    + + ); +}; + +export default page; diff --git a/src/app/cart/checkout/page.jsx b/src/app/cart/checkout/page.jsx new file mode 100644 index 0000000..b4fb4ab --- /dev/null +++ b/src/app/cart/checkout/page.jsx @@ -0,0 +1,426 @@ +"use client"; +import NavBarDownCart from "@comp/Carts/component/NavBarDownCart/page"; +import Navbar from "@comp/Navbar/page"; +import PersianNumber from "plugins/PersianNumber"; +import React, { useContext, useEffect } from "react"; + +import zarin from "@img/zarin.png"; +import ap from "@img/ap.png"; +import Image from "next/image"; +import AppContext from "@ctx/AppContext"; +import BottomSheetDiscount from "plugins/bottomSheet/BottomSheetDiscount"; +import { useRouter } from "next/navigation"; + +const page = () => { + const CTX = useContext(AppContext); + const router = useRouter(); + const checkOutData = CTX.state.checkOutData; + + console.log(checkOutData); + + useEffect(() => { + if (CTX.state.checkOutData.length <= 0) { + router.push("/cart"); + } + }, []); + + return ( + <> +
    + + +
    +

    آدس ها

    + +
    +

    تغییر آدرس

    +
    +
    + +
    +
    + + + + +
    +
    +

    + آدرس شما{" "} +

    +

    + {" "} + تهران ، نارمک ، فلکه پنجم پلاک 5 ، واحد 22 +

    +
    +
    + +
    +

    زمان و نحوه ارسال

    + +
    +
    +
    + + + +
    +

    + سریع ترین زمان ارسال +

    +
    +
    +
    + +
    +
    +
    + + + +
    +
    +

    + ارسال با پیک (فقط محدوده تهران){" "} +

    +

    + {" "} + + ساعت + | + هزینه ارسال + + هزار تومان +

    +
    +
    + +
    +
    + + + +
    +
    +

    + پست عادی{" "} +

    +

    + {" "} + حداکثر + + روز کاری + | + هزینه ارسال + + هزار تومان +

    +
    +
    + +
    +
    + + + + +
    +
    +

    + پست سفارشی{" "} +

    +

    + {" "} + هزینه ارسال + + هزار تومان +

    +
    +
    + +
    +
    + + + + +
    +
    +

    + پست پیشتاز{" "} +

    +

    + {" "} + حداکثر + + روز کاری + | هزینه ارسال + + هزار تومان +

    +
    +
    +
    + +
    +

    روش پرداخت

    +
    + +
    +
    +
    + +
    +
    +

    + پرداخت آنلاین +

    +

    زرین پال

    +
    +
    + +
    +
    + +
    +
    +

    + پرداخت آنلاین +

    +

    آسان پرداخت

    +
    +
    +
    CTX.setBottomSheetDiscountOpen(true)} + > +
    +
    + + + +
    +
    +

    + افزودن کد تخفیف{" "} +

    +

    + کد تخفیف خود را وارد کنید +

    +
    +
    + +
    + + +
    +
    +
    + +
    +
    +

    حساب نهایی

    + +
    +

    مشاهده اقلام

    +
    +
    + +
    +
    +

    قیمت

    + +
    +

    + +

    + + {" "} + تومان + +
    +
    + +
    +

    تخفیف محصول

    + +
    +

    + +

    + + {" "} + تومان + +
    +
    + +
    +

    هزینه بسته بندی

    + +
    +

    + +

    + + {" "} + تومان + +
    +
    + +
    +

    هزینه ارسال

    + +
    +

    + +

    + + {" "} + تومان + +
    +
    + +
    +

    + قابل پرداخت +

    + +
    +

    + +

    + + {" "} + تومان + +
    +
    +
    +
    + + console.log("D")} + /> +
    + + + + ); +}; + +export default page; diff --git a/src/app/cart/page.jsx b/src/app/cart/page.jsx new file mode 100644 index 0000000..7f84811 --- /dev/null +++ b/src/app/cart/page.jsx @@ -0,0 +1,191 @@ +"use client"; +import CardCart from "@comp/Cards/CardCart/page"; +import NavBarDownCart from "@comp/Carts/component/NavBarDownCart/page"; +import Navbar from "@comp/Navbar/page"; +import AppContext from "@ctx/AppContext"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; +import Chapar from "plugins/Chapar"; +import PersianNumber from "plugins/PersianNumber"; +import React, { useContext, useEffect } from "react"; +import { toast } from "react-toastify"; + +const page = () => { + const CTX = useContext(AppContext); + const router = useRouter(); + const cart = CTX.state.cart; + + const calculateTotalCost = cart.reduce( + (total, item) => total + parseInt(item.cost) * item.count, + 0 + ); + + const calculateTotalCostWithDiscount = cart.reduce( + (total, item) => total + parseInt(item.costWithDiscount) * item.count, + 0 + ); + + // const calculateTotalCostWithDiscount = cart.reduce((total, item) => { + // // Check if costWithDiscount is defined and a valid number + // if ( + // typeof item.costWithDiscount === "number" && + // !isNaN(item.costWithDiscount) + // ) { + // // If costWithDiscount is defined and valid, include it in the calculation + // return total + item.costWithDiscount * item.count; + // } else { + // // If costWithDiscount is not defined or not a valid number, use regular cost + // return total + item.cost * item.count; + // } + // }, 0); + + const handleGoCheckOut = async () => { + // Check if the user is authorized based on the presence of a token in local storage + const token = localStorage.getItem("token"); + + if (token) { + // If token exists, proceed to checkout + const productsToSend = cart.map((item) => ({ + productId: item.id, + count: parseInt(item.count), + })); + try { + const data = await Chapar.post( + `${process.env.NEXT_PUBLIC_API_URL}/order/bag/add`, + + JSON.stringify(productsToSend), + + { + headers: { + Authorization: localStorage.getItem("token"), + }, + } + ); + + CTX.setCheckOutData(data); + } catch ({ error, status }) { + toast.error(`${error?.response?.data?.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + } + router.push("/cart/checkout"); // Redirect to the checkout page + } else { + // If token does not exist, redirect to login + router.push("/login"); // Redirect to the login page + } + }; + + useEffect(() => { + CTX.setBottomSheetCartOpen(false); + }, []); + + return ( + <> +
    + + +
    +

    محصولات انتخاب شده

    + +
    +

    + + محصول +

    +
    +
    + +
    + {cart?.map((e) => ( + + ))} + +
    +
    +

    حساب نهایی

    + + {/*
    +

    + + محصول +

    +
    */} +
    + +
    +
    +

    قیمت

    + +
    +

    + +

    + + {" "} + تومان + +
    +
    + +
    +

    تخفیف محصول

    + +
    +

    + +

    + + {" "} + تومان + +
    +
    + +
    +

    + قابل پرداخت +

    + +
    +

    + +

    + + {" "} + تومان + +
    +
    +
    +
    +
    + + handleGoCheckOut()} + /> +
    + + ); +}; + +export default page; diff --git a/src/app/categories/[id]/page.jsx b/src/app/categories/[id]/page.jsx index f736038..beeaca7 100644 --- a/src/app/categories/[id]/page.jsx +++ b/src/app/categories/[id]/page.jsx @@ -63,7 +63,19 @@ export default function page({ params }) {
    - +
    diff --git a/src/app/contact-us/page.jsx b/src/app/contact-us/page.jsx new file mode 100644 index 0000000..d7b4f58 --- /dev/null +++ b/src/app/contact-us/page.jsx @@ -0,0 +1,247 @@ +import Footer from "@comp/Footer/page"; +import Navbar from "@comp/Navbar/page"; +import PersianNumber from "plugins/PersianNumber"; +import React from "react"; + +const page = () => { + const number = "02188195164"; + return ( + <> +
    +
    + + +
    +
    +
    +

    + {" "} + , +

    +
    +
    +
    + +
    +
    +

    + به خدمات مشتری وسمه خوش آمدید +

    + +

    + امروز در مورد چه کمکی می خواهید؟ شما می‌توانید به سرعت از بسیاری + از موارد در اینجا مراقبت کنید، یا در صورت نیاز با ما ارتباط + برقرار کنید. +

    +
    + +
    +
    +
    +
    + {" "} + + + + +
    + +
    +

    + تحویل، سفارش یا بازگشت +

    +
    +
    +
    +
    + {" "} + + + + +
    + +
    +

    + امنیت و حریم خصوصی{" "} +

    +
    +
    +
    +
    + {" "} + + + +
    + +
    +

    + رمز عبور ورود{" "} +

    +
    +
    +
    +
    + {" "} + + + +
    + +
    +

    + پرداخت، شارژ یا کارت هدیه{" "} +

    +
    +
    +
    +
    + {" "} + + + +
    + +
    +

    + پرداخت، شارژ یا کارت هدیه{" "} +

    +
    +
    {" "} +
    +
    +
    +
    +
    + +
    +
    +

    + فروشگاه وسمه +

    +

    + اینجا جایی است که زیبایی شما به روشنی معنا پیدا می‌کند و هر آنچه که + برای بهترین نسخه خود نیاز دارید، در دسترس شماست. ما به افتخار اینکه + انتخابی برای زیبایی و اعتماد به نفس شما هستیم، بسیار خوشحالیم. در + فروشگاه وسمه، ما به دنبال ارائه محصولات با کیفیت و خدماتی استثنایی + هستیم تا به شما کمک کنیم تا به بهترین شکل ممکن زندگی کنید. اگر سوالی + دارید یا نیاز به راهنمایی دارید، تیم ما همیشه در دسترس است تا به شما + کمک کند. با افتخار ما را در فروشگاه "وسمه" به عنوان همراهی شما در + مسیر زیبایی و اعتماد به نفس خوش آمدید. با احترام و دوستی، تیم + فروشگاه "وسمه +

    +
    +
    +
    +
    +

    تماس

    +
    + +
    + {" "} +
    +
    + +
    +
    +

    ایمیل

    +
    + +
    +

    info@vesmeh.com

    +
    +
    + +
    +
    +

    آدرس

    +
    + +
    +

    + تهران، خیابان گاندی جنوبی, خیابان خالد اسلامبولی, پلاک128{" "} +

    {" "} +
    +
    +
    +
    + +