thunderhub/pages/_app.tsx

59 lines
2 KiB
TypeScript
Raw Normal View History

import * as React from 'react';
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';
import { AppProps } from 'next/app';
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';
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';
import 'react-circular-progressbar/dist/styles.css';
const Wrapper: React.FC = ({ children }) => {
const { theme } = useConfigState();
const { pathname } = useRouter();
const isRoot = pathname === '/login' || pathname === '/sso';
return (
<ThemeProvider theme={{ mode: isRoot ? 'light' : theme }}>
<ModalProvider backgroundComponent={BaseModalBackground}>
<GlobalStyles />
2020-04-17 20:11:37 +02:00
<PageWrapper>
<HeaderBodyWrapper>
<Header />
{children}
2020-04-17 20:11:37 +02:00
</HeaderBodyWrapper>
<Footer />
</PageWrapper>
</ModalProvider>
</ThemeProvider>
);
};
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>
);
}