2020-05-11 06:21:16 +02:00
|
|
|
import * as React from 'react';
|
2020-04-12 18:27:01 +02:00
|
|
|
import { ThemeProvider } from 'styled-components';
|
|
|
|
import { ModalProvider, BaseModalBackground } from 'styled-react-modal';
|
2020-05-15 19:48:00 +02:00
|
|
|
import { useRouter } from 'next/router';
|
|
|
|
import Head from 'next/head';
|
2020-06-27 19:15:49 +02:00
|
|
|
import { StyledToastContainer } from 'src/components/toastContainer/ToastContainer';
|
2020-07-21 23:31:12 +02:00
|
|
|
import { AppProps } from 'next/app';
|
2020-08-03 16:31:20 +02:00
|
|
|
import { ApolloProvider } from '@apollo/client';
|
|
|
|
import { useApollo } from 'config/client';
|
2020-05-15 19:48:00 +02:00
|
|
|
import { ContextProvider } from '../src/context/ContextProvider';
|
|
|
|
import { useConfigState, ConfigProvider } from '../src/context/ConfigContext';
|
2020-04-12 18:27:01 +02:00
|
|
|
import { GlobalStyles } from '../src/styles/GlobalStyle';
|
|
|
|
import { Header } from '../src/layouts/header/Header';
|
|
|
|
import { Footer } from '../src/layouts/footer/Footer';
|
2020-06-27 19:15:49 +02:00
|
|
|
import 'react-toastify/dist/ReactToastify.min.css';
|
2020-04-17 20:11:37 +02:00
|
|
|
import { PageWrapper, HeaderBodyWrapper } from '../src/layouts/Layout.styled';
|
2020-06-05 18:50:10 +02:00
|
|
|
import 'react-circular-progressbar/dist/styles.css';
|
2020-04-12 18:27:01 +02:00
|
|
|
|
|
|
|
const Wrapper: React.FC = ({ children }) => {
|
2020-05-11 06:21:16 +02:00
|
|
|
const { theme } = useConfigState();
|
2020-04-12 18:27:01 +02:00
|
|
|
const { pathname } = useRouter();
|
|
|
|
|
2020-11-28 23:12:14 +01:00
|
|
|
const isRoot = pathname === '/login' || pathname === '/sso';
|
2020-04-12 18:27:01 +02:00
|
|
|
|
|
|
|
return (
|
2020-04-22 10:14:33 +02:00
|
|
|
<ThemeProvider theme={{ mode: isRoot ? 'light' : theme }}>
|
2020-04-12 18:27:01 +02:00
|
|
|
<ModalProvider backgroundComponent={BaseModalBackground}>
|
|
|
|
<GlobalStyles />
|
2020-04-17 20:11:37 +02:00
|
|
|
<PageWrapper>
|
|
|
|
<HeaderBodyWrapper>
|
|
|
|
<Header />
|
2020-05-26 07:03:33 +02:00
|
|
|
{children}
|
2020-04-17 20:11:37 +02:00
|
|
|
</HeaderBodyWrapper>
|
|
|
|
<Footer />
|
|
|
|
</PageWrapper>
|
2020-04-12 18:27:01 +02:00
|
|
|
</ModalProvider>
|
|
|
|
</ThemeProvider>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
2020-08-03 16:31:20 +02:00
|
|
|
export default function App({ Component, pageProps }: AppProps) {
|
|
|
|
const apolloClient = useApollo(pageProps.initialApolloState);
|
|
|
|
return (
|
|
|
|
<ApolloProvider client={apolloClient}>
|
|
|
|
<Head>
|
|
|
|
<title>ThunderHub - Lightning Node Manager</title>
|
|
|
|
</Head>
|
|
|
|
<ConfigProvider initialConfig={pageProps.initialConfig}>
|
|
|
|
<ContextProvider>
|
|
|
|
<Wrapper>
|
|
|
|
<Component {...pageProps} />
|
|
|
|
</Wrapper>
|
|
|
|
</ContextProvider>
|
|
|
|
</ConfigProvider>
|
|
|
|
<StyledToastContainer />
|
|
|
|
</ApolloProvider>
|
|
|
|
);
|
|
|
|
}
|