diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 6dc76c423b..ecb1c1e79c 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -109,6 +109,7 @@ module.exports = {
rules: {
"mdx/remark": "error",
"no-unused-expressions": "off",
+ "react/jsx-no-undef": "off",
},
},
{
diff --git a/next.config.js b/next.config.js
index 24baa11c51..10d19a2d85 100644
--- a/next.config.js
+++ b/next.config.js
@@ -27,6 +27,25 @@ export default withLess(
withNextra({
// reactStrictMode: true, provoke duplicated codemirror editors
webpack(config) {
+ // #region MDX
+ const mdxRule = config.module.rules.find(rule =>
+ rule.test?.test?.(".mdx"),
+ )
+ if (mdxRule) {
+ mdxRule.resourceQuery = {
+ not: /raw/,
+ }
+ }
+ // Instead of transforming MDX, with ?source we can get
+ // the raw content to process in a Server Component.
+ config.module.rules.push({
+ test: /\.mdx$/i,
+ resourceQuery: /raw/,
+ type: "asset/source",
+ })
+ // #endregion MDX
+
+ // #region SVGs
const fileLoaderRule = config.module.rules.find(rule =>
rule.test?.test?.(".svg"),
)
@@ -62,6 +81,7 @@ export default withLess(
},
},
)
+ // #endregion SVGs
return config
},
diff --git a/package.json b/package.json
index 50ba6118aa..780d69c7f0 100644
--- a/package.json
+++ b/package.json
@@ -33,6 +33,7 @@
"codemirror-graphql": "1.3.2",
"date-fns": "^2.30.0",
"fast-glob": "^3.3.3",
+ "github-slugger": "2.0.0",
"graphql": "16.10.0",
"gray-matter": "^4.0.3",
"hast-util-to-string": "3.0.1",
diff --git a/patches/nextra@3.0.0-alpha.22.patch b/patches/nextra@3.0.0-alpha.22.patch
index 09f7508769..6f4a58ebf6 100644
--- a/patches/nextra@3.0.0-alpha.22.patch
+++ b/patches/nextra@3.0.0-alpha.22.patch
@@ -9,3 +9,18 @@ index af0891e3c2084edd326f40e6e18107b193640e0b..885858fa17285fb75649cf0ebd2576d1
import { createElement } from "react";
const DEFAULT_COMPONENTS = {
img: (props) => createElement(
+diff --git a/package.json b/package.json
+index 0625691ebc1d79d7b7d22bb3b001f00a57519772..53d4b0c951a762ae056004789c9aca819e0ade62 100644
+--- a/package.json
++++ b/package.json
+@@ -20,6 +20,10 @@
+ "import": "./dist/server/remark-plugins/index.js",
+ "types": "./dist/server/remark-plugins/index.d.ts"
+ },
++ "./rehype-plugins": {
++ "import": "./dist/server/rehype-plugins/index.js",
++ "types": "./dist/server/rehype-plugins/index.d.ts"
++ },
+ "./hooks": {
+ "import": "./dist/client/hooks/index.js",
+ "types": "./dist/client/hooks/index.d.ts"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6a3151d375..aaa2cb45d3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,7 +6,7 @@ settings:
patchedDependencies:
nextra@3.0.0-alpha.28:
- hash: rggcgtpcrgz5zyoxmhwje4p6rm
+ hash: rlrllt7ydx3t6f2hccqi2i2pf4
path: patches/nextra@3.0.0-alpha.22.patch
importers:
@@ -52,6 +52,9 @@ importers:
fast-glob:
specifier: ^3.3.3
version: 3.3.3
+ github-slugger:
+ specifier: 2.0.0
+ version: 2.0.0
graphql:
specifier: 16.10.0
version: 16.10.0
@@ -96,10 +99,10 @@ importers:
version: 3.0.1(less-loader@12.2.0(less@4.2.1))(less@4.2.1)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
nextra:
specifier: 3.0.0-alpha.28
- version: 3.0.0-alpha.28(patch_hash=rggcgtpcrgz5zyoxmhwje4p6rm)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
+ version: 3.0.0-alpha.28(patch_hash=rlrllt7ydx3t6f2hccqi2i2pf4)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
nextra-theme-docs:
specifier: 3.0.0-alpha.28
- version: 3.0.0-alpha.28(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.0-alpha.28(patch_hash=rggcgtpcrgz5zyoxmhwje4p6rm)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 3.0.0-alpha.28(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.0-alpha.28(patch_hash=rlrllt7ydx3t6f2hccqi2i2pf4)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
numbro:
specifier: 2.5.0
version: 2.5.0
@@ -10126,7 +10129,7 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
- nextra-theme-docs@3.0.0-alpha.28(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.0-alpha.28(patch_hash=rggcgtpcrgz5zyoxmhwje4p6rm)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ nextra-theme-docs@3.0.0-alpha.28(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.0-alpha.28(patch_hash=rlrllt7ydx3t6f2hccqi2i2pf4)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@headlessui/react': 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@popperjs/core': 2.11.8
@@ -10137,13 +10140,13 @@ snapshots:
intersection-observer: 0.12.2
next: 14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-themes: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- nextra: 3.0.0-alpha.28(patch_hash=rggcgtpcrgz5zyoxmhwje4p6rm)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
+ nextra: 3.0.0-alpha.28(patch_hash=rlrllt7ydx3t6f2hccqi2i2pf4)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
scroll-into-view-if-needed: 3.1.0
zod: 3.22.4
- nextra@3.0.0-alpha.28(patch_hash=rggcgtpcrgz5zyoxmhwje4p6rm)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3):
+ nextra@3.0.0-alpha.28(patch_hash=rlrllt7ydx3t6f2hccqi2i2pf4)(@types/react@18.3.23)(next@14.2.29(@babel/core@7.26.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3):
dependencies:
'@headlessui/react': 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mdx-js/mdx': 3.0.1
diff --git a/src/app/conf/2024/page.tsx b/src/app/conf/2024/page.tsx
index f968564339..e8dcc80f94 100644
--- a/src/app/conf/2024/page.tsx
+++ b/src/app/conf/2024/page.tsx
@@ -54,7 +54,7 @@ export default function Page() {