mirror of
https://github.com/kou029w/_.git
synced 2025-01-31 06:18:07 +00:00
93 lines
2.5 KiB
TypeScript
93 lines
2.5 KiB
TypeScript
import "./boot";
|
|
import { ThemeProvider, makeStyles } from "@material-ui/styles";
|
|
import {
|
|
CssBaseline,
|
|
createMuiTheme,
|
|
Typography,
|
|
Link as MuiLink,
|
|
Grid
|
|
} from "@material-ui/core";
|
|
import { orange, teal } from "@material-ui/core/colors";
|
|
import { MDXProvider } from "@mdx-js/tag";
|
|
import React, { ReactNode } from "react";
|
|
import Head from "next/head";
|
|
import Link from "next/link";
|
|
import TopAppBar from "./TopAppBar";
|
|
|
|
export const theme = createMuiTheme({
|
|
palette: {
|
|
primary: {
|
|
main: orange[900]
|
|
},
|
|
secondary: {
|
|
main: teal[400]
|
|
}
|
|
},
|
|
typography: {
|
|
useNextVariants: true,
|
|
fontFamily: '"Noto Sans JP", "Helvetica", "Arial", sans-serif'
|
|
}
|
|
});
|
|
|
|
export const components = {
|
|
h1: (props: { children: ReactNode }) => (
|
|
<>
|
|
<Head>
|
|
<title>{props.children}</title>
|
|
</Head>
|
|
<Typography component="h1" variant="h3" {...props} />
|
|
</>
|
|
),
|
|
h2: (props: {}) => <Typography component="h2" variant="h4" {...props} />,
|
|
h3: (props: {}) => <Typography component="h3" variant="h5" {...props} />,
|
|
h4: (props: {}) => <Typography component="h4" variant="h6" {...props} />,
|
|
h5: (props: {}) => <Typography component="h5" variant="h6" {...props} />,
|
|
h6: (props: {}) => <Typography variant="h6" {...props} />,
|
|
a: ({ href, ...props }: { href: string }) => (
|
|
<Link prefetch href={href}>
|
|
<MuiLink variant="body1" color="secondary" href={href} {...props} />
|
|
</Link>
|
|
)
|
|
};
|
|
|
|
export const Container: React.FC<{}> = ({ children }) => {
|
|
const classes = makeStyles({
|
|
root: {
|
|
padding: [8, 3, 1].map(n => `${theme.spacing.unit * n}px`).join(" "),
|
|
[theme.breakpoints.up("sm")]: {
|
|
padding: [9, 4, 1].map(n => `${theme.spacing.unit * n}px`).join(" ")
|
|
}
|
|
}
|
|
})();
|
|
return (
|
|
<Grid className={classes.root} container>
|
|
{children}
|
|
</Grid>
|
|
);
|
|
};
|
|
|
|
const MainTheme: React.FC<{}> = ({ children }) => {
|
|
return (
|
|
<ThemeProvider theme={theme}>
|
|
<Head>
|
|
<meta
|
|
name="viewport"
|
|
content="width=device-width,minimum-scale=1,initial-scale=1"
|
|
/>
|
|
<meta name="theme-color" content={theme.palette.primary.main} />
|
|
<link
|
|
rel="stylesheet"
|
|
href="https://fonts.googleapis.com/css?family=Noto+Sans+JP"
|
|
/>
|
|
</Head>
|
|
<CssBaseline />
|
|
<MDXProvider components={components}>
|
|
<Typography component="div" variant="body1">
|
|
<TopAppBar />
|
|
<Container>{children}</Container>
|
|
</Typography>
|
|
</MDXProvider>
|
|
</ThemeProvider>
|
|
);
|
|
};
|
|
export default MainTheme;
|