aboutsummaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/[...path].tsx56
-rw-r--r--src/pages/_app.tsx18
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;