From 14065666a6ade921050155a2acdc9f789cfacbb0 Mon Sep 17 00:00:00 2001 From: Mateo Narvaez Date: Tue, 30 Aug 2022 17:26:00 +0100 Subject: [PATCH 1/5] Done --- package.json | 3 + postcss.config.js | 6 + src/api/products.ts | 131 ++++++++++++ src/assets/Brands/baldoriaLogo.png | Bin 0 -> 19244 bytes src/assets/Products/branneri.jpg | Bin 0 -> 12884 bytes src/assets/Products/gaston.jpg | Bin 0 -> 12485 bytes src/assets/Products/silentPool.jpg | Bin 0 -> 13038 bytes src/assets/Products/umami.jpg | Bin 0 -> 12572 bytes src/assets/contacts/facebook.tsx | 6 + src/assets/contacts/instagram.tsx | 5 + src/assets/contacts/linkedin.tsx | 13 ++ src/assets/contacts/medium.tsx | 12 ++ src/assets/icons/addIcon.tsx | 7 + src/assets/icons/basketIcon.tsx | 9 + src/assets/icons/categoriesIcon.tsx | 8 + src/assets/icons/locationIcon.tsx | 7 + src/assets/icons/profileIcon.tsx | 7 + src/assets/logo.tsx | 11 + src/assets/logoAlt.tsx | 11 + src/common.ts | 21 ++ src/components/Brand.tsx | 66 ++++++ src/components/Footer.tsx | 54 +++++ src/components/NavBar.tsx | 28 +++ src/components/Products.tsx | 38 ++++ src/pages/index.tsx | 25 ++- src/styles/Brand.module.css | 42 ++++ src/styles/Footer.module.css | 17 ++ src/styles/Home.module.css | 2 +- src/styles/NavBar.module.css | 15 ++ src/styles/Product.module.css | 21 ++ src/styles/globals.css | 24 ++- tailwind.config.js | 11 + yarn.lock | 306 +++++++++++++++++++++++++++- 33 files changed, 886 insertions(+), 20 deletions(-) create mode 100644 postcss.config.js create mode 100644 src/api/products.ts create mode 100644 src/assets/Brands/baldoriaLogo.png create mode 100644 src/assets/Products/branneri.jpg create mode 100644 src/assets/Products/gaston.jpg create mode 100644 src/assets/Products/silentPool.jpg create mode 100644 src/assets/Products/umami.jpg create mode 100644 src/assets/contacts/facebook.tsx create mode 100644 src/assets/contacts/instagram.tsx create mode 100644 src/assets/contacts/linkedin.tsx create mode 100644 src/assets/contacts/medium.tsx create mode 100644 src/assets/icons/addIcon.tsx create mode 100644 src/assets/icons/basketIcon.tsx create mode 100644 src/assets/icons/categoriesIcon.tsx create mode 100644 src/assets/icons/locationIcon.tsx create mode 100644 src/assets/icons/profileIcon.tsx create mode 100644 src/assets/logo.tsx create mode 100644 src/assets/logoAlt.tsx create mode 100644 src/common.ts create mode 100644 src/components/Brand.tsx create mode 100644 src/components/Footer.tsx create mode 100644 src/components/NavBar.tsx create mode 100644 src/components/Products.tsx create mode 100644 src/styles/Brand.module.css create mode 100644 src/styles/Footer.module.css create mode 100644 src/styles/NavBar.module.css create mode 100644 src/styles/Product.module.css create mode 100644 tailwind.config.js diff --git a/package.json b/package.json index 974fad4..bcd8618 100644 --- a/package.json +++ b/package.json @@ -16,8 +16,11 @@ "devDependencies": { "@types/node": "^18.7.13", "@types/react": "^18.0.17", + "autoprefixer": "^10.4.8", "eslint": "8.23.0", "eslint-config-next": "12.2.5", + "postcss": "^8.4.16", + "tailwindcss": "^3.1.8", "typescript": "^4.8.2" } } diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/api/products.ts b/src/api/products.ts new file mode 100644 index 0000000..0498227 --- /dev/null +++ b/src/api/products.ts @@ -0,0 +1,131 @@ +// This is a fake api for testing purposes + +import branneri from "../assets/Products/branneri.jpg"; +import gaston from "../assets/Products/gaston.jpg"; +import silentPool from "../assets/Products/silentPool.jpg"; +import umami from "../assets/Products/umami.jpg"; +import { Category } from "src/common"; + + +export default + [ + { + id: 1, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: umami, + }, { + id: 2, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: silentPool, + }, { + id: 3, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: branneri, + }, { + id: 4, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: gaston, + }, + // second + { + id: 5, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: umami, + }, { + id: 6, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: silentPool, + }, { + id: 7, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: branneri, + }, { + id: 8, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: gaston, + }, + // third + { + id: 9, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: umami, + }, { + id: 10, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: silentPool, + }, { + id: 11, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: branneri, + }, { + id: 12, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: gaston, + }, + // fourth + { + id: 13, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: umami, + }, { + id: 14, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: silentPool, + }, { + id: 15, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: branneri, + }, { + id: 16, + name: "gaston", + fullName: "MR GASTON", + price: 32, + category: Category.Brandy, + image: gaston, + } + ] \ No newline at end of file diff --git a/src/assets/Brands/baldoriaLogo.png b/src/assets/Brands/baldoriaLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..1137d73e3791ac53650a90f627664feb38bca6a5 GIT binary patch literal 19244 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 literal 0 HcmV?d00001 diff --git a/src/assets/Products/branneri.jpg b/src/assets/Products/branneri.jpg new file mode 100644 index 0000000000000000000000000000000000000000..624901f37443018eb302ddc181ed2ee56968f2f3 GIT binary patch literal 12884 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 literal 0 HcmV?d00001 diff --git a/src/assets/Products/silentPool.jpg b/src/assets/Products/silentPool.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7905fb65eb3e8f363a8a97314c8642ebdd2df76c GIT binary patch literal 13038 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 literal 0 HcmV?d00001 diff --git a/src/assets/Products/umami.jpg b/src/assets/Products/umami.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2c81dee9711ec22373e90e37ce1b8ab0ef718b6 GIT binary patch literal 12572 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 + + + +} \ No newline at end of file diff --git a/src/assets/contacts/instagram.tsx b/src/assets/contacts/instagram.tsx new file mode 100644 index 0000000..26cbc22 --- /dev/null +++ b/src/assets/contacts/instagram.tsx @@ -0,0 +1,5 @@ +export default function AddIcon() { + return + + +} \ No newline at end of file diff --git a/src/assets/contacts/linkedin.tsx b/src/assets/contacts/linkedin.tsx new file mode 100644 index 0000000..43d508a --- /dev/null +++ b/src/assets/contacts/linkedin.tsx @@ -0,0 +1,13 @@ +export default function AddIcon() { + return + + + + + + + + + + +} \ No newline at end of file diff --git a/src/assets/contacts/medium.tsx b/src/assets/contacts/medium.tsx new file mode 100644 index 0000000..c7965e8 --- /dev/null +++ b/src/assets/contacts/medium.tsx @@ -0,0 +1,12 @@ +export default function AddIcon() { + return + + + + + + + + + +} \ No newline at end of file diff --git a/src/assets/icons/addIcon.tsx b/src/assets/icons/addIcon.tsx new file mode 100644 index 0000000..5cbce8b --- /dev/null +++ b/src/assets/icons/addIcon.tsx @@ -0,0 +1,7 @@ +export default function AddIcon() { + return + + + + +} \ No newline at end of file diff --git a/src/assets/icons/basketIcon.tsx b/src/assets/icons/basketIcon.tsx new file mode 100644 index 0000000..59cf32b --- /dev/null +++ b/src/assets/icons/basketIcon.tsx @@ -0,0 +1,9 @@ +export default function BasketIcon() { + return( + + + + + + ) +} \ No newline at end of file diff --git a/src/assets/icons/categoriesIcon.tsx b/src/assets/icons/categoriesIcon.tsx new file mode 100644 index 0000000..b6224b7 --- /dev/null +++ b/src/assets/icons/categoriesIcon.tsx @@ -0,0 +1,8 @@ +export default function CategoriesIcon() { + return + + + + + +} \ No newline at end of file diff --git a/src/assets/icons/locationIcon.tsx b/src/assets/icons/locationIcon.tsx new file mode 100644 index 0000000..a03946b --- /dev/null +++ b/src/assets/icons/locationIcon.tsx @@ -0,0 +1,7 @@ +export default function LocationIcon() { + return ( + + + + ) +} diff --git a/src/assets/icons/profileIcon.tsx b/src/assets/icons/profileIcon.tsx new file mode 100644 index 0000000..f73d274 --- /dev/null +++ b/src/assets/icons/profileIcon.tsx @@ -0,0 +1,7 @@ +export default function ProfileIcon() { + return + + + + +} \ No newline at end of file diff --git a/src/assets/logo.tsx b/src/assets/logo.tsx new file mode 100644 index 0000000..5557044 --- /dev/null +++ b/src/assets/logo.tsx @@ -0,0 +1,11 @@ +export default function Logo() { + return ( + + + + + + + ) + +} \ No newline at end of file diff --git a/src/assets/logoAlt.tsx b/src/assets/logoAlt.tsx new file mode 100644 index 0000000..04f0012 --- /dev/null +++ b/src/assets/logoAlt.tsx @@ -0,0 +1,11 @@ +export default function Logo() { + return ( + + + + + + + + ) +} \ No newline at end of file diff --git a/src/common.ts b/src/common.ts new file mode 100644 index 0000000..83f400e --- /dev/null +++ b/src/common.ts @@ -0,0 +1,21 @@ +export const enum Category { + Gin = "Gin", Vodka = "Vodka", Brandy = "Brandy" +} + +export interface Brand{ + name: string; + fullName: string; + logo: any; + description: string; + location: string; + categories: Category[]; +} + +export interface Product{ + id: number; + name: string; + fullName: string; + price: number; + image: any; + category: Category; +} diff --git a/src/components/Brand.tsx b/src/components/Brand.tsx new file mode 100644 index 0000000..2ed666f --- /dev/null +++ b/src/components/Brand.tsx @@ -0,0 +1,66 @@ +import { Brand, Category } from "src/common"; +import Image from 'next/image'; + +import baldorianLogo from "../assets/Brands/baldoriaLogo.png"; +import LocationIcon from "../assets/icons/locationIcon"; +import CategoriesIcon from "../assets/icons/categoriesIcon"; + +import styles from "../styles/Brand.module.css"; + +interface BrandProps { + name: string; +} + +export default function BrandComponent(props: BrandProps) { + + //simulatio of api call + function getApiData(name: string): Brand | null { + if (name == "baldoria") { + return { + name: "Baldoria", + fullName: "Baldoria Vermounth", + logo: baldorianLogo, + description: "Badoria rosso is a red vermouth that balances fresh, herby bitter notes against. Kiss My Rhubarb takes its origins from an old handwritten recipe from co-creators Niels’ and Wouters’ rebellious grandparents.", + location: "London, United Kindom", + categories: [Category.Gin, Category.Vodka], + }; + } else + return null; + } + + + let brandData: Brand | null = getApiData(props.name); + + return ( +
+ + {/* Brand Logo */} +
Brand Logo
+ + {/* Brand Details */} +
+

