├── .babelrc ├── .eslintrc.json ├── .gitignore ├── README.md ├── components ├── AllProducts.jsx ├── EventsBanner.jsx ├── FeaturesBanner.jsx ├── Footer.jsx ├── HeroBanner.jsx ├── Layout.jsx ├── Navbar.jsx ├── Newsletter.jsx ├── Product.jsx └── index.js ├── context ├── StateContext.js └── StateContext2.js ├── lib ├── client.js ├── getStripe.js └── utils.js ├── next.config.js ├── package-lock.json ├── package.json ├── pages ├── _app.js ├── _document.js ├── api │ └── stripe.js ├── cart.js ├── female.js ├── index.js ├── kids.js ├── male.js ├── product │ └── [slug].js ├── products.js └── successPay.js ├── public ├── favicon.ico ├── next.svg ├── thirteen.svg └── vercel.svg ├── sanity-ecommerce-clothing ├── .eslintrc ├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── sanity.cli.js ├── sanity.config.js ├── schemas │ ├── banner.js │ ├── index.js │ └── product.js └── static │ └── .gitkeep ├── src └── assets │ ├── Back.png │ ├── Featured1.png │ ├── Featured2.png │ ├── Featured3.png │ ├── Featured4.png │ ├── Logo.png │ ├── Next.png │ ├── event1.png │ ├── event2.png │ ├── event3.png │ ├── feature.png │ ├── header-section.png │ ├── header.png │ ├── middle-section.png │ ├── payment.png │ ├── products.png │ └── success-pay.png └── styles └── globals.css /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["next/babel"] 3 | } -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/babel", "next/core-web-vitals"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env 30 | 31 | # vercel 32 | .vercel 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Full Stack E-Commerce Clothing Website 2 | This project is a full stack e-commerce website built with Next js. I created this project as an exercise to develop my web development skills, especially to learn about Next js. 3 | 4 | ## Table of contents 5 | 6 | - [Overview](#overview) 7 | - [The challenge](#the-challenge) 8 | - [Screenshot](#screenshot) 9 | - [Links](#links) 10 | - [Credit](#credit) 11 | - [My process](#my-process) 12 | - [Built with](#built-with) 13 | - [What I learned](#what-i-learned) 14 | - [Continued development](#continued-development) 15 | - [Useful resources](#useful-resources) 16 | - [Author](#author) 17 | - [Acknowledgments](#acknowledgments) 18 | - [Getting Started](#getting-started) 19 | 20 | 21 | ## Overview 22 | 23 | ### The challenge 24 | 25 | - Build out the project to the designs provided 26 | - Implementing cart functionality 27 | - Connecting to Sanity as back end database for e-commerce 28 | - Connecting Stripe APIs to power online payment processing for e-commerce 29 | 30 | ### Screenshot 31 | ![Design overview for Dine Market e-commerce](./src/assets/header-section.png) 32 | For now the search bar is only for styling purposes and doesn't work properly yet 33 | 34 | ### Links 35 | The live site is deployed in vercel, but it seems that vercel can't render swiper js. In the meantime i'm still trying to find a solution 36 | - [Live Site URL](https://full-stack-ecommerce-clothing-web.vercel.app/) 37 | 38 | ### Credit 39 | [Figma Web Design & UI kit i used for this project is design by Weird Design Studio](https://ui8.net/ui-market/products/e-commerce-ui-website-design?status=7) 40 | 41 | ## My process 42 | 43 | ### Built with 44 | 45 | - Semantic HTML5 markup 46 | - CSS custom properties 47 | - Flexbox 48 | - CSS Grid 49 | - [Next JS](https://nextjs.org/) - React Framework for Production 50 | - [Sanity](https://www.sanity.io/) - Sanity is a customizable solution that treats content as data to power digital business. 51 | - [Stripe](https://stripe.com/en-gb-us) - APIs to power online payment processing for e-commerce 52 | - [react-hot-toast](https://react-hot-toast.com/) - react library that adds beautiful notifications to our react application. 53 | - [react icons](https://react-icons.github.io/react-icons/) - JS library to add icons 54 | - [swiper js](https://swiperjs.com/) - JS library to add slider component 55 | - [canvas-confetti](https://www.npmjs.com/package/canvas-confetti) - Lightweight JS plugin to create a confetti celebration explosion effect. It draws confetti graphics on the HTML canvas element. 56 | 57 | ### What I learned 58 | 59 | I learned how to connect stripe as payment gate for e-commerce. Full code for connecting to stripe in /pages/api/stripe.js 60 | ![payment with stripe](./src/assets/payment.png) 61 | 62 | The confetti effect is implemented on the payment success page after the user successfully checkouts their cart 63 | ![payment success](./src/assets/success-pay.png) 64 | 65 | ### Continued development 66 | The development of this project can be continued by adding a search filter functionality, an e-commerce newsletter, activate the slider function for product section in homepage. In the near future, I'm going to explore react js search filters and maybe add that functionality myself. 67 | 68 | ### Useful resources 69 | - [UI/UX Design Resources](https://ui8.net/) - This website provide many UI/UX design, some are even free. 70 | - [Tutorial Modern Full Stack ECommerce React Application with Stripe by JavaScript Mastery](https://www.youtube.com/watch?v=4mOkFXyxfsU&t=10459s) - This youtube tutorial really helps in understanding Next js and the use of sanity and stripe for e-commerce 71 | - [Swiper React Components](https://swiperjs.com/react#styles) 72 | - [Customize Prev/Next Button of Swiper Arrows](https://www.timo-ernst.net/blog/2020/09/12/arrows-in-react-swiper-js-how-to-customize-prev-next-button/) 73 | 74 | 75 | ## Link 76 | 77 | - Github - (https://github.com/followDev/eCommerce-Fullstack.git) 78 | 79 | 80 | ## Acknowledgments 81 | 82 | A HUGE Thanks to Javascript Mastery youtube channel which really helps me in learning about web development. I recommend this channel to everyone who wants to learn about web development and javascript 83 | 84 | 85 | ## Getting Started 86 | 87 | To run the development server: 88 | 89 | ```bash 90 | npm run dev 91 | ``` 92 | -------------------------------------------------------------------------------- /components/AllProducts.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Link from 'next/link' 3 | import { urlFor } from '../lib/client' 4 | 5 | const Allproducts = ({allproducts: {image, name, slug, tags, price}}) => { 6 | return ( 7 |
8 | 9 |
10 | 11 |

{name}

12 |

{tags}

13 |

${price}

14 |
15 | 16 |
17 | ) 18 | } 19 | 20 | export default Allproducts -------------------------------------------------------------------------------- /components/EventsBanner.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Image from 'next/image' 3 | import event1 from '../src/assets/event1.png' 4 | import event2 from '../src/assets/event2.png' 5 | import event3 from '../src/assets/event3.png' 6 | 7 | const EventsBanner = () => { 8 | return ( 9 |
10 |
11 | PROMOTIONS 12 |

Our Promotions Events

13 |
14 | 15 |
16 |
17 |
18 |
19 |

GET UP TO 60%

20 |

For the summer season

21 |
22 | event 23 |
24 | 25 |
26 |

GET 30% Off

27 |

USE PROMO CODE

28 | 29 |
30 |
31 | 32 |
33 |
34 |
35 |

Flex Sweatshirt

36 |
37 | $100.00 38 | $75.00 39 |
40 |
41 | event 42 |
43 | 44 |
45 |
46 |

Flex Push Button Bomber

47 |
48 | $225.00 49 | $190.00 50 |
51 |
52 | event 53 |
54 |
55 |
56 | 57 |
58 | ) 59 | } 60 | 61 | export default EventsBanner -------------------------------------------------------------------------------- /components/FeaturesBanner.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Image from 'next/image' 3 | import img from '../src/assets/feature.png' 4 | import Link from 'next/link' 5 | 6 | const FeaturesBanner = () => { 7 | return ( 8 |
9 |
10 |

Unique and Authentic Vintage Designer Jewellery

11 |
12 | 13 |
14 |
15 |
16 | Different from others 17 |
18 |
19 |

Using Good Quality Materials

20 |

Lorem ipsum dolor sit amt, consectetur adipiscing elit.

21 |
22 |
23 |

100% Handmade Products

24 |

Lorem ipsum dolor sit amt, consectetur adipiscing elit.

25 |
26 |
27 |

Modern Fashion Design

28 |

Lorem ipsum dolor sit amt, consectetur adipiscing elit.

29 |
30 |
31 |

Discount for Bulk Orders

32 |

Lorem ipsum dolor sit amt, consectetur adipiscing elit.

33 |
34 |
35 | 36 |
37 | img 38 |
39 |

This piece is ethically crafted in our small family-owned workshop in Peru with unmatched attention to detail and care. The Natural color is the actual natural color of the fiber, undyed and 100% traceable.

40 | 41 | 42 | 43 |
44 |
45 |
46 |
47 | ) 48 | } 49 | 50 | export default FeaturesBanner -------------------------------------------------------------------------------- /components/Footer.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Image from 'next/image' 3 | import logo from '../src/assets/Logo.png' 4 | import {GrFacebookOption, GrTwitter, GrLinkedinOption} from 'react-icons/gr' 5 | 6 | const Footer = () => { 7 | return ( 8 | 55 | ) 56 | } 57 | 58 | export default Footer -------------------------------------------------------------------------------- /components/HeroBanner.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Image from 'next/image' 3 | import {CgShoppingCart} from 'react-icons/cg' 4 | import headerImg from '../src/assets/header.png' 5 | import featured1 from '../src/assets/Featured1.png'; 6 | import featured2 from '../src/assets/Featured2.png'; 7 | import featured3 from '../src/assets/Featured3.png'; 8 | import featured4 from '../src/assets/Featured4.png'; 9 | import Link from 'next/link'; 10 | 11 | const HeroBanner = () => { 12 | return ( 13 |
14 |
15 |
16 | Sale 70% 17 |

An Industrial Take on Streetwear

18 |

Anyone can beat you but no one can beat your outfit as long as you wear Dine outfits.

19 | 20 | 21 | 22 |
23 | 24 |
25 | img 26 | img 27 | img 28 | img 29 |
30 |
31 | 32 |
33 |
34 | header image 35 |
36 |
37 |
38 | ) 39 | } 40 | 41 | export default HeroBanner -------------------------------------------------------------------------------- /components/Layout.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Head from 'next/head' 3 | import { Footer, Navbar } from '../components' 4 | 5 | const Layout = ({children}) => { 6 | return ( 7 |
8 | 9 | Dine Market 10 | 11 |
12 | 13 |
14 |
15 | {children} 16 |
17 |
21 | ) 22 | } 23 | 24 | export default Layout -------------------------------------------------------------------------------- /components/Navbar.jsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react' 2 | import Image from 'next/image' 3 | import {CiSearch} from 'react-icons/ci' 4 | import {CgShoppingCart} from 'react-icons/cg' 5 | import logo from '../src/assets/Logo.png' 6 | import Link from 'next/link' 7 | import {RiMenu3Line, RiCloseLine } from 'react-icons/ri'; 8 | import { useStateContext } from '../context/StateContext'; 9 | 10 | const Navbar = ({Searchproducts}) => { 11 | const {showCart, setShowCart, totalQty} = useStateContext(); 12 | const [toggleMenu, setToggleMenu] = useState(false); 13 | // const [searchTerm, setSearchTerm] = useState('') 14 | 15 | return ( 16 | 75 | ) 76 | } 77 | 78 | export default Navbar -------------------------------------------------------------------------------- /components/Newsletter.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const Newsletter = () => { 4 | const handleSubmit = (event) => { 5 | event.preventDefault(); 6 | }; 7 | 8 | return ( 9 |
10 |
11 | Newsletter 12 |
13 |

Subscribe Our Newsletter

14 |

Get the latest information and promo offers directly

