Next.js template
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import {
  2. Hydrate,
  3. QueryClient,
  4. QueryClientProvider,
  5. } from '@tanstack/react-query';
  6. import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
  7. import { SessionProvider } from 'next-auth/react';
  8. import { appWithTranslation } from 'next-i18next';
  9. import Head from 'next/head';
  10. import { useState } from 'react';
  11. import Layout from '../components/layout/base-layout/Layout';
  12. import CircularIndeterminate from '../components/loader/route-loader/CircularIndeterminate';
  13. import '../styles/globals.css';
  14. function MyApp({ Component, pageProps: { session, ...pageProps } }) {
  15. const [queryClient] = useState(() => new QueryClient());
  16. return (
  17. <QueryClientProvider client={queryClient}>
  18. <Hydrate state={pageProps.dehydratedState}>
  19. <SessionProvider session={session}>
  20. <Layout>
  21. <Head>
  22. <title>NextJS template</title>
  23. <meta name="description" content="NextJS template" />
  24. <meta
  25. name="viewport"
  26. content="width=device-width, initial-scale=1"
  27. />
  28. </Head>
  29. <CircularIndeterminate />
  30. <Component {...pageProps} />
  31. </Layout>
  32. </SessionProvider>
  33. <ReactQueryDevtools initialIsOpen={false} />
  34. </Hydrate>
  35. </QueryClientProvider>
  36. );
  37. }
  38. MyApp.getInitialProps = async ({ Component, ctx }) => {
  39. let pageProps = {};
  40. if (Component.getInitialProps) {
  41. pageProps = await Component.getInitialProps(ctx);
  42. }
  43. return {
  44. pageProps,
  45. };
  46. };
  47. export default appWithTranslation(MyApp);