check
parent
a1aaf8040a
commit
03e98063c0
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
// 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}"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -16,4 +16,4 @@ CMD ["node_modules/.bin/next", "start"]
|
|||
|
||||
|
||||
# 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
|
||||
# docker push registry.vnfco.ir/netinashop/vesmeh:1.0.4.6~
|
|
@ -61,8 +61,8 @@ const ProductData = ({ params, data }) => {
|
|||
return (
|
||||
<>
|
||||
<Navbar theme={1} />
|
||||
<div className=" py-10">
|
||||
<div className="grid xs:grid-cols-1 lg:grid-cols-8 rtl gap-6 lg:px-20">
|
||||
<div className="py-10 ">
|
||||
<div className="grid gap-6 xs:grid-cols-1 lg:grid-cols-8 rtl lg:px-20">
|
||||
<div className="lg:col-span-3 ">
|
||||
<GalleryBox file={data?.product?.files} />
|
||||
</div>
|
||||
|
@ -78,18 +78,18 @@ const ProductData = ({ params, data }) => {
|
|||
</div>
|
||||
|
||||
<div className="flex my-4">
|
||||
<div className="bg-primary-400 rounded-full py-1 px-3 ml-2">
|
||||
<div className="px-3 py-1 ml-2 rounded-full bg-primary-400">
|
||||
<p className="mb-0 text-sm text-white ">اصالت کالای </p>
|
||||
</div>
|
||||
|
||||
{data?.product?.hasDiscount && (
|
||||
<div className="bg-danger-100 rounded-full py-1 px-3 ml-2">
|
||||
<div className="px-3 py-1 ml-2 rounded-full bg-danger-100">
|
||||
<p className="mb-0 text-sm text-white ">بمب امروز </p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{!data?.product?.warranty == "" && (
|
||||
<div className="bg-secondary-500 rounded-full py-1 px-3 ml-2">
|
||||
<div className="px-3 py-1 ml-2 rounded-full bg-secondary-500">
|
||||
<p className="mb-0 text-sm text-white ">
|
||||
{product?.warranty}
|
||||
</p>
|
||||
|
@ -108,18 +108,18 @@ const ProductData = ({ params, data }) => {
|
|||
</div> */}
|
||||
|
||||
<div>
|
||||
<div className="text-right mt-3 flex justify-between">
|
||||
<h2 className="mb-0 text-gray-400 text-sm">
|
||||
<div className="flex justify-between mt-3 text-right">
|
||||
<h2 className="mb-0 text-sm text-gray-400">
|
||||
{data?.product?.summery}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul className="mt-3 px-3">
|
||||
<ul className="px-3 mt-3">
|
||||
{specificationsHeader.map((e, index) => (
|
||||
<li className=" flex my-2" key={index}>
|
||||
<li className="flex my-2 " key={index}>
|
||||
<div className="w-[10px] h-[10px] relative rounded-full bg-primary-500 mt-1"></div>
|
||||
<p className="mb-0 w-full text-sm text-gray-700 mx-2 ">
|
||||
<p className="w-full mx-2 mb-0 text-sm text-gray-700 ">
|
||||
{e}
|
||||
</p>
|
||||
</li>
|
||||
|
@ -136,7 +136,7 @@ const ProductData = ({ params, data }) => {
|
|||
{data?.product?.files?.length > 0 ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${
|
||||
product.files && product.files[0].fileLocation
|
||||
product.files && product.files[0]?.fileLocation
|
||||
}`}
|
||||
width={350}
|
||||
height={350}
|
||||
|
@ -158,7 +158,7 @@ const ProductData = ({ params, data }) => {
|
|||
</div>
|
||||
</div>
|
||||
<div className="text-center">
|
||||
<p className="mb-0 text-sm text-gray-500 my-2">
|
||||
<p className="my-2 mb-0 text-sm text-gray-500">
|
||||
{data?.product?.persianName}{" "}
|
||||
</p>
|
||||
</div>
|
||||
|
@ -196,7 +196,7 @@ const ProductData = ({ params, data }) => {
|
|||
|
||||
<div className="w-6/12 mx-auto h-[1px] bg-gray-200 mt-4"></div>
|
||||
|
||||
<div className=" mt-4 flex justify-between ">
|
||||
<div className="flex justify-between mt-4 ">
|
||||
{true ? (
|
||||
<div className="flex justify-end">
|
||||
<div className="mb-0 font-bold text-sm absolute mt-[-11px] ml-[0px] right-0 mr-[13px] text-red-600 flex rtl">
|
||||
|
@ -222,7 +222,7 @@ const ProductData = ({ params, data }) => {
|
|||
) : (
|
||||
<div className="flex rtl mt-[3px]">
|
||||
{" "}
|
||||
<p className="mb-0 font-bold text-lg">
|
||||
<p className="mb-0 text-lg font-bold">
|
||||
<PersianNumber
|
||||
number={(data?.cost / 10).toLocaleString()}
|
||||
/>
|
||||
|
@ -237,7 +237,7 @@ const ProductData = ({ params, data }) => {
|
|||
|
||||
<div className="lg:col-span-6">
|
||||
<div className="xs:px-[15px] lg:px-[100px]">
|
||||
<div className="bg-gray-200 rounded-full xs:p-1 lg:p-3 flex w-fit sticky top-0 ">
|
||||
<div className="sticky top-0 flex bg-gray-200 rounded-full xs:p-1 lg:p-3 w-fit ">
|
||||
<div
|
||||
className={` rounded-full xs:p-2 lg:p-3 cursor-pointer tr03 ${
|
||||
productBarDetail == 0 ? "bg-primary-500 text-gray-100" : ""
|
||||
|
@ -283,7 +283,7 @@ const ProductData = ({ params, data }) => {
|
|||
</div>
|
||||
|
||||
<div id="section0">
|
||||
<h3 className=" text-sm text-gray-400 mt-7 mb-2">
|
||||
<h3 className="mb-2 text-sm text-gray-400 mt-7">
|
||||
مشخصات محصول
|
||||
</h3>
|
||||
<div className="min-w-[200px] mt-5 rounded-xl overflow-hidden border rtl ">
|
||||
|
@ -296,7 +296,7 @@ const ProductData = ({ params, data }) => {
|
|||
>
|
||||
<p className="mb-0 text-sm text-gray-600">
|
||||
{e.title}:
|
||||
<small className="text-sm text-gray-800 font-bold ">
|
||||
<small className="text-sm font-bold text-gray-800 ">
|
||||
{" "}
|
||||
{e.value}{" "}
|
||||
</small>
|
||||
|
@ -307,12 +307,12 @@ const ProductData = ({ params, data }) => {
|
|||
</div>
|
||||
|
||||
<div id="section2">
|
||||
<h3 className=" text-sm text-gray-400 mt-7 mb-2">
|
||||
<h3 className="mb-2 text-sm text-gray-400 mt-7">
|
||||
نقد و برسی{" "}
|
||||
</h3>
|
||||
|
||||
{!!data?.product.expertCheck ? (
|
||||
<div className="border p-5 rounded-lg">
|
||||
<div className="p-5 border rounded-lg">
|
||||
<div
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: data?.product.expertCheck,
|
||||
|
@ -320,9 +320,9 @@ const ProductData = ({ params, data }) => {
|
|||
/>
|
||||
</div>
|
||||
) : (
|
||||
<div className="border p-5 rounded-lg">
|
||||
<div className="p-5 border rounded-lg">
|
||||
<div className="flex justify-center py-5">
|
||||
<div className="bg-white shadow w-fit rounded-full text-sm p-4">
|
||||
<div className="p-4 text-sm bg-white rounded-full shadow w-fit">
|
||||
چیزی یافت نشد
|
||||
</div>
|
||||
</div>
|
||||
|
@ -331,12 +331,12 @@ const ProductData = ({ params, data }) => {
|
|||
</div>
|
||||
|
||||
<div id="section3">
|
||||
<h3 className=" text-sm text-gray-400 mt-7 mb-2">
|
||||
<h3 className="mb-2 text-sm text-gray-400 mt-7">
|
||||
دیدگاه مخاطبان{" "}
|
||||
</h3>
|
||||
<div className="border p-5 rounded-lg">
|
||||
<div className="p-5 border rounded-lg">
|
||||
<div className="flex justify-center py-5">
|
||||
<div className="bg-white shadow w-fit rounded-full text-sm p-4">
|
||||
<div className="p-4 text-sm bg-white rounded-full shadow w-fit">
|
||||
چیزی یافت نشد
|
||||
</div>
|
||||
</div>
|
||||
|
@ -344,9 +344,9 @@ const ProductData = ({ params, data }) => {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="xs:block lg:hidden sticky bottom-0 ">
|
||||
<div className="sticky bottom-0 xs:block lg:hidden ">
|
||||
<div className="w-full bg-[white] p-2 border-t-[1px] border-gray-100 mt-[30px]">
|
||||
<div className="py-4 flex ltr justify-between px-4 relative">
|
||||
<div className="relative flex justify-between px-4 py-4 ltr">
|
||||
{product?.hasDiscount ? (
|
||||
<>
|
||||
<p className="mb-0 font-bold text-sm absolute ml-[33px] opacity-30 mt-[-5px] text-red-600">
|
||||
|
@ -372,7 +372,7 @@ const ProductData = ({ params, data }) => {
|
|||
) : (
|
||||
<div className="flex rtl mt-[3px]">
|
||||
{" "}
|
||||
<p className="mb-0 font-bold text-lg">
|
||||
<p className="mb-0 text-lg font-bold">
|
||||
<PersianNumber
|
||||
number={(data?.product?.cost / 10).toLocaleString()}
|
||||
/>
|
||||
|
|
|
@ -24,15 +24,15 @@ const BlogData = ({ data }) => {
|
|||
<div>
|
||||
<Navbar />
|
||||
|
||||
<div className="xs:px-3 md:px-5 md:container md:mx-auto mb-10">
|
||||
<div className="grid xs:grid-cols-1 lg:grid-cols-6 gap-7 rtl">
|
||||
<div className="lg:col-span-4 mt-10 rtl">
|
||||
<div className=" mt-10 ">
|
||||
<div className="mb-10 xs:px-3 md:px-5 md:container md:mx-auto">
|
||||
<div className="grid xs:grid-cols-1 lg:grid-cols-6 gap-7 rtl">
|
||||
<div className="mt-10 lg:col-span-4 rtl">
|
||||
<div className="mt-10 ">
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/Images/Med/${data.mainImage}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/Images/Med/${data?.mainImage}`}
|
||||
width={500}
|
||||
height={500}
|
||||
className="xs:w-full lg:w-6/12 rounded-3xl mb-3"
|
||||
className="mb-3 xs:w-full lg:w-6/12 rounded-3xl"
|
||||
/>
|
||||
<h1 className=" font-bold text-right xs:text-[20px] lg:text-[40px]">
|
||||
{data.title}
|
||||
|
@ -45,7 +45,7 @@ const BlogData = ({ data }) => {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="lg:col-span-2 mt-10 rtl ">
|
||||
<div className="mt-10 lg:col-span-2 rtl ">
|
||||
<SliderProductsOffer data={specialOfferData} />
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -15,10 +15,10 @@ const CardCart = ({ data }) => {
|
|||
return (
|
||||
<div className="group border-t-[1px] border-gray-100 w-full hover:bg-white z-40 tr03 flex rtl pt-2">
|
||||
<Link href={`/products/${data.id}/${hyphenatedName}`}>
|
||||
<div className=" h-fit ">
|
||||
<div className=" h-fit">
|
||||
{!!data.mainImage ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data.mainImage}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data?.mainImage}`}
|
||||
width={100}
|
||||
height={100}
|
||||
className="xs:!w-[110px] lg:!w-[130px] mx-auto !object-cover"
|
||||
|
@ -35,19 +35,19 @@ const CardCart = ({ data }) => {
|
|||
)}
|
||||
</div>
|
||||
</Link>
|
||||
<div className="p-3 text-right w-full">
|
||||
<div className="w-full p-3 text-right">
|
||||
<Link href={`/products/${data.id}/${hyphenatedName}`}>
|
||||
<p className="mb-0 xs:text-[12px] lg:text-[11px] xl:text-[15px] max-h-[50px] tr03 ">
|
||||
{data?.persianName}
|
||||
</p>
|
||||
</Link>
|
||||
|
||||
<div className=" rounded-full flex ltr pt-2 mt-2 w-full">
|
||||
<div className="flex w-full pt-2 mt-2 rounded-full ltr">
|
||||
<AddToCart data={data} theme={1} />
|
||||
|
||||
<div className="w-full text-right rounded-full">
|
||||
<div className="w-full text-right rounded-full">
|
||||
{data?.hasDiscount ? (
|
||||
<div className="flex justify-end relative">
|
||||
<div className="relative flex justify-end">
|
||||
<p className="mb-0 font-bold text-sm absolute opacity-40 mt-[-7px] ml-[20px] text-red-600">
|
||||
<del>
|
||||
<PersianNumber
|
||||
|
@ -69,7 +69,7 @@ const CardCart = ({ data }) => {
|
|||
) : (
|
||||
<div className="flex rtl mt-[3px]">
|
||||
{" "}
|
||||
<p className="mb-0 font-bold text-lg">
|
||||
<p className="mb-0 text-lg font-bold">
|
||||
<PersianNumber number={(data?.cost / 10).toLocaleString()} />
|
||||
</p>
|
||||
<small className="mr-1 mt-[6px]">تومان</small>
|
||||
|
|
|
@ -15,7 +15,7 @@ const CardCategories = ({ data }) => {
|
|||
const hyphenatedName = hyphenateString(data.persianName);
|
||||
|
||||
return (
|
||||
<div className="group border border-gray-50 w-full hover:bg-white z-40 tr03">
|
||||
<div className="z-40 w-full border group border-gray-50 hover:bg-white tr03">
|
||||
<>
|
||||
<div
|
||||
className={` tr03 py-2 overflow-hidden xs:h-[200px] lg:h-[230px] ${
|
||||
|
@ -26,7 +26,7 @@ const CardCategories = ({ data }) => {
|
|||
>
|
||||
{data.hasDiscount && (
|
||||
<div className="absolute m-3 ">
|
||||
<div className="w-fit rounded-lg bg-red-600 overflow-hidden px-1 ">
|
||||
<div className="px-1 overflow-hidden bg-red-600 rounded-lg w-fit ">
|
||||
<p className="mb-0 text-[10px] text-white pt-[3px] ">
|
||||
<PersianNumber
|
||||
number={data.discountPercent}
|
||||
|
@ -38,7 +38,7 @@ const CardCategories = ({ data }) => {
|
|||
</div>
|
||||
)}
|
||||
{data.hasDiscount && (
|
||||
<div className=" m-3 ">
|
||||
<div className="m-3 ">
|
||||
<div className="absolute mt-[30px] ">
|
||||
<div className="w-fit rounded-lg bg-secondary-600 overflow-hidden px-2 !py-0 h-fit ">
|
||||
<p className="mb-0 text-white text-[10px] ">اصالت کالا</p>
|
||||
|
@ -47,10 +47,10 @@ const CardCategories = ({ data }) => {
|
|||
</div>
|
||||
)}
|
||||
<Link href={`/products/${data.id}/${hyphenatedName}`}>
|
||||
<div className="w-full h-fit flex justify-center ">
|
||||
<div className="flex justify-center w-full h-fit ">
|
||||
{!!data.mainImage ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data.mainImage}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data?.mainImage}`}
|
||||
width={200}
|
||||
height={200}
|
||||
className="xs:!w-[110px] lg:!w-[130px] mx-auto"
|
||||
|
@ -81,11 +81,11 @@ const CardCategories = ({ data }) => {
|
|||
</div>
|
||||
</>
|
||||
|
||||
<div className=" rounded-full flex ltr p-3 mt-2">
|
||||
<div className="flex p-3 mt-2 rounded-full ltr">
|
||||
<div className="flex w-full">
|
||||
<AddToCart data={data} theme={1} />
|
||||
</div>
|
||||
<div className="w-full text-right rounded-full">
|
||||
<div className="w-full text-right rounded-full">
|
||||
{data?.hasDiscount ? (
|
||||
<div className="flex justify-end">
|
||||
<p className="mb-0 font-bold text-sm absolute opacity-40 mt-[-7px] ml-[20px] text-red-600">
|
||||
|
@ -109,7 +109,7 @@ const CardCategories = ({ data }) => {
|
|||
) : (
|
||||
<div className="flex rtl mt-[3px]">
|
||||
{" "}
|
||||
<p className="mb-0 font-bold text-lg">
|
||||
<p className="mb-0 text-lg font-bold">
|
||||
<PersianNumber number={(data?.cost / 10).toLocaleString()} />
|
||||
</p>
|
||||
<small className="mr-1 mt-[6px]">تومان</small>
|
||||
|
|
|
@ -17,10 +17,10 @@ const CardCategoriesMobile = ({ data }) => {
|
|||
return (
|
||||
<div className="group border-t-[1px] border-gray-200 w-full hover:bg-white z-40 tr03 flex rtl pt-2 px-3">
|
||||
<Link href={`/products/${data.id}/${hyphenatedName}`}>
|
||||
<div className=" h-fit ">
|
||||
<div className=" h-fit">
|
||||
{!!data.mainImage ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data.mainImage}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data?.mainImage}`}
|
||||
width={200}
|
||||
height={200}
|
||||
className="xs:!w-[110px] lg:!w-[130px] mx-auto "
|
||||
|
@ -38,7 +38,7 @@ const CardCategoriesMobile = ({ data }) => {
|
|||
</div>
|
||||
</Link>
|
||||
|
||||
<div className="p-3 text-right w-full">
|
||||
<div className="w-full p-3 text-right">
|
||||
{" "}
|
||||
<Link href={`/products/${data.id}/${hyphenatedName}`}>
|
||||
<p className="mb-0 xs:text-[12px] lg:text-[11px] xl:text-[15px] max-h-[50px] tr03 ">
|
||||
|
@ -50,9 +50,9 @@ const CardCategoriesMobile = ({ data }) => {
|
|||
{data.stock} عدد موجود انبار
|
||||
</p>
|
||||
)}
|
||||
<div className=" rounded-full flex ltr pt-2 mt-2 w-full">
|
||||
<div className="flex w-full pt-2 mt-2 rounded-full ltr">
|
||||
<AddToCart data={data} theme={1} />{" "}
|
||||
<div className="w-full text-right rounded-lg">
|
||||
<div className="w-full text-right rounded-lg">
|
||||
{data?.hasDiscount ? (
|
||||
<div className="flex justify-end">
|
||||
<div className="mb-0 font-bold text-sm absolute mt-[-7px] ml-[20px] text-red-600 flex rtl">
|
||||
|
@ -84,7 +84,7 @@ const CardCategoriesMobile = ({ data }) => {
|
|||
) : (
|
||||
<div className="flex rtl mt-[3px]">
|
||||
{" "}
|
||||
<p className="mb-0 font-bold text-lg">
|
||||
<p className="mb-0 text-lg font-bold">
|
||||
<PersianNumber number={(data?.cost / 10).toLocaleString()} />
|
||||
</p>
|
||||
<small className="mr-1 mt-[6px]">تومان</small>
|
||||
|
|
|
@ -30,7 +30,7 @@ const CardNormal = ({ data, priority }) => {
|
|||
>
|
||||
{data.hasDiscount && (
|
||||
<div className="absolute m-3 ">
|
||||
<div className="w-fit rounded-lg bg-red-600 overflow-hidden px-1 ">
|
||||
<div className="px-1 overflow-hidden bg-red-600 rounded-lg w-fit ">
|
||||
<p className="mb-0 text-[10px] text-white pt-[3px] ">
|
||||
<PersianNumber
|
||||
number={data.discountPercent}
|
||||
|
@ -42,10 +42,10 @@ const CardNormal = ({ data, priority }) => {
|
|||
</div>
|
||||
)}
|
||||
|
||||
<div className="w-full h-fit flex justify-center ">
|
||||
<div className="flex justify-center w-full h-fit ">
|
||||
{!!data.mainImage ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data.mainImage}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data?.mainImage}`}
|
||||
width={200}
|
||||
height={200}
|
||||
className="xs:!w-[110px] lg:!w-[130px] mx-auto"
|
||||
|
@ -76,12 +76,12 @@ const CardNormal = ({ data, priority }) => {
|
|||
</div>
|
||||
</Link>
|
||||
</>
|
||||
<div className="bg-gray-50 rounded-lg flex ltr p-1 mt-2 border border-gray-100">
|
||||
<div className="flex p-1 mt-2 border border-gray-100 rounded-lg bg-gray-50 ltr">
|
||||
<div className="flex w-full">
|
||||
<AddToCart data={data} theme={1} />
|
||||
</div>
|
||||
|
||||
<div className="w-full text-right rounded-full pr-2">
|
||||
<div className="w-full pr-2 text-right rounded-full">
|
||||
{data?.hasDiscount ? (
|
||||
<>
|
||||
<p className="mb-0 font-bold text-sm absolute right-3 opacity-30 mt-[-5px] text-red-600">
|
||||
|
@ -105,7 +105,7 @@ const CardNormal = ({ data, priority }) => {
|
|||
) : (
|
||||
<div className="flex rtl mt-[3px]">
|
||||
{" "}
|
||||
<p className="mb-0 font-bold text-lg">
|
||||
<p className="mb-0 text-lg font-bold">
|
||||
<PersianNumber number={(data?.cost / 10).toLocaleString()} />
|
||||
</p>
|
||||
<small className="mr-1 mt-[6px]">تومان</small>
|
||||
|
|
|
@ -28,7 +28,7 @@ const CardSurprise = ({ data, priority }) => {
|
|||
>
|
||||
{data.hasDiscount && (
|
||||
<div className="absolute m-3 ">
|
||||
<div className="w-fit rounded-lg bg-red-600 overflow-hidden px-1 ">
|
||||
<div className="px-1 overflow-hidden bg-red-600 rounded-lg w-fit ">
|
||||
<p className="mb-0 text-[10px] text-white pt-[3px] ">
|
||||
<PersianNumber
|
||||
number={data.discountPercent}
|
||||
|
@ -40,10 +40,10 @@ const CardSurprise = ({ data, priority }) => {
|
|||
</div>
|
||||
)}
|
||||
|
||||
<div className="w-full h-fit flex justify-center ">
|
||||
<div className="flex justify-center w-full h-fit ">
|
||||
{!!data.mainImage ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data.mainImage}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${data?.mainImage}`}
|
||||
width={100}
|
||||
height={100}
|
||||
className="xs:!w-[110px] lg:!w-[130px] mx-auto !object-cover"
|
||||
|
@ -74,12 +74,12 @@ const CardSurprise = ({ data, priority }) => {
|
|||
</div>
|
||||
</Link>
|
||||
</>
|
||||
<div className="bg-gray-50 rounded-lg flex ltr p-1 mt-2 border border-gray-100">
|
||||
<div className="flex p-1 mt-2 border border-gray-100 rounded-lg bg-gray-50 ltr">
|
||||
<div className="flex w-full">
|
||||
<AddToCart data={data} theme={1} />
|
||||
</div>
|
||||
|
||||
<div className="w-full text-right rounded-full pr-2">
|
||||
<div className="w-full pr-2 text-right rounded-full">
|
||||
{data?.hasDiscount ? (
|
||||
<>
|
||||
<p className="mb-0 font-bold text-sm absolute right-3 opacity-30 mt-[-5px] text-red-600">
|
||||
|
@ -103,7 +103,7 @@ const CardSurprise = ({ data, priority }) => {
|
|||
) : (
|
||||
<div className="flex rtl mt-[3px]">
|
||||
{" "}
|
||||
<p className="mb-0 font-bold text-lg">
|
||||
<p className="mb-0 text-lg font-bold">
|
||||
<PersianNumber number={(data?.cost / 10).toLocaleString()} />
|
||||
</p>
|
||||
<small className="mr-1 mt-[6px]">تومان</small>
|
||||
|
|
|
@ -62,12 +62,12 @@ const HeroSection = () => {
|
|||
<Link
|
||||
href={slide.url}
|
||||
key={slide.id}
|
||||
className="w-full flex-shrink-0"
|
||||
className="flex-shrink-0 w-full"
|
||||
>
|
||||
<div className="block lg:hidden xs:mx-2 lg:mx-0">
|
||||
<Image
|
||||
src={slide.imageResponsive}
|
||||
alt={slide.title}
|
||||
src={slide?.imageResponsive}
|
||||
alt={slide?.title}
|
||||
className="!w-full xs:h-[200px] md:h-[400px] lg:h-[400px] xl:h-[650px] rounded-2xl lg:rounded-none object-cover"
|
||||
layout="responsive"
|
||||
width={800}
|
||||
|
@ -76,8 +76,8 @@ const HeroSection = () => {
|
|||
</div>
|
||||
<div className="hidden lg:block">
|
||||
<Image
|
||||
src={slide.image}
|
||||
alt={slide.title}
|
||||
src={slide?.image}
|
||||
alt={slide?.title}
|
||||
className="!w-full xs:h-[200px] md:h-[400px] lg:h-[400px] xl:h-[650px] rounded-2xl lg:rounded-none object-cover "
|
||||
layout="responsive"
|
||||
width={800}
|
||||
|
|
|
@ -36,7 +36,7 @@ const ResultSearchBar = ({
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className=" overflow-x-auto flex whitespace-nowrap hide-scrollBar ">
|
||||
<div className="flex overflow-x-auto whitespace-nowrap hide-scrollBar">
|
||||
<Link
|
||||
href={`/categories/fac3ee2d-19dd-4229-a412-28a1d09cc948/شامپو-بدن`}
|
||||
>
|
||||
|
@ -79,7 +79,7 @@ const ResultSearchBar = ({
|
|||
href={`/categories/${e.id}/${e.name.split(" ").join("-")}`}
|
||||
>
|
||||
<div
|
||||
className="flex "
|
||||
className="flex "
|
||||
onClick={() => CTX.setCloseNavbar(false)}
|
||||
>
|
||||
<div className="w-[20px] h-[40px] rounded-2xl bg-gray-200 ml-2 mt-3">
|
||||
|
@ -95,7 +95,7 @@ const ResultSearchBar = ({
|
|||
</Link>
|
||||
))}
|
||||
|
||||
<div className="w-10 h-1 bg-primary-200 rounded-full opacity-35 my-3"></div>
|
||||
<div className="w-10 h-1 my-3 rounded-full bg-primary-200 opacity-35"></div>
|
||||
|
||||
{searchResultProductData?.map((e, index) => (
|
||||
<Link
|
||||
|
@ -103,14 +103,14 @@ const ResultSearchBar = ({
|
|||
href={`/products/${e.id}/${e.persianName.split(" ").join("-")}`}
|
||||
>
|
||||
<div
|
||||
className="flex relative "
|
||||
className="relative flex "
|
||||
onClick={() => CTX.setCloseNavbar(false)}
|
||||
>
|
||||
<div className="h-fit relative">
|
||||
<div className="relative h-fit">
|
||||
<div className="w-[50px] h-[50px] rounded-2xl bg-gray-200 ml-2 mt-3 overflow-hidden relative ">
|
||||
{!!e.mainImage ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${e.mainImage}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${e?.mainImage}`}
|
||||
width={200}
|
||||
height={200}
|
||||
className="xs:!w-[60px] lg:!w-[60px] mx-auto object-cover "
|
||||
|
@ -127,8 +127,8 @@ const ResultSearchBar = ({
|
|||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="my-2 w-full relative text-right">
|
||||
<p className="mb-0 text-sm ">{e.persianName}</p>
|
||||
<div className="relative w-full my-2 text-right">
|
||||
<p className="mb-0 text-sm ">{e.persianName}</p>
|
||||
<small className="text-[12px] text-gray-500 !text-right">
|
||||
محصول{" "}
|
||||
</small>
|
||||
|
@ -139,7 +139,7 @@ const ResultSearchBar = ({
|
|||
</>
|
||||
) : (
|
||||
<div className="flex justify-center py-5">
|
||||
<div className="bg-white shadow mt-5 w-fit rounded-full text-sm p-4">
|
||||
<div className="p-4 mt-5 text-sm bg-white rounded-full shadow w-fit">
|
||||
چیزی یافت نشد
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -4666,6 +4666,30 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"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",
|
||||
|
@ -5569,6 +5593,20 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "5.5.4",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
|
||||
"integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
|
||||
"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",
|
||||
|
|
|
@ -12,13 +12,13 @@ const GalleryBox = ({ file }) => {
|
|||
const isOpenLightBox = CTX.state.isOpenLightBox;
|
||||
|
||||
return (
|
||||
<div className=" w-full rounded-3xl">
|
||||
<div className="w-full rounded-3xl">
|
||||
<div className="flex justify-center xs:pb-[10px] ">
|
||||
<div className="">
|
||||
{file?.length > 0 ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${
|
||||
file && file[0].fileLocation
|
||||
file && file[0]?.fileLocation
|
||||
}`}
|
||||
width={350}
|
||||
height={350}
|
||||
|
@ -40,16 +40,16 @@ const GalleryBox = ({ file }) => {
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex overflow-x-auto p-3 " id="swich-scrollbar">
|
||||
<div className="flex p-3 overflow-x-auto " id="swich-scrollbar">
|
||||
{file?.map((e) => (
|
||||
<div
|
||||
className="rounded-3xl bg-white border shadow-sm p-3 ml-2"
|
||||
className="p-3 ml-2 bg-white border shadow-sm rounded-3xl"
|
||||
key={e.id}
|
||||
onClick={() => CTX.setIsOpenLightBox(true)}
|
||||
>
|
||||
<div className="xs:w-[50px] lg:w-[50px]">
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${e.fileLocation}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${e?.fileLocation}`}
|
||||
alt={e.fileName}
|
||||
width={50}
|
||||
height={50}
|
||||
|
|
|
@ -71,7 +71,7 @@ const MovingLogos = () => {
|
|||
</div>
|
||||
))} */}
|
||||
|
||||
<div className="xs:w-4/5 lg:w-3/5 mx-auto">
|
||||
<div className="mx-auto xs:w-4/5 lg:w-3/5">
|
||||
<div className="w-full inline-flex flex-nowrap overflow-hidden [mask-image:_linear-gradient(to_right,transparent_0,_black_100px,_black_calc(100%-100px),transparent_100%)]">
|
||||
<ul
|
||||
x-ref="logos"
|
||||
|
@ -82,7 +82,7 @@ const MovingLogos = () => {
|
|||
<Image
|
||||
key={e.id}
|
||||
id={`logo-${e.id}`}
|
||||
src={e.logo}
|
||||
src={e?.logo}
|
||||
alt={`Logo ${e.id}`}
|
||||
className="xs:w-[60px] lg:w-[100px]"
|
||||
/>
|
||||
|
|
|
@ -47,8 +47,8 @@ const BottomSheetSeeOrder = ({ id }) => {
|
|||
{/* {bag && bag.length > 0 && ( */}
|
||||
<div className="h-[900px]">
|
||||
{bag.orderProducts?.map((e) => (
|
||||
<div className="text-center p-3">
|
||||
<p className="mb-0 text-sm pb-3 rtl">
|
||||
<div className="p-3 text-center">
|
||||
<p className="pb-3 mb-0 text-sm rtl">
|
||||
<PersianNumber
|
||||
number={bag.orderProducts?.length}
|
||||
style="text-xl font-bold text-base font-bold mx-2 !text-primary-500"
|
||||
|
@ -61,10 +61,10 @@ const BottomSheetSeeOrder = ({ id }) => {
|
|||
{bag.orderProducts.map((e, index) => (
|
||||
<div className="group border-t-[1px] border-gray-100 w-full hover:bg-white z-40 tr03 flex rtl pt-2">
|
||||
<Link href={`/products/${e.id}/${e.persianName}`}>
|
||||
<div className=" h-fit ">
|
||||
<div className=" h-fit">
|
||||
{!!e.mainImage ? (
|
||||
<Image
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${e.mainImage}`}
|
||||
src={`${process.env.NEXT_PUBLIC_STORAGE_URL}/${e?.mainImage}`}
|
||||
width={100}
|
||||
height={100}
|
||||
className="xs:!w-[110px] lg:!w-[130px] mx-auto !object-cover"
|
||||
|
@ -81,16 +81,16 @@ const BottomSheetSeeOrder = ({ id }) => {
|
|||
)}
|
||||
</div>
|
||||
</Link>
|
||||
<div className="p-3 text-right w-full">
|
||||
<div className="w-full p-3 text-right">
|
||||
<Link href={`/products/${e.id}/${e.productName}`}>
|
||||
<p className="mb-0 xs:text-[12px] lg:text-[11px] xl:text-[15px] max-h-[50px] tr03 ">
|
||||
{e?.productName}
|
||||
</p>
|
||||
</Link>
|
||||
|
||||
<div className=" rounded-full flex ltr w-full">
|
||||
<div className="flex w-full rounded-full ltr">
|
||||
<div className="mt-3">
|
||||
<p className="mb-0 rtl text-sm">
|
||||
<p className="mb-0 text-sm rtl">
|
||||
<PersianNumber
|
||||
number={e?.count}
|
||||
style={"text-sm ml-1"}
|
||||
|
@ -98,9 +98,9 @@ const BottomSheetSeeOrder = ({ id }) => {
|
|||
عدد
|
||||
</p>
|
||||
</div>
|
||||
<div className="w-full text-right rounded-full">
|
||||
<div className="w-full text-right rounded-full">
|
||||
{e?.hasDiscount ? (
|
||||
<div className="flex justify-end relative">
|
||||
<div className="relative flex justify-end">
|
||||
<p className="mb-0 font-bold text-sm absolute opacity-40 mt-[-7px] ml-[20px] text-red-600">
|
||||
<del>
|
||||
<PersianNumber
|
||||
|
@ -126,7 +126,7 @@ const BottomSheetSeeOrder = ({ id }) => {
|
|||
) : (
|
||||
<div className="flex rtl mt-[3px]">
|
||||
{" "}
|
||||
<p className="mb-0 font-bold text-lg">
|
||||
<p className="mb-0 text-lg font-bold">
|
||||
<PersianNumber
|
||||
number={(e?.productFee / 10).toLocaleString()}
|
||||
/>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue