From d23277119b7cd15fc506045bbe95eba54efd3524 Mon Sep 17 00:00:00 2001 From: kenneth Date: Fri, 13 Mar 2026 23:54:01 +0000 Subject: [PATCH] feat: add @aelis/components package with JRX definitions JRX component wrappers for the aelis-client UI components, enabling server-side feed item rendering via json-render. Co-authored-by: Ona --- bun.lock | 10 ++ packages/aelis-components/package.json | 14 ++ packages/aelis-components/src/button.ts | 15 ++ .../aelis-components/src/components.test.tsx | 155 ++++++++++++++++++ packages/aelis-components/src/feed-card.ts | 12 ++ packages/aelis-components/src/index.ts | 14 ++ .../aelis-components/src/monospace-text.ts | 13 ++ .../aelis-components/src/sans-serif-text.ts | 13 ++ packages/aelis-components/src/serif-text.ts | 13 ++ packages/aelis-components/tsconfig.json | 7 + 10 files changed, 266 insertions(+) create mode 100644 packages/aelis-components/package.json create mode 100644 packages/aelis-components/src/button.ts create mode 100644 packages/aelis-components/src/components.test.tsx create mode 100644 packages/aelis-components/src/feed-card.ts create mode 100644 packages/aelis-components/src/index.ts create mode 100644 packages/aelis-components/src/monospace-text.ts create mode 100644 packages/aelis-components/src/sans-serif-text.ts create mode 100644 packages/aelis-components/src/serif-text.ts create mode 100644 packages/aelis-components/tsconfig.json diff --git a/bun.lock b/bun.lock index fc7abe9..02e09dd 100644 --- a/bun.lock +++ b/bun.lock @@ -108,6 +108,14 @@ "vite-tsconfig-paths": "^5.1.4", }, }, + "packages/aelis-components": { + "name": "@aelis/components", + "version": "0.0.0", + "peerDependencies": { + "@json-render/core": "*", + "@nym.sh/jrx": "*", + }, + }, "packages/aelis-core": { "name": "@aelis/core", "version": "0.0.0", @@ -187,6 +195,8 @@ "@aelis/backend": ["@aelis/backend@workspace:apps/aelis-backend"], + "@aelis/components": ["@aelis/components@workspace:packages/aelis-components"], + "@aelis/core": ["@aelis/core@workspace:packages/aelis-core"], "@aelis/data-source-weatherkit": ["@aelis/data-source-weatherkit@workspace:packages/aelis-data-source-weatherkit"], diff --git a/packages/aelis-components/package.json b/packages/aelis-components/package.json new file mode 100644 index 0000000..dd379d3 --- /dev/null +++ b/packages/aelis-components/package.json @@ -0,0 +1,14 @@ +{ + "name": "@aelis/components", + "version": "0.0.0", + "type": "module", + "main": "src/index.ts", + "types": "src/index.ts", + "scripts": { + "test": "bun test ./src" + }, + "peerDependencies": { + "@json-render/core": "*", + "@nym.sh/jrx": "*" + } +} diff --git a/packages/aelis-components/src/button.ts b/packages/aelis-components/src/button.ts new file mode 100644 index 0000000..a5c944f --- /dev/null +++ b/packages/aelis-components/src/button.ts @@ -0,0 +1,15 @@ +import type { JrxNode } from "@nym.sh/jrx" + +import { jsx } from "@nym.sh/jrx/jsx-runtime" + +export type ButtonProps = { + label: string + leadingIcon?: string + trailingIcon?: string + style?: string + children?: JrxNode | JrxNode[] +} + +export function Button(props: ButtonProps): JrxNode { + return jsx("Button", props) +} diff --git a/packages/aelis-components/src/components.test.tsx b/packages/aelis-components/src/components.test.tsx new file mode 100644 index 0000000..3c20848 --- /dev/null +++ b/packages/aelis-components/src/components.test.tsx @@ -0,0 +1,155 @@ +/** @jsxImportSource @nym.sh/jrx */ + +import { render } from "@nym.sh/jrx" +import { describe, expect, test } from "bun:test" + +import { Button } from "./button.ts" +import { FeedCard } from "./feed-card.ts" +import { MonospaceText } from "./monospace-text.ts" +import { SansSerifText } from "./sans-serif-text.ts" +import { SerifText } from "./serif-text.ts" + +describe("Button", () => { + test("renders with label", () => { + const spec = render(