{brandData?.fullName}

+

{brandData?.description}

+ +
+
+ +
+ Location +

{brandData?.location}

+
+
+
+ +
+ Product Categories + + {/* Categorist list */} + {brandData?.categories.map((category: Category) => { + return
{category}
+ })} +
+
+
+ ) +} \ No newline at end of file diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx new file mode 100644 index 0000000..b69fb73 --- /dev/null +++ b/src/components/Footer.tsx @@ -0,0 +1,54 @@ +import Logo from "../assets/logoAlt"; +import styles from "../styles/Footer.module.css"; + +import MediumIcon from "../assets/contacts/medium"; +import FacebookIcon from "../assets/contacts/facebook"; +import InstagramIcon from "../assets/contacts/instagram"; +import Linkedin from "../assets/contacts/linkedin"; + +export default function Footer() { + return( +
+
+
+
+
+
Community
+

Lexir for Brands

+

Business Buyers

+

Sales Affiliates

+
+
+
Platform
+

Resources

+

Pricing

+

Get Started

+
+
+

Company

+

About

+

Contact

+

Legal

+
+
+
Lexir Shops
+

Brands

+

Spirits

+

Wine

+

Blog

+
+
+ +
+
+
+
+ 2022 Lexir Inc. +
+ Privacy + Terms of Service +
+
+
+
+)} \ No newline at end of file diff --git a/src/components/NavBar.tsx b/src/components/NavBar.tsx new file mode 100644 index 0000000..c25aad3 --- /dev/null +++ b/src/components/NavBar.tsx @@ -0,0 +1,28 @@ +import Logo from "../assets/logo"; +import ProfileIcon from "../assets/icons/profileIcon"; +import BasketIcon from "../assets/icons/basketIcon"; + +import styles from "../styles/NavBar.module.css"; + +export default function NavBar() { + return ( +
+ +
+
+ ); +} \ No newline at end of file diff --git a/src/components/Products.tsx b/src/components/Products.tsx new file mode 100644 index 0000000..579852b --- /dev/null +++ b/src/components/Products.tsx @@ -0,0 +1,38 @@ +import Image from "next/image"; +import { Product } from "src/common"; +import styles from "../styles/Product.module.css"; +import products from "../api/products"; +import AddIcon from "../assets/icons/addIcon"; + +let productsList: Product[] = products; + +interface ProductsProps { + search: string; +} + +function ProductCard(product: Product) { + return (
+
Product Image
+

MR GASTON

€{product.price}
+

{product.category}

+
) +} + +export default function Products(props: ProductsProps) { + + //Simulation of a call to the fake api + function getApiData(name: string): Product[] | null { + if (name == "baldoria") { + return productsList; + } else + return null; + } + + let products: Product[] | null = getApiData(props.search); + + return
+ {products?.map((product: Product) => { + return ProductCard(product); + })} +
+} \ No newline at end of file diff --git a/src/pages/index.tsx b/src/pages/index.tsx index dbeaec2..13e4218 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,25 +1,32 @@ import Head from "next/head"; +import NavBar from "@components/NavBar"; +import Brand from "@components/Brand"; +import Products from "@components/Products"; +import Footer from "@components/Footer"; + import styles from "../styles/Home.module.css"; export default function Home() { return ( -
+
Lexir Frontend Assessment! -
-

- Welcome to Lexir Frontend Assessment! -

+ -

- Get started by editing{" "} - pages/index.tsx -

+
+
+ +
+
+ +
+ +
); } diff --git a/src/styles/Brand.module.css b/src/styles/Brand.module.css new file mode 100644 index 0000000..6e06b38 --- /dev/null +++ b/src/styles/Brand.module.css @@ -0,0 +1,42 @@ +.lato{ + font-family: 'Lato', sans-serif; +} + +.brandName{ + font-family: source-serif-pro, serif; + font-weight: 700; + font-style: bold; + font-size: 35px; +} +.brandDescription{ + font-weight: 400; + font-size: 18px; + line-height: 25px; + color: #2D2D2D; +} + +.btnReadMore{ + font-weight: 700; + font-size: 20px; + line-height: 25px; + color: #1C8C64 +} + +.location{ + font-size: 16px; + line-height: 25px; + color: black; +} +.locationInfo{ + font-size: 22px; + line-height: 35px; + color: #595959; +} +.categories{ + font-size: 16px; + line-height: 25px; + color: black; +} +.category{ + background-color: #F9F9F9; +} \ No newline at end of file diff --git a/src/styles/Footer.module.css b/src/styles/Footer.module.css new file mode 100644 index 0000000..c1ea7af --- /dev/null +++ b/src/styles/Footer.module.css @@ -0,0 +1,17 @@ +.footer{ + color: #fff; + background-color: #2D2D2D; +} + +.sectionName{ + text-transform: uppercase; + color: #8F8F8F +} +.hr{ + border: none; + height: 1px; + background-color: #8F8F8F; /* Modern Browsers */ +} +.copyRight{ + color: #8F8F8F; +} \ No newline at end of file diff --git a/src/styles/Home.module.css b/src/styles/Home.module.css index 708cbed..45437a8 100644 --- a/src/styles/Home.module.css +++ b/src/styles/Home.module.css @@ -7,7 +7,7 @@ padding: 4rem 0; flex: 1; display: flex; - flex-direction: column; + flex-direction: row; justify-content: center; align-items: center; } diff --git a/src/styles/NavBar.module.css b/src/styles/NavBar.module.css new file mode 100644 index 0000000..51aa827 --- /dev/null +++ b/src/styles/NavBar.module.css @@ -0,0 +1,15 @@ + + +.navList{ + font-family: 'Lato', sans-serif; + font-weight: 500; + font-size: 14px; + line-height: 20px; + color: #2D2D2D; +} + +.navList li{ + display: flex; + align-items: center; + gap: 0.5rem; +} \ No newline at end of file diff --git a/src/styles/Product.module.css b/src/styles/Product.module.css new file mode 100644 index 0000000..9d345ec --- /dev/null +++ b/src/styles/Product.module.css @@ -0,0 +1,21 @@ +.lato{ + font-family: 'Lato', sans-serif; + font-style: normal; +} +.bgCardColor{ + background-color: #F2F2F2; +} +.productName{ + font-size: 14px; + line-height: 25px; + color: #2D2D2D; +} +.price{ + color:#6B6B6B +} +.category{ + color: #8F8F8F; +} +.addButon{ + background-color: #F2F2F2 +} \ No newline at end of file diff --git a/src/styles/globals.css b/src/styles/globals.css index 4f18421..ca1fa3f 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,9 +1,14 @@ +/* Font Import from adobe*/ +/* I created a project with the fonts needed*/ +@import url("https://use.typekit.net/fqn1otf.css"); + + html, body { padding: 0; margin: 0; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Lato sans-serif; } a { @@ -15,6 +20,18 @@ a { box-sizing: border-box; } +main{ + display: flex; + margin-top: 2rem; +} +article{ + width: 36%; +} +section{ + width: 74%; + margin-bottom: 5rem; +} + @media (prefers-color-scheme: dark) { html { color-scheme: dark; @@ -24,3 +41,8 @@ a { background: black; } } + + +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..ca7fc1c --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,11 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./src/pages/**/*.{js,ts,jsx,tsx}", + "./src/components/*.{js,ts,jsx,tsx}", + ], + theme: { + extend: {}, + }, + plugins: [], +} diff --git a/yarn.lock b/yarn.lock index c4457fb..1d1104d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -244,6 +244,25 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-node@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.0.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" @@ -271,6 +290,19 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -325,6 +357,18 @@ ast-types-flow@^0.0.7: resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== +autoprefixer@^10.4.8: + version "10.4.8" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.8.tgz#92c7a0199e1cfb2ad5d9427bd585a3d75895b9e5" + integrity sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw== + dependencies: + browserslist "^4.21.3" + caniuse-lite "^1.0.30001373" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + axe-core@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" @@ -340,6 +384,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -348,13 +397,23 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" +browserslist@^4.21.3: + version "4.21.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" + integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== + dependencies: + caniuse-lite "^1.0.30001370" + electron-to-chromium "^1.4.202" + node-releases "^2.0.6" + update-browserslist-db "^1.0.5" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -368,7 +427,12 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30001332: +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001373: version "1.0.30001384" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001384.tgz#029527c2d781a3cfef13fa63b3a78a6088e35973" integrity sha512-BBWt57kqWbc0GYZXb47wTXpmAgqr5LSibPzNjk/AWMdmJMQhLqOl3c/Kd4OAU/tu4NLfYkMx8Tlq3RVBkOBolQ== @@ -381,6 +445,21 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -388,7 +467,7 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: +color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -412,6 +491,11 @@ cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + csstype@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" @@ -456,6 +540,25 @@ define-properties@^1.1.3, define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== + +detective@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== + dependencies: + acorn-node "^1.8.2" + defined "^1.0.0" + minimist "^1.2.6" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -463,6 +566,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -477,6 +585,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +electron-to-chromium@^1.4.202: + version "1.4.234" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.234.tgz#ff8fb29c2edac74ef3935ca03a2ecbe62ede400b" + integrity sha512-VqlJ4Ihd9F7eQIfwEtf7C0eZZDl6bQtpez8vx8VHN9iCZEzePZjr7n9OGFHSav4WN9zfLa2CFLowj0siBoc0hQ== + emoji-regex@^9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" @@ -527,6 +640,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -744,7 +862,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.9: +fast-glob@^3.2.11, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -807,11 +925,21 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -854,14 +982,14 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -glob-parent@^5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.1, glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -999,6 +1127,13 @@ is-bigint@^1.0.1: dependencies: has-bigints "^1.0.1" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-boolean-object@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" @@ -1031,7 +1166,7 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -1153,6 +1288,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lilconfig@^2.0.5, lilconfig@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" + integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -1255,11 +1395,31 @@ next@12.2.5: "@next/swc-win32-ia32-msvc" "12.2.5" "@next/swc-win32-x64-msvc" "12.2.5" +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.12.0, object-inspect@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" @@ -1385,11 +1545,60 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +postcss-import@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-nested@5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.6.tgz#466343f7fc8d3d46af3e7dba3fcd47d052a945bc" + integrity sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA== + dependencies: + postcss-selector-parser "^6.0.6" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.6: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + postcss@8.4.14: version "8.4.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" @@ -1399,6 +1608,15 @@ postcss@8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.14, postcss@^8.4.16: + version "8.4.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -1423,6 +1641,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + react-dom@18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -1443,6 +1666,20 @@ react@18.2.0: dependencies: loose-envify "^1.1.0" +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" @@ -1467,7 +1704,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.20.0, resolve@^1.22.0: +resolve@^1.1.7, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -1620,6 +1857,34 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +tailwindcss@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.1.8.tgz#4f8520550d67a835d32f2f4021580f9fddb7b741" + integrity sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g== + dependencies: + arg "^5.0.2" + chokidar "^3.5.3" + color-name "^1.1.4" + detective "^5.2.1" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.11" + glob-parent "^6.0.2" + is-glob "^4.0.3" + lilconfig "^2.0.6" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.14" + postcss-import "^14.1.0" + postcss-js "^4.0.0" + postcss-load-config "^3.1.4" + postcss-nested "5.0.6" + postcss-selector-parser "^6.0.10" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.1" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -1686,6 +1951,14 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +update-browserslist-db@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -1698,6 +1971,11 @@ use-sync-external-store@1.2.0: resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -1726,11 +2004,21 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 9454e08a297421fa52b6ce2bdaac5613f18ba18f Mon Sep 17 00:00:00 2001 From: Mateo Narvaez Date: Wed, 31 Aug 2022 03:30:19 +0100 Subject: [PATCH 2/5] Responsive - mobile --- src/{common.ts => Models.ts} | 0 src/api/brands.ts | 11 ++++++++ src/api/products.ts | 2 +- src/components/{Brand.tsx => BrandInfo.tsx} | 20 ++++++--------- .../{Products.tsx => BrandProducts.tsx} | 4 +-- src/components/Footer.tsx | 21 ++++++++-------- src/components/NavBar.tsx | 10 ++++++-- src/pages/brand/[id]/index.tsx | 3 +++ src/pages/index.tsx | 12 ++++----- src/styles/Home.module.css | 4 --- src/styles/NavBar.module.css | 22 ++++++++++++++-- src/styles/globals.css | 25 ++++++++++++++++--- 12 files changed, 89 insertions(+), 45 deletions(-) rename src/{common.ts => Models.ts} (100%) create mode 100644 src/api/brands.ts rename src/components/{Brand.tsx => BrandInfo.tsx} (71%) rename src/components/{Products.tsx => BrandProducts.tsx} (90%) create mode 100644 src/pages/brand/[id]/index.tsx diff --git a/src/common.ts b/src/Models.ts similarity index 100% rename from src/common.ts rename to src/Models.ts diff --git a/src/api/brands.ts b/src/api/brands.ts new file mode 100644 index 0000000..f92521d --- /dev/null +++ b/src/api/brands.ts @@ -0,0 +1,11 @@ +import { Category } from "src/Models"; +import baldorianLogo from "../assets/Brands/baldoriaLogo.png"; + +export default { + name: "Baldoria", + fullName: "Baldoria Vermounth", + logo: baldorianLogo, + description: "Badoria rosso is a red vermouth that balances fresh, herby bitter notes against. Kiss My Rhubarb takes its origins from an old handwritten recipe from co-creators Niels’ and Wouters’ rebellious grandparents.", + location: "London, United Kindom", + categories: [Category.Gin, Category.Vodka], +} \ No newline at end of file diff --git a/src/api/products.ts b/src/api/products.ts index 0498227..47a2fa2 100644 --- a/src/api/products.ts +++ b/src/api/products.ts @@ -4,7 +4,7 @@ import branneri from "../assets/Products/branneri.jpg"; import gaston from "../assets/Products/gaston.jpg"; import silentPool from "../assets/Products/silentPool.jpg"; import umami from "../assets/Products/umami.jpg"; -import { Category } from "src/common"; +import { Category } from "src/Models"; export default diff --git a/src/components/Brand.tsx b/src/components/BrandInfo.tsx similarity index 71% rename from src/components/Brand.tsx rename to src/components/BrandInfo.tsx index 2ed666f..7e7d40e 100644 --- a/src/components/Brand.tsx +++ b/src/components/BrandInfo.tsx @@ -1,7 +1,8 @@ -import { Brand, Category } from "src/common"; +import { Brand, Category } from "src/Models"; import Image from 'next/image'; - +import brandApi from '../api/brands'; import baldorianLogo from "../assets/Brands/baldoriaLogo.png"; + import LocationIcon from "../assets/icons/locationIcon"; import CategoriesIcon from "../assets/icons/categoriesIcon"; @@ -16,14 +17,7 @@ export default function BrandComponent(props: BrandProps) { //simulatio of api call function getApiData(name: string): Brand | null { if (name == "baldoria") { - return { - name: "Baldoria", - fullName: "Baldoria Vermounth", - logo: baldorianLogo, - description: "Badoria rosso is a red vermouth that balances fresh, herby bitter notes against. Kiss My Rhubarb takes its origins from an old handwritten recipe from co-creators Niels’ and Wouters’ rebellious grandparents.", - location: "London, United Kindom", - categories: [Category.Gin, Category.Vodka], - }; + return brandApi; } else return null; } @@ -35,7 +29,7 @@ export default function BrandComponent(props: BrandProps) {
{/* Brand Logo */} -
Brand Logo
+
Brand Logo
{/* Brand Details */}
@@ -43,14 +37,14 @@ export default function BrandComponent(props: BrandProps) {

{brandData?.description}

-
+
Location

{brandData?.location}

-
+
Product Categories diff --git a/src/components/Products.tsx b/src/components/BrandProducts.tsx similarity index 90% rename from src/components/Products.tsx rename to src/components/BrandProducts.tsx index 579852b..28e9825 100644 --- a/src/components/Products.tsx +++ b/src/components/BrandProducts.tsx @@ -1,5 +1,5 @@ import Image from "next/image"; -import { Product } from "src/common"; +import { Product } from "src/Models"; import styles from "../styles/Product.module.css"; import products from "../api/products"; import AddIcon from "../assets/icons/addIcon"; @@ -30,7 +30,7 @@ export default function Products(props: ProductsProps) { let products: Product[] | null = getApiData(props.search); - return
+ return
{products?.map((product: Product) => { return ProductCard(product); })} diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index b69fb73..5a561b0 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -1,6 +1,5 @@ import Logo from "../assets/logoAlt"; import styles from "../styles/Footer.module.css"; - import MediumIcon from "../assets/contacts/medium"; import FacebookIcon from "../assets/contacts/facebook"; import InstagramIcon from "../assets/contacts/instagram"; @@ -10,34 +9,34 @@ export default function Footer() { return(