import React, { useCallback, useMemo, useState } from 'react' import { ThemeProvider } from 'react-neu' import { BrowserRouter as Router, Route, Switch } from 'react-router-dom' import { ToastContainer, Slide } from 'react-toastify' import { ApolloProvider } from '@apollo/client' import styled from 'styled-components' import 'react-toastify/dist/ReactToastify.css' import MobileMenu from 'components/MobileMenu' import TopBar from 'components/TopBar' import { BalancesProvider } from 'contexts/Balances' import { AirdropProvider } from 'contexts/Airdrop' import { ExternalAirdropProvider } from 'contexts/ExternalAirdrop' import { FarmingProvider } from 'contexts/Farming' import { PricesProvider } from 'contexts/Prices' import { WalletProvider } from 'contexts/Wallet' import { BuySellProvider } from 'contexts/BuySell' import { DpiTokenMarketDataProvider } from 'contexts/DpiTokenMarketData' import { DpiIndexComponentsProvider } from 'contexts/DpiIndexComponents' import { IndexTokenMarketDataProvider } from 'contexts/IndexTokenMarketData' import { SnapshotProposalsProvider } from 'contexts/SnapshotProposals' import { TransactionWatcherProvider } from 'contexts/TransactionWatcher' import useLocalStorage from 'hooks/useLocalStorage' import About from 'views/About' import Farm from 'views/Farm' import Home from 'views/Home' import DPI from 'views/DPI' import INDEX from 'views/INDEX' import Vote from 'views/Vote' import News from 'views/News' import createTheme from 'utils/createCustomTheme' import graphqlClient from 'utils/graphql' const App: React.FC = () => { const [mobileMenu, setMobileMenu] = useState(false) const handleDismissMobileMenu = useCallback(() => { setMobileMenu(false) }, [setMobileMenu]) const handlePresentMobileMenu = useCallback(() => { setMobileMenu(true) }, [setMobileMenu]) return ( ) } const Providers: React.FC = ({ children }) => { const [darkModeSetting] = useLocalStorage('darkMode', true) const { dark: darkTheme, light: lightTheme } = useMemo(() => { return createTheme() }, []) return ( {children} ) } const StyledBackgroundDiv = styled.div` background: url(https://index-dao.s3.amazonaws.com/gradient_bg.png); background-repeat: no-repeat; background-size: cover; background-position: center top; ` export default App