From 8282eae10f589f5795695acfa9dc331d76c3f150 Mon Sep 17 00:00:00 2001 From: matthieu42morin Date: Mon, 13 Nov 2023 23:59:34 +0100 Subject: [PATCH] projects route with layouts and logic --- src/routes/projects/+layout.server.ts | 8 ++++++++ src/routes/projects/+layout.svelte | 1 + src/routes/projects/+page.svelte | 13 ++++++++++++- src/routes/projects/[slug]/+page.svelte | 10 ++++++++++ src/routes/projects/[slug]/+page.ts | 8 ++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/routes/projects/+layout.server.ts create mode 100644 src/routes/projects/+layout.svelte create mode 100644 src/routes/projects/[slug]/+page.svelte create mode 100644 src/routes/projects/[slug]/+page.ts diff --git a/src/routes/projects/+layout.server.ts b/src/routes/projects/+layout.server.ts new file mode 100644 index 0000000..b29281a --- /dev/null +++ b/src/routes/projects/+layout.server.ts @@ -0,0 +1,8 @@ +import { listProjects } from '$content/projects'; +import type { LayoutServerLoad } from './$types'; + +export const load: LayoutServerLoad = () => { + return { + projects: listProjects() + }; +}; diff --git a/src/routes/projects/+layout.svelte b/src/routes/projects/+layout.svelte new file mode 100644 index 0000000..0385342 --- /dev/null +++ b/src/routes/projects/+layout.svelte @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/routes/projects/+page.svelte b/src/routes/projects/+page.svelte index e02a5ca..b905094 100644 --- a/src/routes/projects/+page.svelte +++ b/src/routes/projects/+page.svelte @@ -1 +1,12 @@ -

There is nothing to see yet

+ + +
+ {data.projects} +
+ + diff --git a/src/routes/projects/[slug]/+page.svelte b/src/routes/projects/[slug]/+page.svelte new file mode 100644 index 0000000..85d5c3d --- /dev/null +++ b/src/routes/projects/[slug]/+page.svelte @@ -0,0 +1,10 @@ + + + + + diff --git a/src/routes/projects/[slug]/+page.ts b/src/routes/projects/[slug]/+page.ts new file mode 100644 index 0000000..69e72fc --- /dev/null +++ b/src/routes/projects/[slug]/+page.ts @@ -0,0 +1,8 @@ +import { getProject, listProjects } from '$content/projects'; +import type { PageLoad } from './$types'; + +export const entries = () => listProjects().map((post) => ({ slug: post.slug })); + +export const load: PageLoad = async ({ params }) => { + return await getProject(params.slug); +};