thunderhub/pages/_app.tsx

67 lines
2.3 KiB
TypeScript
Raw Normal View History

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-12-14 14:16:31 +01:00
import { BaseProvider } from 'src/context/BaseContext';
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-04-17 20:11:37 +02:00
import { PageWrapper, HeaderBodyWrapper } from '../src/layouts/Layout.styled';
2021-06-17 11:42:40 +02:00
import 'react-toastify/dist/ReactToastify.min.css';
import 'react-grid-layout/css/styles.css';
import 'react-resizable/css/styles.css';
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) {
2020-12-16 13:52:59 +01:00
const { initialApolloState, initialConfig, hasToken } = pageProps;
const apolloClient = useApollo(initialApolloState);
return (
<ApolloProvider client={apolloClient}>
<Head>
<title>ThunderHub - Lightning Node Manager</title>
</Head>
2020-12-16 13:52:59 +01:00
<ConfigProvider initialConfig={initialConfig}>
<BaseProvider initialHasToken={hasToken}>
2020-12-14 14:16:31 +01:00
<ContextProvider>
<Wrapper>
<Component {...pageProps} />
</Wrapper>
</ContextProvider>
</BaseProvider>
</ConfigProvider>
<StyledToastContainer />
</ApolloProvider>
);
}