From c23de858dbac16a568b092bbb4342001ee4748c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D8=AD=D8=B3=DB=8C=D9=86=20=D9=85=D8=B9=D8=B5=D9=88=D9=85?= =?UTF-8?q?=DB=8C=20=D9=BE=D9=88=D8=B1?= Date: Sun, 3 Mar 2024 22:37:31 +0330 Subject: [PATCH] fix image --- components/AppsComponent/CartData/page.jsx | 35 +- .../AppsComponent/CheckoutData/page.jsx | 4 +- components/AppsComponent/RootData/page.jsx | 119 + components/Cards/CardNormal/page.jsx | 3 +- components/Footer/page.jsx | 2 +- components/LandingPage/BeautySection/page.jsx | 5 +- components/Navbar/CartNavbar/page.jsx | 5 +- components/TimerDown/TimerDown.jsx | 10 +- next.config.js | 6 + plugins/bottomSheet/BottomSheetSeeOrder.jsx | 152 ++ public/android-chrome-192x192.png | Bin 0 -> 3159 bytes public/android-chrome-512x512.png | Bin 0 -> 10004 bytes public/apple-touch-icon.png | Bin 0 -> 2839 bytes public/browserconfig.xml | 9 + public/favicon-16x16.png | Bin 0 -> 683 bytes public/favicon-32x32.png | Bin 0 -> 1102 bytes public/favicon.ico | Bin 0 -> 15086 bytes public/mstile-150x150.png | Bin 0 -> 2781 bytes public/next.svg | 1 - public/safari-pinned-tab.svg | 2153 +++++++++++++++++ public/site.webmanifest | 19 + public/vercel.svg | 1 - src/app/layout.jsx | 13 + src/app/page.jsx | 8 +- src/app/product/[slug]/page.jsx | 7 + src/app/profile/orders/page.jsx | 129 +- 26 files changed, 2600 insertions(+), 81 deletions(-) create mode 100644 plugins/bottomSheet/BottomSheetSeeOrder.jsx create mode 100644 public/android-chrome-192x192.png create mode 100644 public/android-chrome-512x512.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/browserconfig.xml create mode 100644 public/favicon-16x16.png create mode 100644 public/favicon-32x32.png create mode 100644 public/favicon.ico create mode 100644 public/mstile-150x150.png delete mode 100644 public/next.svg create mode 100644 public/safari-pinned-tab.svg create mode 100644 public/site.webmanifest delete mode 100644 public/vercel.svg create mode 100644 src/app/product/[slug]/page.jsx diff --git a/components/AppsComponent/CartData/page.jsx b/components/AppsComponent/CartData/page.jsx index fddcf37..874500f 100644 --- a/components/AppsComponent/CartData/page.jsx +++ b/components/AppsComponent/CartData/page.jsx @@ -25,40 +25,7 @@ const CartData = () => { ); 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 - } + CTX.GoCheckOut(); }; useEffect(() => { diff --git a/components/AppsComponent/CheckoutData/page.jsx b/components/AppsComponent/CheckoutData/page.jsx index 9c77912..b2b6a8d 100644 --- a/components/AppsComponent/CheckoutData/page.jsx +++ b/components/AppsComponent/CheckoutData/page.jsx @@ -362,9 +362,9 @@ const CheckoutData = () => {

حساب نهایی

-
+ {/*

مشاهده اقلام

-
+
*/}
diff --git a/components/AppsComponent/RootData/page.jsx b/components/AppsComponent/RootData/page.jsx index 4a44983..89ca48e 100644 --- a/components/AppsComponent/RootData/page.jsx +++ b/components/AppsComponent/RootData/page.jsx @@ -31,10 +31,12 @@ const RootData = ({ children }) => { const [bottomSheetDiscountOpen, setBottomSheetDiscountOpen] = useState(false); const [bottomSheetAddressOpen, setBottomSheetAddressOpen] = useState(false); const [bottomSheetLogOutOpen, setBottomSheetLogOutOpen] = useState(false); + const [bottomSheetSeeOrderOpen, setBottomSheetSeeOrderOpen] = useState(false); const [bottomSheetDeleteAddressOpen, setBottomSheetDeleteAddressOpen] = useState(false); const [checkOutData, setCheckOutData] = useState([]); const [addressData, setAddressData] = useState([]); + const [orderUser, setOrderUser] = useState([]); const [profile, setProfile] = useState([]); const [stopProducts, setStopProducts] = useState(false); const [pageGetProducts, setPageGetProducts] = useState(0); @@ -49,6 +51,8 @@ const RootData = ({ children }) => { const router = useRouter(); + console.log("cart", cart); + const AddItemToCart = ( id, persianName, @@ -231,6 +235,27 @@ const RootData = ({ children }) => { } }; + const fetchOrderUser = async () => { + try { + const data = await Chapar.get( + `${process.env.NEXT_PUBLIC_API_URL}/user/order`, + { + headers: { + Authorization: localStorage.getItem("token"), + }, + } + ); + + setOrderUser(data); + } catch ({ error, status }) { + toast.error(`${error?.response?.data?.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + setLoading(false); + } + }; + const fetchUserInfo = async () => { try { const data = await Chapar.get( @@ -252,6 +277,92 @@ const RootData = ({ children }) => { } }; + const fetchOrderBagCheck = async () => { + console.log(cart); + const productsToSend = cart.map((item) => ({ + productId: item.id, + count: parseInt(item.count), + })); + + console.log(productsToSend); + + try { + const data = await Chapar.post( + `${process.env.NEXT_PUBLIC_API_URL}/order/bag/check`, + + JSON.stringify(productsToSend) + ); + + const updatedCart = cart + .map((item) => { + const updatedCartItem = data.find( + (updatedItem) => updatedItem.productId === item.id + ); + if (updatedCartItem) { + if (updatedCartItem.isRemoved || !updatedCartItem.isEnable) { + // Item is removed or not enabled, remove from cart + return null; + } else { + return { + ...item, + cost: updatedCartItem.cost, + costWithDiscount: updatedCartItem.costWithDiscount, + }; + } + } else { + return item; + } + }) + .filter(Boolean); // Filter out null entries (removed items) + + setCart(updatedCart); + localStorage.setItem("cart", JSON.stringify(updatedCart)); // Save updatedCart to localStorage + } catch ({ error, status }) { + toast.error(`${error?.response?.data?.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + } + }; + + const GoCheckOut = 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/submit`, + + JSON.stringify(productsToSend), + + { + headers: { + Authorization: localStorage.getItem("token"), + }, + } + ); + + 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(() => { const storedCart = localStorage.getItem("cart"); const token = localStorage.getItem("token"); @@ -289,6 +400,7 @@ const RootData = ({ children }) => { mediaQuery.removeEventListener("change", listener); }; }, []); + return ( { rangePrice, selectedBrands, isChecked, + orderUser, + bottomSheetSeeOrderOpen, }, setCart, setProducts, @@ -343,7 +457,9 @@ const RootData = ({ children }) => { setIsRangePrice, setRangePrice, setSelectedBrands, + setBottomSheetSeeOrderOpen, setIsChecked, + setOrderUser, AddItemToCart, RemoveItemFromCart, fetchNavData, @@ -351,6 +467,9 @@ const RootData = ({ children }) => { setCloseNavbar, setAddressData, fetchAddressUser, + fetchOrderBagCheck, + fetchOrderUser, + GoCheckOut, }} > {children} diff --git a/components/Cards/CardNormal/page.jsx b/components/Cards/CardNormal/page.jsx index a47844e..cce89f2 100644 --- a/components/Cards/CardNormal/page.jsx +++ b/components/Cards/CardNormal/page.jsx @@ -9,7 +9,7 @@ import AppContext from "@ctx/AppContext"; import AddToCart from "../Components/AddToCart/page"; import Link from "next/link"; -const CardNormal = ({ data }) => { +const CardNormal = ({ data, priority }) => { const CTX = useContext(AppContext); const cart = CTX.state.cart; console.log(data); @@ -47,6 +47,7 @@ const CardNormal = ({ data }) => { width={200} height={200} className="xs:!w-[110px] lg:!w-[130px] mx-auto" + priority={!!priority} alt={`${data.persianName} - ${data.englishName}`} /> ) : ( diff --git a/components/Footer/page.jsx b/components/Footer/page.jsx index b244a24..7bf4a14 100644 --- a/components/Footer/page.jsx +++ b/components/Footer/page.jsx @@ -201,7 +201,7 @@ const Footer = () => {

- استفاده از مطالب فروشگاه شاواز فقط برای مقاصد غیرتجاری و باذکر منبع + استفاده از مطالب فروشگاه وسمه فقط برای مقاصد غیرتجاری و باذکر منبع بلامانع است. کلیه حقوق این سایت متعلق به شرکت وسمه می باشد. ورژن {process.env.NEXT_PUBLIC_PACKAGE_VERSION}

diff --git a/components/LandingPage/BeautySection/page.jsx b/components/LandingPage/BeautySection/page.jsx index 45f0152..56f42c6 100644 --- a/components/LandingPage/BeautySection/page.jsx +++ b/components/LandingPage/BeautySection/page.jsx @@ -2,7 +2,6 @@ import CardNormal from "@comp/Cards/CardNormal/page"; import { Swiper, SwiperSlide } from "swiper/react"; const BeautySection = ({ data }) => { - console.log("BeautySection", data); return (
@@ -35,8 +34,8 @@ const BeautySection = ({ data }) => { spaceBetween={50} slidesPerView={6.2} onSlideChange={() => console.log("slide change")} - onSwiper={(swiper) => console.log(swiper)} className="rtl relative mt-5" + // dir="rtl" breakpoints={{ 320: { slidesPerView: 1.3, @@ -57,7 +56,7 @@ const BeautySection = ({ data }) => { > {data?.map((e, index) => ( - + ))} diff --git a/components/Navbar/CartNavbar/page.jsx b/components/Navbar/CartNavbar/page.jsx index 6198126..534ae15 100644 --- a/components/Navbar/CartNavbar/page.jsx +++ b/components/Navbar/CartNavbar/page.jsx @@ -66,7 +66,10 @@ const CartNavbar = (props) => {

*/} - diff --git a/components/TimerDown/TimerDown.jsx b/components/TimerDown/TimerDown.jsx index 00c3817..c6e651e 100644 --- a/components/TimerDown/TimerDown.jsx +++ b/components/TimerDown/TimerDown.jsx @@ -46,7 +46,7 @@ const TimerDown = () => { }, []); return ( -
+

{ />

-

روز

+

روز

@@ -65,7 +65,7 @@ const TimerDown = () => { style={"text-[27px] text-red-900 "} />

-

ساعت

+

ساعت

@@ -74,7 +74,7 @@ const TimerDown = () => { style={"text-[27px] text-red-900 "} />

-

دقیقه

+

دقیقه

@@ -85,7 +85,7 @@ const TimerDown = () => { style={"text-[27px] text-red-900 "} />

-

ثانیه

+

ثانیه

diff --git a/next.config.js b/next.config.js index 51f61fb..9135059 100644 --- a/next.config.js +++ b/next.config.js @@ -3,6 +3,12 @@ const nextConfig = { reactStrictMode: false, // React Strict Mode is off images: { domains: ["storage.vesmook.com"], + remotePatterns: [ + { + protocol: "https", + hostname: "storage.vesmook.com", + }, + ], }, }; diff --git a/plugins/bottomSheet/BottomSheetSeeOrder.jsx b/plugins/bottomSheet/BottomSheetSeeOrder.jsx new file mode 100644 index 0000000..98dc0df --- /dev/null +++ b/plugins/bottomSheet/BottomSheetSeeOrder.jsx @@ -0,0 +1,152 @@ +"use client"; + +import CardCart from "@comp/Cards/CardCart/page"; +import AppContext from "@ctx/AppContext"; +import Image from "next/image"; +import Link from "next/link"; +import Chapar from "plugins/Chapar"; +import PersianNumber from "plugins/PersianNumber"; +import { useContext, useState } from "react"; +import { BottomSheet } from "react-spring-bottom-sheet"; +import { toast } from "react-toastify"; +import logo from "@img/logo.png"; + +const BottomSheetSeeOrder = ({ id }) => { + console.log("id", id); + const CTX = useContext(AppContext); + + const [bag, setBag] = useState([]); + + const handleOpen = async (e) => { + if (e.type == "OPEN") { + try { + const data = await Chapar.get( + `${process.env.NEXT_PUBLIC_API_URL}/order/${id}`, + { + headers: { + Authorization: localStorage.getItem("token"), + }, + } + ); + setBag(data); + } catch ({ error, status }) { + toast.error(`${error?.response?.data?.message}`, { + position: "bottom-right", + closeOnClick: true, + }); + } + } + }; + + return ( + handleOpen(e)} + open={CTX.state.bottomSheetSeeOrderOpen} + onDismiss={() => CTX.setBottomSheetSeeOrderOpen(false)} + className={"z-50 relative"} + > + {/* {bag && bag.length > 0 && ( */} +
+ {bag.orderProducts?.map((e) => ( +
+

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

+ + {/*
*/} +
+ {bag.orderProducts.map((e, index) => ( +
+ +
+ {!!e.mainImage ? ( + {`${e.productName} + ) : ( +
+ وسمه +
+ )} +
+ +
+ +

+ {e?.productName} +

+ + +
+
+

+ + عدد +

+
+
+ {e?.hasDiscount ? ( +
+

+ + + +

+
+ {" "} +

+ +

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

+ +

+ تومان +
+ )} +
+
+
+
+ ))} +
+
+ ))} +
+ {/* )} */} +
+ ); +}; + +export default BottomSheetSeeOrder; diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..49d9a611c4e6c1790c1f0440a8da314e14524b32 GIT binary patch literal 3159 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 literal 0 HcmV?d00001 diff --git a/public/browserconfig.xml b/public/browserconfig.xml new file mode 100644 index 0000000..98d065e --- /dev/null +++ b/public/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #2ab0da + + + diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..18a5dec27a1b0cf7d8ba8568f4cb065052516952 GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>dS0%&M?e4CA;*Z^OhUJ3(whazV5p9X6Wua`fIN6&OggE`!w_H z(}ruWdThJtz2lbNnkyW0&-m=P6~5<=^~UR-+i%G&y(qBYT*&S_^2;ttExEus_blVA z)1r&c|NsAAea+dOKzH(&1o;KCCEfb_FD3cijhnaMr`<^n2o;(SlwwTsc6Tv0zgiOq z%AZ_kS)noX6-T=(}$#*CU|IR7+eVN>UO_QmvAUQh^kMk%5tku7RRr~FT!@q8M@z^u%zm&`4!EbKj5gjra@rNQKI3bXR& s5QWn>uADe>=7`J@_R|d>3%v9gUWp5qd~!0K3bca3)78&qol`;+0D_(cm;e9( literal 0 HcmV?d00001 diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..ce2379b079222ef287f623ce4c2051b3f24f00d9 GIT binary patch literal 1102 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 literal 0 HcmV?d00001 diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..753e0c851a8680808a959f6c033c43a9c6e7a436 GIT binary patch literal 2781 zcmd6pS5T7y7KMMBNLNr0Oq2zs_bQ*(_}UtqV#L zwC-8TX&87@&xFX(;V^_Mi|=r1q$VS6%Y8nbuLRPA3cCaBH!EjvRi!4AU$(<(9P9N@ z>z<;TxTa=k!pE#rlRa&>UCxJ5UjuRD!)j}TfnPMLLsC*2AzVth0pDA{(|PP@dv_$m zrq3MioP1QS@7{+)>U>)u-W8VMEnV*&+l;K`Ckk>ur9uM9T9osJxE>&67f_I;sITX;WmI`y8AZEFG9b6^Pmu`Nz4n71y@?yovq+SOL|xZJAVozgIv9vKc}ZWJwurSZ zPW;Ys!0V6~yV>8zzEl<$mq5y`^KfR7!o;K|SK02~g~c;K6-kSRT3p3YmKI|^EjFSP zcy!CKFaoypjj$tf~d31$g8puF4HSz4H*aijORk zB_<--DVag9M?zRX_fes@g`zWCd#2iljf(vbj;-g_(|nl>r`o!%n*U*tOAEN=e0i(* zT`8wI2GpizpMTRzb9@wD;KSUnG5PW=D=Y)^qSKa;CAP09(x5Wgczvo9DYVV<)7&5Z z_$$&YFE@1gtAtWyfCpWgROz=o>^PLm`&C^X7Ix*vf|Xh)>Lf2w6vI0bBJ#sek*gxQ zVR2&)%C}#}^4R6Uc!R+w?5QH=9%#M3oofHE?T4OYi+E3oMfQ}#@(tfp=W`h9Pr+YP zoZY5FFqQ?TN`5PNBpl&}*6~yB5`(h z^3~LH29{q!Z8x&2zd&XvXIYkz!Q4s(8#3+r(0Q2#DIgVdZ^?-`Xj^nP)RtQ^5*jx# z8vqMUYZtzWA6A>hPn*IR@k3tpc;w#%>S>pPy5@%`FOA1kGkGV&`fsWXYe(e4I5PjL z-(P0?lgnD$Q>xUUBAm72xlz%5Q@c7C&sOxPzS57P+Ix>^zQ(4#VQDiDBUMdibnDw= z=lh0>u}(=$_%|1&7JbubGoCt2&9GK_1PhyA*4-h<94y^5)oIdIzx&AB+-!x$`*B!Q` zRi5$Pn6W5X^u==jG@HBe<{WgDm*ZV7U-`uM55$u)yOsROJf&ng zkX5yThgKs4P=3SAUhB-xc!CojFG;2S`5{&5HJZ4yP3OjA>(;6hhDZ2@6*@s* z)`u&zg|lRP^TLS*p%A;K?XZOP6Tk9?cM_`5rl!8g-DHs@Q-8|04C|&^+ty?2Mi67Z zOlr)Dfa>2_Ed|Q=N%y=Yg=sO?!&$5T4!L~U3~sqWg8GN|y`N`mZ_b#HP;Q{hPq$z< z5;->=Suy0h0*BDwznH@l*}>n6^Cvc_%rihH_*LRyYwF3+CMWeN{ul3EH}Jy3(W2KB;nm z3Y1Jalu@>}uY6HZ9;M~6JlNKfdt|Ug2}`~-LU}XS_5)SLFeIJjX0(Ko8`R{GP4CfU zElpIg8S7D~E{k6t(;`Ynuut03<7AdG=DFxxfXecM0Vok`8=O*N&&1(}ncyTNF zXuHaaXx6>{W-l9JQbBZ1w)n;(Um96tpR8x@g@B)TQO!`7II*C)H0(Q6#hhQWO!Yzb z1{$3umQ~!S`nHg5#^HsdlBW9LlrNv0T3_i%(l8HnLx1m=pbOL1YgrCNh@dKYE?8H} zi3X9$Xba+CS~bc#Nh(9ubZzC_7B9`Tki5Tg30IE{1HCEn>z#;rH>PX9$iGoJ+BDl> z|L9avaz9H&3C>`=OZ42`TRUs(s;Mb{s(N z^-vLT_at{*XL)uNNGOL*#sp=26!!`@!>raMb`~?Nb=^V>#`B|7`j)k`NJB4uQ2cF* z&90#T+j${Bg+!q-_4P?oBOHCF-PA>#j%I#&T!`=gPru%r(+%T_ue4&y_bwi^yZ%~M z{w_}bt`LNu>xBU_QZjPlQnKPwGH_{mh^!n$MoCmk3L+&{;Sl-qKLAf}7k9Vd{|+=$ z-;=ulEJNT{{$@_kd42r6-P}D~dHsWZTzTDn{1E^UlsQjkzU*ruB-CZxP0(F518De} zBoIs-{2clz*JwC+H6!I(Txj?!;Jn>qLmjPzR!}Q_ccjioJqciq>#9FlT|V{V1fZ*B Kq* literal 0 HcmV?d00001 diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/safari-pinned-tab.svg b/public/safari-pinned-tab.svg new file mode 100644 index 0000000..47d9376 --- /dev/null +++ b/public/safari-pinned-tab.svg @@ -0,0 +1,2153 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000..5e286c9 --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "vesmeh", + "short_name": "vesmeh", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#2ab0da", + "background_color": "#2ab0da", + "display": "standalone" +} diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index d2f8422..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/layout.jsx b/src/app/layout.jsx index 473486d..0108ee1 100644 --- a/src/app/layout.jsx +++ b/src/app/layout.jsx @@ -1,6 +1,19 @@ import RootData from "@comp/AppsComponent/RootData/page"; +import Head from "next/head"; export const metadata = { + icons: { + icon: [ + { + url: "/favicon-16x16.png", + media: "(prefers-color-scheme: light)", + }, + { + url: "/favicon-16x16.png", + media: "(prefers-color-scheme: dark)", + }, + ], + }, title: { template: "%s | خرید لوازم آرایشی و بهداشتی قیمت مناسب و اصل | فروشگاه اینترنتی وسمه", diff --git a/src/app/page.jsx b/src/app/page.jsx index b8dda1b..8e1d82a 100644 --- a/src/app/page.jsx +++ b/src/app/page.jsx @@ -52,10 +52,14 @@ export default function Page() {
- + + + - + + + {/* */}