This commit is contained in:
Oliver Bryan
2025-09-30 11:48:41 +01:00
parent 7104d2262f
commit e4b4e2b10f
9 changed files with 61 additions and 10 deletions

View File

@@ -7,6 +7,7 @@ const {
slug, slug,
isDevMode = false, isDevMode = false,
isHidden = false, isHidden = false,
tags = [],
} = Astro.props; } = Astro.props;
--- ---
@@ -44,6 +45,7 @@ const {
<a <a
href={`/projects/${slug}`} href={`/projects/${slug}`}
class={`project-item block border-2 flex flex-col justify-between rounded-md ${isDevMode && isHidden ? "dev-hidden" : ""}`} class={`project-item block border-2 flex flex-col justify-between rounded-md ${isDevMode && isHidden ? "dev-hidden" : ""}`}
data-tags={tags.join(",")}
> >
<div class="flex gap-4 p-4 pb-0"> <div class="flex gap-4 p-4 pb-0">
<div class="w-16 h-16 flex-shrink-0"> <div class="w-16 h-16 flex-shrink-0">
@@ -66,6 +68,17 @@ const {
<p class="project-description text-sm"> <p class="project-description text-sm">
{description} {description}
</p> </p>
{
tags && tags.length > 0 && (
<div class="flex gap-1.5 text-xs flex-wrap leading-3 items-center mb-1 no-select">
{tags.map((tag: string, idx: number) => (
<span class="flex items-center text-ayu-gutter font-500 rounded-md border border-ayu-gutter px-1.5 py-0.5">
{tag}
</span>
))}
</div>
)
}
</div> </div>
</div> </div>
<div class="w-full flex justify-end p-2 pt-1"> <div class="w-full flex justify-end p-2 pt-1">

View File

@@ -11,6 +11,7 @@ export interface Props {
url?: string; url?: string;
github?: string; github?: string;
hidden: boolean; hidden: boolean;
tags?: string[];
}; };
} }
@@ -85,6 +86,18 @@ const { metadata } = Astro.props;
} }
</p> </p>
{
metadata.tags && metadata.tags.length > 0 && (
<div class="flex gap-1.5 text-sm flex-wrap leading-3 items-center mb-2 no-select">
{metadata.tags.map((tag: string, idx: number) => (
<span class="flex items-center text-ayu-gutter font-500 rounded-md border border-ayu-gutter px-1.5 py-1">
{tag}
</span>
))}
</div>
)
}
{ {
metadata.url ? ( metadata.url ? (
<a <a

View File

@@ -12,6 +12,7 @@ interface ProjectMetadata {
slug: string; slug: string;
hidden: boolean; hidden: boolean;
image?: string; image?: string;
tags?: string[];
} }
interface AstroModule { interface AstroModule {
@@ -163,6 +164,7 @@ const projects: ProjectMetadata[] = Object.values(
slug={project.slug} slug={project.slug}
isDevMode={isDevMode} isDevMode={isDevMode}
isHidden={project.hidden} isHidden={project.hidden}
tags={project.tags || []}
/> />
)) ))
} }

View File

@@ -11,6 +11,7 @@ export const metadata = {
image: "/factor-e-icon.svg", image: "/factor-e-icon.svg",
github: "https://github.com/hex248/factor-e", github: "https://github.com/hex248/factor-e",
hidden: false, hidden: false,
tags: ["game", "cpp", "opengl", "cmake", "pixel-art"],
}; };
--- ---

View File

@@ -11,6 +11,7 @@ export const metadata = {
url: "https://glimpse.ob248.com", url: "https://glimpse.ob248.com",
github: "https://github.com/hex248/glimpse", github: "https://github.com/hex248/glimpse",
hidden: false, hidden: false,
tags: ["web", "react", "typescript"],
}; };
--- ---

View File

@@ -9,6 +9,7 @@ export const metadata = {
slug: "mizu", slug: "mizu",
image: "/mizu-icon.svg", image: "/mizu-icon.svg",
hidden: true, hidden: true,
tags: ["nodejs", "typescript", "postgresql", "aws_s3", "discord"],
}; };
--- ---
@@ -22,6 +23,8 @@ export const metadata = {
<ul class="list-disc list-inside space-y-1"> <ul class="list-disc list-inside space-y-1">
<li>Node.js</li> <li>Node.js</li>
<li>TypeScript</li> <li>TypeScript</li>
<li>Express.js</li>
<li>Discord.js</li>
<li>PostgreSQL</li> <li>PostgreSQL</li>
<li>AWS S3</li> <li>AWS S3</li>
</ul> </ul>

View File

@@ -1,4 +1,4 @@
--- ---
import ProjectPage from "../../components/ProjectPage.astro"; import ProjectPage from "../../components/ProjectPage.astro";
import Demo from "../../components/Demo.astro"; import Demo from "../../components/Demo.astro";
@@ -11,6 +11,15 @@ export const metadata = {
image: "/watercooler-icon.svg", image: "/watercooler-icon.svg",
// github: "https://github.com/hex248/watercooler", // github: "https://github.com/hex248/watercooler",
hidden: true, hidden: true,
tags: [
"web",
"react",
"typescript",
"webrtc",
"livekit",
"postgresql",
"oauth",
],
}; };
--- ---
@@ -59,13 +68,13 @@ export const metadata = {
</div> </div>
</div> </div>
<div class="mt-4"> <div class="mt-4">
<h2 class="text-2xl text-ayu-accent mb-3">Screenshots</h2> <h2 class="text-2xl text-ayu-accent mb-3">Screenshots</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<Demo image="/images/watercooler/office.png" title="Office space" /> <Demo image="/images/watercooler/office.png" title="Office space" />
<Demo image="/images/watercooler/idk.png" title="idk" /> <Demo image="/images/watercooler/idk.png" title="idk" />
<Demo image="/images/watercooler/idk.png" title="idk" /> <Demo image="/images/watercooler/idk.png" title="idk" />
<Demo image="/images/watercooler/idk.png" title="idk" /> <Demo image="/images/watercooler/idk.png" title="idk" />
</div> </div>
</div> </div>
</ProjectPage> </ProjectPage>

View File

@@ -11,6 +11,7 @@ export const metadata = {
// url: "https://wiskatron.oliverbryan.com", // url: "https://wiskatron.oliverbryan.com",
github: "https://github.com/hex248/wiskatron", github: "https://github.com/hex248/wiskatron",
hidden: false, hidden: false,
tags: ["web", "react", "typescript", "spotify_api"],
}; };
--- ---

View File

@@ -245,3 +245,11 @@ body {
padding: 5px; padding: 5px;
text-align: center; text-align: center;
} }
.no-select {
user-select: none;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
}