15 |
16 | 17 | 18 |
19 |
20 | ) 21 | } 22 | 23 | export default Newsletter -------------------------------------------------------------------------------- /components/Product.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Link from 'next/link' 3 | import { urlFor } from '../lib/client' 4 | 5 | const Product = ({product: {image, name, slug, price}}) => { 6 | return ( 7 |
8 | 9 |
10 | 11 |

{name}

12 |

${price}

13 |
14 | 15 |
16 | ) 17 | } 18 | 19 | export default Product -------------------------------------------------------------------------------- /components/index.js: -------------------------------------------------------------------------------- 1 | export { default as Navbar } from './Navbar'; 2 | export { default as HeroBanner } from './HeroBanner'; 3 | export { default as EventsBanner } from './EventsBanner'; 4 | export { default as Product } from './Product'; 5 | export { default as AllProducts } from './AllProducts'; 6 | export { default as FeaturesBanner } from './FeaturesBanner'; 7 | export { default as Newsletter } from './Newsletter'; 8 | export { default as Footer } from './Footer'; 9 | export { default as Layout } from './Layout'; -------------------------------------------------------------------------------- /context/StateContext.js: -------------------------------------------------------------------------------- 1 | import React, { createContext, useContext, useState, useEffect } from 'react'; 2 | import { toast } from 'react-hot-toast'; 3 | 4 | const Context = createContext(); 5 | 6 | export const StateContext = ({ children }) => { 7 | const [showCart, setShowCart] = useState(false); 8 | const [cartItems, setCartItems] = useState([]); 9 | const [totalPrice, setTotalPrice] = useState(0); 10 | const [totalQty, setTotalQty] = useState(0); 11 | const [qty, setQty] = useState(1); 12 | 13 | let foundProduct; 14 | let index; 15 | 16 | const onAdd = (product, quantity) => { 17 | const checkProductInCart = cartItems.find((item) => item._id === product._id); 18 | 19 | setTotalPrice((prevTotalPrice) => prevTotalPrice + product.price * quantity); 20 | setTotalQty((prevTotalQty) => prevTotalQty + quantity); 21 | 22 | if(checkProductInCart) { 23 | const updatedCartItems = cartItems.map((cartProduct) => { 24 | if(cartProduct._id === product._id) return { 25 | ...cartProduct, 26 | quantity: cartProduct.quantity + quantity 27 | } 28 | }) 29 | 30 | setCartItems(updatedCartItems); 31 | } else { 32 | product.quantity = quantity; 33 | 34 | setCartItems([...cartItems, { ...product }]); 35 | } 36 | 37 | toast.success(`${qty} ${product.name} added to the cart.`); 38 | } 39 | 40 | const onRemove = (product) => { 41 | foundProduct = cartItems.find((item) => item._id === product._id); 42 | const newCartItems = cartItems.filter((item) => item._id !== product._id); 43 | 44 | setTotalPrice((prevTotalPrice) => prevTotalPrice -foundProduct.price * foundProduct.quantity); 45 | setTotalQty(prevTotalQty => prevTotalQty - foundProduct.quantity); 46 | setCartItems(newCartItems); 47 | } 48 | 49 | const toggleCartItemQuantity = (id, value) => { 50 | foundProduct = cartItems.find((item) => item._id === id) 51 | index = cartItems.findIndex((product) => product._id === id); 52 | const newCartItems = cartItems.filter((item) => item._id !== id) 53 | 54 | if(value === 'inc') { 55 | setCartItems([...newCartItems, { ...foundProduct, quantity: foundProduct.quantity + 1 } ]); 56 | setTotalPrice((prevTotalPrice) => prevTotalPrice + foundProduct.price) 57 | setTotalQty(prevTotalQty => prevTotalQty + 1) 58 | } else if(value === 'dec') { 59 | if (foundProduct.quantity > 1) { 60 | setCartItems([...newCartItems, { ...foundProduct, quantity: foundProduct.quantity - 1 } ]); 61 | setTotalPrice((prevTotalPrice) => prevTotalPrice - foundProduct.price) 62 | setTotalQty(prevTotalQty => prevTotalQty - 1) 63 | } 64 | } 65 | } 66 | 67 | const incQty = () => { 68 | setQty((prevQty) => prevQty + 1); 69 | } 70 | 71 | const decQty = () => { 72 | setQty((prevQty) => { 73 | if(prevQty - 1 < 1) return 1; 74 | 75 | return prevQty - 1; 76 | }); 77 | } 78 | 79 | return ( 80 | 98 | {children} 99 | 100 | ) 101 | } 102 | 103 | export const useStateContext = () => useContext(Context); -------------------------------------------------------------------------------- /context/StateContext2.js: -------------------------------------------------------------------------------- 1 | import React, {useState, useEffect, useContext, createContext} from "react"; 2 | import { toast } from "react-hot-toast"; 3 | 4 | const Context = createContext(); 5 | 6 | export const StateContext = ({children}) => { 7 | const [showCart, setShowCart] = useState(false); 8 | const [cartItems, setCartItems] = useState([]); 9 | const [totalPrice, setTotalPrice] = useState(); 10 | const [totalQty, setTotalQty] = useState(0); 11 | const [qty, setQty] = useState(1); 12 | 13 | let foundProduct; 14 | let index; 15 | 16 | const onAdd = (product, quantity) => { 17 | // check if product already in the cart 18 | const checkProductInCart = cartItems.find((item) => item._id === product._id); 19 | 20 | setTotalPrice((prevTotalPrice) => prevTotalPrice + product.price * quantity); 21 | setTotalQty((prevTotalQty) => prevTotalQty + quantity); 22 | 23 | // if product already in cart, then increase the qty of product instead of add the same product in cart 24 | if(checkProductInCart) { 25 | // update the actual item in the cart 26 | const updatedCartItems = cartItems.map((cartProduct) => { 27 | if(cartProduct._id === product._id) return { 28 | ...cartProduct, 29 | quantity: cartProduct.quantity + quantity 30 | } 31 | }) 32 | 33 | setCartItems(updatedCartItems); 34 | } else { 35 | // if when dont have the item in the cart 36 | product.quantity = quantity; 37 | setCartItems([...cartItems, {...product}]); 38 | } 39 | toast.success(`${qty} ${product.name} added to the cart`); 40 | } 41 | 42 | const onRemove = (product) => { 43 | foundProduct = cartItems.find((item) => item._id === product._id) 44 | const AddNewCartItems = cartItems.filter(item => item._id !== product._id); 45 | 46 | setTotalPrice(prevTotalPrice => prevTotalPrice - foundProduct.price * foundProduct.quantity) 47 | setTotalQty(prevTotalQty => prevTotalQty - foundProduct.quantity); 48 | setCartItems(AddNewCartItems); 49 | } 50 | 51 | const toggleCartItemQuantity = (id, value) => { 52 | foundProduct = cartItems.find((item) => item._id === id) 53 | index = cartItems.findIndex((product) => product._id === id) 54 | const AddNewCartItems = cartItems.filter(item => item._id !== id); 55 | 56 | if(value === 'inc') { 57 | let newCartItems = [...AddNewCartItems, {...foundProduct, quantity: foundProduct.quantity + 1}] 58 | setCartItems(newCartItems); 59 | setTotalPrice(prevTotalPrice => prevTotalPrice + foundProduct.price) 60 | setTotalQty(prevTotalQty => prevTotalQty + 1) 61 | } else if(value === 'dec') { 62 | if(foundProduct.quantity > 1) { 63 | let newCartItems = [...AddNewCartItems, {...foundProduct, quantity: foundProduct.quantity - 1}] 64 | setCartItems(newCartItems); 65 | setTotalPrice(prevTotalPrice => prevTotalPrice - foundProduct.price) 66 | setTotalQty(prevTotalQty => prevTotalQty - 1) 67 | } 68 | } 69 | } 70 | 71 | const incQty = () => { 72 | setQty((prevQty) => prevQty + 1); 73 | } 74 | 75 | const decQty = () => { 76 | setQty((prevQty) => { 77 | if(prevQty - 1 < 1) return 1; 78 | return prevQty - 1 79 | }); 80 | } 81 | 82 | return ( 83 | 98 | {children} 99 | 100 | ) 101 | } 102 | 103 | export const useStateContext = () => useContext(Context); -------------------------------------------------------------------------------- /lib/client.js: -------------------------------------------------------------------------------- 1 | // for sanity client 2 | import sanityClient from "@sanity/client"; 3 | import ImageUrlBuilder from "@sanity/image-url"; 4 | 5 | export const client = sanityClient({ 6 | projectId: 'dow10h3v', 7 | dataset: 'production', 8 | apiVersion: '2022-12-26', 9 | useCdn: true, 10 | token: process.env.NEXT_PUBLIC_SANITY_TOKEN 11 | }) 12 | 13 | const builder = ImageUrlBuilder(client); 14 | 15 | export const urlFor = (source) => builder.image(source); -------------------------------------------------------------------------------- /lib/getStripe.js: -------------------------------------------------------------------------------- 1 | import { loadStripe } from "@stripe/stripe-js"; 2 | 3 | let stripePromise; 4 | 5 | const getStripe = () => { 6 | if(!stripePromise) { 7 | stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_KEY); 8 | } 9 | 10 | return stripePromise; 11 | } 12 | 13 | export default getStripe; -------------------------------------------------------------------------------- /lib/utils.js: -------------------------------------------------------------------------------- 1 | import confetti from "canvas-confetti"; 2 | 3 | export const runConfetti = () => { 4 | var count = 200; 5 | var defaults = { 6 | origin: { y: 0.7 } 7 | }; 8 | 9 | function fire(particleRatio, opts) { 10 | confetti(Object.assign({}, defaults, opts, { 11 | particleCount: Math.floor(count * particleRatio) 12 | })); 13 | } 14 | 15 | fire(0.25, { 16 | spread: 26, 17 | startVelocity: 55, 18 | }); 19 | fire(0.2, { 20 | spread: 60, 21 | }); 22 | fire(0.35, { 23 | spread: 100, 24 | decay: 0.91, 25 | scalar: 0.8 26 | }); 27 | fire(0.1, { 28 | spread: 120, 29 | startVelocity: 25, 30 | decay: 0.92, 31 | scalar: 1.2 32 | }); 33 | fire(0.1, { 34 | spread: 120, 35 | startVelocity: 45, 36 | }); 37 | } -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | } 5 | 6 | module.exports = nextConfig 7 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ecommerce-clothing", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/helper-annotate-as-pure": { 8 | "version": "7.18.6", 9 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 10 | "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/types": "^7.18.6" 14 | } 15 | }, 16 | "@babel/helper-module-imports": { 17 | "version": "7.18.6", 18 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 19 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 20 | "dev": true, 21 | "requires": { 22 | "@babel/types": "^7.18.6" 23 | } 24 | }, 25 | "@babel/helper-plugin-utils": { 26 | "version": "7.20.2", 27 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", 28 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", 29 | "dev": true 30 | }, 31 | "@babel/helper-string-parser": { 32 | "version": "7.19.4", 33 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 34 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 35 | "dev": true 36 | }, 37 | "@babel/helper-validator-identifier": { 38 | "version": "7.19.1", 39 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 40 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 41 | "dev": true 42 | }, 43 | "@babel/helper-validator-option": { 44 | "version": "7.18.6", 45 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 46 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 47 | "dev": true 48 | }, 49 | "@babel/plugin-syntax-jsx": { 50 | "version": "7.18.6", 51 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 52 | "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 53 | "dev": true, 54 | "requires": { 55 | "@babel/helper-plugin-utils": "^7.18.6" 56 | } 57 | }, 58 | "@babel/plugin-transform-react-display-name": { 59 | "version": "7.18.6", 60 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", 61 | "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", 62 | "dev": true, 63 | "requires": { 64 | "@babel/helper-plugin-utils": "^7.18.6" 65 | } 66 | }, 67 | "@babel/plugin-transform-react-jsx": { 68 | "version": "7.20.7", 69 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.7.tgz", 70 | "integrity": "sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==", 71 | "dev": true, 72 | "requires": { 73 | "@babel/helper-annotate-as-pure": "^7.18.6", 74 | "@babel/helper-module-imports": "^7.18.6", 75 | "@babel/helper-plugin-utils": "^7.20.2", 76 | "@babel/plugin-syntax-jsx": "^7.18.6", 77 | "@babel/types": "^7.20.7" 78 | } 79 | }, 80 | "@babel/plugin-transform-react-jsx-development": { 81 | "version": "7.18.6", 82 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 83 | "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 84 | "dev": true, 85 | "requires": { 86 | "@babel/plugin-transform-react-jsx": "^7.18.6" 87 | } 88 | }, 89 | "@babel/plugin-transform-react-pure-annotations": { 90 | "version": "7.18.6", 91 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", 92 | "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", 93 | "dev": true, 94 | "requires": { 95 | "@babel/helper-annotate-as-pure": "^7.18.6", 96 | "@babel/helper-plugin-utils": "^7.18.6" 97 | } 98 | }, 99 | "@babel/preset-react": { 100 | "version": "7.18.6", 101 | "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", 102 | "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", 103 | "dev": true, 104 | "requires": { 105 | "@babel/helper-plugin-utils": "^7.18.6", 106 | "@babel/helper-validator-option": "^7.18.6", 107 | "@babel/plugin-transform-react-display-name": "^7.18.6", 108 | "@babel/plugin-transform-react-jsx": "^7.18.6", 109 | "@babel/plugin-transform-react-jsx-development": "^7.18.6", 110 | "@babel/plugin-transform-react-pure-annotations": "^7.18.6" 111 | } 112 | }, 113 | "@babel/runtime": { 114 | "version": "7.20.7", 115 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz", 116 | "integrity": "sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==", 117 | "requires": { 118 | "regenerator-runtime": "^0.13.11" 119 | } 120 | }, 121 | "@babel/runtime-corejs3": { 122 | "version": "7.20.7", 123 | "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.7.tgz", 124 | "integrity": "sha512-jr9lCZ4RbRQmCR28Q8U8Fu49zvFqLxTY9AMOUz+iyMohMoAgpEcVxY+wJNay99oXOpOcCTODkk70NDN2aaJEeg==", 125 | "requires": { 126 | "core-js-pure": "^3.25.1", 127 | "regenerator-runtime": "^0.13.11" 128 | } 129 | }, 130 | "@babel/types": { 131 | "version": "7.20.7", 132 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", 133 | "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", 134 | "dev": true, 135 | "requires": { 136 | "@babel/helper-string-parser": "^7.19.4", 137 | "@babel/helper-validator-identifier": "^7.19.1", 138 | "to-fast-properties": "^2.0.0" 139 | } 140 | }, 141 | "@emotion/hash": { 142 | "version": "0.8.0", 143 | "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", 144 | "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" 145 | }, 146 | "@eslint/eslintrc": { 147 | "version": "1.4.0", 148 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", 149 | "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", 150 | "requires": { 151 | "ajv": "^6.12.4", 152 | "debug": "^4.3.2", 153 | "espree": "^9.4.0", 154 | "globals": "^13.19.0", 155 | "ignore": "^5.2.0", 156 | "import-fresh": "^3.2.1", 157 | "js-yaml": "^4.1.0", 158 | "minimatch": "^3.1.2", 159 | "strip-json-comments": "^3.1.1" 160 | } 161 | }, 162 | "@humanwhocodes/config-array": { 163 | "version": "0.11.8", 164 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", 165 | "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", 166 | "requires": { 167 | "@humanwhocodes/object-schema": "^1.2.1", 168 | "debug": "^4.1.1", 169 | "minimatch": "^3.0.5" 170 | } 171 | }, 172 | "@humanwhocodes/module-importer": { 173 | "version": "1.0.1", 174 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 175 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" 176 | }, 177 | "@humanwhocodes/object-schema": { 178 | "version": "1.2.1", 179 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 180 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" 181 | }, 182 | "@material-ui/core": { 183 | "version": "4.12.4", 184 | "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", 185 | "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", 186 | "requires": { 187 | "@babel/runtime": "^7.4.4", 188 | "@material-ui/styles": "^4.11.5", 189 | "@material-ui/system": "^4.12.2", 190 | "@material-ui/types": "5.1.0", 191 | "@material-ui/utils": "^4.11.3", 192 | "@types/react-transition-group": "^4.2.0", 193 | "clsx": "^1.0.4", 194 | "hoist-non-react-statics": "^3.3.2", 195 | "popper.js": "1.16.1-lts", 196 | "prop-types": "^15.7.2", 197 | "react-is": "^16.8.0 || ^17.0.0", 198 | "react-transition-group": "^4.4.0" 199 | } 200 | }, 201 | "@material-ui/styles": { 202 | "version": "4.11.5", 203 | "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", 204 | "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", 205 | "requires": { 206 | "@babel/runtime": "^7.4.4", 207 | "@emotion/hash": "^0.8.0", 208 | "@material-ui/types": "5.1.0", 209 | "@material-ui/utils": "^4.11.3", 210 | "clsx": "^1.0.4", 211 | "csstype": "^2.5.2", 212 | "hoist-non-react-statics": "^3.3.2", 213 | "jss": "^10.5.1", 214 | "jss-plugin-camel-case": "^10.5.1", 215 | "jss-plugin-default-unit": "^10.5.1", 216 | "jss-plugin-global": "^10.5.1", 217 | "jss-plugin-nested": "^10.5.1", 218 | "jss-plugin-props-sort": "^10.5.1", 219 | "jss-plugin-rule-value-function": "^10.5.1", 220 | "jss-plugin-vendor-prefixer": "^10.5.1", 221 | "prop-types": "^15.7.2" 222 | } 223 | }, 224 | "@material-ui/system": { 225 | "version": "4.12.2", 226 | "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", 227 | "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", 228 | "requires": { 229 | "@babel/runtime": "^7.4.4", 230 | "@material-ui/utils": "^4.11.3", 231 | "csstype": "^2.5.2", 232 | "prop-types": "^15.7.2" 233 | } 234 | }, 235 | "@material-ui/types": { 236 | "version": "5.1.0", 237 | "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", 238 | "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" 239 | }, 240 | "@material-ui/utils": { 241 | "version": "4.11.3", 242 | "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", 243 | "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", 244 | "requires": { 245 | "@babel/runtime": "^7.4.4", 246 | "prop-types": "^15.7.2", 247 | "react-is": "^16.8.0 || ^17.0.0" 248 | } 249 | }, 250 | "@next/env": { 251 | "version": "13.1.0", 252 | "resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.0.tgz", 253 | "integrity": "sha512-6iNixFzCndH+Bl4FetQzOMjxCJqg8fs0LAlZviig1K6mIjOWH2m2oPcHcOg1Ta5VCe7Bx5KG1Hs+NrWDUkBt9A==" 254 | }, 255 | "@next/eslint-plugin-next": { 256 | "version": "13.1.0", 257 | "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.0.tgz", 258 | "integrity": "sha512-LGh0iqcEwxs0HmEK96cXXuhofcOGSUGl8Zms279JW8Zq/6GJkXo87gtRpfJrwD+a77nEIdRaORPM91Us3xW0Qw==", 259 | "requires": { 260 | "glob": "7.1.7" 261 | }, 262 | "dependencies": { 263 | "glob": { 264 | "version": "7.1.7", 265 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 266 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 267 | "requires": { 268 | "fs.realpath": "^1.0.0", 269 | "inflight": "^1.0.4", 270 | "inherits": "2", 271 | "minimatch": "^3.0.4", 272 | "once": "^1.3.0", 273 | "path-is-absolute": "^1.0.0" 274 | } 275 | } 276 | } 277 | }, 278 | "@next/font": { 279 | "version": "13.1.0", 280 | "resolved": "https://registry.npmjs.org/@next/font/-/font-13.1.0.tgz", 281 | "integrity": "sha512-9+c2eWoeLftcGAul1fiXD8lL4o4/0beQrz2/0h0B0VV5AWrqCCfj/204quUxdp541ab+NCWVX/m49qjbqFMaFA==" 282 | }, 283 | "@next/swc-android-arm-eabi": { 284 | "version": "13.1.0", 285 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.0.tgz", 286 | "integrity": "sha512-ANBZZRjZBV+Sii11ZVxbxSvfIi6dZwu4w+XnJBDmz+0/wtAigpjYWyMkuWZ/RCD7INdusOlU4EgJ99WzWGIDjA==", 287 | "optional": true 288 | }, 289 | "@next/swc-android-arm64": { 290 | "version": "13.1.0", 291 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.1.0.tgz", 292 | "integrity": "sha512-nPwbkS3aZjCIe61wztgjXjIeylijOP8uGtDGjjJVUF3B/5GLVx3ngZu6tjPTMEgaLM0u//HuGK+aZolWUQWE4g==", 293 | "optional": true 294 | }, 295 | "@next/swc-darwin-arm64": { 296 | "version": "13.1.0", 297 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.0.tgz", 298 | "integrity": "sha512-0hUydiAW18jK2uGPnZRdnRQtdB/3ZoPo84A6zH7MJHxAWw9lzVsv3kMg9kgVBBlrivzqdNN8rdgA+eYNxzXU9w==", 299 | "optional": true 300 | }, 301 | "@next/swc-darwin-x64": { 302 | "version": "13.1.0", 303 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.0.tgz", 304 | "integrity": "sha512-3S3iQqJIysklj0Q9gnanuYMzF8H9p+fUVhvSHxVVLcKH4HsE8EGddNkXsaOyznL1kC6vGKw7h6uz1ojaXEafCA==", 305 | "optional": true 306 | }, 307 | "@next/swc-freebsd-x64": { 308 | "version": "13.1.0", 309 | "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.0.tgz", 310 | "integrity": "sha512-wAgzwm/em48GIuWq3OYr0BpncMy7c+UA3hsyX+xKh/vb/sOIpQly7JTa+GNdk17s7kprhMfsgzPG3da36NLpkA==", 311 | "optional": true 312 | }, 313 | "@next/swc-linux-arm-gnueabihf": { 314 | "version": "13.1.0", 315 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.0.tgz", 316 | "integrity": "sha512-Cr2hzL7ad+4nj9KrR1Cz1RDcsWa61X6I7gc6PToRYIY4gL480Sijq19xo7dlXQPnr1viVzbNiNnNXZASHv7uvw==", 317 | "optional": true 318 | }, 319 | "@next/swc-linux-arm64-gnu": { 320 | "version": "13.1.0", 321 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.0.tgz", 322 | "integrity": "sha512-EjCIKfeZB9h72evL2yGNwBvE5Im96Zn7o2zxImlvCiUYb/xXDqn4hzhck035BSP3g3sGDLfijFTE1wKRyXIk4w==", 323 | "optional": true 324 | }, 325 | "@next/swc-linux-arm64-musl": { 326 | "version": "13.1.0", 327 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.0.tgz", 328 | "integrity": "sha512-WAsZtCtPXlz/7/bnW9ryw856xEun+c6xSwZwbcvrMxtcSiW3z0LD91Nsj3AkexsjRtBjeEpNeVtDExqF2VKKSA==", 329 | "optional": true 330 | }, 331 | "@next/swc-linux-x64-gnu": { 332 | "version": "13.1.0", 333 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.0.tgz", 334 | "integrity": "sha512-Tjd5gieI3X9vPce5yF+GsQxOl0jwUkyOrTR1g5PQr+bT/9Qos/yPL48H1L5ayEp0hxgLVPW7skGal7lVnAoVEQ==", 335 | "optional": true 336 | }, 337 | "@next/swc-linux-x64-musl": { 338 | "version": "13.1.0", 339 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.0.tgz", 340 | "integrity": "sha512-H9UMEQv40e9pkgdX4mCms0dDf2dimmZ6WXhDTWF/yIh9icgcsHaP73BJ9IFlgvh80wLiUgWZ3LAX4vXnXzidmg==", 341 | "optional": true 342 | }, 343 | "@next/swc-win32-arm64-msvc": { 344 | "version": "13.1.0", 345 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.0.tgz", 346 | "integrity": "sha512-LFFIKjW/cPl4wvG8HF/6oYPJZ+Jy32G3FUflC8UW1Od6W9yOSEvadhk9fMyDZN4cgsNOcVc3uVSMpcuuCpbDGw==", 347 | "optional": true 348 | }, 349 | "@next/swc-win32-ia32-msvc": { 350 | "version": "13.1.0", 351 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.0.tgz", 352 | "integrity": "sha512-MBLaoHZSenMdxhB3Ww1VNEhjyPT3uLjzAi5Ygk48LLLbOGu5KxQolhINRrqGuJWqJRNWSJ9JSFBfJrZwQzrUew==", 353 | "optional": true 354 | }, 355 | "@next/swc-win32-x64-msvc": { 356 | "version": "13.1.0", 357 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.0.tgz", 358 | "integrity": "sha512-fFTfIQvnmpbKoyh4v3ezlGqtERlgc2Sx8qJwPuYqoVi0V08wCx9wp2Iq1CINxP3UMHkEeNX7gYpDOd+9Cw9EiQ==", 359 | "optional": true 360 | }, 361 | "@nodelib/fs.scandir": { 362 | "version": "2.1.5", 363 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 364 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 365 | "requires": { 366 | "@nodelib/fs.stat": "2.0.5", 367 | "run-parallel": "^1.1.9" 368 | } 369 | }, 370 | "@nodelib/fs.stat": { 371 | "version": "2.0.5", 372 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 373 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" 374 | }, 375 | "@nodelib/fs.walk": { 376 | "version": "1.2.8", 377 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 378 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 379 | "requires": { 380 | "@nodelib/fs.scandir": "2.1.5", 381 | "fastq": "^1.6.0" 382 | } 383 | }, 384 | "@pkgr/utils": { 385 | "version": "2.3.1", 386 | "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", 387 | "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", 388 | "requires": { 389 | "cross-spawn": "^7.0.3", 390 | "is-glob": "^4.0.3", 391 | "open": "^8.4.0", 392 | "picocolors": "^1.0.0", 393 | "tiny-glob": "^0.2.9", 394 | "tslib": "^2.4.0" 395 | }, 396 | "dependencies": { 397 | "tslib": { 398 | "version": "2.4.1", 399 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", 400 | "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" 401 | } 402 | } 403 | }, 404 | "@rushstack/eslint-patch": { 405 | "version": "1.2.0", 406 | "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", 407 | "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" 408 | }, 409 | "@sanity/client": { 410 | "version": "3.4.1", 411 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-3.4.1.tgz", 412 | "integrity": "sha512-WSvnroCHqboUeyY0nl71vDPKmfurXI0mtqdNDb5u8MW00CAHRyCt1+Sgy39D/g+6R35FYniV31vTSTo3ofim0A==", 413 | "requires": { 414 | "@sanity/eventsource": "^4.0.0", 415 | "get-it": "^6.1.1", 416 | "make-error": "^1.3.0", 417 | "object-assign": "^4.1.1", 418 | "rxjs": "^6.0.0" 419 | } 420 | }, 421 | "@sanity/eventsource": { 422 | "version": "4.0.0", 423 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-4.0.0.tgz", 424 | "integrity": "sha512-W0AD141JILOySJ177j2+HTr5k4tWNyXjGsr0dDXJzpqlwZ09J/uPHI73hMe5XtoFumPa9Bj6jy8uu2qdZX84NQ==", 425 | "requires": { 426 | "event-source-polyfill": "1.0.25", 427 | "eventsource": "^2.0.2" 428 | } 429 | }, 430 | "@sanity/image-url": { 431 | "version": "1.0.1", 432 | "resolved": "https://registry.npmjs.org/@sanity/image-url/-/image-url-1.0.1.tgz", 433 | "integrity": "sha512-AdKQ3zMk7WdoNwoJPrAvQhW+kUtBldBX0nHtnGy+rwmgsCQ0rAXasrgH43Fhmsp/yB6piiq+F2d5qEuBFsdQVg==" 434 | }, 435 | "@sanity/timed-out": { 436 | "version": "4.0.2", 437 | "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz", 438 | "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w==" 439 | }, 440 | "@stripe/stripe-js": { 441 | "version": "1.46.0", 442 | "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.46.0.tgz", 443 | "integrity": "sha512-dkm0zCEoRLu5rTnsIgwDf/QG2DKcalOT2dk1IVgMySOHWTChLyOvQwMYhEduGgLvyYWTwNhAUV4WOLPQvjwLwA==" 444 | }, 445 | "@swc/helpers": { 446 | "version": "0.4.14", 447 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", 448 | "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", 449 | "requires": { 450 | "tslib": "^2.4.0" 451 | }, 452 | "dependencies": { 453 | "tslib": { 454 | "version": "2.4.1", 455 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", 456 | "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" 457 | } 458 | } 459 | }, 460 | "@types/json5": { 461 | "version": "0.0.29", 462 | "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", 463 | "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" 464 | }, 465 | "@types/node": { 466 | "version": "18.11.17", 467 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz", 468 | "integrity": "sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==" 469 | }, 470 | "@types/prop-types": { 471 | "version": "15.7.5", 472 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 473 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" 474 | }, 475 | "@types/react": { 476 | "version": "18.0.26", 477 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", 478 | "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", 479 | "requires": { 480 | "@types/prop-types": "*", 481 | "@types/scheduler": "*", 482 | "csstype": "^3.0.2" 483 | }, 484 | "dependencies": { 485 | "csstype": { 486 | "version": "3.1.1", 487 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 488 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" 489 | } 490 | } 491 | }, 492 | "@types/react-transition-group": { 493 | "version": "4.4.5", 494 | "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", 495 | "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", 496 | "requires": { 497 | "@types/react": "*" 498 | } 499 | }, 500 | "@types/scheduler": { 501 | "version": "0.16.2", 502 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 503 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" 504 | }, 505 | "@typescript-eslint/parser": { 506 | "version": "5.47.0", 507 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.0.tgz", 508 | "integrity": "sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==", 509 | "requires": { 510 | "@typescript-eslint/scope-manager": "5.47.0", 511 | "@typescript-eslint/types": "5.47.0", 512 | "@typescript-eslint/typescript-estree": "5.47.0", 513 | "debug": "^4.3.4" 514 | } 515 | }, 516 | "@typescript-eslint/scope-manager": { 517 | "version": "5.47.0", 518 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz", 519 | "integrity": "sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==", 520 | "requires": { 521 | "@typescript-eslint/types": "5.47.0", 522 | "@typescript-eslint/visitor-keys": "5.47.0" 523 | } 524 | }, 525 | "@typescript-eslint/types": { 526 | "version": "5.47.0", 527 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.0.tgz", 528 | "integrity": "sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==" 529 | }, 530 | "@typescript-eslint/typescript-estree": { 531 | "version": "5.47.0", 532 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz", 533 | "integrity": "sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==", 534 | "requires": { 535 | "@typescript-eslint/types": "5.47.0", 536 | "@typescript-eslint/visitor-keys": "5.47.0", 537 | "debug": "^4.3.4", 538 | "globby": "^11.1.0", 539 | "is-glob": "^4.0.3", 540 | "semver": "^7.3.7", 541 | "tsutils": "^3.21.0" 542 | } 543 | }, 544 | "@typescript-eslint/visitor-keys": { 545 | "version": "5.47.0", 546 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz", 547 | "integrity": "sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==", 548 | "requires": { 549 | "@typescript-eslint/types": "5.47.0", 550 | "eslint-visitor-keys": "^3.3.0" 551 | } 552 | }, 553 | "acorn": { 554 | "version": "8.8.1", 555 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", 556 | "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" 557 | }, 558 | "acorn-jsx": { 559 | "version": "5.3.2", 560 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 561 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" 562 | }, 563 | "ajv": { 564 | "version": "6.12.6", 565 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 566 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 567 | "requires": { 568 | "fast-deep-equal": "^3.1.1", 569 | "fast-json-stable-stringify": "^2.0.0", 570 | "json-schema-traverse": "^0.4.1", 571 | "uri-js": "^4.2.2" 572 | } 573 | }, 574 | "ansi-regex": { 575 | "version": "5.0.1", 576 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 577 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 578 | }, 579 | "ansi-styles": { 580 | "version": "4.3.0", 581 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 582 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 583 | "requires": { 584 | "color-convert": "^2.0.1" 585 | } 586 | }, 587 | "argparse": { 588 | "version": "2.0.1", 589 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 590 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" 591 | }, 592 | "aria-query": { 593 | "version": "4.2.2", 594 | "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", 595 | "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", 596 | "requires": { 597 | "@babel/runtime": "^7.10.2", 598 | "@babel/runtime-corejs3": "^7.10.2" 599 | } 600 | }, 601 | "array-includes": { 602 | "version": "3.1.6", 603 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", 604 | "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", 605 | "requires": { 606 | "call-bind": "^1.0.2", 607 | "define-properties": "^1.1.4", 608 | "es-abstract": "^1.20.4", 609 | "get-intrinsic": "^1.1.3", 610 | "is-string": "^1.0.7" 611 | } 612 | }, 613 | "array-union": { 614 | "version": "2.1.0", 615 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 616 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" 617 | }, 618 | "array.prototype.flat": { 619 | "version": "1.3.1", 620 | "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", 621 | "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", 622 | "requires": { 623 | "call-bind": "^1.0.2", 624 | "define-properties": "^1.1.4", 625 | "es-abstract": "^1.20.4", 626 | "es-shim-unscopables": "^1.0.0" 627 | } 628 | }, 629 | "array.prototype.flatmap": { 630 | "version": "1.3.1", 631 | "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", 632 | "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", 633 | "requires": { 634 | "call-bind": "^1.0.2", 635 | "define-properties": "^1.1.4", 636 | "es-abstract": "^1.20.4", 637 | "es-shim-unscopables": "^1.0.0" 638 | } 639 | }, 640 | "array.prototype.tosorted": { 641 | "version": "1.1.1", 642 | "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", 643 | "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", 644 | "requires": { 645 | "call-bind": "^1.0.2", 646 | "define-properties": "^1.1.4", 647 | "es-abstract": "^1.20.4", 648 | "es-shim-unscopables": "^1.0.0", 649 | "get-intrinsic": "^1.1.3" 650 | } 651 | }, 652 | "ast-types-flow": { 653 | "version": "0.0.7", 654 | "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", 655 | "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" 656 | }, 657 | "axe-core": { 658 | "version": "4.6.1", 659 | "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.1.tgz", 660 | "integrity": "sha512-lCZN5XRuOnpG4bpMq8v0khrWtUOn+i8lZSb6wHZH56ZfbIEv6XwJV84AAueh9/zi7qPVJ/E4yz6fmsiyOmXR4w==" 661 | }, 662 | "axobject-query": { 663 | "version": "2.2.0", 664 | "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", 665 | "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" 666 | }, 667 | "balanced-match": { 668 | "version": "1.0.2", 669 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 670 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 671 | }, 672 | "brace-expansion": { 673 | "version": "1.1.11", 674 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 675 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 676 | "requires": { 677 | "balanced-match": "^1.0.0", 678 | "concat-map": "0.0.1" 679 | } 680 | }, 681 | "braces": { 682 | "version": "3.0.2", 683 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 684 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 685 | "requires": { 686 | "fill-range": "^7.0.1" 687 | } 688 | }, 689 | "call-bind": { 690 | "version": "1.0.2", 691 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 692 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 693 | "requires": { 694 | "function-bind": "^1.1.1", 695 | "get-intrinsic": "^1.0.2" 696 | } 697 | }, 698 | "callsites": { 699 | "version": "3.1.0", 700 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 701 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 702 | }, 703 | "caniuse-lite": { 704 | "version": "1.0.30001441", 705 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz", 706 | "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==" 707 | }, 708 | "canvas-confetti": { 709 | "version": "1.6.0", 710 | "resolved": "https://registry.npmjs.org/canvas-confetti/-/canvas-confetti-1.6.0.tgz", 711 | "integrity": "sha512-ej+w/m8Jzpv9Z7W7uJZer14Ke8P2ogsjg4ZMGIuq4iqUOqY2Jq8BNW42iGmNfRwREaaEfFIczLuZZiEVSYNHAA==" 712 | }, 713 | "capture-stack-trace": { 714 | "version": "1.0.2", 715 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz", 716 | "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==" 717 | }, 718 | "chalk": { 719 | "version": "4.1.2", 720 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 721 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 722 | "requires": { 723 | "ansi-styles": "^4.1.0", 724 | "supports-color": "^7.1.0" 725 | } 726 | }, 727 | "client-only": { 728 | "version": "0.0.1", 729 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 730 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" 731 | }, 732 | "clsx": { 733 | "version": "1.2.1", 734 | "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", 735 | "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" 736 | }, 737 | "color-convert": { 738 | "version": "2.0.1", 739 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 740 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 741 | "requires": { 742 | "color-name": "~1.1.4" 743 | } 744 | }, 745 | "color-name": { 746 | "version": "1.1.4", 747 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 748 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 749 | }, 750 | "concat-map": { 751 | "version": "0.0.1", 752 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 753 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 754 | }, 755 | "core-js-pure": { 756 | "version": "3.26.1", 757 | "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz", 758 | "integrity": "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==" 759 | }, 760 | "core-util-is": { 761 | "version": "1.0.3", 762 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 763 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 764 | }, 765 | "create-error-class": { 766 | "version": "3.0.2", 767 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 768 | "integrity": "sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==", 769 | "requires": { 770 | "capture-stack-trace": "^1.0.0" 771 | } 772 | }, 773 | "cross-spawn": { 774 | "version": "7.0.3", 775 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 776 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 777 | "requires": { 778 | "path-key": "^3.1.0", 779 | "shebang-command": "^2.0.0", 780 | "which": "^2.0.1" 781 | } 782 | }, 783 | "css-vendor": { 784 | "version": "2.0.8", 785 | "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", 786 | "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", 787 | "requires": { 788 | "@babel/runtime": "^7.8.3", 789 | "is-in-browser": "^1.0.2" 790 | } 791 | }, 792 | "csstype": { 793 | "version": "2.6.21", 794 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", 795 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" 796 | }, 797 | "damerau-levenshtein": { 798 | "version": "1.0.8", 799 | "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", 800 | "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" 801 | }, 802 | "debug": { 803 | "version": "4.3.4", 804 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 805 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 806 | "requires": { 807 | "ms": "2.1.2" 808 | } 809 | }, 810 | "decompress-response": { 811 | "version": "6.0.0", 812 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 813 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 814 | "requires": { 815 | "mimic-response": "^3.1.0" 816 | } 817 | }, 818 | "deep-is": { 819 | "version": "0.1.4", 820 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 821 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" 822 | }, 823 | "define-lazy-prop": { 824 | "version": "2.0.0", 825 | "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", 826 | "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" 827 | }, 828 | "define-properties": { 829 | "version": "1.1.4", 830 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 831 | "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 832 | "requires": { 833 | "has-property-descriptors": "^1.0.0", 834 | "object-keys": "^1.1.1" 835 | } 836 | }, 837 | "dir-glob": { 838 | "version": "3.0.1", 839 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 840 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 841 | "requires": { 842 | "path-type": "^4.0.0" 843 | } 844 | }, 845 | "doctrine": { 846 | "version": "3.0.0", 847 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 848 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 849 | "requires": { 850 | "esutils": "^2.0.2" 851 | } 852 | }, 853 | "dom-helpers": { 854 | "version": "5.2.1", 855 | "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", 856 | "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", 857 | "requires": { 858 | "@babel/runtime": "^7.8.7", 859 | "csstype": "^3.0.2" 860 | }, 861 | "dependencies": { 862 | "csstype": { 863 | "version": "3.1.1", 864 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 865 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" 866 | } 867 | } 868 | }, 869 | "dom7": { 870 | "version": "4.0.4", 871 | "resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.4.tgz", 872 | "integrity": "sha512-DSSgBzQ4rJWQp1u6o+3FVwMNnT5bzQbMb+o31TjYYeRi05uAcpF8koxdfzeoe5ElzPmua7W7N28YJhF7iEKqIw==", 873 | "requires": { 874 | "ssr-window": "^4.0.0" 875 | } 876 | }, 877 | "emoji-regex": { 878 | "version": "9.2.2", 879 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 880 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 881 | }, 882 | "enhanced-resolve": { 883 | "version": "5.12.0", 884 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", 885 | "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", 886 | "requires": { 887 | "graceful-fs": "^4.2.4", 888 | "tapable": "^2.2.0" 889 | } 890 | }, 891 | "es-abstract": { 892 | "version": "1.20.5", 893 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", 894 | "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", 895 | "requires": { 896 | "call-bind": "^1.0.2", 897 | "es-to-primitive": "^1.2.1", 898 | "function-bind": "^1.1.1", 899 | "function.prototype.name": "^1.1.5", 900 | "get-intrinsic": "^1.1.3", 901 | "get-symbol-description": "^1.0.0", 902 | "gopd": "^1.0.1", 903 | "has": "^1.0.3", 904 | "has-property-descriptors": "^1.0.0", 905 | "has-symbols": "^1.0.3", 906 | "internal-slot": "^1.0.3", 907 | "is-callable": "^1.2.7", 908 | "is-negative-zero": "^2.0.2", 909 | "is-regex": "^1.1.4", 910 | "is-shared-array-buffer": "^1.0.2", 911 | "is-string": "^1.0.7", 912 | "is-weakref": "^1.0.2", 913 | "object-inspect": "^1.12.2", 914 | "object-keys": "^1.1.1", 915 | "object.assign": "^4.1.4", 916 | "regexp.prototype.flags": "^1.4.3", 917 | "safe-regex-test": "^1.0.0", 918 | "string.prototype.trimend": "^1.0.6", 919 | "string.prototype.trimstart": "^1.0.6", 920 | "unbox-primitive": "^1.0.2" 921 | } 922 | }, 923 | "es-shim-unscopables": { 924 | "version": "1.0.0", 925 | "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", 926 | "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", 927 | "requires": { 928 | "has": "^1.0.3" 929 | } 930 | }, 931 | "es-to-primitive": { 932 | "version": "1.2.1", 933 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 934 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 935 | "requires": { 936 | "is-callable": "^1.1.4", 937 | "is-date-object": "^1.0.1", 938 | "is-symbol": "^1.0.2" 939 | } 940 | }, 941 | "escape-string-regexp": { 942 | "version": "4.0.0", 943 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 944 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" 945 | }, 946 | "eslint": { 947 | "version": "8.30.0", 948 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", 949 | "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", 950 | "requires": { 951 | "@eslint/eslintrc": "^1.4.0", 952 | "@humanwhocodes/config-array": "^0.11.8", 953 | "@humanwhocodes/module-importer": "^1.0.1", 954 | "@nodelib/fs.walk": "^1.2.8", 955 | "ajv": "^6.10.0", 956 | "chalk": "^4.0.0", 957 | "cross-spawn": "^7.0.2", 958 | "debug": "^4.3.2", 959 | "doctrine": "^3.0.0", 960 | "escape-string-regexp": "^4.0.0", 961 | "eslint-scope": "^7.1.1", 962 | "eslint-utils": "^3.0.0", 963 | "eslint-visitor-keys": "^3.3.0", 964 | "espree": "^9.4.0", 965 | "esquery": "^1.4.0", 966 | "esutils": "^2.0.2", 967 | "fast-deep-equal": "^3.1.3", 968 | "file-entry-cache": "^6.0.1", 969 | "find-up": "^5.0.0", 970 | "glob-parent": "^6.0.2", 971 | "globals": "^13.19.0", 972 | "grapheme-splitter": "^1.0.4", 973 | "ignore": "^5.2.0", 974 | "import-fresh": "^3.0.0", 975 | "imurmurhash": "^0.1.4", 976 | "is-glob": "^4.0.0", 977 | "is-path-inside": "^3.0.3", 978 | "js-sdsl": "^4.1.4", 979 | "js-yaml": "^4.1.0", 980 | "json-stable-stringify-without-jsonify": "^1.0.1", 981 | "levn": "^0.4.1", 982 | "lodash.merge": "^4.6.2", 983 | "minimatch": "^3.1.2", 984 | "natural-compare": "^1.4.0", 985 | "optionator": "^0.9.1", 986 | "regexpp": "^3.2.0", 987 | "strip-ansi": "^6.0.1", 988 | "strip-json-comments": "^3.1.0", 989 | "text-table": "^0.2.0" 990 | } 991 | }, 992 | "eslint-config-next": { 993 | "version": "13.1.0", 994 | "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.0.tgz", 995 | "integrity": "sha512-UdZm8GTR8PWys1dw+gJY+aLR/etkbTTsrRxiQ57nxqAE4Fw6PGZ2prLjqV6IhNkFve3c8ZgbCrUolfGad2mryA==", 996 | "requires": { 997 | "@next/eslint-plugin-next": "13.1.0", 998 | "@rushstack/eslint-patch": "^1.1.3", 999 | "@typescript-eslint/parser": "^5.42.0", 1000 | "eslint-import-resolver-node": "^0.3.6", 1001 | "eslint-import-resolver-typescript": "^3.5.2", 1002 | "eslint-plugin-import": "^2.26.0", 1003 | "eslint-plugin-jsx-a11y": "^6.5.1", 1004 | "eslint-plugin-react": "^7.31.7", 1005 | "eslint-plugin-react-hooks": "^4.5.0" 1006 | } 1007 | }, 1008 | "eslint-import-resolver-node": { 1009 | "version": "0.3.6", 1010 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", 1011 | "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", 1012 | "requires": { 1013 | "debug": "^3.2.7", 1014 | "resolve": "^1.20.0" 1015 | }, 1016 | "dependencies": { 1017 | "debug": { 1018 | "version": "3.2.7", 1019 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1020 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1021 | "requires": { 1022 | "ms": "^2.1.1" 1023 | } 1024 | } 1025 | } 1026 | }, 1027 | "eslint-import-resolver-typescript": { 1028 | "version": "3.5.2", 1029 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.2.tgz", 1030 | "integrity": "sha512-zX4ebnnyXiykjhcBvKIf5TNvt8K7yX6bllTRZ14MiurKPjDpCAZujlszTdB8pcNXhZcOf+god4s9SjQa5GnytQ==", 1031 | "requires": { 1032 | "debug": "^4.3.4", 1033 | "enhanced-resolve": "^5.10.0", 1034 | "get-tsconfig": "^4.2.0", 1035 | "globby": "^13.1.2", 1036 | "is-core-module": "^2.10.0", 1037 | "is-glob": "^4.0.3", 1038 | "synckit": "^0.8.4" 1039 | }, 1040 | "dependencies": { 1041 | "globby": { 1042 | "version": "13.1.3", 1043 | "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", 1044 | "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", 1045 | "requires": { 1046 | "dir-glob": "^3.0.1", 1047 | "fast-glob": "^3.2.11", 1048 | "ignore": "^5.2.0", 1049 | "merge2": "^1.4.1", 1050 | "slash": "^4.0.0" 1051 | } 1052 | }, 1053 | "slash": { 1054 | "version": "4.0.0", 1055 | "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", 1056 | "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" 1057 | } 1058 | } 1059 | }, 1060 | "eslint-module-utils": { 1061 | "version": "2.7.4", 1062 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", 1063 | "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", 1064 | "requires": { 1065 | "debug": "^3.2.7" 1066 | }, 1067 | "dependencies": { 1068 | "debug": { 1069 | "version": "3.2.7", 1070 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1071 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1072 | "requires": { 1073 | "ms": "^2.1.1" 1074 | } 1075 | } 1076 | } 1077 | }, 1078 | "eslint-plugin-import": { 1079 | "version": "2.26.0", 1080 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", 1081 | "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", 1082 | "requires": { 1083 | "array-includes": "^3.1.4", 1084 | "array.prototype.flat": "^1.2.5", 1085 | "debug": "^2.6.9", 1086 | "doctrine": "^2.1.0", 1087 | "eslint-import-resolver-node": "^0.3.6", 1088 | "eslint-module-utils": "^2.7.3", 1089 | "has": "^1.0.3", 1090 | "is-core-module": "^2.8.1", 1091 | "is-glob": "^4.0.3", 1092 | "minimatch": "^3.1.2", 1093 | "object.values": "^1.1.5", 1094 | "resolve": "^1.22.0", 1095 | "tsconfig-paths": "^3.14.1" 1096 | }, 1097 | "dependencies": { 1098 | "debug": { 1099 | "version": "2.6.9", 1100 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1101 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1102 | "requires": { 1103 | "ms": "2.0.0" 1104 | } 1105 | }, 1106 | "doctrine": { 1107 | "version": "2.1.0", 1108 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 1109 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 1110 | "requires": { 1111 | "esutils": "^2.0.2" 1112 | } 1113 | }, 1114 | "ms": { 1115 | "version": "2.0.0", 1116 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1117 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1118 | } 1119 | } 1120 | }, 1121 | "eslint-plugin-jsx-a11y": { 1122 | "version": "6.6.1", 1123 | "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", 1124 | "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", 1125 | "requires": { 1126 | "@babel/runtime": "^7.18.9", 1127 | "aria-query": "^4.2.2", 1128 | "array-includes": "^3.1.5", 1129 | "ast-types-flow": "^0.0.7", 1130 | "axe-core": "^4.4.3", 1131 | "axobject-query": "^2.2.0", 1132 | "damerau-levenshtein": "^1.0.8", 1133 | "emoji-regex": "^9.2.2", 1134 | "has": "^1.0.3", 1135 | "jsx-ast-utils": "^3.3.2", 1136 | "language-tags": "^1.0.5", 1137 | "minimatch": "^3.1.2", 1138 | "semver": "^6.3.0" 1139 | }, 1140 | "dependencies": { 1141 | "semver": { 1142 | "version": "6.3.0", 1143 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1144 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1145 | } 1146 | } 1147 | }, 1148 | "eslint-plugin-react": { 1149 | "version": "7.31.11", 1150 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz", 1151 | "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==", 1152 | "requires": { 1153 | "array-includes": "^3.1.6", 1154 | "array.prototype.flatmap": "^1.3.1", 1155 | "array.prototype.tosorted": "^1.1.1", 1156 | "doctrine": "^2.1.0", 1157 | "estraverse": "^5.3.0", 1158 | "jsx-ast-utils": "^2.4.1 || ^3.0.0", 1159 | "minimatch": "^3.1.2", 1160 | "object.entries": "^1.1.6", 1161 | "object.fromentries": "^2.0.6", 1162 | "object.hasown": "^1.1.2", 1163 | "object.values": "^1.1.6", 1164 | "prop-types": "^15.8.1", 1165 | "resolve": "^2.0.0-next.3", 1166 | "semver": "^6.3.0", 1167 | "string.prototype.matchall": "^4.0.8" 1168 | }, 1169 | "dependencies": { 1170 | "doctrine": { 1171 | "version": "2.1.0", 1172 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 1173 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 1174 | "requires": { 1175 | "esutils": "^2.0.2" 1176 | } 1177 | }, 1178 | "resolve": { 1179 | "version": "2.0.0-next.4", 1180 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", 1181 | "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", 1182 | "requires": { 1183 | "is-core-module": "^2.9.0", 1184 | "path-parse": "^1.0.7", 1185 | "supports-preserve-symlinks-flag": "^1.0.0" 1186 | } 1187 | }, 1188 | "semver": { 1189 | "version": "6.3.0", 1190 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1191 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1192 | } 1193 | } 1194 | }, 1195 | "eslint-plugin-react-hooks": { 1196 | "version": "4.6.0", 1197 | "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", 1198 | "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" 1199 | }, 1200 | "eslint-scope": { 1201 | "version": "7.1.1", 1202 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 1203 | "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 1204 | "requires": { 1205 | "esrecurse": "^4.3.0", 1206 | "estraverse": "^5.2.0" 1207 | } 1208 | }, 1209 | "eslint-utils": { 1210 | "version": "3.0.0", 1211 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 1212 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 1213 | "requires": { 1214 | "eslint-visitor-keys": "^2.0.0" 1215 | }, 1216 | "dependencies": { 1217 | "eslint-visitor-keys": { 1218 | "version": "2.1.0", 1219 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1220 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" 1221 | } 1222 | } 1223 | }, 1224 | "eslint-visitor-keys": { 1225 | "version": "3.3.0", 1226 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", 1227 | "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" 1228 | }, 1229 | "espree": { 1230 | "version": "9.4.1", 1231 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", 1232 | "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", 1233 | "requires": { 1234 | "acorn": "^8.8.0", 1235 | "acorn-jsx": "^5.3.2", 1236 | "eslint-visitor-keys": "^3.3.0" 1237 | } 1238 | }, 1239 | "esquery": { 1240 | "version": "1.4.0", 1241 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 1242 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 1243 | "requires": { 1244 | "estraverse": "^5.1.0" 1245 | } 1246 | }, 1247 | "esrecurse": { 1248 | "version": "4.3.0", 1249 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1250 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1251 | "requires": { 1252 | "estraverse": "^5.2.0" 1253 | } 1254 | }, 1255 | "estraverse": { 1256 | "version": "5.3.0", 1257 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1258 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" 1259 | }, 1260 | "esutils": { 1261 | "version": "2.0.3", 1262 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1263 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 1264 | }, 1265 | "event-source-polyfill": { 1266 | "version": "1.0.25", 1267 | "resolved": "https://registry.npmjs.org/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz", 1268 | "integrity": "sha512-hQxu6sN1Eq4JjoI7ITdQeGGUN193A2ra83qC0Ltm9I2UJVAten3OFVN6k5RX4YWeCS0BoC8xg/5czOCIHVosQg==" 1269 | }, 1270 | "eventsource": { 1271 | "version": "2.0.2", 1272 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", 1273 | "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" 1274 | }, 1275 | "fast-deep-equal": { 1276 | "version": "3.1.3", 1277 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1278 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1279 | }, 1280 | "fast-glob": { 1281 | "version": "3.2.12", 1282 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 1283 | "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 1284 | "requires": { 1285 | "@nodelib/fs.stat": "^2.0.2", 1286 | "@nodelib/fs.walk": "^1.2.3", 1287 | "glob-parent": "^5.1.2", 1288 | "merge2": "^1.3.0", 1289 | "micromatch": "^4.0.4" 1290 | }, 1291 | "dependencies": { 1292 | "glob-parent": { 1293 | "version": "5.1.2", 1294 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1295 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1296 | "requires": { 1297 | "is-glob": "^4.0.1" 1298 | } 1299 | } 1300 | } 1301 | }, 1302 | "fast-json-stable-stringify": { 1303 | "version": "2.1.0", 1304 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1305 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1306 | }, 1307 | "fast-levenshtein": { 1308 | "version": "2.0.6", 1309 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1310 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 1311 | }, 1312 | "fastq": { 1313 | "version": "1.14.0", 1314 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", 1315 | "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", 1316 | "requires": { 1317 | "reusify": "^1.0.4" 1318 | } 1319 | }, 1320 | "file-entry-cache": { 1321 | "version": "6.0.1", 1322 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1323 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1324 | "requires": { 1325 | "flat-cache": "^3.0.4" 1326 | } 1327 | }, 1328 | "fill-range": { 1329 | "version": "7.0.1", 1330 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1331 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1332 | "requires": { 1333 | "to-regex-range": "^5.0.1" 1334 | } 1335 | }, 1336 | "find-up": { 1337 | "version": "5.0.0", 1338 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1339 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1340 | "requires": { 1341 | "locate-path": "^6.0.0", 1342 | "path-exists": "^4.0.0" 1343 | } 1344 | }, 1345 | "flat-cache": { 1346 | "version": "3.0.4", 1347 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 1348 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 1349 | "requires": { 1350 | "flatted": "^3.1.0", 1351 | "rimraf": "^3.0.2" 1352 | } 1353 | }, 1354 | "flatted": { 1355 | "version": "3.2.7", 1356 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 1357 | "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" 1358 | }, 1359 | "follow-redirects": { 1360 | "version": "1.15.2", 1361 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1362 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 1363 | }, 1364 | "form-urlencoded": { 1365 | "version": "2.0.9", 1366 | "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz", 1367 | "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA==" 1368 | }, 1369 | "from2": { 1370 | "version": "2.3.0", 1371 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", 1372 | "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", 1373 | "requires": { 1374 | "inherits": "^2.0.1", 1375 | "readable-stream": "^2.0.0" 1376 | } 1377 | }, 1378 | "fs.realpath": { 1379 | "version": "1.0.0", 1380 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1381 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 1382 | }, 1383 | "function-bind": { 1384 | "version": "1.1.1", 1385 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1386 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1387 | }, 1388 | "function.prototype.name": { 1389 | "version": "1.1.5", 1390 | "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", 1391 | "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", 1392 | "requires": { 1393 | "call-bind": "^1.0.2", 1394 | "define-properties": "^1.1.3", 1395 | "es-abstract": "^1.19.0", 1396 | "functions-have-names": "^1.2.2" 1397 | } 1398 | }, 1399 | "functions-have-names": { 1400 | "version": "1.2.3", 1401 | "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 1402 | "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" 1403 | }, 1404 | "get-intrinsic": { 1405 | "version": "1.1.3", 1406 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 1407 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 1408 | "requires": { 1409 | "function-bind": "^1.1.1", 1410 | "has": "^1.0.3", 1411 | "has-symbols": "^1.0.3" 1412 | } 1413 | }, 1414 | "get-it": { 1415 | "version": "6.1.1", 1416 | "resolved": "https://registry.npmjs.org/get-it/-/get-it-6.1.1.tgz", 1417 | "integrity": "sha512-2835L9lb4NAgjAbFOMMOm2XDSgj+lWmmCQv40A5rE7zZoIdM2+yk7Ie+sBD3T5lHW/Dw5IFFHyx16oQGpAo4hQ==", 1418 | "requires": { 1419 | "@sanity/timed-out": "^4.0.2", 1420 | "create-error-class": "^3.0.2", 1421 | "debug": "^2.6.8", 1422 | "decompress-response": "^6.0.0", 1423 | "follow-redirects": "^1.2.4", 1424 | "form-urlencoded": "^2.0.7", 1425 | "into-stream": "^3.1.0", 1426 | "is-plain-object": "^2.0.4", 1427 | "is-retry-allowed": "^1.1.0", 1428 | "is-stream": "^1.1.0", 1429 | "nano-pubsub": "^1.0.2", 1430 | "object-assign": "^4.1.1", 1431 | "parse-headers": "^2.0.4", 1432 | "progress-stream": "^2.0.0", 1433 | "same-origin": "^0.1.1", 1434 | "simple-concat": "^1.0.1", 1435 | "tunnel-agent": "^0.6.0", 1436 | "url-parse": "^1.1.9" 1437 | }, 1438 | "dependencies": { 1439 | "debug": { 1440 | "version": "2.6.9", 1441 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1442 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1443 | "requires": { 1444 | "ms": "2.0.0" 1445 | } 1446 | }, 1447 | "ms": { 1448 | "version": "2.0.0", 1449 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1450 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1451 | } 1452 | } 1453 | }, 1454 | "get-symbol-description": { 1455 | "version": "1.0.0", 1456 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 1457 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 1458 | "requires": { 1459 | "call-bind": "^1.0.2", 1460 | "get-intrinsic": "^1.1.1" 1461 | } 1462 | }, 1463 | "get-tsconfig": { 1464 | "version": "4.2.0", 1465 | "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.2.0.tgz", 1466 | "integrity": "sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==" 1467 | }, 1468 | "glob": { 1469 | "version": "7.2.3", 1470 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1471 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1472 | "requires": { 1473 | "fs.realpath": "^1.0.0", 1474 | "inflight": "^1.0.4", 1475 | "inherits": "2", 1476 | "minimatch": "^3.1.1", 1477 | "once": "^1.3.0", 1478 | "path-is-absolute": "^1.0.0" 1479 | } 1480 | }, 1481 | "glob-parent": { 1482 | "version": "6.0.2", 1483 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1484 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1485 | "requires": { 1486 | "is-glob": "^4.0.3" 1487 | } 1488 | }, 1489 | "globals": { 1490 | "version": "13.19.0", 1491 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz", 1492 | "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==", 1493 | "requires": { 1494 | "type-fest": "^0.20.2" 1495 | } 1496 | }, 1497 | "globalyzer": { 1498 | "version": "0.1.0", 1499 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 1500 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" 1501 | }, 1502 | "globby": { 1503 | "version": "11.1.0", 1504 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1505 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1506 | "requires": { 1507 | "array-union": "^2.1.0", 1508 | "dir-glob": "^3.0.1", 1509 | "fast-glob": "^3.2.9", 1510 | "ignore": "^5.2.0", 1511 | "merge2": "^1.4.1", 1512 | "slash": "^3.0.0" 1513 | } 1514 | }, 1515 | "globrex": { 1516 | "version": "0.1.2", 1517 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 1518 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" 1519 | }, 1520 | "goober": { 1521 | "version": "2.1.11", 1522 | "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.11.tgz", 1523 | "integrity": "sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A==" 1524 | }, 1525 | "gopd": { 1526 | "version": "1.0.1", 1527 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 1528 | "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 1529 | "requires": { 1530 | "get-intrinsic": "^1.1.3" 1531 | } 1532 | }, 1533 | "graceful-fs": { 1534 | "version": "4.2.10", 1535 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 1536 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 1537 | }, 1538 | "grapheme-splitter": { 1539 | "version": "1.0.4", 1540 | "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 1541 | "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" 1542 | }, 1543 | "has": { 1544 | "version": "1.0.3", 1545 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1546 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1547 | "requires": { 1548 | "function-bind": "^1.1.1" 1549 | } 1550 | }, 1551 | "has-bigints": { 1552 | "version": "1.0.2", 1553 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 1554 | "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" 1555 | }, 1556 | "has-flag": { 1557 | "version": "4.0.0", 1558 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1559 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1560 | }, 1561 | "has-property-descriptors": { 1562 | "version": "1.0.0", 1563 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 1564 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 1565 | "requires": { 1566 | "get-intrinsic": "^1.1.1" 1567 | } 1568 | }, 1569 | "has-symbols": { 1570 | "version": "1.0.3", 1571 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1572 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1573 | }, 1574 | "has-tostringtag": { 1575 | "version": "1.0.0", 1576 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 1577 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 1578 | "requires": { 1579 | "has-symbols": "^1.0.2" 1580 | } 1581 | }, 1582 | "hoist-non-react-statics": { 1583 | "version": "3.3.2", 1584 | "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 1585 | "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 1586 | "requires": { 1587 | "react-is": "^16.7.0" 1588 | } 1589 | }, 1590 | "hyphenate-style-name": { 1591 | "version": "1.0.4", 1592 | "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", 1593 | "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" 1594 | }, 1595 | "ignore": { 1596 | "version": "5.2.4", 1597 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 1598 | "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" 1599 | }, 1600 | "import-fresh": { 1601 | "version": "3.3.0", 1602 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1603 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1604 | "requires": { 1605 | "parent-module": "^1.0.0", 1606 | "resolve-from": "^4.0.0" 1607 | } 1608 | }, 1609 | "imurmurhash": { 1610 | "version": "0.1.4", 1611 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1612 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 1613 | }, 1614 | "inflight": { 1615 | "version": "1.0.6", 1616 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1617 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1618 | "requires": { 1619 | "once": "^1.3.0", 1620 | "wrappy": "1" 1621 | } 1622 | }, 1623 | "inherits": { 1624 | "version": "2.0.4", 1625 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1626 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1627 | }, 1628 | "internal-slot": { 1629 | "version": "1.0.4", 1630 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", 1631 | "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", 1632 | "requires": { 1633 | "get-intrinsic": "^1.1.3", 1634 | "has": "^1.0.3", 1635 | "side-channel": "^1.0.4" 1636 | } 1637 | }, 1638 | "into-stream": { 1639 | "version": "3.1.0", 1640 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", 1641 | "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", 1642 | "requires": { 1643 | "from2": "^2.1.1", 1644 | "p-is-promise": "^1.1.0" 1645 | } 1646 | }, 1647 | "is-bigint": { 1648 | "version": "1.0.4", 1649 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1650 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1651 | "requires": { 1652 | "has-bigints": "^1.0.1" 1653 | } 1654 | }, 1655 | "is-boolean-object": { 1656 | "version": "1.1.2", 1657 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1658 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1659 | "requires": { 1660 | "call-bind": "^1.0.2", 1661 | "has-tostringtag": "^1.0.0" 1662 | } 1663 | }, 1664 | "is-callable": { 1665 | "version": "1.2.7", 1666 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 1667 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" 1668 | }, 1669 | "is-core-module": { 1670 | "version": "2.11.0", 1671 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1672 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1673 | "requires": { 1674 | "has": "^1.0.3" 1675 | } 1676 | }, 1677 | "is-date-object": { 1678 | "version": "1.0.5", 1679 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1680 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1681 | "requires": { 1682 | "has-tostringtag": "^1.0.0" 1683 | } 1684 | }, 1685 | "is-docker": { 1686 | "version": "2.2.1", 1687 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", 1688 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" 1689 | }, 1690 | "is-extglob": { 1691 | "version": "2.1.1", 1692 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1693 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 1694 | }, 1695 | "is-glob": { 1696 | "version": "4.0.3", 1697 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1698 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1699 | "requires": { 1700 | "is-extglob": "^2.1.1" 1701 | } 1702 | }, 1703 | "is-in-browser": { 1704 | "version": "1.1.3", 1705 | "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", 1706 | "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" 1707 | }, 1708 | "is-negative-zero": { 1709 | "version": "2.0.2", 1710 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1711 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" 1712 | }, 1713 | "is-number": { 1714 | "version": "7.0.0", 1715 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1716 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1717 | }, 1718 | "is-number-object": { 1719 | "version": "1.0.7", 1720 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 1721 | "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 1722 | "requires": { 1723 | "has-tostringtag": "^1.0.0" 1724 | } 1725 | }, 1726 | "is-path-inside": { 1727 | "version": "3.0.3", 1728 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1729 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" 1730 | }, 1731 | "is-plain-object": { 1732 | "version": "2.0.4", 1733 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1734 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1735 | "requires": { 1736 | "isobject": "^3.0.1" 1737 | } 1738 | }, 1739 | "is-regex": { 1740 | "version": "1.1.4", 1741 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1742 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1743 | "requires": { 1744 | "call-bind": "^1.0.2", 1745 | "has-tostringtag": "^1.0.0" 1746 | } 1747 | }, 1748 | "is-retry-allowed": { 1749 | "version": "1.2.0", 1750 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", 1751 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" 1752 | }, 1753 | "is-shared-array-buffer": { 1754 | "version": "1.0.2", 1755 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 1756 | "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 1757 | "requires": { 1758 | "call-bind": "^1.0.2" 1759 | } 1760 | }, 1761 | "is-stream": { 1762 | "version": "1.1.0", 1763 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1764 | "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" 1765 | }, 1766 | "is-string": { 1767 | "version": "1.0.7", 1768 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1769 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1770 | "requires": { 1771 | "has-tostringtag": "^1.0.0" 1772 | } 1773 | }, 1774 | "is-symbol": { 1775 | "version": "1.0.4", 1776 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1777 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1778 | "requires": { 1779 | "has-symbols": "^1.0.2" 1780 | } 1781 | }, 1782 | "is-weakref": { 1783 | "version": "1.0.2", 1784 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1785 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1786 | "requires": { 1787 | "call-bind": "^1.0.2" 1788 | } 1789 | }, 1790 | "is-wsl": { 1791 | "version": "2.2.0", 1792 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 1793 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 1794 | "requires": { 1795 | "is-docker": "^2.0.0" 1796 | } 1797 | }, 1798 | "isarray": { 1799 | "version": "1.0.0", 1800 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1801 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" 1802 | }, 1803 | "isexe": { 1804 | "version": "2.0.0", 1805 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1806 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 1807 | }, 1808 | "isobject": { 1809 | "version": "3.0.1", 1810 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1811 | "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" 1812 | }, 1813 | "js-sdsl": { 1814 | "version": "4.2.0", 1815 | "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", 1816 | "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==" 1817 | }, 1818 | "js-tokens": { 1819 | "version": "4.0.0", 1820 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1821 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1822 | }, 1823 | "js-yaml": { 1824 | "version": "4.1.0", 1825 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1826 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1827 | "requires": { 1828 | "argparse": "^2.0.1" 1829 | } 1830 | }, 1831 | "json-schema-traverse": { 1832 | "version": "0.4.1", 1833 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1834 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 1835 | }, 1836 | "json-stable-stringify-without-jsonify": { 1837 | "version": "1.0.1", 1838 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1839 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" 1840 | }, 1841 | "json5": { 1842 | "version": "1.0.1", 1843 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1844 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1845 | "requires": { 1846 | "minimist": "^1.2.0" 1847 | } 1848 | }, 1849 | "jss": { 1850 | "version": "10.9.2", 1851 | "resolved": "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz", 1852 | "integrity": "sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==", 1853 | "requires": { 1854 | "@babel/runtime": "^7.3.1", 1855 | "csstype": "^3.0.2", 1856 | "is-in-browser": "^1.1.3", 1857 | "tiny-warning": "^1.0.2" 1858 | }, 1859 | "dependencies": { 1860 | "csstype": { 1861 | "version": "3.1.1", 1862 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 1863 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" 1864 | } 1865 | } 1866 | }, 1867 | "jss-plugin-camel-case": { 1868 | "version": "10.9.2", 1869 | "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz", 1870 | "integrity": "sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==", 1871 | "requires": { 1872 | "@babel/runtime": "^7.3.1", 1873 | "hyphenate-style-name": "^1.0.3", 1874 | "jss": "10.9.2" 1875 | } 1876 | }, 1877 | "jss-plugin-default-unit": { 1878 | "version": "10.9.2", 1879 | "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz", 1880 | "integrity": "sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg==", 1881 | "requires": { 1882 | "@babel/runtime": "^7.3.1", 1883 | "jss": "10.9.2" 1884 | } 1885 | }, 1886 | "jss-plugin-global": { 1887 | "version": "10.9.2", 1888 | "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz", 1889 | "integrity": "sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==", 1890 | "requires": { 1891 | "@babel/runtime": "^7.3.1", 1892 | "jss": "10.9.2" 1893 | } 1894 | }, 1895 | "jss-plugin-nested": { 1896 | "version": "10.9.2", 1897 | "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz", 1898 | "integrity": "sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA==", 1899 | "requires": { 1900 | "@babel/runtime": "^7.3.1", 1901 | "jss": "10.9.2", 1902 | "tiny-warning": "^1.0.2" 1903 | } 1904 | }, 1905 | "jss-plugin-props-sort": { 1906 | "version": "10.9.2", 1907 | "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz", 1908 | "integrity": "sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw==", 1909 | "requires": { 1910 | "@babel/runtime": "^7.3.1", 1911 | "jss": "10.9.2" 1912 | } 1913 | }, 1914 | "jss-plugin-rule-value-function": { 1915 | "version": "10.9.2", 1916 | "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz", 1917 | "integrity": "sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q==", 1918 | "requires": { 1919 | "@babel/runtime": "^7.3.1", 1920 | "jss": "10.9.2", 1921 | "tiny-warning": "^1.0.2" 1922 | } 1923 | }, 1924 | "jss-plugin-vendor-prefixer": { 1925 | "version": "10.9.2", 1926 | "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz", 1927 | "integrity": "sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA==", 1928 | "requires": { 1929 | "@babel/runtime": "^7.3.1", 1930 | "css-vendor": "^2.0.8", 1931 | "jss": "10.9.2" 1932 | } 1933 | }, 1934 | "jsx-ast-utils": { 1935 | "version": "3.3.3", 1936 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", 1937 | "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", 1938 | "requires": { 1939 | "array-includes": "^3.1.5", 1940 | "object.assign": "^4.1.3" 1941 | } 1942 | }, 1943 | "language-subtag-registry": { 1944 | "version": "0.3.22", 1945 | "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", 1946 | "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" 1947 | }, 1948 | "language-tags": { 1949 | "version": "1.0.7", 1950 | "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.7.tgz", 1951 | "integrity": "sha512-bSytju1/657hFjgUzPAPqszxH62ouE8nQFoFaVlIQfne4wO/wXC9A4+m8jYve7YBBvi59eq0SUpcshvG8h5Usw==", 1952 | "requires": { 1953 | "language-subtag-registry": "^0.3.20" 1954 | } 1955 | }, 1956 | "levn": { 1957 | "version": "0.4.1", 1958 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1959 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1960 | "requires": { 1961 | "prelude-ls": "^1.2.1", 1962 | "type-check": "~0.4.0" 1963 | } 1964 | }, 1965 | "locate-path": { 1966 | "version": "6.0.0", 1967 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1968 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1969 | "requires": { 1970 | "p-locate": "^5.0.0" 1971 | } 1972 | }, 1973 | "lodash.merge": { 1974 | "version": "4.6.2", 1975 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1976 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" 1977 | }, 1978 | "loose-envify": { 1979 | "version": "1.4.0", 1980 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1981 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1982 | "requires": { 1983 | "js-tokens": "^3.0.0 || ^4.0.0" 1984 | } 1985 | }, 1986 | "lru-cache": { 1987 | "version": "6.0.0", 1988 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1989 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1990 | "requires": { 1991 | "yallist": "^4.0.0" 1992 | } 1993 | }, 1994 | "make-error": { 1995 | "version": "1.3.6", 1996 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1997 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 1998 | }, 1999 | "merge2": { 2000 | "version": "1.4.1", 2001 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2002 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 2003 | }, 2004 | "micromatch": { 2005 | "version": "4.0.5", 2006 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2007 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2008 | "requires": { 2009 | "braces": "^3.0.2", 2010 | "picomatch": "^2.3.1" 2011 | } 2012 | }, 2013 | "mimic-response": { 2014 | "version": "3.1.0", 2015 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 2016 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 2017 | }, 2018 | "minimatch": { 2019 | "version": "3.1.2", 2020 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2021 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2022 | "requires": { 2023 | "brace-expansion": "^1.1.7" 2024 | } 2025 | }, 2026 | "minimist": { 2027 | "version": "1.2.7", 2028 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", 2029 | "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" 2030 | }, 2031 | "ms": { 2032 | "version": "2.1.2", 2033 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2034 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2035 | }, 2036 | "nano-pubsub": { 2037 | "version": "1.0.2", 2038 | "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz", 2039 | "integrity": "sha512-HtPs1RbULM/z8wt3BbeeZlxVNiJbl+zQAwwrbc0KAq5NHaCG3MmffOVCpRhNTs+TK67MdN6aZ+5wzPtRZvME+w==" 2040 | }, 2041 | "nanoid": { 2042 | "version": "3.3.4", 2043 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 2044 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" 2045 | }, 2046 | "natural-compare": { 2047 | "version": "1.4.0", 2048 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2049 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" 2050 | }, 2051 | "next": { 2052 | "version": "13.1.0", 2053 | "resolved": "https://registry.npmjs.org/next/-/next-13.1.0.tgz", 2054 | "integrity": "sha512-lQMZH1V94L5IL/WaihQkTYabSY73aqgrkGPJB5uz+2O3ES4I3losV/maXLY7l7x5e+oNyE9N81upNQ8uRsR5/A==", 2055 | "requires": { 2056 | "@next/env": "13.1.0", 2057 | "@next/swc-android-arm-eabi": "13.1.0", 2058 | "@next/swc-android-arm64": "13.1.0", 2059 | "@next/swc-darwin-arm64": "13.1.0", 2060 | "@next/swc-darwin-x64": "13.1.0", 2061 | "@next/swc-freebsd-x64": "13.1.0", 2062 | "@next/swc-linux-arm-gnueabihf": "13.1.0", 2063 | "@next/swc-linux-arm64-gnu": "13.1.0", 2064 | "@next/swc-linux-arm64-musl": "13.1.0", 2065 | "@next/swc-linux-x64-gnu": "13.1.0", 2066 | "@next/swc-linux-x64-musl": "13.1.0", 2067 | "@next/swc-win32-arm64-msvc": "13.1.0", 2068 | "@next/swc-win32-ia32-msvc": "13.1.0", 2069 | "@next/swc-win32-x64-msvc": "13.1.0", 2070 | "@swc/helpers": "0.4.14", 2071 | "caniuse-lite": "^1.0.30001406", 2072 | "postcss": "8.4.14", 2073 | "styled-jsx": "5.1.1" 2074 | } 2075 | }, 2076 | "next-sanity-image": { 2077 | "version": "5.0.0", 2078 | "resolved": "https://registry.npmjs.org/next-sanity-image/-/next-sanity-image-5.0.0.tgz", 2079 | "integrity": "sha512-mVnybxCEcy3l4mi/Ob+0RhPw6W1b9RcCNfx4PyUCP67+R/Cs75o0x6UEZ2Xk7Vxg9Ms4YAaEXO7GJ5mF5zL0rQ==", 2080 | "requires": { 2081 | "@sanity/image-url": "^1.0.0" 2082 | } 2083 | }, 2084 | "object-assign": { 2085 | "version": "4.1.1", 2086 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2087 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 2088 | }, 2089 | "object-inspect": { 2090 | "version": "1.12.2", 2091 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 2092 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 2093 | }, 2094 | "object-keys": { 2095 | "version": "1.1.1", 2096 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 2097 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 2098 | }, 2099 | "object.assign": { 2100 | "version": "4.1.4", 2101 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", 2102 | "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", 2103 | "requires": { 2104 | "call-bind": "^1.0.2", 2105 | "define-properties": "^1.1.4", 2106 | "has-symbols": "^1.0.3", 2107 | "object-keys": "^1.1.1" 2108 | } 2109 | }, 2110 | "object.entries": { 2111 | "version": "1.1.6", 2112 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", 2113 | "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", 2114 | "requires": { 2115 | "call-bind": "^1.0.2", 2116 | "define-properties": "^1.1.4", 2117 | "es-abstract": "^1.20.4" 2118 | } 2119 | }, 2120 | "object.fromentries": { 2121 | "version": "2.0.6", 2122 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", 2123 | "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", 2124 | "requires": { 2125 | "call-bind": "^1.0.2", 2126 | "define-properties": "^1.1.4", 2127 | "es-abstract": "^1.20.4" 2128 | } 2129 | }, 2130 | "object.hasown": { 2131 | "version": "1.1.2", 2132 | "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", 2133 | "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", 2134 | "requires": { 2135 | "define-properties": "^1.1.4", 2136 | "es-abstract": "^1.20.4" 2137 | } 2138 | }, 2139 | "object.values": { 2140 | "version": "1.1.6", 2141 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", 2142 | "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", 2143 | "requires": { 2144 | "call-bind": "^1.0.2", 2145 | "define-properties": "^1.1.4", 2146 | "es-abstract": "^1.20.4" 2147 | } 2148 | }, 2149 | "once": { 2150 | "version": "1.4.0", 2151 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2152 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2153 | "requires": { 2154 | "wrappy": "1" 2155 | } 2156 | }, 2157 | "open": { 2158 | "version": "8.4.0", 2159 | "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", 2160 | "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", 2161 | "requires": { 2162 | "define-lazy-prop": "^2.0.0", 2163 | "is-docker": "^2.1.1", 2164 | "is-wsl": "^2.2.0" 2165 | } 2166 | }, 2167 | "optionator": { 2168 | "version": "0.9.1", 2169 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 2170 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 2171 | "requires": { 2172 | "deep-is": "^0.1.3", 2173 | "fast-levenshtein": "^2.0.6", 2174 | "levn": "^0.4.1", 2175 | "prelude-ls": "^1.2.1", 2176 | "type-check": "^0.4.0", 2177 | "word-wrap": "^1.2.3" 2178 | } 2179 | }, 2180 | "p-is-promise": { 2181 | "version": "1.1.0", 2182 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", 2183 | "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==" 2184 | }, 2185 | "p-limit": { 2186 | "version": "3.1.0", 2187 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2188 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2189 | "requires": { 2190 | "yocto-queue": "^0.1.0" 2191 | } 2192 | }, 2193 | "p-locate": { 2194 | "version": "5.0.0", 2195 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2196 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2197 | "requires": { 2198 | "p-limit": "^3.0.2" 2199 | } 2200 | }, 2201 | "parent-module": { 2202 | "version": "1.0.1", 2203 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2204 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2205 | "requires": { 2206 | "callsites": "^3.0.0" 2207 | } 2208 | }, 2209 | "parse-headers": { 2210 | "version": "2.0.5", 2211 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", 2212 | "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" 2213 | }, 2214 | "path-exists": { 2215 | "version": "4.0.0", 2216 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2217 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 2218 | }, 2219 | "path-is-absolute": { 2220 | "version": "1.0.1", 2221 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2222 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 2223 | }, 2224 | "path-key": { 2225 | "version": "3.1.1", 2226 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2227 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" 2228 | }, 2229 | "path-parse": { 2230 | "version": "1.0.7", 2231 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2232 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 2233 | }, 2234 | "path-type": { 2235 | "version": "4.0.0", 2236 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2237 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 2238 | }, 2239 | "picocolors": { 2240 | "version": "1.0.0", 2241 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2242 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 2243 | }, 2244 | "picomatch": { 2245 | "version": "2.3.1", 2246 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2247 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 2248 | }, 2249 | "popper.js": { 2250 | "version": "1.16.1-lts", 2251 | "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", 2252 | "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" 2253 | }, 2254 | "postcss": { 2255 | "version": "8.4.14", 2256 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 2257 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 2258 | "requires": { 2259 | "nanoid": "^3.3.4", 2260 | "picocolors": "^1.0.0", 2261 | "source-map-js": "^1.0.2" 2262 | } 2263 | }, 2264 | "prelude-ls": { 2265 | "version": "1.2.1", 2266 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2267 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" 2268 | }, 2269 | "process-nextick-args": { 2270 | "version": "2.0.1", 2271 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2272 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2273 | }, 2274 | "progress-stream": { 2275 | "version": "2.0.0", 2276 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz", 2277 | "integrity": "sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==", 2278 | "requires": { 2279 | "speedometer": "~1.0.0", 2280 | "through2": "~2.0.3" 2281 | } 2282 | }, 2283 | "prop-types": { 2284 | "version": "15.8.1", 2285 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 2286 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 2287 | "requires": { 2288 | "loose-envify": "^1.4.0", 2289 | "object-assign": "^4.1.1", 2290 | "react-is": "^16.13.1" 2291 | } 2292 | }, 2293 | "punycode": { 2294 | "version": "2.1.1", 2295 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2296 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2297 | }, 2298 | "qs": { 2299 | "version": "6.11.0", 2300 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 2301 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 2302 | "requires": { 2303 | "side-channel": "^1.0.4" 2304 | } 2305 | }, 2306 | "querystringify": { 2307 | "version": "2.2.0", 2308 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 2309 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 2310 | }, 2311 | "queue-microtask": { 2312 | "version": "1.2.3", 2313 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2314 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 2315 | }, 2316 | "react": { 2317 | "version": "18.2.0", 2318 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 2319 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 2320 | "requires": { 2321 | "loose-envify": "^1.1.0" 2322 | } 2323 | }, 2324 | "react-dom": { 2325 | "version": "18.2.0", 2326 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 2327 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 2328 | "requires": { 2329 | "loose-envify": "^1.1.0", 2330 | "scheduler": "^0.23.0" 2331 | } 2332 | }, 2333 | "react-hot-toast": { 2334 | "version": "2.4.0", 2335 | "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.0.tgz", 2336 | "integrity": "sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==", 2337 | "requires": { 2338 | "goober": "^2.1.10" 2339 | } 2340 | }, 2341 | "react-icons": { 2342 | "version": "4.7.1", 2343 | "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.7.1.tgz", 2344 | "integrity": "sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==" 2345 | }, 2346 | "react-is": { 2347 | "version": "16.13.1", 2348 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2349 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 2350 | }, 2351 | "react-transition-group": { 2352 | "version": "4.4.5", 2353 | "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", 2354 | "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", 2355 | "requires": { 2356 | "@babel/runtime": "^7.5.5", 2357 | "dom-helpers": "^5.0.1", 2358 | "loose-envify": "^1.4.0", 2359 | "prop-types": "^15.6.2" 2360 | } 2361 | }, 2362 | "readable-stream": { 2363 | "version": "2.3.7", 2364 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2365 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2366 | "requires": { 2367 | "core-util-is": "~1.0.0", 2368 | "inherits": "~2.0.3", 2369 | "isarray": "~1.0.0", 2370 | "process-nextick-args": "~2.0.0", 2371 | "safe-buffer": "~5.1.1", 2372 | "string_decoder": "~1.1.1", 2373 | "util-deprecate": "~1.0.1" 2374 | } 2375 | }, 2376 | "regenerator-runtime": { 2377 | "version": "0.13.11", 2378 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 2379 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 2380 | }, 2381 | "regexp.prototype.flags": { 2382 | "version": "1.4.3", 2383 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", 2384 | "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", 2385 | "requires": { 2386 | "call-bind": "^1.0.2", 2387 | "define-properties": "^1.1.3", 2388 | "functions-have-names": "^1.2.2" 2389 | } 2390 | }, 2391 | "regexpp": { 2392 | "version": "3.2.0", 2393 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2394 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" 2395 | }, 2396 | "requires-port": { 2397 | "version": "1.0.0", 2398 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2399 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 2400 | }, 2401 | "resolve": { 2402 | "version": "1.22.1", 2403 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2404 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2405 | "requires": { 2406 | "is-core-module": "^2.9.0", 2407 | "path-parse": "^1.0.7", 2408 | "supports-preserve-symlinks-flag": "^1.0.0" 2409 | } 2410 | }, 2411 | "resolve-from": { 2412 | "version": "4.0.0", 2413 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2414 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 2415 | }, 2416 | "reusify": { 2417 | "version": "1.0.4", 2418 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2419 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 2420 | }, 2421 | "rimraf": { 2422 | "version": "3.0.2", 2423 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2424 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2425 | "requires": { 2426 | "glob": "^7.1.3" 2427 | } 2428 | }, 2429 | "run-parallel": { 2430 | "version": "1.2.0", 2431 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2432 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2433 | "requires": { 2434 | "queue-microtask": "^1.2.2" 2435 | } 2436 | }, 2437 | "rxjs": { 2438 | "version": "6.6.7", 2439 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", 2440 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", 2441 | "requires": { 2442 | "tslib": "^1.9.0" 2443 | } 2444 | }, 2445 | "safe-buffer": { 2446 | "version": "5.1.2", 2447 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2448 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2449 | }, 2450 | "safe-regex-test": { 2451 | "version": "1.0.0", 2452 | "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", 2453 | "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", 2454 | "requires": { 2455 | "call-bind": "^1.0.2", 2456 | "get-intrinsic": "^1.1.3", 2457 | "is-regex": "^1.1.4" 2458 | } 2459 | }, 2460 | "same-origin": { 2461 | "version": "0.1.1", 2462 | "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz", 2463 | "integrity": "sha512-effkSW9cap879l6CVNdwL5iubVz8tkspqgfiqwgBgFQspV7152WHaLzr5590yR8oFgt7E1d4lO09uUhtAgUPoA==" 2464 | }, 2465 | "scheduler": { 2466 | "version": "0.23.0", 2467 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 2468 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 2469 | "requires": { 2470 | "loose-envify": "^1.1.0" 2471 | } 2472 | }, 2473 | "semver": { 2474 | "version": "7.3.8", 2475 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 2476 | "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 2477 | "requires": { 2478 | "lru-cache": "^6.0.0" 2479 | } 2480 | }, 2481 | "shebang-command": { 2482 | "version": "2.0.0", 2483 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2484 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2485 | "requires": { 2486 | "shebang-regex": "^3.0.0" 2487 | } 2488 | }, 2489 | "shebang-regex": { 2490 | "version": "3.0.0", 2491 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2492 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" 2493 | }, 2494 | "side-channel": { 2495 | "version": "1.0.4", 2496 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2497 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2498 | "requires": { 2499 | "call-bind": "^1.0.0", 2500 | "get-intrinsic": "^1.0.2", 2501 | "object-inspect": "^1.9.0" 2502 | } 2503 | }, 2504 | "simple-concat": { 2505 | "version": "1.0.1", 2506 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 2507 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" 2508 | }, 2509 | "slash": { 2510 | "version": "3.0.0", 2511 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2512 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" 2513 | }, 2514 | "source-map-js": { 2515 | "version": "1.0.2", 2516 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2517 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 2518 | }, 2519 | "speedometer": { 2520 | "version": "1.0.0", 2521 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", 2522 | "integrity": "sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==" 2523 | }, 2524 | "ssr-window": { 2525 | "version": "4.0.2", 2526 | "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", 2527 | "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==" 2528 | }, 2529 | "string.prototype.matchall": { 2530 | "version": "4.0.8", 2531 | "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", 2532 | "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", 2533 | "requires": { 2534 | "call-bind": "^1.0.2", 2535 | "define-properties": "^1.1.4", 2536 | "es-abstract": "^1.20.4", 2537 | "get-intrinsic": "^1.1.3", 2538 | "has-symbols": "^1.0.3", 2539 | "internal-slot": "^1.0.3", 2540 | "regexp.prototype.flags": "^1.4.3", 2541 | "side-channel": "^1.0.4" 2542 | } 2543 | }, 2544 | "string.prototype.trimend": { 2545 | "version": "1.0.6", 2546 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", 2547 | "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", 2548 | "requires": { 2549 | "call-bind": "^1.0.2", 2550 | "define-properties": "^1.1.4", 2551 | "es-abstract": "^1.20.4" 2552 | } 2553 | }, 2554 | "string.prototype.trimstart": { 2555 | "version": "1.0.6", 2556 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", 2557 | "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", 2558 | "requires": { 2559 | "call-bind": "^1.0.2", 2560 | "define-properties": "^1.1.4", 2561 | "es-abstract": "^1.20.4" 2562 | } 2563 | }, 2564 | "string_decoder": { 2565 | "version": "1.1.1", 2566 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2567 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2568 | "requires": { 2569 | "safe-buffer": "~5.1.0" 2570 | } 2571 | }, 2572 | "strip-ansi": { 2573 | "version": "6.0.1", 2574 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2575 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2576 | "requires": { 2577 | "ansi-regex": "^5.0.1" 2578 | } 2579 | }, 2580 | "strip-bom": { 2581 | "version": "3.0.0", 2582 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2583 | "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" 2584 | }, 2585 | "strip-json-comments": { 2586 | "version": "3.1.1", 2587 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2588 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" 2589 | }, 2590 | "stripe": { 2591 | "version": "11.5.0", 2592 | "resolved": "https://registry.npmjs.org/stripe/-/stripe-11.5.0.tgz", 2593 | "integrity": "sha512-yjTqnzeUk2wg1yIeYWOAH6CL5qu9fINzOhqkibXfbyeWSBEBauQrfCoB8shMmREoK2qdkScz1HjahF9qUg+X3g==", 2594 | "requires": { 2595 | "@types/node": ">=8.1.0", 2596 | "qs": "^6.11.0" 2597 | } 2598 | }, 2599 | "styled-jsx": { 2600 | "version": "5.1.1", 2601 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", 2602 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", 2603 | "requires": { 2604 | "client-only": "0.0.1" 2605 | } 2606 | }, 2607 | "supports-color": { 2608 | "version": "7.2.0", 2609 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2610 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2611 | "requires": { 2612 | "has-flag": "^4.0.0" 2613 | } 2614 | }, 2615 | "supports-preserve-symlinks-flag": { 2616 | "version": "1.0.0", 2617 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2618 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" 2619 | }, 2620 | "swiper": { 2621 | "version": "8.4.5", 2622 | "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.5.tgz", 2623 | "integrity": "sha512-zveyEFBBv4q1sVkbJHnuH4xCtarKieavJ4SxP0QEHvdpPLJRuD7j/Xg38IVVLbp7Db6qrPsLUePvxohYx39Agw==", 2624 | "requires": { 2625 | "dom7": "^4.0.4", 2626 | "ssr-window": "^4.0.2" 2627 | } 2628 | }, 2629 | "synckit": { 2630 | "version": "0.8.4", 2631 | "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", 2632 | "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", 2633 | "requires": { 2634 | "@pkgr/utils": "^2.3.1", 2635 | "tslib": "^2.4.0" 2636 | }, 2637 | "dependencies": { 2638 | "tslib": { 2639 | "version": "2.4.1", 2640 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", 2641 | "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" 2642 | } 2643 | } 2644 | }, 2645 | "tapable": { 2646 | "version": "2.2.1", 2647 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 2648 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" 2649 | }, 2650 | "text-table": { 2651 | "version": "0.2.0", 2652 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2653 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" 2654 | }, 2655 | "through2": { 2656 | "version": "2.0.5", 2657 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 2658 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 2659 | "requires": { 2660 | "readable-stream": "~2.3.6", 2661 | "xtend": "~4.0.1" 2662 | } 2663 | }, 2664 | "tiny-glob": { 2665 | "version": "0.2.9", 2666 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", 2667 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", 2668 | "requires": { 2669 | "globalyzer": "0.1.0", 2670 | "globrex": "^0.1.2" 2671 | } 2672 | }, 2673 | "tiny-warning": { 2674 | "version": "1.0.3", 2675 | "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", 2676 | "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" 2677 | }, 2678 | "to-fast-properties": { 2679 | "version": "2.0.0", 2680 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2681 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 2682 | "dev": true 2683 | }, 2684 | "to-regex-range": { 2685 | "version": "5.0.1", 2686 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2687 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2688 | "requires": { 2689 | "is-number": "^7.0.0" 2690 | } 2691 | }, 2692 | "tsconfig-paths": { 2693 | "version": "3.14.1", 2694 | "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", 2695 | "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", 2696 | "requires": { 2697 | "@types/json5": "^0.0.29", 2698 | "json5": "^1.0.1", 2699 | "minimist": "^1.2.6", 2700 | "strip-bom": "^3.0.0" 2701 | } 2702 | }, 2703 | "tslib": { 2704 | "version": "1.14.1", 2705 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 2706 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 2707 | }, 2708 | "tsutils": { 2709 | "version": "3.21.0", 2710 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 2711 | "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 2712 | "requires": { 2713 | "tslib": "^1.8.1" 2714 | } 2715 | }, 2716 | "tunnel-agent": { 2717 | "version": "0.6.0", 2718 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2719 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 2720 | "requires": { 2721 | "safe-buffer": "^5.0.1" 2722 | } 2723 | }, 2724 | "type-check": { 2725 | "version": "0.4.0", 2726 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2727 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2728 | "requires": { 2729 | "prelude-ls": "^1.2.1" 2730 | } 2731 | }, 2732 | "type-fest": { 2733 | "version": "0.20.2", 2734 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2735 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" 2736 | }, 2737 | "unbox-primitive": { 2738 | "version": "1.0.2", 2739 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 2740 | "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 2741 | "requires": { 2742 | "call-bind": "^1.0.2", 2743 | "has-bigints": "^1.0.2", 2744 | "has-symbols": "^1.0.3", 2745 | "which-boxed-primitive": "^1.0.2" 2746 | } 2747 | }, 2748 | "uri-js": { 2749 | "version": "4.4.1", 2750 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2751 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2752 | "requires": { 2753 | "punycode": "^2.1.0" 2754 | } 2755 | }, 2756 | "url-parse": { 2757 | "version": "1.5.10", 2758 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 2759 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 2760 | "requires": { 2761 | "querystringify": "^2.1.1", 2762 | "requires-port": "^1.0.0" 2763 | } 2764 | }, 2765 | "util-deprecate": { 2766 | "version": "1.0.2", 2767 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2768 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2769 | }, 2770 | "which": { 2771 | "version": "2.0.2", 2772 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2773 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2774 | "requires": { 2775 | "isexe": "^2.0.0" 2776 | } 2777 | }, 2778 | "which-boxed-primitive": { 2779 | "version": "1.0.2", 2780 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2781 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2782 | "requires": { 2783 | "is-bigint": "^1.0.1", 2784 | "is-boolean-object": "^1.1.0", 2785 | "is-number-object": "^1.0.4", 2786 | "is-string": "^1.0.5", 2787 | "is-symbol": "^1.0.3" 2788 | } 2789 | }, 2790 | "word-wrap": { 2791 | "version": "1.2.3", 2792 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 2793 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 2794 | }, 2795 | "wrappy": { 2796 | "version": "1.0.2", 2797 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2798 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2799 | }, 2800 | "xtend": { 2801 | "version": "4.0.2", 2802 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 2803 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 2804 | }, 2805 | "yallist": { 2806 | "version": "4.0.0", 2807 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2808 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2809 | }, 2810 | "yocto-queue": { 2811 | "version": "0.1.0", 2812 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2813 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" 2814 | } 2815 | } 2816 | } 2817 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ecommerce-clothing", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@material-ui/core": "^4.12.4", 13 | "@next/font": "13.1.0", 14 | "@sanity/client": "^3.4.1", 15 | "@sanity/image-url": "^1.0.1", 16 | "@stripe/stripe-js": "^1.46.0", 17 | "canvas-confetti": "^1.6.0", 18 | "eslint": "8.30.0", 19 | "eslint-config-next": "13.1.0", 20 | "next": "13.1.0", 21 | "next-sanity-image": "^5.0.0", 22 | "react": "18.2.0", 23 | "react-dom": "18.2.0", 24 | "react-hot-toast": "^2.4.0", 25 | "react-icons": "^4.7.1", 26 | "stripe": "^11.5.0", 27 | "swiper": "^8.4.5" 28 | }, 29 | "devDependencies": { 30 | "@babel/preset-react": "^7.18.6" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /pages/_app.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Toaster } from 'react-hot-toast' 3 | import '../styles/globals.css' 4 | import { Layout } from '../components' 5 | import { StateContext } from '../context/StateContext' 6 | 7 | export default function App({ Component, pageProps }) { 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /pages/_document.js: -------------------------------------------------------------------------------- 1 | import { Html, Head, Main, NextScript } from 'next/document' 2 | 3 | export default function Document() { 4 | return ( 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /pages/api/stripe.js: -------------------------------------------------------------------------------- 1 | import Stripe from 'stripe'; 2 | 3 | const stripe = new Stripe(process.env.NEXT_SECRET_STRIPE_KEY); 4 | 5 | export default async function handler(req, res) { 6 | if (req.method === 'POST') { 7 | try { 8 | // Create Checkout Sessions from body params. 9 | const params = { 10 | submit_type: 'pay', 11 | mode: 'payment', 12 | payment_method_types: ['card'], 13 | billing_address_collection: 'auto', 14 | shipping_options: [ 15 | { shipping_rate: 'shr_1MJIEoHbmXqvpyhdyi5WNQHl' }, 16 | { shipping_rate: 'shr_1MJIGgHbmXqvpyhdQCdPgK8F' } 17 | ], 18 | line_items: req.body.map((item) => { 19 | const img = item.image[0].asset._ref; 20 | const newImage = img.replace('image-', 'https://cdn.sanity.io/images/dow10h3v/production/').replace('-png', '.png'); 21 | 22 | return { 23 | price_data: { 24 | currency: 'usd', 25 | product_data: { 26 | name: item.name, 27 | images: [newImage], 28 | }, 29 | unit_amount: item.price * 100, 30 | }, 31 | adjustable_quantity: { 32 | enabled:true, 33 | minimum: 1, 34 | }, 35 | quantity: item.quantity 36 | } 37 | }), 38 | success_url: `${req.headers.origin}/successPay`, 39 | cancel_url: `${req.headers.origin}/canceled`, 40 | } 41 | const session = await stripe.checkout.sessions.create(params); 42 | 43 | res.status(200).json(session); 44 | } catch (err) { 45 | res.status(err.statusCode || 500).json(err.message); 46 | } 47 | } else { 48 | res.setHeader('Allow', 'POST'); 49 | res.status(405).end('Method Not Allowed'); 50 | } 51 | } -------------------------------------------------------------------------------- /pages/cart.js: -------------------------------------------------------------------------------- 1 | import React, { useRef } from 'react'; 2 | import { AiOutlineMinus, AiOutlinePlus, AiOutlineShopping } from 'react-icons/ai'; 3 | import {HiOutlineTrash} from 'react-icons/hi' 4 | import toast from 'react-hot-toast'; 5 | import { useStateContext } from '../context/StateContext'; 6 | import { urlFor } from '../lib/client'; 7 | import getStripe from '../lib/getStripe'; 8 | 9 | const Cart = () => { 10 | const cartRef = useRef(); 11 | const {cartItems, totalPrice, totalQty, onRemove, toggleCartItemQuantity} = useStateContext(); 12 | 13 | const handleCheckout = async () => { 14 | const stripe = await getStripe(); 15 | 16 | const response = await fetch('/api/stripe', { 17 | method: 'POST', 18 | headers: { 19 | 'Content-Type': 'application/json', 20 | }, 21 | body: JSON.stringify(cartItems), 22 | }); 23 | 24 | if(response.statusCode === 500) return; 25 | 26 | const data = await response.json(); 27 | 28 | toast.loading('Redirecting...'); 29 | 30 | stripe.redirectToCheckout({ sessionId: data.id }); 31 | } 32 | 33 | return ( 34 |
35 |

Shopping Cart

36 |
37 |
38 | {cartItems.length < 1 && ( 39 |
40 | 41 |

Your shopping bag is empty

42 |
43 | )} 44 | 45 | {cartItems.length >= 1 && cartItems.map((item) => ( 46 |
47 |
48 | img 49 |
50 |
51 |
52 |

{item.name}

53 | 56 |
57 |

Dress

58 |

Delivery Estimation

59 |

5 Working Days

60 |
61 | ${item.price * item.quantity} 62 |
63 | toggleCartItemQuantity(item._id, 'dec')}> 64 | {item.quantity} 65 | toggleCartItemQuantity(item._id, 'inc')}> 66 |
67 |
68 |
69 |
70 | ))} 71 |
72 | 73 | {cartItems.length >= 1 && ( 74 |
75 |

Order Summary

76 |
77 |

Quantity

78 | {totalQty} Product 79 |
80 |
81 |

Sub Total

82 | ${totalPrice} 83 |
84 | {/*
85 |

Total

86 | ${totalPrice} 87 |
*/} 88 |
89 | 90 |
91 |
92 | )} 93 | 94 |
95 |
96 | ) 97 | } 98 | 99 | export default Cart -------------------------------------------------------------------------------- /pages/female.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import {client} from '../lib/client' 3 | import { AllProducts } from '../components' 4 | 5 | const female = ({AllFemaleProducts}) => { 6 | return ( 7 |
8 | {AllFemaleProducts?.map(prod => ( 9 | 10 | ))} 11 |
12 | ) 13 | } 14 | 15 | export const getServerSideProps = async () => { 16 | const query = '*[category == "Female"]'; 17 | const AllFemaleProducts = await client.fetch(query); 18 | 19 | return { 20 | props: { AllFemaleProducts } 21 | } 22 | } 23 | 24 | export default female 25 | -------------------------------------------------------------------------------- /pages/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import {client} from '../lib/client' 3 | import { HeroBanner, EventsBanner, Newsletter, FeaturesBanner, Product } from '../components' 4 | import { Navigation, A11y, Lazy } from 'swiper'; 5 | import { Swiper, SwiperSlide } from 'swiper/react'; 6 | 7 | // Import Swiper styles 8 | import 'swiper/css'; 9 | import 'swiper/css/navigation'; 10 | 11 | const Home = ({products}) => { 12 | return ( 13 | <> 14 | 15 | 16 | 17 |
18 |
19 | PRODUCTS 20 |

