_app.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. function AApp({ Component, pageProps }) {
  2. return (
  3. <Layout>
  4. <Component {...pageProps} />
  5. </Layout>
  6. )
  7. }
  8. import * as React from 'react';
  9. import PropTypes from 'prop-types';
  10. import Head from 'next/head';
  11. import { ThemeProvider } from '@mui/material/styles';
  12. import CssBaseline from '@mui/material/CssBaseline';
  13. import { CacheProvider } from '@emotion/react';
  14. import theme from '../src/theme';
  15. import createEmotionCache from '../src/createEmotionCache';
  16. import Layout from '../components/Layout'
  17. // Client-side cache, shared for the whole session of the user in the browser.
  18. const clientSideEmotionCache = createEmotionCache();
  19. export default function MyApp(props) {
  20. const { Component, emotionCache = clientSideEmotionCache, pageProps } = props;
  21. return (
  22. <CacheProvider value={emotionCache}>
  23. <Head>
  24. <meta name="viewport" content="initial-scale=1, width=device-width" />
  25. </Head>
  26. <Layout>
  27. <ThemeProvider theme={theme}>
  28. {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
  29. <CssBaseline />
  30. <Component {...pageProps} />
  31. </ThemeProvider>
  32. </Layout>
  33. </CacheProvider>
  34. );
  35. }
  36. MyApp.propTypes = {
  37. Component: PropTypes.elementType.isRequired,
  38. emotionCache: PropTypes.object,
  39. pageProps: PropTypes.object.isRequired,
  40. };