diff --git a/src/routes/feed/+page.svelte b/src/routes/feed/+page.svelte new file mode 100644 index 0000000..ee2d69f --- /dev/null +++ b/src/routes/feed/+page.svelte @@ -0,0 +1,119 @@ + + + + Art Feed | denizk0461 + + +{#snippet pageButtons(currentIndex: number)} +
+ {#if currentIndex == 1} +

x

+ {:else} + < + {/if} + + {#each { length: data.maxPages }, index} + {index + 1} + {/each} + + {#if currentIndex == data.maxPages} +

x

+ {:else} + > + {/if} +
+{/snippet} + + + + + {@render pageButtons(data.currentPage)} + +

Welcome to my (new) art feed! It is heavily inspired by DeathSurplus' art blog – definitely go check out his page!

+ +

This page is intended to be a contrasting companion to the projects page; I'll use this page for smaller things that don't fit the dedicated-page-format.

+ + + + {#each data.feedEntries as entry} +

{entry.title}

+

{entry.subtitle}

+

{entry.date}

+ + {/each} + +
+ + \ No newline at end of file diff --git a/src/routes/feed/+page.ts b/src/routes/feed/+page.ts new file mode 100644 index 0000000..237b13f --- /dev/null +++ b/src/routes/feed/+page.ts @@ -0,0 +1,50 @@ +import { entries } from './feed'; + +interface FeedEntry { + content: any; + title: string; + subtitle: string; + date: string; +} + +let entriesPerPage = 8; + +export async function load({ params, url }) { + // Get page index + let pageIndex = Number(url.searchParams.get('p')); + if (pageIndex == 0) { + pageIndex = 1; + } + + // TODO check if index exceeds maximum permitted and redirect (to max page?) + + let feedEntries: FeedEntry[] = []; + let start = (pageIndex - 1) * entriesPerPage; + + for (let i = start; i < start + entriesPerPage; i += 1) { + // Stop iterating when end reached + if (i >= entries.length) { + break; + } + // Vite complains if I don't do this even though it's stupid + const path = entries[i].split("/"); + const page = await import(`./${path[0]}/${path[1]}.md`); + const md = page.metadata; + + feedEntries.push({ + content: page.default, + title: md.title, + subtitle: md.subtitle, + date: md.date, + }); + } + + let currentPage = pageIndex; + let maxPages = Math.ceil(entries.length / entriesPerPage); + + return { + currentPage, + maxPages, + feedEntries, + }; +} \ No newline at end of file diff --git a/src/routes/feed/drawings/2026-march.md b/src/routes/feed/drawings/2026-march.md new file mode 100644 index 0000000..fc569bb --- /dev/null +++ b/src/routes/feed/drawings/2026-march.md @@ -0,0 +1,5 @@ +--- +title: asdf +subtitle: asd +date: aaa +--- \ No newline at end of file diff --git a/src/routes/feed/drawings/mossig-gender.md b/src/routes/feed/drawings/mossig-gender.md new file mode 100644 index 0000000..fc569bb --- /dev/null +++ b/src/routes/feed/drawings/mossig-gender.md @@ -0,0 +1,5 @@ +--- +title: asdf +subtitle: asd +date: aaa +--- \ No newline at end of file diff --git a/src/routes/feed/feed.ts b/src/routes/feed/feed.ts new file mode 100644 index 0000000..f1b526a --- /dev/null +++ b/src/routes/feed/feed.ts @@ -0,0 +1,9 @@ +export let entries: string[] = [ + // 2026 + // "misc/lightyears-font", + "drawings/mossig-gender", + "drawings/2026-march", + // 2024 + // "electronics/3ds-usb-c", + // "electronics/deej0461", +]; \ No newline at end of file