├── .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 | 
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 | 
61 |
62 | The confetti effect is implemented on the payment success page after the user successfully checkouts their cart
63 | 
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 |
23 |
24 |
25 |
26 |
GET 30% Off
27 |
USE PROMO CODE
28 |
DINEWEEKENDSALE
29 |
30 |
31 |
32 |
33 |
34 |
35 |
Flex Sweatshirt
36 |
37 | $100.00
38 | $75.00
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
Flex Push Button Bomber
47 |
48 | $225.00
49 | $190.00
50 |
51 |
52 |
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 |
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 |
See All Product
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 |
Start Shopping
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
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 |
14 |
15 | {children}
16 |
17 |
20 |
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 |
17 |
18 |
19 |
20 |
21 | Female
22 | Male
23 | Kids
24 | All Products
25 |
26 |
27 |
28 |
29 |
32 |
33 | {/* onChange={(event) => {
34 | setSearchTerm(event.target.value);
35 | }} */}
36 |
37 | {showCart ?
38 |
39 | setShowCart(false)}>
40 |
41 | {totalQty}
42 |
43 |
44 | :
45 | setShowCart(true)}>
46 |
47 | {totalQty}
48 |
49 | }
50 |
51 |
52 |
setToggleMenu(true)} />
53 | {toggleMenu && (
54 |
55 |
56 |
57 |
58 |
setToggleMenu(false)} />
59 |
60 |
61 | setShowCart(false)}>
62 |
63 | {totalQty}
64 |
65 |
66 | Female
67 | Male
68 | Kids
69 | All Products
70 |
71 |
72 | )}
73 |
74 |
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 |
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 |
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 |
49 |
50 |
51 |
52 |
{item.name}
53 | onRemove(item)} className='remove-item'>
54 |
55 |
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 | Process to Checkout
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 |
onAdd(product, qty)}> Add to Cart
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 |
34 | Continue Shopping
35 |
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 | }
--------------------------------------------------------------------------------