From e748e0de614653e1baeb1ba5b1a610dc06b04223 Mon Sep 17 00:00:00 2001 From: soohoonchoi Date: Sun, 25 Aug 2024 23:20:54 -0700 Subject: [PATCH 1/2] move to just markdown for now --- bun.lockb | Bin 266586 -> 267208 bytes package.json | 5 +++++ public/p/{8bit.mdx => 8bit.md} | 0 public/p/{reviewr.mdx => reviewr.md} | 0 public/p/{tabnam.mdx => tabnam.md} | 0 public/p/{this.mdx => this.md} | 0 src/app/p/[slug]/page.tsx | 30 ++++++++++++++------------- src/app/page.tsx | 2 +- src/components/markdown-viewer.tsx | 25 ++++++++++++++++++---- src/styles/globals.css | 20 ++++-------------- 10 files changed, 47 insertions(+), 35 deletions(-) rename public/p/{8bit.mdx => 8bit.md} (100%) rename public/p/{reviewr.mdx => reviewr.md} (100%) rename public/p/{tabnam.mdx => tabnam.md} (100%) rename public/p/{this.mdx => this.md} (100%) diff --git a/bun.lockb b/bun.lockb index ce8c384445736710a5eb7712fe452116ba1c5834..ad8d7161e6922036b3af2bfba62791b6ccc7bba2 100755 GIT binary patch delta 51597 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 delta 51712 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 diff --git a/package.json b/package.json index 7d94e58..b8f12ed 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,14 @@ "prettier": "^3.3.3", "react": "18.2.0", "react-dom": "18.2.0", + "rehype-sanitize": "^6.0.0", + "rehype-stringify": "^10.0.0", "remark": "^15.0.1", "remark-html": "^16.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.0", "semver": "", + "unified": "^11.0.5", "wasm": "^1.0.0", "wasm-pack": "^0.13.0" }, diff --git a/public/p/8bit.mdx b/public/p/8bit.md similarity index 100% rename from public/p/8bit.mdx rename to public/p/8bit.md diff --git a/public/p/reviewr.mdx b/public/p/reviewr.md similarity index 100% rename from public/p/reviewr.mdx rename to public/p/reviewr.md diff --git a/public/p/tabnam.mdx b/public/p/tabnam.md similarity index 100% rename from public/p/tabnam.mdx rename to public/p/tabnam.md diff --git a/public/p/this.mdx b/public/p/this.md similarity index 100% rename from public/p/this.mdx rename to public/p/this.md diff --git a/src/app/p/[slug]/page.tsx b/src/app/p/[slug]/page.tsx index 7111e20..fb257da 100644 --- a/src/app/p/[slug]/page.tsx +++ b/src/app/p/[slug]/page.tsx @@ -1,17 +1,20 @@ import fs from 'fs'; import path from 'path'; import { glob } from 'glob'; -import { serialize } from 'next-mdx-remote/serialize'; -import remarkHtml from 'remark-html'; -import { MarkdownViewer } from '@/components/markdown-viewer' +import { unified } from 'unified'; +import remarkParse from 'remark-parse'; +import remarkRehype from 'remark-rehype'; +import rehypeSanitize from 'rehype-sanitize'; +import rehypeStringify from 'rehype-stringify'; +import remarkHtml from 'remark-html'; -// export const dynamicParams = false; +export const dynamicParams = false; export function generateStaticParams() { - const projectFiles = glob.sync('public/p/*.mdx'); + const projectFiles = glob.sync('public/p/*.md'); return projectFiles.map((file) => { - const slug = path.basename(file, '.mdx'); + const slug = path.basename(file, '.md'); return { slug }; }); } @@ -24,16 +27,15 @@ interface ProjectPageProps { const Page = async ({ params }: ProjectPageProps) => { const { slug } = params; - const filePath = path.join(process.cwd(), 'public', 'p', `${slug}.mdx`); + const filePath = path.join(process.cwd(), 'public', 'p', `${slug}.md`); const fileContent = fs.readFileSync(filePath, 'utf8'); - const mdxSource = await serialize(fileContent, { - mdxOptions: { - remarkPlugins: [remarkHtml], - rehypePlugins: [], - }, - }) + const content = await unified() + .use(remarkParse) + .use(remarkHtml) + .process(fileContent); + return ( - +
); }; diff --git a/src/app/page.tsx b/src/app/page.tsx index ad4a802..13cf932 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,6 @@ const Page = () => { return ( -
+

Soohoon Choi

about me

diff --git a/src/components/markdown-viewer.tsx b/src/components/markdown-viewer.tsx index a8088de..5bbcbc1 100644 --- a/src/components/markdown-viewer.tsx +++ b/src/components/markdown-viewer.tsx @@ -1,15 +1,32 @@ 'use client' -import { MDXRemote } from 'next-mdx-remote'; +import React from 'react'; +import { MDXRemote, type MDXRemoteSerializeResult } from 'next-mdx-remote'; +import { serialize } from 'next-mdx-remote/serialize'; +import remarkHtml from 'remark-html'; interface MarkdownViewerProps { - source: any; + content: string; } export const MarkdownViewer = ({ - source, + content, }: MarkdownViewerProps) => { + const [mdxSource, setMdxSource] = React.useState(null); + React.useEffect(() => { + const setSource = async () => { + const mdxSource = await serialize(content, { + mdxOptions: { + remarkPlugins: [remarkHtml], + rehypePlugins: [], + }, + }); + setMdxSource(mdxSource); + } + setSource(); + }, []) + if (!mdxSource) return null; return ( - + ); } \ No newline at end of file diff --git a/src/styles/globals.css b/src/styles/globals.css index aed79fd..069cc0e 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -2,7 +2,7 @@ @tailwind components; @tailwind utilities; -/* @layer base { +@layer base { :root { --background: 0 0% 100%; --foreground: 222.2 47.4% 11.2%; @@ -72,8 +72,8 @@ .link { color: #10b981; } -} */ -/* +} + @layer base { * { @apply border-border; @@ -84,16 +84,4 @@ 'rlig' 1, 'calt' 1; } -} */ -@layer base { - *, ::before, ::after { - border-width: 0; - border-style: solid; - border-color: theme('borderColor.DEFAULT', currentColor); - } -} - -/* Your custom styles */ -.link { - color: #10b981; -} +} \ No newline at end of file From a9c20b197dac4f637c9f7c572148a022219f5b63 Mon Sep 17 00:00:00 2001 From: soohoonchoi Date: Wed, 28 Aug 2024 00:05:54 -0700 Subject: [PATCH 2/2] hash routed pages prep --- src/app/[[...path]]/page.tsx | 25 ++++++++ src/app/b/[slug]/page.tsx | 22 ------- src/app/b/page.tsx | 9 --- src/app/page.tsx | 36 ------------ src/components/file.tsx | 94 ++++++++++++++++++++++++++++++ src/components/markdown-viewer.tsx | 32 ---------- src/providers/cmdk.tsx | 0 7 files changed, 119 insertions(+), 99 deletions(-) create mode 100644 src/app/[[...path]]/page.tsx delete mode 100644 src/app/b/[slug]/page.tsx delete mode 100644 src/app/b/page.tsx delete mode 100644 src/app/page.tsx create mode 100644 src/components/file.tsx delete mode 100644 src/components/markdown-viewer.tsx create mode 100644 src/providers/cmdk.tsx diff --git a/src/app/[[...path]]/page.tsx b/src/app/[[...path]]/page.tsx new file mode 100644 index 0000000..51b634f --- /dev/null +++ b/src/app/[[...path]]/page.tsx @@ -0,0 +1,25 @@ +import { File } from '@/components/file' + +export const generateStaticParams = async () => { + const paths = [{ + path: [''], + }] + + return paths +} + +interface PageProps { + params: { + path: string[] + } +} + +const Page = ({ params }: PageProps) => { + const { path } = params + console.log(path) + return ( + + ) +} + +export default Page \ No newline at end of file diff --git a/src/app/b/[slug]/page.tsx b/src/app/b/[slug]/page.tsx deleted file mode 100644 index 44b6768..0000000 --- a/src/app/b/[slug]/page.tsx +++ /dev/null @@ -1,22 +0,0 @@ -export const dynamicParams = false; - -export function generateStaticParams() { - return [{ slug: 'test' }]; -} - -interface BlogPageProps { - params: { - slug: string; - }; -} - -const Page = ({ params }: BlogPageProps) => { - const { slug } = params; - return ( -

-

{slug}

-
- ); -}; - -export default Page; diff --git a/src/app/b/page.tsx b/src/app/b/page.tsx deleted file mode 100644 index 9ee34e5..0000000 --- a/src/app/b/page.tsx +++ /dev/null @@ -1,9 +0,0 @@ -const Page = () => { - return ( -
-

blogs

-
- ); -}; - -export default Page; diff --git a/src/app/page.tsx b/src/app/page.tsx deleted file mode 100644 index 13cf932..0000000 --- a/src/app/page.tsx +++ /dev/null @@ -1,36 +0,0 @@ -const Page = () => { - return ( -
-

Soohoon Choi

-

about me

-

- Cofounder at Greptile.
- Georgia Tech computer science and mathematics class of 2023. -

- Interested in (but not limited to): -
    -
  • ai
  • -
  • knowledge graphs
  • -
  • art
  • -
  • most subjects tbh
  • -
-

blog

- coming soon - {/* */} - {/*

fun

-

- type cmdk + k to get started -

*/} -

contact

- -
- ) -} - -export default Page \ No newline at end of file diff --git a/src/components/file.tsx b/src/components/file.tsx new file mode 100644 index 0000000..60d020d --- /dev/null +++ b/src/components/file.tsx @@ -0,0 +1,94 @@ +'use client' + +import React from 'react'; +import { useRouter } from 'next/navigation'; +import { MDXRemote, type MDXRemoteSerializeResult } from 'next-mdx-remote'; +import { serialize } from 'next-mdx-remote/serialize'; +import remarkHtml from 'remark-html'; + +import { useShell } from '@/providers/shell' + +export const File = () => { + const router = useRouter() + const shell = useShell() + + const [path, setPath] = React.useState('') + const [content, setContent] = React.useState('') + + // React.useEffect(() => { + // const setSource = async () => { + // const mdxSource = await serialize(content, { + // mdxOptions: { + // remarkPlugins: [remarkHtml], + // rehypePlugins: [], + // }, + // }); + // setMdxSource(mdxSource); + // } + // setSource(); + // }, []) + // if (!mdxSource) return null; + // return ( + // + // ); + React.useEffect(() => { + const handleHashChange = () => { + const hash = window.location.hash.slice(1) + setPath(hash) + loadFileContent(hash) + } + + handleHashChange() + + window.addEventListener('hashchange', handleHashChange) + return () => window.removeEventListener('hashchange', handleHashChange) + }, []) + + const loadFileContent = async (path: string) => { + setContent(path) + } + + const renderContent = () => { + if (content === '') { + return
loading...
+ } + + return
{content}
+ } + + return ( + //
+ // {renderContent()} + //
+
+

Soohoon Choi

+

about me

+

+ Cofounder at Greptile.
+ Georgia Tech computer science and mathematics class of 2023. +

+ Interested in (but not limited to): +
    +
  • ai
  • +
  • knowledge graphs
  • +
  • art
  • +
  • most subjects tbh
  • +
+

blog

+ coming soon + {/* */} + {/*

fun

+

+ type cmdk + k to get started +

*/} +

contact

+ +
+ ) +} diff --git a/src/components/markdown-viewer.tsx b/src/components/markdown-viewer.tsx deleted file mode 100644 index 5bbcbc1..0000000 --- a/src/components/markdown-viewer.tsx +++ /dev/null @@ -1,32 +0,0 @@ -'use client' - -import React from 'react'; -import { MDXRemote, type MDXRemoteSerializeResult } from 'next-mdx-remote'; -import { serialize } from 'next-mdx-remote/serialize'; -import remarkHtml from 'remark-html'; - -interface MarkdownViewerProps { - content: string; -} - -export const MarkdownViewer = ({ - content, -}: MarkdownViewerProps) => { - const [mdxSource, setMdxSource] = React.useState(null); - React.useEffect(() => { - const setSource = async () => { - const mdxSource = await serialize(content, { - mdxOptions: { - remarkPlugins: [remarkHtml], - rehypePlugins: [], - }, - }); - setMdxSource(mdxSource); - } - setSource(); - }, []) - if (!mdxSource) return null; - return ( - - ); -} \ No newline at end of file diff --git a/src/providers/cmdk.tsx b/src/providers/cmdk.tsx new file mode 100644 index 0000000..e69de29