Skip to content

Commit 1c058dd

Browse files
authored
Add JEXL project page and experimental status support (#223)
Add project page for JEXL, a JSON-based programming language. Includes support for a new 'experimental' status for projects with purple styling. Updates schemas, components, and the URL manifest accordingly.
1 parent b07904f commit 1c058dd

6 files changed

Lines changed: 47 additions & 6 deletions

File tree

src/components/LinkList.astro

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,15 @@ export interface LinkListItem {
99
slug: string;
1010
title: string;
1111
date?: string;
12-
status?: "active" | "completed" | "archived" | "maintenance" | "draft" | "working" | "final";
12+
status?:
13+
| "experimental"
14+
| "active"
15+
| "completed"
16+
| "archived"
17+
| "maintenance"
18+
| "draft"
19+
| "working"
20+
| "final";
1321
description?: string;
1422
treeChar?: string;
1523
isLast?: boolean;
@@ -73,7 +81,14 @@ const HeadingTag = headingLevel;
7381
if (statusType === "project") {
7482
return (
7583
<ProjectStatus
76-
status={item.status as "active" | "completed" | "archived" | "maintenance"}
84+
status={
85+
item.status as
86+
| "experimental"
87+
| "active"
88+
| "completed"
89+
| "archived"
90+
| "maintenance"
91+
}
7792
/>
7893
);
7994
} else if (statusType === "research") {
@@ -121,7 +136,14 @@ const HeadingTag = headingLevel;
121136
if (statusType === "project") {
122137
return (
123138
<ProjectStatus
124-
status={item.status as "active" | "completed" | "archived" | "maintenance"}
139+
status={
140+
item.status as
141+
| "experimental"
142+
| "active"
143+
| "completed"
144+
| "archived"
145+
| "maintenance"
146+
}
125147
/>
126148
);
127149
} else if (statusType === "research") {

src/components/ProjectStatus.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
---
22
interface Props {
3-
status: "active" | "completed" | "archived" | "maintenance";
3+
status: "experimental" | "active" | "completed" | "archived" | "maintenance";
44
}
55
66
const { status } = Astro.props;
77
88
const statusColors = {
9+
experimental: "bg-purple-500/20 text-purple-700 dark:text-purple-300",
910
active: "bg-green-500/20 text-green-700 dark:text-green-300",
1011
completed: "bg-blue-500/20 text-blue-700 dark:text-blue-300",
1112
archived: "bg-gray-500/20 text-gray-700 dark:text-gray-400",

src/content/projects/jexl.mdx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: JEXL
3+
description: A programming language where the entire syntax is written in pure JSON
4+
url: https://jexl.just-be.dev
5+
repository: https://github.com/just-be-dev/jexl
6+
status: experimental
7+
date: 2025-05-01
8+
slugs:
9+
- /jexl
10+
code: p2424
11+
---
12+
13+
::readme{repo="just-be-dev/jexl"}

src/content/schemas.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ export const projectsSchema = z.object({
1616
description: z.string().optional(),
1717
url: z.string().url().optional(),
1818
repository: z.string().url().optional(),
19-
status: z.enum(["active", "completed", "archived", "maintenance"]).default("active"),
19+
status: z
20+
.enum(["experimental", "active", "completed", "archived", "maintenance"])
21+
.default("active"),
2022
date: z.coerce.date(),
2123
code: z.string().optional(),
2224
slugs: z.array(z.string()).optional(),

src/content/url-manifest.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ codes:
1616
- /projects/devtools-fm
1717
p2323:
1818
- /projects/side-project-saturday
19+
p2424:
20+
- /projects/jexl
21+
- /jexl
1922
p252b:
2023
- /projects/ccpm
2124
- /ccpm

src/pages/projects/[slug].astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const code = project.data.code?.toUpperCase();
4141
{
4242
project.data.status && (
4343
<div class="flex gap-[1ch] justify-end">
44-
<ProjectStatus status={project.data.status} variant="badge" />
44+
<ProjectStatus status={project.data.status} />
4545
</div>
4646
)
4747
}

0 commit comments

Comments
 (0)