2022-02-14 20:32:58 +00:00
|
|
|
import Layout from '../../components/layout';
|
|
|
|
import ReactMarkdown from 'react-markdown';
|
2022-04-24 04:27:51 +00:00
|
|
|
import style from '../../styles/post.module.css';
|
2023-10-30 04:18:38 +00:00
|
|
|
import PostsInfo from '../../public/posts.json';
|
|
|
|
import readMarkdown from '../../lib/read-markdown';
|
2022-02-14 20:32:58 +00:00
|
|
|
|
2023-10-30 04:18:38 +00:00
|
|
|
interface Post {
|
|
|
|
title: string;
|
|
|
|
mtime: string;
|
|
|
|
otime?: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface Posts {
|
|
|
|
[slug: string]: Post
|
|
|
|
}
|
|
|
|
|
|
|
|
function Post({ post }: { post: Post & { content: string, cover?: string } }) {
|
2022-04-24 04:27:51 +00:00
|
|
|
return (<>
|
2023-10-30 04:18:38 +00:00
|
|
|
<Layout removeContainer={true} >
|
|
|
|
{<div className={style.imageBlock}
|
|
|
|
style={{
|
|
|
|
backgroundImage:
|
|
|
|
post.cover ?
|
|
|
|
`url(/assets/images/${post.cover})` :
|
|
|
|
'linear-gradient(to bottom right, #565a0f, #08432c 15%, rgb(5, 39, 10) 40%, rgb(0, 22, 46) 80%)'
|
2022-10-05 03:41:59 +00:00
|
|
|
}}></div>}
|
2022-05-15 13:56:45 +00:00
|
|
|
<div className={style.spacer}></div>
|
|
|
|
<section className={`${style.block} block`}>
|
2022-10-05 03:41:59 +00:00
|
|
|
<div className='container'>
|
|
|
|
<ReactMarkdown>{post.content}</ReactMarkdown>
|
|
|
|
</div>
|
2022-05-15 13:56:45 +00:00
|
|
|
</section>
|
2022-02-14 20:32:58 +00:00
|
|
|
</Layout>
|
2022-04-27 09:10:49 +00:00
|
|
|
|
2022-04-24 04:27:51 +00:00
|
|
|
</>
|
2022-02-14 20:32:58 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2022-04-24 04:27:51 +00:00
|
|
|
export async function getStaticProps({ params }: any) {
|
2023-10-30 04:18:38 +00:00
|
|
|
const postsInfo: Posts = PostsInfo;
|
|
|
|
const post: Post = postsInfo[params.post];
|
2022-02-14 20:32:58 +00:00
|
|
|
return {
|
2023-10-30 04:18:38 +00:00
|
|
|
props: {
|
|
|
|
post: {
|
|
|
|
...post,
|
|
|
|
content: await readMarkdown('posts', params.post, true)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-02-14 20:32:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export async function getStaticPaths() {
|
|
|
|
return {
|
2023-10-30 04:18:38 +00:00
|
|
|
paths: Object.keys(PostsInfo).map((post: string) => {
|
2022-02-14 20:32:58 +00:00
|
|
|
return {
|
|
|
|
params: {
|
2023-10-30 04:18:38 +00:00
|
|
|
post
|
2022-02-14 20:32:58 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}),
|
|
|
|
fallback: false
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default Post;
|