-
Notifications
You must be signed in to change notification settings - Fork 0
/
gatsby-top-layout.js
55 lines (51 loc) · 1.4 KB
/
gatsby-top-layout.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/**
* React, Gatsby, Jest, TypeScript, Apollo - Starter
* https://github.com/eduard-kirilov/gatsby-ts-apollo-starter
* Copyright (c) 2020 Eduard Kirilov | MIT License
*/
import * as React from 'react';
import {
ApolloClient,
ApolloProvider,
HttpLink,
InMemoryCache,
} from '@apollo/client';
import { Provider } from 'react-redux';
import { ThemeProvider } from 'styled-components';
import {
ThemeProvider as MuiThemeProvider,
StylesProvider,
} from '@material-ui/styles';
import fetch from 'isomorphic-fetch';
import PropTypes from 'prop-types';
import { AuthProvider } from 'utils/authorize';
import { CssBaseline } from '@material-ui/core';
import { store } from './configureStore';
import theme from 'styles/theme';
const client = new ApolloClient({
cache: new InMemoryCache(),
link: new HttpLink({
uri: process.env.GATSBY_API_URL,
credentials: 'include',
}),
fetch,
});
export function GatsbyTopLayout({ children }) {
return (
<Provider store={store}>
<ApolloProvider client={client}>
<MuiThemeProvider theme={theme}>
<StylesProvider injectFirst>
<ThemeProvider theme={theme}>
<CssBaseline />
<AuthProvider>{children}</AuthProvider>
</ThemeProvider>
</StylesProvider>
</MuiThemeProvider>
</ApolloProvider>
</Provider>
);
}
GatsbyTopLayout.propTypes = {
children: PropTypes.node,
};