Skip to content

Commit 4fd5437

Browse files
committed
Update next-mdx-remote
1 parent 8cf5162 commit 4fd5437

File tree

7 files changed

+237
-21
lines changed

7 files changed

+237
-21
lines changed

examples/next-mdx-remote/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# next-mdx-remote + Code Hike
2+
3+
See [this guide](https://codehike.org/docs/installation/next-mdx-remote) or try it on [Stackblitz](https://stackblitz.com/github/code-hike/codehike/tree/main/examples/next-mdx-remote).
Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
1-
import { serialize } from "next-mdx-remote/serialize"
2-
import { MDXRemote } from "next-mdx-remote"
3-
import { remarkCodeHike } from "@code-hike/mdx"
4-
import { CH } from "@code-hike/mdx/components"
5-
import theme from "shiki/themes/solarized-dark.json"
6-
import fs from "fs"
1+
import Link from "next/link"
2+
import { postNames } from "../src/posts"
73

8-
export async function getStaticProps() {
9-
// can be from a local file, database, anywhere
10-
const source = fs.readFileSync("posts/lorem.mdx")
11-
const mdxSource = await serialize(source, {
12-
mdxOptions: {
13-
remarkPlugins: [[remarkCodeHike, { autoImport: false, theme }]],
14-
useDynamicImport: true,
15-
},
16-
})
17-
return { props: { source: mdxSource } }
18-
}
19-
20-
export default function Page({ source }) {
4+
export default function Index({ posts }) {
215
return (
22-
<div style={{ width: 800, margin: "0 auto" }}>
23-
<MDXRemote {...source} components={{ CH }} />
6+
<div style={{ width: 800, margin: "0 auto", fontFamily: "sans-serif" }}>
7+
<h1>My Blog</h1>
8+
<ul>
9+
{posts.map((postName) => (
10+
<li key={postName}>
11+
<Link as={`/posts/${postName}`} href={`/posts/[slug]`}>
12+
{postName}
13+
</Link>
14+
</li>
15+
))}
16+
</ul>
2417
</div>
2518
)
2619
}
20+
21+
export function getStaticProps() {
22+
return { props: { posts: postNames } }
23+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import fs from "fs"
2+
import { MDXRemote } from "next-mdx-remote"
3+
import { serialize } from "next-mdx-remote/serialize"
4+
import Link from "next/link"
5+
import path from "path"
6+
import { postNames, POSTS_PATH } from "../../src/posts"
7+
import { remarkCodeHike } from "@code-hike/mdx"
8+
import { CH } from "@code-hike/mdx/components"
9+
import theme from "shiki/themes/material-palenight.json"
10+
11+
export default function PostPage({ source }) {
12+
return (
13+
<div style={{ width: 800, margin: "0 auto", fontFamily: "sans-serif" }}>
14+
<nav>
15+
<Link href="/">👈 Go back home</Link>
16+
</nav>
17+
18+
<main>
19+
<MDXRemote {...source} components={{ CH }} />
20+
</main>
21+
</div>
22+
)
23+
}
24+
25+
export const getStaticProps = async ({ params }) => {
26+
const postFilePath = path.join(POSTS_PATH, `${params.slug}.mdx`)
27+
const source = fs.readFileSync(postFilePath)
28+
29+
const mdxSource = await serialize(source, {
30+
mdxOptions: {
31+
remarkPlugins: [[remarkCodeHike, { autoImport: false, theme }]],
32+
useDynamicImport: true,
33+
},
34+
})
35+
36+
return {
37+
props: {
38+
source: mdxSource,
39+
},
40+
}
41+
}
42+
43+
export const getStaticPaths = async () => {
44+
const paths = postNames.map((slug) => ({ params: { slug } }))
45+
return {
46+
paths,
47+
fallback: false,
48+
}
49+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Hello
2+
3+
Lorem ipsum dolor sit amet.
4+
5+
```python hello.py mark=1[22:30]
6+
print("Rendered with Code Hike")
7+
```
8+
9+
Lorem ipsum dolor sit amet.
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# Scrollycoding
2+
3+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
4+
5+
Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
6+
7+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
8+
9+
<CH.Scrollycoding>
10+
11+
## Step 1
12+
13+
Lorem ipsum dolor sit amet, consectetur adipiscing something about points, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
14+
15+
> Nova in illis at dabat legi harundine non, ova miratur? _Quid in_ sole aer
16+
> ad diffusa illis voluisti fidensque coniugiale laniata curam. Aras rivus
17+
> eripuit, qua fistula haec partus; serpens, negat.
18+
19+
Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus.
20+
21+
```js app.js focus=3:10
22+
const { lorem, ipsum } = dolor({
23+
sit: {
24+
amet: 1,
25+
consectetur: 2,
26+
adipiscing: (elit) => ({
27+
sed: elit,
28+
}),
29+
eiusmod: (tempor) => ({
30+
incididunt: tempor,
31+
}),
32+
ut: (labore) => ({
33+
et: labore,
34+
dolore: labore + 1,
35+
}),
36+
magna: (aliqua) => ({
37+
ut: aliqua,
38+
}),
39+
nostrud: (elit) => ({
40+
exercitation: elit,
41+
ullamco: elit,
42+
}),
43+
laboris: (elit) => ({
44+
nisi: elit,
45+
}),
46+
},
47+
})
48+
```
49+
50+
---
51+
52+
## Step 2
53+
54+
Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in.
55+
56+
Praesent elementum facilisis leo vel fringilla est ullamcorper eget.
57+
58+
Id aliquet risus feugiat in ante metus dictum at tempor. Sed blandit libero volutpat sed cras. Sed odio morbi quis commodo odio aenean sed adipiscing. Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in. Nibh cras pulvinar mattis nunc sed. Luctus accumsan tortor posuere ac ut consequat semper viverra. Fringilla ut morbi tincidunt augue interdum velit euismod.
59+
60+
Morbi quis commodo.
61+
62+
```js app.js focus=11:17
63+
64+
```
65+
66+
---
67+
68+
## Step 3
69+
70+
Id aliquet risus feugiat in ante metus dictum at tempor. Sed blandit libero volutpat sed cras. Sed odio morbi quis commodo odio aenean sed adipiscing. Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu.
71+
72+
- Nisi lacus sed viverra tellus in
73+
- Nibh cras pulvinar mattis nunc sed
74+
- Luctus accumsan tortor posuere ac
75+
76+
Ut consequat semper viverra. Fringilla ut morbi tincidunt augue interdum velit euismod.
77+
78+
```js app.js focus=11:14
79+
const { lorem, ipsum } = dolor({
80+
sit: {
81+
amet: 1,
82+
consectetur: 2,
83+
adipiscing: (elit) => ({
84+
sed: elit,
85+
}),
86+
eiusmod: (tempor) => ({
87+
incididunt: tempor,
88+
}),
89+
ut: (labore) => ({
90+
et: lorem(labore * ipsum),
91+
dolore: lorem(labore + 1),
92+
}),
93+
nostrud: (elit) => ({
94+
exercitation: elit,
95+
ullamco: elit,
96+
}),
97+
laboris: (elit) => ({
98+
nisi: elit,
99+
}),
100+
},
101+
})
102+
```
103+
104+
---
105+
106+
## Step 4
107+
108+
Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in. Venenatis cras sed felis eget velit. Consectetur libero id faucibus nisl tincidunt.
109+
110+
Sed blandit libero volutpat sed cras.
111+
112+
- Nisi lacus sed viverra tellus in
113+
- Nibh cras pulvinar mattis nunc sed
114+
115+
Gravida in fermentum et sollicitudin ac orci phasellus egestas tellus. Volutpat consequat mauris nunc congue nisi vitae.
116+
117+
```js app.js focus=15:21
118+
119+
```
120+
121+
---
122+
123+
## Step 5
124+
125+
Velit euismod in pellentesque massa placerat. Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in.
126+
127+
Praesent elementum facilisis leo vel fringilla est ullamcorper eget.
128+
129+
Id aliquet risus feugiat in ante metus dictum at tempor. Sed blandit libero volutpat sed cras. Sed odio morbi quis commodo odio aenean sed adipiscing. Velit euismod in pellentesque massa placerat.
130+
131+
Mi bibendum neque egestas congue quisque egestas diam in arcu. Nisi lacus sed viverra tellus in. Nibh cras pulvinar mattis nunc sed. Luctus accumsan tortor posuere ac ut consequat semper viverra.
132+
133+
- Fringilla ut morbi tincidunt augue interdum velit euismod.
134+
- Luctus accumsan tortor posuere ac ut consequat semper viverra.
135+
136+
Morbi quis commodo.
137+
138+
```js app.js
139+
140+
```
141+
142+
</CH.Scrollycoding>
143+
144+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
145+
146+
Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
147+
148+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Praesent elementum facilisis leo vel fringilla est ullamcorper eget. At imperdiet dui accumsan sit amet nulla facilities morbi tempus. Praesent elementum facilisis leo vel fringilla. Congue mauris rhoncus aenean vel. Egestas sed tempus urna et pharetra pharetra massa massa ultricies.
File renamed without changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import fs from "fs"
2+
import path from "path"
3+
4+
// POSTS_PATH is useful when you want to get the path to a specific file
5+
export const POSTS_PATH = path.join(process.cwd(), "posts")
6+
7+
export const postNames = fs
8+
.readdirSync(POSTS_PATH)
9+
.filter((path) => /\.mdx?$/.test(path))
10+
.map((path) => path.replace(/\.mdx?$/, ""))

0 commit comments

Comments
 (0)