From e4b4e2b10fbcb58a525e65d1dcb6ae822aec9a0d Mon Sep 17 00:00:00 2001 From: Oliver Bryan <04oliverbryan@gmail.com> Date: Tue, 30 Sep 2025 11:48:41 +0100 Subject: [PATCH] tags! --- src/components/ProjectListItem.astro | 13 +++++++++++++ src/components/ProjectPage.astro | 13 +++++++++++++ src/pages/index.astro | 2 ++ src/pages/projects/factor-e.astro | 1 + src/pages/projects/glimpse.astro | 1 + src/pages/projects/mizu.astro | 3 +++ src/pages/projects/watercooler.astro | 29 ++++++++++++++++++---------- src/pages/projects/wiskatron.astro | 1 + src/styles/global.css | 8 ++++++++ 9 files changed, 61 insertions(+), 10 deletions(-) diff --git a/src/components/ProjectListItem.astro b/src/components/ProjectListItem.astro index abce2a07..c44b627e 100644 --- a/src/components/ProjectListItem.astro +++ b/src/components/ProjectListItem.astro @@ -7,6 +7,7 @@ const { slug, isDevMode = false, isHidden = false, + tags = [], } = Astro.props; --- @@ -44,6 +45,7 @@ const {
@@ -66,6 +68,17 @@ const {

{description}

+ { + tags && tags.length > 0 && ( +
+ {tags.map((tag: string, idx: number) => ( + + {tag} + + ))} +
+ ) + }
diff --git a/src/components/ProjectPage.astro b/src/components/ProjectPage.astro index 4d341854..ab10267a 100644 --- a/src/components/ProjectPage.astro +++ b/src/components/ProjectPage.astro @@ -11,6 +11,7 @@ export interface Props { url?: string; github?: string; hidden: boolean; + tags?: string[]; }; } @@ -85,6 +86,18 @@ const { metadata } = Astro.props; }

+ { + metadata.tags && metadata.tags.length > 0 && ( +
+ {metadata.tags.map((tag: string, idx: number) => ( + + {tag} + + ))} +
+ ) + } + { metadata.url ? (
)) } diff --git a/src/pages/projects/factor-e.astro b/src/pages/projects/factor-e.astro index 4f377e66..4eaecebc 100644 --- a/src/pages/projects/factor-e.astro +++ b/src/pages/projects/factor-e.astro @@ -11,6 +11,7 @@ export const metadata = { image: "/factor-e-icon.svg", github: "https://github.com/hex248/factor-e", hidden: false, + tags: ["game", "cpp", "opengl", "cmake", "pixel-art"], }; --- diff --git a/src/pages/projects/glimpse.astro b/src/pages/projects/glimpse.astro index 494d5f60..dfcf6bfc 100644 --- a/src/pages/projects/glimpse.astro +++ b/src/pages/projects/glimpse.astro @@ -11,6 +11,7 @@ export const metadata = { url: "https://glimpse.ob248.com", github: "https://github.com/hex248/glimpse", hidden: false, + tags: ["web", "react", "typescript"], }; --- diff --git a/src/pages/projects/mizu.astro b/src/pages/projects/mizu.astro index 9ba3eac5..444d6d10 100644 --- a/src/pages/projects/mizu.astro +++ b/src/pages/projects/mizu.astro @@ -9,6 +9,7 @@ export const metadata = { slug: "mizu", image: "/mizu-icon.svg", hidden: true, + tags: ["nodejs", "typescript", "postgresql", "aws_s3", "discord"], }; --- @@ -22,6 +23,8 @@ export const metadata = { diff --git a/src/pages/projects/watercooler.astro b/src/pages/projects/watercooler.astro index c957a105..6151580d 100644 --- a/src/pages/projects/watercooler.astro +++ b/src/pages/projects/watercooler.astro @@ -1,4 +1,4 @@ - --- +--- import ProjectPage from "../../components/ProjectPage.astro"; import Demo from "../../components/Demo.astro"; @@ -11,6 +11,15 @@ export const metadata = { image: "/watercooler-icon.svg", // github: "https://github.com/hex248/watercooler", hidden: true, + tags: [ + "web", + "react", + "typescript", + "webrtc", + "livekit", + "postgresql", + "oauth", + ], }; --- @@ -59,13 +68,13 @@ export const metadata = {
-
-

Screenshots

-
- - - - -
-
+
+

Screenshots

+
+ + + + +
+
diff --git a/src/pages/projects/wiskatron.astro b/src/pages/projects/wiskatron.astro index b8a1a6c2..6c775c97 100644 --- a/src/pages/projects/wiskatron.astro +++ b/src/pages/projects/wiskatron.astro @@ -11,6 +11,7 @@ export const metadata = { // url: "https://wiskatron.oliverbryan.com", github: "https://github.com/hex248/wiskatron", hidden: false, + tags: ["web", "react", "typescript", "spotify_api"], }; --- diff --git a/src/styles/global.css b/src/styles/global.css index a6cb8895..9efd654d 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -245,3 +245,11 @@ body { padding: 5px; text-align: center; } + +.no-select { + user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +}