@superxd-studio/adptr 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GENERATIVE.md +1 -1
- package/README.md +20 -11
- package/REUSE.md +11 -1
- package/REVIEW.md +2 -2
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/chunks/{callout-DKMHSnjc.js → callout-B89MDU9m.js} +31 -35
- package/chunks/{canvas-BJ15-XxE.js → canvas-Dd78FPe0.js} +9 -9
- package/chunks/{text-field-BLtoaZFn.js → text-field-mMHllx03.js} +1 -1
- package/chunks/thinking-DlBmZsgc.js +13 -0
- package/chunks/{ui-9DyNsYXY.js → ui-WR0qTNm7.js} +309 -260
- package/generative/index.js +156 -155
- package/interactions/index.js +1073 -499
- package/package.json +2 -1
- package/source/components/icons.tsx +14 -0
- package/source/components/peek.tsx +113 -0
- package/source/components/thinking.tsx +13 -2
- package/source/reusable/generative/index.tsx +14 -9
- package/source/reusable/generative/vocabulary.tsx +4 -2
- package/source/reusable/interactions/context.tsx +4 -0
- package/source/reusable/interactions/copy.ts +39 -0
- package/source/reusable/interactions/gate.tsx +246 -0
- package/source/reusable/interactions/index.ts +14 -0
- package/source/reusable/interactions/presentation.tsx +4 -1
- package/source/reusable/interactions/progress.tsx +240 -0
- package/source/reusable/interactions/receipt.tsx +230 -0
- package/source/reusable/interactions/run.tsx +206 -0
- package/source/reusable/ui/index.ts +1 -0
- package/source/reusable/web/review/index.tsx +21 -10
- package/source/styles/library.css +56 -0
- package/styles.css +1 -1
- package/types/components/icons.d.ts +8 -0
- package/types/components/peek.d.ts +17 -0
- package/types/components/thinking.d.ts +3 -1
- package/types/reusable/interactions/context.d.ts +39 -0
- package/types/reusable/interactions/copy.d.ts +43 -0
- package/types/reusable/interactions/gate.d.ts +39 -0
- package/types/reusable/interactions/index.d.ts +8 -0
- package/types/reusable/interactions/progress.d.ts +45 -0
- package/types/reusable/interactions/receipt.d.ts +54 -0
- package/types/reusable/interactions/run.d.ts +83 -0
- package/types/reusable/ui/index.d.ts +1 -0
- package/ui/index.js +3 -3
- package/web/index.js +350 -353
package/GENERATIVE.md
CHANGED
|
@@ -14,7 +14,7 @@ Names and counts come from the registered examples, not hard-coded badges. Domai
|
|
|
14
14
|
|
|
15
15
|
## Public API
|
|
16
16
|
|
|
17
|
-
Install the local `@superxd-studio/adptr` 0.
|
|
17
|
+
Install the local `@superxd-studio/adptr` 0.6.0 artifact and the optional Generative peer. This entry is independent of a conversation runtime, although the upstream package requires its compatible React peer packages. Other library entries do not import this renderer.
|
|
18
18
|
|
|
19
19
|
```tsx
|
|
20
20
|
import { StructuredResponse, type GenerativeActions } from "@superxd-studio/adptr/generative";
|
package/README.md
CHANGED
|
@@ -2,13 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
React components and finished product flows by [SuperXD](https://superxd.app): conversation, review and AI-assisted work, with every state designed. They're accessible by default (built on React Aria) and restyled from one set of theme tokens.
|
|
4
4
|
|
|
5
|
+
## What's new in 0.6.0
|
|
6
|
+
|
|
7
|
+
- **Peek** opens a focused preview without leaving the current view.
|
|
8
|
+
- **Run timeline** shows the steps, messages and progress of AI-assisted work.
|
|
9
|
+
- **Decision Gate** asks for an explicit decision before an action proceeds.
|
|
10
|
+
- **Action Receipt** shows what happened after an action, and **Task Progress** shows where a task stands. Both also have catalogue blocks.
|
|
11
|
+
- The **Status** foundation brings consistent words and visual treatments to these states.
|
|
12
|
+
- Two new source recipes, **Decision Gate** and **Agent task**, connect these parts into complete flows. They are separate catalogue downloads; your app supplies the actual service and action execution.
|
|
13
|
+
|
|
5
14
|
## Install
|
|
6
15
|
|
|
7
16
|
```sh
|
|
8
17
|
npm install @superxd-studio/adptr
|
|
9
18
|
```
|
|
10
19
|
|
|
11
|
-
ADPTR needs React and React DOM 19.3 or later within React 19.
|
|
20
|
+
ADPTR needs matching React and React DOM versions: 19.3 or later within React 19. Run the install command in your app’s folder, then import the shared styles once. Source recipes in the catalogue are separate downloads with their own setup instructions.
|
|
12
21
|
|
|
13
22
|
## Use
|
|
14
23
|
|
|
@@ -28,16 +37,16 @@ The interactive entry points are marked for React Server Components, so they wor
|
|
|
28
37
|
|
|
29
38
|
## What's inside
|
|
30
39
|
|
|
31
|
-
| Entry | What it's for
|
|
32
|
-
| ------------------------------------ |
|
|
33
|
-
| `@superxd-studio/adptr/ui` | Buttons, fields, choices, menus, dialogs and the other shared components
|
|
34
|
-
| `@superxd-studio/adptr/web` | Conversation (`Chat`) and draft review (`DraftReview`)
|
|
35
|
-
| `@superxd-studio/adptr/core` | Framework-free controllers for conversations and reviews, safe on a server
|
|
36
|
-
| `@superxd-studio/adptr/custom` | Connect a conversation to your own HTTP endpoint
|
|
37
|
-
| `@superxd-studio/adptr/generative` | Structured responses: cards, forms, charts and tables an assistant can propose
|
|
38
|
-
| `@superxd-studio/adptr/interactions` |
|
|
39
|
-
| `@superxd-studio/adptr/styles.css` | Component styles and theme tokens (no fonts)
|
|
40
|
-
| `@superxd-studio/adptr/fonts.css` | Optional fonts: Instrument Sans and IBM Plex Mono
|
|
40
|
+
| Entry | What it's for |
|
|
41
|
+
| ------------------------------------ | ---------------------------------------------------------------------------------------------- |
|
|
42
|
+
| `@superxd-studio/adptr/ui` | Buttons, fields, choices, menus, dialogs and the other shared components |
|
|
43
|
+
| `@superxd-studio/adptr/web` | Conversation (`Chat`) and draft review (`DraftReview`) |
|
|
44
|
+
| `@superxd-studio/adptr/core` | Framework-free controllers for conversations and reviews, safe on a server |
|
|
45
|
+
| `@superxd-studio/adptr/custom` | Connect a conversation to your own HTTP endpoint |
|
|
46
|
+
| `@superxd-studio/adptr/generative` | Structured responses: cards, forms, charts and tables an assistant can propose |
|
|
47
|
+
| `@superxd-studio/adptr/interactions` | Decision gates, run timelines, receipts, task progress, plans, artifacts, history and feedback |
|
|
48
|
+
| `@superxd-studio/adptr/styles.css` | Component styles and theme tokens (no fonts) |
|
|
49
|
+
| `@superxd-studio/adptr/fonts.css` | Optional fonts: Instrument Sans and IBM Plex Mono |
|
|
41
50
|
|
|
42
51
|
Optional integrations for assistant-ui, the AI SDK and LangGraph live in `assistant-ui`, `ai-sdk` and `langgraph-review`; install those libraries only if you use them.
|
|
43
52
|
|
package/REUSE.md
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
# Reuse the conversation and attachments
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
ADPTR exports a controlled React conversation, a platform-neutral controller and a customer-owned HTTP adapter. The optional assistant-ui integration uses the **same Chat component**, with that runtime owning state. Version 0.6.0 includes conversation, draft review, supplied-data Generative components and the Decision Gate interaction components. Coverage remains limited to the documented public APIs; not every catalogue item is part of the npm package.
|
|
4
4
|
|
|
5
5
|
The visitor library collects these examples in **Blocks → Conversation**, at `/site/#/b/conversation`. Its simulated demo runs without a server; the connected examples below use the local HTTP and AI SDK example servers. Old `/site/#/reusable` links redirect to this block. The integration workbench at `/#/reusable` still includes the optional runtime comparisons.
|
|
6
6
|
|
|
7
|
+
## Install from npm
|
|
8
|
+
|
|
9
|
+
In your React application's folder:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm install @superxd-studio/adptr
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Use matching React and React DOM versions: 19.3 or later within React 19. Import `@superxd-studio/adptr/styles.css` once at the app root. The package is public under MIT; the repository remains private. See the package README for entry points and a first component example. Source recipes are separate downloads with their own setup instructions.
|
|
16
|
+
|
|
7
17
|
## Run the independent consumer
|
|
8
18
|
|
|
9
19
|
From the library repository:
|
package/REVIEW.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Reusable review and approval
|
|
2
2
|
|
|
3
|
-
Local package version **0.
|
|
3
|
+
Local package version **0.6.0**. This batch implements draft review on web: proposed-change cards, a decision panel and a complete flow. It preserves the approved warm foundations. It does not connect to a model, send emails or apply changes to a real document.
|
|
4
4
|
|
|
5
5
|
## Install and compose
|
|
6
6
|
|
|
7
|
-
Install the downloaded `superxd-studio-adptr-0.
|
|
7
|
+
Install the downloaded `superxd-studio-adptr-0.6.0.tgz` with npm. React 19 is a peer. React Aria supplies keyboard and focus behaviour. The web entry does not require LangGraph or assistant-ui.
|
|
8
8
|
|
|
9
9
|
```tsx
|
|
10
10
|
import { useState } from "react";
|
package/THIRD-PARTY-NOTICES.md
CHANGED
|
@@ -11,7 +11,7 @@ SuperXD-owned library source is MIT. This does not relicense third-party depende
|
|
|
11
11
|
| assistant-ui | React 0.15.22 optional peer (the optional bridge); the earlier prototype's core and Markdown packages were removed | MIT package notices; `licenses/assistant-ui.txt`; optional bridge imports stable APIs; replacement is another snapshot/actions integration |
|
|
12
12
|
| AI SDK | ai 7.0.126 optional peer; its pinned provider-utils/provider/gateway dependencies stay within that package | Apache-2.0; upstream copyright in `licenses/ai-sdk.txt`; imports isolated in the optional SDK entry and executable server. Default transport/message-stream APIs are stable. Replacement is another `ChatAdapter`, without changing `Chat`. |
|
|
13
13
|
| React / React DOM | 19.3.x peers | MIT; packages retain their notices |
|
|
14
|
-
| React Aria components
|
|
14
|
+
| React Aria components/hooks | react-aria-components 1.21.1 / react-aria 3.52.1 web dependencies | Apache-2.0; package retains full notice; maintained web accessibility primitive |
|
|
15
15
|
| react-markdown / remark-gfm | 10.1.0 / 4.0.1 web dependencies | MIT; notices in `licenses/react-markdown.txt` and `licenses/remark-gfm.txt`. Established CommonMark/GFM parsing, external package dependencies rather than copied implementations. No raw-HTML plugins or upstream global styles. |
|
|
16
16
|
| clsx / tailwind-merge | 2.1.1 / 3.7.x | MIT; original package notices retained by npm |
|
|
17
17
|
| AI Elements | audited source `6a9d5b1822ffb10bba4bd97175f01edd7d8651cd` | Apache-2.0; reference only in M1–M2b. Any adapted file in later batches must retain its original licence/notice and changed-file attribution |
|
|
@@ -131,9 +131,7 @@ var _ = u("ArrowDown", /* @__PURE__ */ o("path", { d: "m5 12 7 7 7-7M12 5v14" })
|
|
|
131
131
|
width: "13",
|
|
132
132
|
height: "13",
|
|
133
133
|
rx: "2"
|
|
134
|
-
}), /* @__PURE__ */ o("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })] })), b = u("Edit", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L9 17l-4 1 1-4Z" }), /* @__PURE__ */ o("path", { d: "m15 5 3 3" })] })), x = u("Check", /* @__PURE__ */ o("path", { d: "M20 6 9 17l-5-5" })), S = u("X", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M18 6 6 18" }), /* @__PURE__ */ o("path", { d: "m6 6 12 12" })] })),
|
|
135
|
-
u("ArrowLeft", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "m12 19-7-7 7-7" }), /* @__PURE__ */ o("path", { d: "M19 12H5" })] }));
|
|
136
|
-
var T = u("Info", /* @__PURE__ */ s(a, { children: [
|
|
134
|
+
}), /* @__PURE__ */ o("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })] })), b = u("Edit", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L9 17l-4 1 1-4Z" }), /* @__PURE__ */ o("path", { d: "m15 5 3 3" })] })), x = u("Check", /* @__PURE__ */ o("path", { d: "M20 6 9 17l-5-5" })), S = u("BookOpen", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M12 7v14" }), /* @__PURE__ */ o("path", { d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z" })] })), C = u("Terminal", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M12 19h8" }), /* @__PURE__ */ o("path", { d: "m4 17 6-6-6-6" })] })), w = u("X", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M18 6 6 18" }), /* @__PURE__ */ o("path", { d: "m6 6 12 12" })] })), T = u("Paperclip", /* @__PURE__ */ o("path", { d: "m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.9-9.9a4 4 0 0 1 5.66 5.66l-9.9 9.9a2 2 0 0 1-2.83-2.83l9.2-9.19" })), E = u("File", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z" }), /* @__PURE__ */ o("path", { d: "M14 2v6h6M8 13h8M8 17h5" })] })), D = u("ArrowLeft", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "m12 19-7-7 7-7" }), /* @__PURE__ */ o("path", { d: "M19 12H5" })] })), O = u("Info", /* @__PURE__ */ s(a, { children: [
|
|
137
135
|
/* @__PURE__ */ o("circle", {
|
|
138
136
|
cx: "12",
|
|
139
137
|
cy: "12",
|
|
@@ -141,15 +139,15 @@ var T = u("Info", /* @__PURE__ */ s(a, { children: [
|
|
|
141
139
|
}),
|
|
142
140
|
/* @__PURE__ */ o("path", { d: "M12 16v-4" }),
|
|
143
141
|
/* @__PURE__ */ o("path", { d: "M12 8h.01" })
|
|
144
|
-
] })),
|
|
142
|
+
] })), k = u("Alert", /* @__PURE__ */ s(a, { children: [
|
|
145
143
|
/* @__PURE__ */ o("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
|
|
146
144
|
/* @__PURE__ */ o("path", { d: "M12 9v4" }),
|
|
147
145
|
/* @__PURE__ */ o("path", { d: "M12 17h.01" })
|
|
148
|
-
] })),
|
|
146
|
+
] })), A = u("CircleCheck", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("circle", {
|
|
149
147
|
cx: "12",
|
|
150
148
|
cy: "12",
|
|
151
149
|
r: "10"
|
|
152
|
-
}), /* @__PURE__ */ o("path", { d: "m9 12 2 2 4-4" })] })),
|
|
150
|
+
}), /* @__PURE__ */ o("path", { d: "m9 12 2 2 4-4" })] })), j = u("CircleAlert", /* @__PURE__ */ s(a, { children: [
|
|
153
151
|
/* @__PURE__ */ o("circle", {
|
|
154
152
|
cx: "12",
|
|
155
153
|
cy: "12",
|
|
@@ -157,22 +155,20 @@ var T = u("Info", /* @__PURE__ */ s(a, { children: [
|
|
|
157
155
|
}),
|
|
158
156
|
/* @__PURE__ */ o("path", { d: "M12 8v4" }),
|
|
159
157
|
/* @__PURE__ */ o("path", { d: "M12 16h.01" })
|
|
160
|
-
] }))
|
|
161
|
-
u("Hourglass", /* @__PURE__ */ s(a, { children: [
|
|
158
|
+
] })), M = u("Hourglass", /* @__PURE__ */ s(a, { children: [
|
|
162
159
|
/* @__PURE__ */ o("path", { d: "M5 22h14" }),
|
|
163
160
|
/* @__PURE__ */ o("path", { d: "M5 2h14" }),
|
|
164
161
|
/* @__PURE__ */ o("path", { d: "M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22" }),
|
|
165
162
|
/* @__PURE__ */ o("path", { d: "M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2" })
|
|
166
|
-
] }))
|
|
167
|
-
var k = u("MapPin", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" }), /* @__PURE__ */ o("circle", {
|
|
163
|
+
] })), N = u("MapPin", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" }), /* @__PURE__ */ o("circle", {
|
|
168
164
|
cx: "12",
|
|
169
165
|
cy: "10",
|
|
170
166
|
r: "3"
|
|
171
|
-
})] })),
|
|
167
|
+
})] })), P = u("Search", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("circle", {
|
|
172
168
|
cx: "11",
|
|
173
169
|
cy: "11",
|
|
174
170
|
r: "8"
|
|
175
|
-
}), /* @__PURE__ */ o("path", { d: "m21 21-4.3-4.3" })] })),
|
|
171
|
+
}), /* @__PURE__ */ o("path", { d: "m21 21-4.3-4.3" })] })), F = u("Rotate", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }), /* @__PURE__ */ o("path", { d: "M3 3v5h5" })] })), I = u("User", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" }), /* @__PURE__ */ o("circle", {
|
|
176
172
|
cx: "12",
|
|
177
173
|
cy: "7",
|
|
178
174
|
r: "4"
|
|
@@ -184,7 +180,7 @@ u("Mail", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("rect", {
|
|
|
184
180
|
y: "4",
|
|
185
181
|
rx: "2"
|
|
186
182
|
}), /* @__PURE__ */ o("path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7" })] })), u("Plus", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("path", { d: "M5 12h14" }), /* @__PURE__ */ o("path", { d: "M12 5v14" })] }));
|
|
187
|
-
var
|
|
183
|
+
var L = u("Sun", /* @__PURE__ */ s(a, { children: [
|
|
188
184
|
/* @__PURE__ */ o("circle", {
|
|
189
185
|
cx: "12",
|
|
190
186
|
cy: "12",
|
|
@@ -198,10 +194,10 @@ var N = u("Sun", /* @__PURE__ */ s(a, { children: [
|
|
|
198
194
|
/* @__PURE__ */ o("path", { d: "M20 12h2" }),
|
|
199
195
|
/* @__PURE__ */ o("path", { d: "m6.34 17.66-1.41 1.41" }),
|
|
200
196
|
/* @__PURE__ */ o("path", { d: "m19.07 4.93-1.41 1.41" })
|
|
201
|
-
] })),
|
|
197
|
+
] })), R = u("Moon", /* @__PURE__ */ o("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" }));
|
|
202
198
|
//#endregion
|
|
203
199
|
//#region src/components/spinner.tsx
|
|
204
|
-
function
|
|
200
|
+
function z({ className: e }) {
|
|
205
201
|
return /* @__PURE__ */ o("svg", {
|
|
206
202
|
viewBox: "0 0 24 24",
|
|
207
203
|
"aria-hidden": "true",
|
|
@@ -232,26 +228,26 @@ function F({ className: e }) {
|
|
|
232
228
|
}
|
|
233
229
|
//#endregion
|
|
234
230
|
//#region src/components/button.tsx
|
|
235
|
-
var
|
|
231
|
+
var B = "relative inline-flex select-none items-center justify-center gap-2 whitespace-nowrap rounded-control type-label outline-none press data-focus-visible:focus-ring data-disabled:cursor-not-allowed data-disabled:opacity-50 data-done:border-done! data-done:bg-done! data-done:text-on-done! data-done:shadow-none!", V = {
|
|
236
232
|
primary: "bg-brand text-on-brand shadow-control data-hovered:bg-brand-emphasis data-pressed:bg-brand-emphasis",
|
|
237
233
|
secondary: "border border-line bg-surface text-fg-emphasis shadow-control data-hovered:border-line-emphasis data-hovered:bg-surface-muted data-pressed:bg-surface-subtle",
|
|
238
234
|
ghost: "text-fg-emphasis data-hovered:bg-surface-subtle data-pressed:bg-surface-emphasis",
|
|
239
235
|
destructive: "bg-destructive text-on-destructive shadow-control data-hovered:bg-destructive/90 data-pressed:bg-destructive/85"
|
|
240
|
-
},
|
|
236
|
+
}, H = {
|
|
241
237
|
sm: "h-control-sm px-control-sm-x",
|
|
242
238
|
md: "h-control-md px-control-md-x",
|
|
243
239
|
lg: "h-control-lg px-control-lg-x",
|
|
244
240
|
"icon-sm": "size-control-sm",
|
|
245
241
|
"icon-md": "size-control-md"
|
|
246
242
|
};
|
|
247
|
-
function
|
|
248
|
-
return l(
|
|
243
|
+
function U({ variant: e = "secondary", size: t = "md", className: n } = {}) {
|
|
244
|
+
return l(B, V[e], H[t], n);
|
|
249
245
|
}
|
|
250
|
-
function
|
|
246
|
+
function W({ variant: t = "secondary", size: r = "md", pendingLabel: i, isDone: c = !1, doneLabel: l, className: u, children: d, ...f }) {
|
|
251
247
|
return /* @__PURE__ */ o(e, {
|
|
252
248
|
...f,
|
|
253
249
|
"data-done": c || void 0,
|
|
254
|
-
className: n(u, (e) =>
|
|
250
|
+
className: n(u, (e) => U({
|
|
255
251
|
variant: t,
|
|
256
252
|
size: r,
|
|
257
253
|
className: e
|
|
@@ -262,26 +258,26 @@ function B({ variant: t = "secondary", size: r = "md", pendingLabel: i, isDone:
|
|
|
262
258
|
}), /* @__PURE__ */ s("span", {
|
|
263
259
|
className: "absolute inset-0 flex animate-reveal-in items-center justify-center gap-2",
|
|
264
260
|
children: [/* @__PURE__ */ o(x, {}), l ?? e]
|
|
265
|
-
})] }) : t ? i ? /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o(
|
|
261
|
+
})] }) : t ? i ? /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o(z, {}), i] }) : /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("span", {
|
|
266
262
|
className: "invisible inline-flex items-center gap-2",
|
|
267
263
|
children: e
|
|
268
264
|
}), /* @__PURE__ */ o("span", {
|
|
269
265
|
className: "absolute inset-0 flex items-center justify-center",
|
|
270
|
-
children: /* @__PURE__ */ o(
|
|
266
|
+
children: /* @__PURE__ */ o(z, {})
|
|
271
267
|
})] }) : e)
|
|
272
268
|
});
|
|
273
269
|
}
|
|
274
|
-
function
|
|
270
|
+
function G({ variant: e = "secondary", size: r = "md", className: i, ...a }) {
|
|
275
271
|
return /* @__PURE__ */ o(t, {
|
|
276
272
|
...a,
|
|
277
|
-
className: n(i, (t) =>
|
|
273
|
+
className: n(i, (t) => U({
|
|
278
274
|
variant: e,
|
|
279
275
|
size: r,
|
|
280
276
|
className: t
|
|
281
277
|
}))
|
|
282
278
|
});
|
|
283
279
|
}
|
|
284
|
-
function
|
|
280
|
+
function K({ className: e, ...r }) {
|
|
285
281
|
return /* @__PURE__ */ o(t, {
|
|
286
282
|
...r,
|
|
287
283
|
className: n(e, (e) => l("cursor-pointer rounded-[2px] font-medium text-fg-emphasis underline decoration-line-emphasis underline-offset-[3px] transition-colors duration-(--duration-fast) outline-none data-focus-visible:focus-ring data-hovered:decoration-fg-emphasis", e))
|
|
@@ -289,30 +285,30 @@ function H({ className: e, ...r }) {
|
|
|
289
285
|
}
|
|
290
286
|
//#endregion
|
|
291
287
|
//#region src/components/callout.tsx
|
|
292
|
-
var
|
|
288
|
+
var q = {
|
|
293
289
|
neutral: {
|
|
294
290
|
box: "border-line-subtle bg-surface-muted text-fg",
|
|
295
|
-
icon: /* @__PURE__ */ o(
|
|
291
|
+
icon: /* @__PURE__ */ o(O, { className: "text-fg-subtle" })
|
|
296
292
|
},
|
|
297
293
|
info: {
|
|
298
294
|
box: "border-info-line bg-info-subtle text-info",
|
|
299
|
-
icon: /* @__PURE__ */ o(
|
|
295
|
+
icon: /* @__PURE__ */ o(O, {})
|
|
300
296
|
},
|
|
301
297
|
success: {
|
|
302
298
|
box: "border-success-line bg-success-subtle text-success",
|
|
303
|
-
icon: /* @__PURE__ */ o(
|
|
299
|
+
icon: /* @__PURE__ */ o(A, {})
|
|
304
300
|
},
|
|
305
301
|
attention: {
|
|
306
302
|
box: "border-attention-line bg-attention-subtle text-attention",
|
|
307
|
-
icon: /* @__PURE__ */ o(
|
|
303
|
+
icon: /* @__PURE__ */ o(k, {})
|
|
308
304
|
},
|
|
309
305
|
error: {
|
|
310
306
|
box: "border-error-line bg-error-subtle text-error",
|
|
311
|
-
icon: /* @__PURE__ */ o(
|
|
307
|
+
icon: /* @__PURE__ */ o(j, {})
|
|
312
308
|
}
|
|
313
309
|
};
|
|
314
|
-
function
|
|
315
|
-
let u =
|
|
310
|
+
function J({ tone: e = "neutral", title: t, children: n, actions: r, icon: i, live: a, className: c }) {
|
|
311
|
+
let u = q[e];
|
|
316
312
|
return /* @__PURE__ */ s("div", {
|
|
317
313
|
role: a === "assertive" ? "alert" : a === "polite" ? "status" : void 0,
|
|
318
314
|
className: l("flex gap-2.5 rounded-control border px-control-md-x py-control-y type-body", u.box, c),
|
|
@@ -339,4 +335,4 @@ function W({ tone: e = "neutral", title: t, children: n, actions: r, icon: i, li
|
|
|
339
335
|
});
|
|
340
336
|
}
|
|
341
337
|
//#endregion
|
|
342
|
-
export { A as C,
|
|
338
|
+
export { C as A, N as C, P as D, F as E, w as M, l as N, v as O, M as S, T, j as _, U as a, b, _ as c, S as d, f, m as g, p as h, K as i, I as j, L as k, D as l, h as m, W as n, z as o, x as p, G as r, k as s, J as t, g as u, d as v, R as w, E as x, y };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { N as e, g as t, h as n, n as r, p as i, y as a } from "./callout-B89MDU9m.js";
|
|
2
2
|
import { Children as o, cloneElement as s, createContext as c, isValidElement as l, useContext as u, useEffect as d, useId as f, useLayoutEffect as p, useMemo as m, useRef as h, useState as g } from "react";
|
|
3
3
|
import { Label as _, Link as v, TextArea as y, TextField as b } from "react-aria-components";
|
|
4
4
|
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
@@ -70,7 +70,7 @@ function D({ fresh: e = 2 } = {}) {
|
|
|
70
70
|
}
|
|
71
71
|
//#endregion
|
|
72
72
|
//#region src/reusable/web/message/index.tsx
|
|
73
|
-
function O({ text: e, label: t, iconOnly:
|
|
73
|
+
function O({ text: e, label: t, iconOnly: n = !1, isDisabled: o, copy: s = T, writeText: c }) {
|
|
74
74
|
let [l, u] = g({
|
|
75
75
|
text: e,
|
|
76
76
|
phase: "idle"
|
|
@@ -111,11 +111,11 @@ function O({ text: e, label: t, iconOnly: i = !1, isDisabled: o, copy: s = T, wr
|
|
|
111
111
|
className: "flex min-w-0 flex-wrap items-center gap-2",
|
|
112
112
|
children: [/* @__PURE__ */ S(r, {
|
|
113
113
|
variant: "ghost",
|
|
114
|
-
size:
|
|
114
|
+
size: n ? "icon-sm" : "sm",
|
|
115
115
|
"aria-label": v,
|
|
116
116
|
isDisabled: o || !e || m === "pending",
|
|
117
117
|
onPress: _,
|
|
118
|
-
children: [x(m === "copied" ?
|
|
118
|
+
children: [x(m === "copied" ? i : a, {}), n ? null : v]
|
|
119
119
|
}), /* @__PURE__ */ x("span", {
|
|
120
120
|
role: "status",
|
|
121
121
|
"aria-live": "polite",
|
|
@@ -223,7 +223,7 @@ function M(e) {
|
|
|
223
223
|
streamingTail: !0
|
|
224
224
|
});
|
|
225
225
|
}
|
|
226
|
-
function N({ branch: e, isDisabled:
|
|
226
|
+
function N({ branch: e, isDisabled: i, onPrevious: a, onNext: o, copy: s = T }) {
|
|
227
227
|
return e.count < 2 ? null : /* @__PURE__ */ S("div", {
|
|
228
228
|
role: "group",
|
|
229
229
|
"aria-label": s.versions,
|
|
@@ -233,9 +233,9 @@ function N({ branch: e, isDisabled: n, onPrevious: a, onNext: o, copy: s = T })
|
|
|
233
233
|
size: "icon-sm",
|
|
234
234
|
variant: "ghost",
|
|
235
235
|
"aria-label": s.previous,
|
|
236
|
-
isDisabled:
|
|
236
|
+
isDisabled: i || e.index < 1,
|
|
237
237
|
onPress: a,
|
|
238
|
-
children: /* @__PURE__ */ x(
|
|
238
|
+
children: /* @__PURE__ */ x(n, {})
|
|
239
239
|
}) : null,
|
|
240
240
|
/* @__PURE__ */ S("span", {
|
|
241
241
|
"aria-label": `${s.version} ${e.index + 1} / ${e.count}`,
|
|
@@ -250,9 +250,9 @@ function N({ branch: e, isDisabled: n, onPrevious: a, onNext: o, copy: s = T })
|
|
|
250
250
|
size: "icon-sm",
|
|
251
251
|
variant: "ghost",
|
|
252
252
|
"aria-label": s.next,
|
|
253
|
-
isDisabled:
|
|
253
|
+
isDisabled: i || e.index >= e.count - 1,
|
|
254
254
|
onPress: o,
|
|
255
|
-
children: /* @__PURE__ */ x(
|
|
255
|
+
children: /* @__PURE__ */ x(t, {})
|
|
256
256
|
}) : null
|
|
257
257
|
]
|
|
258
258
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { N as e, _ as t } from "./callout-B89MDU9m.js";
|
|
2
2
|
import { FieldError as n, Input as r, Label as i, Text as a, TextArea as o, TextField as s } from "react-aria-components";
|
|
3
3
|
import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
4
4
|
//#region src/components/text-field.tsx
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { N as e } from "./callout-B89MDU9m.js";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/thinking.tsx
|
|
4
|
+
function n({ className: n, tone: r = "brand" }) {
|
|
5
|
+
return /* @__PURE__ */ t("span", {
|
|
6
|
+
"aria-hidden": "true",
|
|
7
|
+
"data-tone": r === "info" ? "info" : void 0,
|
|
8
|
+
className: e("thinking-matrix", n),
|
|
9
|
+
children: Array.from({ length: 9 }, (e, n) => /* @__PURE__ */ t("i", {}, n))
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { n as t };
|