diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000..3261d68a --- /dev/null +++ b/.babelrc @@ -0,0 +1,15 @@ +{ + "presets": [ + "next/babel" + ], + "plugins": [ + [ + "styled-components", + { + "ssr": true, + "displayName": true, + "preprocess": false + } + ] + ] +} \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json index bffb357a..9958a912 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,3 +1,29 @@ { - "extends": "next/core-web-vitals" + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "next/core-web-vitals", + "airbnb" + ], + "overrides": [ + ], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "react" + ], + "rules": { + "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }], + "react/react-in-jsx-scope": "off", + "react/jsx-props-no-spreading": "off", + "no-return-await":"off", + "import/prefer-default-export":"off", + "react/jsx-no-bind":"off", + "react/jsx-no-constructed-context-values": "off", + "@next/next/no-img-element": "off" + } } diff --git a/.gitignore b/.gitignore index c87c9b39..eb6dc807 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,8 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# development +.editorconfig + +.vercel diff --git a/next.config.js b/next.config.js index ae887958..3d3bc999 100644 --- a/next.config.js +++ b/next.config.js @@ -2,6 +2,6 @@ const nextConfig = { reactStrictMode: true, swcMinify: true, -} +}; -module.exports = nextConfig +module.exports = nextConfig; diff --git a/package.json b/package.json index d6d970b0..dbcee14d 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,22 @@ "lint": "next lint" }, "dependencies": { + "babel-plugin-styled-components": "^2.0.7", "next": "13.0.6", + "prop-types": "^15.8.1", "react": "18.2.0", - "react-dom": "18.2.0" + "react-dom": "18.2.0", + "react-elastic-carousel": "^0.11.5", + "react-switch": "^7.0.0", + "styled-components": "^5.3.6" }, "devDependencies": { - "eslint": "8.29.0", - "eslint-config-next": "13.0.6" + "eslint": "^7.32.0 || ^8.2.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-next": "13.0.6", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" } } diff --git a/pages/_app.js b/pages/_app.js deleted file mode 100644 index 23d1ca6c..00000000 --- a/pages/_app.js +++ /dev/null @@ -1,6 +0,0 @@ - -function MyApp({ Component, pageProps }) { - return -} - -export default MyApp diff --git a/pages/index.js b/pages/index.js deleted file mode 100644 index f80b4ce2..00000000 --- a/pages/index.js +++ /dev/null @@ -1,8 +0,0 @@ - -export default function Home() { - return ( -
-

Hello, World!

-
- ) -} diff --git a/src/assets/imgs/favicon.ico b/src/assets/imgs/favicon.ico new file mode 100644 index 00000000..fa0c73e4 Binary files /dev/null and b/src/assets/imgs/favicon.ico differ diff --git a/src/assets/imgs/stadium.jpg b/src/assets/imgs/stadium.jpg new file mode 100644 index 00000000..f47fd5bf Binary files /dev/null and b/src/assets/imgs/stadium.jpg differ diff --git a/src/assets/styles/GlobalStyles.js b/src/assets/styles/GlobalStyles.js new file mode 100644 index 00000000..abb6e8d4 --- /dev/null +++ b/src/assets/styles/GlobalStyles.js @@ -0,0 +1,20 @@ +import { createGlobalStyle } from 'styled-components'; + +export default createGlobalStyle` + * { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Sora', sans-serif; + } + + body { + background-color: ${({ theme }) => theme.primaryColor}; + color: ${({ theme }) => theme.tertiaryColor}; + } + + a{ + text-decoration: none; + color:${({ theme }) => theme.tertiaryColor}; + } +`; diff --git a/src/assets/styles/HeaderStyled.js b/src/assets/styles/HeaderStyled.js new file mode 100644 index 00000000..6d38fda5 --- /dev/null +++ b/src/assets/styles/HeaderStyled.js @@ -0,0 +1,193 @@ +import styled, { css } from 'styled-components'; + +export const StyledHeader = styled.header` + background-color: ${({ theme }) => theme.primaryColor}; + display: flex; + padding: 20px 20px; + display: flex; + align-items: center; + justify-content: space-between; + ${({ menuOpen }) => menuOpen && css` + position: fixed; + width: 100%; + top: 0; + z-index: 1; + `} + + .nav-desktop { + display: none; + + @media (min-width: 769px){ + display: block; + } + + ul { + display: flex; + flex-direction: row; + list-style: none; + gap: 26px; + } + } +`; + +export const ContainerLogo = styled.div` + display: flex; + align-items: center; + gap: 16px; + ${({ menuOpen }) => menuOpen && css` + display: none; + `} + + h1 { + color: ${({ theme }) => theme.secondaryColor}; + } + + @media (max-width: 470px) { + h1 { + font-size:26px; + } + } +`; + +export const MenuMobile = styled.div` + position: relative; + width: 100%; + display: none; + margin-bottom: 40px; + margin-right: 12px; + + .icon { + position: absolute; + z-index: 4; + right: 10%; + height: 44px; + cursor: pointer; + } + + .icon.iconActive .hamburguer { + background: transparent; + box-shadow: 0 2px 5px transparent; + margin-top: 15px; + + ::after { + top: 0; + background-color: ${({ theme }) => theme.secondaryColor}; + transform: rotate(225deg); + box-shadow: 0 -2px 5px rgba(0,0,0,0.2); + } + ::before { + top: 0; + background-color: ${({ theme }) => theme.secondaryColor}; + transform: rotate(135deg); + box-shadow: 0 -2px 5px rgba(0,0,0,0.2); + } + } + + .hamburguer { + top: 40%; + left: 10%; + width: 30px; + height: 6px; + background-color: ${({ theme }) => theme.secondaryColor}; + position: absolute; + box-shadow: 0 2px 5px rgba(0,0,0,0.2); + + ::before { + top: -12px; + content: ''; + position: absolute; + width: 37px; + height: 6px; + background-color: ${({ theme }) => theme.secondaryColor}; + box-shadow: 0 2px 5px rgba(0,0,0,0.2); + transition: 0.5s; + } + ::after { + top: 12px; + content: ''; + position: absolute; + width: 37px; + height: 6px; + background-color: ${({ theme }) => theme.secondaryColor}; + box-shadow: 0 2px 5px rgba(0,0,0,0.2); + transition: 0.5s; + } + } + + .menuOpen { + width: 100%; + height: 100vh; + box-shadow: 10px 0px 69px 0px rgba(0,0,0,0.59); + } + + .menuClose { + display: none; + width: 0px; + } + + .nav-mobile { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + } + + @media (max-width: 768px) { + display: block; + } + + @media (max-width: 450px) { + .icon.iconActive .hamburguer { + + ::after { + right: 10px; + } + ::before { + right: 10px; + } + } + + .hamburguer { + width: 25px; + height: 4px; + + ::before { + top: -10px; + width: 32px; + height: 4px; + } + ::after { + top: 10px; + width: 32px; + height: 4px; + } + } + + } +`; + +export const ListNavMenu = styled.ul` + display: flex; + flex-direction: column; + align-items:center; + justify-content: center; + gap: 48px; + list-style: none; + height: 100%; + + li{ + a{ + padding: 10px 15px; + border-radius: 10px; + transition: 0.3s ease-in; + color:${({ theme }) => theme.textColor}; + font-weight: bold; + font-size: 18px; + + &:hover { + background-color: ${({ theme }) => theme.secondaryColor}; + color: ${({ theme }) => theme.textColorHover}; + } + } + } +`; diff --git a/src/assets/styles/HomeStyled.js b/src/assets/styles/HomeStyled.js new file mode 100644 index 00000000..c3004519 --- /dev/null +++ b/src/assets/styles/HomeStyled.js @@ -0,0 +1,116 @@ +import styled from 'styled-components'; + +export const Main = styled.main` + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + position: relative; +`; + +export const Container = styled.div` + width: 90%; + position: absolute; + bottom: -125px; + + a { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + padding: 10px; + border-radius: 10px; + background-color: ${({ theme }) => theme.primaryColor}; + border: 1px solid ${({ theme }) => theme.tertiaryColor}; + min-width: 250px; + min-height: 230px; + + &:hover{ + background-color: ${({ theme }) => theme.secondaryColor}; + -webkit-box-shadow: 0px 0px 41px 8px rgba(145,145,145,1); + -moz-box-shadow: 0px 0px 41px 8px rgba(145,145,145,1); + box-shadow: 0px 0px 41px 8px rgba(145,145,145,1); + } + + img { + width: 150px; + } + + p{ + margin-top: 16px; + } + } + + + .rec.rec-arrow { + background-color: #fff; + color: ${({ theme }) => theme.secondaryColor}; + border-radius: 10px; + + &:disabled { + visibility: hidden; + } + + &:hover{ + background-color: ${({ theme }) => theme.secondaryColor}; + color: #fff; + } + } + + .rec-carousel-item { + cursor: grabbing; + } + + @media screen and (min-width: 1300px) { + a { + img { + width: 300px; + } + } + + .rec-carousel-item { + margin-right: 0px; + } + } + + @media (max-width: 1000px) { + bottom: -180px; + } + + @media (max-width: 768px) { + bottom: -150px; + + a { + min-height: 150px; + min-width: 130px; + + img { + width: 100px; + } + + p { + font-size: 10px; + } + } + + .rec-carousel-item { + margin-right: 48px; + } + + .rec.rec-pagination { + max-width: 50%; + } + + } + + @media (max-width: 350px) { + bottom: -150px; + + a { + min-height: 135px; + min-width: 110px; + } + + } +`; diff --git a/src/assets/styles/LeagueStyled.js b/src/assets/styles/LeagueStyled.js new file mode 100644 index 00000000..7fc5e8cf --- /dev/null +++ b/src/assets/styles/LeagueStyled.js @@ -0,0 +1,114 @@ +import styled from 'styled-components'; + +export const Section = styled.section` + display: flex; + align-items: center; + justify-content: center; + margin-top: 36px; + gap: 100px; + min-height: 70vh; + margin-bottom: 48px; + + @media (max-width:1100px) { + flex-direction: column; + } + +`; + +export const ContainerLogoLeague = styled.div` + display: flex; + justify-content: center; + align-items: center; + text-align: center; + flex-direction: column; + padding: 20px; + position: relative; + + img { + width: 350px; + } + + h2 { + max-width: 75%; + margin-top: 15px; + } + + @media (min-width: 1400px) { + img { + width: 500px; + } + + h2 { + font-size: 30px; + } + } + @media (max-width: 550px) { + img { + width: 300px; + } + } +`; + +export const ContainerSeasons = styled.div` + text-align: center; + + strong { + font-size:24px; + } + + ul { + margin-top: 16px; + list-style: none; + display: grid; + grid-template-columns: repeat(5, auto); + gap: 30px; + + li{ + background-color: ${({ theme }) => theme.backgroundHeader}; + font-size: 20px; + border-radius: 4px; + padding: 10px; + font-weight: bold; + display: flex; + align-items: center; + border: 1px solid; + + &:hover { + cursor: pointer; + background-color: ${({ theme }) => theme.secondaryColor}; + color: ${({ theme }) => theme.primaryColor}; + transform: scale(1.1); + } + + :active { + transform: rotate(1deg); + } + } + } + + @media (min-width: 1400px) { + strong { + font-size: 32px; + } + + ul { + li { + font-size: 26px; + } + } + } + + @media (max-width: 525px) { + ul { + grid-template-columns: repeat(4, auto); + + } + } + + @media (max-width: 450px) { + ul { + grid-template-columns: repeat(3, auto); + + } + } +`; diff --git a/src/assets/styles/SeasonsStyled.js b/src/assets/styles/SeasonsStyled.js new file mode 100644 index 00000000..8fe4a4df --- /dev/null +++ b/src/assets/styles/SeasonsStyled.js @@ -0,0 +1,40 @@ +import styled from 'styled-components'; + +export const TableStyled = styled.table` + border: 1px solid; + + .statistics { + color: #ccc; + } + + td { + padding: 8px; + border: 1px solid black; + } + + .teams { + &:nth-child(n+2):nth-child(-n+5){ + background-color: rgba(138, 193, 132, 0.2); + } + + &:nth-child(n+6):nth-child(-n+7){ + background-color: rgba(46, 138, 226, 0.3); + } + + &:last-child{ + background-color: rgba(400, 138, 226, 0.3); + } + } + + @media (max-width: 615px) { + td { + padding: 3px; + } + } + @media (max-width: 550px) { + td { + padding: 1px; + } + } + +`; diff --git a/src/assets/styles/WellcomeStyled.js b/src/assets/styles/WellcomeStyled.js new file mode 100644 index 00000000..a4ac2a5a --- /dev/null +++ b/src/assets/styles/WellcomeStyled.js @@ -0,0 +1,80 @@ +import styled from 'styled-components'; +import stadium from '../imgs/stadium.jpg'; + +export const Container = styled.div` + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background: url(${stadium.src}) center center no-repeat ; + background-size: cover; + width: 100%; + height: 400px; + -webkit-box-shadow: inset 0px 107px 300px 200px rgba(0,0,0,0.40); + -moz-box-shadow: inset 0px 107px 300px 200px rgba(0,0,0,0.40); + box-shadow: inset 0px 107px 300px 200px rgba(0,0,0,0, 0.40); + + h3{ + font-weight: bold; + max-width: 70%; + font-size: 24px; + margin-bottom: 48px; + line-height: 32px; + text-align: center; + color: #fff; + } + + @media screen and (min-width: 768px) { + @media (min-width: 768px) { + justify-content: flex-start; + + h3 { + margin-top: 48px; + font-size: 20px; + } + + @media (min-width: 980px) { + justify-content: flex-start; + + h3 { + margin-top: 48px; + font-size: 22px; + } + + @media (min-width: 1300px) { + height: 700px; + + h3 { + margin-top: 120px; + font-size: 32px; + line-height: 48px; + } + } + } + } +} + + @media (max-width: 768px) { + h3 { + font-size: 16px; + } + } + + @media (max-width: 768px) { + h3 { + font-size: 16px; + } + } + + @media (max-width: 465px) { + h3 { + max-width: 90%; + line-height: 20px; + font-size: 14px; + } + } + + + + +`; diff --git a/src/assets/styles/themes/default.js b/src/assets/styles/themes/default.js new file mode 100644 index 00000000..262e6b8c --- /dev/null +++ b/src/assets/styles/themes/default.js @@ -0,0 +1,16 @@ +export const themes = { + light: { + primaryColor: '#fff', + secondaryColor: '#673AB7', + tertiaryColor: '#222', + textColorHover: '#fff', + textColor: '#222', + }, + dark: { + primaryColor: '#222', + secondaryColor: '#673AB7', + tertiaryColor: '#fff', + textColorHover: '#222', + textColor: '#fff', + }, +}; diff --git a/src/components/Header/index.js b/src/components/Header/index.js new file mode 100644 index 00000000..afac2caf --- /dev/null +++ b/src/components/Header/index.js @@ -0,0 +1,68 @@ +/* eslint-disable jsx-a11y/no-static-element-interactions */ +/* eslint-disable jsx-a11y/click-events-have-key-events */ +import Link from 'next/link'; +import { useContext, useState } from 'react'; +import Switch from 'react-switch'; +import { ThemeContext } from '../../contexts/ThemeContext'; +import useWidth from '../../hooks/useWidth'; +import { + StyledHeader, ListNavMenu, ContainerLogo, MenuMobile, +} from '../../assets/styles/HeaderStyled'; + +export default function Header() { + const { handleToggleTheme, theme, currentTheme } = useContext(ThemeContext); + const [active, setActive] = useState(false); + const width = useWidth(); + + function toggleActive() { + setActive(!active); + } + + return ( + + +

FUTstats

+ 🌞} + uncheckedHandleIcon={🌑} + height={25} + width={width < 425 ? 40 : 50} + handleDiameter={25} + onColor="#ccc" + offColor="#444" + /> +
+ + +
+
+
+ +
+ +
+ + + {!active && ( + + )} + + ); +} diff --git a/src/components/Wellcome/index.js b/src/components/Wellcome/index.js new file mode 100644 index 00000000..1fa1e053 --- /dev/null +++ b/src/components/Wellcome/index.js @@ -0,0 +1,16 @@ +/* eslint-disable max-len */ +/* eslint-disable react/jsx-one-expression-per-line */ +import { Container } from '../../assets/styles/WellcomeStyled'; + +export default function WellCome() { + return ( + +

+ Bem-vindo à nossa plataforma FUTstats de classificações de futebol! + Aqui você encontrará as últimas atualizações de classificações de equipes e jogadores de todo o mundo. + Navegue pelas ligas e divisões para encontrar a informação que você precisa e fique ligado para as + atualizações mais recentes sobre seus times e jogadores favoritos. +

+
+ ); +} diff --git a/src/contexts/ThemeContext.js b/src/contexts/ThemeContext.js new file mode 100644 index 00000000..2c4349a7 --- /dev/null +++ b/src/contexts/ThemeContext.js @@ -0,0 +1,26 @@ +import { createContext, useMemo, useState } from 'react'; +import PropTypes from 'prop-types'; +import GlobalStyles from '../assets/styles/GlobalStyles'; +import { themes } from '../assets/styles/themes/default'; + +export const ThemeContext = createContext({}); + +export default function ThemeProvider({ children }) { + const [theme, setTheme] = useState('light'); + const currentTheme = useMemo(() => themes[theme] || themes.dark, [theme]); + + function handleToggleTheme() { + setTheme((prevState) => (prevState === 'light' ? 'dark' : 'light')); + } + + return ( + + + {children} + + ); +} + +ThemeProvider.propTypes = { + children: PropTypes.node.isRequired, +}; diff --git a/src/hooks/useWidth.js b/src/hooks/useWidth.js new file mode 100644 index 00000000..d076438d --- /dev/null +++ b/src/hooks/useWidth.js @@ -0,0 +1,18 @@ +import { useEffect, useState } from 'react'; + +export default function useWidth() { + const [width, setWidth] = useState(0); + + function handleWidth() { + setWidth(window.innerWidth); + } + + useEffect(() => { + setWidth(window.innerWidth); + window.addEventListener('resize', handleWidth); + + return () => window.removeEventListener('resize', handleWidth); + }, []); + + return width; +} diff --git a/src/pages/[leagueId]/[season].js b/src/pages/[leagueId]/[season].js new file mode 100644 index 00000000..2f572b28 --- /dev/null +++ b/src/pages/[leagueId]/[season].js @@ -0,0 +1,48 @@ +import PropTypes from 'prop-types'; +import APIService from '../../services/APIService'; +import { Section } from '../../assets/styles/LeagueStyled'; +import { TableStyled } from '../../assets/styles/SeasonsStyled'; + +export default function SeasonStading({ standings }) { + return ( +
+ + + Classificação + Jogos + P + V + E + D + + {standings.standings.map((team) => ( + + {team.team.displayName} + {team.stats[0].value} + {team.stats[2].value} + {team.stats[6].value} + {team.stats[5].value} + {team.stats[1].value} + + ))} + +
+ ); +} + +SeasonStading.propTypes = { + standings: PropTypes.shape().isRequired, +}; + +export async function getServerSideProps(context) { + const standing = await APIService.listStadingsOfSeason( + context.params.leagueId, + context.params.season, + ); + + return { + props: { + standings: standing.data, + }, + }; +} diff --git a/src/pages/[leagueId]/index.js b/src/pages/[leagueId]/index.js new file mode 100644 index 00000000..4d35cd99 --- /dev/null +++ b/src/pages/[leagueId]/index.js @@ -0,0 +1,70 @@ +import Link from 'next/link'; +import { useRouter } from 'next/router'; +import PropTypes from 'prop-types'; +import { useContext } from 'react'; +import { ThemeContext } from '../../contexts/ThemeContext'; +import APIService from '../../services/APIService'; +import { Section, ContainerLogoLeague, ContainerSeasons } from '../../assets/styles/LeagueStyled'; + +export default function LeagueDetails({ detailsLeagueSelected, seasonsLeague }) { + const { currentTheme, theme } = useContext(ThemeContext); + const { asPath } = useRouter(); + const logoDark = detailsLeagueSelected.logos.dark.replace(/["]/g, ''); + const logoLight = detailsLeagueSelected.logos.light; + + const setLogo = ( + theme === 'dark' + ? logoDark + : logoLight); + + return ( +
+ + {detailsLeagueSelected.name} +

{detailsLeagueSelected.name}

+
+ + Seasons +
    + {seasonsLeague.map((season) => ( + +
  • {season.year}
  • + + ))} +
+
+
+ ); +} + +LeagueDetails.propTypes = { + detailsLeagueSelected: PropTypes.shape({ + name: PropTypes.string.isRequired, + logos: PropTypes.shape({ + light: PropTypes.string.isRequired, + dark: PropTypes.string.isRequired, + }).isRequired, + }).isRequired, + seasonsLeague: PropTypes.arrayOf(PropTypes.shape()).isRequired, +}; + +export async function getServerSideProps(context) { + const detailsLeague = await APIService.listDetailsLeagueSelected( + context.params.leagueId, + ); + + const seasonsLeague = await APIService.listSeasonsLeagueSelected( + context.params.leagueId, + ); + + return { + props: { + detailsLeagueSelected: detailsLeague.data, + seasonsLeague: seasonsLeague.data.seasons || {}, + leagueId: context.params.leagueId, + }, + }; +} diff --git a/src/pages/_app.js b/src/pages/_app.js new file mode 100644 index 00000000..07048f2e --- /dev/null +++ b/src/pages/_app.js @@ -0,0 +1,21 @@ +import PropTypes from 'prop-types'; +import Head from 'next/head'; +import ThemeProvider from '../contexts/ThemeContext'; +import Header from '../components/Header'; + +export default function App({ Component, pageProps }) { + return ( + + + FUTstats + +
+ + + ); +} + +App.propTypes = { + Component: PropTypes.func.isRequired, + pageProps: PropTypes.shape().isRequired, +}; diff --git a/src/pages/_document.js b/src/pages/_document.js new file mode 100644 index 00000000..f42cc1d0 --- /dev/null +++ b/src/pages/_document.js @@ -0,0 +1,37 @@ +import Document, { + Html, Head, Main, NextScript, +} from 'next/document'; + +class MyDocument extends Document { + static async getInitialProps(ctx) { + const originalRenderPage = ctx.renderPage; + + ctx.renderPage = () => originalRenderPage({ + enhanceApp: (App) => App, + enhanceComponent: (Component) => Component, + }); + + const initialProps = await Document.getInitialProps(ctx); + + return initialProps; + } + + render() { + return ( + + + + + + + + +
+ + + + ); + } +} + +export default MyDocument; diff --git a/src/pages/index.js b/src/pages/index.js new file mode 100644 index 00000000..69d5e78a --- /dev/null +++ b/src/pages/index.js @@ -0,0 +1,62 @@ +/* eslint-disable no-nested-ternary */ +import PropTypes from 'prop-types'; +import { useContext } from 'react'; +import Link from 'next/link'; +import Carousel from 'react-elastic-carousel'; +import { ThemeContext } from '../contexts/ThemeContext'; +import APIService from '../services/APIService'; +import { Main, Container } from '../assets/styles/HomeStyled'; +import WellCome from '../components/Wellcome'; +import useWidth from '../hooks/useWidth'; + +export default function Home({ leagues }) { + const { currentTheme, theme } = useContext(ThemeContext); + const width = useWidth(); + const calcToShow = () => { + if (width > 1900) return 4.5; + if (width > 1100) return 3.5; + if (width > 500) return 2.5; + return 1.5; + }; + const itemsToShow = calcToShow(); + + return ( +
+ + + + {leagues.data.map((league) => { + const logoDark = league.logos.dark.replace(/["]/g, ''); + const logoLight = league.logos.light; + const setLogoLeague = theme === 'dark' ? logoDark : logoLight; + + return ( + + logo-league +

{league.name}

+ + ); + })} +
+
+
+ ); +} + +Home.propTypes = { + leagues: PropTypes.shape().isRequired, +}; + +export async function getStaticProps() { + const json = await APIService.listLeagues(); + + return { + props: { + leagues: json, + }, + }; +} diff --git a/src/services/APIService.js b/src/services/APIService.js new file mode 100644 index 00000000..1bec27c2 --- /dev/null +++ b/src/services/APIService.js @@ -0,0 +1,25 @@ +import HttpClient from './utils/HttpClient'; + +class APIservice { + constructor() { + this.httpClient = new HttpClient('https://api-football-standings.azharimm.dev'); + } + + listLeagues() { + return this.httpClient.get('/leagues'); + } + + listDetailsLeagueSelected(id) { + return this.httpClient.get(`/leagues/${id}`); + } + + listSeasonsLeagueSelected(id) { + return this.httpClient.get(`/leagues/${id}/seasons`); + } + + listStadingsOfSeason(id, season, orderBy = 'asc') { + return this.httpClient.get(`/leagues/${id}/standings?season=${season}&sort=${orderBy}`); + } +} + +export default new APIservice(); diff --git a/src/services/utils/HttpClient.js b/src/services/utils/HttpClient.js new file mode 100644 index 00000000..63646666 --- /dev/null +++ b/src/services/utils/HttpClient.js @@ -0,0 +1,23 @@ +class HttpClient { + constructor(baseURL) { + this.baseURL = baseURL; + } + + async get(path) { + const response = await fetch(`${this.baseURL}${path}`); + + let body = null; + const contentType = response.headers.get('Content-Type'); + if (contentType.includes('application/json')) { + body = await response.json(); + } + + if (response.ok) { + return body; + } + + return (response, body); + } +} + +export default HttpClient; diff --git a/yarn.lock b/yarn.lock index 904d3d1c..d4f4f658 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,87 @@ # yarn lockfile v1 +"@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/generator@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" + integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== + dependencies: + "@babel/types" "^7.20.7" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" + integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== + "@babel/runtime-corejs3@^7.10.2": version "7.20.6" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.20.6.tgz#63dae945963539ab0ad578efbf3eff271e7067ae" @@ -17,25 +98,81 @@ dependencies: regenerator-runtime "^0.13.11" -"@eslint/eslintrc@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" - integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== +"@babel/template@^7.18.10": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.4.5": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" + integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@emotion/is-prop-valid@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" + integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== + dependencies: + "@emotion/memoize" "^0.8.0" + +"@emotion/memoize@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" + integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@eslint/eslintrc@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== dependencies: ajv "^6.12.4" debug "^4.3.2" espree "^9.4.0" - globals "^13.15.0" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.11.6": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" - integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -51,6 +188,38 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@next/env@13.0.6": version "13.0.6" resolved "https://registry.yarnpkg.com/@next/env/-/env-13.0.6.tgz#3fcab11ffbe95bff127827d9f7f3139bc5e6adff" @@ -247,6 +416,13 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -329,6 +505,22 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== +"babel-plugin-styled-components@>= 1.12.0", babel-plugin-styled-components@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086" + integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + picomatch "^2.3.0" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -362,11 +554,25 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + caniuse-lite@^1.0.30001406: version "1.0.30001439" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001439.tgz#ab7371faeb4adff4b74dad1718a6fd122e45d9cb" integrity sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A== +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -375,11 +581,23 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +classnames@^2.2.6: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + client-only@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -387,6 +605,11 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -397,6 +620,11 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +confusing-browser-globals@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + core-js-pure@^3.25.1: version "3.26.1" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.1.tgz#653f4d7130c427820dcecd3168b594e8bb095a33" @@ -411,6 +639,20 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -430,7 +672,7 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -536,11 +778,35 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + 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" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.5" + semver "^6.3.0" + +eslint-config-airbnb@^19.0.4: + version "19.0.4" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" + integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== + dependencies: + eslint-config-airbnb-base "^15.0.0" + object.assign "^4.1.2" + object.entries "^1.1.5" + eslint-config-next@13.0.6: version "13.0.6" resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.0.6.tgz#bbbcfd6e50eacca54552f962e43c9e2c4fb52ef6" @@ -584,7 +850,7 @@ eslint-module-utils@^2.7.3: dependencies: debug "^3.2.7" -eslint-plugin-import@^2.26.0: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.26.0: version "2.26.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== @@ -622,11 +888,32 @@ eslint-plugin-jsx-a11y@^6.5.1: minimatch "^3.1.2" semver "^6.3.0" -eslint-plugin-react-hooks@^4.5.0: +eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.5.0: version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== +eslint-plugin-react@^7.28.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.0.tgz#d80f794a638c5770f952ba2ae793f0a516be7c09" + integrity sha512-vSBi1+SrPiLZCGvxpiZIa28fMEUaMjXtCplrvxcIxGzmFiYdsXQDwInEjuv5/i/2CTTxbkS87tE8lsQ0Qxinbw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + eslint-plugin-react@^7.31.7: version "7.31.11" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8" @@ -673,13 +960,13 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@8.29.0: - version "8.29.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.29.0.tgz#d74a88a20fb44d59c51851625bc4ee8d0ec43f87" - integrity sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg== +"eslint@^7.32.0 || ^8.2.0": + version "8.31.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.31.0.tgz#75028e77cbcff102a9feae1d718135931532d524" + integrity sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA== dependencies: - "@eslint/eslintrc" "^1.3.3" - "@humanwhocodes/config-array" "^0.11.6" + "@eslint/eslintrc" "^1.4.1" + "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" @@ -698,7 +985,7 @@ eslint@8.29.0: file-entry-cache "^6.0.1" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.15.0" + globals "^13.19.0" grapheme-splitter "^1.0.4" ignore "^5.2.0" import-fresh "^3.0.0" @@ -904,7 +1191,12 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^13.15.0: +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: version "13.19.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== @@ -966,6 +1258,11 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -997,6 +1294,13 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hoist-non-react-statics@^3.0.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + ignore@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" @@ -1163,7 +1467,7 @@ js-sdsl@^4.1.4: resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== -"js-tokens@^3.0.0 || ^4.0.0": +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -1175,6 +1479,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -1232,6 +1541,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash@^4.17.11: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -1336,7 +1650,7 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.3, object.assign@^4.1.4: +object.assign@^4.1.2, object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -1346,7 +1660,7 @@ object.assign@^4.1.3, object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.6: +object.entries@^1.1.5, object.entries@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== @@ -1460,11 +1774,16 @@ 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.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +postcss-value-parser@^4.0.2: + 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" @@ -1479,7 +1798,7 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prop-types@^15.8.1: +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -1506,11 +1825,40 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-is@^16.13.1: +react-elastic-carousel@^0.11.5: + version "0.11.5" + resolved "https://registry.yarnpkg.com/react-elastic-carousel/-/react-elastic-carousel-0.11.5.tgz#4be027ea047c4f7678273caa844e83d91f3784dc" + integrity sha512-//k1IWUiUNXXNE8LHw4bLdP+8YCXLQHbeSOPiZo/+sTkUBp/YB/hjGKWH4RqSJ59AjF8PoxB+SUbqhdPTcwAuw== + dependencies: + classnames "^2.2.6" + react-only-when "^1.0.2" + react-swipeable "^5.5.1" + resize-observer-polyfill "1.5.0" + +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-only-when@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/react-only-when/-/react-only-when-1.0.2.tgz#a8a79b48dd6cfbd91ddc710674a94153e88039d3" + integrity sha512-agE6l3L6bqaVuwNtjihTQ36M+VBfPS63KOzcNL4ZTmlwSxQPvhzIqmBWfiol0/wLYmKxCcBqgXkEJpvj5Kob8Q== + +react-swipeable@^5.5.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/react-swipeable/-/react-swipeable-5.5.1.tgz#48ae6182deaf62f21d4b87469b60281dbd7c4a76" + integrity sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw== + dependencies: + prop-types "^15.6.2" + +react-switch@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/react-switch/-/react-switch-7.0.0.tgz#400990bb9822864938e343ed24f13276a617bdc0" + integrity sha512-KkDeW+cozZXI6knDPyUt3KBN1rmhoVYgAdCJqAh7st7tk8YE6N0iR89zjCWO8T8dUTeJGTR0KU+5CHCRMRffiA== + dependencies: + prop-types "^15.7.2" + react@18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -1537,6 +1885,11 @@ regexpp@^3.2.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +resize-observer-polyfill@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz#660ff1d9712a2382baa2cad450a4716209f9ca69" + integrity sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -1551,7 +1904,7 @@ resolve@^1.20.0, resolve@^1.22.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.3: +resolve@^2.0.0-next.3, resolve@^2.0.0-next.4: version "2.0.0-next.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== @@ -1607,6 +1960,11 @@ semver@^7.3.7: dependencies: lru-cache "^6.0.0" +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -1692,6 +2050,22 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +styled-components@^5.3.6: + version "5.3.6" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1" + integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^1.1.0" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + styled-jsx@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.0.tgz#4a5622ab9714bd3fcfaeec292aa555871f057563" @@ -1699,6 +2073,13 @@ styled-jsx@5.1.0: dependencies: client-only "0.0.1" +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -1737,6 +2118,11 @@ tiny-glob@^0.2.9: globalyzer "0.1.0" globrex "^0.1.2" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"