frontend/pages/_app.tsx (view raw)
1import {useEffect} from 'react';
2import {AppProps} from 'next/app';
3import {ThemeProvider} from '@material-ui/core/styles';
4import {ApolloProvider} from '@apollo/client';
5import CssBaseline from '@material-ui/core/CssBaseline';
6import {useApollo} from '../lib/apolloClient';
7import theme from '../theme';
8import Toasts from '../components/Toasts';
9import Languages from '../containers/Languages';
10import Metas from '../containers/Metas';
11import 'moment/locale/fr-ch';
12import '../i18n';
13
14const App = function (props: AppProps) {
15 const {Component, pageProps} = props;
16 const apolloClient = useApollo(pageProps);
17
18 useEffect(() => {
19 // Remove the server-side injected CSS.
20 const jssStyles = document.querySelector('#jss-server-side');
21 if (jssStyles) {
22 jssStyles.parentElement!.removeChild(jssStyles);
23 }
24 }, []);
25
26 return (
27 <ApolloProvider client={apolloClient}>
28 <Metas metas={pageProps.metas} />
29 <ThemeProvider theme={theme}>
30 <CssBaseline />
31 <Component {...pageProps} />
32 <Toasts />
33 <Languages />
34 </ThemeProvider>
35 </ApolloProvider>
36 );
37};
38
39export default App;