選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { ThemeProvider } from '@mui/material/styles';
  2. import {
  3. Hydrate,
  4. QueryClient,
  5. QueryClientProvider,
  6. } from '@tanstack/react-query';
  7. import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
  8. import { SessionProvider } from 'next-auth/react';
  9. import { appWithTranslation } from 'next-i18next';
  10. import Head from 'next/head';
  11. import { useState } from 'react';
  12. import Layout from '../components/layout/base-layout/Layout';
  13. import CircularIndeterminate from '../components/loader/route-loader/CircularIndeterminate';
  14. import StorageProvider from '../store/cart-context';
  15. import CheckoutProvider from '../store/checkout-context';
  16. import UserProvider from '../store/user-context';
  17. import '../styles/globals.css';
  18. import theme from '../styles/muiTheme';
  19. const Providers = ({ components, children }) => (
  20. <>
  21. {components.reduceRight(
  22. (acc, Comp) => (
  23. <Comp>{acc}</Comp>
  24. ),
  25. children
  26. )}
  27. </>
  28. );
  29. function MyApp({ Component, pageProps: { session, ...pageProps } }) {
  30. const [queryClient] = useState(() => new QueryClient());
  31. return (
  32. <QueryClientProvider client={queryClient}>
  33. <Hydrate state={pageProps.dehydratedState}>
  34. <SessionProvider session={session}>
  35. <ThemeProvider theme={theme}>
  36. <Providers
  37. components={[CheckoutProvider, StorageProvider, UserProvider]}
  38. >
  39. <Layout>
  40. <Head>
  41. <title>Coffee Shop</title>
  42. <meta name="description" content="NextJS template" />
  43. <meta
  44. name="viewport"
  45. content="width=device-width, initial-scale=1"
  46. />
  47. </Head>
  48. <CircularIndeterminate />
  49. <Component {...pageProps} />
  50. </Layout>
  51. </Providers>
  52. </ThemeProvider>
  53. </SessionProvider>
  54. <ReactQueryDevtools initialIsOpen={false}></ReactQueryDevtools>
  55. </Hydrate>
  56. </QueryClientProvider>
  57. );
  58. }
  59. MyApp.getInitialProps = async ({ Component, ctx }) => {
  60. let pageProps = {};
  61. if (Component.getInitialProps) {
  62. pageProps = await Component.getInitialProps(ctx);
  63. }
  64. return {
  65. pageProps,
  66. };
  67. };
  68. export default appWithTranslation(MyApp);