Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

65 рядки
1.8 KiB

  1. import React from "react";
  2. import Document, { Head, Main, NextScript } from "next/document";
  3. import { ServerStyleSheets } from "@material-ui/core/styles";
  4. import "assets/scss/nextjs-material-kit.scss?v=1.1.0";
  5. import theme from "../theme";
  6. class MyDocument extends Document {
  7. render() {
  8. return (
  9. <html lang="en">
  10. <Head>
  11. <meta charSet="utf-8" />
  12. <meta
  13. name="viewport"
  14. content="width=device-width, initial-scale=1, shrink-to-fit=no"
  15. />
  16. <meta name="theme-color" content={theme.palette.primary.main} />
  17. <link rel="shortcut icon" href={require("assets/img/favicons.png")} />
  18. <link
  19. rel="apple-touch-icon"
  20. sizes="76x76"
  21. href={require("assets/img/apple-icon.png")}
  22. />
  23. {/* Fonts and icons */}
  24. <link
  25. rel="stylesheet"
  26. type="text/css"
  27. href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:400,700|Material+Icons"
  28. />
  29. <link
  30. href="https://use.fontawesome.com/releases/v5.0.10/css/all.css"
  31. rel="stylesheet"
  32. />
  33. </Head>
  34. <body>
  35. <div id="page-transition"></div>
  36. <Main />
  37. <NextScript />
  38. </body>
  39. </html>
  40. );
  41. }
  42. }
  43. MyDocument.getInitialProps = async (ctx) => {
  44. const sheets = new ServerStyleSheets();
  45. const originalRenderPage = ctx.renderPage;
  46. ctx.renderPage = () =>
  47. originalRenderPage({
  48. enhanceApp: (App) => (props) => sheets.collect(<App {...props} />),
  49. });
  50. const initialProps = await Document.getInitialProps(ctx);
  51. return {
  52. ...initialProps,
  53. styles: [
  54. ...React.Children.toArray(initialProps.styles),
  55. sheets.getStyleElement(),
  56. ],
  57. };
  58. };
  59. export default MyDocument;