diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 58d0415..591aeee 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -18,6 +18,10 @@ jobs: build: runs-on: ubuntu-latest steps: + - name: Install node + run: | + apt-get update + apt-get install nodejs - name: Checkout your repository using git uses: actions/checkout@v4 - name: Install dependencies diff --git a/package-lock.json b/package-lock.json index 1de24e3..c9ddc7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6315,6 +6315,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz", "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==", "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.8" }, diff --git a/src/components/BlogList.svelte b/src/components/BlogList.svelte index b0b672c..9f306bf 100644 --- a/src/components/BlogList.svelte +++ b/src/components/BlogList.svelte @@ -9,35 +9,49 @@ posts: CollectionEntry<"blog">[]; } let { posts }: Props = $props(); - - let allTags = $derived([...new Set(posts.flatMap(item => item.data.tags))]); + + let allTags = $derived([...new Set(posts.flatMap((item) => item.data.tags))]); let selectedTags = $state>(); onMount(() => { const url = new URL(window.location.href); - const tagsQry = url.searchParams.get('tags'); - const defaultTags = tagsQry ? new Set(decodeURIComponent(tagsQry).split('+')) : new Set(); - selectedTags = new SvelteMap(allTags.map(tag => [tag, defaultTags.has(tag)])); - }) + const tagsQry = url.searchParams.get("tags"); + const defaultTags = tagsQry + ? new Set(decodeURIComponent(tagsQry).split("+")) + : new Set(); + selectedTags = new SvelteMap( + allTags.map((tag) => [tag, defaultTags.has(tag)]), + ); + }); $effect(() => { if (!selectedTags) return; const newTagsQry = encodeURIComponent( - [...selectedTags.entries()].filter(([_, v]) => v).map(([k, _]) => k).join('+') + [...selectedTags.entries()] + .filter(([_, v]) => v) + .map(([k, _]) => k) + .join("+"), ); const url = new URL(window.location.href); if (newTagsQry == url.searchParams.get("tags")) return; if (newTagsQry == "") url.searchParams.delete("tags"); else url.searchParams.set("tags", newTagsQry); window.history.pushState(null, "", url.toString()); - }) + }); - let isFiltered = $derived(selectedTags && [...selectedTags.values()].includes(true)); - let filteredPosts = $derived(isFiltered - ? posts.filter(p => !p.data.unlisted && p.data.tags.some(t => selectedTags!.get(t))) - : posts.filter(p => !p.data.unlisted)); - let shownPosts = $derived(filteredPosts.toReversed()) + let isFiltered = $derived( + selectedTags && [...selectedTags.values()].includes(true), + ); + let filteredPosts = $derived( + isFiltered + ? posts.filter( + (p) => + !p.data.unlisted && p.data.tags.some((t) => selectedTags!.get(t)), + ) + : posts.filter((p) => !p.data.unlisted), + ); + let shownPosts = $derived(filteredPosts.toReversed());
@@ -46,31 +60,37 @@ {#each allTags as tag} {/each}
-
+
{#each shownPosts as post} {/each}
- \ No newline at end of file + diff --git a/src/layouts/BlogPost.astro b/src/layouts/BlogPost.astro index dc40cec..1bc326f 100644 --- a/src/layouts/BlogPost.astro +++ b/src/layouts/BlogPost.astro @@ -13,7 +13,7 @@ const { title, author, summary, pubDate, updatedDate, image } = Astro.props;

{title}

@@ -41,7 +41,7 @@ const { title, author, summary, pubDate, updatedDate, image } = Astro.props;

Buy Me a Coffee at ko-fi.com @@ -50,7 +50,7 @@ const { title, author, summary, pubDate, updatedDate, image } = Astro.props; href="https://patreon.com/lbfalvy?utm_medium=unknown&utm_source=join_link&utm_campaign=creatorshare_creator&utm_content=copyLink" > Support me on Patreon diff --git a/src/pages/about.astro b/src/pages/about.astro index eeff7b2..c84bba9 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -1,22 +1,23 @@ --- import { Image } from "astro:assets"; import Main from "../layouts/Main.astro"; - --- -
+
- My face + My face

- My name is Lawrence Bethlenfalvy, I make websites and web-based applications primarily - with React. I enjoy seeing the fruit of my labour, which is why I do so much - frontend development even though I'm not exactly an artistic genius, as finest - demonstrated by this website. + My name is Lawrence Bethlenfalvy, I make websites and web-based + applications primarily with React. I enjoy seeing the fruit of my labour, + which is why I do so much frontend development even though I'm not exactly + an artistic genius, as finest demonstrated by this website.

I really like perfectly designed infrastructure, and in an effort to @@ -24,19 +25,21 @@ import Main from "../layouts/Main.astro"; DevOps experience.

- I studied a lot of advanced mathematical topics in high school, and although - I was never a big fan of solving equations for hours on end the approach and - some of the concepts stuck with me. I like to draw on mathematical techniques - for day-to-day problem solving, but I also view it as a hobby. + I studied a lot of advanced mathematical topics in high school, and + although I was never a big fan of solving equations for hours on end the + approach and some of the concepts stuck with me. I like to draw on + mathematical techniques for day-to-day problem solving, but I also view it + as a hobby.

- More recently I've been hard at work on my small conceptual language, Orchid, - which, like anything I do, tries to be unopinionated, minimalistic in design, - and robust in execution. - Designing a programming language is a constant goat game against the halting problem - so realising all these principles at the same time is nigh impossible, and incremental - progress is fundamentally incompatible with the optimal, holistic approach to - issues like type checking, but when I have something to report I do it here. + More recently I've been hard at work on my small conceptual language, + Orchid, which, like anything I do, tries to be unopinionated, minimalistic + in design, and robust in execution. Designing a programming language is a + constant goat game against the halting problem so realising all these + principles at the same time is nigh impossible, and incremental progress + is fundamentally incompatible with the optimal, holistic approach to + issues like type checking, but when I have something to report I do it + here.

diff --git a/src/pages/projects.astro b/src/pages/projects.astro index f1ee4cd..8e5f7a2 100644 --- a/src/pages/projects.astro +++ b/src/pages/projects.astro @@ -15,16 +15,17 @@ const projReady = await Promise.all( projReady.map(([proj, Content]) => (
- {proj.data.image && } -

- {proj.data.name} -

+ {proj.data.image && ( + + )} +

{proj.data.name}