From 44bf80f2aff6fb1167719aa6a73b15be0045b0b0 Mon Sep 17 00:00:00 2001 From: anwesha Date: Mon, 13 May 2024 17:00:29 -0400 Subject: [PATCH 1/9] My_Account_form_feature_added --- src/Model/useModel.js | 0 src/assets/images/pfp.jpg | Bin 0 -> 3902 bytes src/components/AccountDetails/Account.css | 0 src/components/AccountDetails/Account.js | 0 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/Model/useModel.js create mode 100644 src/assets/images/pfp.jpg create mode 100644 src/components/AccountDetails/Account.css create mode 100644 src/components/AccountDetails/Account.js diff --git a/src/Model/useModel.js b/src/Model/useModel.js new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/images/pfp.jpg b/src/assets/images/pfp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e719cb8b6fa585940a4b25aca20cbe3c3707fb91 GIT binary patch literal 3902 zcmbVPc{E$?_C5&_i77}?B4VEX5c5|<%rPd!kSaCQ*g>VEnpHJL%|S!eT+}>OKGi{$ zYEjf&Ri&Sns<{+x-DvN3@BQcg@w|;U}s~4vO(CPP$&$>4(CL2adL2Q9_HicL5d2Cp+$vJD2$YfEJi{}5`~h} zmRC|$)6mcmlhxJNQ9q)B)ldh)U@%S&P9ZKXA$4(-xcdLw_B#Mxc2FuPl?5aLfO$bI zyrBI~KowwC$pT{5`Y&UJfZ3odAa*ACAM8OG1m2$nI9Zr05G)9$zcO>c{_h68_30|A z#UXSee5|XZU{hs8T{>@L^FQ@iy=|=CiAZ%R!I>;RDe=aYk4^W>hkXB)1KJQiHw~(~ z_M4D>Z2oL3eNM0U@Ay*%M=}1;zdiJ{^f836RhYVAMGJ?p*V?cc6k zRmBpQ5%ZI8Wa&i~o&TsPnxSIYlADVHQ&SCNj6243=g?KxUABFE$e8Y@rN7cc?f z;66Z}*JJ`=ne9S)IfIENx7&Hb=}Z7Ndkgs)V8ukxz9`SJrOqHG)adJvn|}{}3_zx~ z^+XnonAA(pu`SMbMF-U(1vj%Sgrfm~6N^gFHvM>G7367^Ay%Zk<;jdfOMggD{}Ke3 zO>#MLonUfo?RCl4JPjjxj6qoc{CPLCu`L9X24F1%{ys(rXk$}&*5>qygSvMtJv0)Y zmg;&go;m4vX7P{4PfU_Er)3jczyttT+MwIapE?YHkQr4cNuAHV0ReECiTRJlwR^OM z@`h*t6yg>}=Zii_W*;(dy~9F=qh+sS``f`WObX<;*>CG5N}gLPfUT+E|G6`u^{f?^ z<6)OqRH9la11d%bivg`OF$+3t!tjfV1jk5zq>!zjUwQ`$IB-q+_3%JvxV{dX!;5`1|mK(Df2 zmZkl>p`oEs)lB2w@rh8UpGz2f>Aw~K$0xHJaR}xcSXiJi2pa_QONQyPLU;jjH8ws~ zbt4>+U&6sFBqptX5Q(7_K7mSNjZFxMLyq3>qthEYR+;U|Y+C?i2HLxw?m5Vc4>!R*<5Vp~R zb@vUwV{!@$@g_YvqVinhb;y;8TUYIl)p-B8x>l$8bc>zZHQq*!;Ps!q9YrRI^2T>` zI#vZ$78jjuI^q-jw({YPH>85hVLIr+q>LxYip&;Iu88wK2&)7E@`^c1#L?ow7G@;reI~ z!2!osFmsU{XGdWmMdIscFQ0DsRy9IVJo38oGFn9Hgau|~a*<)s@_>H(K8yR-Rq9`p zkKDBt$Gl}?TN0wO!^?vbulwCPX%e6q5@>AxRhWn0pAt(LESgtxiFUq3qrZTelu>i) zJs{+V7mWvI!EcT_XSB-{cLo+7{~!j}E1R3}3{tG?MSmFY6RKJMvg_0upX->cEN5&+ zDisEFa&6Z~ui3m9;-1~@{%$cmsh}dG+3z5~jdnRy`KU`kMF!UIaA^Cm3sNB~)3@4+ zOqb$%vdOctC-|ctp<+*j+${a5mjN z=4uiEu_9^!AuR-7{>Dp*wudBOPqLCve7vfNjobsG(OxbUAGqag9Nr~uBur451t*WWhO7lGugOv}{~9HQ^laLLz6n0m5K9~U!0*znzlsU(PZOiw zp}Iw8|1+U3PE8$(vaHNG>c0H=d&*0TwAF`wnA06{cSrAr)rpC33`wr>uWQuOf`Zrk_wWSX2s@ZaT(_n)`jke

fUzMbaD4R-xgSoY701m0BkrjJsZ_3ig1BR(1?2WqCV0@*+we38-q! z7dO_{+A5iOBdeJ^mG75OCphSme;dz%w~8j{#42zVsZ)r2_+uP_#Ob$$NM~m=D`e=y zq5SR$vy3!{xco~^_nP0~0>bk$O%O!zWTrO5>CWx+)XcaN)|hB;bl_jqVn~E^Xy9}( z%{O3H*;wTdh=m9#WL)0uT264f7yFDB`#eLA=HBO`6LCJlfskH`$V|d(fCm|5`K!|6 zbBOvK*Te6QDD!6rr<-c<2cX=E#8qS?!(I3MTSR;}+oa`2H7(PT=A%ws#zZLP73JN9 zWm<$n7yKIjqzpb3=jP_t$oR|J#P`i?tOBf=+0iB6gcEVTC(2agD(1Kwca9$}?&grj zA2m)lPCtv8I-jacNt17*=ZB2@ajqx%a}uL2{@@jtSC9fAc$xQsE##-hG)*9l?^D~6 zpF#$HgBz|B^v{Bb(z_H@%OznUSkGvuAVQa98?Nme1$C1e+#3{%j#P_nG=dKB!%g}ug$sDTtrnL}h_M4Av) zl$E&K#L%TWByzl1eCJ}#nC-%5^UT2BYkbL(GA^PTw1QozYE^9av(0=O*0tfg)hdHs zxE#fnPu93WGow;3_)rEeIO~X5&8KbzXmmc!FD;n8`gkAs{A0;hdy-o$HR#6$k6PPw zFD`lw89Y~|gEm+qSrg9on;O)`zp*8q*3Q+}NhX;zTR}BjK2!Lg-oG*K%kN*Z)5puWtCf-Y z^Dg~1$NcNmAGLaJEbL_e)H;%qmt*o0{gJ8HM(h6O%lc}ER5+F%u>SK)Ep=sCaGXxhaO_<292genec&cL zAJyl}b)?uOZTrl3lc>v&zL`9&6o0{yuBH{()D#^D2Q}#ox#NtV;hIPi??;Xi&bm}L z^m}^y%^s3ne(z|qCh}_F6yva}YU4S0@pcHlPYm%O!mO}R5K*~Ue5GCKH9io;j${cU zKr|!@)>@oSC|RMecqzV$;2^ps@jI2|_So}|q@1Q=QgN)ph!7DW)>J?$H(Ds;6z#by z?LluxV15UppkoRqK3@pm)*ZUzpZK%QM~oW0(ezn*K3$U^ z(I0k*u~m!v^8Q_255>b@pFqOurhaYTK4Y{r_coBt!ukWbCT`F4_}3|+aLG$|mf*&u zbQ*v|Vpf{wFusm_cg163!&d^%!9LrUDr-EyHQZETEH-&dtb(V1%}$FTPqvDI3&qM= zT)c^?@RDaOp8+cLM`<5y7Jcc(JWEw~hN<)4WJU1nY)&fj6e*#xu5Aldbjj{$k1-)N zGa5hwo`yaJP2pK?SX)WVt;?I4`Da%IC$*P`T))~#nVPD%@}cbe_kr6*5Bp@Q`Mip} z?uf)lLl>2Pn)|ZqpDV5Tzv^b`Nb~+4zbd+}QWE~NuSb?DF|bPjbFrz`nq98hivtlR z>{3ck@AJ?&Ll!C?e$lSf#awHK^{tVtekP6f8+hcG;bN(#rrOIj!`HYe5WA4v9NXNTS(ILM@S0RCny8pm6l#a9-+`8oEnzyfaKFC6=3o&^oH3rPq6@ zbvIrs3GyDnSnPoG Date: Tue, 14 May 2024 07:28:40 -0400 Subject: [PATCH 2/9] refac:storing data in firebase storage of user --- package-lock.json | 59 +++++++- package.json | 3 + src/App.js | 4 + src/components/AccountDetails/Account.css | 31 ++++ src/components/AccountDetails/Account.js | 170 ++++++++++++++++++++++ src/components/header/header.js | 8 +- 6 files changed, 269 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf0a22d..3ae9fbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,9 +24,11 @@ "custom-react-inner-image-zoom": "^3.0.6", "firebase": "^10.8.0", "leaflet": "^1.9.4", + "nanoid": "^5.0.7", "react": "^18.2.0", "react-bootstrap": "^2.10.0", "react-dom": "^18.2.0", + "react-hook-form": "^7.51.4", "react-image-zoom": "^1.3.1", "react-inner-image-zoom": "^3.0.2", "react-lazy-load-image-component": "^1.6.0", @@ -39,6 +41,7 @@ "reactjs-image-zoom": "^1.0.8", "rn-range-slider": "^2.2.2", "styled-components": "^5.3.11", + "uuidv4": "^6.2.13", "web-vitals": "^2.1.4" }, "devDependencies": { @@ -5783,6 +5786,11 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, "node_modules/@types/warning": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", @@ -14159,9 +14167,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", "funding": [ { "type": "github", @@ -14169,10 +14177,10 @@ } ], "bin": { - "nanoid": "bin/nanoid.cjs" + "nanoid": "bin/nanoid.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^18 || >=20" } }, "node_modules/natural-compare": { @@ -16087,6 +16095,23 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -16540,6 +16565,21 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" }, + "node_modules/react-hook-form": { + "version": "7.51.4", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.4.tgz", + "integrity": "sha512-V14i8SEkh+V1gs6YtD0hdHYnoL4tp/HX/A45wWQN15CYr9bFRmmRdYStSO5L65lCCZRF+kYiSKhm9alqbcdiVA==", + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, "node_modules/react-image-zoom": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/react-image-zoom/-/react-image-zoom-1.3.1.tgz", @@ -18957,6 +18997,15 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/uuidv4": { + "version": "6.2.13", + "resolved": "https://registry.npmjs.org/uuidv4/-/uuidv4-6.2.13.tgz", + "integrity": "sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ==", + "dependencies": { + "@types/uuid": "8.3.4", + "uuid": "8.3.2" + } + }, "node_modules/v8-to-istanbul": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", diff --git a/package.json b/package.json index 05d4c12..345f228 100644 --- a/package.json +++ b/package.json @@ -18,9 +18,11 @@ "custom-react-inner-image-zoom": "^3.0.6", "firebase": "^10.8.0", "leaflet": "^1.9.4", + "nanoid": "^5.0.7", "react": "^18.2.0", "react-bootstrap": "^2.10.0", "react-dom": "^18.2.0", + "react-hook-form": "^7.51.4", "react-image-zoom": "^1.3.1", "react-inner-image-zoom": "^3.0.2", "react-lazy-load-image-component": "^1.6.0", @@ -33,6 +35,7 @@ "reactjs-image-zoom": "^1.0.8", "rn-range-slider": "^2.2.2", "styled-components": "^5.3.11", + "uuidv4": "^6.2.13", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/src/App.js b/src/App.js index fb2b2a0..57e0457 100644 --- a/src/App.js +++ b/src/App.js @@ -31,6 +31,7 @@ import MapComponent from "./components/map/ITEMmap"; import SellerForm from "./pages/SellerRegistration"; import { db } from "./firebase"; import { collection, doc, getDocs } from "firebase/firestore"; +import {Account} from "./components/AccountDetails/Account"; const MyContext = createContext(); @@ -248,6 +249,9 @@ function App() { /> } /> + + }/> + {/* sign in , signup Protection */} {isLogin === null && ( } /> diff --git a/src/components/AccountDetails/Account.css b/src/components/AccountDetails/Account.css index e69de29..0ea5974 100644 --- a/src/components/AccountDetails/Account.css +++ b/src/components/AccountDetails/Account.css @@ -0,0 +1,31 @@ +.cardwidth{ + width: 50%; + height: auto; +} + +.negmargin{ + margin-top: -30%; +} + +.profileImageP{ + height: 200px; + width: 200px; + border-radius: 50%; +} + +.imgbackground{ + height: 400px; + width: 100vw; + opacity: 0.2; + filter: blur(3px); +} + +@media only screen and (max-width: 600px) { + negmargin{ + margin-top: -60%; + position: relative; + } +} + + + diff --git a/src/components/AccountDetails/Account.js b/src/components/AccountDetails/Account.js index e69de29..d1c1cd6 100644 --- a/src/components/AccountDetails/Account.js +++ b/src/components/AccountDetails/Account.js @@ -0,0 +1,170 @@ +import {useForm} from "react-hook-form"; +import {Button, Card} from "@mui/material"; +import {CardBody, CardFooter, CardHeader, CardImg, CardText, CardTitle, Col, Form, Row} from "react-bootstrap"; +import "./Account.css" +import imageBackground from "../../assets/images/slider-1.png" +import pfp from "../../assets/images/pfp.jpg" +import {useEffect, useState} from "react"; +import {getDownloadURL, ref, uploadBytes} from "firebase/storage"; +import {addDoc, collection, doc, getDoc, onSnapshot, setDoc, updateDoc} from "firebase/firestore"; +import {db, storage} from "../../firebase"; +import {nanoid} from "nanoid"; + + +export function Account(){ + const { register , handleSubmit, formState:{errors, isSubmitting}} = useForm() + + const [name , setName] = useState("") + const [email , setEmail] = useState("") + const [address , setAddress] = useState("") + const [file , setFile] = useState(pfp) + + let user_uid = localStorage.getItem("uid") + + + useEffect(()=>{ + (async ()=>{ + console.log(user_uid) + const docref = doc(db,"users", `${user_uid? user_uid : nanoid()}`) + const docSnap = await getDoc(docref) + if(docSnap.exists()){ + setName(docSnap.data().Name) + setEmail(docSnap.data().Email) + setAddress(docSnap.data().Address) + setFile(docSnap.data().photo) + + }else{ + console.log(null) + } + })() + + },[]) + + function Onsubmit(e){ + e.preventDefault() + console.log(name, email, file, address) + + addUser(name, email, address, file) + } + + const addUser = async (name, email , address, file) => { + + try{ + const imageRef = ref(storage, `AccountImage/${localStorage.getItem("uid")}`); + await uploadBytes(imageRef, file); + const imageUrl = await getDownloadURL(imageRef); + await setDoc(doc(db,"users", `${user_uid}`), { + Name : name, + Email : email, + Address : address, + photo : imageUrl + }) + + + }catch (error){ + console.log(error) + } + } + + + // const updateUser = async () =>{ + // await updateDoc(doc(db,"users", docpath),{ + // Name : name, + // Email : email, + // Address : address, + // photo : file + // }) + // } + + + return( + <> +

+ + +
+ + + + + + setFile(e.target.files[0])}/> + + + + +

{name}

+ + +

{email}

+ +
+ + {address} + + +
+
+
+
+ +

Personal

+ +
+ + Name + {setName(e.target.value)}} + value={name} + required={true} + isInvalid={!!errors.name} + /> + + {errors.name?.message} + + + + Email + {setEmail(e.target.value)}} + isInvalid={!!errors.email} + /> + + {errors.email?.message} + + + + Address + {setAddress(e.target.value)}} + isInvalid={!!errors.address} + /> + + {errors.address?.message} + + +
+
+
+ + + +
+ +
+ + ) +} \ No newline at end of file diff --git a/src/components/header/header.js b/src/components/header/header.js index 6add57c..fae9c0c 100644 --- a/src/components/header/header.js +++ b/src/components/header/header.js @@ -61,6 +61,8 @@ const Header = (props) => { "Fresh Seafood", ]); + const navigate = useNavigate() + const countryList = []; useEffect(() => { @@ -127,6 +129,10 @@ const Header = (props) => { context.setIsopenNavigation(false); }; + const handleAccountClick = () => { + navigate("/account") + } + return ( <>
@@ -271,7 +277,7 @@ const Header = (props) => { {isOpenDropDown !== false && (
  • -
  • From f7c6629ee61249b76151be2f3685fe83899c1b57 Mon Sep 17 00:00:00 2001 From: anwesha Date: Tue, 14 May 2024 12:01:33 -0400 Subject: [PATCH 3/9] for edit feature added --- src/components/AccountDetails/Account.js | 61 +++++++++++++++++------- 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/src/components/AccountDetails/Account.js b/src/components/AccountDetails/Account.js index d1c1cd6..e149008 100644 --- a/src/components/AccountDetails/Account.js +++ b/src/components/AccountDetails/Account.js @@ -6,9 +6,22 @@ import imageBackground from "../../assets/images/slider-1.png" import pfp from "../../assets/images/pfp.jpg" import {useEffect, useState} from "react"; import {getDownloadURL, ref, uploadBytes} from "firebase/storage"; -import {addDoc, collection, doc, getDoc, onSnapshot, setDoc, updateDoc} from "firebase/firestore"; +import { + addDoc, + collection, + doc, + getDoc, + onSnapshot, + setDoc, + updateDoc, + query, + where, + documentId, + getDocs, +} from "firebase/firestore"; import {db, storage} from "../../firebase"; import {nanoid} from "nanoid"; +import {useParams} from "react-router-dom"; export function Account(){ @@ -22,9 +35,9 @@ export function Account(){ let user_uid = localStorage.getItem("uid") + useEffect(()=>{ (async ()=>{ - console.log(user_uid) const docref = doc(db,"users", `${user_uid? user_uid : nanoid()}`) const docSnap = await getDoc(docref) if(docSnap.exists()){ @@ -42,9 +55,18 @@ export function Account(){ function Onsubmit(e){ e.preventDefault() - console.log(name, email, file, address) + const collectionRef = collection(db, 'users'); + + const querySnapshot = getDocs(collectionRef) - addUser(name, email, address, file) + querySnapshot.then((doc)=>{ + console.log(doc.docs.includes(user_uid)) + if(doc.docs.includes(user_uid)){ + return updateUser() + }else { + return addUser(name, email , address, file) + } + }) } const addUser = async (name, email , address, file) => { @@ -59,7 +81,7 @@ export function Account(){ Address : address, photo : imageUrl }) - + setFile(imageUrl) }catch (error){ console.log(error) @@ -67,19 +89,23 @@ export function Account(){ } - // const updateUser = async () =>{ - // await updateDoc(doc(db,"users", docpath),{ - // Name : name, - // Email : email, - // Address : address, - // photo : file - // }) - // } + const updateUser = async () =>{ + try { + await updateDoc(doc(db,"users", user_uid),{ + Name : name, + Email : email, + Address : address, + photo : file + }) + }catch (err){ + console.log(err) + } + } return( <> -
    +
    @@ -160,11 +186,14 @@ export function Account(){ - + + -
    +
    ) } \ No newline at end of file From 81c10038b88a13ef2672618d3565975d8f746241 Mon Sep 17 00:00:00 2001 From: anwesha Date: Tue, 14 May 2024 13:29:41 -0400 Subject: [PATCH 4/9] refac:some UI of MY_Account feature --- .idea/.gitignore | 5 +++++ .idea/e-commerce_website.iml | 12 ++++++++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ src/components/AccountDetails/Account.js | 20 +++++++++++++++++--- 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/e-commerce_website.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/e-commerce_website.iml b/.idea/e-commerce_website.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/e-commerce_website.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..281a9e2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/components/AccountDetails/Account.js b/src/components/AccountDetails/Account.js index e149008..3230cde 100644 --- a/src/components/AccountDetails/Account.js +++ b/src/components/AccountDetails/Account.js @@ -6,6 +6,7 @@ import imageBackground from "../../assets/images/slider-1.png" import pfp from "../../assets/images/pfp.jpg" import {useEffect, useState} from "react"; import {getDownloadURL, ref, uploadBytes} from "firebase/storage"; +import { useNavigate} from "react-router-dom" import { addDoc, collection, @@ -22,6 +23,7 @@ import { import {db, storage} from "../../firebase"; import {nanoid} from "nanoid"; import {useParams} from "react-router-dom"; +import {FontAwesomeIcon } from "@fortawesome/react-fontawesome"; export function Account(){ @@ -36,6 +38,8 @@ export function Account(){ + + useEffect(()=>{ (async ()=>{ const docref = doc(db,"users", `${user_uid? user_uid : nanoid()}`) @@ -89,13 +93,20 @@ export function Account(){ } - const updateUser = async () =>{ + const updateUser = async (e) =>{ + e.preventDefault() + try { + const imageRef = ref(storage, `AccountImage/${localStorage.getItem("uid")}`); + await uploadBytes(imageRef, file); + const imageUrl = await getDownloadURL(imageRef); + + await updateDoc(doc(db,"users", user_uid),{ Name : name, Email : email, Address : address, - photo : file + photo : imageUrl }) }catch (err){ console.log(err) @@ -105,7 +116,10 @@ export function Account(){ return( <> -
    +
    +

    + + My Account

    From 3a219d79c5573b24e694470e6241cad41d0e3004 Mon Sep 17 00:00:00 2001 From: anwesha Date: Tue, 14 May 2024 14:18:24 -0400 Subject: [PATCH 5/9] refac:some bug fix about conflict --- src/App.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.js b/src/App.js index c410b48..2eee475 100644 --- a/src/App.js +++ b/src/App.js @@ -27,7 +27,6 @@ import { collection, doc, getDocs } from "firebase/firestore"; import MapComponent from "./components/map/ITEMmap"; import { db } from "./firebase"; -import { collection, doc, getDocs } from "firebase/firestore"; import {Account} from "./components/AccountDetails/Account"; import SellerForm from "./pages/SellerRegistration"; From 83fece63329f7eb79a882147ad5f95667e5a3f57 Mon Sep 17 00:00:00 2001 From: anwesha Date: Tue, 14 May 2024 14:26:50 -0400 Subject: [PATCH 6/9] refac:bug fix of deployment issue --- src/components/AccountDetails/Account.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AccountDetails/Account.js b/src/components/AccountDetails/Account.js index 3230cde..4efc6b7 100644 --- a/src/components/AccountDetails/Account.js +++ b/src/components/AccountDetails/Account.js @@ -4,7 +4,7 @@ import {CardBody, CardFooter, CardHeader, CardImg, CardText, CardTitle, Col, For import "./Account.css" import imageBackground from "../../assets/images/slider-1.png" import pfp from "../../assets/images/pfp.jpg" -import {useEffect, useState} from "react"; +import React, {useEffect, useState} from "react"; import {getDownloadURL, ref, uploadBytes} from "firebase/storage"; import { useNavigate} from "react-router-dom" import { From 7176e6f2bed995ec4eadf30ccd9a4aa1d67e0a3b Mon Sep 17 00:00:00 2001 From: Rishi Mondal <146999057+MAVRICK-1@users.noreply.github.com> Date: Wed, 15 May 2024 23:07:02 +0530 Subject: [PATCH 7/9] Merge Dev to main (#146) * rectified all the css error except about page (#114) * proceed fixed (#115) * rectified all the css error except about page (#116) * Update greetings.yaml * Create Contributing.md (#122) * Rename create contributing.md to contributing.md * Forgot password (#134) * added forget password feature * reverted changes made to the package.json * made a change in the reset password folder * Main page groceries, electronics, fashion buttons Not Working Fixed (#137) * New branch * Issue fixed * Fix issue 72 (#143) * rectified all the css error except about page * Updated Footer --------- Co-authored-by: MAVRICK * Added pre-commit hooks (#118) * Added pre-commit hooks Description: pre-commit hooks added using husky and lint-staged is used which will run on every commit * Added prettier Prettier configurations are added and prettier configured to work with pre-commit hooks and lint-staged * Try formatting with prettier and pre-commit hook * Try formatting with prettier and pre-commit hook 2 * Docs: after adding pre-commit hooks did the necessary documentation update in README.md * Update App.js to resolve merge conflict * Update App.js to resolve deployment failure deployment was failing because it couldn't find ResetPassword * Revert "Added prettier" This reverts commit 558218cb67432605da876e0cddaa1ed7bf2966a0. * Reapply "Added prettier" This reverts commit 5775c977e708a4dfd4e4dc84103996f706bed5c6. * Revert "Update App.js to resolve deployment failure" This reverts commit b9c90f6fe357d015fa57c956dc68955d31b71e73. * Revert "Update App.js to resolve merge conflict" This reverts commit aaa78c0673582f1bbeed9f51749eeb23e7eab7f7. * Update nav.js to resolve merge conflict in nav.js * Revert "Update nav.js to resolve merge conflict in nav.js" This reverts commit 82d8bfb61fda8a2a50dca491b59adb28897bdfec. * Update App.js to resolve merge conflict in App.js * Update footer.js to resolve merge conflict in footer.js * Update nav.js to resolve merge conflict in nav.js --------- Co-authored-by: Hemanth kumar Co-authored-by: deekshithapalla <159523774+deekshithapalla@users.noreply.github.com> Co-authored-by: Niharika Goulikar <124892559+Niharika0104@users.noreply.github.com> Co-authored-by: Adarsh <120160355+jinx-vi-0@users.noreply.github.com> Co-authored-by: Avdhut Pailwan <74597375+AvdhutPailwan@users.noreply.github.com> --- .github/workflows/greetings.yaml | 14 +- .husky/pre-commit | 1 + .prettierignore | 13 + .prettierrc | 6 + README.md | 3 + contributing.md | 78 +++ package.json | 23 +- src/App.css | 62 +- src/App.js | 11 +- src/Hooks/useLoggedInUserEmail.js | 10 +- src/Redux/auth-slice.js | 44 +- src/Redux/store.js | 14 +- src/components/Sidebar/index.js | 400 +++++------ src/components/banners/index.js | 50 +- src/components/banners/style.css | 14 +- src/components/catSlider/index.js | 238 +++---- src/components/catSlider/style.css | 73 +- src/components/footer/footer.css | 121 +++- src/components/footer/footer.js | 17 +- src/components/header/header.css | 181 ++++- src/components/header/header.js | 172 ++--- src/components/header/nav/nav.css | 114 +++- src/components/header/nav/nav.js | 9 +- src/components/map/Cartmap.js | 174 ++--- src/components/map/ITEMmap.js | 94 +-- src/components/map/map.css | 22 +- src/components/newsletter/index.js | 18 +- src/components/newsletter/style.css | 50 +- src/components/product/index.js | 60 +- src/components/product/style.css | 157 ++++- src/components/quantityBox/index.js | 20 +- src/components/selectDrop/select.css | 75 +- src/components/selectDrop/select.js | 126 ++-- src/firebase.js | 23 +- src/pages/About/about.css | 49 +- src/pages/About/index.js | 14 +- src/pages/AddProd/index.js | 97 +-- src/pages/Details/index.js | 204 +++--- src/pages/Home/TopProducts/index.js | 150 ++-- src/pages/Home/TopProducts/style.css | 62 +- src/pages/Home/index.js | 426 ++++++------ src/pages/Home/slider/index.css | 94 ++- src/pages/Home/slider/index.js | 101 ++- src/pages/Home/style.css | 101 ++- src/pages/Listing/index.js | 825 +++++++++++----------- src/pages/NotFound/index.js | 46 +- src/pages/NotFound/style.css | 27 +- src/pages/ResetPassword/index.js | 212 ++++++ src/pages/ResetPassword/style.css | 82 +++ src/pages/SellerRegistration/index.js | 81 +-- src/pages/SignIn/index.js | 132 ++-- src/pages/SignIn/style.css | 30 +- src/pages/SignUp/index.js | 111 ++- src/pages/cart/index.js | 96 +-- src/pages/cart/style.css | 7 + src/pages/wishList/index.js | 101 +-- src/pages/wishList/style.css | 7 + src/reportWebVitals.js | 2 +- src/responsive.css | 944 +++++++++++++++++++------- yarn.lock | 690 +++++++++++-------- 60 files changed, 4492 insertions(+), 2686 deletions(-) create mode 100644 .husky/pre-commit create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 contributing.md create mode 100644 src/pages/ResetPassword/index.js create mode 100644 src/pages/ResetPassword/style.css diff --git a/.github/workflows/greetings.yaml b/.github/workflows/greetings.yaml index 704db0e..0f4162f 100644 --- a/.github/workflows/greetings.yaml +++ b/.github/workflows/greetings.yaml @@ -1,7 +1,5 @@ name: Greetings - on: [pull_request_target, issues] - jobs: greeting: runs-on: ubuntu-latest @@ -12,5 +10,13 @@ jobs: - uses: actions/first-interaction@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - issue-message: "Hi there! Thanks for opening this issue. We appreciate your contribution to this open-source project. We aim to respond or assign your issue as soon as possible." - pr-message: "Welcome to Our repository.🎊 Thank you so much for taking the time to point this out." + issue-message: | + Hi there! + + Thanks for opening this issue. We appreciate your contribution to this open-source project. We aim to respond or assign your issue as soon as possible. + + Please note that this is the project owner, @MAVRICK-1. I won't be available for 3-4 days and will reply to every PR after May 18. Thank you for your cooperation. + pr-message: | + Welcome to our repository. 🎊 + + Thank you so much for taking the time to point this out. Please note that this is the project owner, @MAVRICK-1. I won't be available for 3-4 days and will reply to every PR after May 18. Thank you for your cooperation. diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..2312dc5 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npx lint-staged diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..a447963 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,13 @@ +.env +.eslintrc.js +.gitignore +.prettierignore +.prettierrc +*.md +*.json +*.lock +*.yaml +*.html +.husky +.github +node_modules \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..1387fd0 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "trailingComma": "none", + "tabWidth": 2, + "semi": true, + "singleQuote": true +} diff --git a/README.md b/README.md index 7de5cef..0040ef0 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,9 @@ Our project is an ONDC (Open Network for Digital Commerce) site integrated with ```bash npm install ``` + ```bash + npm run prepare + ``` 4. **Run the development server:** ```bash npm start diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..7b47abc --- /dev/null +++ b/contributing.md @@ -0,0 +1,78 @@ +# **Contributing Guidelines** +This documentation contains a set of guidelines to help you during the contribution process. +We are happy to welcome all the contributions from anyone willing to improve/add new scripts to this project. +Thank you for helping out and remember, **no contribution is too small.** +
    +Please note we have a [code of conduct](CODE_OF_CONDUCT.md) please follow it in all your interactions with the project. + + + +
    + +## **Creating a new issue process** + +1. Go to the project's issues. +2. click on "new issue". +3. Give proper title and required description for the issue. +4. Don't spam to get the assignment of the issue. +5. Wait for till someone is looking into it. +6. Start working on issue only after you got assigned that issue. + + +## **Need some help regarding the basics?** + +You can refer to the following articles on basics of Git and Github and also contact the Project Mentors, +in case you are stuck: + +- [Forking a Repo](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) +- [Cloning a Repo](https://help.github.com/en/desktop/contributing-to-projects/creating-an-issue-or-pull-request) +- [How to create a Pull Request](https://opensource.com/article/19/7/create-pull-request-github) +- [Getting started with Git and GitHub](https://towardsdatascience.com/getting-started-with-git-and-github-6fcd0f2d4ac6) +- [Learn GitHub from Scratch](https://docs.github.com/en/get-started/start-your-journey/git-and-github-learning-resources) + +
    + +### Steps need to be followed to contribute: + +1. **Open GitHub Desktop:** + Launch GitHub Desktop and log in to your GitHub account if you haven't already. + +2. **Clone the Repository:** + - If you haven't cloned the ResourceHub repository yet, you can do so by clicking on the "File" menu and selecting "Clone Repository." + - Choose the ResourceHub repository from the list of repositories on GitHub and clone it to your local machine. + +3. **Switch to the Correct Branch:** + - Ensure you are on the branch that you want to submit a pull request for. + - If you need to switch branches, you can do so by clicking on the "Current Branch" dropdown menu and selecting the desired branch. + +4. **Make Changes:** + Make your changes to the code or files in the repository using your preferred code editor(like vs code). + +5. **Commit Changes:** + - In GitHub Desktop, you'll see a list of the files you've changed. Check the box next to each file you want to include in the commit. + - Enter a summary and description for your changes in the "Summary" and "Description" fields, respectively. Click the "Commit to " button to commit your changes to the local branch. + +6. **Push Changes to GitHub:** + After committing your changes, click the "Push origin" button in the top right corner of GitHub Desktop to push your changes to your forked repository on GitHub. + +7. **Create a Pull Request:** + - Go to the GitHub website and navigate to your fork of the ResourceHub repository. + - You should see a button to "Compare & pull request" between your fork and the original repository. Click on it. + +8. **Review and Submit:** + - On the pull request page, review your changes and add any additional information, such as a title and description, that you want to include with your pull request. + - Once you're satisfied, click the "Create pull request" button to submit your pull request. + +9. **Wait for Review:** + Your pull request will now be available for review by the project maintainers. They may provide feedback or ask for changes before merging your pull request into the main branch of the ResourceHub repository. + + +## **Pull Request Process** + +1. Ensure that you have self reviewed your code. +2. Make sure you have added the proper description for the functionality of the code +3. Submit your PR by giving the necesarry information in PR template and wait for PR to review it. + +
    + +Thank you for your interest in contributing to **e-commerce website.** diff --git a/package.json b/package.json index 1136522..3e12305 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,26 @@ "test": "react-scripts test", "eject": "react-scripts eject", "lint": "eslint . --ext .js,.jsx", - "lint:fix": "eslint . --cache --quiet --fix --ext .js,.jsx" + "lint:fix": "eslint . --cache --quiet --fix --ext .js,.jsx", + "prepare": "husky" + }, + "lint-staged": { + "./**/*.js": [ + "eslint", + "prettier --write ." + ], + "./**/*.jsx": [ + "eslint", + "prettier --write ." + ], + "./**/*.ts": [ + "eslint", + "prettier --write ." + ], + "./**/*.tsx": [ + "eslint", + "prettier --write ." + ] }, "eslintConfig": { "extends": [ @@ -66,6 +85,8 @@ "@babel/plugin-transform-private-property-in-object": "^7.24.5", "@babel/preset-react": "^7.24.1", "eslint-plugin-react": "^7.34.1", + "husky": "^9.0.11", + "lint-staged": "^15.2.2", "prettier": "3.0.1" }, "description": "", diff --git a/src/App.css b/src/App.css index c717171..33edc18 100644 --- a/src/App.css +++ b/src/App.css @@ -1,6 +1,6 @@ -@import url("https://fonts.googleapis.com/css2?family=Italiana&family=Lato:wght@100;300;400;700;900&family=Roboto:wght@100;300;400;500;700;900&display=swap"); -@import url("https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.css"); -@import url("https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick-theme.min.css"); +@import url('https://fonts.googleapis.com/css2?family=Italiana&family=Lato:wght@100;300;400;700;900&family=Roboto:wght@100;300;400;500;700;900&display=swap'); +@import url('https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.css'); +@import url('https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick-theme.min.css'); * { margin: 0px; @@ -8,7 +8,7 @@ box-sizing: border-box; } body { - font-family: "Lato", sans-serif; + font-family: 'Lato', sans-serif; font-size: 22px; } #root { @@ -117,7 +117,7 @@ p { opacity: 0; } [tooltip]::before { - content: ""; + content: ''; border: 5px solid transparent; /* opinion 4 */ z-index: 1001; /* absurdity 1 */ } @@ -152,68 +152,68 @@ p { } /* don't show empty tooltips */ -[tooltip=""]::before, -[tooltip=""]::after { +[tooltip='']::before, +[tooltip='']::after { display: none !important; } /* FLOW: UP */ [tooltip]:not([flow])::before, -[tooltip][flow^="up"]::before { +[tooltip][flow^='up']::before { bottom: 100%; border-bottom-width: 0; border-top-color: #3bb77e; } [tooltip]:not([flow])::after, -[tooltip][flow^="up"]::after { +[tooltip][flow^='up']::after { bottom: calc(100% + 5px); } [tooltip]:not([flow])::before, [tooltip]:not([flow])::after, -[tooltip][flow^="up"]::before, -[tooltip][flow^="up"]::after { +[tooltip][flow^='up']::before, +[tooltip][flow^='up']::after { left: 50%; transform: translate(-50%, -0.5em); } /* FLOW: DOWN */ -[tooltip][flow^="down"]::before { +[tooltip][flow^='down']::before { top: 100%; border-top-width: 0; border-bottom-color: #333; } -[tooltip][flow^="down"]::after { +[tooltip][flow^='down']::after { top: calc(100% + 5px); } -[tooltip][flow^="down"]::before, -[tooltip][flow^="down"]::after { +[tooltip][flow^='down']::before, +[tooltip][flow^='down']::after { left: 50%; transform: translate(-50%, 0.5em); } /* FLOW: LEFT */ -[tooltip][flow^="left"]::before { +[tooltip][flow^='left']::before { top: 50%; border-right-width: 0; border-left-color: #333; left: calc(0em - 5px); transform: translate(-0.5em, -50%); } -[tooltip][flow^="left"]::after { +[tooltip][flow^='left']::after { top: 50%; right: calc(100% + 5px); transform: translate(-0.5em, -50%); } /* FLOW: RIGHT */ -[tooltip][flow^="right"]::before { +[tooltip][flow^='right']::before { top: 50%; border-left-width: 0; border-right-color: #3bb77e; right: calc(0em - 5px); transform: translate(0.5em, -50%); } -[tooltip][flow^="right"]::after { +[tooltip][flow^='right']::after { top: 50%; left: calc(100% + 5px); transform: translate(0.5em, -50%); @@ -237,17 +237,17 @@ p { /* FX All The Things */ [tooltip]:not([flow]):hover::before, [tooltip]:not([flow]):hover::after, -[tooltip][flow^="up"]:hover::before, -[tooltip][flow^="up"]:hover::after, -[tooltip][flow^="down"]:hover::before, -[tooltip][flow^="down"]:hover::after { +[tooltip][flow^='up']:hover::before, +[tooltip][flow^='up']:hover::after, +[tooltip][flow^='down']:hover::before, +[tooltip][flow^='down']:hover::after { animation: tooltips-vert 300ms ease-out forwards; } -[tooltip][flow^="left"]:hover::before, -[tooltip][flow^="left"]:hover::after, -[tooltip][flow^="right"]:hover::before, -[tooltip][flow^="right"]:hover::after { +[tooltip][flow^='left']:hover::before, +[tooltip][flow^='left']:hover::after, +[tooltip][flow^='right']:hover::before, +[tooltip][flow^='right']:hover::after { animation: tooltips-horz 300ms ease-out forwards; } @@ -307,7 +307,7 @@ p { margin-bottom: 30px; } .sidebarWrapper h3:after { - content: ""; + content: ''; width: 100%; height: 3px; background: #f0f0f0; @@ -317,7 +317,7 @@ p { } .sidebarWrapper h3:before { - content: ""; + content: ''; width: 20%; height: 3px; background: #b0e5c2; @@ -447,7 +447,7 @@ ul.breadcrumb li { ul.breadcrumb li + li:before { padding: 8px; color: black; - content: "/\00a0"; + content: '/\00a0'; } ul.breadcrumb li a { color: #3bb77e; @@ -560,7 +560,7 @@ input::-webkit-inner-spin-button { } /* Firefox */ -input[type="number"] { +input[type='number'] { -moz-appearance: textfield; } diff --git a/src/App.js b/src/App.js index c49d4a4..0bd857c 100644 --- a/src/App.js +++ b/src/App.js @@ -18,6 +18,7 @@ import Listing from "./pages/Listing"; import NotFound from "./pages/NotFound"; import SignIn from "./pages/SignIn"; import SignUp from "./pages/SignUp"; +import ResetPassword from "./pages/ResetPassword"; import Cart from "./pages/cart"; import Wishlist from "./pages/wishList"; import "./responsive.css"; @@ -72,17 +73,14 @@ function App() { }; const fetchWishlistProducts = async () => { - console.log("fetchWishlistProducts"); try { const wishlistRef = doc(db, "wishlists", localStorage.getItem("uid")); const productsCollectionRef = collection(wishlistRef, "products"); const querySnapshot = await getDocs(productsCollectionRef); - console.log(querySnapshot); const products = []; querySnapshot.forEach((doc) => { products.push({ id: doc.id, ...doc.data() }); }); - console.log(products); setWishlistItems(products); setWishlistCount(products.length); // Set the product count } catch (error) { @@ -100,7 +98,6 @@ function App() { throw new Error("Network response was not ok"); } const data = await response.json(); - // //console.log("fetced data", data) setData(data); } catch (error) { console.error("Error fetching data:", error); @@ -136,7 +133,6 @@ function App() { (snapshot) => { const data = snapshot.val(); setCartItems(data); - //console.log("Data fetched successfully:", data); }, (error) => { console.error("Error fetching data:", error); @@ -161,7 +157,6 @@ function App() { (snapshot) => { const data = snapshot.val(); setCartItems(data); - //console.log("Data fetched successfully:", data); }, (error) => { console.error("Error fetching data:", error); @@ -182,7 +177,6 @@ function App() { const uniqueKey = user + item.id; // Modify as per your requirement // Add item to the cart in Firebase setCartItems([...cartItems, { ...item, quantity: 1 }]); - //console.log('Item added to cart successfully'); } catch (error) { console.error("Error adding item to cart:", error); } @@ -272,6 +266,9 @@ function App() { {isLogin === null && ( } /> )} + {isLogin === null && ( + } /> + )} {isLogin === null && ( } /> )} diff --git a/src/Hooks/useLoggedInUserEmail.js b/src/Hooks/useLoggedInUserEmail.js index 1c513e6..c008cb5 100644 --- a/src/Hooks/useLoggedInUserEmail.js +++ b/src/Hooks/useLoggedInUserEmail.js @@ -1,13 +1,13 @@ import { useState } from 'react'; const useLoggedInUserEmail = () => { - const [loggedInUserEmail, setLoggedInUserEmail] = useState(''); + const [loggedInUserEmail, setLoggedInUserEmail] = useState(''); - const setLoggedInEmail = (email) => { - setLoggedInUserEmail(email); - }; + const setLoggedInEmail = (email) => { + setLoggedInUserEmail(email); + }; - return [loggedInUserEmail, setLoggedInEmail]; + return [loggedInUserEmail, setLoggedInEmail]; }; export default useLoggedInUserEmail; diff --git a/src/Redux/auth-slice.js b/src/Redux/auth-slice.js index ce6a177..278c414 100644 --- a/src/Redux/auth-slice.js +++ b/src/Redux/auth-slice.js @@ -1,29 +1,29 @@ -import { createSlice } from "@reduxjs/toolkit"; +import { createSlice } from '@reduxjs/toolkit'; const initialState = { - value:{ - isAuth:false, - email:"", - } -} + value: { + isAuth: false, + email: '' + } +}; export const auth = createSlice({ - name:"auth", - initialState, - reducers:{ - logOut:()=>{ - return initialState - }, - logIn:(state,action)=>{ - return { - value : { - isAuth:true, - email:action.payload.email - } - } + name: 'auth', + initialState, + reducers: { + logOut: () => { + return initialState; + }, + logIn: (state, action) => { + return { + value: { + isAuth: true, + email: action.payload.email } + }; } -}) + } +}); -export const {logIn,logOut} = auth.actions; -export default auth.reducer; \ No newline at end of file +export const { logIn, logOut } = auth.actions; +export default auth.reducer; diff --git a/src/Redux/store.js b/src/Redux/store.js index 59a1dce..92a67e4 100644 --- a/src/Redux/store.js +++ b/src/Redux/store.js @@ -1,9 +1,9 @@ -import { configureStore } from "@reduxjs/toolkit"; -import authReducer from "./auth-slice" +import { configureStore } from '@reduxjs/toolkit'; +import authReducer from './auth-slice'; export const store = configureStore({ - //Reducer is a function that takes an action and updates the previous state - reducer: { - authReducer - } -}) \ No newline at end of file + //Reducer is a function that takes an action and updates the previous state + reducer: { + authReducer + } +}); diff --git a/src/components/Sidebar/index.js b/src/components/Sidebar/index.js index e3cb80f..2240fc7 100644 --- a/src/components/Sidebar/index.js +++ b/src/components/Sidebar/index.js @@ -17,202 +17,214 @@ import 'react-range-slider-input/dist/style.css'; import { MyContext } from '../../App'; function valuetext(value) { - return `${value}°C`; + return `${value}°C`; } const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; const Sidebar = (props) => { - const [value, setValue] = useState([100, 60000]); - const [value2, setValue2] = useState(0); - const [brandFilters, setBrandFilters] = React.useState([]); - const [ratingsArr, setRatings] = React.useState([]); - const [totalLength, setTotalLength] = useState([]); - - const context = useContext(MyContext); - - let { id } = useParams(); - - - var brands = []; - var ratings = []; - - - var catLength = 0; - var lengthArr = []; - useEffect(() => { - props.data.length !== 0 && - props.data.map((item, index) => { - item.items.length !== 0 && - item.items.map((item_) => { - catLength += item_.products.length - }) - lengthArr.push(catLength) - catLength = 0; - }) - - const list = lengthArr.filter((item, index) => lengthArr.indexOf(item) === index); - setTotalLength(list) - - - }, []); - - - - useEffect(() => { - brands = []; - ratings=[]; - props.currentCatData.length !== 0 && - props.currentCatData.map((item) => { - brands.push(item.brand); - ratings.push(parseFloat(item.rating)) - }) - - const brandList = brands.filter((item, index) => brands.indexOf(item) === index); - setBrandFilters(brandList); - - const ratings_ = ratings.filter((item, index) => ratings.indexOf(item) === index); - setRatings(ratings_) - - }, [id]) - - - - - useEffect(() => { - var price = 0; - props.currentCatData.length !== 0 && - props.currentCatData.map((item, index) => { - let prodPrice = parseInt(item.price.toString().replace(/,/g, "")); - if (prodPrice > price) { - price = prodPrice - } - }) - - - setValue2(price) - - //setValue(price); - //filterByPrice(price[0], price[1]); - - - - }, [props.currentCatData]); - - - const filterByBrand = (keyword) => { - props.filterByBrand(keyword) - } - - const filterByRating = (keyword) => { - props.filterByRating(parseFloat(keyword)) - } - - useEffect(() => { - filterByPrice(value[0], value[1]); - }, [value]); - - const filterByPrice = (minValue, maxValue) => { - props.filterByPrice(minValue, maxValue) - } - - - return ( - <> -
    -
    -

    Category

    -
    - { - props.data.length !== 0 && props.data.map((item, index) => { - return ( - -
    - -

    {item.cat_name}

    - - {totalLength[index]} -
    - - ) - }) - - } - -
    -
    - - -
    -

    Fill by price

    - - - - -
    - From: Rs: {value[0]} - From: Rs: {value[1]} -
    - - -
    -
    Filter By Brand
    - -
      - - { - brandFilters.length !== 0 && - brandFilters.map((item, index) => { - return ( -
    • filterByBrand(item)} />} label={item} />
    • - ) - }) - - } -
      - -
    + const [value, setValue] = useState([100, 60000]); + const [value2, setValue2] = useState(0); + const [brandFilters, setBrandFilters] = React.useState([]); + const [ratingsArr, setRatings] = React.useState([]); + const [totalLength, setTotalLength] = useState([]); + + const context = useContext(MyContext); + + let { id } = useParams(); + + var brands = []; + var ratings = []; + + var catLength = 0; + var lengthArr = []; + useEffect(() => { + props.data.length !== 0 && + props.data.map((item, index) => { + item.items.length !== 0 && + item.items.map((item_) => { + catLength += item_.products.length; + }); + lengthArr.push(catLength); + catLength = 0; + }); + + const list = lengthArr.filter( + (item, index) => lengthArr.indexOf(item) === index + ); + setTotalLength(list); + }, []); + + useEffect(() => { + brands = []; + ratings = []; + props.currentCatData.length !== 0 && + props.currentCatData.map((item) => { + brands.push(item.brand); + ratings.push(parseFloat(item.rating)); + }); + + const brandList = brands.filter( + (item, index) => brands.indexOf(item) === index + ); + setBrandFilters(brandList); + + const ratings_ = ratings.filter( + (item, index) => ratings.indexOf(item) === index + ); + setRatings(ratings_); + }, [id]); + + useEffect(() => { + var price = 0; + props.currentCatData.length !== 0 && + props.currentCatData.map((item, index) => { + let prodPrice = parseInt(item.price.toString().replace(/,/g, '')); + if (prodPrice > price) { + price = prodPrice; + } + }); + + setValue2(price); + + //setValue(price); + //filterByPrice(price[0], price[1]); + }, [props.currentCatData]); + + const filterByBrand = (keyword) => { + props.filterByBrand(keyword); + }; + + const filterByRating = (keyword) => { + props.filterByRating(parseFloat(keyword)); + }; + + useEffect(() => { + filterByPrice(value[0], value[1]); + }, [value]); + + const filterByPrice = (minValue, maxValue) => { + props.filterByPrice(minValue, maxValue); + }; + + return ( + <> +
    +
    +

    Category

    +
    + {props.data.length !== 0 && + props.data.map((item, index) => { + return ( + +
    + + + +

    + {item.cat_name} +

    + + {totalLength[index]} +
    - - -
    -
    Filter By Ratings
    -
      - - { - ratingsArr.length !== 0 && - ratingsArr.map((item, index) => { - return ( -
    • filterByRating(item)} />} label={item} />
    • - ) - }) - - } -
      -
    -
    - - -
    - -
    - -
    - - - - - -
    - - ) -} - -export default Sidebar; \ No newline at end of file + + ); + })} +
    +
    + +
    +

    Fill by price

    + + + +
    + + From: Rs: {value[0]} + + + From: Rs: {value[1]} + +
    + +
    +
    Filter By Brand
    + +
      + + {brandFilters.length !== 0 && + brandFilters.map((item, index) => { + return ( +
    • + {' '} + filterByBrand(item)} /> + } + label={item} + /> +
    • + ); + })} +
      +
    +
    + +
    +
    Filter By Ratings
    +
      + + {ratingsArr.length !== 0 && + ratingsArr.map((item, index) => { + return ( +
    • + {' '} + filterByRating(item)} /> + } + label={item} + /> +
    • + ); + })} +
      +
    +
    + +
    + +
    +
    + + +
    + + ); +}; + +export default Sidebar; diff --git a/src/components/banners/index.js b/src/components/banners/index.js index bfda5ea..c116853 100644 --- a/src/components/banners/index.js +++ b/src/components/banners/index.js @@ -5,34 +5,32 @@ import Banner3 from '../../assets/images/banner3.jpg'; import './style.css'; -const Banners = ()=>{ - return( -
    -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    +const Banners = () => { + return ( +
    +
    +
    +
    +
    + +
    +
    -
    -
    - -
    -
    +
    +
    + +
    +
    - -
    +
    +
    +
    +
    - ) -} +
    +
    + ); +}; -export default Banners; \ No newline at end of file +export default Banners; diff --git a/src/components/banners/style.css b/src/components/banners/style.css index e90d80c..c6bd1fd 100644 --- a/src/components/banners/style.css +++ b/src/components/banners/style.css @@ -1,4 +1,12 @@ -.bannerSection{padding: 25px 0px; } +.bannerSection { + padding: 25px 0px; +} -.bannerSection .box{overflow: hidden; border-radius: 15px; cursor: pointer;} -.bannerSection .box:hover img{transform: scale(1.1)} \ No newline at end of file +.bannerSection .box { + overflow: hidden; + border-radius: 15px; + cursor: pointer; +} +.bannerSection .box:hover img { + transform: scale(1.1); +} diff --git a/src/components/catSlider/index.js b/src/components/catSlider/index.js index 3d61a28..e6088a0 100644 --- a/src/components/catSlider/index.js +++ b/src/components/catSlider/index.js @@ -1,120 +1,113 @@ -import React, { useEffect, useRef, useState,useContext } from 'react'; -import Slider from "react-slick"; +import React, { useEffect, useRef, useState, useContext } from 'react'; +import Slider from 'react-slick'; import './style.css'; import { Link } from 'react-router-dom'; import { MyContext } from '../../App'; const CatSlider = (props) => { - - const [allData, setAllData] = useState(props.data); - const [totalLength, setTotalLength] = useState([]); - const context = useContext(MyContext); - - const [itemBg, setItemBg] = useState([ - '#fffceb', - '#ecffec', - '#feefea', - '#fff3eb', - '#fff3ff', - '#f2fce4', - '#feefea', - '#fffceb', - '#feefea', - '#ecffec', - '#feefea', - '#fff3eb', - '#fff3ff', - '#f2fce4', - '#feefea', - '#fffceb', - '#feefea', - '#ecffec' - ]); - - const slider = useRef(); - - - var settings = { - dots: false, - infinite: false, - speed: 500, - slidesToShow: 10, - slidesToScroll: 1, - fade: false, - arrows: context.windowWidth>992 ? true : false, - autoplay: context.windowWidth>992 ? 2000 : false, - centerMode: context.windowWidth>992 ? true : false - }; - - - var catLength = 0; - var lengthArr = []; - useEffect(() => { - allData.length !== 0 && - allData.map((item, index) => { - item.items.length !== 0 && - item.items.map((item_) => { - catLength += item_.products.length - }) - lengthArr.push(catLength) - catLength = 0; - }) - - const list = lengthArr.filter((item, index) => lengthArr.indexOf(item) === index); - setTotalLength(list) - - - }, []); - - - return ( - <> -
    -
    -

    Featured Categories

    - - - - { - allData.length !== 0 && - allData.map((item, index) => { - return ( -
    - -
    - -
    {item.cat_name}
    -

    {totalLength[index]} items

    -
    - - -
    - ) - }) - } - - - - - - - - { - // itemBg.length!==0 && itemBg.map((item,index)=>{ - // return( - //
    - //
    - // - //
    Cake & Milk
    - //

    26 items

    - //
    - //
    - // ) - // }) - } - - - {/*
    + const [allData, setAllData] = useState(props.data); + const [totalLength, setTotalLength] = useState([]); + const context = useContext(MyContext); + + const [itemBg, setItemBg] = useState([ + '#fffceb', + '#ecffec', + '#feefea', + '#fff3eb', + '#fff3ff', + '#f2fce4', + '#feefea', + '#fffceb', + '#feefea', + '#ecffec', + '#feefea', + '#fff3eb', + '#fff3ff', + '#f2fce4', + '#feefea', + '#fffceb', + '#feefea', + '#ecffec' + ]); + + const slider = useRef(); + + var settings = { + dots: false, + infinite: false, + speed: 500, + slidesToShow: 10, + slidesToScroll: 1, + fade: false, + arrows: context.windowWidth > 992 ? true : false, + autoplay: context.windowWidth > 992 ? 2000 : false, + centerMode: context.windowWidth > 992 ? true : false + }; + + var catLength = 0; + var lengthArr = []; + useEffect(() => { + allData.length !== 0 && + allData.map((item, index) => { + item.items.length !== 0 && + item.items.map((item_) => { + catLength += item_.products.length; + }); + lengthArr.push(catLength); + catLength = 0; + }); + + const list = lengthArr.filter( + (item, index) => lengthArr.indexOf(item) === index + ); + setTotalLength(list); + }, []); + + return ( + <> +
    +
    +

    Featured Categories

    + + {allData.length !== 0 && + allData.map((item, index) => { + return ( +
    + +
    + +
    + {item.cat_name} +
    +

    {totalLength[index]} items

    +
    + +
    + ); + })} + + { + // itemBg.length!==0 && itemBg.map((item,index)=>{ + // return( + //
    + //
    + // + //
    Cake & Milk
    + //

    26 items

    + //
    + //
    + // ) + // }) + } + + {/*
    Cake & Milk
    @@ -228,16 +221,11 @@ const CatSlider = (props) => {

    26 items

    */} - - -
    -
    -
    - - - - - ) -} - -export default CatSlider; \ No newline at end of file + +
    +
    + + ); +}; + +export default CatSlider; diff --git a/src/components/catSlider/style.css b/src/components/catSlider/style.css index ded9971..648079c 100644 --- a/src/components/catSlider/style.css +++ b/src/components/catSlider/style.css @@ -1,17 +1,66 @@ -.catSliderSection{width: 100%; height: auto; padding: 30px 0px;} -.cat_slider_Main .slick-slide{padding-right: 20px !important;} -.cat_slider_Main .slick-list{padding-left: 25px !important;} -.cat_slider_Main .item{ height: auto; display: flex; align-items: center; justify-content: center; cursor: pointer;padding: 15px 0px; } +.catSliderSection { + width: 100%; + height: auto; + padding: 30px 0px; +} +.cat_slider_Main .slick-slide { + padding-right: 20px !important; +} +.cat_slider_Main .slick-list { + padding-left: 25px !important; +} +.cat_slider_Main .item { + height: auto; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + padding: 15px 0px; +} -.cat_slider_Main .item .info{margin: auto; display: flex; align-items: center; justify-content: center; flex-direction: column; padding: 15px; transition: all 0.3s ease-in-out; position: relative;} +.cat_slider_Main .item .info { + margin: auto; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + padding: 15px; + transition: all 0.3s ease-in-out; + position: relative; +} -.cat_slider_Main .item a{text-decoration: none;} -.cat_slider_Main .item .info h5{font-weight: 600 !important; color: #000 !important; } -.cat_slider_Main .item .info p{font-size: 14px; opacity: 0.8; color: #000 !important; margin-bottom: 0px;} +.cat_slider_Main .item a { + text-decoration: none; +} +.cat_slider_Main .item .info h5 { + font-weight: 600 !important; + color: #000 !important; +} +.cat_slider_Main .item .info p { + font-size: 14px; + opacity: 0.8; + color: #000 !important; + margin-bottom: 0px; +} -.cat_slider_Main .slick-arrow{zoom: 80%;} -.cat_slider_Main .slick-arrow.slick-next{top: -50px !important; right: 15px !important;} +.cat_slider_Main .slick-arrow { + zoom: 80%; +} +.cat_slider_Main .slick-arrow.slick-next { + top: -50px !important; + right: 15px !important; +} -.cat_slider_Main .slick-arrow.slick-prev{top: -50px !important; right: 100px !important; left: inherit !important;} +.cat_slider_Main .slick-arrow.slick-prev { + top: -50px !important; + right: 100px !important; + left: inherit !important; +} -.cat_slider_Main .item:hover .info, .cat_slider_Main .slick-current .info{box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); transform: scale(1.1);} +.cat_slider_Main .item:hover .info, +.cat_slider_Main .slick-current .info { + box-shadow: + 0 3px 6px rgba(0, 0, 0, 0.16), + 0 3px 6px rgba(0, 0, 0, 0.23); + transform: scale(1.1); +} diff --git a/src/components/footer/footer.css b/src/components/footer/footer.css index fa6d86a..7978062 100644 --- a/src/components/footer/footer.css +++ b/src/components/footer/footer.css @@ -1,30 +1,105 @@ -.footerWrapper{padding: 45px 0px; width: 100%;} -.footerWrapper .footerBoxes .box{background: #F4F6FA; padding: 25px 25px; border-radius: 15px; } -.footerWrapper .footerBoxes .box .info{padding-left: 25px;} -.footerWrapper .footerBoxes .box img{position: relative; transition: all 0.2s ease-in-out;} -.footerWrapper .footerBoxes .box .info h4{font-size: 25px; font-weight: 600;} -.footerWrapper .footerBoxes .box .info p{margin-bottom: 0px; font-size: 20px; opacity: 0.8; } -.footerWrapper .footerBoxes .box:hover img{transform: translateY(-5px);} +.footerWrapper { + padding: 45px 0px; + width: 100%; +} +.footerWrapper .footerBoxes .box { + background: #f4f6fa; + padding: 25px 25px; + border-radius: 15px; +} +.footerWrapper .footerBoxes .box .info { + padding-left: 25px; +} +.footerWrapper .footerBoxes .box img { + position: relative; + transition: all 0.2s ease-in-out; +} +.footerWrapper .footerBoxes .box .info h4 { + font-size: 25px; + font-weight: 600; +} +.footerWrapper .footerBoxes .box .info p { + margin-bottom: 0px; + font-size: 20px; + opacity: 0.8; +} +.footerWrapper .footerBoxes .box:hover img { + transform: translateY(-5px); +} -footer p, footer a{font-size: 18px;} +footer p, +footer a { + font-size: 18px; +} -footer{padding: 60px 0px; padding-bottom: 0px;} +footer { + padding: 60px 0px; + padding-bottom: 0px; +} -footer .part1 svg{color: #3bb77e !important;} +footer .part1 svg { + color: #3bb77e !important; +} -footer h3{color: #000; font-weight: 600; margin-bottom: 20px;} -footer .part2 ul li{list-style: none; margin-bottom: 13px;} -footer .part2 ul li a{color:#000; opacity: 0.8; font-size: 500; transition: all 0.2s ease-in-out;} -footer .part2 ul li a:hover{text-decoration: none;color: #3bb77e !important; opacity: 1; padding-left: 5px;} +footer h3 { + color: #000; + font-weight: 600; + margin-bottom: 20px; +} +footer .part2 ul li { + list-style: none; + margin-bottom: 13px; +} +footer .part2 ul li a { + color: #000; + opacity: 0.8; + font-size: 500; + transition: all 0.2s ease-in-out; +} +footer .part2 ul li a:hover { + text-decoration: none; + color: #3bb77e !important; + opacity: 1; + padding-left: 5px; +} -footer .lastStrip{padding: 15px 0px;} +footer .lastStrip { + padding: 15px 0px; +} -.phNo svg{ font-size: 45px !important; opacity: 0.8;} -.phNo h3{ font-size:32px !important; line-height: 35px !important;} -.phNo p{ font-size: 16px !important; opacity: 0.8;} +.phNo svg { + font-size: 45px !important; + opacity: 0.8; +} +.phNo h3 { + font-size: 32px !important; + line-height: 35px !important; +} +.phNo p { + font-size: 16px !important; + opacity: 0.8; +} -footer .lastStrip .part3 h5{margin-bottom: 0px;} -footer .lastStrip .part3 ul{margin-bottom: 0px; padding-left: 25px;} -footer .lastStrip .part3 ul li a{display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; background: #3bb77e; border-radius: 50%; transition: all 0.2s ease-in-out !important;} -footer .lastStrip .part3 ul li a svg{color: #fff !important;} -footer .lastStrip .part3 ul li a:hover{background:rgb(51, 51, 51);} \ No newline at end of file +footer .lastStrip .part3 h5 { + margin-bottom: 0px; +} +footer .lastStrip .part3 ul { + margin-bottom: 0px; + padding-left: 25px; +} +footer .lastStrip .part3 ul li a { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + background: #3bb77e; + border-radius: 50%; + transition: all 0.2s ease-in-out !important; +} +footer .lastStrip .part3 ul li a svg { + color: #fff !important; +} +footer .lastStrip .part3 ul li a:hover { + background: rgb(51, 51, 51); +} diff --git a/src/components/footer/footer.js b/src/components/footer/footer.js index 47277e5..5b43bc9 100644 --- a/src/components/footer/footer.js +++ b/src/components/footer/footer.js @@ -138,19 +138,6 @@ const Footer = () => {
-
-

Company

-
    -
  • Account
  • -
  • Delivery Information
  • -
  • Privacy Policy
  • -
  • Terms & Conditions
  • -
  • Contact Us
  • -
  • Support Center
  • -
  • Careers
  • -
-
-

Corporate

@@ -207,8 +194,8 @@ const Footer = () => {
-

© {currentYear}, Nest - HTML Ecommerce Template - All rights reserved

+

© {currentYear}, Nest - HTML Ecommerce Template

+

All rights reserved

diff --git a/src/components/header/header.css b/src/components/header/header.css index de38c34..8554482 100644 --- a/src/components/header/header.css +++ b/src/components/header/header.css @@ -1,35 +1,156 @@ -header{width: 100%; height:auto; margin: auto; padding: 30px 0px; background: #fff;} -.headerWrapper{transition: all 0.3s ease-in-out; background: #fff; position: fixed; top: 0px; left: 0px; width: 100%; z-index: 1000;} -.headerWrapper.fixed{ top: -126px; } -header .headerSearch{width: 100%; height: 60px; border: 1px solid #bce3c9; padding: 10px 20px; border-radius: 4px; } -header .headerSearch .selectDropWrapper{width: 23%; font-size: 16px; font-weight: 500; position: relative;} -header .headerSearch .selectDropWrapper:after{content: ''; width: 1px; height: 30px; background: rgba(0,0,0,0.2); position: absolute; top: 5px; right: 0px;} -header .headerSearch .search{width:87%; padding-left: 30px; position: relative;} -header .headerSearch .search input{width: 100%; height: 50px; border: 0px; outline: none !important; font-size: 18px;} -header .headerSearch .search .searchIcon{position: absolute; top: 12px; right:0px; opacity: 0.5; font-size: 30px !important;} +header { + width: 100%; + height: auto; + margin: auto; + padding: 30px 0px; + background: #fff; +} +.headerWrapper { + transition: all 0.3s ease-in-out; + background: #fff; + position: fixed; + top: 0px; + left: 0px; + width: 100%; + z-index: 1000; +} +.headerWrapper.fixed { + top: -126px; +} +header .headerSearch { + width: 100%; + height: 60px; + border: 1px solid #bce3c9; + padding: 10px 20px; + border-radius: 4px; +} +header .headerSearch .selectDropWrapper { + width: 23%; + font-size: 16px; + font-weight: 500; + position: relative; +} +header .headerSearch .selectDropWrapper:after { + content: ''; + width: 1px; + height: 30px; + background: rgba(0, 0, 0, 0.2); + position: absolute; + top: 5px; + right: 0px; +} +header .headerSearch .search { + width: 87%; + padding-left: 30px; + position: relative; +} +header .headerSearch .search input { + width: 100%; + height: 50px; + border: 0px; + outline: none !important; + font-size: 18px; +} +header .headerSearch .search .searchIcon { + position: absolute; + top: 12px; + right: 0px; + opacity: 0.5; + font-size: 30px !important; +} -.afterHeader{margin-top: 210px;} +.afterHeader { + margin-top: 210px; +} +header .countryWrapper .selectDropWrapper { + width: 200px !important; + height: 50px; + padding-left: 10px; + display: flex; + align-items: center; + border: 1px solid #ececec; + -webkit-box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.05); + box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.05); +} +header .countryWrapper .selectDropWrapper .openSelect { + width: 100%; + font-weight: 600; +} +header .countryWrapper .selectDropWrapper .selectDrop { + left: 0px !important; +} +header .countryWrapper .openSelect { + color: #279a65 !important ; +} -header .countryWrapper .selectDropWrapper{width: 200px !important; height: 50px; padding-left: 10px; display: flex; align-items: center; border: 1px solid #ececec; - -webkit-box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.05); - box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.05);} -header .countryWrapper .selectDropWrapper .openSelect{width: 100%; font-weight: 600;} -header .countryWrapper .selectDropWrapper .selectDrop{left:0px !important;} -header .countryWrapper .openSelect{color:#279a65 !important ;} +header .headerTabs { + padding-left: 40px; +} +header .headerTabs li { + position: relative; + margin-left: 20px; +} +header .headerTabs li span { + font-size: 20px; + cursor: pointer; + text-decoration: none; +} +header .headerTabs li span:hover { + text-decoration: none; +} +header .headerTabs li span * { + color: #000; +} +header .headerTabs li span img { + margin-right: 10px; +} +header .headerTabs li span.badge { + width: 28px; + height: 28px; + color: #fff; + font-weight: 400; + position: absolute; + top: -16px; + left: 10px; + display: flex; + align-items: center; + justify-content: center; + font-size: 12px !important; +} +.dropdownMenu { + position: absolute; + top: 40px; + right: 0px; + width: 200px; + height: auto; + background: #fff; + box-shadow: + 0 3px 6px rgba(0, 0, 0, 0.16), + 0 3px 6px rgba(0, 0, 0, 0.23); + padding: 10px 0px; + z-index: 100; +} +.dropdownMenu li { + width: 100% !important; + list-style: none; + margin: 0px !important; +} +.dropdownMenu li button { + width: 100% !important; + text-align: left !important; + justify-content: flex-start !important; + color: rgba(0, 0, 0, 0.7) !important; + text-transform: capitalize !important; + font-size: 18px !important; + padding: 12px 15px !important; +} -header .headerTabs{padding-left: 40px;} -header .headerTabs li{position: relative; margin-left: 20px;} -header .headerTabs li span{font-size: 20px; cursor: pointer; text-decoration: none;} -header .headerTabs li span:hover{text-decoration: none;} -header .headerTabs li span *{color: #000;} -header .headerTabs li span img{margin-right: 10px;} -header .headerTabs li span.badge{width: 28px; height:28px; color: #fff; font-weight: 400; position: absolute; top:-16px; left: 10px; display: flex; align-items: center; justify-content: center; font-size: 12px !important;} - -.dropdownMenu{position: absolute; top: 40px; right: 0px; width: 200px; height: auto; background: #fff; box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); padding: 10px 0px; z-index: 100;} -.dropdownMenu li{width: 100% !important; list-style: none; margin: 0px !important;} -.dropdownMenu li button{width: 100% !important; text-align: left !important; justify-content: flex-start !important; color: rgba(0,0,0,0.7) !important; text-transform: capitalize !important; font-size: 18px !important; padding: 12px 15px !important;} - -.dropdownMenu li button svg{opacity: 0.7; margin-right: 8px !important;} -.dropdownMenu li button:hover{background: #f1f1f1 !important;} \ No newline at end of file +.dropdownMenu li button svg { + opacity: 0.7; + margin-right: 8px !important; +} +.dropdownMenu li button:hover { + background: #f1f1f1 !important; +} diff --git a/src/components/header/header.js b/src/components/header/header.js index 05e58de..bdeef78 100644 --- a/src/components/header/header.js +++ b/src/components/header/header.js @@ -1,35 +1,35 @@ -import React, { useState, useEffect, useRef } from "react"; -import "../header/header.css"; -import Logo from "../../assets/images/logo.svg"; -import SearchIcon from "@mui/icons-material/Search"; -import Select from "../selectDrop/select"; -import axios from "axios"; -import LocationOnOutlinedIcon from "@mui/icons-material/LocationOnOutlined"; -import IconCompare from "../../assets/images/icon-compare.svg"; -import IconHeart from "../../assets/images/icon-heart.svg"; -import IconCart from "../../assets/images/icon-cart.svg"; -import IconUser from "../../assets/images/icon-user.svg"; +import React, { useState, useEffect, useRef } from 'react'; +import '../header/header.css'; +import Logo from '../../assets/images/logo.svg'; +import SearchIcon from '@mui/icons-material/Search'; +import Select from '../selectDrop/select'; +import axios from 'axios'; +import LocationOnOutlinedIcon from '@mui/icons-material/LocationOnOutlined'; +import IconCompare from '../../assets/images/icon-compare.svg'; +import IconHeart from '../../assets/images/icon-heart.svg'; +import IconCart from '../../assets/images/icon-cart.svg'; +import IconUser from '../../assets/images/icon-user.svg'; -import Button from "@mui/material/Button"; -import Person2OutlinedIcon from "@mui/icons-material/Person2Outlined"; -import FavoriteBorderOutlinedIcon from "@mui/icons-material/FavoriteBorderOutlined"; -import SettingsOutlinedIcon from "@mui/icons-material/SettingsOutlined"; -import LogoutOutlinedIcon from "@mui/icons-material/LogoutOutlined"; +import Button from '@mui/material/Button'; +import Person2OutlinedIcon from '@mui/icons-material/Person2Outlined'; +import FavoriteBorderOutlinedIcon from '@mui/icons-material/FavoriteBorderOutlined'; +import SettingsOutlinedIcon from '@mui/icons-material/SettingsOutlined'; +import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined'; -import { ClickAwayListener } from "@mui/base/ClickAwayListener"; +import { ClickAwayListener } from '@mui/base/ClickAwayListener'; -import Nav from "./nav/nav"; -import { Link } from "react-router-dom"; -import { useContext } from "react"; +import Nav from './nav/nav'; +import { Link } from 'react-router-dom'; +import { useContext } from 'react'; -import { MyContext } from "../../App"; -import { useNavigate } from "react-router-dom"; -import MenuIcon from "@mui/icons-material/Menu"; -import FmdGoodOutlinedIcon from "@mui/icons-material/FmdGoodOutlined"; -import ArrowBackIosIcon from "@mui/icons-material/ArrowBackIos"; -import PersonOutlineOutlinedIcon from "@mui/icons-material/PersonOutlineOutlined"; -import { Satellite } from "@mui/icons-material"; -import { getDatabase, ref, onValue } from "firebase/database"; +import { MyContext } from '../../App'; +import { useNavigate } from 'react-router-dom'; +import MenuIcon from '@mui/icons-material/Menu'; +import FmdGoodOutlinedIcon from '@mui/icons-material/FmdGoodOutlined'; +import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos'; +import PersonOutlineOutlinedIcon from '@mui/icons-material/PersonOutlineOutlined'; +import { Satellite } from '@mui/icons-material'; +import { getDatabase, ref, onValue } from 'firebase/database'; const Header = (props) => { const [isOpenDropDown, setisOpenDropDown] = useState(false); @@ -43,34 +43,34 @@ const Header = (props) => { const headerRef = useRef(); const searchInput = useRef(); - const [profile, setProfile] = useState(""); + const [profile, setProfile] = useState(''); const context = useContext(MyContext); const history = useNavigate(); const [categories, setcategories] = useState([ - "Clothing & beauty", - "Fresh Seafood", - "Pet Foods & Toy", - "Fast food", - "Baking material", - "Vegetables", - "Fresh Fruit", - "Bread and Juice", - "Milks and Dairies", - "Wines & Drinks", - "Clothing & beauty", - "Fresh Seafood", + 'Clothing & beauty', + 'Fresh Seafood', + 'Pet Foods & Toy', + 'Fast food', + 'Baking material', + 'Vegetables', + 'Fresh Fruit', + 'Bread and Juice', + 'Milks and Dairies', + 'Wines & Drinks', + 'Clothing & beauty', + 'Fresh Seafood' ]); const countryList = []; useEffect(() => { - getCountry("https://countriesnow.space/api/v0.1/countries/"); + getCountry('https://countriesnow.space/api/v0.1/countries/'); }, []); useEffect(() => { - setProfile(localStorage.getItem("userImage")); + setProfile(localStorage.getItem('userImage')); }, [context.isLogin]); const getCountry = async (url) => { try { @@ -86,7 +86,7 @@ const Header = (props) => { } }); } catch (error) { - //console.log(error.message); + console.log(error); } }; @@ -103,8 +103,8 @@ const Header = (props) => { const signOut = () => { context.signOut(); - localStorage.setItem("userImage", ""); - history("/"); + localStorage.setItem('userImage', ''); + history('/'); }; const openSearch = () => { @@ -115,7 +115,7 @@ const Header = (props) => { const closeSearch = () => { setOpenSearch(false); searchInput.current.blur(); - searchInput.current.value = ""; + searchInput.current.value = ''; }; const openNav = () => { @@ -147,8 +147,8 @@ const Header = (props) => {
- - - ))} - - )} -
- ); + return ( +
+ {loading ? ( +
Loading...
+ ) : ( + + + {userLocation && ( + + You are here + + )} + {data.map((product) => ( + + +
+ Product +

{product.productName}

+

{product.address}

+

Shop: {product.shop_name}

+ +
+
+
+ ))} +
+ )} +
+ ); }; export default CartMapComponent; diff --git a/src/components/map/ITEMmap.js b/src/components/map/ITEMmap.js index f019809..5a5c16f 100644 --- a/src/components/map/ITEMmap.js +++ b/src/components/map/ITEMmap.js @@ -1,13 +1,13 @@ -import React, { useState, useEffect, useMemo } from "react"; -import { MapContainer, TileLayer, Marker, Popup } from "react-leaflet"; -import L from "leaflet"; -import "./map.css"; -import Button from "@mui/material/Button"; -import { green } from "@mui/material/colors"; +import React, { useState, useEffect, useMemo } from 'react'; +import { MapContainer, TileLayer, Marker, Popup } from 'react-leaflet'; +import L from 'leaflet'; +import './map.css'; +import Button from '@mui/material/Button'; +import { green } from '@mui/material/colors'; import { useNavigate } from 'react-router-dom'; const MapComponent = (props) => { - let navigate = useNavigate(); + let navigate = useNavigate(); const [products, setProducts] = useState([]); const [loading, setLoading] = useState(true); const [userLocation, setUserLocation] = useState(null); @@ -20,7 +20,7 @@ const MapComponent = (props) => { setUserLocation([position.coords.latitude, position.coords.longitude]); }, (error) => { - console.error("Error getting user location:", error); + console.error('Error getting user location:', error); setLoading(false); } ); @@ -42,7 +42,7 @@ const MapComponent = (props) => { const data = await props.data; ////console.log(data.length , data) // only when there is one item or viewing the product details - if (typeof props.data === "object" && !Array.isArray(props.data)) { + if (typeof props.data === 'object' && !Array.isArray(props.data)) { // //console.log("one item") setProducts([props.data]); // Wrap the single object in an array setLoading(false); @@ -52,9 +52,9 @@ const MapComponent = (props) => { const groceriesProducts = data.filter( (item) => - item.parentCatName === "Electronics" || - item.parentCatName === "groceries" || - item.parentCatName === "Fashion" + item.parentCatName === 'Electronics' || + item.parentCatName === 'groceries' || + item.parentCatName === 'Fashion' ); if (groceriesProducts.length > 0) { @@ -80,11 +80,11 @@ const MapComponent = (props) => { setLoading(false); calculateBounds(top50Products); } else { - console.error("No groceries products found"); + console.error('No groceries products found'); setLoading(false); } } catch (error) { - console.error("Error fetching data:", error); + console.error('Error fetching data:', error); setLoading(false); } }; @@ -105,7 +105,7 @@ const MapComponent = (props) => { scrollWheelZoom={false} key={key} zoom={4} - style={{ height: "100vh", width: "100%" }} + style={{ height: '100vh', width: '100%' }} center={userLocation} bounds={mapBounds} > @@ -115,9 +115,9 @@ const MapComponent = (props) => { position={userLocation} icon={L.icon({ iconUrl: - "https://cdn.rawgit.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-red.png", + 'https://cdn.rawgit.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-red.png', iconSize: [25, 41], - iconAnchor: [12, 41], + iconAnchor: [12, 41] })} > You are here @@ -125,41 +125,43 @@ const MapComponent = (props) => { )} {products.map((product) => { const [lat, lng] = product.coordinates; - const distance = L.latLng(lat, lng).distanceTo(L.latLng(userLocation)); + const distance = L.latLng(lat, lng).distanceTo( + L.latLng(userLocation) + ); const distanceInKm = (distance / 1000).toFixed(2); - return( - - -
- Product -

{product.productName}

-

{product.address}

-

Shop: {product.shop_name}

-

Distance from you: {distanceInKm} km

- -
-
-
- )})} + return ( + + +
+ Product +

{product.productName}

+

{product.address}

+

Shop: {product.shop_name}

+

Distance from you: {distanceInKm} km

+ +
+
+
+ ); + })} ), [key, userLocation, mapBounds, products] ); - -const handleViewProduct = (productId) => { + const handleViewProduct = (productId) => { navigate(`/product/${productId}`); -}; + }; return (
@@ -172,4 +174,4 @@ const handleViewProduct = (productId) => { ); }; -export default MapComponent; \ No newline at end of file +export default MapComponent; diff --git a/src/components/map/map.css b/src/components/map/map.css index 92afff7..b85cee8 100644 --- a/src/components/map/map.css +++ b/src/components/map/map.css @@ -1,19 +1,19 @@ .map-container { - position: relative; + position: relative; } .loading-screen { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - font-size: 24px; - color: #333; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 24px; + color: #333; } /* Adjust map size for smaller screens */ @media screen and (max-width: 768px) { - .map-container { - height: 90vh; - } -} \ No newline at end of file + .map-container { + height: 90vh; + } +} diff --git a/src/components/newsletter/index.js b/src/components/newsletter/index.js index 7f52dba..2fd2e90 100644 --- a/src/components/newsletter/index.js +++ b/src/components/newsletter/index.js @@ -4,13 +4,13 @@ import SendOutlinedIcon from '@mui/icons-material/SendOutlined'; import { Button } from '@mui/material'; const Newsletter = () => { - return ( -
- - - -
- ) -} + return ( +
+ + + +
+ ); +}; -export default Newsletter; \ No newline at end of file +export default Newsletter; diff --git a/src/components/newsletter/style.css b/src/components/newsletter/style.css index 5b01519..efbd4c0 100644 --- a/src/components/newsletter/style.css +++ b/src/components/newsletter/style.css @@ -1,13 +1,43 @@ - .newsLetterBanner{width: 600px; height: 80px; position: absolute; bottom: 150px; left:9%; z-index: 10;} +.newsLetterBanner { + width: 600px; + height: 80px; + position: absolute; + bottom: 150px; + left: 9%; + z-index: 10; +} - .newsLetterBanner input{width: 100%; height: 100%; background: #fff; border-radius:60px ; border: 0px; outline: none !important; padding-left: 80px; font-size: 20px; padding-right: 200px;} +.newsLetterBanner input { + width: 100%; + height: 100%; + background: #fff; + border-radius: 60px; + border: 0px; + outline: none !important; + padding-left: 80px; + font-size: 20px; + padding-right: 200px; +} -.newsLetterBanner button{padding: 10px 50px !important; border-radius: 50px !important; color: #fff !important; position: absolute; top: 0px; right: 0px; height: 80px !important; font-size: 20px !important; text-transform: capitalize !important; font-weight: 400 !important;} - - .newsLetterBanner svg{position: absolute; - top: 27px; - left: 35px; - z-index: 10; - font-size: 30px !important; - transform: rotate(-21deg); opacity: 0.5;} +.newsLetterBanner button { + padding: 10px 50px !important; + border-radius: 50px !important; + color: #fff !important; + position: absolute; + top: 0px; + right: 0px; + height: 80px !important; + font-size: 20px !important; + text-transform: capitalize !important; + font-weight: 400 !important; +} +.newsLetterBanner svg { + position: absolute; + top: 27px; + left: 35px; + z-index: 10; + font-size: 30px !important; + transform: rotate(-21deg); + opacity: 0.5; +} diff --git a/src/components/product/index.js b/src/components/product/index.js index 2b820f6..f211884 100644 --- a/src/components/product/index.js +++ b/src/components/product/index.js @@ -1,12 +1,12 @@ -import React, { useEffect, useState, useContext } from "react"; -import "./style.css"; -import Rating from "@mui/material/Rating"; -import { Button } from "@mui/material"; -import { Link } from "react-router-dom"; -import ShoppingCartOutlinedIcon from "@mui/icons-material/ShoppingCartOutlined"; -import FavoriteBorderOutlinedIcon from "@mui/icons-material/FavoriteBorderOutlined"; -import CompareArrowsOutlinedIcon from "@mui/icons-material/CompareArrowsOutlined"; -import RemoveRedEyeOutlinedIcon from "@mui/icons-material/RemoveRedEyeOutlined"; +import React, { useEffect, useState, useContext } from 'react'; +import './style.css'; +import Rating from '@mui/material/Rating'; +import { Button } from '@mui/material'; +import { Link } from 'react-router-dom'; +import ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'; +import FavoriteBorderOutlinedIcon from '@mui/icons-material/FavoriteBorderOutlined'; +import CompareArrowsOutlinedIcon from '@mui/icons-material/CompareArrowsOutlined'; +import RemoveRedEyeOutlinedIcon from '@mui/icons-material/RemoveRedEyeOutlined'; import { getDatabase, ref, @@ -14,12 +14,12 @@ import { set, push, child, - remove, -} from "firebase/database"; + remove +} from 'firebase/database'; -import { MyContext } from "../../App"; -import { db } from "../../firebase"; -import { doc, setDoc } from "firebase/firestore"; +import { MyContext } from '../../App'; +import { db } from '../../firebase'; +import { doc, setDoc } from 'firebase/firestore'; const Product = (props) => { const [productData, setProductData] = useState(); @@ -34,8 +34,8 @@ const Product = (props) => { }, [props.item]); const setProductCat = () => { - sessionStorage.setItem("parentCat", productData.parentCatName); - sessionStorage.setItem("subCatName", productData.subCatName); + sessionStorage.setItem('parentCat', productData.parentCatName); + sessionStorage.setItem('subCatName', productData.subCatName); }; ////console.log(productData); //printing1000 data @@ -46,7 +46,7 @@ const Product = (props) => { setUserLocation([position.coords.latitude, position.coords.longitude]); }, (error) => { - console.error("Error getting user location:", error); + console.error('Error getting user location:', error); } ); }, [context.isLogin]); @@ -100,28 +100,28 @@ const Product = (props) => { const addToCart = async (item) => { try { - const user = localStorage.getItem("uid"); - const cartRef = doc(db, "carts", user); - const productRef = doc(cartRef, "products", `${item.id}`); + const user = localStorage.getItem('uid'); + const cartRef = doc(db, 'carts', user); + const productRef = doc(cartRef, 'products', `${item.id}`); await setDoc(productRef, { ...item, quantity: 1 }); setIsadded(true); context.fetchCartProducts(); } catch (error) { - console.error("Error adding item to cart:", error); + console.error('Error adding item to cart:', error); } }; const addToWishlist = async (item) => { - console.log("addToWishlist"); + console.log('addToWishlist'); try { - const user = localStorage.getItem("uid"); - const wishlistRef = doc(db, "wishlists", user); - const productRef = doc(wishlistRef, "products", `${item.id}`); + const user = localStorage.getItem('uid'); + const wishlistRef = doc(db, 'wishlists', user); + const productRef = doc(wishlistRef, 'products', `${item.id}`); await setDoc(productRef, { ...item, quantity: 1 }); setIsadded(true); context.fetchWishlistProducts(); } catch (error) { - console.error("Error adding item to wishlist:", error); + console.error('Error adding item to wishlist:', error); } }; @@ -141,7 +141,7 @@ const Product = (props) => {
@@ -174,7 +174,7 @@ const Product = (props) => {
{productData.brand}

- {productData.productName.substr(0, 50) + "..."} + {productData.productName.substr(0, 50) + '...'}

{
Rs {productData.price} - {" "} + {' '} Rs {productData.oldPrice} @@ -204,7 +204,7 @@ const Product = (props) => { onClick={() => addToCart(productData)} > - {isAdded === true ? "Added" : "Add"} + {isAdded === true ? 'Added' : 'Add'}
diff --git a/src/components/product/style.css b/src/components/product/style.css index 8a4c23e..52cfa9e 100644 --- a/src/components/product/style.css +++ b/src/components/product/style.css @@ -1,40 +1,137 @@ -.productThumb{width: 100%; height: auto; border: 1px solid rgba(0,0,0,0.1); overflow: hidden; border-radius: 15px; padding:25px; transition: all 0.3s ease-in-out; position: relative;} +.productThumb { + width: 100%; + height: auto; + border: 1px solid rgba(0, 0, 0, 0.1); + overflow: hidden; + border-radius: 15px; + padding: 25px; + transition: all 0.3s ease-in-out; + position: relative; +} -.productThumb .badge{position: absolute; top: 0px; left: 0px; display: inline-block; -background: red; z-index: 10; color: #fff; padding: 10px 25px; font-size: 16px; -border-bottom-right-radius: 50px; border-top-left-radius: 5px; text-transform: capitalize;} +.productThumb .badge { + position: absolute; + top: 0px; + left: 0px; + display: inline-block; + background: red; + z-index: 10; + color: #fff; + padding: 10px 25px; + font-size: 16px; + border-bottom-right-radius: 50px; + border-top-left-radius: 5px; + text-transform: capitalize; +} -.productThumb .badge.hot{background: #f74b81 !important;} -.productThumb .badge.sale{background: #67bcee !important;} -.productThumb .badge.new{background: #3BB77E !important;} -.productThumb .badge.best{background: #f59758 !important;} +.productThumb .badge.hot { + background: #f74b81 !important; +} +.productThumb .badge.sale { + background: #67bcee !important; +} +.productThumb .badge.new { + background: #3bb77e !important; +} +.productThumb .badge.best { + background: #f59758 !important; +} -.productThumb:hover{box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);} +.productThumb:hover { + box-shadow: + 0 3px 6px rgba(0, 0, 0, 0.16), + 0 3px 6px rgba(0, 0, 0, 0.23); +} -.productThumb .imgWrapper{width: 100%; overflow: hidden; position: relative;} -.productThumb .imgWrapper .wrapper{height: 350px; overflow: hidden;} -.productThumb .imgWrapper img{ transition: all 0.3s ease-in-out; } +.productThumb .imgWrapper { + width: 100%; + overflow: hidden; + position: relative; +} +.productThumb .imgWrapper .wrapper { + height: 350px; + overflow: hidden; +} +.productThumb .imgWrapper img { + transition: all 0.3s ease-in-out; +} -.productThumb .imgWrapper .overlay{position: absolute; top:0px; left: 0px; width: 100%; height: 100%; padding: 25px; display: flex; align-items: center; justify-content: center; opacity: 0; transform: scale(0.8); } +.productThumb .imgWrapper .overlay { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + padding: 25px; + display: flex; + align-items: center; + justify-content: center; + opacity: 0; + transform: scale(0.8); +} -.productThumb:hover .imgWrapper .overlay{opacity: 1; transform: scale(1); } +.productThumb:hover .imgWrapper .overlay { + opacity: 1; + transform: scale(1); +} -.productThumb .imgWrapper .overlay ul{background: #fff; width: 140px; height: auto; border-radius: 10px; border: 1px solid #BCE3C9; } -.productThumb .imgWrapper .overlay ul li{margin-right: 0px !important;} -.productThumb .imgWrapper .overlay ul li a{display: block; padding: 10px; border-right: 1px solid #BCE3C9;} -.productThumb .imgWrapper .overlay ul li a svg{color: #3bb77e !important;} -.productThumb .imgWrapper .overlay ul li a:hover svg{color: #000 !important; opacity: 0.7;} - +.productThumb .imgWrapper .overlay ul { + background: #fff; + width: 140px; + height: auto; + border-radius: 10px; + border: 1px solid #bce3c9; +} +.productThumb .imgWrapper .overlay ul li { + margin-right: 0px !important; +} +.productThumb .imgWrapper .overlay ul li a { + display: block; + padding: 10px; + border-right: 1px solid #bce3c9; +} +.productThumb .imgWrapper .overlay ul li a svg { + color: #3bb77e !important; +} +.productThumb .imgWrapper .overlay ul li a:hover svg { + color: #000 !important; + opacity: 0.7; +} -.productThumb:hover .imgWrapper img{transform: scale(1.1);} +.productThumb:hover .imgWrapper img { + transform: scale(1.1); +} -.productThumb .catName{color: #000; opacity: 0.8; font-size: 14px;} -.productThumb .title{margin: 10px 0px;} -.productThumb .title a{color: #000; font-weight: 600; font-size: 22px; text-decoration: none; line-height: 22px;} -.productThumb .brand{color: rgba(0,0,0,0.6);} -.productThumb .brand a{text-decoration: none;} - -.productThumb button{font-size: 20px !important; color: #3bb77e !important; padding: 5px 25px !important; background: #def9ec !important; text-transform: capitalize !important;} -.productThumb button:hover{background: #3bb77e !important; - color: #fff !important;} +.productThumb .catName { + color: #000; + opacity: 0.8; + font-size: 14px; +} +.productThumb .title { + margin: 10px 0px; +} +.productThumb .title a { + color: #000; + font-weight: 600; + font-size: 22px; + text-decoration: none; + line-height: 22px; +} +.productThumb .brand { + color: rgba(0, 0, 0, 0.6); +} +.productThumb .brand a { + text-decoration: none; +} +.productThumb button { + font-size: 20px !important; + color: #3bb77e !important; + padding: 5px 25px !important; + background: #def9ec !important; + text-transform: capitalize !important; +} +.productThumb button:hover { + background: #3bb77e !important; + color: #fff !important; +} diff --git a/src/components/quantityBox/index.js b/src/components/quantityBox/index.js index 7183768..bbc1901 100644 --- a/src/components/quantityBox/index.js +++ b/src/components/quantityBox/index.js @@ -1,14 +1,14 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect } from 'react'; -import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; -import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; -import { db } from "../../firebase"; -import { doc, updateDoc } from "firebase/firestore"; +import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'; +import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; +import { db } from '../../firebase'; +import { doc, updateDoc } from 'firebase/firestore'; const QuantityBox = (props) => { const [inputValue, setinputValue] = useState(props.quantity); const [inputItems, setInputItems] = useState([]); - const uid = localStorage.getItem("uid"); + const uid = localStorage.getItem('uid'); useEffect(() => { setInputItems(props.inputItems); //setinputValue(props.item.quantity) @@ -18,13 +18,13 @@ const QuantityBox = (props) => { props.updateInfo(items); }; const updateDb = async (uid, itemId, newData) => { - const itemRef = doc(db, props.name, uid, "products", itemId); + const itemRef = doc(db, props.name, uid, 'products', itemId); try { await updateDoc(itemRef, newData); - console.log("item updated successfully."); + console.log('item updated successfully.'); } catch (error) { - console.error("Error updating item:", error); + console.error('Error updating item:', error); } }; @@ -73,7 +73,7 @@ const QuantityBox = (props) => { quantity: eachItem.quantity !== 1 ? inputValue - 1 - : eachItem.quantity, + : eachItem.quantity } : { ...eachItem }; }); diff --git a/src/components/selectDrop/select.css b/src/components/selectDrop/select.css index 8842fc5..d8c3e84 100644 --- a/src/components/selectDrop/select.css +++ b/src/components/selectDrop/select.css @@ -1,12 +1,63 @@ -.selectDropWrapper .openSelect{display: block; padding: 10px 0px; position: relative; font-weight: 600; font-size: 18px !important;} -.selectDropWrapper .openSelect .arrow{position: absolute; top: 8px; right: 5px; font-size: 25px;} -.selectDrop{width: 300px; height: auto; background: #fff; position: absolute; top:110%; left: -20px; z-index: 100; - box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); - padding: 15px; } -.searchField input{ width: 100%; height: 50px; border: 1px solid #bce3c9; outline: none; padding: 0px 15px;} -.selectDrop .searchResults{width: 100%; margin: 0px; margin-top: 10px; padding: 10px 0px; max-height: 300px; overflow-y: scroll;} -.selectDrop .searchResults::-webkit-scrollbar{width: 10px !important;} -.selectDrop .searchResults::-webkit-scrollbar-thumb{background: #ccc !important;} -.selectDrop .searchResults li{list-style: none; font-size: 17px; width: 100%; padding: 10px; color: rgba(0,0,0,0.7); border-radius: 7px;} -.selectDrop .searchResults li:hover{background: #3bb77e; color: #fff;} -.selectDrop .searchResults li.active{background: #f1f1f1; color: #000 !important;} +.selectDropWrapper .openSelect { + display: block; + padding: 10px 0px; + position: relative; + font-weight: 600; + font-size: 18px !important; +} +.selectDropWrapper .openSelect .arrow { + position: absolute; + top: 8px; + right: 5px; + font-size: 25px; +} +.selectDrop { + width: 300px; + height: auto; + background: #fff; + position: absolute; + top: 110%; + left: -20px; + z-index: 100; + box-shadow: + 0 3px 6px rgba(0, 0, 0, 0.16), + 0 3px 6px rgba(0, 0, 0, 0.23); + padding: 15px; +} +.searchField input { + width: 100%; + height: 50px; + border: 1px solid #bce3c9; + outline: none; + padding: 0px 15px; +} +.selectDrop .searchResults { + width: 100%; + margin: 0px; + margin-top: 10px; + padding: 10px 0px; + max-height: 300px; + overflow-y: scroll; +} +.selectDrop .searchResults::-webkit-scrollbar { + width: 10px !important; +} +.selectDrop .searchResults::-webkit-scrollbar-thumb { + background: #ccc !important; +} +.selectDrop .searchResults li { + list-style: none; + font-size: 17px; + width: 100%; + padding: 10px; + color: rgba(0, 0, 0, 0.7); + border-radius: 7px; +} +.selectDrop .searchResults li:hover { + background: #3bb77e; + color: #fff; +} +.selectDrop .searchResults li.active { + background: #f1f1f1; + color: #000 !important; +} diff --git a/src/components/selectDrop/select.js b/src/components/selectDrop/select.js index a76efd6..1ee2d66 100644 --- a/src/components/selectDrop/select.js +++ b/src/components/selectDrop/select.js @@ -4,72 +4,80 @@ import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; import { ClickAwayListener } from '@mui/base/ClickAwayListener'; import { FamilyRestroomTwoTone } from '@mui/icons-material'; +const Select = ({ data, placeholder, icon }) => { + const [isOpenSelect, setisOpenSelect] = useState(false); + const [selectedIndex, setselectedIndex] = useState(0); + const [selectedItem, setselectedItem] = useState(placeholder); -const Select = ({data,placeholder, icon}) => { + const [listData, setListData] = useState(data); + const [listData2, setListData2] = useState(data); - const [isOpenSelect, setisOpenSelect] = useState(false); - const [selectedIndex, setselectedIndex] = useState(0); - const [selectedItem, setselectedItem] = useState(placeholder); + const openSelect = () => { + setisOpenSelect(!isOpenSelect); + }; - const [listData, setListData] = useState(data); - const [listData2, setListData2] = useState(data); + const closeSelect = (index, name) => { + setselectedIndex(index); + setisOpenSelect(false); + setselectedItem(name); + }; - const openSelect = () => { - setisOpenSelect(!isOpenSelect); - } + const filterList = (e) => { + const keyword = e.target.value.toLowerCase(); - const closeSelect = (index, name) => { - setselectedIndex(index); - setisOpenSelect(false); - setselectedItem(name); - } + const list = listData2.filter((item) => { + return item.toLowerCase().includes(keyword); + }); - const filterList=(e)=>{ - const keyword = e.target.value.toLowerCase(); - - const list = listData2.filter((item)=>{ - return item.toLowerCase().includes(keyword); - }) + const list2 = list.filter((item, index) => list.indexOf(item) === index); - const list2 = list.filter((item, index) => list.indexOf(item) === index); - - setListData(list2) - - } - - return ( - setisOpenSelect(false)}> -
- {icon} - {selectedItem.length>14 ? selectedItem.substr(0,14)+'...' : selectedItem} - - { - isOpenSelect === true && -
-
- -
-
    -
  • closeSelect(0, placeholder)} className={`${selectedIndex === 0 ? 'active' : ''}`}>{placeholder}
  • - { - - listData.map((item,index)=>{ - - return( -
  • closeSelect(index+1, item)} className={`${selectedIndex === index+1 ? 'active' : ''}`}>{item}
  • - ) - }) - } - - -
-
- } + setListData(list2); + }; + return ( + setisOpenSelect(false)}> +
+ {icon} + + {selectedItem.length > 14 + ? selectedItem.substr(0, 14) + '...' + : selectedItem} + + + {isOpenSelect === true && ( +
+
+
- - - ) -} +
    +
  • closeSelect(0, placeholder)} + className={`${selectedIndex === 0 ? 'active' : ''}`} + > + {placeholder} +
  • + {listData.map((item, index) => { + return ( +
  • closeSelect(index + 1, item)} + className={`${selectedIndex === index + 1 ? 'active' : ''}`} + > + {item} +
  • + ); + })} +
+
+ )} +
+
+ ); +}; -export default Select; \ No newline at end of file +export default Select; diff --git a/src/firebase.js b/src/firebase.js index c5aae96..b0b8408 100644 --- a/src/firebase.js +++ b/src/firebase.js @@ -1,21 +1,20 @@ // Import the functions you need from the SDKs you need -import firebase from 'firebase/compat/app' -import { initializeApp } from "firebase/app" +import firebase from 'firebase/compat/app'; +import { initializeApp } from 'firebase/app'; import { getFirestore } from 'firebase/firestore'; -import {getStorage} from "firebase/storage" +import { getStorage } from 'firebase/storage'; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries // Your web app's Firebase configuration const firebaseConfig = { - apiKey: "AIzaSyAk6hLddPbZ5R7j_LBsFDDSZT64MVHrQjI", - authDomain: "nest-ondc.firebaseapp.com", - projectId: "nest-ondc", - storageBucket: "nest-ondc.appspot.com", - messagingSenderId: "318997633599", - appId: "1:318997633599:web:41937faa0dda917365b68a", - measurementId: "G-26EE7FZZZE" - + apiKey: 'AIzaSyAk6hLddPbZ5R7j_LBsFDDSZT64MVHrQjI', + authDomain: 'nest-ondc.firebaseapp.com', + projectId: 'nest-ondc', + storageBucket: 'nest-ondc.appspot.com', + messagingSenderId: '318997633599', + appId: '1:318997633599:web:41937faa0dda917365b68a', + measurementId: 'G-26EE7FZZZE' }; // Initialize Firebase export const app = initializeApp(firebaseConfig); @@ -24,4 +23,4 @@ export const app = initializeApp(firebaseConfig); const db = getFirestore(app); const storage = getStorage(app); -export {db,storage} +export { db, storage }; diff --git a/src/pages/About/about.css b/src/pages/About/about.css index aa204b5..360bbe1 100644 --- a/src/pages/About/about.css +++ b/src/pages/About/about.css @@ -58,25 +58,43 @@ object-fit: cover !important; } -.container-grid > .MuiGrid-item-root > .card > .MuiCardContent-root > .card-name { +.container-grid + > .MuiGrid-item-root + > .card + > .MuiCardContent-root + > .card-name { font-size: 20px; color: #008080; text-align: center; } -.container-grid > .MuiGrid-item-root > .card > .MuiCardContent-root > .card-bottom { +.container-grid + > .MuiGrid-item-root + > .card + > .MuiCardContent-root + > .card-bottom { display: flex; justify-content: center; flex-wrap: wrap; gap: 5px; } -.container-grid > .MuiGrid-item-root > .card > .MuiCardContent-root > .card-bottom > .text-color { +.container-grid + > .MuiGrid-item-root + > .card + > .MuiCardContent-root + > .card-bottom + > .text-color { font-size: 1.2vw; color: #008080; } -.container-grid > .MuiGrid-item-root > .card > .MuiCardContent-root > .card-bottom > .temp { +.container-grid + > .MuiGrid-item-root + > .card + > .MuiCardContent-root + > .card-bottom + > .temp { margin-left: 5px; margin-right: 5px; font-size: 30px; @@ -96,7 +114,12 @@ margin: auto; } - .container-grid > .MuiGrid-item-root > .card > .MuiCardContent-root > .card-bottom > .text-color { + .container-grid + > .MuiGrid-item-root + > .card + > .MuiCardContent-root + > .card-bottom + > .text-color { font-size: 20px; } @@ -124,7 +147,12 @@ font-size: 50px; } - .container-grid > .MuiGrid-item-root > .card > .MuiCardContent-root > .card-bottom > .text-color { + .container-grid + > .MuiGrid-item-root + > .card + > .MuiCardContent-root + > .card-bottom + > .text-color { font-size: 24px; } @@ -150,7 +178,12 @@ font-size: 40px; } - .container-grid > .MuiGrid-item-root > .card > .MuiCardContent-root > .card-bottom > .text-color { + .container-grid + > .MuiGrid-item-root + > .card + > .MuiCardContent-root + > .card-bottom + > .text-color { font-size: 20px; } @@ -163,4 +196,4 @@ width: 120px; height: 120px; } -} +} \ No newline at end of file diff --git a/src/pages/About/index.js b/src/pages/About/index.js index 342b7f1..77a81f8 100644 --- a/src/pages/About/index.js +++ b/src/pages/About/index.js @@ -1,7 +1,7 @@ -import React, { useEffect, useState } from "react"; -import "./about.css"; -import axios from "axios"; -import { Card, CardContent, CardMedia, Grid, Typography } from "@mui/material"; +import React, { useEffect, useState } from 'react'; +import './about.css'; +import axios from 'axios'; +import { Card, CardContent, CardMedia, Grid, Typography } from '@mui/material'; function Tes() { const [contributors, setContributors] = useState([]); @@ -10,11 +10,11 @@ function Tes() { async function fetchContributors() { try { const response = await axios.get( - "https://api.github.com/repos/MAVRICK-1/e-commerce_website/contributors" + 'https://api.github.com/repos/MAVRICK-1/e-commerce_website/contributors' ); setContributors(response.data); } catch (error) { - console.error("Error fetching contributors:", error); + console.error('Error fetching contributors:', error); } } @@ -75,4 +75,4 @@ function Tes() { ); } -export default Tes; +export default Tes; \ No newline at end of file diff --git a/src/pages/AddProd/index.js b/src/pages/AddProd/index.js index 65c2ac4..12ba11d 100644 --- a/src/pages/AddProd/index.js +++ b/src/pages/AddProd/index.js @@ -1,9 +1,8 @@ -import React, { useState } from "react"; -import { Typography, Container, Grid, TextField, Button } from "@mui/material"; -import { addDoc, collection } from "firebase/firestore"; -import { db, storage } from "../../firebase"; -import {uploadBytes,getDownloadURL,ref} from "firebase/storage" - +import React, { useState } from 'react'; +import { Typography, Container, Grid, TextField, Button } from '@mui/material'; +import { addDoc, collection } from 'firebase/firestore'; +import { db, storage } from '../../firebase'; +import { uploadBytes, getDownloadURL, ref } from 'firebase/storage'; export default function AddProductForm() { const [formData, setFormData] = useState({ @@ -14,9 +13,9 @@ export default function AddProductForm() { mainImage: '', subsidiaryImages: [], brand: '', - quantityAvailable: '', + quantityAvailable: '' }); - const [isSubmit,setIsSubmit] = useState(false) + const [isSubmit, setIsSubmit] = useState(false); const handleChange = (e) => { setFormData({ ...formData, [e.target.id]: e.target.value }); }; @@ -25,7 +24,7 @@ export default function AddProductForm() { const file = e.target.files[0]; setFormData((prevFields) => ({ ...prevFields, - mainImage: file, + mainImage: file })); }; @@ -33,55 +32,69 @@ export default function AddProductForm() { const file = e.target.files[0]; setFormData((prevFields) => ({ ...prevFields, - subsidiaryImages: file, + subsidiaryImages: file })); }; - const addProd = async (main,sub) => { // funtion to add products data to firestore + const addProd = async (main, sub) => { + // funtion to add products data to firestore try { - await addDoc(collection(db, 'sellers', localStorage.getItem("uid"), 'products'), { - productName: formData.productName, - price: formData.price, - discountPrice: formData.discountPrice, - weightsAvailable: formData.weightsAvailable, - mainImage: main, - subsidiaryImages: sub, - brand: formData.brand, - quantityAvailable: formData.quantityAvailable, - }); + await addDoc( + collection(db, 'sellers', localStorage.getItem('uid'), 'products'), + { + productName: formData.productName, + price: formData.price, + discountPrice: formData.discountPrice, + weightsAvailable: formData.weightsAvailable, + mainImage: main, + subsidiaryImages: sub, + brand: formData.brand, + quantityAvailable: formData.quantityAvailable + } + ); - console.log("product added successfully"); + console.log('product added successfully'); setFormData({ - productName: "", - price: "", - discountPrice: "", - weightsAvailable: "", - mainImage: "", + productName: '', + price: '', + discountPrice: '', + weightsAvailable: '', + mainImage: '', subsidiaryImages: [], - brand: "", - quantityAvailable: "", - }) - alert("Product Added successfully!") + brand: '', + quantityAvailable: '' + }); + alert('Product Added successfully!'); } catch (error) { - console.error("Error adding user: ", error); + console.error('Error adding user: ', error); } }; - const handleSubmit = async () => { - setIsSubmit(true) + const handleSubmit = async () => { + setIsSubmit(true); //Upload the main image to firebase storage and get url - const imageRef = ref(storage, `productImages/${localStorage.getItem("uid")}/${formData.productName}/mainImage`); + const imageRef = ref( + storage, + `productImages/${localStorage.getItem('uid')}/${ + formData.productName + }/mainImage` + ); await uploadBytes(imageRef, formData.mainImage); const imageUrl = await getDownloadURL(imageRef); - + //Upload the subsidiary image to firebase storage and get url - const imageRef1 = ref(storage, `productImages/${localStorage.getItem("uid")}/${formData.productName}/subsidiaryImages`); + const imageRef1 = ref( + storage, + `productImages/${localStorage.getItem('uid')}/${ + formData.productName + }/subsidiaryImages` + ); await uploadBytes(imageRef1, formData.subsidiaryImages); const imageUrl1 = await getDownloadURL(imageRef1); - + //Adding products data to firebase firestore - addProd(imageUrl,imageUrl1) - setIsSubmit(false) + addProd(imageUrl, imageUrl1); + setIsSubmit(false); }; return ( @@ -186,7 +199,7 @@ export default function AddProductForm() { fullWidth placeholder="Enter quantity available" type="number" - inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} + inputProps={{ inputMode: 'numeric', pattern: '[0-9]*' }} color="success" value={formData.quantityAvailable} onChange={handleChange} @@ -200,7 +213,7 @@ export default function AddProductForm() { fullWidth onClick={handleSubmit} > - {isSubmit?"adding...":"Add Product"} + {isSubmit ? 'adding...' : 'Add Product'} diff --git a/src/pages/Details/index.js b/src/pages/Details/index.js index 838981b..ce7eb51 100644 --- a/src/pages/Details/index.js +++ b/src/pages/Details/index.js @@ -1,18 +1,18 @@ -import React, { useContext } from "react"; -import { Link, useParams } from "react-router-dom"; -import Rating from "@mui/material/Rating"; -import InnerImageZoom from "react-inner-image-zoom"; -import "react-inner-image-zoom/lib/InnerImageZoom/styles.css"; -import Slider from "react-slick"; -import { useRef } from "react"; -import { useState } from "react"; -import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; -import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; -import { useEffect } from "react"; -import { Button } from "@mui/material"; -import ShoppingCartOutlinedIcon from "@mui/icons-material/ShoppingCartOutlined"; -import FavoriteBorderOutlinedIcon from "@mui/icons-material/FavoriteBorderOutlined"; -import CompareArrowsIcon from "@mui/icons-material/CompareArrows"; +import React, { useContext } from 'react'; +import { Link, useParams } from 'react-router-dom'; +import Rating from '@mui/material/Rating'; +import InnerImageZoom from 'react-inner-image-zoom'; +import 'react-inner-image-zoom/lib/InnerImageZoom/styles.css'; +import Slider from 'react-slick'; +import { useRef } from 'react'; +import { useState } from 'react'; +import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'; +import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; +import { useEffect } from 'react'; +import { Button } from '@mui/material'; +import ShoppingCartOutlinedIcon from '@mui/icons-material/ShoppingCartOutlined'; +import FavoriteBorderOutlinedIcon from '@mui/icons-material/FavoriteBorderOutlined'; +import CompareArrowsIcon from '@mui/icons-material/CompareArrows'; import { getDatabase, ref, @@ -20,26 +20,26 @@ import { set, push, child, - remove, -} from "firebase/database"; -import Product from "../../components/product"; -import axios from "axios"; -import { MyContext } from "../../App"; -import MapComponent from "../../components/map/ITEMmap"; -import { Email } from "@mui/icons-material"; -import useLoggedInUserEmail from "../../Hooks/useLoggedInUserEmail"; -import { db } from "../../firebase"; + remove +} from 'firebase/database'; +import Product from '../../components/product'; +import axios from 'axios'; +import { MyContext } from '../../App'; +import MapComponent from '../../components/map/ITEMmap'; +import { Email } from '@mui/icons-material'; +import useLoggedInUserEmail from '../../Hooks/useLoggedInUserEmail'; +import { db } from '../../firebase'; import { collection, doc, getDocs, setDoc, - deleteDoc, -} from "firebase/firestore"; + deleteDoc +} from 'firebase/firestore'; const DetailsPage = (props) => { const [zoomInage, setZoomImage] = useState( - "https://www.jiomart.com/images/product/original/490000363/maggi-2-minute-masala-noodles-70-g-product-images-o490000363-p490000363-0-202305292130.jpg" + 'https://www.jiomart.com/images/product/original/490000363/maggi-2-minute-masala-noodles-70-g-product-images-o490000363-p490000363-0-202305292130.jpg' ); const [bigImageSize, setBigImageSize] = useState([1500, 1500]); @@ -60,8 +60,8 @@ const DetailsPage = (props) => { const context = useContext(MyContext); const [prodCat, setProdCat] = useState({ - parentCat: sessionStorage.getItem("parentCat"), - subCatName: sessionStorage.getItem("subCatName"), + parentCat: sessionStorage.getItem('parentCat'), + subCatName: sessionStorage.getItem('subCatName') }); const [relatedProducts, setRelatedProducts] = useState([]); @@ -75,11 +75,11 @@ const DetailsPage = (props) => { useState(false); const [reviewFields, setReviewFields] = useState({ - review: "", - userName: "", + review: '', + userName: '', rating: 0.0, productId: 0, - date: "", + date: '' }); const zoomSliderBig = useRef(); @@ -94,7 +94,7 @@ const DetailsPage = (props) => { slidesToShow: 1, slidesToScroll: 1, fade: false, - arrows: false, + arrows: false }; var settings = { @@ -104,7 +104,7 @@ const DetailsPage = (props) => { slidesToShow: 5, slidesToScroll: 1, fade: false, - arrows: context.windowWidth > 992 ? true : false, + arrows: context.windowWidth > 992 ? true : false }; var related = { @@ -114,7 +114,7 @@ const DetailsPage = (props) => { slidesToShow: 4, slidesToScroll: 1, fade: false, - arrows: context.windowWidth > 992 ? true : false, + arrows: context.windowWidth > 992 ? true : false }; const goto = (index) => { @@ -194,14 +194,14 @@ const DetailsPage = (props) => { }, [currentProduct]); const changeInput = (name, value) => { - if (name === "rating") { + if (name === 'rating') { setRating(value); } setReviewFields(() => ({ ...reviewFields, [name]: value, productId: id, - date: new Date().toLocaleString(), + date: new Date().toLocaleString() })); }; @@ -212,19 +212,19 @@ const DetailsPage = (props) => { try { await axios - .post("http://localhost:5000/productReviews", reviewFields) + .post('http://localhost:5000/productReviews', reviewFields) .then((response) => { reviews_Arr.push(response.data); setReviewFields(() => ({ - review: "", - userName: "", + review: '', + userName: '', rating: 0.0, productId: 0, - date: "", + date: '' })); }); } catch (error) { - //console.log(error.message); + console.log(error); } showReviews(); @@ -234,7 +234,7 @@ const DetailsPage = (props) => { const showReviews = async () => { try { await axios - .get("https://mavrick-1.github.io/DataApi/data.json") + .get('https://mavrick-1.github.io/DataApi/data.json') .then((response) => { if (response.data.productReviews.length !== 0) { response.data.productReviews.map((item) => { @@ -245,7 +245,7 @@ const DetailsPage = (props) => { } }); } catch (error) { - //console.log(error.message); + console.log(error); } if (reviews_Arr2.length !== 0) { @@ -255,37 +255,37 @@ const DetailsPage = (props) => { const addToCart = async (item) => { try { - const user = localStorage.getItem("uid"); - const cartRef = doc(db, "carts", user); - const productRef = doc(cartRef, "products", `${item.id}`); + const user = localStorage.getItem('uid'); + const cartRef = doc(db, 'carts', user); + const productRef = doc(cartRef, 'products', `${item.id}`); await setDoc(productRef, { ...item, quantity: 1 }); setIsadded(true); context.setCartCount(context.cartCount + 1); } catch (error) { - console.error("Error adding item to cart:", error); + console.error('Error adding item to cart:', error); } }; const toggleWishlistItem = async (item) => { - console.log("addToWishlist"); + console.log('addToWishlist'); if (!isAlreadyAddedInWishlist) { - console.log("Not isAlreadyAddedInWishlist"); + console.log('Not isAlreadyAddedInWishlist'); try { - const user = localStorage.getItem("uid"); - const wishlistRef = doc(db, "wishlists", user); - const productRef = doc(wishlistRef, "products", `${item.id}`); + const user = localStorage.getItem('uid'); + const wishlistRef = doc(db, 'wishlists', user); + const productRef = doc(wishlistRef, 'products', `${item.id}`); await setDoc(productRef, { ...item, quantity: 1 }); setIsWishlistItemAdded(true); setisAlreadyAddedInWishlist(true); context.setWishlistCount(context.wishlistCount + 1); } catch (error) { - console.error("Error adding item to wishlist:", error); + console.error('Error adding item to wishlist:', error); } } else { - console.log("isAlreadyAddedInWishlist"); + console.log('isAlreadyAddedInWishlist'); - const user = localStorage.getItem("uid"); + const user = localStorage.getItem('uid'); const wishlistItemRef = doc(db, `wishlists/${user}/products/${item.id}`); @@ -293,17 +293,17 @@ const DetailsPage = (props) => { await deleteDoc(wishlistItemRef); setisAlreadyAddedInWishlist(false); context.setWishlistCount(context.wishlistCount - 1); - console.log("Wishlist item deleted successfully."); + console.log('Wishlist item deleted successfully.'); } catch (error) { - console.error("Error deleting wishlist item:", error); + console.error('Error deleting wishlist item:', error); } } }; const fetchCartProducts = async () => { try { - const cartRef = doc(db, "carts", localStorage.getItem("uid")); - const productsCollectionRef = collection(cartRef, "products"); + const cartRef = doc(db, 'carts', localStorage.getItem('uid')); + const productsCollectionRef = collection(cartRef, 'products'); const querySnapshot = await getDocs(productsCollectionRef); querySnapshot.forEach((doc) => { if (parseInt(doc.data()?.id) === parseInt(id)) { @@ -311,14 +311,14 @@ const DetailsPage = (props) => { } }); } catch (error) { - console.error("Error fetching cart products:", error); + console.error('Error fetching cart products:', error); } }; const fetchWishlistProducts = async () => { try { - const wishlistRef = doc(db, "wishlists", localStorage.getItem("uid")); - const productsCollectionRef = collection(wishlistRef, "products"); + const wishlistRef = doc(db, 'wishlists', localStorage.getItem('uid')); + const productsCollectionRef = collection(wishlistRef, 'products'); const querySnapshot = await getDocs(productsCollectionRef); querySnapshot.forEach((doc) => { if (parseInt(doc.data()?.id) === parseInt(id)) { @@ -326,25 +326,25 @@ const DetailsPage = (props) => { } }); } catch (error) { - console.error("Error fetching wishlist products:", error); + console.error('Error fetching wishlist products:', error); } }; const deleteWishlistItem = async (uid, wishlistItemId) => { const wishlistItemRef = doc( db, - "wishlists", + 'wishlists', uid, - "products", + 'products', wishlistItemId ); try { await deleteDoc(wishlistItemRef); fetchWishlistProducts(); - console.log("Wishlist item deleted successfully."); + console.log('Wishlist item deleted successfully.'); } catch (error) { - console.error("Error deleting wishlist item:", error); + console.error('Error deleting wishlist item:', error); } }; @@ -357,8 +357,8 @@ const DetailsPage = (props) => { > {isAdded === true || isAlreadyAddedInCart === true - ? "Added" - : "Add To Cart"} + ? 'Added' + : 'Add To Cart'} )}
@@ -371,41 +371,41 @@ const DetailsPage = (props) => {
  • - Home{" "} + Home{' '}
  • sessionStorage.setItem( - "cat", - prodCat.parentCat.split(" ").join("-").toLowerCase() + 'cat', + prodCat.parentCat.split(' ').join('-').toLowerCase() ) } className="text-capitalize" > {prodCat.parentCat} - {" "} + {' '}
  • sessionStorage.setItem( - "cat", + 'cat', prodCat.subCatName.toLowerCase() ) } className="text-capitalize" > {prodCat.subCatName} - {" "} + {' '}
  • {currentProduct.productName}
@@ -494,7 +494,7 @@ const DetailsPage = (props) => {
  • isActive(index)} > @@ -517,7 +517,7 @@ const DetailsPage = (props) => {
  • isActive(index)} > @@ -540,7 +540,7 @@ const DetailsPage = (props) => {
  • isActive(index)} > @@ -558,25 +558,25 @@ const DetailsPage = (props) => { {context.windowWidth > 992 && ( )}
  • - } - - - } - -
    - -
    - - { -
    -

    {id.split('-').join(' ')}

    -
      -
    • - Home -
    • -
    • - {sessionStorage.getItem('cat')} -
    • - { - props.single === false && -
    • - {id.split('-').join(' ')} -
    • - } -
    -
    - - } - - - -
    -
    -
    - - { - data.length !== 0 && - } - -
    - - -
    - - -
    -

    We found {data.length} items for you!

    -
    -
    - - { - isOpenDropDown !== false && -
      -
    • - -
    • -
    • - -
    • - -
    • - -
    • - -
    • - -
    • -
    - } -
    -
    - - { - isOpenDropDown2 !== false && -
      -
    • -
    • -
    • -
    • -
    • -
    - } -
    -
    -
    - - {/* the map component will go here */} -
    - -
    - -
    - - { - data.length !== 0 && - data.map((item, index) => { - return ( -
    - -
    - ) - }) - } - - -
    - - -
    - -
    + {context.isopenNavigation === false && ( + + )} + + )} + +
    +
    + { +
    +

    {id.split('-').join(' ')}

    +
      +
    • + Home +
    • +
    • + + {sessionStorage.getItem('cat')}{' '} + +
    • + {props.single === false && ( +
    • + + {id.split('-').join(' ')} + +
    • + )} +
    +
    + } + +
    +
    +
    + {data.length !== 0 && ( + + )} +
    + +
    +
    +

    + We found {data.length}{' '} + items for you! +

    +
    +
    + + {isOpenDropDown !== false && ( +
      +
    • + +
    • +
    • + +
    • + +
    • + +
    • + +
    • + +
    • +
    + )}
    - - +
    + + {isOpenDropDown2 !== false && ( +
      +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    • + +
    • +
    + )} +
    +
    -
    - - - ) -} + {/* the map component will go here */} +
    + +
    -export default Listing; \ No newline at end of file +
    + {data.length !== 0 && + data.map((item, index) => { + return ( +
    + +
    + ); + })} +
    +
    +
    +
  • +
    + + + ); +}; + +export default Listing; diff --git a/src/pages/NotFound/index.js b/src/pages/NotFound/index.js index 80cea51..64c0873 100644 --- a/src/pages/NotFound/index.js +++ b/src/pages/NotFound/index.js @@ -5,27 +5,29 @@ import { Button } from '@mui/material'; import { Link } from 'react-router-dom'; const NotFound = () => { - return ( -
    -
    -
    - -

    -

    Page Not Found

    -

    The link you clicked may be broken or the page may have been removed. - visit the Homepage or Contact us about the problem

    -
    + return ( +
    +
    +
    + +
    +
    +

    Page Not Found

    +

    + The link you clicked may be broken or the page may have been + removed. visit the Homepage or Contact us about the problem +

    +
    +
    + +
    +
    +
    +
    + ); +}; -
    - -
    - -
    -
    -
    - ) -} - - -export default NotFound; \ No newline at end of file +export default NotFound; diff --git a/src/pages/NotFound/style.css b/src/pages/NotFound/style.css index e21adca..79ee294 100644 --- a/src/pages/NotFound/style.css +++ b/src/pages/NotFound/style.css @@ -1,5 +1,24 @@ -.notFound{width: 100%; height: auto; padding: 45px 0px;} -.notFound .box{width: 50%; height: auto; padding: 100px 30px; text-align: center; margin: auto;} +.notFound { + width: 100%; + height: auto; + padding: 45px 0px; +} +.notFound .box { + width: 50%; + height: auto; + padding: 100px 30px; + text-align: center; + margin: auto; +} -.notFound .box h1{font-size: 60px; font-weight: bold; color: #000; opacity: 0.7;} -.notFound .box p{color: #000; font-size: 20px; margin-top: 25px;} +.notFound .box h1 { + font-size: 60px; + font-weight: bold; + color: #000; + opacity: 0.7; +} +.notFound .box p { + color: #000; + font-size: 20px; + margin-top: 25px; +} diff --git a/src/pages/ResetPassword/index.js b/src/pages/ResetPassword/index.js new file mode 100644 index 0000000..4083aa2 --- /dev/null +++ b/src/pages/ResetPassword/index.js @@ -0,0 +1,212 @@ +import React, { useState, useContext } from "react"; +import { Link, useNavigate } from "react-router-dom"; +import "./style.css"; +import { collection, doc, setDoc ,getDocs} from "firebase/firestore"; + + +import Box from "@mui/material/Box"; +import TextField from "@mui/material/TextField"; +import VisibilityOutlinedIcon from "@mui/icons-material/VisibilityOutlined"; +import VisibilityOffOutlinedIcon from "@mui/icons-material/VisibilityOffOutlined"; +import { Button, Snackbar, Typography } from "@mui/material"; +import { + getAuth, + + signInWithEmailAndPassword, + GoogleAuthProvider, + signInWithPopup, + fetchSignInMethodsForEmail, + sendPasswordResetEmail, +} from "firebase/auth"; +import { app,db } from "../../firebase"; +import Backdrop from "@mui/material/Backdrop"; +import CircularProgress from "@mui/material/CircularProgress"; +import { MyContext } from "../../App"; +import GoogleImg from "../../assets/images/google.png"; +import useLoggedInUserEmail from "../../Hooks/useLoggedInUserEmail"; +import { useDispatch } from "react-redux"; +import { logIn } from "../../Redux/auth-slice"; +const auth = getAuth(app); + +const googleProvider = new GoogleAuthProvider(); + +const SignIn = () => { + + const [showLoader, setShowLoader] = useState(false); + const [mssg, setmssg] = useState(); + const [formFields, setFormFields] = useState({ + email: "", + password: "", + }); + const [error, setError] = useState(""); + const context = useContext(MyContext); + const history = useNavigate(); + const [snackbarOpen, setSnackbarOpen] = useState(false); + const [loggedInUserEmail, setLoggedInUseEmail] = useLoggedInUserEmail(); //get_email hook + const [isDisabled, setIsDisabled] = useState(true); + + const [inputErrors, setInputErrors] = useState({ + email: "", + + }); + + + + + const dispatch = useDispatch() + + + function replaceSpecialCharacters(inputString) { + // Use a regular expression to replace special characters with underscore _ + const replacedString = inputString.replace(/[#$\[\].]/g, "_"); + + return replacedString; + } + + // Email validation function + const validateEmail = (email) => { + return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); + }; + + // Password validation function + + const onChangeField = (e) => { + const name = e.target.name; + const value = e.target.value; + + + setFormFields((prevFormFields) => ({ + ...prevFormFields, + [name]: value, + })); + + let errors = { ...inputErrors }; + + // Validate email + + errors.email = ""; +setInputErrors(errors) + }; + + + + const forgotPassword = async (e) => { + e.preventDefault(); + let errors = { ...inputErrors }; + + // Validate email + console.log(formFields.email) + errors.email = !validateEmail(formFields.email) ? "Invalid email address" : ""; + setInputErrors(errors) + if(!validateEmail(formFields.email)){ + + setmssg("Invalid email address") + return; + } + + let signInMethods = await fetchSignInMethodsForEmail(auth, formFields.email); + console.log(signInMethods,"count") + + try{ + const email = formFields.email; + const res=await sendPasswordResetEmail( auth,email); + console.log(res) + setSnackbarOpen(true); + formFields.email="" + + setmssg("Password reset mail has been sent!") + + + } + catch{(error) => { + console.log(error) + setmssg("some error has occured!") + + setError(error.message); + }} +} + + + const handleCloseSnackbar = () => { + setSnackbarOpen(false); + }; + + return ( + <> +
    +
    +
    +
      +
    • + Home +
    • +
    • Forgot Password
    • +
    +
    +
    + +
    +
    + theme.zIndex.drawer + 1 }} + open={showLoader} + className="formLoader" + > + + + +

    Forget Password

    +
    +
    + + {inputErrors.email && ( + + {inputErrors.email} + + )} +
    + + + +
    + +
    + + + + + +
    +
    +
    +
    + + + ); +}; + +export default SignIn; diff --git a/src/pages/ResetPassword/style.css b/src/pages/ResetPassword/style.css new file mode 100644 index 0000000..774c120 --- /dev/null +++ b/src/pages/ResetPassword/style.css @@ -0,0 +1,82 @@ +*{ + box-sizing: border-box; +} +.loginWrapper { + padding: 75px 0px; + background: #f1f1f1; + height: auto; +} +.loginWrapper .card { + width: 650px; + margin: auto; + padding: 40px; + border: 0px !important; + height: auto; +} +.loginWrapper .card h3 { + font-weight: 500; + font-size: 35px; +} +.loginWrapper .card input { + height: 40px !important; + font-size: 18px !important; + color: #000 !important; +} +.loginWrapper .card fieldset { + border-radius: 10px !important; +} +.loginWrapper .card .MuiFormLabel-root { + line-height: 43px !important; + color: #000 !important; + font-size: 18px !important; +} + +.loginWrapper .card .icon { + position: absolute; + top: 10px; + right: 20px; + z-index: 100; + min-width: 50px !important; + height: 50px !important; + width: 50px !important; + color: #ccc !important; + border-radius: 100% !important; +} +.loginWrapper .card .icon svg { + color: #000 !important; + opacity: 0.8; +} + +.loginWrapper .card button { + padding: 15px 25px !important; +} +.signInOr button { + padding: 15px 25px !important; + color: #000 !important; + font-size: 18px !important; +} +.signInOr button img { + width: 40px; + margin-right: 15px; +} + +.formLoader { + position: absolute !important; + background: rgba(255, 255, 255, 0.5) !important; +} + +@media (max-width: 586px) { + .loginWrapper { + padding: 75px 0px; + background: #f1f1f1; + height: auto; + } + .loginWrapper .card { + width: 650px; + margin: auto; + height: auto; + padding: 40px; + border: 0px !important; + height: auto; + } +} \ No newline at end of file diff --git a/src/pages/SellerRegistration/index.js b/src/pages/SellerRegistration/index.js index a1000c1..b5aad55 100644 --- a/src/pages/SellerRegistration/index.js +++ b/src/pages/SellerRegistration/index.js @@ -1,31 +1,31 @@ -import React, { useEffect, useState } from "react"; -import { Typography, Container, Grid, TextField, Button } from "@mui/material"; +import React, { useEffect, useState } from 'react'; +import { Typography, Container, Grid, TextField, Button } from '@mui/material'; //import { getDatabase, ref, push, set, child } from "firebase/database"; -import { useNavigate } from "react-router-dom"; -import { db, storage } from "../../firebase"; -import { doc, getDoc, setDoc } from "firebase/firestore"; -import {uploadBytes,getDownloadURL, ref} from "firebase/storage" +import { useNavigate } from 'react-router-dom'; +import { db, storage } from '../../firebase'; +import { doc, getDoc, setDoc } from 'firebase/firestore'; +import { uploadBytes, getDownloadURL, ref } from 'firebase/storage'; const SellerForm = () => { const navigate = useNavigate(); const [formFields, setFormFields] = useState({ - ownerName: "", - phoneNumber: "", - location: "", - pincode: "", - shopName: "", + ownerName: '', + phoneNumber: '', + location: '', + pincode: '', + shopName: '', shopPhoto: null, - coordinate: [], + coordinate: [] }); - const [isSubmit,setIsSubmit] = useState(false); + const [isSubmit, setIsSubmit] = useState(false); const onChangeField = (e) => { const { name, value } = e.target; setFormFields((prevFields) => ({ ...prevFields, - [name]: value, + [name]: value })); }; @@ -33,7 +33,7 @@ const SellerForm = () => { const file = e.target.files[0]; setFormFields((prevFields) => ({ ...prevFields, - shopPhoto: file, + shopPhoto: file })); }; let postion = []; @@ -47,24 +47,25 @@ const SellerForm = () => { postion = [latitude, longitude]; //console.log("Current latitude:", latitude); //console.log("Current longitude:", longitude); - + // Optionally, you can set the latitude and longitude in the formFields state setFormFields((prevFields) => ({ ...prevFields, - coordinate:postion + coordinate: postion })); }, (error) => { - console.error("Error getting current location:", error.message); + console.error('Error getting current location:', error.message); } ); } else { - console.error("Geolocation is not supported by this browser."); + console.error('Geolocation is not supported by this browser.'); } }; - const addUser = async (userId,photo) => { // funtion to add sellers data to firestore + const addUser = async (userId, photo) => { + // funtion to add sellers data to firestore try { - await setDoc(doc(db, "sellers", userId), { + await setDoc(doc(db, 'sellers', userId), { uid: userId, ownerName: formFields.ownerName, phoneNumber: formFields.phoneNumber, @@ -72,22 +73,23 @@ const SellerForm = () => { pincode: formFields.pincode, shopName: formFields.shopName, shopPhoto: photo, - coordinate: formFields.coordinate , + coordinate: formFields.coordinate }); - console.log("User added successfully"); - navigate("/addProduct"); + console.log('User added successfully'); + navigate('/addProduct'); } catch (error) { - console.error("Error adding user: ", error); + console.error('Error adding user: ', error); } }; - const checkUserInSellers = async (userId) => { // funtion to check seller is already exists or not in firestore + const checkUserInSellers = async (userId) => { + // funtion to check seller is already exists or not in firestore try { const sellerDocRef = doc(db, 'sellers', userId); const sellerDocSnapshot = await getDoc(sellerDocRef); if (sellerDocSnapshot.exists()) { console.log('User data exists in sellers collection'); - navigate("/addProduct") + navigate('/addProduct'); } else { console.log('User data does not exist in sellers collection'); } @@ -97,28 +99,31 @@ const SellerForm = () => { }; const handleSubmit = async (e) => { e.preventDefault(); - setIsSubmit(true) + setIsSubmit(true); // Generate a unique key - const uniqueKey = localStorage.getItem("uid"); - + const uniqueKey = localStorage.getItem('uid'); + //Upload the shop photo image to firebase storage and get url - const imageRef = ref(storage, `sellerImages/${localStorage.getItem("uid")}/shopPhoto`); + const imageRef = ref( + storage, + `sellerImages/${localStorage.getItem('uid')}/shopPhoto` + ); await uploadBytes(imageRef, formFields.shopPhoto); const imageUrl = await getDownloadURL(imageRef); //Adding seller data to firebase firestore - addUser(uniqueKey,imageUrl); + addUser(uniqueKey, imageUrl); - setIsSubmit(false) + setIsSubmit(false); }; - useEffect(()=>{ - checkUserInSellers(localStorage.getItem("uid")) - },[]) + useEffect(() => { + checkUserInSellers(localStorage.getItem('uid')); + }, []); return ( @@ -203,7 +208,7 @@ const SellerForm = () => { color="success" // Change color to success fullWidth > - {isSubmit?"Registering...":"Register"} + {isSubmit ? 'Registering...' : 'Register'} diff --git a/src/pages/SignIn/index.js b/src/pages/SignIn/index.js index 02b5dcf..fe94abe 100644 --- a/src/pages/SignIn/index.js +++ b/src/pages/SignIn/index.js @@ -1,37 +1,38 @@ -import React, { useState, useContext } from "react"; -import { Link, useNavigate } from "react-router-dom"; -import "./style.css"; -import Box from "@mui/material/Box"; -import TextField from "@mui/material/TextField"; -import VisibilityOutlinedIcon from "@mui/icons-material/VisibilityOutlined"; -import VisibilityOffOutlinedIcon from "@mui/icons-material/VisibilityOffOutlined"; -import { Button, Snackbar, Typography } from "@mui/material"; +import React, { useState, useContext } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import './style.css'; +import Box from '@mui/material/Box'; +import TextField from '@mui/material/TextField'; +import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined'; +import VisibilityOffOutlinedIcon from '@mui/icons-material/VisibilityOffOutlined'; +import { Button, Snackbar, Typography } from '@mui/material'; import { getAuth, signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup, - sendPasswordResetEmail, -} from "firebase/auth"; -import { app } from "../../firebase"; -import Backdrop from "@mui/material/Backdrop"; -import CircularProgress from "@mui/material/CircularProgress"; -import { MyContext } from "../../App"; -import GoogleImg from "../../assets/images/google.png"; -import useLoggedInUserEmail from "../../Hooks/useLoggedInUserEmail"; -import { useDispatch } from "react-redux"; -import { logIn } from "../../Redux/auth-slice"; + sendPasswordResetEmail +} from 'firebase/auth'; +import { app } from '../../firebase'; +import Backdrop from '@mui/material/Backdrop'; +import CircularProgress from '@mui/material/CircularProgress'; +import { MyContext } from '../../App'; +import GoogleImg from '../../assets/images/google.png'; +import useLoggedInUserEmail from '../../Hooks/useLoggedInUserEmail'; +import { useDispatch } from 'react-redux'; +import { logIn } from '../../Redux/auth-slice'; const auth = getAuth(app); const googleProvider = new GoogleAuthProvider(); const SignIn = () => { const [showPassword, setShowPassword] = useState(false); + const [mssg, setmssg] = useState(); const [showLoader, setShowLoader] = useState(false); const [formFields, setFormFields] = useState({ - email: "", - password: "", + email: '', + password: '' }); - const [error, setError] = useState(""); + const [error, setError] = useState(''); const context = useContext(MyContext); const history = useNavigate(); const [snackbarOpen, setSnackbarOpen] = useState(false); @@ -39,25 +40,23 @@ const SignIn = () => { const [isDisabled, setIsDisabled] = useState(true); const [inputErrors, setInputErrors] = useState({ - email: "", - password: "", + email: '', + password: '' }); - const checkInputs = (email, password) => { - if (email.trim() !== '' && password.trim() !== ''){ + if (email.trim() !== '' && password.trim() !== '') { setIsDisabled(false); - }else { + } else { setIsDisabled(true); } }; - const dispatch = useDispatch() - + const dispatch = useDispatch(); function replaceSpecialCharacters(inputString) { // Use a regular expression to replace special characters with underscore _ - const replacedString = inputString.replace(/[#$\[\].]/g, "_"); + const replacedString = inputString.replace(/[#$\[\].]/g, '_'); return replacedString; } @@ -79,23 +78,21 @@ const SignIn = () => { let errors = { ...inputErrors }; // Validate email - if (name === "email") { - errors.email = !validateEmail(value) ? "Invalid email address" : ""; + if (name === 'email') { + errors.email = !validateEmail(value) ? 'Invalid email address' : ''; } // Validate password - if (name === "password") { - errors.password = !validatePassword(value) ? "Password is required" : ""; + if (name === 'password') { + errors.password = !validatePassword(value) ? 'Password is required' : ''; } setInputErrors(errors); setFormFields((prevFormFields) => ({ ...prevFormFields, - [name]: value, + [name]: value })); - checkInputs(formFields.email, formFields.password,value); - - + checkInputs(formFields.email, formFields.password, value); }; const signIn = () => { @@ -105,19 +102,19 @@ const SignIn = () => { const user = userCredential.user; setShowLoader(false); setFormFields({ - email: "", - password: "", + email: '', + password: '' }); - localStorage.setItem("isLogin", true); + localStorage.setItem('isLogin', true); const udata = replaceSpecialCharacters(user.email); - localStorage.setItem("user", udata); + localStorage.setItem('user', udata); context.signIn(); - dispatch(logIn({email:user.email})) + dispatch(logIn({ email: user.email })); setLoggedInUseEmail(user.email); - localStorage.setItem("uid", userCredential.user.uid); - localStorage.setItem("userImage","") + localStorage.setItem('uid', userCredential.user.uid); + localStorage.setItem('userImage', ''); //console.log(loggedInUserEmail); - history("/"); + history('/'); }) .catch((error) => { setShowLoader(false); @@ -131,15 +128,15 @@ const SignIn = () => { signInWithPopup(auth, googleProvider) .then((result) => { setShowLoader(false); - localStorage.setItem("isLogin", true); + localStorage.setItem('isLogin', true); const udata = replaceSpecialCharacters(result.user.email); - localStorage.setItem("user", udata); - localStorage.setItem("uid", result.user.uid); + localStorage.setItem('user', udata); + localStorage.setItem('uid', result.user.uid); context.signIn(); setLoggedInUseEmail(udata); - localStorage.setItem("userImage",result.user.photoURL) + localStorage.setItem('userImage', result.user.photoURL); //console.log(loggedInUserEmail); - history("/"); + history('/'); }) .catch((error) => { setShowLoader(false); @@ -147,15 +144,8 @@ const SignIn = () => { }); }; - const forgotPassword = () => { - const email = formFields.email; - sendPasswordResetEmail(auth, email) - .then(() => { - setSnackbarOpen(true); - }) - .catch((error) => { - setError(error.message); - }); + const forgotPassword = async () => { + history("/resetpassword") }; const handleCloseSnackbar = () => { setSnackbarOpen(false); @@ -178,7 +168,7 @@ const SignIn = () => {
    theme.zIndex.drawer + 1 }} + sx={{ color: '#000', zIndex: (theme) => theme.zIndex.drawer + 1 }} open={showLoader} className="formLoader" > @@ -202,7 +192,7 @@ const SignIn = () => { {inputErrors.email && ( {inputErrors.email} @@ -212,7 +202,7 @@ const SignIn = () => {
    { {inputErrors.password && ( {inputErrors.password} @@ -248,6 +238,12 @@ const SignIn = () => {
    )} +
    + +
    +
    -
    - -
    +

    - Don't have an account?{" "} + Don't have an account?{' '} Sign Up @@ -289,7 +281,7 @@ const SignIn = () => { open={snackbarOpen} autoHideDuration={6000} onClose={handleCloseSnackbar} - message="Password reset email sent!" + message={mssg} /> ); diff --git a/src/pages/SignIn/style.css b/src/pages/SignIn/style.css index 774c120..337fd0d 100644 --- a/src/pages/SignIn/style.css +++ b/src/pages/SignIn/style.css @@ -1,4 +1,4 @@ -*{ +* { box-sizing: border-box; } .loginWrapper { @@ -66,17 +66,17 @@ } @media (max-width: 586px) { - .loginWrapper { - padding: 75px 0px; - background: #f1f1f1; - height: auto; - } - .loginWrapper .card { - width: 650px; - margin: auto; - height: auto; - padding: 40px; - border: 0px !important; - height: auto; - } -} \ No newline at end of file + .loginWrapper { + padding: 75px 0px; + background: #f1f1f1; + height: auto; + } + .loginWrapper .card { + width: 650px; + margin: auto; + height: auto; + padding: 40px; + border: 0px !important; + height: auto; + } +} diff --git a/src/pages/SignUp/index.js b/src/pages/SignUp/index.js index 93a7f3d..4240753 100644 --- a/src/pages/SignUp/index.js +++ b/src/pages/SignUp/index.js @@ -1,10 +1,10 @@ -import React, { useState } from "react"; -import { Link, useNavigate } from "react-router-dom"; -import "../SignIn/style.css"; -import Box from "@mui/material/Box"; -import TextField from "@mui/material/TextField"; -import VisibilityOutlinedIcon from "@mui/icons-material/VisibilityOutlined"; -import VisibilityOffOutlinedIcon from "@mui/icons-material/VisibilityOffOutlined"; +import React, { useState } from 'react'; +import { Link, useNavigate } from 'react-router-dom'; +import '../SignIn/style.css'; +import Box from '@mui/material/Box'; +import TextField from '@mui/material/TextField'; +import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined'; +import VisibilityOffOutlinedIcon from '@mui/icons-material/VisibilityOffOutlined'; import { Button, Snackbar, @@ -13,12 +13,12 @@ import { DialogContentText, DialogTitle, DialogActions, - Typography, -} from "@mui/material"; -import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; -import { app } from "../../firebase"; -import Backdrop from "@mui/material/Backdrop"; -import CircularProgress from "@mui/material/CircularProgress"; + Typography +} from '@mui/material'; +import { getAuth, createUserWithEmailAndPassword } from 'firebase/auth'; +import { app } from '../../firebase'; +import Backdrop from '@mui/material/Backdrop'; +import CircularProgress from '@mui/material/CircularProgress'; const auth = getAuth(app); @@ -31,31 +31,33 @@ const SignUp = () => { const [showPassword1, setShowPassword1] = useState(false); const [showLoader, setShowLoader] = useState(false); - const [formFields, setFormFields] = useState({ - email: "", - password: "", - confirmPassword: "", + email: '', + password: '', + confirmPassword: '' }); const [snackbarOpen, setSnackbarOpen] = useState(false); - const [snackbarMessage, setSnackbarMessage] = useState(""); + const [snackbarMessage, setSnackbarMessage] = useState(''); const [isDisabled, setIsDisabled] = useState(true); const [InputErrors, setInputErrors] = useState({ - email: "", - password: "", - confirmPassword: "", + email: '', + password: '', + confirmPassword: '' }); const checkInputs = (email, password, confirmPassword) => { - if (email.trim() !== '' && password.trim() !== '' && confirmPassword.trim() !== '') { + if ( + email.trim() !== '' && + password.trim() !== '' && + confirmPassword.trim() !== '' + ) { setIsDisabled(false); } else { setIsDisabled(true); } }; - const signUp = () => { setShowLoader(true); @@ -63,7 +65,7 @@ const SignUp = () => { if (formFields.password.length < 6) { setShowLoader(false); setSnackbarMessage( - "Password is too weak. It must be at least 6 characters long." + 'Password is too weak. It must be at least 6 characters long.' ); setSnackbarOpen(true); return; @@ -73,9 +75,9 @@ const SignUp = () => { //console.log("User signed up successfully:", userCredential.user); setShowLoader(false); setFormFields({ - email: "", - password: "", - confirmPassword: "", + email: '', + password: '', + confirmPassword: '' }); setOpenDialog(true); }) @@ -83,7 +85,7 @@ const SignUp = () => { setShowLoader(false); const errorCode = error.code; const errorMessage = error.message; - console.error("Error signing up:", errorMessage); + console.error('Error signing up:', errorMessage); setSnackbarMessage(errorMessage); setSnackbarOpen(true); }); @@ -97,7 +99,7 @@ const SignUp = () => { //Password Validation const validatePassword = (password, error) => { if (password.length < 6) { - error.password = "Password must be at least 6 characters long"; + error.password = 'Password must be at least 6 characters long'; return false; } @@ -108,26 +110,26 @@ const SignUp = () => { const hasDigit = /[0-9]+/; if (!hasSpecialSymbol.test(password)) { - error.password = "Password must contain at least one special symbol"; + error.password = 'Password must contain at least one special symbol'; return false; } if (!hasUppercase.test(password)) { - error.password = "Password must contain at least one uppercase letter"; + error.password = 'Password must contain at least one uppercase letter'; return false; } if (!hasLowercase.test(password)) { - error.password = "Password must contain at least one lowercase letter"; + error.password = 'Password must contain at least one lowercase letter'; return false; } if (!hasDigit.test(password)) { - error.password = "Password must contain at least one digit"; + error.password = 'Password must contain at least one digit'; return false; } - error.password = ""; + error.password = ''; }; const onChangeField = (e) => { @@ -135,30 +137,25 @@ const SignUp = () => { const value = e.target.value; let errors = { ...InputErrors }; - - - - if (name == "email") { - errors.email = !validateEmail(value) ? "Invalid email address" : ""; + if (name == 'email') { + errors.email = !validateEmail(value) ? 'Invalid email address' : ''; } - if (name === "password") { + if (name === 'password') { validatePassword(value, errors); } - if (name === "confirmPassword") { + if (name === 'confirmPassword') { errors.confirmPassword = - formFields.password !== value ? "Password Not Matched!" : ""; + formFields.password !== value ? 'Password Not Matched!' : ''; } setInputErrors(errors); setFormFields((prevFormFields) => ({ ...prevFormFields, - [name]: value, + [name]: value })); - checkInputs(formFields.email, formFields.password,value); - - + checkInputs(formFields.email, formFields.password, value); }; const handleCloseSnackbar = () => { @@ -167,7 +164,7 @@ const SignUp = () => { const handleClose = () => { setOpenDialog(false); // Close the dialog - navigate("/signIn"); // Redirect to sign-in page + navigate('/signIn'); // Redirect to sign-in page }; return ( @@ -179,7 +176,7 @@ const SignUp = () => { aria-describedby="alert-dialog-description" > - {"Account Created Successfully!"} + {'Account Created Successfully!'} @@ -207,8 +204,8 @@ const SignUp = () => {

    - theme.zIndex.drawer + 1 }} + theme.zIndex.drawer + 1 }} open={showLoader} className="formLoader" > @@ -231,7 +228,7 @@ const SignUp = () => { {InputErrors.email && ( {InputErrors.email} @@ -241,7 +238,7 @@ const SignUp = () => {
    { {InputErrors.password && ( {InputErrors.password} @@ -274,7 +271,7 @@ const SignUp = () => {
    { {InputErrors.confirmPassword && ( {InputErrors.confirmPassword} @@ -326,8 +323,8 @@ const SignUp = () => { { const [cartItems, setCartItems] = useState([]); const [error, setError] = useState(null); const [totalPrice, setTotalPrice] = useState(0); const context = useContext(MyContext); const navigate = useNavigate(); - const [uid, setUid] = useState(localStorage.getItem("uid")); + const [uid, setUid] = useState(localStorage.getItem('uid')); useEffect(() => { try { - if (context.isLogin === "true") { + if (context.isLogin === 'true') { fetchCartProducts(); } else { - navigate("/signIn"); // Navigate to About Us page if not logged in + navigate('/signIn'); // Navigate to About Us page if not logged in } window.scrollTo(0, 0); } catch (error) { - console.error("Error:", error); - setError("Failed to fetch data from the server"); // Set error state if there's an error with database connection + console.error('Error:', error); + setError('Failed to fetch data from the server'); // Set error state if there's an error with database connection } }, []); @@ -52,8 +52,8 @@ const Cart = () => { const fetchCartProducts = async () => { try { - const cartRef = doc(db, "carts", uid); - const productsCollectionRef = collection(cartRef, "products"); + const cartRef = doc(db, 'carts', uid); + const productsCollectionRef = collection(cartRef, 'products'); const querySnapshot = await getDocs(productsCollectionRef); let products = []; let price = 0; @@ -65,24 +65,24 @@ const Cart = () => { setCartItems(products); setTotalPrice(price); } catch (error) { - console.error("Error fetching cart products:", error); + console.error('Error fetching cart products:', error); } }; const deleteCartItem = async (uid, cartItemId) => { - const cartItemRef = doc(db, "carts", uid, "products", cartItemId); + const cartItemRef = doc(db, 'carts', uid, 'products', cartItemId); try { await deleteDoc(cartItemRef); fetchCartProducts(); - console.log("Cart item deleted successfully."); + console.log('Cart item deleted successfully.'); } catch (error) { - console.error("Error deleting cart item:", error); + console.error('Error deleting cart item:', error); } }; const deleteAllCartItems = async (uid) => { - const productsCollectionRef = collection(db, "carts", uid, "products"); + const productsCollectionRef = collection(db, 'carts', uid, 'products'); try { const querySnapshot = await getDocs(productsCollectionRef); @@ -90,9 +90,9 @@ const Cart = () => { await deleteDoc(doc.ref); }); await fetchCartProducts(); - console.log("All cart items deleted successfully."); + console.log('All cart items deleted successfully.'); } catch (error) { - console.error("Error deleting cart items:", error); + console.error('Error deleting cart items:', error); } }; @@ -110,7 +110,7 @@ const Cart = () => {
    • - Home + Home
    • Shop
    • Cart
    • @@ -120,14 +120,18 @@ const Cart = () => { )}
      -
      -
      +
      770 && 'row'}> +

      Your Cart

      - There are{" "} - {cartItems.length}{" "} + There are{' '} + {cartItems.length}{' '} products in your cart

      @@ -158,14 +162,14 @@ const Cart = () => { cartItems.map((item, index) => { return ( - +
      @@ -181,7 +185,7 @@ const Cart = () => { value={parseFloat(item.rating)} precision={0.5} readOnly - />{" "} + />{' '} ({parseFloat(item.rating)}) @@ -191,8 +195,8 @@ const Cart = () => { - Rs:{" "} - {parseInt(item.price.split(",").join(""))} + Rs:{' '} + {parseInt(item.price.split(',').join(''))} @@ -203,7 +207,7 @@ const Cart = () => { index={index} quantity={item?.quantity} updateInfo={updateCart} - name={"carts"} + name={'carts'} /> {/* { - Rs.{" "} + Rs.{' '} {parseInt( - item.price.split(",").join("") + item.price.split(',').join('') ) * parseInt(item.quantity)} @@ -264,7 +268,7 @@ const Cart = () => { cartItems .map( (item) => - parseInt(item.price.split(",").join("")) * + parseInt(item.price.split(',').join('')) * item.quantity ) .reduce((total, value) => total + value, 0)} @@ -294,7 +298,7 @@ const Cart = () => { cartItems .map( (item) => - parseInt(item.price.split(",").join("")) * + parseInt(item.price.split(',').join('')) * item.quantity ) .reduce((total, value) => total + value, 0)} @@ -310,7 +314,7 @@ const Cart = () => {
      -
      {" "} + {' '} ) : ( // Render message indicating cart is empty if cartItems array is empty diff --git a/src/pages/cart/style.css b/src/pages/cart/style.css index 8dd4eaf..8e9e112 100644 --- a/src/pages/cart/style.css +++ b/src/pages/cart/style.css @@ -2,6 +2,8 @@ width: 100%; height: auto; padding: 10px 0px; + display: flex; + justify-content: center; } .cartSection .clearCart { font-weight: 600; @@ -59,8 +61,13 @@ .cartRightBox { padding-left: 100px; + padding-bottom: 30px; + height: auto; } .cartRightBox .card { position: sticky; top: 150px; + height: auto; + margin: auto; + max-width: 430px; } diff --git a/src/pages/wishList/index.js b/src/pages/wishList/index.js index 4e0cd2c..bdc8c4a 100644 --- a/src/pages/wishList/index.js +++ b/src/pages/wishList/index.js @@ -1,50 +1,50 @@ -import React, { useContext, useState, useEffect } from "react"; -import { Link } from "react-router-dom"; -import "./style.css"; -import DeleteOutlineOutlinedIcon from "@mui/icons-material/DeleteOutlineOutlined"; -import Rating from "@mui/material/Rating"; +import React, { useContext, useState, useEffect } from 'react'; +import { Link } from 'react-router-dom'; +import './style.css'; +import DeleteOutlineOutlinedIcon from '@mui/icons-material/DeleteOutlineOutlined'; +import Rating from '@mui/material/Rating'; import { Button, Card, CardActions, CardContent, - Typography, -} from "@mui/material"; -import QuantityBox from "../../components/quantityBox"; -import { MyContext } from "../../App"; -import { getDatabase, ref, onValue, remove } from "firebase/database"; -import { useNavigate } from "react-router-dom"; -import KeyboardBackspaceIcon from "@mui/icons-material/KeyboardBackspace"; -import MapComponent from "../../components/map/ITEMmap"; -import { db } from "../../firebase"; + Typography +} from '@mui/material'; +import QuantityBox from '../../components/quantityBox'; +import { MyContext } from '../../App'; +import { getDatabase, ref, onValue, remove } from 'firebase/database'; +import { useNavigate } from 'react-router-dom'; +import KeyboardBackspaceIcon from '@mui/icons-material/KeyboardBackspace'; +import MapComponent from '../../components/map/ITEMmap'; +import { db } from '../../firebase'; import { collection, deleteDoc, doc, getDocs, - onSnapshot, -} from "firebase/firestore"; + onSnapshot +} from 'firebase/firestore'; const WishList = () => { const [wishlistItems, setWishlistItems] = useState([]); const [error, setError] = useState(null); const [totalPrice, setTotalPrice] = useState(0); const context = useContext(MyContext); const navigate = useNavigate(); - const [uid, setUid] = useState(localStorage.getItem("uid")); + const [uid, setUid] = useState(localStorage.getItem('uid')); + - console.log(wishlistItems); useEffect(() => { try { - if (context.isLogin === "true") { + if (context.isLogin === 'true') { fetchWishlistProducts(); } else { - navigate("/signIn"); // Navigate to About Us page if not logged in + navigate('/signIn'); // Navigate to About Us page if not logged in } window.scrollTo(0, 0); } catch (error) { - console.error("Error:", error); - setError("Failed to fetch data from the server"); // Set error state if there's an error with database connection + console.error('Error:', error); + setError('Failed to fetch data from the server'); // Set error state if there's an error with database connection } }, []); @@ -54,8 +54,8 @@ const WishList = () => { const fetchWishlistProducts = async () => { try { - const wishlistsRef = doc(db, "wishlists", uid); - const productsCollectionRef = collection(wishlistsRef, "products"); + const wishlistsRef = doc(db, 'wishlists', uid); + const productsCollectionRef = collection(wishlistsRef, 'products'); const querySnapshot = await getDocs(productsCollectionRef); let products = []; let price = 0; @@ -64,34 +64,33 @@ const WishList = () => { price += parseInt(doc.data()?.price) * doc.data()?.quantity; }); context.setWishlistCount(products.length); - console.log(products); setWishlistItems(products); setTotalPrice(price); } catch (error) { - console.error("Error fetching wishlist products:", error); + console.error('Error fetching wishlist products:', error); } }; const deleteWishlistItem = async (uid, wishlistItemId) => { const wishlistItemRef = doc( db, - "wishlists", + 'wishlists', uid, - "products", + 'products', wishlistItemId ); try { await deleteDoc(wishlistItemRef); fetchWishlistProducts(); - console.log("Wishlist item deleted successfully."); + console.log('Wishlist item deleted successfully.'); } catch (error) { - console.error("Error deleting wishlist item:", error); + console.error('Error deleting wishlist item:', error); } }; const deleteAllWishlistItems = async (uid) => { - const productsCollectionRef = collection(db, "wishlists", uid, "products"); + const productsCollectionRef = collection(db, 'wishlists', uid, 'products'); try { const querySnapshot = await getDocs(productsCollectionRef); @@ -99,9 +98,9 @@ const WishList = () => { await deleteDoc(doc.ref); }); await fetchWishlistProducts(); - console.log("All wishlist items deleted successfully."); + console.log('All wishlist items deleted successfully.'); } catch (error) { - console.error("Error deleting wishlist items:", error); + console.error('Error deleting wishlist items:', error); } }; @@ -119,7 +118,7 @@ const WishList = () => {
      • - Home + Home
      • Shop
      • Wishlist
      • @@ -129,14 +128,18 @@ const WishList = () => { )}
        -
        -
        +
        770 && 'row'}> +

        Your Wishlist

        - There are{" "} - {wishlistItems.length}{" "} + There are{' '} + {wishlistItems.length}{' '} products in your Wishlist

        @@ -167,14 +170,14 @@ const WishList = () => { wishlistItems.map((item, index) => { return ( - +
        @@ -190,7 +193,7 @@ const WishList = () => { value={parseFloat(item.rating)} precision={0.5} readOnly - />{" "} + />{' '} ({parseFloat(item.rating)}) @@ -200,8 +203,8 @@ const WishList = () => { - Rs:{" "} - {parseInt(item.price.split(",").join(""))} + Rs:{' '} + {parseInt(item.price.split(',').join(''))} @@ -212,15 +215,15 @@ const WishList = () => { index={index} quantity={item?.quantity} updateInfo={updateWishlist} - name={"wishlists"} + name={'wishlists'} /> - Rs.{" "} + Rs.{' '} {parseInt( - item.price.split(",").join("") + item.price.split(',').join('') ) * parseInt(item.quantity)} @@ -266,7 +269,7 @@ const WishList = () => { wishlistItems .map( (item) => - parseInt(item.price.split(",").join("")) * + parseInt(item.price.split(',').join('')) * item.quantity ) .reduce((total, value) => total + value, 0)} @@ -296,7 +299,7 @@ const WishList = () => { wishlistItems .map( (item) => - parseInt(item.price.split(",").join("")) * + parseInt(item.price.split(',').join('')) * item.quantity ) .reduce((total, value) => total + value, 0)} @@ -312,7 +315,7 @@ const WishList = () => {
        -
        {" "} + {' '} ) : ( // Render message indicating cart is empty if cartItems array is empty diff --git a/src/pages/wishList/style.css b/src/pages/wishList/style.css index 8dd4eaf..8e9e112 100644 --- a/src/pages/wishList/style.css +++ b/src/pages/wishList/style.css @@ -2,6 +2,8 @@ width: 100%; height: auto; padding: 10px 0px; + display: flex; + justify-content: center; } .cartSection .clearCart { font-weight: 600; @@ -59,8 +61,13 @@ .cartRightBox { padding-left: 100px; + padding-bottom: 30px; + height: auto; } .cartRightBox .card { position: sticky; top: 150px; + height: auto; + margin: auto; + max-width: 430px; } diff --git a/src/reportWebVitals.js b/src/reportWebVitals.js index 5253d3a..532f29b 100644 --- a/src/reportWebVitals.js +++ b/src/reportWebVitals.js @@ -1,4 +1,4 @@ -const reportWebVitals = onPerfEntry => { +const reportWebVitals = (onPerfEntry) => { if (onPerfEntry && onPerfEntry instanceof Function) { import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { getCLS(onPerfEntry); diff --git a/src/responsive.css b/src/responsive.css index fdfc76d..bf94aae 100644 --- a/src/responsive.css +++ b/src/responsive.css @@ -1,247 +1,725 @@ -@media only screen and (min-width:320px) and (max-width:575px){ - nav,.dropdownMenuAcc{width: 80% !important;} - .home_slider_Main .item .info h2{font-size: 8vw !important;} - .home_slider_Main .item .info p{font-size: 6vw !important;} - .hd{font-size: 28px !important;} - .home_slider_Main .item img{height: 45vh !important; object-fit: cover !important;} - .rightContent .topStrip{flex-direction: column;} - .rightContent .topStrip p{width: 100%; margin-bottom: 10px !important;} - .rightContent .topStrip div.ml-auto{width: 100%;} - - .detailsPage .productInfo h1{font-size: 40px !important;} - .detailsPage .productInfo .priceSec .priceLarge{font-size: 50px !important;} - .detailsPageTabs{padding: 25px !important;} - .customTabs ul{white-space: nowrap !important; overflow: scroll; overflow-y: hidden; display: block !important; margin-bottom: 0px !important;} - .customTabs ul::-webkit-scrollbar{display: none !important;} - .customTabs ul li{display: inline-block !important; width: max-content !important;} - - .loginWrapper{padding: 60px 20px !important;} - .loginWrapper .card{width:100% !important;} - - +@media only screen and (min-width: 320px) and (max-width: 575px) { + nav, + .dropdownMenuAcc { + width: 80% !important; + } + .home_slider_Main .item .info h2 { + font-size: 8vw !important; + } + .home_slider_Main .item .info p { + font-size: 6vw !important; + } + .hd { + font-size: 28px !important; + } + .home_slider_Main .item img { + height: 45vh !important; + object-fit: cover !important; + } + .rightContent .topStrip { + flex-direction: column; + } + .rightContent .topStrip p { + width: 100%; + margin-bottom: 10px !important; + } + .rightContent .topStrip div.ml-auto { + width: 100%; + } + + .detailsPage .productInfo h1 { + font-size: 40px !important; + } + .detailsPage .productInfo .priceSec .priceLarge { + font-size: 50px !important; + } + .detailsPageTabs { + padding: 25px !important; + } + .customTabs ul { + white-space: nowrap !important; + overflow: scroll; + overflow-y: hidden; + display: block !important; + margin-bottom: 0px !important; + } + .customTabs ul::-webkit-scrollbar { + display: none !important; + } + .customTabs ul li { + display: inline-block !important; + width: max-content !important; + } + + .loginWrapper { + padding: 60px 20px !important; + } + .loginWrapper .card { + width: 100% !important; + } } -@media only screen and (min-width:320px) and (max-width:400px){ - .homeProducts .productRow .item{width: 100% !important;} - .productThumb .imgWrapper .wrapper{height: auto !important;} - - .progressBarBox {flex-direction: column;} - .progressBarBox span.mr-3{display: block !important; width: 100%;} - .progress{width: 100% !important;} - - .productSize {flex-direction: column;} - .productSize span{width: 100%; display: block;} - .productSize ul{padding-left: 0px !important; margin-top: 10px !important; display: block; white-space: nowrap; overflow: scroll; overflow-y: hidden; width: 100% !important;} - .productSize ul::-webkit-scrollbar{display: none !important;} - .productSize ul li{vertical-align: top; width: max-content; display: inline-block !important;} - +@media only screen and (min-width: 320px) and (max-width: 400px) { + .homeProducts .productRow .item { + width: 100% !important; + } + .productThumb .imgWrapper .wrapper { + height: auto !important; + } + + .progressBarBox { + flex-direction: column; + } + .progressBarBox span.mr-3 { + display: block !important; + width: 100%; + } + .progress { + width: 100% !important; + } + + .productSize { + flex-direction: column; + } + .productSize span { + width: 100%; + display: block; + } + .productSize ul { + padding-left: 0px !important; + margin-top: 10px !important; + display: block; + white-space: nowrap; + overflow: scroll; + overflow-y: hidden; + width: 100% !important; + } + .productSize ul::-webkit-scrollbar { + display: none !important; + } + .productSize ul li { + vertical-align: top; + width: max-content; + display: inline-block !important; + } } -@media only screen and (min-width:400px) and (max-width:550px){ - .homeProducts .productRow .item{width: 50% !important;} - .productThumb .imgWrapper .wrapper{height: auto !important;} +@media only screen and (min-width: 400px) and (max-width: 550px) { + .homeProducts .productRow .item { + width: 50% !important; + } + .productThumb .imgWrapper .wrapper { + height: auto !important; + } } -@media only screen and (min-width:550px) and (max-width:767px){ - .homeProducts .productRow .item{width: 33.3333333333% !important;} - .productThumb .imgWrapper .wrapper{height: auto !important;} +@media only screen and (min-width: 550px) and (max-width: 767px) { + .homeProducts .productRow .item { + width: 33.3333333333% !important; + } + .productThumb .imgWrapper .wrapper { + height: auto !important; + } } -@media only screen and (min-width:575px) and (max-width:767px){ - nav,.dropdownMenuAcc{width: 50% !important;} - - .home_slider_Main .item .info h2{font-size: 8vw !important;} - .home_slider_Main .item .info p{font-size: 6vw !important;} - +@media only screen and (min-width: 575px) and (max-width: 767px) { + nav, + .dropdownMenuAcc { + width: 50% !important; + } + + .home_slider_Main .item .info h2 { + font-size: 8vw !important; + } + .home_slider_Main .item .info p { + font-size: 6vw !important; + } } -@media only screen and (min-width:320px) and (max-width:767px){ - .footerWrapper{padding-bottom: 0px !important;} - .lastStrip{padding: 0px 15px !important;} - .lastStrip .part_1, .lastStrip .part_2, .lastStrip .part_3{padding: 15px 0px !important;} - .lastStrip .part_1 p{margin-bottom: 0px;} - .lastStrip {justify-content: left;} - .lastStrip .col-md-3{text-align: left;} - .lastStrip .part3 .d-flex{justify-content: left;} - - .lastStrip .part_2{padding: 0px !important;} - .phWrap{flex-direction: column; width: 100% !important;} - .phWrap .phNo{padding: 10px 0px; width: 100% !important;} +@media only screen and (min-width: 320px) and (max-width: 767px) { + .footerWrapper { + padding-bottom: 0px !important; + } + .lastStrip { + padding: 0px 15px !important; + } + .lastStrip .part_1, + .lastStrip .part_2, + .lastStrip .part_3 { + padding: 15px 0px !important; + } + .lastStrip .part_1 p { + margin-bottom: 0px; + } + .lastStrip { + justify-content: left; + } + .lastStrip .col-md-3 { + text-align: left; + } + .lastStrip .part3 .d-flex { + justify-content: left; + } + + .lastStrip .part_2 { + padding: 0px !important; + } + .phWrap { + flex-direction: column; + width: 100% !important; + } + .phWrap .phNo { + padding: 10px 0px; + width: 100% !important; + } } -@media only screen and (min-width:767px) and (max-width:992px){ - nav,.dropdownMenuAcc{width: 30% !important;} - - .home_slider_Main .item .info h2{font-size: 7vw !important;} - .home_slider_Main .item .info p{font-size: 5vw !important;} +@media only screen and (min-width: 767px) and (max-width: 992px) { + nav, + .dropdownMenuAcc { + width: 30% !important; + } + + .home_slider_Main .item .info h2 { + font-size: 7vw !important; + } + .home_slider_Main .item .info p { + font-size: 5vw !important; + } } - -@media only screen and (min-width:320px) and (max-width:992px){ - - body,html{overflow-x: hidden !important;} - - .container-fluid{padding: 0px 25px !important;} - .res-hide{display: none !important;} - .res-full{width: 100%;} - - .headerWrapper .part1{max-width: 100%; flex:0 0 100%;} - .headerWrapper .part1 .navbarToggle{width:45px;} - .headerWrapper .part1 .navbarToggle svg{font-size: 35px !important;} - - - .headerWrapper .d-flex.part3{display: none !important;} - header .logo{width: 160px;} - - .headerWrapper.fixed header{ box-shadow: 0px 1px 5px #0000001a;} - .headerWrapper.fixed{top: 0px !important;} - - .nav{position: absolute; border: 0px !important; pointer-events: none;} - .nav.click{pointer-events: inherit !important;} - .afterHeader{margin-top: 85px !important;} - - .headerSearch{position: fixed !important; top: 0px; right: -100%; opacity: 0; z-index: 100; width: 100%; height: 100% !important; background: #fff; align-items: flex-start !important; flex-direction: column !important; padding: 70px !important; padding-top: 90px !important; border: 0px !important; transition: all 0.5s ease-in-out;} - - - .headerSearch.open{opacity: 1; right: 0px;} - - header .headerSearch .selectDropWrapper{width: 100% !important;} - header .headerSearch .search{padding-left: 0px !important; width: 100% !important; border: 1px solid rgba(0,0,0,0.1) !important; padding: 10px !important; margin-top: 15px !important;} - - header .headerSearch .search .searchIcon{top: 22px !important; right: 10px !important;} - - .closeSearch{position: absolute; top: 25px !important; left: 35px !important; z-index: 100; cursor: pointer; width: 40px; height: 30px; } - .closeSearch svg{font-size: 35px !important;} - - .myAccDrop{display: flex; align-items: center; justify-content: center; width: 55px; height: 55px; background: #3bb77e; border-radius: 50%;} - .myAccDrop svg{color: #fff !important; font-size: 35px !important;} - - - nav,.dropdownMenuAcc{height: 100% !important; position: fixed !important; top: 0px; right: -100%; background: #fff; z-index: 1000000; transition: all 0.3s; opacity: 0; height: 100% !important; overflow: scroll !important; - padding-bottom: 50px !important;} - nav.open{opacity: 1; right: 0px;} - nav ul li,.dropdownMenuAcc li{width: 100%; margin: 0px !important;} - nav ul li button,.dropdownMenuAcc li button.MuiButtonBase-root{width: 100% !important; text-align: left !important; justify-content: flex-start !important;} - .nav nav ul li button a {display: flex !important; align-items: center; justify-content: space-between; width: 100%; font-size: 24px !important; color: rgba(0,0,0,0.8) !important;} - nav ul li button a svg{margin-left: auto !important; font-size: 30px !important; } - .rotateIcon{transform: rotate(180deg) !important;} - - .navbarOverlay{width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; background: rgba(0,0,0,0.5); z-index: 100000;} - - .nav nav .dropdown_menu{display: none !important; position: static !important; width: 100% !important; box-shadow: none !important; padding-left: 30px !important;} - .nav nav .dropdown_menu.open{display: block !important; opacity: 1 !important; visibility: inherit !important;} - - .dropdownMenuAcc{right: 0px !important; opacity: 1 !important; top: 0px !important; z-index: 1000000 !important;} - .dropdownMenuAcc li button.MuiButtonBase-root a{display: flex !important; align-items: center; width: 100%; font-size: 24px !important; color: rgba(0,0,0,0.8) !important;} - - .dropdownMenuAcc li button.MuiButtonBase-root svg{ font-size: 30px !important;display: block !important;} - .dropdownMenuAcc li button.MuiButtonBase-root img{margin-right: 8px;} - - div.megaMenu {padding-top:10px !important ;padding-bottom:10px !important ;} - .megaMenu .row{flex-direction: column !important;} - .megaMenu .row .col{max-width: 100% !important; width: 100% !important; margin-bottom: 20px !important;} - - .catSliderSection{padding-top: 0px !important; padding-bottom: 0px !important;} - .cat_slider_Main .slick-track{white-space: nowrap !important; overflow-x: scroll !important; display: block !important; width: 100% !important;} - - .cat_slider_Main .slick-track::-webkit-scrollbar{display: none !important;} - - .cat_slider_Main .slick-track .slick-slide{display: inline-block !important; width:200px !important; float: none !important;} - - .cat_slider_Main .item:hover .info, .cat_slider_Main .slick-current .info{transform: scale(1) !important; box-shadow: none !important;} - - .cat_slider_Main.slick-initialized .slick-list{padding-left:0px !important ;} - - - .hd{margin-bottom: 15px !important;} - - .bannerSection .row{display: block !important; white-space: nowrap !important; overflow-x: scroll !important; - transition: all 0.4s !important;} - .bannerSection .row::-webkit-scrollbar{display: none !important;} - .bannerSection .row .col{width: 400px !important; float: none !important; display: inline-block !important; - padding-right: 0px !important;} - - - .homeProductsTitleWrap{flex-direction: column;} - .homeProductsTitleWrap h2{width: 100%;} - .homeProductWrapper .filterTab {white-space: nowrap; overflow-x: scroll; width: 100%; display: block !important; margin-top: 10px !important;} - .homeProductWrapper .filterTab::-webkit-scrollbar{display: none !important;} - .homeProductWrapper .filterTab li{display: inline-block !important; vertical-align: top; width: max-content; margin-left: 0px !important; margin-right: 20px !important;} - - .homeProductWrapper .productRow{white-space: nowrap; overflow-x: scroll; width: 100%; display: block !important;} - .homeProductWrapper .productRow::-webkit-scrollbar{display: none !important;} - .homeProductWrapper .productRow .item{width:400px !important; vertical-align: top !important; display: inline-block !important;} - .homeProductWrapper .productRow .item *{white-space: normal !important;} - - - -.homeProductsRow2 .slick-track{white-space: nowrap; overflow-x: scroll; display: block !important;} -.homeProductsRow2 .slick-track::-webkit-scrollbar{display: none !important;} -.homeProductsRow2 .slick-track .slick-slide{width:400px !important; vertical-align: top !important; display: inline-block !important; float: none !important;} -.homeProductsRow2 .slick-track .slick-slide *{white-space: normal !important;} - - -.topProductsSection .row{white-space: nowrap; overflow-x: scroll; display: block !important; width: 100% !important;} -.topProductsSection .row::-webkit-scrollbar{display: none !important;} -.topProductsSection .row .col{width:400px !important; vertical-align: top !important; display: inline-block !important; float: none !important;} - -.topProductsSection .row .col *{white-space: normal !important;} - -.newsLetterSection .box{padding: 40px !important; flex-direction: column;} -.newsLetterSection .box .info{width: 100% !important;} -.newsLetterSection .box .info h2{font-size: 50px !important;} - -.newsLetterBanner {width: 100% !important;} -.newsLetterSection .box .img{width: 70% !important;} - - -.footerBoxes .row{white-space: nowrap; overflow-x: scroll; display: block !important; width: 100% !important;} -.footerBoxes .row::-webkit-scrollbar{display: none !important;} -.footerBoxes .row .col{width:400px !important; vertical-align: top !important; display: inline-block !important; float: none !important; padding-right: 0px !important;} - - -footer .part2{padding-top: 25px; padding-bottom: 30px !important;} -footer .part2 .row{white-space: nowrap; overflow-x: scroll; display: block !important; width: 100% !important;} -footer .part2 .row .col{width:250px !important; vertical-align: top !important; display: inline-block !important; float: none !important; padding-right: 0px !important;} -footer .part2 .row::-webkit-scrollbar{display: none !important;} - -.breadcrumb{padding: 25px !important;} -.breadcrumb h1{font-size: 35px !important;} - -.sidebarWrapper{pointer-events: none;} -.sidebarWrapper.click{pointer-events: inherit !important;} -.sidebar{position: fixed !important; top: 0px !important; bottom: -100%; opacity: 0; left: 0px; width: 100%; height: 100% !important; z-index: 1000000; background: #fff; max-width: 100%; flex: 0 0 100%; padding: 0px !important; transition: all 0.3s ease-in-out; } -.sidebar.open{bottom: 0px; opacity: 1;} -.listingData .rightContent {max-width: 100% !important; flex: 0 0 100% !important;} -.sidebarWrapper .sidebar .card{margin-bottom: 0px !important; position: absolute; width: 100%; height: 100%;} - -.productThumb .imgWrapper .wrapper{height: auto !important;} - -.filterWrapper{display: flex !important;} - -.filterBtn{position: fixed !important; bottom: 5px; left:2.5%; width: 95% !important; z-index: 1000;} - -.breadcrumbWrapper{margin-bottom: 0px !important; padding-bottom: 0px !important;} - -.detailsPage {padding-top: 35px !important; padding-bottom: 0px !important; margin-bottom: 0px !important;} -.detailsContainer{max-width: 100%; padding: 0px 25px !important;} - -.detailsPage .productInfo{padding-left: 15px !important; margin-top: 35px !important;} - -.zoomSlider .slick-track{white-space: nowrap; overflow: scroll; overflow-y: hidden; display: block !important;} -.zoomSlider .slick-track::-webkit-scrollbar{display: none !important;} -.zoomSlider .slick-track .slick-slide{display: inline-block !important; float: none !important; width: 120px !important; height: 120px !important; vertical-align: top !important;} - -.reviewBox{padding-left: 15px !important;} -.wishlist{margin-left: 0px !important;} - -.cartSection{margin-top: 125px !important;} - -.cartWrapper table tbody td .img{width: 100px !important; height: 100px !important;} -.cartWrapper table tbody td .info{width: 400px !important;} -.cartWrapper table tbody td .info h4{font-size: 20px !important; font-weight: 600 !important;} -.cartWrapper table tbody td span{white-space: nowrap;} - -.cartRightBox{padding-left: 15px !important; padding-top: 50px !important;} - -} \ No newline at end of file +@media only screen and (min-width: 320px) and (max-width: 992px) { + body, + html { + overflow-x: hidden !important; + } + + .container-fluid { + padding: 0px 25px !important; + } + .res-hide { + display: none !important; + } + .res-full { + width: 100%; + } + + .headerWrapper .part1 { + max-width: 100%; + flex: 0 0 100%; + } + .headerWrapper .part1 .navbarToggle { + width: 45px; + } + .headerWrapper .part1 .navbarToggle svg { + font-size: 35px !important; + } + + .headerWrapper .d-flex.part3 { + display: none !important; + } + header .logo { + width: 160px; + } + + .headerWrapper.fixed header { + box-shadow: 0px 1px 5px #0000001a; + } + .headerWrapper.fixed { + top: 0px !important; + } + + .nav { + position: absolute; + border: 0px !important; + pointer-events: none; + } + .nav.click { + pointer-events: inherit !important; + } + .afterHeader { + margin-top: 85px !important; + } + + .headerSearch { + position: fixed !important; + top: 0px; + right: -100%; + opacity: 0; + z-index: 100; + width: 100%; + height: 100% !important; + background: #fff; + align-items: flex-start !important; + flex-direction: column !important; + padding: 70px !important; + padding-top: 90px !important; + border: 0px !important; + transition: all 0.5s ease-in-out; + } + + .headerSearch.open { + opacity: 1; + right: 0px; + } + + header .headerSearch .selectDropWrapper { + width: 100% !important; + } + header .headerSearch .search { + padding-left: 0px !important; + width: 100% !important; + border: 1px solid rgba(0, 0, 0, 0.1) !important; + padding: 10px !important; + margin-top: 15px !important; + } + + header .headerSearch .search .searchIcon { + top: 22px !important; + right: 10px !important; + } + + .closeSearch { + position: absolute; + top: 25px !important; + left: 35px !important; + z-index: 100; + cursor: pointer; + width: 40px; + height: 30px; + } + .closeSearch svg { + font-size: 35px !important; + } + + .myAccDrop { + display: flex; + align-items: center; + justify-content: center; + width: 55px; + height: 55px; + background: #3bb77e; + border-radius: 50%; + } + .myAccDrop svg { + color: #fff !important; + font-size: 35px !important; + } + + nav, + .dropdownMenuAcc { + height: 100% !important; + position: fixed !important; + top: 0px; + right: -100%; + background: #fff; + z-index: 1000000; + transition: all 0.3s; + opacity: 0; + height: 100% !important; + overflow: scroll !important; + padding-bottom: 50px !important; + } + nav.open { + opacity: 1; + right: 0px; + } + nav ul li, + .dropdownMenuAcc li { + width: 100%; + margin: 0px !important; + } + nav ul li button, + .dropdownMenuAcc li button.MuiButtonBase-root { + width: 100% !important; + text-align: left !important; + justify-content: flex-start !important; + } + .nav nav ul li button a { + display: flex !important; + align-items: center; + justify-content: space-between; + width: 100%; + font-size: 24px !important; + color: rgba(0, 0, 0, 0.8) !important; + } + nav ul li button a svg { + margin-left: auto !important; + font-size: 30px !important; + } + .rotateIcon { + transform: rotate(180deg) !important; + } + + .navbarOverlay { + width: 100%; + height: 100%; + position: fixed; + top: 0px; + left: 0px; + background: rgba(0, 0, 0, 0.5); + z-index: 100000; + } + + .nav nav .dropdown_menu { + display: none !important; + position: static !important; + width: 100% !important; + box-shadow: none !important; + padding-left: 30px !important; + } + .nav nav .dropdown_menu.open { + display: block !important; + opacity: 1 !important; + visibility: inherit !important; + } + + .dropdownMenuAcc { + right: 0px !important; + opacity: 1 !important; + top: 0px !important; + z-index: 1000000 !important; + } + .dropdownMenuAcc li button.MuiButtonBase-root a { + display: flex !important; + align-items: center; + width: 100%; + font-size: 24px !important; + color: rgba(0, 0, 0, 0.8) !important; + } + + .dropdownMenuAcc li button.MuiButtonBase-root svg { + font-size: 30px !important; + display: block !important; + } + .dropdownMenuAcc li button.MuiButtonBase-root img { + margin-right: 8px; + } + + div.megaMenu { + padding-top: 10px !important ; + padding-bottom: 10px !important ; + } + .megaMenu .row { + flex-direction: column !important; + } + .megaMenu .row .col { + max-width: 100% !important; + width: 100% !important; + margin-bottom: 20px !important; + } + + .catSliderSection { + padding-top: 0px !important; + padding-bottom: 0px !important; + } + .cat_slider_Main .slick-track { + white-space: nowrap !important; + overflow-x: scroll !important; + display: block !important; + width: 100% !important; + } + + .cat_slider_Main .slick-track::-webkit-scrollbar { + display: none !important; + } + + .cat_slider_Main .slick-track .slick-slide { + display: inline-block !important; + width: 200px !important; + float: none !important; + } + + .cat_slider_Main .item:hover .info, + .cat_slider_Main .slick-current .info { + transform: scale(1) !important; + box-shadow: none !important; + } + + .cat_slider_Main.slick-initialized .slick-list { + padding-left: 0px !important ; + } + + .hd { + margin-bottom: 15px !important; + } + + .bannerSection .row { + display: block !important; + white-space: nowrap !important; + overflow-x: scroll !important; + transition: all 0.4s !important; + } + .bannerSection .row::-webkit-scrollbar { + display: none !important; + } + .bannerSection .row .col { + width: 400px !important; + float: none !important; + display: inline-block !important; + padding-right: 0px !important; + } + + .homeProductsTitleWrap { + flex-direction: column; + } + .homeProductsTitleWrap h2 { + width: 100%; + } + .homeProductWrapper .filterTab { + white-space: nowrap; + overflow-x: scroll; + width: 100%; + display: block !important; + margin-top: 10px !important; + } + .homeProductWrapper .filterTab::-webkit-scrollbar { + display: none !important; + } + .homeProductWrapper .filterTab li { + display: inline-block !important; + vertical-align: top; + width: max-content; + margin-left: 0px !important; + margin-right: 20px !important; + } + + .homeProductWrapper .productRow { + white-space: nowrap; + overflow-x: scroll; + width: 100%; + display: block !important; + } + .homeProductWrapper .productRow::-webkit-scrollbar { + display: none !important; + } + .homeProductWrapper .productRow .item { + width: 400px !important; + vertical-align: top !important; + display: inline-block !important; + } + .homeProductWrapper .productRow .item * { + white-space: normal !important; + } + + .homeProductsRow2 .slick-track { + white-space: nowrap; + overflow-x: scroll; + display: block !important; + } + .homeProductsRow2 .slick-track::-webkit-scrollbar { + display: none !important; + } + .homeProductsRow2 .slick-track .slick-slide { + width: 400px !important; + vertical-align: top !important; + display: inline-block !important; + float: none !important; + } + .homeProductsRow2 .slick-track .slick-slide * { + white-space: normal !important; + } + + .topProductsSection .row { + white-space: nowrap; + overflow-x: scroll; + display: block !important; + width: 100% !important; + } + .topProductsSection .row::-webkit-scrollbar { + display: none !important; + } + .topProductsSection .row .col { + width: 400px !important; + vertical-align: top !important; + display: inline-block !important; + float: none !important; + } + + .topProductsSection .row .col * { + white-space: normal !important; + } + + .newsLetterSection .box { + padding: 40px !important; + flex-direction: column; + } + .newsLetterSection .box .info { + width: 100% !important; + } + .newsLetterSection .box .info h2 { + font-size: 50px !important; + } + + .newsLetterBanner { + width: 100% !important; + } + .newsLetterSection .box .img { + width: 70% !important; + } + + .footerBoxes .row { + white-space: nowrap; + overflow-x: scroll; + display: block !important; + width: 100% !important; + } + .footerBoxes .row::-webkit-scrollbar { + display: none !important; + } + .footerBoxes .row .col { + width: 400px !important; + vertical-align: top !important; + display: inline-block !important; + float: none !important; + padding-right: 0px !important; + } + + footer .part2 { + padding-top: 25px; + padding-bottom: 30px !important; + } + footer .part2 .row { + white-space: nowrap; + overflow-x: scroll; + display: block !important; + width: 100% !important; + } + footer .part2 .row .col { + width: 250px !important; + vertical-align: top !important; + display: inline-block !important; + float: none !important; + padding-right: 0px !important; + } + footer .part2 .row::-webkit-scrollbar { + display: none !important; + } + + .breadcrumb { + padding: 25px !important; + } + .breadcrumb h1 { + font-size: 35px !important; + } + + .sidebarWrapper { + pointer-events: none; + } + .sidebarWrapper.click { + pointer-events: inherit !important; + } + .sidebar { + position: fixed !important; + top: 0px !important; + bottom: -100%; + opacity: 0; + left: 0px; + width: 100%; + height: 100% !important; + z-index: 1000000; + background: #fff; + max-width: 100%; + flex: 0 0 100%; + padding: 0px !important; + transition: all 0.3s ease-in-out; + } + .sidebar.open { + bottom: 0px; + opacity: 1; + } + .listingData .rightContent { + max-width: 100% !important; + flex: 0 0 100% !important; + } + .sidebarWrapper .sidebar .card { + margin-bottom: 0px !important; + position: absolute; + width: 100%; + height: 100%; + } + + .productThumb .imgWrapper .wrapper { + height: auto !important; + } + + .filterWrapper { + display: flex !important; + } + + .filterBtn { + position: fixed !important; + bottom: 5px; + left: 2.5%; + width: 95% !important; + z-index: 1000; + } + + .breadcrumbWrapper { + margin-bottom: 0px !important; + padding-bottom: 0px !important; + } + + .detailsPage { + padding-top: 35px !important; + padding-bottom: 0px !important; + margin-bottom: 0px !important; + } + .detailsContainer { + max-width: 100%; + padding: 0px 25px !important; + } + + .detailsPage .productInfo { + padding-left: 15px !important; + margin-top: 35px !important; + } + + .zoomSlider .slick-track { + white-space: nowrap; + overflow: scroll; + overflow-y: hidden; + display: block !important; + } + .zoomSlider .slick-track::-webkit-scrollbar { + display: none !important; + } + .zoomSlider .slick-track .slick-slide { + display: inline-block !important; + float: none !important; + width: 120px !important; + height: 120px !important; + vertical-align: top !important; + } + + .reviewBox { + padding-left: 15px !important; + } + .wishlist { + margin-left: 0px !important; + } + + .cartSection { + margin-top: 125px !important; + } + + .cartWrapper table tbody td .img { + width: 100px !important; + height: 100px !important; + } + .cartWrapper table tbody td .info { + width: 400px !important; + } + .cartWrapper table tbody td .info h4 { + font-size: 20px !important; + font-weight: 600 !important; + } + .cartWrapper table tbody td span { + white-space: nowrap; + } + + .cartRightBox { + padding-left: 15px !important; + padding-top: 50px !important; + } +} diff --git a/yarn.lock b/yarn.lock index 43b7216..b0bd030 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,17 +34,9 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.8.3": - version "7.22.13" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" - integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== - dependencies: - "@babel/highlight" "^7.22.13" - chalk "^2.4.2" - -"@babel/code-frame@^7.24.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== dependencies: "@babel/highlight" "^7.24.2" @@ -55,7 +47,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz" integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.16.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.23.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz" integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== @@ -85,19 +77,9 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.23.0", "@babel/generator@^7.7.2": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz" - integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== - dependencies: - "@babel/types" "^7.23.0" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/generator@^7.24.5": +"@babel/generator@^7.23.0", "@babel/generator@^7.24.5", "@babel/generator@^7.7.2": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz" integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== dependencies: "@babel/types" "^7.24.5" @@ -294,18 +276,9 @@ "@babel/traverse" "^7.23.0" "@babel/types" "^7.23.0" -"@babel/highlight@^7.22.13": - version "7.22.20" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" - integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - "@babel/highlight@^7.24.2": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz" integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== dependencies: "@babel/helper-validator-identifier" "^7.24.5" @@ -313,14 +286,9 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== - -"@babel/parser@^7.24.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.24.5": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz" integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": @@ -445,7 +413,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.22.5": +"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz" integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== @@ -893,7 +861,7 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" -"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": +"@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz" integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== @@ -1157,7 +1125,7 @@ "@babel/traverse@^7.23.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz" integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== dependencies: "@babel/code-frame" "^7.24.2" @@ -1341,7 +1309,7 @@ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@^11.11.1": +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.11.1", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0": version "11.11.1" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz" integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA== @@ -1371,7 +1339,7 @@ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== -"@emotion/styled@^11.11.0": +"@emotion/styled@^11.11.0", "@emotion/styled@^11.3.0": version "11.11.0" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz" integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== @@ -1509,7 +1477,7 @@ "@firebase/util" "1.9.4" tslib "^2.1.0" -"@firebase/app-compat@0.2.27": +"@firebase/app-compat@0.2.27", "@firebase/app-compat@0.x": version "0.2.27" resolved "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.27.tgz" integrity sha512-SYlqocfUDKPHR6MSFC8hree0BTiWFu5o8wbf6zFlYXyG41w7TcHp4wJi4H/EL5V6cM4kxwruXTJtqXX/fRAZtw== @@ -1520,12 +1488,12 @@ "@firebase/util" "1.9.4" tslib "^2.1.0" -"@firebase/app-types@0.9.0": +"@firebase/app-types@0.9.0", "@firebase/app-types@0.x": version "0.9.0" resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz" integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q== -"@firebase/app@0.9.27": +"@firebase/app@0.9.27", "@firebase/app@0.x": version "0.9.27" resolved "https://registry.npmjs.org/@firebase/app/-/app-0.9.27.tgz" integrity sha512-p2Dvl1ge4kRsyK5+wWcmdAIE9MSwZ0pDKAYB51LZgZuz6wciUZk4E1yAEdkfQlRxuHehn+Ol9WP5Qk2XQZiHGg== @@ -1811,7 +1779,7 @@ tslib "^2.1.0" undici "5.26.5" -"@firebase/util@1.9.4": +"@firebase/util@1.9.4", "@firebase/util@1.x": version "1.9.4" resolved "https://registry.npmjs.org/@firebase/util/-/util-1.9.4.tgz" integrity sha512-WLonYmS1FGHT97TsUmRN3qnTh5TeeoJp1Gg5fithzuAgdZOUtsYECfy7/noQ3llaguios8r5BuXSEiK82+UrxQ== @@ -1850,6 +1818,18 @@ resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz" integrity sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA== +"@fortawesome/fontawesome-common-types@6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz" + integrity sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A== + +"@fortawesome/fontawesome-svg-core@~1 || ~6": + version "6.5.1" + resolved "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.1.tgz" + integrity sha512-MfRCYlQPXoLlpem+egxjfkEuP9UQswTrlCOsknus/NcMoblTH2g0jPrapbcIb04KGA7E2GZxbAccGZfWoYgsrQ== + dependencies: + "@fortawesome/fontawesome-common-types" "6.5.1" + "@fortawesome/react-fontawesome@^0.2.0": version "0.2.0" resolved "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz" @@ -2146,18 +2126,9 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.5": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: "@jridgewell/set-array" "^1.2.1" @@ -2169,14 +2140,9 @@ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - "@jridgewell/set-array@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/source-map@^0.3.3": @@ -2192,17 +2158,9 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" @@ -2238,7 +2196,7 @@ dependencies: "@babel/runtime" "^7.22.15" -"@mui/material@^5.14.11": +"@mui/material@^5.0.0", "@mui/material@^5.14.11": version "5.14.11" resolved "https://registry.npmjs.org/@mui/material/-/material-5.14.11.tgz" integrity sha512-DnSdJzcR7lwG12JA5L2t8JF+RDzMygu5rCNW+logWb/KW2/TRzwLyVWO+CorHTBjBRd38DBxnwOCDiYkDd+N3A== @@ -2328,7 +2286,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -2649,7 +2607,7 @@ dependencies: tslib "^2.4.0" -"@testing-library/dom@^8.5.0": +"@testing-library/dom@^8.5.0", "@testing-library/dom@>=7.21.4": version "8.20.1" resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz" integrity sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g== @@ -2709,7 +2667,7 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.2.tgz" integrity sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": version "7.20.2" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz" integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== @@ -2933,7 +2891,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@>=16.9.11": +"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^18.2.25", "@types/react@>=16.14.8", "@types/react@>=16.9.11": version "18.3.2" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz" integrity sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w== @@ -3042,7 +3000,7 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.5.0": +"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== @@ -3065,7 +3023,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.5.0": +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -3111,7 +3069,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": +"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.62.0": version "5.62.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -3133,7 +3091,7 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": +"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": version "1.11.6" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== @@ -3234,7 +3192,7 @@ "@webassemblyjs/wasm-gen" "1.11.6" "@webassemblyjs/wasm-parser" "1.11.6" -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": +"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": version "1.11.6" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== @@ -3300,16 +3258,16 @@ acorn-walk@^7.1.1: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + acorn@^7.1.1: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.10.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== - address@^1.0.1, address@^1.1.2: version "1.2.2" resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" @@ -3337,7 +3295,12 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.4.1: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -3349,7 +3312,17 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.4, ajv@^6.9.1: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3359,7 +3332,7 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.2, ajv@^8.9.0, ajv@>=8: version "8.12.0" resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== @@ -3398,7 +3371,14 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -3440,13 +3420,6 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.1.3: - version "5.1.3" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - aria-query@^5.0.0, aria-query@^5.1.3: version "5.3.0" resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz" @@ -3454,6 +3427,13 @@ aria-query@^5.0.0, aria-query@^5.1.3: dependencies: dequal "^2.0.3" +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz" @@ -3462,16 +3442,16 @@ array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - array-flatten@^2.1.2: version "2.1.2" resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-includes@^3.1.6, array-includes@^3.1.7: version "3.1.7" resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz" @@ -3890,7 +3870,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4: version "4.22.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== @@ -4008,7 +3988,31 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4134,16 +4138,16 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colord@^2.9.1: version "2.9.3" resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" @@ -4243,7 +4247,22 @@ content-type@~1.0.4: resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^1.5.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^1.6.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -4411,15 +4430,15 @@ css-to-react-native@^3.0.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: - mdn-data "2.0.4" + mdn-data "2.0.14" source-map "^0.6.1" -css-tree@^1.1.2, css-tree@^1.1.3: +css-tree@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -4427,6 +4446,14 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + css-what@^3.2.1: version "3.4.2" resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" @@ -4576,26 +4603,33 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -debug@2.6.9, debug@^2.6.0: +debug@^2.6.0: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - ms "^2.1.1" + ms "2.0.0" decimal.js@^10.2.1: version "10.4.3" @@ -4676,16 +4710,16 @@ delayed-stream@~1.0.0: resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" @@ -4787,14 +4821,6 @@ dom-helpers@^5.0.1, dom-helpers@^5.2.0, dom-helpers@^5.2.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" @@ -4804,16 +4830,24 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -domelementtype@1: - version "1.3.1" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" @@ -4836,7 +4870,16 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.5.2, domutils@^2.8.0: +domutils@^2.5.2: + version "2.8.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +domutils@^2.8.0: version "2.8.0" resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== @@ -5268,7 +5311,7 @@ eslint-plugin-testing-library@^5.0.1: dependencies: "@typescript-eslint/utils" "^5.58.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5284,6 +5327,14 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" @@ -5305,7 +5356,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.3.0: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 6": version "8.50.0" resolved "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz" integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== @@ -5357,16 +5408,16 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz" - integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== - esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== + esquery@^1.4.2: version "1.5.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" @@ -5386,7 +5437,17 @@ estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: +estraverse@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estraverse@^5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -5527,7 +5588,7 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -faye-websocket@0.11.4, faye-websocket@^0.11.3: +faye-websocket@^0.11.3, faye-websocket@0.11.4: version "0.11.4" resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== @@ -5609,7 +5670,15 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0, find-up@^4.1.0: +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -5744,7 +5813,17 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.0.0, fs-extra@^9.0.1: +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -5764,11 +5843,6 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -5834,7 +5908,7 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" -glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -5848,32 +5922,39 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.6: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== +glob@7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.1.1" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -6094,6 +6175,16 @@ http-deceiver@^1.2.7: resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -6105,16 +6196,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.8" resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" @@ -6162,13 +6243,6 @@ human-signals@^2.1.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -6176,12 +6250,19 @@ iconv-lite@^0.6.3: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -idb@7.1.1, idb@^7.0.1: +idb@^7.0.1, idb@7.1.1: version "7.1.1" resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== @@ -6242,7 +6323,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6273,16 +6354,16 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - ipaddr.js@^2.0.1: version "2.1.0" resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" @@ -6916,7 +6997,7 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@^27.4.2, jest-resolve@^27.5.1: +jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== @@ -7138,7 +7219,7 @@ jest-worker@^28.0.2: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.4.3: +"jest@^27.0.0 || ^28.0.0", jest@^27.4.3: version "27.5.1" resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== @@ -7152,6 +7233,11 @@ jiti@^1.18.2: resolved "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz" integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== +"jquery@1.9.1 - 3": + version "3.7.1" + resolved "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz" + integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== + js-image-zoom@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/js-image-zoom/-/js-image-zoom-0.7.0.tgz" @@ -7344,7 +7430,7 @@ launch-editor@^2.6.0: picocolors "^1.0.0" shell-quote "^1.7.3" -leaflet@^1.9.4: +leaflet@^1.9.0, leaflet@^1.9.4: version "1.9.4" resolved "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz" integrity sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA== @@ -7577,7 +7663,7 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== @@ -7642,16 +7728,16 @@ mkdirp@~0.5.1: dependencies: minimist "^1.2.6" +ms@^2.1.1, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - ms@2.1.3: version "2.1.3" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" @@ -7921,7 +8007,14 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -8091,6 +8184,11 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" +popper.js@^1.16.1: + version "1.16.1" + resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + possible-typed-array-names@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz" @@ -8631,15 +8729,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^7.0.35: - version "7.0.39" - resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4: +"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.1.4, postcss@^8.2, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3, postcss@^8.3.5, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4, postcss@^8.4.6, "postcss@>= 8", postcss@>=8, postcss@>=8.0.9: version "8.4.31" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -8648,6 +8738,14 @@ postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -8732,7 +8830,7 @@ prop-types-extra@^1.1.0: react-is "^16.3.2" warning "^4.0.0" -prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1, prop-types@>=15.6.2: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -8893,7 +8991,7 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^18.2.0: +"react-dom@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x", "react-dom@^17.0.0 || ^18.0.0", react-dom@^18.0.0, react-dom@^18.2.0, "react-dom@>= 16.8.0", react-dom@>=16.14.0, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0: version "18.2.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== @@ -8919,7 +9017,7 @@ react-inner-image-zoom@^3.0.2: resolved "https://registry.npmjs.org/react-inner-image-zoom/-/react-inner-image-zoom-3.0.2.tgz" integrity sha512-ICjyz0wdKmLufuQkUyg4iyP0yIF2elDeHjY1+S1pOKPggrW0g9V2SCmOSA39405ZX8GVVaxadmUYWwz3OF4V5A== -react-is@^16.13.1, react-is@^16.3.2, react-is@^16.7.0: +react-is@^16.13.1, react-is@^16.3.2, react-is@^16.7.0, "react-is@>= 16.8.0": version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -8929,7 +9027,12 @@ react-is@^17.0.1: resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^18.0.0, react-is@^18.2.0: +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-is@^18.2.0: version "18.2.0" resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== @@ -8962,7 +9065,7 @@ react-range-slider-input@^3.0.7: clsx "^1.1.1" core-js "^3.22.4" -react-redux@^9.1.2: +"react-redux@^7.2.1 || ^8.1.3 || ^9.0.0", react-redux@^9.1.2: version "9.1.2" resolved "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz" integrity sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w== @@ -8970,7 +9073,7 @@ react-redux@^9.1.2: "@types/use-sync-external-store" "^0.0.3" use-sync-external-store "^1.0.0" -react-refresh@^0.11.0: +react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": version "0.11.0" resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== @@ -9066,7 +9169,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^18.2.0: +"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.0 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=0.14.0, react@>=15.0.0, react@>=16.14.0, react@>=16.3, react@>=16.6.0, react@>=16.8, react@>=16.8.0: version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -9134,7 +9237,7 @@ redux-thunk@^3.1.0: resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz" integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== -redux@^5.0.1: +redux@^5.0.0, redux@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== @@ -9339,7 +9442,7 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup@^2.43.1: +"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: version "2.79.1" resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== @@ -9363,15 +9466,25 @@ safe-array-concat@^1.0.0, safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex-test@^1.0.3: version "1.0.3" @@ -9419,15 +9532,6 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" @@ -9456,6 +9560,15 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" @@ -9468,7 +9581,17 @@ selfsigned@^2.1.1: dependencies: node-forge "^1" -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -9654,16 +9777,21 @@ source-map-support@^0.5.6, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - source-map@^0.5.7: version "0.5.7" resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.6.1, source-map@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@^0.7.3: version "0.7.4" resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" @@ -9676,6 +9804,16 @@ source-map@^0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -9733,16 +9871,16 @@ static-eval@2.0.2: dependencies: escodegen "^1.8.1" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + stop-iteration-iterator@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" @@ -9750,6 +9888,13 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + string-convert@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" @@ -9828,13 +9973,6 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" @@ -9895,7 +10033,7 @@ style-loader@^3.3.1: resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== -styled-components@^5.3.11: +styled-components@^5.3.1, styled-components@^5.3.11, "styled-components@>= 2": version "5.3.11" resolved "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz" integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw== @@ -9944,7 +10082,14 @@ supports-color@^5.3.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -10204,7 +10349,17 @@ tslib@^1.8.1: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.3: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tslib@^2.1.0: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tslib@^2.4.0: version "2.6.2" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -10240,7 +10395,7 @@ type-fest@^0.16.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== -type-fest@^0.20.2: +type-fest@^0.20.2, "type-fest@>=0.17.0 <5.0.0": version "0.20.2" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== @@ -10309,6 +10464,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +"typescript@^3.2.1 || ^4", "typescript@>= 2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta": + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" @@ -10386,7 +10546,7 @@ universalify@^2.0.0: resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -10547,7 +10707,7 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.6.0: +webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x": version "4.15.1" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== @@ -10612,7 +10772,7 @@ webpack-sources@^3.2.3: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.64.4: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": version "5.88.2" resolved "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz" integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== @@ -10642,7 +10802,7 @@ webpack@^5.64.4: watchpack "^2.4.0" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== From c87d0d4c55b96bcd38df76a0675330d0ae4df1b8 Mon Sep 17 00:00:00 2001 From: anwesha Date: Wed, 15 May 2024 20:30:29 -0400 Subject: [PATCH 8/9] refac:feature_fix/user primary key to uid,default photo, name, email in user firebase , if the user logged in from Google --- package-lock.json | 636 ++++++++++++++++++++++ src/App.js | 103 ++-- src/components/AccountDetails/Account.css | 21 +- src/components/AccountDetails/Account.js | 454 ++++++++------- src/pages/SignIn/index.js | 17 +- yarn.lock | 290 +++++++++- 6 files changed, 1249 insertions(+), 272 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3c3667b..ba53996 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,6 +49,8 @@ "@babel/plugin-transform-private-property-in-object": "^7.24.5", "@babel/preset-react": "^7.24.1", "eslint-plugin-react": "^7.34.1", + "husky": "^9.0.11", + "lint-staged": "^15.2.2", "prettier": "3.0.1" } }, @@ -7451,6 +7453,87 @@ "node": ">=0.10.0" } }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", + "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -10347,6 +10430,18 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -10935,6 +11030,21 @@ "node": ">=10.17.0" } }, + "node_modules/husky": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", + "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", + "dev": true, + "bin": { + "husky": "bin.mjs" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -13949,6 +14059,308 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "node_modules/lint-staged": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.2.tgz", + "integrity": "sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==", + "dev": true, + "dependencies": { + "chalk": "5.3.0", + "commander": "11.1.0", + "debug": "4.3.4", + "execa": "8.0.1", + "lilconfig": "3.0.0", + "listr2": "8.0.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.4" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/lilconfig": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/listr2": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.1.tgz", + "integrity": "sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==", + "dev": true, + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.0.0", + "rfdc": "^1.3.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true + }, + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", + "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -14024,6 +14436,147 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "node_modules/log-update": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz", + "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^6.2.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^7.0.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", + "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", @@ -14855,6 +15408,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -17415,6 +17980,22 @@ "node": ">=10" } }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -17432,6 +18013,12 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -17986,6 +18573,46 @@ "node": ">=8" } }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -18174,6 +18801,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-convert": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz", diff --git a/src/App.js b/src/App.js index 0bd857c..b041e57 100644 --- a/src/App.js +++ b/src/App.js @@ -1,33 +1,30 @@ -import "bootstrap/dist/css/bootstrap.min.css"; -import { - getDatabase, - onValue, - ref -} from "firebase/database"; -import React, { createContext, useEffect, useState } from "react"; -import { HashRouter, Route, Routes } from "react-router-dom"; -import "./App.css"; -import Loader from "./assets/images/loading.gif"; -import Footer from "./components/footer/footer"; -import Header from "./components/header/header"; -import About from "./pages/About"; -import AddProductForm from "./pages/AddProd"; -import DetailsPage from "./pages/Details"; -import Home from "./pages/Home/index"; -import Listing from "./pages/Listing"; -import NotFound from "./pages/NotFound"; -import SignIn from "./pages/SignIn"; -import SignUp from "./pages/SignUp"; -import ResetPassword from "./pages/ResetPassword"; -import Cart from "./pages/cart"; -import Wishlist from "./pages/wishList"; -import "./responsive.css"; +import 'bootstrap/dist/css/bootstrap.min.css'; +import { getDatabase, onValue, ref } from 'firebase/database'; +import React, { createContext, useEffect, useState } from 'react'; +import { HashRouter, Route, Routes } from 'react-router-dom'; +import './App.css'; +import Loader from './assets/images/loading.gif'; +import Footer from './components/footer/footer'; +import Header from './components/header/header'; +import About from './pages/About'; +import AddProductForm from './pages/AddProd'; +import DetailsPage from './pages/Details'; +import Home from './pages/Home/index'; +import Listing from './pages/Listing'; +import NotFound from './pages/NotFound'; +import SignIn from './pages/SignIn'; +import SignUp from './pages/SignUp'; +import ResetPassword from './pages/ResetPassword'; +import Cart from './pages/cart'; +import Wishlist from './pages/wishList'; +import './responsive.css'; // import data from './data'; -import { collection, doc, getDocs } from "firebase/firestore"; -import MapComponent from "./components/map/ITEMmap"; -import { db } from "./firebase"; -import SellerForm from "./pages/SellerRegistration"; +import { collection, doc, getDocs } from 'firebase/firestore'; +import MapComponent from './components/map/ITEMmap'; +import { db } from './firebase'; +import SellerForm from './pages/SellerRegistration'; +import { Account } from './components/AccountDetails/Account'; const MyContext = createContext(); @@ -58,8 +55,8 @@ function App() { const fetchCartProducts = async () => { try { - const cartRef = doc(db, "carts", localStorage.getItem("uid")); - const productsCollectionRef = collection(cartRef, "products"); + const cartRef = doc(db, 'carts', localStorage.getItem('uid')); + const productsCollectionRef = collection(cartRef, 'products'); const querySnapshot = await getDocs(productsCollectionRef); const products = []; querySnapshot.forEach((doc) => { @@ -68,14 +65,14 @@ function App() { setCartItems(products); setCartCount(products.length); // Set the product count } catch (error) { - console.error("Error fetching cart products:", error); + console.error('Error fetching cart products:', error); } }; const fetchWishlistProducts = async () => { try { - const wishlistRef = doc(db, "wishlists", localStorage.getItem("uid")); - const productsCollectionRef = collection(wishlistRef, "products"); + const wishlistRef = doc(db, 'wishlists', localStorage.getItem('uid')); + const productsCollectionRef = collection(wishlistRef, 'products'); const querySnapshot = await getDocs(productsCollectionRef); const products = []; querySnapshot.forEach((doc) => { @@ -84,7 +81,7 @@ function App() { setWishlistItems(products); setWishlistCount(products.length); // Set the product count } catch (error) { - console.error("Error fetching wishlist products:", error); + console.error('Error fetching wishlist products:', error); } }; @@ -92,15 +89,15 @@ function App() { const fetchData = async () => { try { const response = await fetch( - "https://mavrick-1.github.io/DataApi/data.json" + 'https://mavrick-1.github.io/DataApi/data.json' ); if (!response.ok) { - throw new Error("Network response was not ok"); + throw new Error('Network response was not ok'); } const data = await response.json(); setData(data); } catch (error) { - console.error("Error fetching data:", error); + console.error('Error fetching data:', error); } }; @@ -110,7 +107,7 @@ function App() { useEffect(() => { getData(); - const is_Login = localStorage.getItem("isLogin"); + const is_Login = localStorage.getItem('isLogin'); setIsLogin(is_Login); setTimeout(() => { @@ -125,7 +122,7 @@ function App() { const db = getDatabase(); // Reference to the node or path you want to fetch data from - const dataRef = ref(db, localStorage.getItem("user")); + const dataRef = ref(db, localStorage.getItem('user')); // Fetch data from the specified path onValue( @@ -135,11 +132,11 @@ function App() { setCartItems(data); }, (error) => { - console.error("Error fetching data:", error); + console.error('Error fetching data:', error); } ); } catch (error) { - console.error("Error:", error); + console.error('Error:', error); } }; @@ -149,7 +146,7 @@ function App() { const db = getDatabase(); // Reference to the node or path you want to fetch data from - const dataRef = ref(db, localStorage.getItem("user")); + const dataRef = ref(db, localStorage.getItem('user')); // Fetch data from the specified path onValue( @@ -159,17 +156,17 @@ function App() { setCartItems(data); }, (error) => { - console.error("Error fetching data:", error); + console.error('Error fetching data:', error); } ); } catch (error) { - console.error("Error:", error); + console.error('Error:', error); } }; const addToCart = async (item) => { try { - const user = localStorage.getItem("user"); + const user = localStorage.getItem('user'); // Initialize Firebase database with the provided database URL const db = getDatabase(); const cartRef = ref(db, user); @@ -178,7 +175,7 @@ function App() { // Add item to the cart in Firebase setCartItems([...cartItems, { ...item, quantity: 1 }]); } catch (error) { - console.error("Error adding item to cart:", error); + console.error('Error adding item to cart:', error); } }; @@ -192,12 +189,12 @@ function App() { }; const signIn = () => { - const is_Login = localStorage.getItem("isLogin"); + const is_Login = localStorage.getItem('isLogin'); setIsLogin(is_Login); }; const signOut = () => { - localStorage.removeItem("isLogin"); + localStorage.removeItem('isLogin'); setIsLogin(false); }; @@ -223,7 +220,7 @@ function App() { wishlistCount, setWishlistCount, fetchCartProducts, - fetchWishlistProducts, + fetchWishlistProducts }; return data && data.productData ? ( @@ -261,13 +258,18 @@ function App() { /> } /> } /> + } /> {/* sign in , signup Protection */} {isLogin === null && ( } /> )} {isLogin === null && ( - } /> + } + /> )} {isLogin === null && ( } /> @@ -294,4 +296,3 @@ function App() { export default App; export { MyContext }; - diff --git a/src/components/AccountDetails/Account.css b/src/components/AccountDetails/Account.css index 0ea5974..a2993e1 100644 --- a/src/components/AccountDetails/Account.css +++ b/src/components/AccountDetails/Account.css @@ -1,10 +1,14 @@ .cardwidth{ - width: 50%; + width: 75%; height: auto; } .negmargin{ - margin-top: -30%; + top: 0; + bottom: 0; + height: 100%; + width: 100%; + position: absolute; } .profileImageP{ @@ -14,18 +18,13 @@ } .imgbackground{ - height: 400px; + height: 600px; width: 100vw; - opacity: 0.2; - filter: blur(3px); + opacity: 0.5; + filter: blur(2px); } -@media only screen and (max-width: 600px) { - negmargin{ - margin-top: -60%; - position: relative; - } -} + diff --git a/src/components/AccountDetails/Account.js b/src/components/AccountDetails/Account.js index 4efc6b7..71955fa 100644 --- a/src/components/AccountDetails/Account.js +++ b/src/components/AccountDetails/Account.js @@ -1,213 +1,279 @@ -import {useForm} from "react-hook-form"; -import {Button, Card} from "@mui/material"; -import {CardBody, CardFooter, CardHeader, CardImg, CardText, CardTitle, Col, Form, Row} from "react-bootstrap"; -import "./Account.css" -import imageBackground from "../../assets/images/slider-1.png" -import pfp from "../../assets/images/pfp.jpg" -import React, {useEffect, useState} from "react"; -import {getDownloadURL, ref, uploadBytes} from "firebase/storage"; -import { useNavigate} from "react-router-dom" +import { useForm } from 'react-hook-form'; +import { Button, Card } from '@mui/material'; import { - addDoc, - collection, - doc, - getDoc, - onSnapshot, - setDoc, - updateDoc, - query, - where, - documentId, - getDocs, -} from "firebase/firestore"; -import {db, storage} from "../../firebase"; -import {nanoid} from "nanoid"; -import {useParams} from "react-router-dom"; -import {FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - - -export function Account(){ - const { register , handleSubmit, formState:{errors, isSubmitting}} = useForm() - - const [name , setName] = useState("") - const [email , setEmail] = useState("") - const [address , setAddress] = useState("") - const [file , setFile] = useState(pfp) - - let user_uid = localStorage.getItem("uid") - - - + CardBody, + CardFooter, + CardHeader, + CardImg, + CardText, + CardTitle, + Col, + Form, + Row +} from 'react-bootstrap'; +import './Account.css'; +import imageBackground from '../../assets/images/slider-1.png'; +import pfp from '../../assets/images/pfp.jpg'; +import React, { useEffect, useState } from 'react'; +import { + getDownloadURL, + ref, + uploadBytes, + updateMetadata +} from 'firebase/storage'; +import { useNavigate } from 'react-router-dom'; +import { + addDoc, + collection, + doc, + getDoc, + onSnapshot, + setDoc, + updateDoc, + query, + where, + documentId, + getDocs +} from 'firebase/firestore'; +import { db, storage } from '../../firebase'; +import { nanoid } from 'nanoid'; +export function Account() { + const { + register, + handleSubmit, + formState: { errors, isSubmitting } + } = useForm(); - useEffect(()=>{ - (async ()=>{ - const docref = doc(db,"users", `${user_uid? user_uid : nanoid()}`) - const docSnap = await getDoc(docref) - if(docSnap.exists()){ - setName(docSnap.data().Name) - setEmail(docSnap.data().Email) - setAddress(docSnap.data().Address) - setFile(docSnap.data().photo) + const user_uid = localStorage.getItem('uid'); + const userImage = localStorage.getItem('userImage'); + const userName = localStorage.getItem('uname'); + const userEmail = localStorage.getItem('uemail'); - }else{ - console.log(null) - } - })() + const [name, setName] = useState(userName); + const [email, setEmail] = useState(userEmail); + const [address, setAddress] = useState(''); + const [file, setFile] = useState(pfp); + const navigate = useNavigate(); - },[]) + useEffect(() => { + (async () => { + const docref = doc(db, 'users', `${user_uid ? user_uid : nanoid()}`); + const docSnap = await getDoc(docref); + if (docSnap.exists()) { + setName(docSnap.data().Name); + setEmail(docSnap.data().Email); + setAddress(docSnap.data().Address); + setFile(docSnap.data().photo); + } else { + console.log(null); + } + })(); + }, []); - function Onsubmit(e){ - e.preventDefault() - const collectionRef = collection(db, 'users'); + function handlehistory() { + navigate('/'); + } - const querySnapshot = getDocs(collectionRef) + function Onsubmit(e) { + e.preventDefault(); + const collectionRef = collection(db, 'users'); - querySnapshot.then((doc)=>{ - console.log(doc.docs.includes(user_uid)) - if(doc.docs.includes(user_uid)){ - return updateUser() - }else { - return addUser(name, email , address, file) - } - }) - } + const querySnapshot = getDocs(collectionRef); - const addUser = async (name, email , address, file) => { + // return updateUser(name, email, address, file) - try{ - const imageRef = ref(storage, `AccountImage/${localStorage.getItem("uid")}`); - await uploadBytes(imageRef, file); - const imageUrl = await getDownloadURL(imageRef); - await setDoc(doc(db,"users", `${user_uid}`), { - Name : name, - Email : email, - Address : address, - photo : imageUrl - }) - setFile(imageUrl) + querySnapshot.then((doc) => { + console.log(doc.docs.includes(user_uid)); + if (doc.docs.includes(user_uid)) { + return updateUser(name, email, address, file); + } else { + return addUser(name, email, address, file); + } + }); + } - }catch (error){ - console.log(error) - } + const addUser = async (name, email, address, file) => { + try { + const imageRef = ref( + storage, + `AccountImage/${localStorage.getItem('uid')}` + ); + await uploadBytes(imageRef, file); + const imageUrl = await getDownloadURL(imageRef); + await setDoc(doc(db, 'users', `${user_uid}`), { + Name: name, + Email: email, + Address: address, + photo: imageUrl + }); + setFile(imageUrl); + } catch (error) { + console.log(error); } + }; + const updateUser = async (name, email, address, file) => { + try { + const imageRef = ref( + storage, + `AccountImage/${localStorage.getItem('uid')}` + ); + await uploadBytes(imageRef, file); - const updateUser = async (e) =>{ - e.preventDefault() + const imageUrl = await getDownloadURL(imageRef); - try { - const imageRef = ref(storage, `AccountImage/${localStorage.getItem("uid")}`); - await uploadBytes(imageRef, file); - const imageUrl = await getDownloadURL(imageRef); + console.log(imageUrl); + console.log(name); + console.log(email); + console.log(address); - - await updateDoc(doc(db,"users", user_uid),{ - Name : name, - Email : email, - Address : address, - photo : imageUrl - }) - }catch (err){ - console.log(err) - } + await updateDoc(doc(db, 'users', `${user_uid}`), { + Name: name, + Email: email, + Address: address, + photo: imageUrl + }); + } catch (err) { + console.log(err); } + }; - - return( - <> -
        -

        - - My Account

        - - -
        - - - - - - setFile(e.target.files[0])}/> - - - - -

        {name}

        - - -

        {email}

        - -
        - - {address} - - -
        -
        -
        -
        - -

        Personal

        - -
        - - Name - {setName(e.target.value)}} - value={name} - required={true} - isInvalid={!!errors.name} - /> - - {errors.name?.message} - - - - Email - {setEmail(e.target.value)}} - isInvalid={!!errors.email} - /> - - {errors.email?.message} - - - - Address - {setAddress(e.target.value)}} - isInvalid={!!errors.address} - /> - - {errors.address?.message} - - -
        -
        -
        - - - - -
        - + return ( + <> +
        +

        + + My Account +

        + + +
        + + + + + {userImage !== '' ? ( + + ) : ( +
        + + setFile(e.target.files[0])} + /> +
        + )} + + + + +

        {name}

        + + +

        {email}

        + +
        + + {address} + + + +
        +
        - - ) -} \ No newline at end of file +
        + + +

        Personal

        +
        + +
        + + Name + { + setName(e.target.value); + }} + value={name} + required={true} + isInvalid={!!errors.name} + /> + + {errors.name?.message} + + + + Email + { + setEmail(e.target.value); + }} + isInvalid={!!errors.email} + /> + + {errors.email?.message} + + + + Address + { + setAddress(e.target.value); + }} + isInvalid={!!errors.address} + /> + + {errors.address?.message} + + +
        +
        +
        + + + +
        +
        + + ); +} diff --git a/src/pages/SignIn/index.js b/src/pages/SignIn/index.js index fe94abe..4bef230 100644 --- a/src/pages/SignIn/index.js +++ b/src/pages/SignIn/index.js @@ -131,6 +131,8 @@ const SignIn = () => { localStorage.setItem('isLogin', true); const udata = replaceSpecialCharacters(result.user.email); localStorage.setItem('user', udata); + localStorage.setItem('uname', result.user.displayName); + localStorage.setItem('uemail', result.user.email); localStorage.setItem('uid', result.user.uid); context.signIn(); setLoggedInUseEmail(udata); @@ -145,7 +147,7 @@ const SignIn = () => { }; const forgotPassword = async () => { - history("/resetpassword") + history('/resetpassword'); }; const handleCloseSnackbar = () => { setSnackbarOpen(false); @@ -239,10 +241,13 @@ const SignIn = () => { )}
        - -
        + +
        - -

        Don't have an account?{' '} diff --git a/yarn.lock b/yarn.lock index b0bd030..27d37a5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2969,6 +2969,11 @@ resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== +"@types/uuid@8.3.4": + version "8.3.4" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + "@types/warning@^3.0.0": version "3.0.3" resolved "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz" @@ -3349,6 +3354,11 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: dependencies: type-fest "^0.21.3" +ansi-escapes@^6.2.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz" + integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== + ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" @@ -3390,6 +3400,16 @@ ansi-styles@^5.0.0: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.0.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ansi-styles@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" @@ -4020,6 +4040,11 @@ chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" @@ -4077,6 +4102,21 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + +cli-truncate@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz" + integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== + dependencies: + slice-ansi "^5.0.0" + string-width "^7.0.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -4153,7 +4193,7 @@ colord@^2.9.1: resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^2.0.10: +colorette@^2.0.10, colorette@^2.0.20: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -4185,6 +4225,11 @@ commander@^8.3.0: resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" @@ -4617,7 +4662,7 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4, debug@4.3.4: version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -4938,6 +4983,11 @@ emittery@^0.8.1: resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emoji-regex@^10.3.0: + version "10.3.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -5472,6 +5522,11 @@ eventemitter3@^4.0.0: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + events@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" @@ -5492,6 +5547,21 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" @@ -5873,6 +5943,11 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-east-asian-width@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz" + integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== + get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" @@ -5899,6 +5974,11 @@ get-stream@^6.0.0: resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + get-symbol-description@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz" @@ -6243,6 +6323,16 @@ human-signals@^2.1.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + +husky@^9.0.11: + version "9.0.11" + resolved "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz" + integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== + iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -6462,6 +6552,18 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-fullwidth-code-point@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz" + integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== + dependencies: + get-east-asian-width "^1.0.0" + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" @@ -6563,6 +6665,11 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" @@ -7461,11 +7568,44 @@ lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0: resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +lilconfig@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz" + integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lint-staged@^15.2.2: + version "15.2.2" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.2.tgz" + integrity sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw== + dependencies: + chalk "5.3.0" + commander "11.1.0" + debug "4.3.4" + execa "8.0.1" + lilconfig "3.0.0" + listr2 "8.0.1" + micromatch "4.0.5" + pidtree "0.6.0" + string-argv "0.3.2" + yaml "2.3.4" + +listr2@8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/listr2/-/listr2-8.0.1.tgz" + integrity sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA== + dependencies: + cli-truncate "^4.0.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^6.0.0" + rfdc "^1.3.0" + wrap-ansi "^9.0.0" + loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" @@ -7547,6 +7687,17 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-update@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz" + integrity sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw== + dependencies: + ansi-escapes "^6.2.0" + cli-cursor "^4.0.0" + slice-ansi "^7.0.0" + strip-ansi "^7.1.0" + wrap-ansi "^9.0.0" + long@^5.0.0: version "5.2.3" resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" @@ -7655,7 +7806,7 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@4.0.5: version "4.0.5" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -7685,6 +7836,11 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" @@ -7761,9 +7917,14 @@ mz@^2.7.0: thenify-all "^1.0.0" nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + version "3.3.7" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +nanoid@^5.0.7: + version "5.0.7" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz" + integrity sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ== natural-compare-lite@^1.4.0: version "1.4.0" @@ -7830,6 +7991,13 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + nth-check@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" @@ -7967,13 +8135,20 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.2: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" @@ -8125,6 +8300,11 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" @@ -8160,6 +8340,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pidtree@0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" @@ -9004,6 +9189,11 @@ react-error-overlay@^6.0.11: resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== +react-hook-form@^7.51.4: + version "7.51.4" + resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.4.tgz" + integrity sha512-V14i8SEkh+V1gs6YtD0hdHYnoL4tp/HX/A45wWQN15CYr9bFRmmRdYStSO5L65lCCZRF+kYiSKhm9alqbcdiVA== + react-image-zoom@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/react-image-zoom/-/react-image-zoom-1.3.1.tgz" @@ -9169,7 +9359,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.0 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=0.14.0, react@>=15.0.0, react@>=16.14.0, react@>=16.3, react@>=16.6.0, react@>=16.8, react@>=16.8.0: +"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x", "react@^16.8.0 || ^17 || ^18", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.0 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=0.14.0, react@>=15.0.0, react@>=16.14.0, react@>=16.3, react@>=16.6.0, react@>=16.8, react@>=16.8.0: version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -9410,6 +9600,14 @@ resolve@^2.0.0-next.5: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + retry@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" @@ -9420,6 +9618,11 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rfdc@^1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" @@ -9726,6 +9929,11 @@ signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" @@ -9741,6 +9949,22 @@ slash@^4.0.0: resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + +slice-ansi@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz" + integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== + dependencies: + ansi-styles "^6.2.1" + is-fullwidth-code-point "^5.0.0" + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" @@ -9895,6 +10119,11 @@ string_decoder@^1.1.1, string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +string-argv@0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" + integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== + string-convert@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" @@ -9930,6 +10159,15 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz" + integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + dependencies: + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" + string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6: version "4.0.10" resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" @@ -9996,6 +10234,13 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" +strip-ansi@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" @@ -10016,6 +10261,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" @@ -10614,11 +10864,19 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.2: +uuid@^8.3.2, uuid@8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuidv4@^6.2.13: + version "6.2.13" + resolved "https://registry.npmjs.org/uuidv4/-/uuidv4-6.2.13.tgz" + integrity sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ== + dependencies: + "@types/uuid" "8.3.4" + uuid "8.3.2" + v8-to-istanbul@^8.1.0: version "8.1.1" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" @@ -11098,6 +11356,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" + integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== + dependencies: + ansi-styles "^6.2.1" + string-width "^7.0.0" + strip-ansi "^7.1.0" + wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" @@ -11158,6 +11425,11 @@ yaml@^2.1.1: resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== +yaml@2.3.4: + version "2.3.4" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" From be4409fb9b3f4cf9cb5c88ababef0b31795c0cb0 Mon Sep 17 00:00:00 2001 From: anwesha Date: Wed, 15 May 2024 22:16:53 -0400 Subject: [PATCH 9/9] refac:conflict resolved --- src/App.js | 347 ------------------------------------- src/pages/SignIn/index.js | 346 ------------------------------------- yarn.lock | 355 +------------------------------------- 3 files changed, 8 insertions(+), 1040 deletions(-) diff --git a/src/App.js b/src/App.js index e0a487a..b041e57 100644 --- a/src/App.js +++ b/src/App.js @@ -1,336 +1,3 @@ -<<<<<<< HEAD -// <<<<<<< HEAD -// import 'bootstrap/dist/css/bootstrap.min.css'; -// import { getDatabase, onValue, ref } from 'firebase/database'; -// import React, { createContext, useEffect, useState } from 'react'; -// import { HashRouter, Route, Routes } from 'react-router-dom'; -// import './App.css'; -// import Loader from './assets/images/loading.gif'; -// import Footer from './components/footer/footer'; -// import Header from './components/header/header'; -// import About from './pages/About'; -// import AddProductForm from './pages/AddProd'; -// import DetailsPage from './pages/Details'; -// import Home from './pages/Home/index'; -// import Listing from './pages/Listing'; -// import NotFound from './pages/NotFound'; -// import SignIn from './pages/SignIn'; -// import SignUp from './pages/SignUp'; -// import ResetPassword from './pages/ResetPassword'; -// import Cart from './pages/cart'; -// import Wishlist from './pages/wishList'; -// import './responsive.css'; -// ======= -// import "bootstrap/dist/css/bootstrap.min.css"; -// import { -// getDatabase, -// onValue, -// ref -// } from "firebase/database"; -// import React, { createContext, useEffect, useState } from "react"; -// import { HashRouter, Route, Routes } from "react-router-dom"; -// import "./App.css"; -// import Loader from "./assets/images/loading.gif"; -// import Footer from "./components/footer/footer"; -// import Header from "./components/header/header"; -// import About from "./pages/About"; -// import AddProductForm from "./pages/AddProd"; -// import DetailsPage from "./pages/Details"; -// import Home from "./pages/Home/index"; -// import Listing from "./pages/Listing"; -// import NotFound from "./pages/NotFound"; -// import SignIn from "./pages/SignIn"; -// import SignUp from "./pages/SignUp"; -// import ResetPassword from "./pages/ResetPassword"; -// import Cart from "./pages/cart"; -// import Wishlist from "./pages/wishList"; -// import "./responsive.css"; -// >>>>>>> upstream/dev -// -// // import data from './data'; -// import { collection, doc, getDocs } from 'firebase/firestore'; -// import MapComponent from './components/map/ITEMmap'; -// import { db } from './firebase'; -// import SellerForm from './pages/SellerRegistration'; -// import { Account } from './components/AccountDetails/Account'; -// -// const MyContext = createContext(); -// -// function App() { -// const [productData, setProductData] = useState([]); -// -// const [cartItems, setCartItems] = useState([]); -// const [wishlistItems, setWishlistItems] = useState([]); -// -// const [isLoading, setIsloading] = useState(true); -// -// const [loading, setLoading] = useState(true); -// -// const [windowWidth, setWindowWidth] = useState(window.innerWidth); -// -// const [isopenNavigation, setIsopenNavigation] = useState(false); -// -// const [isLogin, setIsLogin] = useState(); -// const [isOpenFilters, setIsopenFilters] = useState(false); -// const [data, setData] = useState([]); -// const [cartCount, setCartCount] = useState(0); -// const [wishlistCount, setWishlistCount] = useState(0); -// -// useEffect(() => { -// fetchCartProducts(); -// fetchWishlistProducts(); -// }, [isLogin]); -// -// const fetchCartProducts = async () => { -// try { -// const cartRef = doc(db, 'carts', localStorage.getItem('uid')); -// const productsCollectionRef = collection(cartRef, 'products'); -// const querySnapshot = await getDocs(productsCollectionRef); -// const products = []; -// querySnapshot.forEach((doc) => { -// products.push({ id: doc.id, ...doc.data() }); -// }); -// setCartItems(products); -// setCartCount(products.length); // Set the product count -// } catch (error) { -// console.error('Error fetching cart products:', error); -// } -// }; -// -// const fetchWishlistProducts = async () => { -// try { -// const wishlistRef = doc(db, 'wishlists', localStorage.getItem('uid')); -// const productsCollectionRef = collection(wishlistRef, 'products'); -// const querySnapshot = await getDocs(productsCollectionRef); -// const products = []; -// querySnapshot.forEach((doc) => { -// products.push({ id: doc.id, ...doc.data() }); -// }); -// setWishlistItems(products); -// setWishlistCount(products.length); // Set the product count -// } catch (error) { -// console.error('Error fetching wishlist products:', error); -// } -// }; -// -// useEffect(() => { -// const fetchData = async () => { -// try { -// const response = await fetch( -// 'https://mavrick-1.github.io/DataApi/data.json' -// ); -// if (!response.ok) { -// throw new Error('Network response was not ok'); -// } -// const data = await response.json(); -// setData(data); -// } catch (error) { -// console.error('Error fetching data:', error); -// } -// }; -// -// fetchData(); -// }, []); -// -// useEffect(() => { -// getData(); -// -// const is_Login = localStorage.getItem('isLogin'); -// setIsLogin(is_Login); -// -// setTimeout(() => { -// setProductData(data[1]); -// setIsloading(false); -// }, 3000); -// }, [isLogin]); -// -// const getData = async (url) => { -// try { -// // Get a reference to the database -// const db = getDatabase(); -// -// // Reference to the node or path you want to fetch data from -// const dataRef = ref(db, localStorage.getItem('user')); -// -// // Fetch data from the specified path -// onValue( -// dataRef, -// (snapshot) => { -// const data = snapshot.val(); -// setCartItems(data); -// }, -// (error) => { -// console.error('Error fetching data:', error); -// } -// ); -// } catch (error) { -// console.error('Error:', error); -// } -// }; -// -// const getCartData = async () => { -// try { -// // Get a reference to the database -// const db = getDatabase(); -// -// // Reference to the node or path you want to fetch data from -// const dataRef = ref(db, localStorage.getItem('user')); -// -// // Fetch data from the specified path -// onValue( -// dataRef, -// (snapshot) => { -// const data = snapshot.val(); -// setCartItems(data); -// }, -// (error) => { -// console.error('Error fetching data:', error); -// } -// ); -// } catch (error) { -// console.error('Error:', error); -// } -// }; -// -// const addToCart = async (item) => { -// try { -// const user = localStorage.getItem('user'); -// // Initialize Firebase database with the provided database URL -// const db = getDatabase(); -// const cartRef = ref(db, user); -// // Generate a unique key using the user's email and item details -// const uniqueKey = user + item.id; // Modify as per your requirement -// // Add item to the cart in Firebase -// setCartItems([...cartItems, { ...item, quantity: 1 }]); -// } catch (error) { -// console.error('Error adding item to cart:', error); -// } -// }; -// -// const removeItemsFromCart = (id) => { -// const arr = cartItems.filter((obj) => obj.id !== id); -// setCartItems(arr); -// }; -// -// const emptyCart = () => { -// setCartItems([]); -// }; -// -// const signIn = () => { -// const is_Login = localStorage.getItem('isLogin'); -// setIsLogin(is_Login); -// }; -// -// const signOut = () => { -// localStorage.removeItem('isLogin'); -// setIsLogin(false); -// }; -// -// const openFilters = () => { -// setIsopenFilters(!isOpenFilters); -// }; -// -// const value = { -// cartItems, -// isLogin, -// windowWidth, -// isOpenFilters, -// addToCart, -// removeItemsFromCart, -// emptyCart, -// signOut, -// signIn, -// openFilters, -// isopenNavigation, -// setIsopenNavigation, -// cartCount, -// setCartCount, -// wishlistCount, -// setWishlistCount, -// fetchCartProducts, -// fetchWishlistProducts -// }; -// -// return data && data.productData ? ( -// -// -// {isLoading === true && ( -//

        -// -//
        -// )} -// -//
        -// -// } -// /> -// } /> -// } -// /> -// } -// /> -// } /> -// } -// /> -// } /> -// } /> -// } /> -// -// {/* sign in , signup Protection */} -// {isLogin === null && ( -// } /> -// )} -// {isLogin === null && ( -// <<<<<<< HEAD -// } -// /> -// ======= -// } /> -// >>>>>>> upstream/dev -// )} -// {isLogin === null && ( -// } /> -// )} -// -// } -// /> -// } /> -// } /> -// -//
        -// -// -// ) : ( -//
        -// -//
        -// ); -// } -// -// export default App; -// -// export { MyContext }; -======= ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 - import 'bootstrap/dist/css/bootstrap.min.css'; import { getDatabase, onValue, ref } from 'firebase/database'; import React, { createContext, useEffect, useState } from 'react'; @@ -351,10 +18,6 @@ import ResetPassword from './pages/ResetPassword'; import Cart from './pages/cart'; import Wishlist from './pages/wishList'; import './responsive.css'; -<<<<<<< HEAD -======= - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 // import data from './data'; import { collection, doc, getDocs } from 'firebase/firestore'; @@ -602,21 +265,11 @@ function App() { } /> )} {isLogin === null && ( -<<<<<<< HEAD -======= - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 } /> -<<<<<<< HEAD -======= - - - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 )} {isLogin === null && ( } /> diff --git a/src/pages/SignIn/index.js b/src/pages/SignIn/index.js index 93c98c9..ae33150 100644 --- a/src/pages/SignIn/index.js +++ b/src/pages/SignIn/index.js @@ -1,316 +1,3 @@ -// import React, { useState, useContext } from 'react'; -// import { Link, useNavigate } from 'react-router-dom'; -// import './style.css'; -// import Box from '@mui/material/Box'; -// import TextField from '@mui/material/TextField'; -// import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined'; -// import VisibilityOffOutlinedIcon from '@mui/icons-material/VisibilityOffOutlined'; -// import { Button, Snackbar, Typography } from '@mui/material'; -// import { -// getAuth, -// signInWithEmailAndPassword, -// GoogleAuthProvider, -// signInWithPopup, -// sendPasswordResetEmail -// } from 'firebase/auth'; -// import { app } from '../../firebase'; -// import Backdrop from '@mui/material/Backdrop'; -// import CircularProgress from '@mui/material/CircularProgress'; -// import { MyContext } from '../../App'; -// import GoogleImg from '../../assets/images/google.png'; -// import useLoggedInUserEmail from '../../Hooks/useLoggedInUserEmail'; -// import { useDispatch } from 'react-redux'; -// import { logIn } from '../../Redux/auth-slice'; -// const auth = getAuth(app); -// const googleProvider = new GoogleAuthProvider(); -// -// const SignIn = () => { -// const [showPassword, setShowPassword] = useState(false); -// const [mssg, setmssg] = useState(); -// const [showLoader, setShowLoader] = useState(false); -// const [formFields, setFormFields] = useState({ -// email: '', -// password: '' -// }); -// const [error, setError] = useState(''); -// const context = useContext(MyContext); -// const history = useNavigate(); -// const [snackbarOpen, setSnackbarOpen] = useState(false); -// const [loggedInUserEmail, setLoggedInUseEmail] = useLoggedInUserEmail(); //get_email hook -// const [isDisabled, setIsDisabled] = useState(true); -// -// const [inputErrors, setInputErrors] = useState({ -// email: '', -// password: '' -// }); -// -// const checkInputs = (email, password) => { -// if (email.trim() !== '' && password.trim() !== '') { -// setIsDisabled(false); -// } else { -// setIsDisabled(true); -// } -// }; -// -// const dispatch = useDispatch(); -// -// function replaceSpecialCharacters(inputString) { -// // Use a regular expression to replace special characters with underscore _ -// const replacedString = inputString.replace(/[#$\[\].]/g, '_'); -// -// return replacedString; -// } -// -// // Email validation function -// const validateEmail = (email) => { -// return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); -// }; -// -// // Password validation function -// const validatePassword = (password) => { -// return password.length != 0; -// }; -// -// const onChangeField = (e) => { -// const name = e.target.name; -// const value = e.target.value; -// -// let errors = { ...inputErrors }; -// -// // Validate email -// if (name === 'email') { -// errors.email = !validateEmail(value) ? 'Invalid email address' : ''; -// } -// -// // Validate password -// if (name === 'password') { -// errors.password = !validatePassword(value) ? 'Password is required' : ''; -// } -// -// setInputErrors(errors); -// setFormFields((prevFormFields) => ({ -// ...prevFormFields, -// [name]: value -// })); -// checkInputs(formFields.email, formFields.password, value); -// }; -// -// const signIn = () => { -// setShowLoader(true); -// signInWithEmailAndPassword(auth, formFields.email, formFields.password) -// .then((userCredential) => { -// const user = userCredential.user; -// setShowLoader(false); -// setFormFields({ -// email: '', -// password: '' -// }); -// localStorage.setItem('isLogin', true); -// const udata = replaceSpecialCharacters(user.email); -// localStorage.setItem('user', udata); -// context.signIn(); -// dispatch(logIn({ email: user.email })); -// setLoggedInUseEmail(user.email); -// localStorage.setItem('uid', userCredential.user.uid); -// localStorage.setItem('userImage', ''); -// //console.log(loggedInUserEmail); -// history('/'); -// }) -// .catch((error) => { -// setShowLoader(false); -// setError(error.message); -// }); -// }; -// -// const signInWithGoogle = () => { -// //console.log('hi sign in'); -// setShowLoader(true); -// signInWithPopup(auth, googleProvider) -// .then((result) => { -// setShowLoader(false); -// localStorage.setItem('isLogin', true); -// const udata = replaceSpecialCharacters(result.user.email); -// localStorage.setItem('user', udata); -// <<<<<<< HEAD -// localStorage.setItem('uname', result.user.displayName); -// localStorage.setItem('uemail', result.user.email); -// ======= -// >>>>>>> upstream/dev -// localStorage.setItem('uid', result.user.uid); -// context.signIn(); -// setLoggedInUseEmail(udata); -// localStorage.setItem('userImage', result.user.photoURL); -// //console.log(loggedInUserEmail); -// history('/'); -// }) -// .catch((error) => { -// setShowLoader(false); -// setError(error.message); -// }); -// }; -// -// const forgotPassword = async () => { -// <<<<<<< HEAD -// history('/resetpassword'); -// ======= -// history("/resetpassword") -// >>>>>>> upstream/dev -// }; -// const handleCloseSnackbar = () => { -// setSnackbarOpen(false); -// }; -// -// return ( -// <> -//
        -//
        -//
        -//
          -//
        • -// Home -//
        • -//
        • Sign In
        • -//
        -//
        -//
        -// -//
        -//
        -// theme.zIndex.drawer + 1 }} -// open={showLoader} -// className="formLoader" -// > -// -// -// -//

        Sign In

        -//
        -//
        -// -// {inputErrors.email && ( -// -// {inputErrors.email} -// -// )} -//
        -//
        -//
        -// -// -// {inputErrors.password && ( -// -// {inputErrors.password} -// -// )} -//
        -//
        -// -// {error && ( -//
        -// Invalid Email or Password -//
        -// )} -// -//
        -// <<<<<<< HEAD -// -//
        -// ======= -// -//
        -// >>>>>>> upstream/dev -// -//
        -// -//
        -// -//
        -//

        OR

        -// -//
        -// -// <<<<<<< HEAD -// ======= -// -// -// >>>>>>> upstream/dev -//

        -// Don't have an account?{' '} -// -// Sign Up -// -//

        -// -//
        -//
      -// -// -// -// ); -// }; -// -// export default SignIn; - import React, { useState, useContext } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import './style.css'; @@ -444,14 +131,6 @@ const SignIn = () => { localStorage.setItem('isLogin', true); const udata = replaceSpecialCharacters(result.user.email); localStorage.setItem('user', udata); -<<<<<<< HEAD -======= - - localStorage.setItem('uname', result.user.displayName); - localStorage.setItem('uemail', result.user.email); - - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 localStorage.setItem('uid', result.user.uid); context.signIn(); setLoggedInUseEmail(udata); @@ -466,15 +145,7 @@ const SignIn = () => { }; const forgotPassword = async () => { -<<<<<<< HEAD - history('/resetpassword'); -======= - history('/resetpassword'); - - - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 }; const handleCloseSnackbar = () => { setSnackbarOpen(false); @@ -568,26 +239,13 @@ const SignIn = () => { )}
      -<<<<<<< HEAD
    -<<<<<<< HEAD -======= - - - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251
    -<<<<<<< HEAD -======= - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251

    Don't have an account?{' '} diff --git a/yarn.lock b/yarn.lock index 79f417d..c34a78c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2969,11 +2969,6 @@ resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== -"@types/uuid@8.3.4": - version "8.3.4" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - "@types/warning@^3.0.0": version "3.0.3" resolved "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz" @@ -3354,11 +3349,6 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: dependencies: type-fest "^0.21.3" -ansi-escapes@^6.2.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz" - integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== - ansi-html-community@^0.0.8: version "0.0.8" resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" @@ -3400,16 +3390,6 @@ ansi-styles@^5.0.0: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -ansi-styles@^6.0.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -ansi-styles@^6.2.1: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - any-promise@^1.0.0: version "1.3.0" resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" @@ -4009,31 +3989,6 @@ chalk@^3.0.0: supports-color "^7.1.0" chalk@^4.0.0: -<<<<<<< HEAD -<<<<<<< HEAD -======= -======= ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.2: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.1.0: - -<<<<<<< HEAD -chalk@^4.1.2: ->>>>>>> upstream/dev version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4050,8 +4005,6 @@ chalk@^4.0.2: supports-color "^7.1.0" chalk@^4.1.0: -======= ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4067,11 +4020,6 @@ chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" - integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== - char-regex@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" @@ -4129,21 +4077,6 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" -cli-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" - integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== - dependencies: - restore-cursor "^4.0.0" - -cli-truncate@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz" - integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== - dependencies: - slice-ansi "^5.0.0" - string-width "^7.0.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" @@ -4220,7 +4153,7 @@ colord@^2.9.1: resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^2.0.10, colorette@^2.0.20: +colorette@^2.0.10: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -4252,11 +4185,6 @@ commander@^8.3.0: resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz" - integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== - common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" @@ -4689,17 +4617,7 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -<<<<<<< HEAD -<<<<<<< HEAD -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4, debug@4.3.4: -======= debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4: ->>>>>>> upstream/dev -======= - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4, debug@4.3.4: - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 version "4.3.4" resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5020,11 +4938,6 @@ emittery@^0.8.1: resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== -emoji-regex@^10.3.0: - version "10.3.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz" - integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -5559,11 +5472,6 @@ eventemitter3@^4.0.0: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -eventemitter3@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - events@^3.2.0: version "3.3.0" resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" @@ -5584,21 +5492,6 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execa@8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" - integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" - strip-final-newline "^3.0.0" - exit@^0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" @@ -5778,7 +5671,6 @@ find-up@^3.0.0: locate-path "^3.0.0" find-up@^4.0.0: - version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -5981,11 +5873,6 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-east-asian-width@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz" - integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== - get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" @@ -6012,11 +5899,6 @@ get-stream@^6.0.0: resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-stream@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz" - integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== - get-symbol-description@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz" @@ -6361,28 +6243,6 @@ human-signals@^2.1.0: resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -<<<<<<< HEAD -<<<<<<< HEAD -======= - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 -human-signals@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz" - integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== - -husky@^9.0.11: - version "9.0.11" - resolved "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz" - integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== - -<<<<<<< HEAD -======= ->>>>>>> upstream/dev -======= - - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" @@ -6602,18 +6462,6 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-fullwidth-code-point@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz" - integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== - -is-fullwidth-code-point@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz" - integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== - dependencies: - get-east-asian-width "^1.0.0" - is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" @@ -6715,11 +6563,6 @@ is-stream@^2.0.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" @@ -7618,44 +7461,11 @@ lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0: resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== -lilconfig@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz" - integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== - lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lint-staged@^15.2.2: - version "15.2.2" - resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.2.tgz" - integrity sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw== - dependencies: - chalk "5.3.0" - commander "11.1.0" - debug "4.3.4" - execa "8.0.1" - lilconfig "3.0.0" - listr2 "8.0.1" - micromatch "4.0.5" - pidtree "0.6.0" - string-argv "0.3.2" - yaml "2.3.4" - -listr2@8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/listr2/-/listr2-8.0.1.tgz" - integrity sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA== - dependencies: - cli-truncate "^4.0.0" - colorette "^2.0.20" - eventemitter3 "^5.0.1" - log-update "^6.0.0" - rfdc "^1.3.0" - wrap-ansi "^9.0.0" - loader-runner@^4.2.0: version "4.3.0" resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" @@ -7737,17 +7547,6 @@ lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-update@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz" - integrity sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw== - dependencies: - ansi-escapes "^6.2.0" - cli-cursor "^4.0.0" - slice-ansi "^7.0.0" - strip-ansi "^7.1.0" - wrap-ansi "^9.0.0" - long@^5.0.0: version "5.2.3" resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" @@ -7856,7 +7655,7 @@ methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@4.0.5: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -7886,11 +7685,6 @@ mimic-fn@^2.1.0: resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - min-indent@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" @@ -7967,14 +7761,9 @@ mz@^2.7.0: thenify-all "^1.0.0" nanoid@^3.3.6: - version "3.3.7" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -nanoid@^5.0.7: - version "5.0.7" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz" - integrity sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ== + version "3.3.6" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== natural-compare-lite@^1.4.0: version "1.4.0" @@ -8041,13 +7830,6 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - nth-check@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" @@ -8185,20 +7967,13 @@ once@^1.3.0: dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" @@ -8350,11 +8125,6 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - path-parse@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" @@ -8390,11 +8160,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pidtree@0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz" - integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== - pify@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" @@ -9239,11 +9004,6 @@ react-error-overlay@^6.0.11: resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -react-hook-form@^7.51.4: - version "7.51.4" - resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.4.tgz" - integrity sha512-V14i8SEkh+V1gs6YtD0hdHYnoL4tp/HX/A45wWQN15CYr9bFRmmRdYStSO5L65lCCZRF+kYiSKhm9alqbcdiVA== - react-image-zoom@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/react-image-zoom/-/react-image-zoom-1.3.1.tgz" @@ -9409,17 +9169,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -<<<<<<< HEAD -<<<<<<< HEAD -"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x", "react@^16.8.0 || ^17 || ^18", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.0 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=0.14.0, react@>=15.0.0, react@>=16.14.0, react@>=16.3, react@>=16.6.0, react@>=16.8, react@>=16.8.0: -======= "react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.0 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=0.14.0, react@>=15.0.0, react@>=16.14.0, react@>=16.3, react@>=16.6.0, react@>=16.8, react@>=16.8.0: ->>>>>>> upstream/dev -======= - -"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^15.x.x || ^16.x.x || ^17.x.x || ^18.x.x", "react@^16.8.0 || ^17 || ^18", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.0 || ^17.0.0-rc.1 || ^18.0.0", "react@^16.9.0 || ^17.0.0 || ^18", "react@^17.0.0 || ^18.0.0", react@^18.0, react@^18.0.0, react@^18.2.0, "react@>= 16", "react@>= 16.8.0", react@>=0.14.0, react@>=15.0.0, react@>=16.14.0, react@>=16.3, react@>=16.6.0, react@>=16.8, react@>=16.8.0: - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 version "18.2.0" resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== @@ -9660,14 +9410,6 @@ resolve@^2.0.0-next.5: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -restore-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" - integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - retry@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" @@ -9678,11 +9420,6 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.3.0: - version "1.3.1" - resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz" - integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== - rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" @@ -9989,11 +9726,6 @@ signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" @@ -10009,22 +9741,6 @@ slash@^4.0.0: resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -slice-ansi@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz" - integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== - dependencies: - ansi-styles "^6.0.0" - is-fullwidth-code-point "^4.0.0" - -slice-ansi@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz" - integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== - dependencies: - ansi-styles "^6.2.1" - is-fullwidth-code-point "^5.0.0" - sockjs@^0.3.24: version "0.3.24" resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" @@ -10179,18 +9895,6 @@ string_decoder@^1.1.1, string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -<<<<<<< HEAD -<<<<<<< HEAD -string-argv@0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" - integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== - -======= ->>>>>>> upstream/dev -======= - ->>>>>>> 3a8a5522ed5850f7a4393702a5e984fc72e28251 string-convert@^0.2.0: version "0.2.1" resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" @@ -10226,15 +9930,6 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^7.0.0: - version "7.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz" - integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== - dependencies: - emoji-regex "^10.3.0" - get-east-asian-width "^1.0.0" - strip-ansi "^7.1.0" - string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6: version "4.0.10" resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz" @@ -10301,13 +9996,6 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-ansi@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" @@ -10328,11 +10016,6 @@ strip-final-newline@^2.0.0: resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" @@ -10931,19 +10614,11 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^8.3.2, uuid@8.3.2: +uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuidv4@^6.2.13: - version "6.2.13" - resolved "https://registry.npmjs.org/uuidv4/-/uuidv4-6.2.13.tgz" - integrity sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ== - dependencies: - "@types/uuid" "8.3.4" - uuid "8.3.2" - v8-to-istanbul@^8.1.0: version "8.1.1" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" @@ -11423,15 +11098,6 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" - integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== - dependencies: - ansi-styles "^6.2.1" - string-width "^7.0.0" - strip-ansi "^7.1.0" - wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" @@ -11492,11 +11158,6 @@ yaml@^2.1.1: resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== -yaml@2.3.4: - version "2.3.4" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== - yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" @@ -11536,4 +11197,4 @@ yargs@^17.7.2: yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== \ No newline at end of file