Check What We Have

21 |
22 | = 300 25 | 300: { 26 | slidesPerView: 1, 27 | spaceBetween: 100 28 | }, 29 | // width >= 1000 30 | 1000: { 31 | slidesPerView: 2, 32 | spaceBetween: 0 33 | }, 34 | // width >= 1260 35 | 1260: { 36 | slidesPerView: 3, 37 | spaceBetween: 0 38 | } 39 | }} 40 | modules={[Navigation, A11y]} 41 | spaceBetween={0} 42 | slidesPerView={3} 43 | navigation 44 | > 45 |
46 | {products?.map(product => ( 47 | 48 | 49 | 50 | ))} 51 |
52 |
53 |
54 | 55 | 56 | 57 | 58 | ) 59 | } 60 | 61 | export const getServerSideProps = async () => { 62 | const query = '*[_type == "product"]'; 63 | const products = await client.fetch(query); 64 | // const bannerQuery = '*[_type == "banner"]'; 65 | // const bannerData = await client.fetch(bannerQuery); 66 | 67 | return { 68 | props: { products } 69 | } 70 | } 71 | 72 | export default Home -------------------------------------------------------------------------------- /pages/kids.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import {client} from '../lib/client' 3 | import { AllProducts } from '../components' 4 | 5 | const kids = ({AllKidsProducts}) => { 6 | return ( 7 |
8 | {AllKidsProducts ?.map(prod => ( 9 | 10 | ))} 11 |
12 | ) 13 | } 14 | 15 | export const getServerSideProps = async () => { 16 | const query = '*[category == "Kids"]'; 17 | const AllKidsProducts = await client.fetch(query); 18 | 19 | return { 20 | props: { AllKidsProducts } 21 | } 22 | } 23 | 24 | export default kids 25 | -------------------------------------------------------------------------------- /pages/male.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import {client} from '../lib/client' 3 | import { AllProducts } from '../components' 4 | 5 | const male = ({AllMaleProducts}) => { 6 | return ( 7 |
8 | {AllMaleProducts?.map(prod => ( 9 | 10 | ))} 11 |
12 | ) 13 | } 14 | 15 | export const getServerSideProps = async () => { 16 | const query = '*[category == "Male"]'; 17 | const AllMaleProducts = await client.fetch(query); 18 | 19 | return { 20 | props: { AllMaleProducts } 21 | } 22 | } 23 | 24 | export default male 25 | -------------------------------------------------------------------------------- /pages/product/[slug].js: -------------------------------------------------------------------------------- 1 | import React, { useState } from 'react' 2 | import { client, urlFor } from '../../lib/client' 3 | import { AiOutlineMinus, AiOutlinePlus } from 'react-icons/ai' 4 | import {CgShoppingCart} from 'react-icons/cg' 5 | import { useStateContext } from '../../context/StateContext'; 6 | 7 | const ProductDetails = ({products, product}) => { 8 | const { image, name, details, price, tags, care } = product; 9 | const [index, setIndex] = useState(0); 10 | const {decQty, incQty, qty, onAdd} = useStateContext(); 11 | 12 | const careList = []; 13 | 14 | {for (let i = 0; i < care.length; i++) { 15 | careList.push(care[i].children[0].text) 16 | }} 17 | 18 | return ( 19 |
20 |
21 |
22 |
23 | {image?.map((item, ind) => ( 24 | setIndex(ind)} /> 29 | ))} 30 |
31 |
32 | 33 |
34 |
35 |
36 |
37 |

{name}

38 | {tags} 39 |
40 |
41 |

SELECT SIZE

42 |
    43 |
  • XS
  • 44 |
  • S
  • 45 |
  • M
  • 46 |
  • L
  • 47 |
  • XL
  • 48 |
49 |
50 |
51 |

Quantity:

52 |
53 | 54 | {qty} 55 | 56 |
57 |
58 |
59 | 60 |

${price}.00

61 |
62 |
63 |
64 | 65 |
66 |
67 |
68 | Overview 69 |
70 |

Product Information

71 |
72 |
73 |

PRODUCT DETAILS

74 |

{details[0].children[0].text}

75 |
76 |
77 |

PRODUCT CARE

78 |
    79 | {careList.map(list => ( 80 |
  • {list}
  • 81 | ))} 82 |
83 |
84 |
85 |
86 | ) 87 | } 88 | export default ProductDetails 89 | 90 | export const getStaticProps = async ({params: {slug}}) => { 91 | const query = `*[_type == "product" && slug.current == '${slug}'][0]`; 92 | const productsQuery = '*[_type == "product"]' 93 | const product = await client.fetch(query); 94 | const products = await client.fetch(productsQuery) 95 | 96 | return { 97 | props: { products, product } 98 | } 99 | } 100 | 101 | // Generates `/product/1` and `/product/2` 102 | export const getStaticPaths = async () => { 103 | const query = `*[_type == "product"] { 104 | slug { 105 | current 106 | } 107 | }`; 108 | 109 | const products = await client.fetch(query); 110 | 111 | const paths = products.map((product) => ({ 112 | params: { 113 | slug: product.slug.current 114 | } 115 | })); 116 | 117 | return { 118 | paths, 119 | fallback: 'blocking' 120 | } 121 | } 122 | -------------------------------------------------------------------------------- /pages/products.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import {client} from '../lib/client' 3 | import { AllProducts } from '../components' 4 | 5 | const products = ({Allproducts}) => { 6 | return ( 7 |
8 | {Allproducts?.map(prod => ( 9 | 10 | ))} 11 |
12 | ) 13 | } 14 | 15 | export const getServerSideProps = async () => { 16 | const query = '*[_type == "product"]'; 17 | const Allproducts = await client.fetch(query); 18 | 19 | return { 20 | props: { Allproducts } 21 | } 22 | } 23 | 24 | export default products 25 | -------------------------------------------------------------------------------- /pages/successPay.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react'; 2 | import Link from 'next/link'; 3 | import { BsBagCheckFill } from 'react-icons/bs'; 4 | 5 | import { useStateContext } from '../context/StateContext'; 6 | import { runConfetti } from '../lib/utils'; 7 | 8 | const successPay = () => { 9 | const { setCartItems, setTotalPrice, setTotalQty } = useStateContext(); 10 | 11 | useEffect(() => { 12 | localStorage.clear(); 13 | setCartItems([]); 14 | setTotalPrice(0); 15 | setTotalQty(0); 16 | runConfetti(); 17 | }, []); 18 | 19 | return ( 20 |
21 |

