diff options
Diffstat (limited to 'src/pages')
-rw-r--r-- | src/pages/[...path].tsx | 56 | ||||
-rw-r--r-- | src/pages/_app.tsx | 18 |
2 files changed, 74 insertions, 0 deletions
diff --git a/src/pages/[...path].tsx b/src/pages/[...path].tsx new file mode 100644 index 0000000..30fdcd6 --- /dev/null +++ b/src/pages/[...path].tsx @@ -0,0 +1,56 @@ +import _ from 'lodash'; +import type { GetStaticPropsContext, NextPage } from "next"; +import ReactMarkdown from 'react-markdown'; +import Head from "next/head"; +import deepReadDir from "../deepReadDir"; +import fs from 'fs'; + + +const MARKDOWN_DIR = '../eug-vs-xyz/src'; + +const transformLinkURI = (uri: string): string => { + return uri.match(/(.*)\.md/)?.[1] || uri; +} + +export const getStaticProps = async (context: GetStaticPropsContext) => { + const path = _.isArray(context.params?.path) && context.params?.path || [context.params?.path]; + const markdownSource = fs.readFileSync(`${MARKDOWN_DIR}/${path?.join('/')}.md`).toString(); + return { + props: { + markdownSource, + path, + } + } +} + +export const getStaticPaths = async () => { + const globalPaths = await deepReadDir(MARKDOWN_DIR); + const paths = globalPaths + .map(globalPath => globalPath.match(`${MARKDOWN_DIR}/(.*)\.md`)?.[1] ) + .filter(p => p) + .map(p => p?.split('/')) + .map(path => ({ params: { path } })); + console.log(paths); + return { + paths, + fallback: false, + } +} + +const Page: NextPage = ({ markdownSource }: any) => { + return ( + <> + <Head> + <title>Create T3 App</title> + <meta name="description" content="Generated by create-t3-app" /> + <link rel="icon" href="/favicon.ico" /> + </Head> + <main> + <ReactMarkdown transformLinkUri={transformLinkURI}>{markdownSource}</ReactMarkdown> + </main> + </> + ); +}; + +export default Page; + diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx new file mode 100644 index 0000000..191f276 --- /dev/null +++ b/src/pages/_app.tsx @@ -0,0 +1,18 @@ +import "../styles/globals.css"; +import logo from '../../public/eug-vs.png'; +import type { AppProps } from "next/app"; +import Image from 'next/future/image'; + +function MyApp({ Component, pageProps }: AppProps) { + return ( + <> + <a href="/" style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', textDecoration: 'none', marginBottom: '12px' }}> + <Image src={logo} width={128} height={128} /> + <h1>Eugene's Space</h1> + </a> + <Component {...pageProps} /> + </> + ) +} + +export default MyApp; |