From 1b83b5e0cb4f866466688d7b7cef0be009b634f4 Mon Sep 17 00:00:00 2001
From: upupming
{`// Import the v0.9 protocol
-import { Conversation } from '@lynx-js/a2ui-reactlynx/0.9';
+import { Conversation } from '@lynx-js/genui/a2ui/0.9';
export default function App() {
return (
@@ -30,7 +30,7 @@ export default function App() {
Build a custom chat UI with full control over layout and state.
- {`import { A2UIRender, useLynxClient } from '@lynx-js/a2ui-reactlynx/0.9';
+ {`import { A2UIRender, useLynxClient } from '@lynx-js/genui/a2ui/0.9';
export function CustomChat() {
const { messages, sendMessage } = useLynxClient("https://api.com/chat");
@@ -69,7 +69,7 @@ export function CustomChat() {
{`import { useState } from 'react';
-import { A2UIRender, useLynxClient } from '@lynx-js/a2ui-reactlynx/0.9';
+import { A2UIRender, useLynxClient } from '@lynx-js/genui/a2ui/0.9';
export function SingleRequest() {
const { sendMessage } = useLynxClient("https://api.com/chat", { keepHistory: false });
diff --git a/packages/genui/a2ui-playground/src/styles.css b/packages/genui/a2ui-playground/src/styles.css
index a276836a38..27006177cc 100644
--- a/packages/genui/a2ui-playground/src/styles.css
+++ b/packages/genui/a2ui-playground/src/styles.css
@@ -1,4 +1,4 @@
-@import "@lynx-js/a2ui-reactlynx/styles/theme.css";
+@import "@lynx-js/genui/a2ui/styles/theme.css";
/* ── Geist Design System Tokens ── */
:root {
diff --git a/packages/genui/a2ui-prompt/AGENTS.md b/packages/genui/a2ui-prompt/AGENTS.md
index 8a1c32d111..5666c71a69 100644
--- a/packages/genui/a2ui-prompt/AGENTS.md
+++ b/packages/genui/a2ui-prompt/AGENTS.md
@@ -9,7 +9,7 @@ This package may contain thin package-specific adapters such as
behavior should live in the server agent source and be re-exported from here.
The server package must remain self-contained for package-root Vercel
-deployments. Do not make `packages/genui/server` depend on `@lynx-js/a2ui-prompt`
+deployments. Do not make `packages/genui/server` depend on `@lynx-js/genui/a2ui-prompt`
at runtime.
When editing exported functions or constants reachable through this package,
diff --git a/packages/genui/a2ui-prompt/README.md b/packages/genui/a2ui-prompt/README.md
index ca524dcb35..017f57e5a5 100644
--- a/packages/genui/a2ui-prompt/README.md
+++ b/packages/genui/a2ui-prompt/README.md
@@ -1,6 +1,6 @@
# A2UI Prompt
-`@lynx-js/a2ui-prompt` provides A2UI system prompt construction utilities for
+`@lynx-js/genui/a2ui-prompt` provides A2UI system prompt construction utilities for
CLI and backend usage.
The source of truth for the built-in prompt and catalog is
@@ -14,7 +14,7 @@ package.
Build a prompt with the built-in A2UI basic catalog:
```ts
-import { buildA2UISystemPrompt } from '@lynx-js/a2ui-prompt';
+import { buildA2UISystemPrompt } from '@lynx-js/genui/a2ui-prompt';
const prompt = buildA2UISystemPrompt();
```
@@ -25,7 +25,7 @@ Read generated catalog artifacts and build a prompt for a custom catalog:
import {
buildA2UISystemPrompt,
readA2UICatalogFromDirectory,
-} from '@lynx-js/a2ui-prompt';
+} from '@lynx-js/genui/a2ui-prompt';
const catalog = readA2UICatalogFromDirectory({
catalogDir: 'dist/catalog',
@@ -37,7 +37,7 @@ const prompt = buildA2UISystemPrompt({ catalog });
`readA2UICatalogFromDirectory` expects generated files such as
`/catalog.json` and optional function definitions under `functions/`.
-Use `npx @lynx-js/a2ui-cli generate catalog` to create those artifacts.
+Use `genui a2ui generate catalog` to create those artifacts.
## Exports
diff --git a/packages/genui/a2ui-prompt/package.json b/packages/genui/a2ui-prompt/package.json
index 8a0994f2b6..95ef840352 100644
--- a/packages/genui/a2ui-prompt/package.json
+++ b/packages/genui/a2ui-prompt/package.json
@@ -1,6 +1,7 @@
{
- "name": "@lynx-js/a2ui-prompt",
+ "name": "@lynx-js/genui-a2ui-prompt",
"version": "0.0.0",
+ "private": true,
"description": "A2UI prompt and catalog rendering utilities for CLI prompt generation.",
"repository": {
"type": "git",
diff --git a/packages/genui/a2ui-prompt/src/index.ts b/packages/genui/a2ui-prompt/src/index.ts
index 77b5d3005c..18c2aa6917 100644
--- a/packages/genui/a2ui-prompt/src/index.ts
+++ b/packages/genui/a2ui-prompt/src/index.ts
@@ -54,7 +54,7 @@ export function readA2UICatalogFromDirectory(
}
if (componentManifests.length === 0) {
throw new Error(
- `[a2ui-prompt] No component catalog files found in ${options.catalogDir}. Expected files like /catalog.json. Run "a2ui-cli generate catalog" first or pass --catalog-dir to the generated catalog directory.`,
+ `[a2ui-prompt] No component catalog files found in ${options.catalogDir}. Expected files like /catalog.json. Run "genui a2ui generate catalog" first or pass --catalog-dir to the generated catalog directory.`,
);
}
diff --git a/packages/genui/a2ui/AGENTS.md b/packages/genui/a2ui/AGENTS.md
index 6aceaadcc3..474ca24fee 100644
--- a/packages/genui/a2ui/AGENTS.md
+++ b/packages/genui/a2ui/AGENTS.md
@@ -1,6 +1,6 @@
# a2ui (packages/genui/a2ui)
-This package (`@lynx-js/a2ui-reactlynx`) is a **headless** ReactLynx
+This package (`@lynx-js/genui/a2ui`) is a **headless** ReactLynx
renderer for the A2UI v0.9 protocol.
## How It Works (High Level)
@@ -122,13 +122,13 @@ User interactions are reported as `userAction` events:
Run from repo root:
```bash
-pnpm -F @lynx-js/a2ui-reactlynx build
+pnpm -C packages/genui/a2ui build
```
Notes:
- The package's `build` script runs the
- `@lynx-js/a2ui-catalog-extractor` to produce
+ `@lynx-js/genui/a2ui-catalog-extractor` to produce
`dist/catalog//catalog.json` manifests.
- The root `tsc --build` (registered as `//#build`) is what produces
`dist//index.{js,d.ts}` for each catalog component (project
@@ -138,7 +138,7 @@ Notes:
The build generates JSON schemas for catalog components:
-- Tool: `@lynx-js/a2ui-catalog-extractor` (TypeDoc-driven).
+- Tool: `@lynx-js/genui/a2ui-catalog-extractor` (TypeDoc-driven).
- Inputs: `src/catalog//index.tsx` files annotated with
`@a2uiCatalog ` JSDoc tags on the props interface.
- Outputs: `dist/catalog//catalog.json`.
@@ -163,5 +163,5 @@ When adding `src/catalog//index.tsx`:
3. Re-export the component from `src/catalog/index.ts`.
4. Add `./catalog/` and `./catalog//catalog.json` entries
to the `exports` map in `package.json`.
-5. Run `pnpm -F @lynx-js/a2ui-reactlynx build` and confirm
+5. Run `pnpm -C packages/genui/a2ui build` and confirm
`dist/catalog//catalog.json` is generated.
diff --git a/packages/genui/a2ui/README.md b/packages/genui/a2ui/README.md
index 697369e5cc..f8004e4ced 100644
--- a/packages/genui/a2ui/README.md
+++ b/packages/genui/a2ui/README.md
@@ -1,4 +1,4 @@
-# Lynx GenUI
+# @lynx-js/genui/a2ui
English | [简体中文](./README_zh.md)
@@ -67,8 +67,8 @@ For a product app using A2UI, the important surfaces are:
| Surface | Role |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
-| `@lynx-js/a2ui-reactlynx` | ReactLynx renderer for A2UI v0.9. It provides ``, `MessageStore`, catalog APIs, built-in components, and protocol helpers. |
-| `npx @lynx-js/a2ui-cli` | Build-time command for generating catalog artifacts from TypeScript contracts and A2UI system prompts for your agent. |
+| `@lynx-js/genui/a2ui` | ReactLynx renderer for A2UI v0.9. It provides ``, `MessageStore`, catalog APIs, built-in components, and protocol helpers. |
+| `genui a2ui` | Build-time command for generating catalog artifacts from TypeScript contracts and A2UI system prompts for your agent. |
| Your agent service | A backend you own. It receives user prompts/actions, calls a model with the A2UI prompt and catalog, validates output, and returns A2UI. |
| Your transport implementation | Client code that calls your agent service, handles REST or streaming responses, pushes messages into `MessageStore`, and forwards actions. |
@@ -119,12 +119,12 @@ subscribes to it and updates the rendered surface as messages arrive.
## Quickstart
-In your ReactLynx app, install the renderer package and keep the CLI as an
-`npx` command. The CLI requires Node.js 22 or newer.
+In your ReactLynx app, install the GenUI package. The CLI requires Node.js 22
+or newer and is exposed by the same package.
```sh
-pnpm add @lynx-js/a2ui-reactlynx
-npx @lynx-js/a2ui-cli --help
+pnpm add @lynx-js/genui
+genui a2ui --help
```
The rest of the flow is app-local: define catalog-facing component contracts,
@@ -167,7 +167,7 @@ ProductTile.displayName = 'ProductTile';
Generate a schema for the agent:
```sh
-npx @lynx-js/a2ui-cli generate catalog --catalog-dir src/catalog --out-dir dist/catalog
+genui a2ui generate catalog --catalog-dir src/catalog --out-dir dist/catalog
```
Then pair the component with its manifest:
@@ -180,12 +180,12 @@ import {
createMessageStore,
defineCatalog,
serializeCatalog,
-} from '@lynx-js/a2ui-reactlynx';
-import buttonManifest from '@lynx-js/a2ui-reactlynx/catalog/Button/catalog.json'
+} from '@lynx-js/genui/a2ui';
+import buttonManifest from '@lynx-js/genui/a2ui/catalog/Button/catalog.json'
with { type: 'json' };
-import columnManifest from '@lynx-js/a2ui-reactlynx/catalog/Column/catalog.json'
+import columnManifest from '@lynx-js/genui/a2ui/catalog/Column/catalog.json'
with { type: 'json' };
-import textManifest from '@lynx-js/a2ui-reactlynx/catalog/Text/catalog.json'
+import textManifest from '@lynx-js/genui/a2ui/catalog/Text/catalog.json'
with { type: 'json' };
import productTileManifest from './dist/catalog/ProductTile/catalog.json'
with { type: 'json' };
@@ -228,22 +228,22 @@ it when you want repeatable artifacts instead of hand-maintained JSON:
Run the published CLI package through `npx`:
```sh
-npx @lynx-js/a2ui-cli generate catalog \
+genui a2ui generate catalog \
--catalog-dir src/catalog \
--source src/functions \
--out-dir dist/catalog
-npx @lynx-js/a2ui-cli generate prompt \
+genui a2ui generate prompt \
--catalog-dir dist/catalog \
--catalog-id https://example.com/catalogs/custom/v1/catalog.json \
--out dist/a2ui-system-prompt.txt
```
When your build already produces TypeDoc JSON, keep the same
-`npx @lynx-js/a2ui-cli` command prefix and pass that file to `generate catalog`:
+`genui a2ui` command prefix and pass that file to `generate catalog`:
```sh
-npx @lynx-js/a2ui-cli generate catalog \
+genui a2ui generate catalog \
--typedoc-json typedoc.json \
--out-dir dist/catalog
```
@@ -302,7 +302,7 @@ artifacts with your app package so agent and client deployments stay in sync.
Your agent service is a backend route in your product, not browser code. It
should:
-- Load the A2UI system prompt generated by `npx @lynx-js/a2ui-cli generate
+- Load the A2UI system prompt generated by `genui a2ui generate
prompt`.
- Add conversation history, user intent, and any product state the model needs.
- Call your model provider from the server.
@@ -398,8 +398,8 @@ import {
Column,
Text,
createMessageStore,
-} from '@lynx-js/a2ui-reactlynx';
-import type { UserActionPayload } from '@lynx-js/a2ui-reactlynx';
+} from '@lynx-js/genui/a2ui';
+import type { UserActionPayload } from '@lynx-js/genui/a2ui';
const store = createMessageStore();
const catalogs = [Text, Column, Button];
@@ -485,7 +485,7 @@ It should not own:
Keep the transport small and explicit:
```ts
-import type { MessageStore, UserActionPayload } from '@lynx-js/a2ui-reactlynx';
+import type { MessageStore, UserActionPayload } from '@lynx-js/genui/a2ui';
interface ConversationContext {
history: Array<{ role: 'user' | 'assistant' | 'system'; content: string }>;
diff --git a/packages/genui/a2ui/package.json b/packages/genui/a2ui/package.json
index abff77270f..da8ca8583a 100644
--- a/packages/genui/a2ui/package.json
+++ b/packages/genui/a2ui/package.json
@@ -1,5 +1,5 @@
{
- "name": "@lynx-js/a2ui-reactlynx",
+ "name": "@lynx-js/genui-a2ui",
"version": "0.0.0",
"private": true,
"license": "Apache-2.0",
@@ -133,7 +133,7 @@
"types": "./dist/index.d.ts",
"scripts": {
"build": "tsc --project tsconfig.build.json && npm run build:catalog",
- "build:catalog": "a2ui-cli generate catalog --catalog-dir src/catalog --out-dir dist/catalog",
+ "build:catalog": "genui a2ui generate catalog --catalog-dir src/catalog --out-dir dist/catalog",
"test": "rstest"
},
"dependencies": {
@@ -141,7 +141,7 @@
"@preact/signals": "^2.5.1"
},
"devDependencies": {
- "@lynx-js/a2ui-cli": "workspace:*",
+ "@lynx-js/genui-cli": "workspace:*",
"@lynx-js/lynx-ui": "^3.133.0",
"@lynx-js/react": "workspace:*",
"@lynx-js/types": "3.7.0",
diff --git a/packages/genui/a2ui/src/catalog/Button/index.tsx b/packages/genui/a2ui/src/catalog/Button/index.tsx
index 3ee11b6649..0c1bcf4819 100644
--- a/packages/genui/a2ui/src/catalog/Button/index.tsx
+++ b/packages/genui/a2ui/src/catalog/Button/index.tsx
@@ -1,7 +1,7 @@
// Copyright 2026 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
-import { A2UIRenderer } from '../../react/A2UIRenderer.jsx';
+import { A2UIRenderer } from '../../react/A2UIRenderer.js';
import { useChecks } from '../../react/useChecks.js';
import type { CheckLike } from '../../react/useChecks.js';
import type { GenericComponentProps } from '../../store/types.js';
diff --git a/packages/genui/a2ui/src/catalog/Card/index.tsx b/packages/genui/a2ui/src/catalog/Card/index.tsx
index 169495244d..d2cf6b25e2 100644
--- a/packages/genui/a2ui/src/catalog/Card/index.tsx
+++ b/packages/genui/a2ui/src/catalog/Card/index.tsx
@@ -1,7 +1,7 @@
// Copyright 2026 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
-import { NodeRenderer } from '../../react/A2UIRenderer.jsx';
+import { NodeRenderer } from '../../react/A2UIRenderer.js';
import type { GenericComponentProps } from '../../store/types.js';
import '../../../styles/catalog/Card.css';
diff --git a/packages/genui/a2ui/src/catalog/Column/index.tsx b/packages/genui/a2ui/src/catalog/Column/index.tsx
index ec815535ca..ee50dfc0c8 100644
--- a/packages/genui/a2ui/src/catalog/Column/index.tsx
+++ b/packages/genui/a2ui/src/catalog/Column/index.tsx
@@ -1,7 +1,7 @@
// Copyright 2026 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
-import { NodeRenderer } from '../../react/A2UIRenderer.jsx';
+import { NodeRenderer } from '../../react/A2UIRenderer.js';
import { useDataBinding } from '../../react/useDataBinding.js';
import type {
ComponentInstance,
diff --git a/packages/genui/a2ui/src/catalog/List/index.tsx b/packages/genui/a2ui/src/catalog/List/index.tsx
index e458b76285..d57d62c98f 100755
--- a/packages/genui/a2ui/src/catalog/List/index.tsx
+++ b/packages/genui/a2ui/src/catalog/List/index.tsx
@@ -3,7 +3,7 @@
// LICENSE file in the root directory of this source tree.
import type * as v0_9 from '@a2ui/web_core/v0_9';
-import { NodeRenderer } from '../../react/A2UIRenderer.jsx';
+import { NodeRenderer } from '../../react/A2UIRenderer.js';
import { useDataBinding } from '../../react/useDataBinding.js';
import type { GenericComponentProps } from '../../store/types.js';
diff --git a/packages/genui/a2ui/src/catalog/Modal/index.tsx b/packages/genui/a2ui/src/catalog/Modal/index.tsx
index 0ed6f72125..cc89682b4a 100644
--- a/packages/genui/a2ui/src/catalog/Modal/index.tsx
+++ b/packages/genui/a2ui/src/catalog/Modal/index.tsx
@@ -9,7 +9,7 @@ import {
} from '@lynx-js/lynx-ui';
import { useState } from '@lynx-js/react';
-import { NodeRenderer } from '../../react/A2UIRenderer.jsx';
+import { NodeRenderer } from '../../react/A2UIRenderer.js';
import type {
ComponentInstance,
GenericComponentProps,
diff --git a/packages/genui/a2ui/src/catalog/README.md b/packages/genui/a2ui/src/catalog/README.md
index 1d697e43fd..9b4e1fc651 100644
--- a/packages/genui/a2ui/src/catalog/README.md
+++ b/packages/genui/a2ui/src/catalog/README.md
@@ -18,12 +18,7 @@ the protocol name comes from `displayName ?? component.name`.
> using the tuple form below — the manifest key is authoritative.
```tsx
-import {
- A2UI,
- Text,
- Button,
- createMessageStore,
-} from '@lynx-js/a2ui-reactlynx';
+import { A2UI, Text, Button, createMessageStore } from '@lynx-js/genui/a2ui';
const store = createMessageStore();
@@ -51,8 +46,8 @@ If you want `serializeCatalog(...)` to emit JSON Schema for each component
JSON the extractor emitted at `dist/catalog//catalog.json`:
```tsx
-import { Text } from '@lynx-js/a2ui-reactlynx/catalog/Text';
-import textManifest from '@lynx-js/a2ui-reactlynx/catalog/Text/catalog.json'
+import { Text } from '@lynx-js/genui/a2ui/catalog/Text';
+import textManifest from '@lynx-js/genui/a2ui/catalog/Text/catalog.json'
with { type: 'json' };
const catalog = defineCatalog([[Text, textManifest]]);
@@ -86,62 +81,62 @@ import {
Tabs,
Text,
TextField,
-} from '@lynx-js/a2ui-reactlynx';
-import buttonManifest from '@lynx-js/a2ui-reactlynx/catalog/Button/catalog.json' with {
+} from '@lynx-js/genui/a2ui';
+import buttonManifest from '@lynx-js/genui/a2ui/catalog/Button/catalog.json' with {
type: 'json',
};
-import cardManifest from '@lynx-js/a2ui-reactlynx/catalog/Card/catalog.json' with {
+import cardManifest from '@lynx-js/genui/a2ui/catalog/Card/catalog.json' with {
type: 'json',
};
-import checkBoxManifest from '@lynx-js/a2ui-reactlynx/catalog/CheckBox/catalog.json' with {
+import checkBoxManifest from '@lynx-js/genui/a2ui/catalog/CheckBox/catalog.json' with {
type: 'json',
};
-import choicePickerManifest from '@lynx-js/a2ui-reactlynx/catalog/ChoicePicker/catalog.json' with {
+import choicePickerManifest from '@lynx-js/genui/a2ui/catalog/ChoicePicker/catalog.json' with {
type: 'json',
};
-import dateTimeInputManifest from '@lynx-js/a2ui-reactlynx/catalog/DateTimeInput/catalog.json' with {
+import dateTimeInputManifest from '@lynx-js/genui/a2ui/catalog/DateTimeInput/catalog.json' with {
type: 'json',
};
-import columnManifest from '@lynx-js/a2ui-reactlynx/catalog/Column/catalog.json' with {
+import columnManifest from '@lynx-js/genui/a2ui/catalog/Column/catalog.json' with {
type: 'json',
};
-import dividerManifest from '@lynx-js/a2ui-reactlynx/catalog/Divider/catalog.json' with {
+import dividerManifest from '@lynx-js/genui/a2ui/catalog/Divider/catalog.json' with {
type: 'json',
};
-import iconManifest from '@lynx-js/a2ui-reactlynx/catalog/Icon/catalog.json' with {
+import iconManifest from '@lynx-js/genui/a2ui/catalog/Icon/catalog.json' with {
type: 'json',
};
-import imageManifest from '@lynx-js/a2ui-reactlynx/catalog/Image/catalog.json' with {
+import imageManifest from '@lynx-js/genui/a2ui/catalog/Image/catalog.json' with {
type: 'json',
};
-import lineChartManifest from '@lynx-js/a2ui-reactlynx/catalog/LineChart/catalog.json' with {
+import lineChartManifest from '@lynx-js/genui/a2ui/catalog/LineChart/catalog.json' with {
type: 'json',
};
-import pieChartManifest from '@lynx-js/a2ui-reactlynx/catalog/PieChart/catalog.json' with {
+import pieChartManifest from '@lynx-js/genui/a2ui/catalog/PieChart/catalog.json' with {
type: 'json',
};
-import listManifest from '@lynx-js/a2ui-reactlynx/catalog/List/catalog.json' with {
+import listManifest from '@lynx-js/genui/a2ui/catalog/List/catalog.json' with {
type: 'json',
};
-import modalManifest from '@lynx-js/a2ui-reactlynx/catalog/Modal/catalog.json' with {
+import modalManifest from '@lynx-js/genui/a2ui/catalog/Modal/catalog.json' with {
type: 'json',
};
-import radioGroupManifest from '@lynx-js/a2ui-reactlynx/catalog/RadioGroup/catalog.json' with {
+import radioGroupManifest from '@lynx-js/genui/a2ui/catalog/RadioGroup/catalog.json' with {
type: 'json',
};
-import rowManifest from '@lynx-js/a2ui-reactlynx/catalog/Row/catalog.json' with {
+import rowManifest from '@lynx-js/genui/a2ui/catalog/Row/catalog.json' with {
type: 'json',
};
-import sliderManifest from '@lynx-js/a2ui-reactlynx/catalog/Slider/catalog.json' with {
+import sliderManifest from '@lynx-js/genui/a2ui/catalog/Slider/catalog.json' with {
type: 'json',
};
-import tabsManifest from '@lynx-js/a2ui-reactlynx/catalog/Tabs/catalog.json' with {
+import tabsManifest from '@lynx-js/genui/a2ui/catalog/Tabs/catalog.json' with {
type: 'json',
};
-import textManifest from '@lynx-js/a2ui-reactlynx/catalog/Text/catalog.json' with {
+import textManifest from '@lynx-js/genui/a2ui/catalog/Text/catalog.json' with {
type: 'json',
};
-import textFieldManifest from '@lynx-js/a2ui-reactlynx/catalog/TextField/catalog.json' with {
+import textFieldManifest from '@lynx-js/genui/a2ui/catalog/TextField/catalog.json' with {
type: 'json',
};
@@ -188,7 +183,7 @@ MyChart.displayName = 'MyChart';
```
If you want schema introspection for a custom component, generate the
-manifest with `@lynx-js/a2ui-catalog-extractor` against your interface and
+manifest with `@lynx-js/genui/a2ui-catalog-extractor` against your interface and
pair it the same way:
```tsx
diff --git a/packages/genui/a2ui/src/catalog/Row/index.tsx b/packages/genui/a2ui/src/catalog/Row/index.tsx
index 9e7ac4c60f..e20dea931b 100755
--- a/packages/genui/a2ui/src/catalog/Row/index.tsx
+++ b/packages/genui/a2ui/src/catalog/Row/index.tsx
@@ -1,7 +1,7 @@
// Copyright 2026 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
-import { NodeRenderer } from '../../react/A2UIRenderer.jsx';
+import { NodeRenderer } from '../../react/A2UIRenderer.js';
import type { GenericComponentProps } from '../../store/types.js';
import '../../../styles/catalog/Row.css';
diff --git a/packages/genui/a2ui/src/catalog/Tabs/index.tsx b/packages/genui/a2ui/src/catalog/Tabs/index.tsx
index 10f69a2528..0957f77159 100644
--- a/packages/genui/a2ui/src/catalog/Tabs/index.tsx
+++ b/packages/genui/a2ui/src/catalog/Tabs/index.tsx
@@ -3,7 +3,7 @@
// LICENSE file in the root directory of this source tree.
import { useState } from '@lynx-js/react';
-import { NodeRenderer } from '../../react/A2UIRenderer.jsx';
+import { NodeRenderer } from '../../react/A2UIRenderer.js';
import type { GenericComponentProps, Surface } from '../../store/types.js';
import '../../../styles/catalog/Tabs.css';
diff --git a/packages/genui/a2ui/src/catalog/defineCatalog.ts b/packages/genui/a2ui/src/catalog/defineCatalog.ts
index a79c744d8d..0add07a7e7 100644
--- a/packages/genui/a2ui/src/catalog/defineCatalog.ts
+++ b/packages/genui/a2ui/src/catalog/defineCatalog.ts
@@ -12,7 +12,7 @@ import type { GenericComponentProps } from '../store/types.js';
/**
* JSON Schema fragment describing a component's props. Produced at build time
- * by `@lynx-js/a2ui-catalog-extractor` from the component's TypeScript
+ * by `@lynx-js/genui/a2ui-catalog-extractor` from the component's TypeScript
* interface marked with `@a2uiCatalog `. Optional at runtime — entries
* that ship without a schema serialize to just `{ name }`.
*/
@@ -199,10 +199,10 @@ function resolveComponentInput(input: CatalogInput): ResolvedCatalogEntry {
* so any `executeFunctionCall` after `defineCatalog` can route to them.
*
* @example
- * import { Text, Button } from '@lynx-js/a2ui-reactlynx';
- * import { defineCatalog, defineFunction } from '@lynx-js/a2ui-reactlynx';
- * import { required } from '@lynx-js/a2ui-reactlynx/functions';
- * import textManifest from '@lynx-js/a2ui-reactlynx/catalog/Text/catalog.json'
+ * import { Text, Button } from '@lynx-js/genui/a2ui';
+ * import { defineCatalog, defineFunction } from '@lynx-js/genui/a2ui';
+ * import { required } from '@lynx-js/genui/a2ui/functions';
+ * import textManifest from '@lynx-js/genui/a2ui/catalog/Text/catalog.json'
* with { type: 'json' };
*
* const catalog = defineCatalog([
diff --git a/packages/genui/a2ui/src/catalog/index.ts b/packages/genui/a2ui/src/catalog/index.ts
index c6c2567966..cadbfbab94 100755
--- a/packages/genui/a2ui/src/catalog/index.ts
+++ b/packages/genui/a2ui/src/catalog/index.ts
@@ -24,23 +24,23 @@ export type {
// Per-component re-exports so consumers can pick exactly what they need.
// Each is an independently tree-shakeable ESM re-export — pulling `Text`
// does not drag `Button` into the bundle.
-export { Button } from './Button/index.jsx';
-export { Card } from './Card/index.jsx';
-export { CheckBox } from './CheckBox/index.jsx';
-export { ChoicePicker } from './ChoicePicker/index.jsx';
-export { DateTimeInput } from './DateTimeInput/index.jsx';
-export { LineChart } from './LineChart/index.jsx';
-export { PieChart } from './PieChart/index.jsx';
-export { Column } from './Column/index.jsx';
-export { Divider } from './Divider/index.jsx';
-export { Icon } from './Icon/index.jsx';
-export { Image } from './Image/index.jsx';
-export { List } from './List/index.jsx';
-export { Modal } from './Modal/index.jsx';
-export { RadioGroup } from './RadioGroup/index.jsx';
-export { Row } from './Row/index.jsx';
-export { Slider } from './Slider/index.jsx';
-export { Tabs } from './Tabs/index.jsx';
-export { Text } from './Text/index.jsx';
-export { TextField } from './TextField/index.jsx';
+export { Button } from './Button/index.js';
+export { Card } from './Card/index.js';
+export { CheckBox } from './CheckBox/index.js';
+export { ChoicePicker } from './ChoicePicker/index.js';
+export { DateTimeInput } from './DateTimeInput/index.js';
+export { LineChart } from './LineChart/index.js';
+export { PieChart } from './PieChart/index.js';
+export { Column } from './Column/index.js';
+export { Divider } from './Divider/index.js';
+export { Icon } from './Icon/index.js';
+export { Image } from './Image/index.js';
+export { List } from './List/index.js';
+export { Modal } from './Modal/index.js';
+export { RadioGroup } from './RadioGroup/index.js';
+export { Row } from './Row/index.js';
+export { Slider } from './Slider/index.js';
+export { Tabs } from './Tabs/index.js';
+export { Text } from './Text/index.js';
+export { TextField } from './TextField/index.js';
export { DEFAULT_CHART_COLORS, escapeXml, formatValue } from './utils/chart.js';
diff --git a/packages/genui/a2ui/src/index.ts b/packages/genui/a2ui/src/index.ts
index 5ab55e7624..c1b574965b 100644
--- a/packages/genui/a2ui/src/index.ts
+++ b/packages/genui/a2ui/src/index.ts
@@ -80,7 +80,7 @@ export type {
// Built-in components — re-exported individually so apps can pick exactly
// what they need:
//
-// import { Text, Button } from '@lynx-js/a2ui-reactlynx';
+// import { Text, Button } from '@lynx-js/genui/a2ui';
//
//
// There is intentionally no all-in-one aggregate — see
diff --git a/packages/genui/a2ui/src/react/A2UI.tsx b/packages/genui/a2ui/src/react/A2UI.tsx
index a586be08b7..0b988dc31f 100644
--- a/packages/genui/a2ui/src/react/A2UI.tsx
+++ b/packages/genui/a2ui/src/react/A2UI.tsx
@@ -13,9 +13,9 @@ import {
} from '@lynx-js/react';
import type { ReactNode } from '@lynx-js/react';
-import { A2UIProvider } from './A2UIProvider.jsx';
-import { A2UIRenderer } from './A2UIRenderer.jsx';
-import type { UnsupportedInfo } from './A2UIRenderer.jsx';
+import { A2UIProvider } from './A2UIProvider.js';
+import { A2UIRenderer } from './A2UIRenderer.js';
+import type { UnsupportedInfo } from './A2UIRenderer.js';
import type { Catalog, CatalogInput } from '../catalog/defineCatalog.js';
import { defineCatalog } from '../catalog/defineCatalog.js';
import { MessageProcessor } from '../store/MessageProcessor.js';
@@ -258,7 +258,7 @@ function A2UIImpl(props: A2UIProps): import('@lynx-js/react').ReactNode {
return renderEmpty?.() ?? null;
}
- const rendererProps: import('./A2UIRenderer.jsx').A2UIRendererProps = {
+ const rendererProps: import('./A2UIRenderer.js').A2UIRendererProps = {
resource: activeResource,
};
if (className !== undefined) rendererProps.className = className;
diff --git a/packages/genui/a2ui/src/react/index.ts b/packages/genui/a2ui/src/react/index.ts
index df107c2f3e..ea9115c020 100644
--- a/packages/genui/a2ui/src/react/index.ts
+++ b/packages/genui/a2ui/src/react/index.ts
@@ -15,9 +15,9 @@
// that aggregates input validity — exporting the context now would
// pre-commit the package to a Provider-based API before there's a real
// consumer to validate it.
-export { A2UI } from './A2UI.jsx';
-export type { A2UIProps } from './A2UI.jsx';
-export { NodeRenderer } from './A2UIRenderer.jsx';
+export { A2UI } from './A2UI.js';
+export type { A2UIProps } from './A2UI.js';
+export { NodeRenderer } from './A2UIRenderer.js';
export { useAction } from './useAction.js';
export type { ActionProps } from './useAction.js';
export { useDataBinding, useResolvedProps } from './useDataBinding.js';
diff --git a/packages/genui/a2ui/src/react/useA2UIContext.ts b/packages/genui/a2ui/src/react/useA2UIContext.ts
index 2f238992ff..76936f11ba 100644
--- a/packages/genui/a2ui/src/react/useA2UIContext.ts
+++ b/packages/genui/a2ui/src/react/useA2UIContext.ts
@@ -3,8 +3,8 @@
// LICENSE file in the root directory of this source tree.
import { useContext } from '@lynx-js/react';
-import { A2UIContext } from './A2UIProvider.jsx';
-import type { A2UIInternalContext } from './A2UIProvider.jsx';
+import { A2UIContext } from './A2UIProvider.js';
+import type { A2UIInternalContext } from './A2UIProvider.js';
/**
* Internal helper used by catalog-component hooks (`useAction`, the
diff --git a/packages/genui/a2ui/tsconfig.build.json b/packages/genui/a2ui/tsconfig.build.json
index f46b0dea72..3ae81e2906 100644
--- a/packages/genui/a2ui/tsconfig.build.json
+++ b/packages/genui/a2ui/tsconfig.build.json
@@ -3,6 +3,7 @@
"compilerOptions": {
"noEmit": false,
"rootDir": "./src",
+ "jsx": "react-jsx",
"tsBuildInfoFile": "./dist/tsconfig.build.tsbuildinfo",
},
"include": ["src"],
diff --git a/packages/genui/cli/AGENTS.md b/packages/genui/cli/AGENTS.md
new file mode 100644
index 0000000000..33dcfe8547
--- /dev/null
+++ b/packages/genui/cli/AGENTS.md
@@ -0,0 +1,27 @@
+# GenUI CLI
+
+Keep this package as the single public CLI entry point for GenUI setup. It should
+orchestrate other packages instead of implementing catalog extraction, prompt
+construction, or future OpenUI workflows itself.
+
+Use namespace-first commands. A2UI commands live under `genui a2ui ...`; future
+OpenUI commands should live under `genui openui ...`.
+
+`genui a2ui generate catalog` should delegate to
+`@lynx-js/genui/a2ui-catalog-extractor`. `genui a2ui generate prompt` should
+delegate to `@lynx-js/genui/a2ui-prompt`.
+
+Do not require users to pass `--catalog-dir` for the common prompt path. A prompt
+without `--catalog-dir` should use the built-in A2UI basic catalog from
+`@lynx-js/genui/a2ui-prompt`; use `--catalog-dir` only for custom generated catalog
+artifacts.
+
+When `--catalog-dir` is provided, empty catalog directories should fail clearly
+instead of producing a prompt with an empty component catalog.
+
+The executable file is `bin/cli.js`; keep `package.json` `bin.genui`,
+`bin.genui-cli`, and compatibility `bin.a2ui-cli` pointed at that path.
+
+When testing local CLI changes, run the bin directly with Node. If testing
+changes in `@lynx-js/genui/a2ui-prompt`, rebuild that package first because this CLI
+imports it through package exports.
diff --git a/packages/genui/a2ui-cli/README.md b/packages/genui/cli/README.md
similarity index 56%
rename from packages/genui/a2ui-cli/README.md
rename to packages/genui/cli/README.md
index 33bc2db4bc..2648c3030a 100644
--- a/packages/genui/a2ui-cli/README.md
+++ b/packages/genui/cli/README.md
@@ -1,21 +1,35 @@
-# A2UI CLI
+# GenUI CLI
-`@lynx-js/a2ui-cli` provides one command line entry point for A2UI agent setup.
-It can generate catalog artifacts from TypeScript catalog definitions and build
-a system prompt for an A2UI generation agent.
+`@lynx-js/genui-cli` is the command line entry point for GenUI workflows. It is
+structured by namespace so A2UI commands can live beside future OpenUI commands
+without adding another package or binary.
## Usage
+```bash
+genui [options]
+```
+
+Available namespaces:
+
+- `a2ui`: generate A2UI catalog artifacts and system prompts.
+- `openui`: reserved for future OpenUI workflows.
+
+The package also exposes `genui-cli` as an alias. `a2ui-cli` remains available as
+a compatibility alias for existing A2UI-only scripts.
+
+## A2UI Commands
+
Generate a system prompt with the built-in A2UI basic catalog:
```bash
-npx @lynx-js/a2ui-cli generate prompt --out dist/a2ui-system-prompt.txt
+genui a2ui generate prompt --out dist/a2ui-system-prompt.txt
```
Generate catalog artifacts for a custom catalog:
```bash
-npx @lynx-js/a2ui-cli generate catalog \
+genui a2ui generate catalog \
--catalog-dir src/catalog \
--source src/functions \
--out-dir dist/catalog
@@ -24,7 +38,7 @@ npx @lynx-js/a2ui-cli generate catalog \
Generate a system prompt for a custom catalog:
```bash
-npx @lynx-js/a2ui-cli generate prompt \
+genui a2ui generate prompt \
--catalog-dir dist/catalog \
--catalog-id https://example.com/catalogs/custom/v1/catalog.json \
--out dist/a2ui-system-prompt.txt
@@ -35,12 +49,9 @@ npx @lynx-js/a2ui-cli generate prompt \
artifacts. When `--catalog-dir` is provided, the directory must contain files
like `/catalog.json`.
-## Commands
+### `genui a2ui generate catalog`
-### `generate catalog`
-
-Uses the internal `@lynx-js/a2ui-catalog-extractor` engine. Keep user-facing
-scripts on `npx @lynx-js/a2ui-cli generate catalog`.
+Delegates catalog extraction to `@lynx-js/genui/a2ui-catalog-extractor`.
Useful options:
@@ -52,9 +63,9 @@ Useful options:
- `--out-dir `: output directory for generated catalog artifacts. Defaults
to `dist/catalog`.
-### `generate prompt`
+### `genui a2ui generate prompt`
-Delegates prompt construction to `@lynx-js/a2ui-prompt`.
+Delegates prompt construction to `@lynx-js/genui/a2ui-prompt`.
Useful options:
@@ -64,3 +75,14 @@ Useful options:
Defaults to the built-in A2UI basic catalog id.
- `--out `: write the prompt to a file instead of stdout.
- `--appendix `: append extra instructions to the generated prompt.
+
+## Compatibility
+
+Existing A2UI commands still work:
+
+```bash
+a2ui-cli generate catalog --catalog-dir src/catalog --out-dir dist/catalog
+a2ui-cli generate prompt --out dist/a2ui-system-prompt.txt
+```
+
+New scripts should prefer `genui a2ui ...`.
diff --git a/packages/genui/a2ui-cli/bin/cli.js b/packages/genui/cli/bin/cli.js
similarity index 60%
rename from packages/genui/a2ui-cli/bin/cli.js
rename to packages/genui/cli/bin/cli.js
index 4b233ecae0..00a55e0ae5 100755
--- a/packages/genui/a2ui-cli/bin/cli.js
+++ b/packages/genui/cli/bin/cli.js
@@ -5,15 +5,33 @@
import * as fs from 'node:fs';
import { createRequire } from 'node:module';
import * as path from 'node:path';
+import { pathToFileURL } from 'node:url';
-const usage = `Usage: a2ui-cli generate [options]
+const usage = `Usage: genui [options]
+
+Namespaces:
+ a2ui Generate A2UI catalog artifacts and system prompts.
+ openui Reserved for future OpenUI workflows.
+
+Examples:
+ genui a2ui generate catalog --catalog-dir src/catalog --out-dir dist/catalog
+ genui a2ui generate prompt --out dist/a2ui-system-prompt.txt
+`;
+
+const a2uiUsage = `Usage: genui a2ui generate [options]
Targets:
catalog Generate A2UI component and function catalog files.
prompt Generate an A2UI system prompt from catalog files.
`;
-const generateCatalogUsage = `Usage: a2ui-cli generate catalog [options]
+const openuiUsage = `Usage: genui openui [options]
+
+OpenUI CLI commands are reserved for future GenUI workflows.
+`;
+
+function createGenerateCatalogUsage(programName) {
+ return `Usage: ${programName} generate catalog [options]
Options:
--catalog-dir Directory to scan for TypeScript catalog interfaces.
@@ -29,8 +47,10 @@ Defaults:
--catalog-dir src/catalog
--out-dir dist/catalog
`;
+}
-const generatePromptUsage = `Usage: a2ui-cli generate prompt [options]
+function createGeneratePromptUsage(programName) {
+ return `Usage: ${programName} generate prompt [options]
Options:
--catalog-dir Directory containing generated catalog files. When
@@ -44,15 +64,25 @@ Options:
Defaults:
--catalog-id built-in A2UI basic catalog id
`;
+}
-try {
- process.exitCode = await runCli(process.argv.slice(2));
-} catch (error) {
- console.error(error instanceof Error ? error.message : String(error));
- process.exitCode = 1;
+if (isMain(import.meta.url)) {
+ try {
+ process.exitCode = await runCli(process.argv.slice(2), process.cwd(), {
+ binName: path.basename(process.argv[1] ?? 'genui'),
+ });
+ } catch (error) {
+ console.error(error instanceof Error ? error.message : String(error));
+ process.exitCode = 1;
+ }
}
-async function runCli(args, cwd = process.cwd()) {
+export async function runCli(args, cwd = process.cwd(), cliOptions = {}) {
+ const binName = cliOptions.binName ?? 'genui';
+ if (binName === 'a2ui-cli') {
+ return await runA2UICli(args, cwd, { programName: 'a2ui-cli' });
+ }
+
const command = args[0];
if (command === undefined || command === '--help' || command === '-h') {
console.info(usage);
@@ -62,14 +92,35 @@ async function runCli(args, cwd = process.cwd()) {
printPackageVersion();
return 0;
}
- if (command !== 'generate') {
- throw new Error(`Unknown command: ${command}`);
+
+ if (command === 'a2ui') {
+ return await runA2UICli(args.slice(1), cwd, { programName: 'genui a2ui' });
}
+ if (command === 'openui') {
+ return runOpenUICli(args.slice(1));
+ }
+
+ throw new Error(`Unknown namespace: ${command}`);
+}
+async function runA2UICli(args, cwd, options) {
+ const programName = options.programName;
+ const command = args[0];
+ if (command === undefined || command === '--help' || command === '-h') {
+ console.info(programName === 'a2ui-cli' ? legacyA2UIUsage : a2uiUsage);
+ return 0;
+ }
+ if (command === '--version' || command === '-v') {
+ printPackageVersion();
+ return 0;
+ }
+ if (command !== 'generate') {
+ throw new Error(`Unknown A2UI command: ${command}`);
+ }
const target = args[1];
const targetArgs = args.slice(2);
if (target === undefined || target === '--help' || target === '-h') {
- console.info(usage);
+ console.info(programName === 'a2ui-cli' ? legacyA2UIUsage : a2uiUsage);
return 0;
}
if (target === '--version' || target === '-v') {
@@ -78,24 +129,42 @@ async function runCli(args, cwd = process.cwd()) {
}
if (target === 'catalog') {
if (targetArgs.includes('--help') || targetArgs.includes('-h')) {
- console.info(generateCatalogUsage);
+ console.info(createGenerateCatalogUsage(programName));
return 0;
}
const { runCli: runCatalogExtractorCli } = await import(
- '@lynx-js/a2ui-catalog-extractor/cli'
+ '../../a2ui-catalog-extractor/dist/cli.js'
);
return await runCatalogExtractorCli(targetArgs, cwd);
}
if (target === 'prompt') {
- return runGeneratePromptCli(targetArgs, cwd);
+ return runGeneratePromptCli(targetArgs, cwd, { programName });
}
throw new Error(`Unknown generate target: ${target}`);
}
-async function runGeneratePromptCli(args, cwd = process.cwd()) {
+const legacyA2UIUsage = a2uiUsage.replaceAll('genui a2ui', 'a2ui-cli');
+
+function runOpenUICli(args) {
+ const command = args[0];
+ if (command === undefined || command === '--help' || command === '-h') {
+ console.info(openuiUsage);
+ return 0;
+ }
+ if (command === '--version' || command === '-v') {
+ printPackageVersion();
+ return 0;
+ }
+ throw new Error(
+ `Unknown OpenUI command: ${command}. OpenUI CLI commands are not available yet.`,
+ );
+}
+
+async function runGeneratePromptCli(args, cwd, cliOptions) {
+ const programName = cliOptions.programName;
const options = parseGeneratePromptArgs(args);
if (options.help) {
- console.info(generatePromptUsage);
+ console.info(createGeneratePromptUsage(programName));
return 0;
}
if (options.version) {
@@ -108,7 +177,7 @@ async function runGeneratePromptCli(args, cwd = process.cwd()) {
BASIC_CATALOG_ID,
buildA2UISystemPrompt,
readA2UICatalogFromDirectory,
- } = await import('@lynx-js/a2ui-prompt');
+ } = await import('../../a2ui-prompt/dist/index.js');
const catalog = options.catalogDir
? readA2UICatalogFromDirectory({
catalogDir: options.catalogDir,
@@ -120,7 +189,7 @@ async function runGeneratePromptCli(args, cwd = process.cwd()) {
: undefined);
if (options.catalogDir && catalog && isEmptyCatalog(catalog)) {
throw new Error(
- `[a2ui-cli] No components or functions found in generated catalog directory: ${options.catalogDir}`,
+ `[${programName}] No components or functions found in generated catalog directory: ${options.catalogDir}`,
);
}
const systemPrompt = buildA2UISystemPrompt({
@@ -195,3 +264,8 @@ function printPackageVersion() {
const packageJson = require('../package.json');
console.info(packageJson.version);
}
+
+function isMain(moduleUrl) {
+ return process.argv[1] !== undefined
+ && moduleUrl === pathToFileURL(process.argv[1]).href;
+}
diff --git a/packages/genui/cli/package.json b/packages/genui/cli/package.json
new file mode 100644
index 0000000000..b5daf31d63
--- /dev/null
+++ b/packages/genui/cli/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@lynx-js/genui-cli",
+ "version": "0.0.0",
+ "private": true,
+ "description": "CLI for GenUI workflows.",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/lynx-family/lynx-stack.git",
+ "directory": "packages/genui/cli"
+ },
+ "license": "Apache-2.0",
+ "type": "module",
+ "bin": {
+ "a2ui-cli": "./bin/cli.js",
+ "genui": "./bin/cli.js",
+ "genui-cli": "./bin/cli.js"
+ },
+ "files": [
+ "bin",
+ "README.md"
+ ],
+ "dependencies": {
+ "@lynx-js/genui-a2ui-catalog-extractor": "workspace:*",
+ "@lynx-js/genui-a2ui-prompt": "workspace:*"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+}
diff --git a/packages/genui/index.ts b/packages/genui/index.ts
new file mode 100644
index 0000000000..0ab8d46522
--- /dev/null
+++ b/packages/genui/index.ts
@@ -0,0 +1,114 @@
+// Copyright 2026 The Lynx Authors. All rights reserved.
+// Licensed under the Apache License Version 2.0 that can be found in the
+// LICENSE file in the root directory of this source tree.
+
+export {
+ A2UI,
+ NodeRenderer,
+ useAction,
+ useChecks,
+ useDataBinding,
+ useResolvedProps,
+} from '@lynx-js/genui/a2ui/react';
+export type {
+ A2UIProps,
+ ActionProps,
+ CheckLike,
+} from '@lynx-js/genui/a2ui/react';
+export {
+ createFallbackMessagesFromPlainText,
+ createMessageStore,
+ createResource,
+ createTextCardMessages,
+ executeFunctionCall,
+ FunctionRegistry,
+ functionRegistry,
+ isDataBinding,
+ isFunctionCall,
+ MessageProcessor,
+ normalizePayloadToMessages,
+ prepareMessagesForProcessing,
+ resolveDynamicValue,
+ resolveFunctionArguments,
+ SignalStore,
+} from '@lynx-js/genui/a2ui/store';
+export type {
+ A2UIClientEventMessage,
+ A2UIEvent,
+ ComponentInstance,
+ FunctionCallContext,
+ FunctionEntry,
+ FunctionImpl,
+ GenericComponentProps,
+ MessageStore,
+ MessageStoreOptions,
+ RawResource,
+ ResolveFunctionOptions,
+ Resource,
+ ResourceInfo,
+ ResourceStatus,
+ ServerToClientMessage,
+ Surface,
+ SurfaceId,
+ UserActionPayload,
+} from '@lynx-js/genui/a2ui/store';
+export {
+ basicFunctions,
+ registerBasicFunctions,
+} from '@lynx-js/genui/a2ui/functions';
+export * from '@lynx-js/genui/openui';
+export {
+ A2UI_PROTOCOL_VERSION,
+ A2UI_SYSTEM_PROMPT,
+ BASIC_CATALOG,
+ BASIC_CATALOG_EXAMPLES,
+ BASIC_CATALOG_ID,
+ buildA2UISystemPrompt,
+ createA2UICatalogFromManifests,
+ readA2UICatalogFromDirectory,
+ renderCatalogReference,
+} from '@lynx-js/genui/a2ui-prompt';
+export type {
+ A2UICatalog as A2UIPromptCatalog,
+ A2UIComponentProp,
+ A2UIComponentSpec,
+ A2UIExample,
+ A2UIFunctionSpec,
+ BuildSystemPromptOptions,
+ JsonSchema as A2UIPromptJsonSchema,
+ ReadA2UICatalogDirectoryOptions,
+} from '@lynx-js/genui/a2ui-prompt';
+export {
+ createA2UICatalog,
+ extractCatalogComponents,
+ extractCatalogComponentsFromTypeDocJson,
+ extractCatalogComponentsFromTypeDocProject,
+ extractCatalogFunctions,
+ extractCatalogFunctionsFromTypeDocJson,
+ extractCatalogFunctionsFromTypeDocProject,
+ findCatalogSourceFiles,
+ writeCatalogArtifacts,
+ writeCatalogComponents,
+ writeCatalogFunctionDefinitions,
+ writeCatalogFunctions,
+ writeComponentCatalogs,
+} from '@lynx-js/genui/a2ui-catalog-extractor';
+export type {
+ A2UICatalog as ExtractedA2UICatalog,
+ CatalogArtifacts,
+ CatalogComponent as ExtractedCatalogComponent,
+ CatalogFunction,
+ ExtractCatalogFromTypeDocOptions,
+ ExtractCatalogOptions,
+ FunctionDefinition,
+ JsonSchema as ExtractedJsonSchema,
+ TypeDocComment,
+ TypeDocCommentDisplayPart,
+ TypeDocCommentTag,
+ TypeDocProject,
+ TypeDocReflection,
+ TypeDocSignature,
+ TypeDocSource,
+ TypeDocType,
+ WriteComponentCatalogOptions,
+} from '@lynx-js/genui/a2ui-catalog-extractor';
diff --git a/packages/genui/openui/README.md b/packages/genui/openui/README.md
index 0f8969cceb..6a2b8e201f 100644
--- a/packages/genui/openui/README.md
+++ b/packages/genui/openui/README.md
@@ -1,4 +1,4 @@
-# @lynx-js/openui-reactlynx
+# @lynx-js/genui/openui
ReactLynx renderer for the [OpenUI DSL](https://www.openui.com/). Parses
OpenUI functional notation into a renderable tree and renders it via a
@@ -17,9 +17,9 @@ This package includes:
## Exports
-- `@lynx-js/openui-reactlynx`: `createOpenUiLibrary`, `defineComponent`,
+- `@lynx-js/genui/openui`: `createOpenUiLibrary`, `defineComponent`,
`OpenUiRenderer`, parser utilities, and all core types.
-- `@lynx-js/openui-reactlynx/catalog`: re-exports of built-in catalog
+- `@lynx-js/genui/openui/catalog`: re-exports of built-in catalog
components for tree-shake-friendly subpath access.
## Installation
@@ -29,7 +29,7 @@ Make sure your app provides the peer dependencies:
- `@lynx-js/react`
```bash
-pnpm add @lynx-js/openui-reactlynx
+pnpm add @lynx-js/genui
```
## Quick Start
@@ -44,8 +44,8 @@ import {
createOpenUiLibrary,
createStreamingParser,
OpenUiRenderer,
-} from '@lynx-js/openui-reactlynx';
-import type { ParseResult } from '@lynx-js/openui-reactlynx';
+} from '@lynx-js/genui/openui';
+import type { ParseResult } from '@lynx-js/genui/openui';
import { useEffect, useMemo, useState } from '@lynx-js/react';
const library = createOpenUiLibrary();
@@ -95,8 +95,8 @@ import {
createOpenUiLibrary,
createStreamingParser,
OpenUiRenderer,
-} from '@lynx-js/openui-reactlynx';
-import type { ParseResult } from '@lynx-js/openui-reactlynx';
+} from '@lynx-js/genui/openui';
+import type { ParseResult } from '@lynx-js/genui/openui';
import { useEffect, useMemo, useRef, useState } from '@lynx-js/react';
const CHUNK_SIZE = 8;
@@ -151,10 +151,7 @@ object. Provided `components` and `componentGroups` are **merged** with
the built-in defaults (appended after the defaults):
```tsx
-import {
- createOpenUiLibrary,
- defineComponent,
-} from '@lynx-js/openui-reactlynx';
+import { createOpenUiLibrary, defineComponent } from '@lynx-js/genui/openui';
import { z } from 'zod/v4';
const MyBanner = defineComponent({
diff --git a/packages/genui/openui/package.json b/packages/genui/openui/package.json
index f8ff189b68..9e8e10f52c 100644
--- a/packages/genui/openui/package.json
+++ b/packages/genui/openui/package.json
@@ -1,6 +1,7 @@
{
- "name": "@lynx-js/openui-reactlynx",
+ "name": "@lynx-js/genui-openui",
"version": "0.0.1",
+ "private": true,
"repository": {
"type": "git",
"url": "git+https://github.com/lynx-family/lynx-stack.git",
diff --git a/packages/genui/openui/src/core/renderer.tsx b/packages/genui/openui/src/core/renderer.tsx
index cfa054c7ab..1af2a30699 100644
--- a/packages/genui/openui/src/core/renderer.tsx
+++ b/packages/genui/openui/src/core/renderer.tsx
@@ -25,8 +25,6 @@ import type { Library, RenderOutput } from './library.js';
import { keyFrom } from './utils.js';
import type { LegacyActionConfig } from '../catalog/Action/index.jsx';
-import './renderer.css';
-
export type { Library, RenderOutput };
interface FieldEntry {
diff --git a/packages/genui/package.json b/packages/genui/package.json
new file mode 100644
index 0000000000..3ea44b266a
--- /dev/null
+++ b/packages/genui/package.json
@@ -0,0 +1,120 @@
+{
+ "name": "@lynx-js/genui",
+ "version": "0.0.1",
+ "description": "Generative UI for Lynx.",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/lynx-family/lynx-stack.git",
+ "directory": "packages/genui"
+ },
+ "license": "Apache-2.0",
+ "sideEffects": [
+ "**/*.css"
+ ],
+ "type": "module",
+ "exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
+ },
+ "./a2ui/styles/theme.css": "./a2ui/styles/theme.css",
+ "./a2ui": {
+ "types": "./a2ui/dist/index.d.ts",
+ "default": "./a2ui/dist/index.js"
+ },
+ "./a2ui/0.9": {
+ "types": "./a2ui/dist/index.d.ts",
+ "default": "./a2ui/dist/index.js"
+ },
+ "./a2ui/store": {
+ "types": "./a2ui/dist/store/index.d.ts",
+ "default": "./a2ui/dist/store/index.js"
+ },
+ "./a2ui/catalog": {
+ "types": "./a2ui/dist/catalog/index.d.ts",
+ "default": "./a2ui/dist/catalog/index.js"
+ },
+ "./a2ui/react": {
+ "types": "./a2ui/dist/react/index.d.ts",
+ "default": "./a2ui/dist/react/index.js"
+ },
+ "./a2ui/functions": {
+ "types": "./a2ui/dist/functions/index.d.ts",
+ "default": "./a2ui/dist/functions/index.js"
+ },
+ "./genui-cli": "./cli/bin/cli.js",
+ "./a2ui-prompt": {
+ "types": "./a2ui-prompt/dist/index.d.ts",
+ "default": "./a2ui-prompt/dist/index.js"
+ },
+ "./a2ui-catalog-extractor": {
+ "types": "./a2ui-catalog-extractor/dist/index.d.ts",
+ "default": "./a2ui-catalog-extractor/dist/index.js"
+ },
+ "./a2ui-catalog-extractor/cli": {
+ "types": "./a2ui-catalog-extractor/dist/cli.d.ts",
+ "default": "./a2ui-catalog-extractor/dist/cli.js"
+ },
+ "./a2ui-catalog-extractor/skill": "./a2ui-catalog-extractor/skills/a2ui-catalog-extractor/SKILL.md",
+ "./openui": {
+ "types": "./openui/dist/core/index.d.ts",
+ "default": "./openui/dist/core/index.js"
+ },
+ "./openui/catalog": {
+ "types": "./openui/dist/catalog/index.d.ts",
+ "default": "./openui/dist/catalog/index.js"
+ },
+ "./openui/styles/renderer.css": "./openui/dist/core/renderer.css"
+ },
+ "main": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "bin": {
+ "a2ui-catalog-extractor": "./a2ui-catalog-extractor/bin/a2ui-catalog-extractor.js",
+ "a2ui-cli": "./cli/bin/cli.js",
+ "genui": "./cli/bin/cli.js",
+ "genui-cli": "./cli/bin/cli.js"
+ },
+ "files": [
+ "index.ts",
+ "dist",
+ "a2ui/dist",
+ "a2ui/styles",
+ "a2ui/README.md",
+ "cli/bin",
+ "cli/README.md",
+ "a2ui-prompt/dist",
+ "a2ui-prompt/README.md",
+ "a2ui-catalog-extractor/bin",
+ "a2ui-catalog-extractor/dist",
+ "a2ui-catalog-extractor/skills",
+ "a2ui-catalog-extractor/README.md",
+ "openui/dist",
+ "openui/README.md"
+ ],
+ "scripts": {
+ "build": "pnpm run clean && pnpm --dir a2ui-catalog-extractor build && pnpm --dir a2ui-prompt build && pnpm --dir openui build && pnpm --dir a2ui build && tsc --project tsconfig.build.json",
+ "clean": "node -e \"const fs=require('node:fs'); for (const path of ['dist','a2ui/dist','a2ui/tsconfig.build.tsbuildinfo','a2ui-catalog-extractor/dist','a2ui-prompt/dist','openui/dist','openui/tsconfig.build.tsbuildinfo']) fs.rmSync(path,{recursive:true,force:true});\""
+ },
+ "dependencies": {
+ "@a2ui/web_core": "0.9.1",
+ "@openuidev/lang-core": "^0.2.4",
+ "@preact/signals": "^2.5.1",
+ "typedoc": "^0.28.19",
+ "zod": "^3.25.76"
+ },
+ "peerDependencies": {
+ "@lynx-js/lynx-ui": "^3.133.0",
+ "@lynx-js/react": "^0.121.0"
+ },
+ "peerDependenciesMeta": {
+ "@lynx-js/lynx-ui": {
+ "optional": true
+ }
+ },
+ "engines": {
+ "node": ">=22"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/packages/genui/tsconfig.build.json b/packages/genui/tsconfig.build.json
new file mode 100644
index 0000000000..4fc1c3e0ec
--- /dev/null
+++ b/packages/genui/tsconfig.build.json
@@ -0,0 +1,10 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "noEmit": false,
+ "declaration": true,
+ "outDir": "./dist",
+ "rootDir": ".",
+ },
+ "include": ["index.ts"],
+}
diff --git a/packages/genui/tsconfig.json b/packages/genui/tsconfig.json
index ad7396c501..1cdc5051cf 100644
--- a/packages/genui/tsconfig.json
+++ b/packages/genui/tsconfig.json
@@ -16,5 +16,5 @@
{ "path": "./ui-judge/tsconfig.json" },
/** packages-end */
],
- "include": [],
+ "include": ["index.ts"],
}
diff --git a/packages/genui/turbo.json b/packages/genui/turbo.json
new file mode 100644
index 0000000000..6c7c8c96e9
--- /dev/null
+++ b/packages/genui/turbo.json
@@ -0,0 +1,40 @@
+{
+ "$schema": "https://turbo.build/schema.json",
+ "extends": ["//"],
+ "tasks": {
+ "build": {
+ "inputs": [
+ "index.ts",
+ "package.json",
+ "tsconfig.json",
+ "tsconfig.build.json",
+ "a2ui/src/**",
+ "a2ui/styles/**",
+ "a2ui/package.json",
+ "a2ui/tsconfig.json",
+ "a2ui/tsconfig.build.json",
+ "a2ui-catalog-extractor/src/**",
+ "a2ui-catalog-extractor/bin/**",
+ "a2ui-catalog-extractor/package.json",
+ "a2ui-catalog-extractor/tsconfig.json",
+ "a2ui-catalog-extractor/tsconfig.build.json",
+ "a2ui-prompt/src/**",
+ "a2ui-prompt/package.json",
+ "a2ui-prompt/rslib.config.ts",
+ "a2ui-prompt/tsconfig.json",
+ "a2ui-prompt/tsconfig.build.json",
+ "openui/src/**",
+ "openui/package.json",
+ "openui/tsconfig.json",
+ "openui/tsconfig.build.json"
+ ],
+ "outputs": [
+ "dist/**",
+ "a2ui/dist/**",
+ "a2ui-catalog-extractor/dist/**",
+ "a2ui-prompt/dist/**",
+ "openui/dist/**"
+ ]
+ }
+ }
+}
diff --git a/packages/genui/ui-judge/tests/helpers/playground-preview-server.ts b/packages/genui/ui-judge/tests/helpers/playground-preview-server.ts
index 41e4e63287..1b3dcffa4a 100644
--- a/packages/genui/ui-judge/tests/helpers/playground-preview-server.ts
+++ b/packages/genui/ui-judge/tests/helpers/playground-preview-server.ts
@@ -152,7 +152,7 @@ function assertPlaygroundPrerequisites(): void {
const formatted = missing.map((artifact) => `- ${artifact}`).join('\n');
throw new Error(
- `Missing A2UI catalog artifacts required by the playground preview server:\n${formatted}\n\nRun \`pnpm --filter @lynx-js/a2ui-reactlynx build\` before starting @lynx-js/ui-judge model-backed tests.`,
+ `Missing A2UI catalog artifacts required by the playground preview server:\n${formatted}\n\nRun \`pnpm -C packages/genui/a2ui build\` before starting @lynx-js/ui-judge model-backed tests.`,
);
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1c889dd913..ec59404f84 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -596,6 +596,30 @@ importers:
packages/background-only: {}
+ packages/genui:
+ dependencies:
+ '@a2ui/web_core':
+ specifier: 0.9.1
+ version: 0.9.1
+ '@lynx-js/lynx-ui':
+ specifier: ^3.133.0
+ version: 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react':
+ specifier: ^0.121.0
+ version: 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@openuidev/lang-core':
+ specifier: ^0.2.4
+ version: 0.2.4(@modelcontextprotocol/sdk@1.25.2(hono@4.12.12)(zod@3.25.76))(zod@3.25.76)
+ '@preact/signals':
+ specifier: ^2.5.1
+ version: 2.5.1(preact@10.29.1)
+ typedoc:
+ specifier: ^0.28.19
+ version: 0.28.19(typescript@5.9.3)
+ zod:
+ specifier: ^3.25.76
+ version: 3.25.76
+
packages/genui/a2ui:
dependencies:
'@a2ui/web_core':
@@ -605,9 +629,9 @@ importers:
specifier: ^2.5.1
version: 2.5.1(preact@10.29.1)
devDependencies:
- '@lynx-js/a2ui-cli':
+ '@lynx-js/genui-cli':
specifier: workspace:*
- version: link:../a2ui-cli
+ version: link:../cli
'@lynx-js/lynx-ui':
specifier: ^3.133.0
version: 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -637,32 +661,20 @@ importers:
specifier: ^24.10.13
version: 24.10.13
- packages/genui/a2ui-cli:
- dependencies:
- '@lynx-js/a2ui-catalog-extractor':
- specifier: workspace:*
- version: link:../a2ui-catalog-extractor
- '@lynx-js/a2ui-prompt':
- specifier: workspace:*
- version: link:../a2ui-prompt
-
packages/genui/a2ui-playground:
dependencies:
'@codemirror/lang-json':
specifier: ^6.0.2
version: 6.0.2
- '@lynx-js/a2ui-reactlynx':
+ '@lynx-js/genui':
specifier: workspace:*
- version: link:../a2ui
+ version: link:..
'@lynx-js/luna-styles':
specifier: 0.1.0
version: 0.1.0
'@lynx-js/lynx-core':
specifier: 0.1.3
version: 0.1.3
- '@lynx-js/openui-reactlynx':
- specifier: workspace:*
- version: link:../openui
'@lynx-js/react':
specifier: workspace:*
version: link:../../react
@@ -728,6 +740,15 @@ importers:
specifier: ^24.10.13
version: 24.10.13
+ packages/genui/cli:
+ dependencies:
+ '@lynx-js/genui-a2ui-catalog-extractor':
+ specifier: workspace:*
+ version: link:../a2ui-catalog-extractor
+ '@lynx-js/genui-a2ui-prompt':
+ specifier: workspace:*
+ version: link:../a2ui-prompt
+
packages/genui/openui:
dependencies:
'@openuidev/lang-core':
@@ -4008,6 +4029,9 @@ packages:
'@lynx-js/react': '*'
'@lynx-js/types': '*'
+ '@lynx-js/internal-preact@10.29.1-20260424024911-12b794f':
+ resolution: {integrity: sha512-MQ+xjPL2f1P9/eCAdkT2h9cJRXl1qqhSJDX9GkPETt3UAepLo5N+HbGB8Qr3IUzqGDWMr3Mj76my1P0pLkKVDg==}
+
'@lynx-js/internal-preact@10.29.1-20260519060144-e6da44c':
resolution: {integrity: sha512-h2pRrt5oLK9LT1NkjyprtzJij/AdZGvv3CN6B5edL4chixqvITbxoCSdYy667Hl6+uKOBuxmCNZoDddgRfcLnw==}
@@ -4188,6 +4212,15 @@ packages:
peerDependencies:
'@lynx-js/react': '>=0.105.1'
+ '@lynx-js/react@0.121.0':
+ resolution: {integrity: sha512-V3/1+kRM7ugFZbhfldnPyJH65gZI06qa9E2/lGM8b+almHWzn+i9G1imMZiHROKlkOT495TauMOH4FiH1U47Fw==}
+ peerDependencies:
+ '@lynx-js/types': '*'
+ '@types/react': ^18
+ peerDependenciesMeta:
+ '@lynx-js/types':
+ optional: true
+
'@lynx-js/tasm@0.0.39':
resolution: {integrity: sha512-FNIV6Cc2K0wCKOHVMfpr3M6kpIZqHHNI02GpVl+h0ClyyK44jxEO+lf58gLFD5E3o0hJ1cp3H2OBIxSUJGkPDw==}
hasBin: true
@@ -13698,17 +13731,35 @@ snapshots:
dependencies:
'@lukeed/csprng': 1.1.0
+ '@lynx-js/gesture-runtime@2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)':
+ dependencies:
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+
'@lynx-js/gesture-runtime@2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)':
dependencies:
'@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
+ '@lynx-js/internal-preact@10.29.1-20260424024911-12b794f': {}
+
'@lynx-js/internal-preact@10.29.1-20260519060144-e6da44c': {}
'@lynx-js/luna-styles@0.1.0': {}
'@lynx-js/lynx-core@0.1.3': {}
+ '@lynx-js/lynx-ui-button@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ clsx: 2.1.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-button@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13720,6 +13771,18 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-checkbox@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ clsx: 2.1.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-checkbox@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13732,6 +13795,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-common@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/react-use': 0.1.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-common@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
@@ -13743,6 +13817,20 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-dialog@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ clsx: 2.1.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-dialog@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13757,6 +13845,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-draggable@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/react-use': 0.1.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-draggable@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13768,6 +13867,18 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-feed-list@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-list': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-feed-list@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
@@ -13780,6 +13891,21 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-form@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-checkbox': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-input': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-radio-group': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-switch': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-form@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13795,6 +13921,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-input@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-scroll-view': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-input@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13806,6 +13943,16 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-lazy-component@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-lazy-component@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13816,6 +13963,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-list@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-list@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
@@ -13827,6 +13985,16 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-overlay@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-overlay@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13837,6 +14005,20 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-popover@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ clsx: 2.1.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-popover@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13851,6 +14033,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-presence@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ clsx: 2.1.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-presence@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13862,6 +14055,18 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-radio-group@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ clsx: 2.1.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-radio-group@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13874,6 +14079,18 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-scroll-view@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-lazy-component': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-scroll-view@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
@@ -13886,6 +14103,22 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-sheet@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-dialog': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/motion': 0.0.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ clsx: 2.1.1
+ transitivePeerDependencies:
+ - '@emotion/is-prop-valid'
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-sheet@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13902,6 +14135,16 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-slider@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-slider@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13912,6 +14155,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-sortable@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-draggable': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-sortable@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13923,6 +14177,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-swipe-action@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-swipe-action@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
@@ -13934,6 +14199,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-swiper@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/react-use': 0.1.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-swiper@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13945,6 +14221,17 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui-switch@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ clsx: 2.1.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui-switch@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13956,6 +14243,36 @@ snapshots:
- react
- react-dom
+ '@lynx-js/lynx-ui@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-checkbox': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-dialog': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-draggable': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-feed-list': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-form': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-input': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-lazy-component': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-list': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-popover': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-radio-group': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-scroll-view': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-sheet': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-slider': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-sortable': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-swipe-action': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-swiper': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-switch': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
+ transitivePeerDependencies:
+ - '@emotion/is-prop-valid'
+ - react
+ - react-dom
+
'@lynx-js/lynx-ui@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13986,6 +14303,19 @@ snapshots:
- react
- react-dom
+ '@lynx-js/motion@0.0.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ framer-motion: 12.34.1(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ motion-dom: 12.23.12
+ motion-utils: 12.23.6
+ optionalDependencies:
+ '@lynx-js/types': 3.7.0
+ transitivePeerDependencies:
+ - '@emotion/is-prop-valid'
+ - react
+ - react-dom
+
'@lynx-js/motion@0.0.3(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/react': link:packages/react
@@ -14004,6 +14334,16 @@ snapshots:
errorstacks: 2.4.1
htm: 3.1.1
+ '@lynx-js/react-use@0.1.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ immer: 10.1.1
+ nanoid: 5.1.11
+ react-use: 17.6.0(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
'@lynx-js/react-use@0.1.3(@lynx-js/react@packages+react)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/react': link:packages/react
@@ -14014,6 +14354,13 @@ snapshots:
- react
- react-dom
+ '@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)':
+ dependencies:
+ '@types/react': 19.2.14
+ preact: '@lynx-js/internal-preact@10.29.1-20260424024911-12b794f'
+ optionalDependencies:
+ '@lynx-js/types': 3.7.0
+
'@lynx-js/tasm@0.0.39': {}
'@lynx-js/trace-processor@0.0.1':
@@ -14946,6 +15293,10 @@ snapshots:
optionalDependencies:
'@rsbuild/core': 2.0.6(core-js@3.48.0)
+ '@rsbuild/plugin-typed-css-modules@1.2.2(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@0.22.0)(core-js@3.48.0))':
+ optionalDependencies:
+ '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@0.22.0)(core-js@3.48.0)
+
'@rsdoctor/client@1.5.6': {}
'@rsdoctor/core@1.5.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@rsbuild/core@2.0.6(core-js@3.48.0))(@rspack/core@2.0.3(@swc/helpers@0.5.21))(webpack@5.105.2(lightningcss@1.31.1)(postcss@8.5.14))':
@@ -21584,6 +21935,12 @@ snapshots:
optionalDependencies:
'@rsbuild/core': 2.0.6(core-js@3.48.0)
+ rsbuild-plugin-tailwindcss@0.2.4(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@0.22.0)(core-js@3.48.0))(tailwindcss@4.2.1):
+ dependencies:
+ tailwindcss: 4.2.1
+ optionalDependencies:
+ '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@0.22.0)(core-js@3.48.0)
+
rslog@1.3.2: {}
rtl-css-js@1.16.1:
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 2cb6984010..eba57eedcb 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -2,6 +2,7 @@ packages:
- benchmark/react
- examples/*
- packages/background-only
+ - packages/genui
- packages/genui/*
- packages/i18n/*
- packages/lynx/*
From 687ab3a4a73cf27ae519fbbcc8cfcacbf4741763 Mon Sep 17 00:00:00 2001
From: BitterGourd <91231822+gaoachao@users.noreply.github.com>
Date: Tue, 26 May 2026 15:07:25 +0800
Subject: [PATCH 3/7] fix(genui): address CI failures
---
eslint.config.js | 7 ++++
.../bin/a2ui-catalog-extractor.js | 1 -
packages/genui/a2ui-playground/package.json | 5 ++-
packages/genui/a2ui/README.md | 4 +-
packages/genui/a2ui/README_zh.md | 42 +++++++++----------
packages/genui/tsconfig.json | 12 +-----
pnpm-lock.yaml | 22 +++-------
website/package.json | 4 +-
8 files changed, 43 insertions(+), 54 deletions(-)
diff --git a/eslint.config.js b/eslint.config.js
index 2089ad4ebe..0e9b3389de 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -269,6 +269,12 @@ export default tseslint.config(
reportUnusedDisableDirectives: true,
},
},
+ {
+ files: ['packages/genui/index.ts'],
+ rules: {
+ 'import/no-unresolved': 'off',
+ },
+ },
// TypeScript-related
{
files: ['**/*.ts', '**/*.tsx'],
@@ -293,6 +299,7 @@ export default tseslint.config(
'rslib.config.ts',
'vitest.config.ts',
'rstest.config.ts',
+ 'packages/genui/index.ts',
],
defaultProject: './tsconfig.json',
},
diff --git a/packages/genui/a2ui-catalog-extractor/bin/a2ui-catalog-extractor.js b/packages/genui/a2ui-catalog-extractor/bin/a2ui-catalog-extractor.js
index 6a88a1d1e9..f9fa4f9860 100755
--- a/packages/genui/a2ui-catalog-extractor/bin/a2ui-catalog-extractor.js
+++ b/packages/genui/a2ui-catalog-extractor/bin/a2ui-catalog-extractor.js
@@ -2,5 +2,4 @@
// Copyright 2026 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
-// eslint-disable-next-line import/no-unresolved -- Generated by the package build.
import '../dist/cli.js';
diff --git a/packages/genui/a2ui-playground/package.json b/packages/genui/a2ui-playground/package.json
index 519549c067..097b019586 100644
--- a/packages/genui/a2ui-playground/package.json
+++ b/packages/genui/a2ui-playground/package.json
@@ -4,8 +4,9 @@
"private": true,
"type": "module",
"scripts": {
- "build": "rsbuild build",
- "build:lynx": "rspeedy build",
+ "build": "pnpm run build:a2ui && rsbuild build",
+ "build:a2ui": "pnpm --dir ../a2ui-catalog-extractor build && pnpm --dir ../a2ui build",
+ "build:lynx": "pnpm run build:a2ui && rspeedy build",
"dev": "pnpm run build:lynx && rsbuild dev",
"dev:lynx": "rspeedy dev",
"preview": "rsbuild preview",
diff --git a/packages/genui/a2ui/README.md b/packages/genui/a2ui/README.md
index f8004e4ced..186e8c240c 100644
--- a/packages/genui/a2ui/README.md
+++ b/packages/genui/a2ui/README.md
@@ -67,8 +67,8 @@ For a product app using A2UI, the important surfaces are:
| Surface | Role |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
-| `@lynx-js/genui/a2ui` | ReactLynx renderer for A2UI v0.9. It provides ``, `MessageStore`, catalog APIs, built-in components, and protocol helpers. |
-| `genui a2ui` | Build-time command for generating catalog artifacts from TypeScript contracts and A2UI system prompts for your agent. |
+| `@lynx-js/genui/a2ui` | ReactLynx renderer for A2UI v0.9. It provides ``, `MessageStore`, catalog APIs, built-in components, and protocol helpers. |
+| `genui a2ui` | Build-time command for generating catalog artifacts from TypeScript contracts and A2UI system prompts for your agent. |
| Your agent service | A backend you own. It receives user prompts/actions, calls a model with the A2UI prompt and catalog, validates output, and returns A2UI. |
| Your transport implementation | Client code that calls your agent service, handles REST or streaming responses, pushes messages into `MessageStore`, and forwards actions. |
diff --git a/packages/genui/a2ui/README_zh.md b/packages/genui/a2ui/README_zh.md
index 0097293418..e6ad0b3b2d 100644
--- a/packages/genui/a2ui/README_zh.md
+++ b/packages/genui/a2ui/README_zh.md
@@ -56,12 +56,12 @@ function WeatherCard(props: WeatherCardProps) {
对于正在接入 A2UI 的产品应用,真正需要关注的是这些对外使用面:
-| 使用面 | 作用 |
-| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
-| `@lynx-js/a2ui-reactlynx` | 面向 A2UI v0.9 的 ReactLynx 渲染器,提供 ``、`MessageStore`、Catalog API、内置组件和协议辅助能力。 |
-| `npx @lynx-js/a2ui-cli` | 构建期命令,用来从 TypeScript 契约生成 catalog artifacts,并为你的 Agent 生成 A2UI system prompt。 |
-| 你的 Agent 服务 | 你自己维护的后端。它接收用户 prompt/action,带着 A2UI prompt 和 Catalog 请求模型,校验输出,然后返回 A2UI messages。 |
-| 你的传输层实现 | Client 侧调用 Agent 服务的适配层,负责处理 REST 或流式响应,把 messages 写入 `MessageStore`,并转发 generated UI 中触发的 actions。 |
+| 使用面 | 作用 |
+| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
+| `@lynx-js/genui/a2ui` | 面向 A2UI v0.9 的 ReactLynx 渲染器,提供 ``、`MessageStore`、Catalog API、内置组件和协议辅助能力。 |
+| `genui a2ui` | 构建期命令,用来从 TypeScript 契约生成 catalog artifacts,并为你的 Agent 生成 A2UI system prompt。 |
+| 你的 Agent 服务 | 你自己维护的后端。它接收用户 prompt/action,带着 A2UI prompt 和 Catalog 请求模型,校验输出,然后返回 A2UI messages。 |
+| 你的传输层实现 | Client 侧调用 Agent 服务的适配层,负责处理 REST 或流式响应,把 messages 写入 `MessageStore`,并转发 generated UI 中触发的 actions。 |
## 三个核心部分
@@ -107,8 +107,8 @@ Client 负责传输和渲染。它从 Agent 获取消息,把消息写入 `Mess
在你的 ReactLynx 应用中安装渲染器包,并通过 `npx` 使用 CLI。CLI 需要 Node.js 22 或更新版本。
```sh
-pnpm add @lynx-js/a2ui-reactlynx
-npx @lynx-js/a2ui-cli --help
+pnpm add @lynx-js/genui
+genui a2ui --help
```
后续流程都发生在你的应用里:定义面向 Catalog 的组件契约,生成 catalog artifacts,把生成的 prompt 交给你的 Agent 服务,并在
@@ -149,7 +149,7 @@ ProductTile.displayName = 'ProductTile';
为 Agent 生成 schema:
```sh
-npx @lynx-js/a2ui-cli generate catalog --catalog-dir src/catalog --out-dir dist/catalog
+genui a2ui generate catalog --catalog-dir src/catalog --out-dir dist/catalog
```
然后把组件和 manifest 配对:
@@ -162,12 +162,12 @@ import {
createMessageStore,
defineCatalog,
serializeCatalog,
-} from '@lynx-js/a2ui-reactlynx';
-import buttonManifest from '@lynx-js/a2ui-reactlynx/catalog/Button/catalog.json'
+} from '@lynx-js/genui/a2ui';
+import buttonManifest from '@lynx-js/genui/a2ui/catalog/Button/catalog.json'
with { type: 'json' };
-import columnManifest from '@lynx-js/a2ui-reactlynx/catalog/Column/catalog.json'
+import columnManifest from '@lynx-js/genui/a2ui/catalog/Column/catalog.json'
with { type: 'json' };
-import textManifest from '@lynx-js/a2ui-reactlynx/catalog/Text/catalog.json'
+import textManifest from '@lynx-js/genui/a2ui/catalog/Text/catalog.json'
with { type: 'json' };
import productTileManifest from './dist/catalog/ProductTile/catalog.json'
with { type: 'json' };
@@ -204,22 +204,22 @@ CLI 是 React 源码和 Agent 之间的构建期桥梁。需要稳定、可重
通过 `npx` 执行公开 CLI 包:
```sh
-npx @lynx-js/a2ui-cli generate catalog \
+genui a2ui generate catalog \
--catalog-dir src/catalog \
--source src/functions \
--out-dir dist/catalog
-npx @lynx-js/a2ui-cli generate prompt \
+genui a2ui generate prompt \
--catalog-dir dist/catalog \
--catalog-id https://example.com/catalogs/custom/v1/catalog.json \
--out dist/a2ui-system-prompt.txt
```
如果你的构建流程已经产出 TypeDoc JSON,仍然使用同一个
-`npx @lynx-js/a2ui-cli` 命令前缀,把该文件传给 `generate catalog`:
+`genui a2ui` 命令前缀,把该文件传给 `generate catalog`:
```sh
-npx @lynx-js/a2ui-cli generate catalog \
+genui a2ui generate catalog \
--typedoc-json typedoc.json \
--out-dir dist/catalog
```
@@ -265,7 +265,7 @@ Catalog 编写细节:
你的 Agent 服务应该是产品自己的后端路由,而不是浏览器代码。它应该:
-- 读取 `npx @lynx-js/a2ui-cli generate prompt` 生成的 A2UI system prompt。
+- 读取 `genui a2ui generate prompt` 生成的 A2UI system prompt。
- 加入 conversation history、用户意图,以及模型需要的产品状态。
- 在服务端请求模型供应商。
- 校验或修复模型输出,再把 A2UI messages 返回给 Client。
@@ -355,8 +355,8 @@ import {
Column,
Text,
createMessageStore,
-} from '@lynx-js/a2ui-reactlynx';
-import type { UserActionPayload } from '@lynx-js/a2ui-reactlynx';
+} from '@lynx-js/genui/a2ui';
+import type { UserActionPayload } from '@lynx-js/genui/a2ui';
const store = createMessageStore();
const catalogs = [Text, Column, Button];
@@ -438,7 +438,7 @@ GenUI 不限定传输方式。协议消息可以通过 REST、SSE、WebSocket、
让传输层保持小而明确:
```ts
-import type { MessageStore, UserActionPayload } from '@lynx-js/a2ui-reactlynx';
+import type { MessageStore, UserActionPayload } from '@lynx-js/genui/a2ui';
interface ConversationContext {
history: Array<{ role: 'user' | 'assistant' | 'system'; content: string }>;
diff --git a/packages/genui/tsconfig.json b/packages/genui/tsconfig.json
index 1cdc5051cf..9a2dd5d6d6 100644
--- a/packages/genui/tsconfig.json
+++ b/packages/genui/tsconfig.json
@@ -7,14 +7,6 @@
"lib": ["DOM", "ESNext"],
"moduleResolution": "Bundler",
},
- "references": [
- /** packages-start */
- { "path": "./a2ui-catalog-extractor/tsconfig.json" },
- { "path": "./a2ui-prompt/tsconfig.json" },
- { "path": "./a2ui/tsconfig.build.json" },
- { "path": "./openui/tsconfig.json" },
- { "path": "./ui-judge/tsconfig.json" },
- /** packages-end */
- ],
- "include": ["index.ts"],
+ "references": [],
+ "include": [],
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ec59404f84..e6263ab5ef 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -2312,12 +2312,6 @@ importers:
specifier: 19.2.4
version: 19.2.4(react@19.2.4)
devDependencies:
- '@lynx-js/a2ui-cli':
- specifier: workspace:*
- version: link:../packages/genui/a2ui-cli
- '@lynx-js/a2ui-reactlynx':
- specifier: workspace:*
- version: link:../packages/genui/a2ui
'@lynx-js/chunk-loading-webpack-plugin':
specifier: workspace:*
version: link:../packages/webpack/chunk-loading-webpack-plugin
@@ -2333,6 +2327,12 @@ importers:
'@lynx-js/externals-loading-webpack-plugin':
specifier: workspace:*
version: link:../packages/webpack/externals-loading-webpack-plugin
+ '@lynx-js/genui':
+ specifier: workspace:*
+ version: link:../packages/genui
+ '@lynx-js/genui-cli':
+ specifier: workspace:*
+ version: link:../packages/genui/cli
'@lynx-js/lynx-bundle-rslib-config':
specifier: workspace:*
version: link:../packages/rspeedy/lynx-bundle-rslib-config
@@ -15293,10 +15293,6 @@ snapshots:
optionalDependencies:
'@rsbuild/core': 2.0.6(core-js@3.48.0)
- '@rsbuild/plugin-typed-css-modules@1.2.2(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@0.22.0)(core-js@3.48.0))':
- optionalDependencies:
- '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@0.22.0)(core-js@3.48.0)
-
'@rsdoctor/client@1.5.6': {}
'@rsdoctor/core@1.5.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@rsbuild/core@2.0.6(core-js@3.48.0))(@rspack/core@2.0.3(@swc/helpers@0.5.21))(webpack@5.105.2(lightningcss@1.31.1)(postcss@8.5.14))':
@@ -21935,12 +21931,6 @@ snapshots:
optionalDependencies:
'@rsbuild/core': 2.0.6(core-js@3.48.0)
- rsbuild-plugin-tailwindcss@0.2.4(@rsbuild/core@2.0.0-beta.3(@module-federation/runtime-tools@0.22.0)(core-js@3.48.0))(tailwindcss@4.2.1):
- dependencies:
- tailwindcss: 4.2.1
- optionalDependencies:
- '@rsbuild/core': 2.0.0-beta.3(@module-federation/runtime-tools@0.22.0)(core-js@3.48.0)
-
rslog@1.3.2: {}
rtl-css-js@1.16.1:
diff --git a/website/package.json b/website/package.json
index 3b44605cf2..0e0c3866f0 100644
--- a/website/package.json
+++ b/website/package.json
@@ -19,13 +19,13 @@
"react-dom": "19.2.4"
},
"devDependencies": {
- "@lynx-js/a2ui-cli": "workspace:*",
- "@lynx-js/a2ui-reactlynx": "workspace:*",
"@lynx-js/chunk-loading-webpack-plugin": "workspace:*",
"@lynx-js/config-rsbuild-plugin": "workspace:*",
"@lynx-js/css-extract-webpack-plugin": "workspace:*",
"@lynx-js/external-bundle-rsbuild-plugin": "workspace:*",
"@lynx-js/externals-loading-webpack-plugin": "workspace:*",
+ "@lynx-js/genui": "workspace:*",
+ "@lynx-js/genui-cli": "workspace:*",
"@lynx-js/lynx-bundle-rslib-config": "workspace:*",
"@lynx-js/qrcode-rsbuild-plugin": "workspace:*",
"@lynx-js/react": "workspace:*",
From 0b948da698928fc4570c97ef981605b08a081400 Mon Sep 17 00:00:00 2001
From: BitterGourd <91231822+gaoachao@users.noreply.github.com>
Date: Tue, 26 May 2026 18:21:46 +0800
Subject: [PATCH 4/7] fix: ci
---
.../a2ui-playground/lynx-src/a2ui/App.tsx | 68 ++++++-------------
.../a2ui-playground/lynx-src/a2ui/index.css | 2 +-
packages/genui/a2ui-playground/package.json | 5 +-
.../genui/a2ui-playground/src/catalog/a2ui.ts | 59 ++++++----------
packages/genui/a2ui/package.json | 2 +-
.../a2ui/scripts/writeCatalogManifestIndex.js | 39 +++++++++++
packages/genui/a2ui/src/catalog/index.ts | 4 ++
packages/genui/ui-judge/package.json | 1 +
pnpm-lock.yaml | 3 +
9 files changed, 92 insertions(+), 91 deletions(-)
create mode 100644 packages/genui/a2ui/scripts/writeCatalogManifestIndex.js
diff --git a/packages/genui/a2ui-playground/lynx-src/a2ui/App.tsx b/packages/genui/a2ui-playground/lynx-src/a2ui/App.tsx
index d7ef0b5618..3383497289 100644
--- a/packages/genui/a2ui-playground/lynx-src/a2ui/App.tsx
+++ b/packages/genui/a2ui-playground/lynx-src/a2ui/App.tsx
@@ -34,6 +34,7 @@ import type {
ServerToClientMessage,
UserActionPayload,
} from '@lynx-js/genui/a2ui';
+import { catalogManifests } from '@lynx-js/genui/a2ui/catalog';
import {
useCallback,
useEffect,
@@ -45,40 +46,11 @@ import {
useState,
} from '@lynx-js/react';
-import buttonManifest from '../../.generated/a2ui/catalog/Button/catalog.json';
-import cardManifest from '../../.generated/a2ui/catalog/Card/catalog.json';
-import checkBoxManifest from '../../.generated/a2ui/catalog/CheckBox/catalog.json';
-import choicePickerManifest from '../../.generated/a2ui/catalog/ChoicePicker/catalog.json';
-import columnManifest from '../../.generated/a2ui/catalog/Column/catalog.json';
-import dateTimeInputManifest from '../../.generated/a2ui/catalog/DateTimeInput/catalog.json';
-import dividerManifest from '../../.generated/a2ui/catalog/Divider/catalog.json';
-import iconManifest from '../../.generated/a2ui/catalog/Icon/catalog.json';
-import imageManifest from '../../.generated/a2ui/catalog/Image/catalog.json';
-import lineChartManifest from '../../.generated/a2ui/catalog/LineChart/catalog.json';
-import listManifest from '../../.generated/a2ui/catalog/List/catalog.json';
-import modalManifest from '../../.generated/a2ui/catalog/Modal/catalog.json';
-import pieChartManifest from '../../.generated/a2ui/catalog/PieChart/catalog.json';
-import radioGroupManifest from '../../.generated/a2ui/catalog/RadioGroup/catalog.json';
-import rowManifest from '../../.generated/a2ui/catalog/Row/catalog.json';
-import sliderManifest from '../../.generated/a2ui/catalog/Slider/catalog.json';
-import tabsManifest from '../../.generated/a2ui/catalog/Tabs/catalog.json';
-import textManifest from '../../.generated/a2ui/catalog/Text/catalog.json';
-import textFieldManifest from '../../.generated/a2ui/catalog/TextField/catalog.json';
import { createMockAgent } from '../../examples/io-mock/mockAgent.js';
import type { MockAgentProgress } from '../../examples/io-mock/mockAgent.js';
const DEFAULT_STREAM_DELAY_MS = 800;
-// Compose every built-in. There is intentionally no all-in-one aggregate
-// shipped from the package — this list makes the cost of "everything"
-// visible and lets the bundler tree-shake when you only need a few.
-//
-// Function entries are included because the gallery payloads use A2UI
-// basic-catalog calls such as `formatDate` in dynamic props and checks.
-//
-// To include component schemas, pair each component with its `catalog.json`
-// manifest — see
-// `packages/genui/a2ui/src/catalog/README.md`.
function manifestEntry(
component: unknown,
manifest: CatalogManifest,
@@ -87,25 +59,25 @@ function manifestEntry(
}
const ALL_BUILTINS: readonly CatalogInput[] = [
- manifestEntry(Text, textManifest),
- manifestEntry(Image, imageManifest),
- manifestEntry(Row, rowManifest),
- manifestEntry(Column, columnManifest),
- manifestEntry(List, listManifest),
- manifestEntry(Card, cardManifest),
- manifestEntry(Modal, modalManifest),
- manifestEntry(Button, buttonManifest),
- manifestEntry(Divider, dividerManifest),
- manifestEntry(Icon, iconManifest),
- manifestEntry(CheckBox, checkBoxManifest),
- manifestEntry(ChoicePicker, choicePickerManifest),
- manifestEntry(DateTimeInput, dateTimeInputManifest),
- manifestEntry(LineChart, lineChartManifest),
- manifestEntry(PieChart, pieChartManifest),
- manifestEntry(RadioGroup, radioGroupManifest),
- manifestEntry(Slider, sliderManifest),
- manifestEntry(TextField, textFieldManifest),
- manifestEntry(Tabs, tabsManifest),
+ manifestEntry(Text, catalogManifests.Text),
+ manifestEntry(Image, catalogManifests.Image),
+ manifestEntry(Row, catalogManifests.Row),
+ manifestEntry(Column, catalogManifests.Column),
+ manifestEntry(List, catalogManifests.List),
+ manifestEntry(Card, catalogManifests.Card),
+ manifestEntry(Modal, catalogManifests.Modal),
+ manifestEntry(Button, catalogManifests.Button),
+ manifestEntry(Divider, catalogManifests.Divider),
+ manifestEntry(Icon, catalogManifests.Icon),
+ manifestEntry(CheckBox, catalogManifests.CheckBox),
+ manifestEntry(ChoicePicker, catalogManifests.ChoicePicker),
+ manifestEntry(DateTimeInput, catalogManifests.DateTimeInput),
+ manifestEntry(LineChart, catalogManifests.LineChart),
+ manifestEntry(PieChart, catalogManifests.PieChart),
+ manifestEntry(RadioGroup, catalogManifests.RadioGroup),
+ manifestEntry(Slider, catalogManifests.Slider),
+ manifestEntry(TextField, catalogManifests.TextField),
+ manifestEntry(Tabs, catalogManifests.Tabs),
...basicFunctions,
];
diff --git a/packages/genui/a2ui-playground/lynx-src/a2ui/index.css b/packages/genui/a2ui-playground/lynx-src/a2ui/index.css
index 1a6a039f44..a792475233 100644
--- a/packages/genui/a2ui-playground/lynx-src/a2ui/index.css
+++ b/packages/genui/a2ui-playground/lynx-src/a2ui/index.css
@@ -1,5 +1,5 @@
@import "@lynx-js/luna-styles/index.css";
-@import "@lynx-js/a2ui-reactlynx/styles/theme.css";
+@import "@lynx-js/genui/a2ui/styles/theme.css";
:root {
display: flex;
diff --git a/packages/genui/a2ui-playground/package.json b/packages/genui/a2ui-playground/package.json
index 097b019586..519549c067 100644
--- a/packages/genui/a2ui-playground/package.json
+++ b/packages/genui/a2ui-playground/package.json
@@ -4,9 +4,8 @@
"private": true,
"type": "module",
"scripts": {
- "build": "pnpm run build:a2ui && rsbuild build",
- "build:a2ui": "pnpm --dir ../a2ui-catalog-extractor build && pnpm --dir ../a2ui build",
- "build:lynx": "pnpm run build:a2ui && rspeedy build",
+ "build": "rsbuild build",
+ "build:lynx": "rspeedy build",
"dev": "pnpm run build:lynx && rsbuild dev",
"dev:lynx": "rspeedy dev",
"preview": "rsbuild preview",
diff --git a/packages/genui/a2ui-playground/src/catalog/a2ui.ts b/packages/genui/a2ui-playground/src/catalog/a2ui.ts
index d63d6561d9..c6c4ab2d9d 100644
--- a/packages/genui/a2ui-playground/src/catalog/a2ui.ts
+++ b/packages/genui/a2ui-playground/src/catalog/a2ui.ts
@@ -1,26 +1,9 @@
// Copyright 2026 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
+import { catalogManifests } from '@lynx-js/genui/a2ui/catalog';
+
import type { ProtocolName } from './utils/protocol.js';
-import buttonManifest from '../../.generated/a2ui/catalog/Button/catalog.json';
-import cardManifest from '../../.generated/a2ui/catalog/Card/catalog.json';
-import checkBoxManifest from '../../.generated/a2ui/catalog/CheckBox/catalog.json';
-import choicePickerManifest from '../../.generated/a2ui/catalog/ChoicePicker/catalog.json';
-import columnManifest from '../../.generated/a2ui/catalog/Column/catalog.json';
-import dateTimeInputManifest from '../../.generated/a2ui/catalog/DateTimeInput/catalog.json';
-import dividerManifest from '../../.generated/a2ui/catalog/Divider/catalog.json';
-import iconManifest from '../../.generated/a2ui/catalog/Icon/catalog.json';
-import imageManifest from '../../.generated/a2ui/catalog/Image/catalog.json';
-import lineChartManifest from '../../.generated/a2ui/catalog/LineChart/catalog.json';
-import listManifest from '../../.generated/a2ui/catalog/List/catalog.json';
-import modalManifest from '../../.generated/a2ui/catalog/Modal/catalog.json';
-import pieChartManifest from '../../.generated/a2ui/catalog/PieChart/catalog.json';
-import radioGroupManifest from '../../.generated/a2ui/catalog/RadioGroup/catalog.json';
-import rowManifest from '../../.generated/a2ui/catalog/Row/catalog.json';
-import sliderManifest from '../../.generated/a2ui/catalog/Slider/catalog.json';
-import tabsManifest from '../../.generated/a2ui/catalog/Tabs/catalog.json';
-import textManifest from '../../.generated/a2ui/catalog/Text/catalog.json';
-import textFieldManifest from '../../.generated/a2ui/catalog/TextField/catalog.json';
export interface ComponentProp {
name: string;
@@ -120,7 +103,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
name: 'Text',
category: 'Display',
description: 'Displays a text string with optional style variant.',
- props: schemaToProps(textManifest),
+ props: schemaToProps(catalogManifests.Text),
usage: {
a2ui: {
id: 'greeting',
@@ -184,7 +167,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Display',
description:
'Renders a Material icon by name. Default icon names can be browsed at https://a2ui-composer.ag-ui.com/icons.',
- props: schemaToProps(iconManifest),
+ props: schemaToProps(catalogManifests.Icon),
usage: {
a2ui: [
{
@@ -375,7 +358,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
name: 'Image',
category: 'Display',
description: 'Displays an image from a URL or data binding.',
- props: schemaToProps(imageManifest),
+ props: schemaToProps(catalogManifests.Image),
usage: {
a2ui: {
id: 'hero-image',
@@ -426,7 +409,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
name: 'Divider',
category: 'Display',
description: 'A visual separator line used to divide content sections.',
- props: schemaToProps(dividerManifest),
+ props: schemaToProps(catalogManifests.Divider),
usage: {
a2ui: [
{
@@ -552,7 +535,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Chart',
description:
'Plots one or more numeric series over category labels with native SVG rendering.',
- props: schemaToProps(lineChartManifest),
+ props: schemaToProps(catalogManifests.LineChart),
usage: {
a2ui: {
id: 'sales-chart',
@@ -628,7 +611,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Chart',
description:
'Renders pie and donut slices with native SVG arcs and a responsive legend.',
- props: schemaToProps(pieChartManifest),
+ props: schemaToProps(catalogManifests.PieChart),
usage: {
a2ui: {
id: 'revenue-share',
@@ -690,7 +673,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
name: 'Card',
category: 'Layout',
description: 'A container that renders one child component inside a card.',
- props: schemaToProps(cardManifest),
+ props: schemaToProps(catalogManifests.Card),
usage: {
a2ui: {
id: 'profile-card',
@@ -827,7 +810,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Layout',
description:
'A modal dialog that opens from a trigger component and displays one content component.',
- props: schemaToProps(modalManifest),
+ props: schemaToProps(catalogManifests.Modal),
usage: {
a2ui: [
{
@@ -878,7 +861,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Layout',
description:
'A horizontal layout container that arranges children in a row.',
- props: schemaToProps(rowManifest),
+ props: schemaToProps(catalogManifests.Row),
usage: {
a2ui: {
id: 'action-row',
@@ -1012,7 +995,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Layout',
description:
'A vertical layout container that arranges children in a column.',
- props: schemaToProps(columnManifest),
+ props: schemaToProps(catalogManifests.Column),
usage: {
a2ui: {
id: 'main-column',
@@ -1124,7 +1107,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Data',
description:
'A scrollable list that renders children or uses a template for dynamic items.',
- props: schemaToProps(listManifest),
+ props: schemaToProps(catalogManifests.List),
usage: {
a2ui: {
id: 'item-list',
@@ -1217,7 +1200,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
name: 'Button',
category: 'Input',
description: 'An interactive button that triggers an action when pressed.',
- props: schemaToProps(buttonManifest),
+ props: schemaToProps(catalogManifests.Button),
usage: {
a2ui: {
id: 'submit-btn',
@@ -1272,7 +1255,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Input',
description:
'A labeled text input with short text, long text, numeric, and obscured variants.',
- props: schemaToProps(textFieldManifest),
+ props: schemaToProps(catalogManifests.TextField),
usage: {
a2ui: {
id: 'name-input',
@@ -1350,7 +1333,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
name: 'CheckBox',
category: 'Input',
description: 'A toggleable checkbox with label and action support.',
- props: schemaToProps(checkBoxManifest),
+ props: schemaToProps(catalogManifests.CheckBox),
usage: {
a2ui: {
id: 'agree-checkbox',
@@ -1388,7 +1371,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
name: 'Slider',
category: 'Input',
description: 'A numeric range input backed by lynx-ui slider primitives.',
- props: schemaToProps(sliderManifest),
+ props: schemaToProps(catalogManifests.Slider),
usage: {
a2ui: {
id: 'volume-slider',
@@ -1433,7 +1416,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Input',
description:
'A date and/or time input with a calendar panel and configurable output format.',
- props: schemaToProps(dateTimeInputManifest),
+ props: schemaToProps(catalogManifests.DateTimeInput),
usage: {
a2ui: {
id: 'date-input',
@@ -1495,7 +1478,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Input',
description:
'A single- or multi-select choice picker with checkbox and chip styles.',
- props: schemaToProps(choicePickerManifest),
+ props: schemaToProps(catalogManifests.ChoicePicker),
usage: {
a2ui: {
id: 'city-picker',
@@ -1577,7 +1560,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
name: 'Tabs',
category: 'Layout',
description: 'A tab bar that switches between multiple child components.',
- props: schemaToProps(tabsManifest),
+ props: schemaToProps(catalogManifests.Tabs),
usage: {
a2ui: {
id: 'details-tabs',
@@ -1669,7 +1652,7 @@ export const COMPONENT_CATALOG: ComponentDoc[] = [
category: 'Input',
description:
'A group of mutually exclusive radio options with selection support.',
- props: schemaToProps(radioGroupManifest),
+ props: schemaToProps(catalogManifests.RadioGroup),
usage: {
a2ui: {
id: 'size-picker',
diff --git a/packages/genui/a2ui/package.json b/packages/genui/a2ui/package.json
index da8ca8583a..adcfa1898d 100644
--- a/packages/genui/a2ui/package.json
+++ b/packages/genui/a2ui/package.json
@@ -133,7 +133,7 @@
"types": "./dist/index.d.ts",
"scripts": {
"build": "tsc --project tsconfig.build.json && npm run build:catalog",
- "build:catalog": "genui a2ui generate catalog --catalog-dir src/catalog --out-dir dist/catalog",
+ "build:catalog": "genui a2ui generate catalog --catalog-dir src/catalog --out-dir dist/catalog && node scripts/writeCatalogManifestIndex.js",
"test": "rstest"
},
"dependencies": {
diff --git a/packages/genui/a2ui/scripts/writeCatalogManifestIndex.js b/packages/genui/a2ui/scripts/writeCatalogManifestIndex.js
new file mode 100644
index 0000000000..456afc7665
--- /dev/null
+++ b/packages/genui/a2ui/scripts/writeCatalogManifestIndex.js
@@ -0,0 +1,39 @@
+// Copyright 2026 The Lynx Authors. All rights reserved.
+// Licensed under the Apache License Version 2.0 that can be found in the
+// LICENSE file in the root directory of this source tree.
+import fs from 'node:fs';
+import path from 'node:path';
+
+const catalogDir = path.resolve('dist/catalog');
+const indexPath = path.join(catalogDir, 'index.js');
+const marker = 'export const catalogManifests = {};';
+
+const manifests = {};
+for (const entry of fs.readdirSync(catalogDir, { withFileTypes: true })) {
+ if (!entry.isDirectory() || entry.name === 'functions') continue;
+
+ const manifestPath = path.join(catalogDir, entry.name, 'catalog.json');
+ if (!fs.existsSync(manifestPath)) continue;
+
+ manifests[entry.name] = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
+}
+
+const source = fs.readFileSync(indexPath, 'utf8');
+const replacement = `export const catalogManifests = ${
+ JSON.stringify(manifests, null, 2)
+};\n`;
+const generatedManifestRe =
+ /export const catalogManifests = [\s\S]*?;\n+(?=\/\/ Per-component re-exports|export \{ Button \})/;
+const hasGeneratedManifest = generatedManifestRe.test(source);
+
+if (!source.includes(marker) && !hasGeneratedManifest) {
+ throw new Error(
+ `[a2ui] Could not find catalog manifest marker in ${indexPath}.`,
+ );
+}
+
+const nextSource = source.includes(marker)
+ ? source.replace(marker, replacement)
+ : source.replace(generatedManifestRe, replacement);
+
+fs.writeFileSync(indexPath, nextSource);
diff --git a/packages/genui/a2ui/src/catalog/index.ts b/packages/genui/a2ui/src/catalog/index.ts
index cadbfbab94..c4942874ec 100755
--- a/packages/genui/a2ui/src/catalog/index.ts
+++ b/packages/genui/a2ui/src/catalog/index.ts
@@ -1,6 +1,8 @@
// Copyright 2026 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
+import type { CatalogManifest } from './defineCatalog.js';
+
export {
defineCatalog,
defineFunction,
@@ -21,6 +23,8 @@ export type {
SerializedCatalog,
} from './defineCatalog.js';
+export const catalogManifests: Record = {};
+
// Per-component re-exports so consumers can pick exactly what they need.
// Each is an independently tree-shakeable ESM re-export — pulling `Text`
// does not drag `Button` into the bundle.
diff --git a/packages/genui/ui-judge/package.json b/packages/genui/ui-judge/package.json
index 8e1af0d382..c40b9131c6 100644
--- a/packages/genui/ui-judge/package.json
+++ b/packages/genui/ui-judge/package.json
@@ -23,6 +23,7 @@
"test": "playwright test"
},
"dependencies": {
+ "@lynx-js/genui": "workspace:*",
"@midscene/web": "^1.8.0",
"@playwright/test": "^1.58.2"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e6263ab5ef..7f10f7df3d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -804,6 +804,9 @@ importers:
packages/genui/ui-judge:
dependencies:
+ '@lynx-js/genui':
+ specifier: workspace:*
+ version: link:..
'@midscene/web':
specifier: ^1.8.0
version: 1.8.0(@playwright/test@1.58.2)(playwright@1.58.2)
From 0480c3d8fda1b8badf68a8fc456f092e4a96f0f0 Mon Sep 17 00:00:00 2001
From: BitterGourd <91231822+gaoachao@users.noreply.github.com>
Date: Wed, 27 May 2026 17:35:43 +0800
Subject: [PATCH 5/7] fix: minimumReleaseAge temporarily
---
pnpm-workspace.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index eba57eedcb..640f7ef0bc 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -35,7 +35,7 @@ optimisticRepeatInstall: true
resolutionMode: "lowest-direct"
# Match Renovate's npm minimum release age; pnpm also guards lockfile maintenance.
-minimumReleaseAge: 4320
+minimumReleaseAge: 0
# Default catalogs
catalog:
From 7cfaff51d89fd0acb5466cbda9dc0d92ebd08016 Mon Sep 17 00:00:00 2001
From: upupming
Date: Wed, 27 May 2026 18:45:13 +0800
Subject: [PATCH 6/7] fix: dedupe @lynx-js/react to one copy; revert turbo
cache-key change
Root cause of the 'BackgroundSnapshot not found' failures (51 test files):
packages/genui/a2ui depends on published @lynx-js/lynx-ui-*@3.133.0, which
peer-depend on @lynx-js/react@^0.121.0. pnpm pulled a published
@lynx-js/react@0.121.0 alongside the workspace copy (0.121.1), so the
ReactLynx runtime singleton 'snapshotManager' existed twice. Snapshots
registered in one copy were not found when looked up via the other, breaking
ReactLynx snapshot rendering across the whole monorepo (incl. unrelated tests
like lynx/gesture-runtime).
Verified locally with a clean, cache-free build: before -> 51 failed (197
'BackgroundSnapshot not found'); after the override -> 0 such failures on both
node 22 and node 24. (Remaining webpack/react and rspeedy/react failures are
pre-existing macOS-only rspack issues that also fail on main and pass in CI.)
- pnpm-workspace.yaml: add override "@lynx-js/react": "workspace:*" so the
published lynx-ui peer resolves to the single workspace copy.
- Revert the turbo cache-key change (turbo-v5 + pnpm-lock hash) across the
5 workflows: the failure was never a turbo cache staleness issue (a clean
cache-free build reproduces it), so that change is unnecessary.
---
.github/workflows/workflow-bench.yml | 5 +-
.github/workflows/workflow-build.yml | 18 +-
.../workflows/workflow-bundle-analysis.yml | 5 +-
.github/workflows/workflow-test.yml | 7 +-
.github/workflows/workflow-website.yml | 4 +-
pnpm-lock.yaml | 352 ++++++++----------
pnpm-workspace.yaml | 6 +
7 files changed, 172 insertions(+), 225 deletions(-)
diff --git a/.github/workflows/workflow-bench.yml b/.github/workflows/workflow-bench.yml
index 0446782ef5..dc2b26b098 100644
--- a/.github/workflows/workflow-bench.yml
+++ b/.github/workflows/workflow-bench.yml
@@ -28,9 +28,8 @@ jobs:
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: .turbo
- # We have to be strict here to make sure getting the cache of build-all.
- # Must stay byte-for-byte identical to the key in workflow-build.yml.
- key: turbo-v5-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.sha }}
+ # We have to be strict here to make sure getting the cache of build-all
+ key: turbo-v4-${{ runner.os }}-${{ hashFiles('**/packages/**/src/**/*.rs') }}-${{ github.sha }}
fail-on-cache-miss: true
- name: Install
run: |
diff --git a/.github/workflows/workflow-build.yml b/.github/workflows/workflow-build.yml
index e5180d92b5..29917a656a 100644
--- a/.github/workflows/workflow-build.yml
+++ b/.github/workflows/workflow-build.yml
@@ -95,19 +95,15 @@ jobs:
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: .turbo
- # The key is scoped by both the Rust transform sources (*.rs) and the
- # dependency graph (pnpm-lock.yaml). Turbo's per-task hash does not
- # fully capture the compiled snapshot output, so a cache built against
- # a different dependency graph must NOT be replayed here.
- key: turbo-v5-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.sha }}
- # We can only restore caches that share the same Rust transform sources
- # AND the same dependency graph (same *.rs hash and pnpm-lock.yaml hash):
+ key: turbo-v4-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ github.sha }}
+ # We can restore caches from:
# 1. Previous commit from base branch (merge base or base SHA)
- # 2. Any cache with a matching *.rs + lockfile hash
+ # 2. Any cache
restore-keys: |
- turbo-v5-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ needs.get-merge-base.outputs.merge-base }}
- turbo-v5-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.event.pull_request.base.sha || github.event.merge_group.base_sha || github.event.push.before }}
- turbo-v5-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ hashFiles('pnpm-lock.yaml') }}-
+ turbo-v4-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ needs.get-merge-base.outputs.merge-base }}
+ turbo-v4-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ github.event.pull_request.base.sha || github.event.merge_group.base_sha || github.event.push.before }}
+ turbo-v4-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-
+ turbo-v4-${{ runner.os }}-
- name: Install
run: |
npm install -g corepack@latest
diff --git a/.github/workflows/workflow-bundle-analysis.yml b/.github/workflows/workflow-bundle-analysis.yml
index 5fb440f322..60ce8f89bb 100644
--- a/.github/workflows/workflow-bundle-analysis.yml
+++ b/.github/workflows/workflow-bundle-analysis.yml
@@ -42,9 +42,8 @@ jobs:
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: .turbo
- # We have to be strict here to make sure getting the cache of build-all.
- # Must stay byte-for-byte identical to the key in workflow-build.yml.
- key: turbo-v5-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.sha }}
+ # We have to be strict here to make sure getting the cache of build-all
+ key: turbo-v4-${{ runner.os }}-${{ hashFiles('**/packages/**/src/**/*.rs') }}-${{ github.sha }}
fail-on-cache-miss: true
- name: Install
run: |
diff --git a/.github/workflows/workflow-test.yml b/.github/workflows/workflow-test.yml
index 3f61f0566d..0fe2ddeee3 100644
--- a/.github/workflows/workflow-test.yml
+++ b/.github/workflows/workflow-test.yml
@@ -87,11 +87,8 @@ jobs:
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: .turbo
- # We have to be strict here to make sure getting the cache of build-all.
- # This key MUST stay byte-for-byte identical to the one in
- # workflow-build.yml (same globs, same hash inputs) so that
- # fail-on-cache-miss reliably restores that commit's build-all .turbo.
- key: turbo-v5-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.sha }}
+ # We have to be strict here to make sure getting the cache of build-all
+ key: turbo-v4-${{ runner.os }}-${{ hashFiles('**/packages/**/src/**/*.rs') }}-${{ github.sha }}
fail-on-cache-miss: true
- name: Install
run: |
diff --git a/.github/workflows/workflow-website.yml b/.github/workflows/workflow-website.yml
index 0e6078fb60..b38e78cc6f 100644
--- a/.github/workflows/workflow-website.yml
+++ b/.github/workflows/workflow-website.yml
@@ -23,9 +23,7 @@ jobs:
uses: lynx-infra/cache@5c6160a6a4c7fca80a2f3057bb9dfc9513fcb732
with:
path: .turbo
- # Must stay byte-for-byte identical to the key in workflow-build.yml
- # so fail-on-cache-miss restores that commit's build-all .turbo.
- key: turbo-v5-${{ runner.os }}-${{ hashFiles('packages/**/src/**/*.rs') }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.sha }}
+ key: turbo-v4-${{ runner.os }}-${{ hashFiles('**/packages/**/src/**/*.rs') }}-${{ github.sha }}
fail-on-cache-miss: true
- name: Setup Pages
id: pages
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7f10f7df3d..9913d62e89 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -36,6 +36,7 @@ catalogs:
version: 0.2.0
overrides:
+ '@lynx-js/react': workspace:*
'@rspack/core': 2.0.3
'@rsbuild/core>@rspack/core': 2.0.3
'@rsdoctor/rspack-plugin>@rspack/core': 2.0.3
@@ -603,10 +604,10 @@ importers:
version: 0.9.1
'@lynx-js/lynx-ui':
specifier: ^3.133.0
- version: 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ version: 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
'@lynx-js/react':
- specifier: ^0.121.0
- version: 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ specifier: workspace:*
+ version: link:../react
'@openuidev/lang-core':
specifier: ^0.2.4
version: 0.2.4(@modelcontextprotocol/sdk@1.25.2(hono@4.12.12)(zod@3.25.76))(zod@3.25.76)
@@ -1303,7 +1304,7 @@ importers:
specifier: workspace:^
version: link:../plugin-qrcode
'@lynx-js/react':
- specifier: workspace:^
+ specifier: workspace:*
version: link:../../react
'@lynx-js/react-rsbuild-plugin':
specifier: workspace:^
@@ -4029,12 +4030,9 @@ packages:
'@lynx-js/gesture-runtime@2.1.1':
resolution: {integrity: sha512-zBDOHakuePjw5wPCButExNgcllyFPGqYzqP2CWCWcQaX4gqJmCmYeRKguihyxH6ma6ExxlH/J2x5CHD91ed3bQ==}
peerDependencies:
- '@lynx-js/react': '*'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
- '@lynx-js/internal-preact@10.29.1-20260424024911-12b794f':
- resolution: {integrity: sha512-MQ+xjPL2f1P9/eCAdkT2h9cJRXl1qqhSJDX9GkPETt3UAepLo5N+HbGB8Qr3IUzqGDWMr3Mj76my1P0pLkKVDg==}
-
'@lynx-js/internal-preact@10.29.1-20260519060144-e6da44c':
resolution: {integrity: sha512-h2pRrt5oLK9LT1NkjyprtzJij/AdZGvv3CN6B5edL4chixqvITbxoCSdYy667Hl6+uKOBuxmCNZoDddgRfcLnw==}
@@ -4047,161 +4045,161 @@ packages:
'@lynx-js/lynx-ui-button@3.133.0':
resolution: {integrity: sha512-JH/iD5TQawHgEweBQYmj+H5ELLNLtLbs3fCUdqvVTdsBOsg6sbUxohzFWCy0SXgvC99+GghGtKu95rD3Jadrzg==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-checkbox@3.133.0':
resolution: {integrity: sha512-iOYXrClq5ejiUeHMTIXteG63CXCMUAbSyapWgxxX568llrN+YM778tedopM5WmoCTmkuPYIYO7MEPUqRXyl3xg==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-common@3.133.0':
resolution: {integrity: sha512-gnSyc+RvqmsnOH8LJDT05O30KNFU4X0u1ymqukTeR/metW7sjKBO5mf3W7nJPSmyCtxcwU3qbnw6gV5MVB+p1Q==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-dialog@3.133.0':
resolution: {integrity: sha512-st5Pitj3qz5KUfDbpVWgI6TWQgRWUqK6l2mixphITgZaY517Hsoyj2yWOLmdqgv2pYby95ltdeB4jlA9CJJx5g==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-draggable@3.133.0':
resolution: {integrity: sha512-Qs74k+/1HGgxNtXWdAhTfuxBgydLemE4+MK4rzZJQLUgXxUAh/Cj6hEgvMwxSKbG3LTuzU/Mei2njg9oANzgMg==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-feed-list@3.133.0':
resolution: {integrity: sha512-8Q3pLVXxrcxiqR6fTFDm8z6yBHgiCQnVhblXA0ut75JnxSN7yhxFvkBWfifPZ0iHxorwQTM81KYvTXsKfCw8CQ==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-form@3.133.0':
resolution: {integrity: sha512-qye6w7sM/VJyFce324j7u5tHSXAjugkQ7BOJB9CMTUsMZ9LHVbslEq/nOzhKd8IjM96KUDdFAsPkgwNt05GQgg==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-input@3.133.0':
resolution: {integrity: sha512-adkpMXd/rYkmkEsXrcwwiiGw7kLDA4+h1qbVLfHlF2bIB9Tm40vUEKhmdQwSqMdNaNjV8Tt4+FB2TwDiXsMkhw==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-lazy-component@3.133.0':
resolution: {integrity: sha512-lH32PwEVnS3EBoz01G1tNygXwUjzitPwfWLRFXpN0SBiWsiZzlKDRUFftalbQR7ss/ydzMixYJqQeNbDAW6itA==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-list@3.133.0':
resolution: {integrity: sha512-U9pe2p7QrA+ULEJeRccu4qdcxVECpVel8aWHfx/g2SNDqEColE4sCVN+9QfYlE7G0FVJkASVaupJCHG9lrpb+g==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-overlay@3.133.0':
resolution: {integrity: sha512-wzkjF7XDUSJgQLgsKZk8iS5xMhIhxqZjGo0cZuHGXiLMuKedVhVklwEMF+4veOByHEK3C6JU8gkp36FuC4FqBg==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-popover@3.133.0':
resolution: {integrity: sha512-cwP9QXAur7bDKVhsK+BRjX/zTUruFi9gg/CeLZ/giCGIrAWCJTevQKa3Hj8nZ9H6uq+EkK8X4J18yELqODWEOQ==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-presence@3.133.0':
resolution: {integrity: sha512-SVcMrGn46JNbxegxj/mQO9cfKxO2aG5QwhxCCTo9/lDfGDT5WtPzlDLiDcJH8+7rpQLLVm0BLX1hcfoHKmlahg==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-radio-group@3.133.0':
resolution: {integrity: sha512-1Mq4BlpwRaNhoPRgsLtGU9dOIrjr7T4//KvsXFDh4pUfMmzgHSq2lWkuLTijLepJJlGyOELuISoNmK7CVej04g==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-scroll-view@3.133.0':
resolution: {integrity: sha512-M22qAdw+XrRNVw15b0TKSm+D+eLRmnd4LGT+FRnSQOR1LQwd0w6uZvqX14w+I9+mnVRYyGSl3lg76ycmFrm9MQ==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-sheet@3.133.0':
resolution: {integrity: sha512-OQHhjSgR7QXQV45lJ2fAgv0iaFE1v3ycoey9zZtoUltPipwxzvJi19OHJZCFGr8VnGdmiiMtrj1tsTQrhGPW7w==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-slider@3.133.0':
resolution: {integrity: sha512-KE9d1zH57f2uvxoZt0jisUqCrnUZ+buNyBD0EYNs62wRpkyuZg7kLeJ1DTzKiKA8+zlENL88x9kIB0kDABGcFA==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-sortable@3.133.0':
resolution: {integrity: sha512-6X+Gm5CeZQMTR0FRorpSb9sq6UHdsDcZpxqiNRYKdVPgBiSDoMci/Bp0HnV436Bi6ORg3ORv9JgDRQRFUijh1w==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-swipe-action@3.133.0':
resolution: {integrity: sha512-icz6xaY1XtGV32kisLiOprHULWj4q4p6SpASHtRYI2jHpXLO9rSueUvoOTQrieQ1kjBJqw8nRRAQp3rHfT2Q6Q==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-swiper@3.133.0':
resolution: {integrity: sha512-myXHkI7TYUvhxNV/ho4L4zu9/VgvNRYoA6w2w5MhtB4M31JLeoKxoBUJTFOHGgvRSU/Crj9FbWMUsTnsp7PZwA==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui-switch@3.133.0':
resolution: {integrity: sha512-PzNHscudM4+FYJKlQCBhHV6Lw40/yppu9AgIJzksT6oVhrge/gpf/ujzqpHWXIvX1BUk7/kx+AAovjjf3LRDpg==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/lynx-ui@3.133.0':
resolution: {integrity: sha512-IJwhaJU/sw1qgyJYbrgkTCPoH46JSbMfYok+b4e5fwr2rNxLb+aJdsnQ4ayUiXNmb+q9FizHf3YoxI3W6q2xSw==}
peerDependencies:
- '@lynx-js/react': '>=0.100.0'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
'@types/react': ^18
'@lynx-js/motion@0.0.3':
resolution: {integrity: sha512-Kujwj1grxFTPjwr3IEO4Qca5YRsoJCeTctsEaUcVFYC5Ekb52LuUavJicMqUuswzW/HrARpJw9npLSiTjfcwYQ==}
peerDependencies:
- '@lynx-js/react': '*'
+ '@lynx-js/react': workspace:*
'@lynx-js/types': '*'
peerDependenciesMeta:
'@lynx-js/types':
@@ -4213,16 +4211,7 @@ packages:
'@lynx-js/react-use@0.1.3':
resolution: {integrity: sha512-48NX1DZfIqdpcFPKR3SdI/E0D2INJzgMDtl9IK0vbqWKPgj6LgUPZN0iqIDd7Juy3in5c2bv6E9jCpoq5ONeVw==}
peerDependencies:
- '@lynx-js/react': '>=0.105.1'
-
- '@lynx-js/react@0.121.0':
- resolution: {integrity: sha512-V3/1+kRM7ugFZbhfldnPyJH65gZI06qa9E2/lGM8b+almHWzn+i9G1imMZiHROKlkOT495TauMOH4FiH1U47Fw==}
- peerDependencies:
- '@lynx-js/types': '*'
- '@types/react': ^18
- peerDependenciesMeta:
- '@lynx-js/types':
- optional: true
+ '@lynx-js/react': workspace:*
'@lynx-js/tasm@0.0.39':
resolution: {integrity: sha512-FNIV6Cc2K0wCKOHVMfpr3M6kpIZqHHNI02GpVl+h0ClyyK44jxEO+lf58gLFD5E3o0hJ1cp3H2OBIxSUJGkPDw==}
@@ -13734,35 +13723,17 @@ snapshots:
dependencies:
'@lukeed/csprng': 1.1.0
- '@lynx-js/gesture-runtime@2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)':
- dependencies:
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
- '@lynx-js/types': 3.7.0
-
'@lynx-js/gesture-runtime@2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)':
dependencies:
'@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
- '@lynx-js/internal-preact@10.29.1-20260424024911-12b794f': {}
-
'@lynx-js/internal-preact@10.29.1-20260519060144-e6da44c': {}
'@lynx-js/luna-styles@0.1.0': {}
'@lynx-js/lynx-core@0.1.3': {}
- '@lynx-js/lynx-ui-button@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
- dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
- '@lynx-js/types': 3.7.0
- '@types/react': 19.2.14
- clsx: 2.1.1
- transitivePeerDependencies:
- - react
- - react-dom
-
'@lynx-js/lynx-ui-button@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@18.3.28)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
@@ -13774,11 +13745,10 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-checkbox@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-button@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
clsx: 2.1.1
@@ -13798,13 +13768,14 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-common@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-checkbox@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
- '@lynx-js/react-use': 0.1.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
+ clsx: 2.1.1
transitivePeerDependencies:
- react
- react-dom
@@ -13820,16 +13791,13 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-dialog@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-common@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
+ '@lynx-js/react': link:packages/react
+ '@lynx-js/react-use': 0.1.3(@lynx-js/react@packages+react)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
- clsx: 2.1.1
transitivePeerDependencies:
- react
- react-dom
@@ -13848,13 +13816,16 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-draggable@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-dialog@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
- '@lynx-js/react-use': 0.1.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
+ clsx: 2.1.1
transitivePeerDependencies:
- react
- react-dom
@@ -13870,12 +13841,11 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-feed-list@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-draggable@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-list': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
+ '@lynx-js/react-use': 0.1.3(@lynx-js/react@packages+react)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -13894,15 +13864,12 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-form@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-feed-list@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-checkbox': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-input': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-radio-group': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-switch': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-list': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -13924,11 +13891,15 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-input@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-form@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-scroll-view': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-checkbox': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-input': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-radio-group': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-switch': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -13946,10 +13917,11 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-lazy-component@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-input@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-scroll-view': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -13966,11 +13938,10 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-list@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-lazy-component@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -13988,10 +13959,11 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-overlay@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-list@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -14008,16 +13980,12 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-popover@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-overlay@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
- clsx: 2.1.1
transitivePeerDependencies:
- react
- react-dom
@@ -14036,10 +14004,13 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-presence@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-popover@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
clsx: 2.1.1
@@ -14058,11 +14029,10 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-radio-group@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-presence@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
clsx: 2.1.1
@@ -14082,14 +14052,14 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-scroll-view@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-radio-group@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-lazy-component': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
+ clsx: 2.1.1
transitivePeerDependencies:
- react
- react-dom
@@ -14106,19 +14076,15 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-sheet@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-scroll-view@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-dialog': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/motion': 0.0.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-lazy-component': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
- clsx: 2.1.1
transitivePeerDependencies:
- - '@emotion/is-prop-valid'
- react
- react-dom
@@ -14138,13 +14104,19 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-slider@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-sheet@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-dialog': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-overlay': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/motion': 0.0.3(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
+ clsx: 2.1.1
transitivePeerDependencies:
+ - '@emotion/is-prop-valid'
- react
- react-dom
@@ -14158,11 +14130,10 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-sortable@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-slider@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-draggable': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -14180,11 +14151,11 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-swipe-action@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-sortable@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-draggable': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -14202,11 +14173,11 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-swiper@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-swipe-action@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
- '@lynx-js/react-use': 0.1.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/gesture-runtime': 2.1.1(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
transitivePeerDependencies:
@@ -14224,13 +14195,13 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui-switch@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ '@lynx-js/lynx-ui-swiper@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
+ '@lynx-js/react-use': 0.1.3(@lynx-js/react@packages+react)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
- clsx: 2.1.1
transitivePeerDependencies:
- react
- react-dom
@@ -14246,33 +14217,14 @@ snapshots:
- react
- react-dom
- '@lynx-js/lynx-ui@3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
- dependencies:
- '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-checkbox': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-dialog': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-draggable': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-feed-list': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-form': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-input': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-lazy-component': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-list': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-popover': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-radio-group': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-scroll-view': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-sheet': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-slider': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-sortable': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-swipe-action': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-swiper': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/lynx-ui-switch': 3.133.0(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
+ '@lynx-js/lynx-ui-switch@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
'@types/react': 19.2.14
+ clsx: 2.1.1
transitivePeerDependencies:
- - '@emotion/is-prop-valid'
- react
- react-dom
@@ -14306,14 +14258,31 @@ snapshots:
- react
- react-dom
- '@lynx-js/motion@0.0.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(@lynx-js/types@3.7.0)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
- dependencies:
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
- framer-motion: 12.34.1(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- motion-dom: 12.23.12
- motion-utils: 12.23.6
- optionalDependencies:
+ '@lynx-js/lynx-ui@3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
+ dependencies:
+ '@lynx-js/lynx-ui-button': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-checkbox': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-common': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-dialog': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-draggable': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-feed-list': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-form': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-input': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-lazy-component': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-list': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-popover': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-presence': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-radio-group': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-scroll-view': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-sheet': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-slider': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-sortable': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-swipe-action': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-swiper': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/lynx-ui-switch': 3.133.0(@lynx-js/react@packages+react)(@lynx-js/types@3.7.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
+ '@lynx-js/react': link:packages/react
'@lynx-js/types': 3.7.0
+ '@types/react': 19.2.14
transitivePeerDependencies:
- '@emotion/is-prop-valid'
- react
@@ -14337,16 +14306,6 @@ snapshots:
errorstacks: 2.4.1
htm: 3.1.1
- '@lynx-js/react-use@0.1.3(@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14))(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
- dependencies:
- '@lynx-js/react': 0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)
- immer: 10.1.1
- nanoid: 5.1.11
- react-use: 17.6.0(react-dom@19.2.4(react@19.2.5))(react@19.2.5)
- transitivePeerDependencies:
- - react
- - react-dom
-
'@lynx-js/react-use@0.1.3(@lynx-js/react@packages+react)(react-dom@19.2.4(react@19.2.5))(react@19.2.5)':
dependencies:
'@lynx-js/react': link:packages/react
@@ -14357,13 +14316,6 @@ snapshots:
- react
- react-dom
- '@lynx-js/react@0.121.0(@lynx-js/types@3.7.0)(@types/react@19.2.14)':
- dependencies:
- '@types/react': 19.2.14
- preact: '@lynx-js/internal-preact@10.29.1-20260424024911-12b794f'
- optionalDependencies:
- '@lynx-js/types': 3.7.0
-
'@lynx-js/tasm@0.0.39': {}
'@lynx-js/trace-processor@0.0.1':
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 640f7ef0bc..79cca9b678 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -70,6 +70,12 @@ catalogs:
"@rstest/core": "0.8.1"
overrides:
+ # Published @lynx-js/lynx-ui-* (pulled in by packages/genui/a2ui) peer-depend on
+ # @lynx-js/react@^0.121.0 and would otherwise drag a published @lynx-js/react copy
+ # into the workspace alongside the workspace one. Two copies = two snapshotManager
+ # singletons, which breaks ReactLynx snapshot registration ("BackgroundSnapshot not
+ # found"). Force every @lynx-js/react to the single workspace copy.
+ "@lynx-js/react": "workspace:*"
"@rspack/core": "$@rspack/core"
"@rsbuild/core>@rspack/core": "$@rspack/core"
"@rsdoctor/rspack-plugin>@rspack/core": "$@rspack/core"
From ddcb5b3cc251ca9b93f0f824a3f1a764f3b048dc Mon Sep 17 00:00:00 2001
From: BitterGourd <91231822+gaoachao@users.noreply.github.com>
Date: Thu, 28 May 2026 00:54:24 +0800
Subject: [PATCH 7/7] fix(genui): generate catalog before ui judge tests
---
.github/genui-tsconfig.instructions.md | 2 ++
packages/genui/cli/bin/cli.js | 7 +++++--
packages/genui/package.json | 7 +++++++
packages/genui/ui-judge/package.json | 4 +++-
pnpm-lock.yaml | 22 ++++++++++++++++++++++
5 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/.github/genui-tsconfig.instructions.md b/.github/genui-tsconfig.instructions.md
index 4d0be8dcb3..c76d5f6f6c 100644
--- a/.github/genui-tsconfig.instructions.md
+++ b/.github/genui-tsconfig.instructions.md
@@ -3,3 +3,5 @@ applyTo: "packages/genui/**/*"
---
When adding a new package under `packages/genui`, add a package-level `tsconfig.json` and wire it into `packages/genui/tsconfig.json` references in the same change. Root type-aware ESLint uses the TypeScript project service, so new GenUI source files that are not reachable from those references will fail pre-commit parsing before code linting even starts.
+
+When maintaining hand-written ESM CLI bin files under `packages/genui`, make entrypoint detection resolve `process.argv[1]` through `fs.realpathSync()` before comparing it with `import.meta.url`. pnpm `.bin` shims invoke workspace bins through symlink paths, and a raw path comparison can load the module without executing the CLI, making build scripts appear successful while generated artifacts are missing.
diff --git a/packages/genui/cli/bin/cli.js b/packages/genui/cli/bin/cli.js
index 00a55e0ae5..f6ecb62951 100755
--- a/packages/genui/cli/bin/cli.js
+++ b/packages/genui/cli/bin/cli.js
@@ -266,6 +266,9 @@ function printPackageVersion() {
}
function isMain(moduleUrl) {
- return process.argv[1] !== undefined
- && moduleUrl === pathToFileURL(process.argv[1]).href;
+ if (process.argv[1] === undefined) {
+ return false;
+ }
+
+ return moduleUrl === pathToFileURL(fs.realpathSync(process.argv[1])).href;
}
diff --git a/packages/genui/package.json b/packages/genui/package.json
index 3ea44b266a..593e6a8d2d 100644
--- a/packages/genui/package.json
+++ b/packages/genui/package.json
@@ -102,6 +102,13 @@
"typedoc": "^0.28.19",
"zod": "^3.25.76"
},
+ "devDependencies": {
+ "@lynx-js/genui-a2ui": "workspace:*",
+ "@lynx-js/genui-a2ui-catalog-extractor": "workspace:*",
+ "@lynx-js/genui-a2ui-prompt": "workspace:*",
+ "@lynx-js/genui-cli": "workspace:*",
+ "@lynx-js/genui-openui": "workspace:*"
+ },
"peerDependencies": {
"@lynx-js/lynx-ui": "^3.133.0",
"@lynx-js/react": "^0.121.0"
diff --git a/packages/genui/ui-judge/package.json b/packages/genui/ui-judge/package.json
index c40b9131c6..f875fe253b 100644
--- a/packages/genui/ui-judge/package.json
+++ b/packages/genui/ui-judge/package.json
@@ -20,7 +20,7 @@
],
"scripts": {
"build": "rslib build",
- "test": "playwright test"
+ "test": "pnpm --dir ../a2ui-catalog-extractor build && pnpm --dir ../a2ui build && playwright test"
},
"dependencies": {
"@lynx-js/genui": "workspace:*",
@@ -28,6 +28,8 @@
"@playwright/test": "^1.58.2"
},
"devDependencies": {
+ "@lynx-js/genui-a2ui": "workspace:*",
+ "@lynx-js/genui-a2ui-catalog-extractor": "workspace:*",
"@types/node": "^24.10.13"
},
"engines": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 66b53d26b2..9774801763 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -620,6 +620,22 @@ importers:
zod:
specifier: ^3.25.76
version: 3.25.76
+ devDependencies:
+ '@lynx-js/genui-a2ui':
+ specifier: workspace:*
+ version: link:a2ui
+ '@lynx-js/genui-a2ui-catalog-extractor':
+ specifier: workspace:*
+ version: link:a2ui-catalog-extractor
+ '@lynx-js/genui-a2ui-prompt':
+ specifier: workspace:*
+ version: link:a2ui-prompt
+ '@lynx-js/genui-cli':
+ specifier: workspace:*
+ version: link:cli
+ '@lynx-js/genui-openui':
+ specifier: workspace:*
+ version: link:openui
packages/genui/a2ui:
dependencies:
@@ -815,6 +831,12 @@ importers:
specifier: ^1.58.2
version: 1.58.2
devDependencies:
+ '@lynx-js/genui-a2ui':
+ specifier: workspace:*
+ version: link:../a2ui
+ '@lynx-js/genui-a2ui-catalog-extractor':
+ specifier: workspace:*
+ version: link:../a2ui-catalog-extractor
'@types/node':
specifier: ^24.10.13
version: 24.10.13