22 | 23 |

24 |

Thank you for your order!

25 |

Check your email inbox for the receipt

26 |

27 | If you have any questions, please email 28 | 29 | dinemarket@example.com 30 | 31 |

32 | 33 | 36 | 37 |
38 | ) 39 | } 40 | 41 | export default successPay -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/public/favicon.ico -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/thirteen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@sanity/eslint-config-studio" 3 | } 4 | -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # Dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # Compiled Sanity Studio 9 | /dist 10 | 11 | # Temporary Sanity runtime, generated by the CLI on every dev server start 12 | /.sanity 13 | 14 | # Logs 15 | /logs 16 | *.log 17 | 18 | # Coverage directory used by testing tools 19 | /coverage 20 | 21 | # Misc 22 | .DS_Store 23 | *.pem 24 | 25 | # Typescript 26 | *.tsbuildinfo 27 | -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/README.md: -------------------------------------------------------------------------------- 1 | # Sanity Clean Content Studio 2 | 3 | Congratulations, you have now installed the Sanity Content Studio, an open source real-time content editing environment connected to the Sanity backend. 4 | 5 | Now you can do the following things: 6 | 7 | - [Read “getting started” in the docs](https://www.sanity.io/docs/introduction/getting-started?utm_source=readme) 8 | - [Join the community Slack](https://slack.sanity.io/?utm_source=readme) 9 | - [Extend and build plugins](https://www.sanity.io/docs/content-studio/extending?utm_source=readme) 10 | -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ecommerce-clothing", 3 | "private": true, 4 | "version": "1.0.0", 5 | "main": "package.json", 6 | "license": "UNLICENSED", 7 | "scripts": { 8 | "dev": "sanity dev", 9 | "start": "sanity start", 10 | "build": "sanity build", 11 | "deploy": "sanity deploy", 12 | "deploy-graphql": "sanity graphql deploy" 13 | }, 14 | "keywords": [ 15 | "sanity" 16 | ], 17 | "dependencies": { 18 | "@sanity/vision": "^3.0.0", 19 | "react": "^18.2.0", 20 | "react-dom": "^18.2.0", 21 | "react-is": "^18.2.0", 22 | "sanity": "^3.0.0", 23 | "styled-components": "^5.2.0" 24 | }, 25 | "devDependencies": { 26 | "@sanity/eslint-config-studio": "^2.0.1", 27 | "eslint": "^8.6.0", 28 | "prettier": "^2.8.1", 29 | "typescript": "^4.0.0" 30 | }, 31 | "prettier": { 32 | "semi": false, 33 | "printWidth": 100, 34 | "bracketSpacing": false, 35 | "singleQuote": true 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/sanity.cli.js: -------------------------------------------------------------------------------- 1 | import {defineCliConfig} from 'sanity/cli' 2 | 3 | export default defineCliConfig({ 4 | api: { 5 | projectId: 'dow10h3v', 6 | dataset: 'production' 7 | } 8 | }) 9 | -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/sanity.config.js: -------------------------------------------------------------------------------- 1 | import {defineConfig} from 'sanity' 2 | import {deskTool} from 'sanity/desk' 3 | import {visionTool} from '@sanity/vision' 4 | import {schemaTypes} from './schemas' 5 | 6 | export default defineConfig({ 7 | name: 'default', 8 | title: 'ecommerce-clothing', 9 | 10 | projectId: 'dow10h3v', 11 | dataset: 'production', 12 | 13 | plugins: [deskTool(), visionTool()], 14 | 15 | schema: { 16 | types: schemaTypes, 17 | }, 18 | }) 19 | -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/schemas/banner.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'banner', 3 | title: 'Banner', 4 | type: 'document', 5 | fields: [ 6 | { 7 | name: 'image', 8 | title: 'Image', 9 | type: 'image', 10 | options: { 11 | hotspot: true, 12 | }, 13 | }, 14 | { 15 | name: 'buttonText', 16 | title: 'ButtonText', 17 | type: 'string', 18 | }, 19 | { 20 | name: 'product', 21 | title: 'Product', 22 | type: 'string', 23 | }, 24 | { 25 | name: 'desc', 26 | title: 'Desc', 27 | type: 'string', 28 | }, 29 | { 30 | name: 'smallText', 31 | title: 'SmallText', 32 | type: 'string', 33 | }, 34 | { 35 | name: 'midText', 36 | title: 'MidText', 37 | type: 'string', 38 | }, 39 | { 40 | name: 'largeText1', 41 | title: 'LargeText1', 42 | type: 'string', 43 | }, 44 | { 45 | name: 'largeText2', 46 | title: 'LargeText2', 47 | type: 'string', 48 | }, 49 | { 50 | name: 'discount', 51 | title: 'Discount', 52 | type: 'string', 53 | }, 54 | { 55 | name: 'saleTime', 56 | title: 'SaleTime', 57 | type: 'string', 58 | }, 59 | ], 60 | }; -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/schemas/index.js: -------------------------------------------------------------------------------- 1 | import product from "./product" 2 | // import banner from "./banner" 3 | 4 | export const schemaTypes = [product] 5 | -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/schemas/product.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'product', 3 | title: 'Product', 4 | type: 'document', 5 | fields: [ 6 | { 7 | name: 'image', 8 | title: 'Image', 9 | type: 'array', 10 | of: [{ type: 'image' }], 11 | options: { 12 | hotspot: true, 13 | } 14 | }, 15 | { 16 | name: 'name', 17 | title: 'Name', 18 | type: 'string', 19 | }, 20 | { 21 | name: 'category', 22 | title: 'Category', 23 | type: 'string', 24 | options: { 25 | list: [ 26 | {title: "Female", value: "Female"}, 27 | {title: "Male", value: "Male"}, 28 | {title: "Kids", value: "Kids"} 29 | ], 30 | }, 31 | }, 32 | { 33 | name: 'tags', 34 | title: 'Tags', 35 | type: 'string', 36 | options: { 37 | list: [ 38 | {title: "Sweater", value: "Sweater"}, 39 | {title: "Dress", value: "Dress"}, 40 | {title: "T Shirts", value: "T Shirts"}, 41 | {title: "Pants", value: "Pants"}, 42 | {title: "Jackets", value: "Jackets"} 43 | ], 44 | }, 45 | }, 46 | { 47 | name: 'slug', 48 | title: 'Slug', 49 | type: 'slug', 50 | options: { 51 | source: "name", 52 | maxLength: 90, 53 | } 54 | }, 55 | { 56 | name: 'price', 57 | title: 'Price', 58 | type: 'number', 59 | }, 60 | { 61 | name: 'details', 62 | title: 'Details', 63 | type: 'array', 64 | of: [{type: 'block'}] 65 | }, 66 | { 67 | name: 'care', 68 | title: 'Care', 69 | type: 'array', 70 | of: [{type: 'block'}] 71 | } 72 | ] 73 | } -------------------------------------------------------------------------------- /sanity-ecommerce-clothing/static/.gitkeep: -------------------------------------------------------------------------------- 1 | Files placed here will be served by the Sanity server under the `/static`-prefix 2 | -------------------------------------------------------------------------------- /src/assets/Back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/Back.png -------------------------------------------------------------------------------- /src/assets/Featured1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/Featured1.png -------------------------------------------------------------------------------- /src/assets/Featured2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/Featured2.png -------------------------------------------------------------------------------- /src/assets/Featured3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/Featured3.png -------------------------------------------------------------------------------- /src/assets/Featured4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/Featured4.png -------------------------------------------------------------------------------- /src/assets/Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/Logo.png -------------------------------------------------------------------------------- /src/assets/Next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/Next.png -------------------------------------------------------------------------------- /src/assets/event1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/event1.png -------------------------------------------------------------------------------- /src/assets/event2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/event2.png -------------------------------------------------------------------------------- /src/assets/event3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/event3.png -------------------------------------------------------------------------------- /src/assets/feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/feature.png -------------------------------------------------------------------------------- /src/assets/header-section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/header-section.png -------------------------------------------------------------------------------- /src/assets/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/header.png -------------------------------------------------------------------------------- /src/assets/middle-section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/middle-section.png -------------------------------------------------------------------------------- /src/assets/payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/payment.png -------------------------------------------------------------------------------- /src/assets/products.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/products.png -------------------------------------------------------------------------------- /src/assets/success-pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Source-Controller/eCommerce-Fullstack/c22fd1b01307f188c13924bc07d6e88623cc82b0/src/assets/success-pay.png -------------------------------------------------------------------------------- /styles/globals.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Sora:wght@300;400;600;700&display=swap'); 2 | 3 | * { 4 | box-sizing: border-box; 5 | padding: 0; 6 | margin: 0; 7 | } 8 | 9 | html, 10 | body { 11 | max-width: 100vw; 12 | overflow-x: hidden; 13 | font-family: 'Sora', sans-serif; 14 | /* background-color: #FBFCFF; */ 15 | } 16 | 17 | a { 18 | color: inherit; 19 | text-decoration: none; 20 | } 21 | nav li, footer li, .size li, button, .cart, .navbar-smallscreen_links { 22 | list-style: none; 23 | cursor: pointer; 24 | } 25 | .btn { 26 | font-family: 'Sora', sans-serif; 27 | font-weight: 600; 28 | line-height: 18px; 29 | background-color: #212121; 30 | padding: 10px 0; 31 | display: flex; 32 | align-items: center; 33 | justify-content: center; 34 | gap: 0.5rem; 35 | color: white; 36 | } 37 | .subtitle { 38 | text-align: center; 39 | display: flex; 40 | flex-direction: column; 41 | gap: 1rem; 42 | margin-bottom: 2rem; 43 | } 44 | .subtitle span { 45 | font-weight: 700; 46 | font-size: 12px; 47 | line-height: 15px; 48 | text-align: center; 49 | letter-spacing: 0.1em; 50 | color: #0062F5; 51 | } 52 | .subtitle h2 { 53 | font-weight: 700; 54 | font-size: 32px; 55 | line-height: 40px; 56 | text-align: center; 57 | letter-spacing: 0.03em; 58 | color: #212121; 59 | } 60 | /*----------- Margin & Padding Section --------------*/ 61 | .header, .Allproducts-container, 62 | .cart-wrapper, .success { 63 | margin: 4rem 8rem; 64 | } 65 | .event-container, .products-outer-container, 66 | .products, .footer { 67 | padding: 4rem 8rem; 68 | } 69 | 70 | /*------------------------- NAVBAR ----------------------*/ 71 | nav { 72 | margin: 2rem 8rem; 73 | display: flex; 74 | justify-content: space-between; 75 | align-items: center; 76 | } 77 | .nav-links { 78 | display: flex; 79 | gap: 3rem; 80 | } 81 | .search-bar { 82 | display: flex; 83 | align-items: center; 84 | width: 30%; 85 | border: 1px solid #e4e5eb; 86 | border-radius: 5px; 87 | padding: 0 5px; 88 | } 89 | nav input { 90 | border: none; 91 | width: 100%; 92 | padding: 5px; 93 | } 94 | .cart, .cart-small-screen { 95 | display: flex; 96 | padding: 12px; 97 | background-color: #F1F1F1; 98 | border-radius: 50%; 99 | border: none; 100 | position: relative; 101 | transition: transform .4s ease; 102 | } 103 | .cart:hover, .cart-small-screen:hover{ 104 | transform: scale(1.1,1.1); 105 | } 106 | .cart-item-qty{ 107 | position: absolute; 108 | top: 0; 109 | right: 5px; 110 | font-size: 12px; 111 | color: #eee; 112 | background-color: #f02d34; 113 | width: 18px; 114 | height: 18px; 115 | border-radius: 50%; 116 | text-align: center; 117 | font-weight: 600; 118 | } 119 | 120 | /*-------------------- HEADER SECTION ------------------*/ 121 | .header { 122 | position: relative; 123 | display: flex; 124 | justify-content: space-between; 125 | gap: 4rem; 126 | } 127 | .header-left-side, .header-right-side { 128 | display: flex; 129 | flex: 1; 130 | } 131 | .header-left-side { 132 | display: flex; 133 | padding: 3rem 0 1rem; 134 | flex-direction: column; 135 | justify-content: space-between; 136 | } 137 | .header-content { 138 | display: flex; 139 | flex-direction: column; 140 | justify-content: center; 141 | gap: 2.5rem; 142 | } 143 | .header-content span { 144 | background-color: #e1edff; 145 | height: 40px; 146 | width: 120px; 147 | border-radius: 6px; 148 | display: flex; 149 | align-items: center; 150 | justify-content: center; 151 | color: blue; 152 | font-weight: 600; 153 | } 154 | .header-content h1 { 155 | font-weight: 700; 156 | font-size: 3.5rem; 157 | line-height: 55px; 158 | letter-spacing: 0.03em; 159 | color: #212121; 160 | } 161 | .header-content p { 162 | font-weight: 400; 163 | font-size: 1rem; 164 | line-height: 24px; 165 | color: #666666; 166 | width: 70%; 167 | } 168 | .header-content .btn { 169 | padding: 1rem; 170 | font-size: 1rem; 171 | width: 35%; 172 | } 173 | .header-featured { 174 | display: grid; 175 | grid-template-columns: 1fr 1fr 1fr 1fr; 176 | grid-gap: 1rem; 177 | } 178 | .header-circle { 179 | width: 600px; 180 | height: 600px; 181 | border-radius: 50%; 182 | background-color: #FFECE3; 183 | } 184 | .header-circle .header-img { 185 | position: absolute; 186 | top: -5%; 187 | } 188 | 189 | /*-------------------- EVENTS SECTION ------------------*/ 190 | .event-banner { 191 | display: flex; 192 | justify-content: space-between; 193 | gap: 2rem; 194 | } 195 | .event-banner-left { 196 | flex: 2; 197 | display: flex; 198 | flex-direction: column; 199 | gap: 1rem; 200 | } 201 | .event-card:first-child { 202 | background-color: #D6D6D8; 203 | display: flex; 204 | justify-content: space-between; 205 | align-items: center; 206 | padding: 0 2rem; 207 | letter-spacing: 0.05em; 208 | color: #212121; 209 | } 210 | .event-card:first-child img { 211 | width: 260px; 212 | height: 200px; 213 | } 214 | .event-card:last-child { 215 | background-color: #212121; 216 | color: white; 217 | display: flex; 218 | flex-direction: column; 219 | justify-content: center; 220 | align-items: center; 221 | padding: 3rem 2rem 2rem; 222 | } 223 | .event-card:first-child h3 { 224 | font-weight: 700; 225 | font-size: 1.75rem; 226 | line-height: 35px; 227 | } 228 | .event-card:first-child span { 229 | font-weight: 800; 230 | font-size: 2.25rem; 231 | line-height: 45px; 232 | } 233 | .event-card:first-child p { 234 | font-weight: 400; 235 | font-size: 1.125rem; 236 | line-height: 23px; 237 | letter-spacing: 0.03em; 238 | } 239 | .event-card:last-child h3 { 240 | font-weight: 800; 241 | font-size: 2.25rem; 242 | line-height: 45px; 243 | letter-spacing: 0.03em; 244 | margin-bottom: 1rem; 245 | } 246 | .event-card:last-child p { 247 | font-weight: 400; 248 | font-size: 0.875rem; 249 | line-height: 18px; 250 | letter-spacing: 0.03em; 251 | } 252 | .event-card button { 253 | font-weight: 700; 254 | font-size: 17px; 255 | line-height: 21px; 256 | letter-spacing: 0.25em; 257 | color: white; 258 | border: none; 259 | background: #474747; 260 | padding: 0.5rem 2.5rem; 261 | margin-top: 5px; 262 | border-radius: 8px; 263 | } 264 | .event-banner-right { 265 | flex: 1; 266 | display: flex; 267 | justify-content: space-between; 268 | align-items: center; 269 | gap: 1rem; 270 | } 271 | .event-banner-right-1, .event-banner-right-2 { 272 | padding-top: 1.5rem; 273 | display: flex; 274 | flex-direction: column; 275 | justify-content: space-between; 276 | align-items: center; 277 | } 278 | .event-banner-right-1 { 279 | background-color: #EFE1C7; 280 | } 281 | .event-banner-right-2 { 282 | background-color: #D7D7D9; 283 | } 284 | .event-banner-right-1 img, .event-banner-right-2 img { 285 | width: 280px; 286 | height: 340px; 287 | padding-top: 1rem; 288 | } 289 | .details { 290 | width: 100%; 291 | margin-left: 2.5rem; 292 | } 293 | .details p { 294 | font-weight: 400; 295 | font-size: 15px; 296 | line-height: 24px; 297 | letter-spacing: 0.03em; 298 | } 299 | .details span:first-child { 300 | position: relative; 301 | } 302 | .details span:first-child::after{ 303 | content: ""; 304 | width: 100%; 305 | height: 1px; 306 | background: #212121; 307 | position: absolute; 308 | bottom: 10px; 309 | left: 0; 310 | } 311 | .details span:last-child { 312 | font-weight: 600; 313 | font-size: 18px; 314 | line-height: 23px; 315 | margin-left: 10px; 316 | } 317 | 318 | /*---------------------- ALL PRODUCTS PAGE -----------------------*/ 319 | .Allproducts-container{ 320 | display: grid; 321 | grid-template-columns: 1fr 1fr 1fr 1fr; 322 | justify-content: space-between; 323 | justify-items: center; 324 | grid-gap: 4rem; 325 | } 326 | .Allproduct-card { 327 | width: 250px; 328 | } 329 | .Allproduct-card img { 330 | width: 100%; 331 | height: 100%; 332 | } 333 | .Allproduct-name, .Allproduct-price { 334 | font-weight: 600; 335 | line-height: 24px; 336 | letter-spacing: 0.03em; 337 | color: #212121; 338 | } 339 | .Allproduct-name { 340 | font-size: 1.05rem; 341 | margin-top: 0.5rem; 342 | } 343 | .Allproduct-tags { 344 | font-weight: 600; 345 | font-size: 15px; 346 | line-height: 15px; 347 | color: #888888; 348 | margin-top: 0.5rem; 349 | } 350 | .Allproduct-price { 351 | font-size: 1.25rem; 352 | margin-top: 1rem; 353 | } 354 | 355 | /*-------------------- PRODUCTS SECTION ------------------*/ 356 | .product-card{ 357 | padding: 2rem 0 2rem 1.3rem; 358 | transform: scale(1, 1); 359 | transition: transform 0.5s ease; 360 | } 361 | .product-card img { 362 | width: 380px; 363 | height: 400px; 364 | } 365 | .product-card:hover{ 366 | transform: scale(1.1,1.1) 367 | } 368 | .product-name, .product-price { 369 | font-weight: 600; 370 | color: #212121; 371 | margin-top: 0.5rem; 372 | line-height: 24px; 373 | } 374 | .product-name { 375 | font-size: 1.1rem; 376 | letter-spacing: 0.03em; 377 | } 378 | .product-price { 379 | font-size: 1.2rem; 380 | } 381 | .swiper-button-prev, .swiper-button-next { 382 | background-repeat: no-repeat; 383 | background-size: auto; 384 | background-position: center; 385 | padding: 2rem; 386 | } 387 | .swiper-button-prev { 388 | background-image: url('../src/assets/Back.png'); 389 | } 390 | .swiper-button-next { 391 | background-image: url('../src/assets/Next.png'); 392 | } 393 | .swiper-button-prev::after, 394 | .swiper-button-next::after { 395 | display: none; 396 | } 397 | 398 | 399 | /*-------------------- SINGLE PRODUCT PAGE ------------------*/ 400 | .products { 401 | background-color: #FCFCFC; 402 | } 403 | .product-detail-container { 404 | display: flex; 405 | justify-content: space-between; 406 | } 407 | .product-images { 408 | display: flex; 409 | flex: 2; 410 | gap: 2rem; 411 | } 412 | .big-image-container { 413 | width: 80%; 414 | height: 100%; 415 | } 416 | .big-image-container img { 417 | width: 100%; 418 | height: 100%; 419 | } 420 | .small-images-container{ 421 | display: flex; 422 | flex-direction: column; 423 | gap: 1rem; 424 | } 425 | .small-image{ 426 | width: 100px; 427 | height: 100px; 428 | cursor: pointer; 429 | } 430 | .product-details { 431 | display: flex; 432 | flex-direction: column; 433 | flex: 1; 434 | gap: 2.5rem; 435 | margin-top: 4rem; 436 | } 437 | .product-details h3 { 438 | font-weight: 400; 439 | font-size: 1.625rem; 440 | line-height: 33px; 441 | letter-spacing: 0.05em; 442 | color: #212121; 443 | } 444 | .name-and-category span { 445 | font-weight: 600; 446 | font-size: 1.3rem; 447 | opacity: 0.3; 448 | } 449 | .size p, .size li { 450 | font-weight: 700; 451 | font-size: 0.9rem; 452 | line-height: 16px; 453 | letter-spacing: 0.05em; 454 | } 455 | .size p { 456 | color: #212121; 457 | } 458 | .size ul { 459 | display: flex; 460 | gap: 1rem; 461 | margin-top: 1rem; 462 | } 463 | .size li { 464 | width: 40px; 465 | height: 40px; 466 | display: flex; 467 | justify-content: center; 468 | align-items: center; 469 | border-radius: 50%; 470 | cursor: pointer; 471 | font-size: 1rem; 472 | color: #666666; 473 | } 474 | .size li:hover { 475 | box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px; 476 | } 477 | .quantity-desc { 478 | display: flex; 479 | gap: 2rem; 480 | } 481 | .minus, .plus { 482 | border-radius: 50%; 483 | padding: 5px 8px; 484 | cursor: pointer; 485 | } 486 | .minus { 487 | margin-right: 10px; 488 | border: 2px solid #F1F1F1; 489 | background-color: #F1F1F1; 490 | } 491 | .plus { 492 | margin-left: 10px; 493 | border: 2px solid black; 494 | } 495 | .add-to-cart { 496 | display: flex; 497 | align-items: center; 498 | gap: 1rem; 499 | } 500 | .add-to-cart .btn { 501 | font-size: 0.875rem; 502 | width: 40%; 503 | } 504 | .add-to-cart .price { 505 | font-weight: 700; 506 | font-size: 1.5rem; 507 | line-height: 30px; 508 | letter-spacing: 0.1em; 509 | color: #212121; 510 | } 511 | .product-desc-container { 512 | background-color: white; 513 | display: flex; 514 | flex-direction: column; 515 | margin-top: 4rem; 516 | padding: 2rem 4rem 6rem; 517 | gap: 2rem; 518 | } 519 | .desc-title { 520 | border-bottom: 2px solid #C4C4C4; 521 | position: relative; 522 | width: 100%; 523 | height: 150px; 524 | } 525 | .desc-title h2 { 526 | font-weight: 700; 527 | font-size: 1.4rem; 528 | line-height: 25px; 529 | letter-spacing: 0.05em; 530 | color: #212121; 531 | padding-bottom: 3rem; 532 | z-index: 2; 533 | top: 45%; 534 | position: absolute; 535 | } 536 | .desc-background { 537 | font-weight: 800; 538 | font-size: 7.5rem; 539 | line-height: 151px; 540 | color: #f2f3f7; 541 | opacity: 0.7; 542 | z-index: -1; 543 | width: 100%; 544 | height: 100%; 545 | } 546 | .product-desc-container div { 547 | display: flex; 548 | z-index: 2; 549 | } 550 | .product-desc-container h4 { 551 | flex: 1; 552 | font-weight: 700; 553 | font-size: 1rem; 554 | line-height: 19px; 555 | letter-spacing: 0.05em; 556 | color: #666666; 557 | } 558 | .product-desc-container p, .product-desc-container li { 559 | font-weight: 300; 560 | font-size: 1rem; 561 | line-height: 26px; 562 | text-align: justify; 563 | letter-spacing: 0.05em; 564 | color: #212121; 565 | } 566 | .product-desc-container p, .product-desc-container ul { 567 | flex: 2; 568 | } 569 | .product-desc-container li { 570 | font-weight: 600; 571 | list-style-position: inside; 572 | } 573 | 574 | /*-------------------- CART PAGE ------------------*/ 575 | .cart-wrapper { 576 | padding: 3rem; 577 | } 578 | .cart-container { 579 | display: flex; 580 | justify-content: space-between; 581 | gap: 4rem; 582 | } 583 | .order-summary { 584 | padding: 2rem; 585 | background: #FBFCFF; 586 | display: flex; 587 | flex-direction: column; 588 | flex: 1; 589 | gap: 2rem; 590 | } 591 | .order-summary div { 592 | display: flex; 593 | justify-content: space-between; 594 | gap: 4rem; 595 | } 596 | .order-summary .btn { 597 | width: 100%; 598 | } 599 | .empty-cart { 600 | display: flex; 601 | flex-direction: column; 602 | justify-content: center; 603 | align-items: center; 604 | } 605 | .cart-items { 606 | display: flex; 607 | flex-direction: column; 608 | margin-top: 2rem; 609 | gap: 4rem; 610 | flex: 3; 611 | } 612 | .name-and-remove { 613 | display: flex; 614 | justify-content: space-between; 615 | } 616 | .remove-item { 617 | background: transparent; 618 | border: none; 619 | } 620 | .item-card { 621 | display: flex; 622 | gap: 2rem; 623 | } 624 | .item-image { 625 | width: 25%; 626 | height: 190px; 627 | border-radius: 9px; 628 | } 629 | .item-image img { 630 | width: 100%; 631 | height: 100%; 632 | border-radius: 9px; 633 | } 634 | .item-details { 635 | display: flex; 636 | flex-direction: column; 637 | justify-content: space-between; 638 | width: 75%; 639 | } 640 | .item-details h3 { 641 | font-weight: 300; 642 | font-size: 1.3rem; 643 | line-height: 25px; 644 | color: #212121; 645 | } 646 | .item-tag, .delivery-est, .delivery-days { 647 | font-weight: 600; 648 | font-size: 1rem; 649 | line-height: 22px; 650 | color: #212121; 651 | } 652 | .item-tag { 653 | line-height: 16px; 654 | color: #666666; 655 | } 656 | .delivery-days { 657 | color: #FFC700; 658 | } 659 | .price-and-qty { 660 | display: flex; 661 | justify-content: space-between; 662 | } 663 | .price-and-qty .price { 664 | font-weight: 700; 665 | font-size: 1.1rem; 666 | line-height: 20px; 667 | letter-spacing: 0.1em; 668 | color: #212121; 669 | } 670 | .price-and-qty .minus, .price-and-qty .plus { 671 | padding: 3px 5px; 672 | } 673 | 674 | /*-------------------- FEATURES SECTION ------------------*/ 675 | .features-section { 676 | margin-top: 4rem; 677 | } 678 | .features-section .title { 679 | display: flex; 680 | justify-content: end; 681 | padding: 0 8rem 2rem; 682 | background: linear-gradient(180deg, white 50%, #FBFCFF 50%); 683 | } 684 | .features-section .title h1 { 685 | font-weight: 700; 686 | font-size: 2.75rem; 687 | line-height: 55px; 688 | letter-spacing: 0.03em; 689 | color: #212121; 690 | width: 45%; 691 | } 692 | .features-section .content { 693 | display: grid; 694 | grid-template-columns: 1fr 1fr; 695 | padding: 0 8rem 4rem; 696 | background-color: #FBFCFF; 697 | } 698 | .features-section .content .left { 699 | display: grid; 700 | grid-template-columns: 1fr 1fr; 701 | justify-content: center; 702 | align-items: center; 703 | position: relative; 704 | } 705 | .features-section .content .left .feature-background { 706 | font-weight: 800; 707 | font-size: 6.875rem; 708 | line-height: 110px; 709 | position: absolute; 710 | color: #212121; 711 | opacity: 0.07; 712 | z-index: 1; 713 | } 714 | .features-section .content .left div { 715 | width: 70%; 716 | z-index: 2; 717 | } 718 | .features-section .content .left h3 { 719 | font-weight: 600; 720 | font-size: 1.125rem; 721 | line-height: 20px; 722 | letter-spacing: 0.03em; 723 | color: #212121; 724 | margin-bottom: 1rem; 725 | } 726 | .features-section .content .left p { 727 | font-weight: 300; 728 | font-size: 1rem; 729 | line-height: 22px; 730 | letter-spacing: 0.05em; 731 | color: #212121; 732 | } 733 | .features-section .content .right { 734 | display: flex; 735 | justify-content: center; 736 | align-items: center; 737 | gap: 2.5rem; 738 | } 739 | .features-section .content .right div { 740 | display: flex; 741 | flex-direction: column; 742 | gap: 2rem; 743 | } 744 | .features-section .content .right p { 745 | font-weight: 300; 746 | font-size: 1rem; 747 | line-height: 26px; 748 | text-align: justify; 749 | color: #212121; 750 | } 751 | .features-section .btn { 752 | font-size: 0.875rem; 753 | width: 50%; 754 | } 755 | 756 | /*-------------------- NEWSLETTER SECTION ------------------*/ 757 | .newsletter { 758 | padding: 10rem 8rem; 759 | display: flex; 760 | flex-direction: column; 761 | justify-content: center; 762 | align-items: center; 763 | text-align: center; 764 | position: relative; 765 | z-index: 1; 766 | } 767 | .newsletter-background { 768 | font-weight: 800; 769 | font-size: 7.5rem; 770 | line-height: 151px; 771 | color: #f2f3f7; 772 | position: absolute; 773 | z-index: -1; 774 | } 775 | .newsletter h1 { 776 | margin-bottom: 1rem; 777 | font-weight: 700; 778 | font-size: 2rem; 779 | line-height: 40px; 780 | letter-spacing: 0.03em; 781 | color: #212121; 782 | } 783 | .newsletter p { 784 | margin-bottom: 2rem; 785 | font-weight: 300; 786 | font-size: 1rem; 787 | line-height: 26px; 788 | color: #212121; 789 | } 790 | .newsletter input { 791 | padding: 10px 120px 10px 20px; 792 | background: #FCFCFC; 793 | border: 1px solid gray; 794 | } 795 | .newsletter button { 796 | padding: 10px 20px; 797 | margin-left: 10px; 798 | background-color: black; 799 | color: white; 800 | font-weight: 600; 801 | font-size: 0.9rem; 802 | line-height: 16px; 803 | } 804 | 805 | /*-------------------- FOOTER SECTION ------------------*/ 806 | footer { 807 | background-color: white; 808 | } 809 | .footer { 810 | display: grid; 811 | grid-template-columns: 2fr 1fr 1fr 1fr; 812 | } 813 | .footer .logo { 814 | display: flex; 815 | flex-direction: column; 816 | justify-content: space-between; 817 | width: 80%; 818 | } 819 | .icon-container { 820 | display: flex; 821 | gap: 1rem; 822 | } 823 | .icon-container div { 824 | padding: 10px 12px; 825 | background-color: #F1F1F1; 826 | border-radius: 10px; 827 | cursor: pointer; 828 | } 829 | footer li{ 830 | margin-top: 15px; 831 | } 832 | footer li:first-child { 833 | margin-top: 25px; 834 | } 835 | footer p, footer li { 836 | font-weight: 400; 837 | font-size: 1rem; 838 | line-height: 22px; 839 | color: #666666; 840 | } 841 | .footer-links h3 { 842 | font-weight: 700; 843 | font-size: 1.2rem; 844 | line-height: 19px; 845 | letter-spacing: 0.02em; 846 | color: #666666; 847 | } 848 | .copyright { 849 | margin-top: 6rem; 850 | border-top: 1px solid #666666; 851 | display: grid; 852 | grid-template-columns: auto auto auto; 853 | } 854 | .copyright p { 855 | margin: 1.5rem 8rem; 856 | } 857 | .copyright span { 858 | font-weight: 700; 859 | font-size: 1rem; 860 | line-height: 15px; 861 | color: #212121; 862 | } 863 | 864 | /*------------------ SUCCESS PAYMENT PAGE ----------------*/ 865 | .success { 866 | padding: 6rem 0; 867 | background-color: #F1F1F1; 868 | display: flex; 869 | flex-direction: column; 870 | justify-content: center; 871 | align-items: center; 872 | text-align: center; 873 | border-radius: 15px; 874 | } 875 | .success .icon { 876 | color: green; 877 | } 878 | .success h1 { 879 | font-size: 2.75rem; 880 | margin: 0.5rem 0; 881 | } 882 | .success .btn { 883 | padding: 15px; 884 | width: 400px; 885 | font-size: 1.125rem; 886 | border-radius: 10px; 887 | } 888 | .success .description, .success button { 889 | margin-top: 2rem; 890 | } 891 | .success .description a { 892 | margin-left: 5px; 893 | color: red; 894 | } 895 | 896 | /*-----------------NAVBAR SMALL SCREEN-------------*/ 897 | .navbar-smallscreen { 898 | display: none; 899 | } 900 | .navbar-smallscreen_overlay { 901 | position: fixed; 902 | top: 0; 903 | left: 0; 904 | width: 100%; 905 | height: 100vh; 906 | background: white; 907 | transition: all .5s ease-in-out; 908 | display: flex; 909 | flex-direction: column; 910 | justify-content: center; 911 | align-items: center; 912 | z-index: 3; 913 | } 914 | .navbar-smallscreen_overlay .logo-small, 915 | .navbar-smallscreen_overlay .close_icon { 916 | font-size: 2.5rem; 917 | cursor: pointer; 918 | position: absolute; 919 | } 920 | .navbar-smallscreen_overlay .logo-small { 921 | left: 50px; 922 | top: 50px; 923 | } 924 | .navbar-smallscreen_overlay .close_icon { 925 | right: 50px; 926 | top: 40px; 927 | } 928 | .navbar-smallscreen_links { 929 | display: flex; 930 | text-align: center; 931 | flex-direction: column; 932 | align-items: center; 933 | gap: 1rem; 934 | } 935 | 936 | 937 | @media screen and (max-width: 1290px) { 938 | .header, .Allproducts-container, 939 | .cart-wrapper, .success { 940 | margin: 4rem 6rem; 941 | } 942 | .event-container, .products-outer-container, 943 | .products { 944 | padding: 4rem 6rem; 945 | } 946 | .features-section .title, 947 | .features-section .content { 948 | padding: 0 6rem; 949 | } 950 | nav { 951 | margin: 2rem 6rem; 952 | } 953 | .footer { 954 | padding: 2rem 6rem; 955 | } 956 | .product-card{ 957 | padding: 2rem 0; 958 | display: flex; 959 | flex-direction: column; 960 | justify-content: center; 961 | align-items: center; 962 | } 963 | .Allproducts-container{ 964 | grid-template-columns: 1fr 1fr 1fr; 965 | } 966 | } 967 | 968 | 969 | @media screen and (max-width: 1210px) { 970 | .header, .Allproducts-container, 971 | .cart-wrapper, .success { 972 | margin: 4rem; 973 | } 974 | .event-container, .products-outer-container, 975 | .products, .footer { 976 | padding: 4rem; 977 | } 978 | .features-section .title, 979 | .features-section .content { 980 | padding: 2rem 4rem; 981 | } 982 | nav { 983 | margin: 2rem 4rem; 984 | } 985 | .newsletter { 986 | padding: 6rem 4rem; 987 | } 988 | .features-section { 989 | margin-top: 0; 990 | } 991 | .features-section .title { 992 | justify-content: center; 993 | } 994 | .features-section .title h1 { 995 | width: 80%; 996 | } 997 | .features-section .content { 998 | grid-template-columns: 1fr; 999 | grid-gap: 4rem; 1000 | } 1001 | .features-section .content .left { 1002 | grid-gap: 2rem; 1003 | } 1004 | .features-section .content .left div { 1005 | width: 100%; 1006 | } 1007 | } 1008 | 1009 | 1010 | @media screen and (max-width: 1000px) { 1011 | nav { 1012 | margin: 4rem; 1013 | } 1014 | .nav-links, .search-bar, .cart { 1015 | display: none; 1016 | } 1017 | .navbar-smallscreen { 1018 | display: flex; 1019 | } 1020 | /*-------------------- HEADER SECTION ------------------*/ 1021 | .header { 1022 | flex-direction: column; 1023 | justify-content: center; 1024 | align-items: center; 1025 | } 1026 | .header-left-side { 1027 | padding: 2rem 0; 1028 | } 1029 | .header-right-side { 1030 | display: none; 1031 | } 1032 | .header-content { 1033 | margin-bottom: 3rem; 1034 | } 1035 | .header-content .btn { 1036 | width: 50%; 1037 | } 1038 | /*-------------------- EVENTS SECTION ------------------*/ 1039 | .event-banner { 1040 | flex-direction: column; 1041 | gap: 1rem; 1042 | } 1043 | .event-banner-left .event-card:first-child { 1044 | padding-top: 0; 1045 | } 1046 | .event-banner-left .event-card:first-child img { 1047 | width: 300px; 1048 | height: 250px; 1049 | } 1050 | .event-banner-left .event-card:last-child { 1051 | padding: 3rem; 1052 | } 1053 | .event-banner-right-1, .event-banner-right-2 { 1054 | width: 100%; 1055 | } 1056 | .event-banner-right-1 img, .event-banner-right-2 img { 1057 | width: 240px; 1058 | height: 300px; 1059 | } 1060 | /*-------------------- PRODUCTS SECTION ------------------*/ 1061 | .product-card img { 1062 | width: 380px; 1063 | height: 400px; 1064 | } 1065 | /*-------------------- FEATURES SECTION ------------------*/ 1066 | .features-section .title h1 { 1067 | width: 100%; 1068 | } 1069 | .features-section .content .left .feature-background { 1070 | font-size: 6rem; 1071 | } 1072 | /*-------------------- NEWSLETTER SECTION ------------------*/ 1073 | .newsletter-background { 1074 | font-size: 6.2rem; 1075 | } 1076 | .newsletter button { 1077 | padding: 10px 40px; 1078 | } 1079 | /*-------------------- FOOTER SECTION ------------------*/ 1080 | .footer { 1081 | grid-template-columns: 1fr; 1082 | grid-gap: 2rem; 1083 | } 1084 | .footer .logo { 1085 | gap: 2rem; 1086 | width: 100%; 1087 | } 1088 | .footer .logo p { 1089 | width: 60%; 1090 | } 1091 | .copyright { 1092 | margin-top: 0; 1093 | grid-template-columns: 1fr 1fr; 1094 | } 1095 | .copyright p { 1096 | margin: 0.8rem 2rem; 1097 | } 1098 | /*-------------------- SINGLE PRODUCT PAGE ------------------*/ 1099 | .product-detail-container { 1100 | flex-direction: column; 1101 | } 1102 | .big-image-container { 1103 | width: 70%; 1104 | height: 100%; 1105 | } 1106 | .desc-background { 1107 | font-size: 6rem; 1108 | } 1109 | /*-------------------- CART PAGE ------------------*/ 1110 | .cart-wrapper { 1111 | padding: 0; 1112 | } 1113 | .cart-container { 1114 | flex-direction: column; 1115 | } 1116 | .item-image { 1117 | width: 50%; 1118 | height: 10%; 1119 | } 1120 | .item-details { 1121 | width: 100%; 1122 | gap: 0.5rem; 1123 | } 1124 | /*---------------------- ALL PRODUCTS PAGE -----------------------*/ 1125 | .Allproducts-container{ 1126 | grid-template-columns: 1fr 1fr; 1127 | } 1128 | } 1129 | 1130 | 1131 | @media screen and (max-width: 650px) { 1132 | nav, .header, .success { 1133 | margin: 2rem; 1134 | } 1135 | .Allproducts-container { 1136 | margin: 4rem 2rem; 1137 | } 1138 | .products-outer-container, 1139 | .event-container, .footer { 1140 | padding: 4rem 2rem; 1141 | } 1142 | .features-section .title, 1143 | .products, .product-desc-container { 1144 | padding: 2rem; 1145 | } 1146 | .features-section .content { 1147 | padding: 0 2rem; 1148 | } 1149 | .newsletter { 1150 | padding: 6rem 2rem; 1151 | } 1152 | /*-------------------- HEADER SECTION ------------------*/ 1153 | .header-content { 1154 | gap: 2rem; 1155 | margin-bottom: 2rem; 1156 | } 1157 | .header-content h1 { 1158 | font-size: 3rem; 1159 | } 1160 | .header-content p { 1161 | width: 100%; 1162 | } 1163 | .header-featured { 1164 | grid-template-columns: 1fr 1fr; 1165 | } 1166 | .header .btn { 1167 | width: 60%; 1168 | } 1169 | /*-------------------- EVENTS SECTION ------------------*/ 1170 | .event-banner-left .event-card:first-child { 1171 | padding-top: 2rem; 1172 | } 1173 | .event-banner-left .event-card:first-child img { 1174 | width: 200px; 1175 | height: 180px; 1176 | } 1177 | .event-banner-left .event-card:last-child { 1178 | padding: 2rem; 1179 | } 1180 | .event-card button { 1181 | font-size: 1rem; 1182 | } 1183 | .event-banner-right { 1184 | flex-direction: column; 1185 | } 1186 | /*-------------------- PRODUCTS SECTION ------------------*/ 1187 | .product-card img { 1188 | width: 300px; 1189 | height: 320px; 1190 | } 1191 | /*-------------------- FEATURES SECTION ------------------*/ 1192 | .features-section .title h1 { 1193 | font-size: 2.5rem; 1194 | } 1195 | .features-section .content .left .feature-background { 1196 | font-size: 5rem; 1197 | } 1198 | .features-section .content .right { 1199 | flex-direction: column; 1200 | } 1201 | /*-------------------- NEWSLETTER SECTION ------------------*/ 1202 | .newsletter-background { 1203 | font-size: 4.8rem; 1204 | } 1205 | .newsletter h1 { 1206 | margin-bottom: 0.5rem; 1207 | font-size: 1.8rem; 1208 | } 1209 | .newsletter p { 1210 | margin-bottom: 1rem; 1211 | } 1212 | .newsletter input { 1213 | margin-bottom: 1rem; 1214 | } 1215 | .newsletter button { 1216 | margin-left: 0; 1217 | } 1218 | /*-------------------- FOOTER SECTION ------------------*/ 1219 | .copyright { 1220 | grid-template-columns: 1fr; 1221 | } 1222 | /*-------------------- SINGLE PRODUCT PAGE ------------------*/ 1223 | .desc-background { 1224 | font-size: 4.5rem; 1225 | } 1226 | .small-image{ 1227 | width: 80px; 1228 | height: 80px; 1229 | } 1230 | /*-------------------- CART PAGE ------------------*/ 1231 | .item-card { 1232 | flex-direction: column; 1233 | } 1234 | .Allproducts-container{ 1235 | grid-template-columns: 1fr 1fr; 1236 | grid-gap: 2rem; 1237 | } 1238 | .Allproduct-card { 1239 | width: 200px; 1240 | } 1241 | } 1242 | 1243 | 1244 | @media screen and (max-width: 450px) { 1245 | .event-banner-left .event-card:first-child { 1246 | flex-direction: column; 1247 | } 1248 | .event-card button { 1249 | font-size: 0.8rem; 1250 | width: 100%; 1251 | padding: 0.5rem 1rem; 1252 | } 1253 | .newsletter-background { 1254 | font-size: 4rem; 1255 | } 1256 | .header .btn { 1257 | width: 80%; 1258 | } 1259 | /*-------- SINGLE PRODUCT PAGE ----------*/ 1260 | .small-image{ 1261 | width: 50px; 1262 | height: 50px; 1263 | } 1264 | .desc-background { 1265 | font-size: 3.2rem; 1266 | } 1267 | .desc-details, .desc-care { 1268 | display: flex; 1269 | flex-direction: column; 1270 | gap: 2rem; 1271 | } 1272 | /*-------------------- CART PAGE ------------------*/ 1273 | .item-image { 1274 | width: 80%; 1275 | height: 20%; 1276 | } 1277 | .Allproducts-container{ 1278 | grid-template-columns: 1fr; 1279 | } 1280 | .Allproduct-card { 1281 | width: 280px; 1282 | } 1283 | } --------------------------------------------------------------------------------