diff --git a/sites/svelte.dev/src/lib/server/examples/get-examples.js b/sites/svelte.dev/src/lib/server/examples/get-examples.js
index 5c35f78eab..e9b46a88e7 100644
--- a/sites/svelte.dev/src/lib/server/examples/get-examples.js
+++ b/sites/svelte.dev/src/lib/server/examples/get-examples.js
@@ -19,7 +19,8 @@ export function get_examples_data(base = BASE) {
if (!(fs.statSync(`${base}/${subdir}`).isDirectory() || subdir.endsWith('meta.json'))) continue;
if (!subdir.endsWith('meta.json'))
- section.title = JSON.parse(fs.readFileSync(`${base}/${subdir}/meta.json`, 'utf-8')).title;
+ section.title =
+ JSON.parse(fs.readFileSync(`${base}/${subdir}/meta.json`, 'utf-8')).title ?? 'Embeds';
for (const section_dir of fs.readdirSync(`${base}/${subdir}`)) {
const match = /\d{2}-(.+)/.exec(section_dir);
diff --git a/sites/svelte.dev/src/routes/examples/[slug]/TableOfContents.svelte b/sites/svelte.dev/src/routes/examples/[slug]/TableOfContents.svelte
index 040da70129..fefa85070a 100644
--- a/sites/svelte.dev/src/routes/examples/[slug]/TableOfContents.svelte
+++ b/sites/svelte.dev/src/routes/examples/[slug]/TableOfContents.svelte
@@ -14,7 +14,8 @@
{#each sections as section}
- {#if section.title !== undefined}
+
+ {#if section.title !== 'Embeds'}
-
{section.title}
diff --git a/sites/svelte.dev/src/routes/examples/api/[slug].json/+server.js b/sites/svelte.dev/src/routes/examples/api/[slug].json/+server.js
index 45594024bf..eb5dec4e9e 100644
--- a/sites/svelte.dev/src/routes/examples/api/[slug].json/+server.js
+++ b/sites/svelte.dev/src/routes/examples/api/[slug].json/+server.js
@@ -3,6 +3,8 @@ import { get_example } from '$lib/server/examples';
import { get_examples_list } from '$lib/server/examples/get-examples';
import { error, json } from '@sveltejs/kit';
+export const prerender = true;
+
export const GET = ({ params }) => {
const examples = new Set(
get_examples_list(examples_data)
diff --git a/sites/svelte.dev/svelte.config.js b/sites/svelte.dev/svelte.config.js
index 76af69e0c9..6dd2c2427f 100644
--- a/sites/svelte.dev/svelte.config.js
+++ b/sites/svelte.dev/svelte.config.js
@@ -9,7 +9,7 @@ export default {
adapter: adapter(),
prerender: {
// TODO use route entries instead, once https://github.com/sveltejs/kit/pull/9571 is merged
- entries: ['*', ...repl_json_entries(), ...tutorial_entries()]
+ entries: ['*', ...repl_json_entries(), ...tutorial_entries(), ...examples_json_entries()]
}
}
};
@@ -29,3 +29,11 @@ function tutorial_entries() {
tutorials.map(({ slug }) => /** @type {(`/${string}`)} */ (`/tutorial/${slug}`))
);
}
+
+function examples_json_entries() {
+ return get_examples_list(
+ get_examples_data(new URL('../../site/content/examples', import.meta.url).pathname)
+ ).flatMap(({ examples }) =>
+ examples.map(({ slug }) => /** @type {(`/${string}`)} */ (`/examples/api/${slug}.json`))
+ );
+}