@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.
Files changed (43) hide show
  1. package/GENERATIVE.md +1 -1
  2. package/README.md +20 -11
  3. package/REUSE.md +11 -1
  4. package/REVIEW.md +2 -2
  5. package/THIRD-PARTY-NOTICES.md +1 -1
  6. package/chunks/{callout-DKMHSnjc.js → callout-B89MDU9m.js} +31 -35
  7. package/chunks/{canvas-BJ15-XxE.js → canvas-Dd78FPe0.js} +9 -9
  8. package/chunks/{text-field-BLtoaZFn.js → text-field-mMHllx03.js} +1 -1
  9. package/chunks/thinking-DlBmZsgc.js +13 -0
  10. package/chunks/{ui-9DyNsYXY.js → ui-WR0qTNm7.js} +309 -260
  11. package/generative/index.js +156 -155
  12. package/interactions/index.js +1073 -499
  13. package/package.json +2 -1
  14. package/source/components/icons.tsx +14 -0
  15. package/source/components/peek.tsx +113 -0
  16. package/source/components/thinking.tsx +13 -2
  17. package/source/reusable/generative/index.tsx +14 -9
  18. package/source/reusable/generative/vocabulary.tsx +4 -2
  19. package/source/reusable/interactions/context.tsx +4 -0
  20. package/source/reusable/interactions/copy.ts +39 -0
  21. package/source/reusable/interactions/gate.tsx +246 -0
  22. package/source/reusable/interactions/index.ts +14 -0
  23. package/source/reusable/interactions/presentation.tsx +4 -1
  24. package/source/reusable/interactions/progress.tsx +240 -0
  25. package/source/reusable/interactions/receipt.tsx +230 -0
  26. package/source/reusable/interactions/run.tsx +206 -0
  27. package/source/reusable/ui/index.ts +1 -0
  28. package/source/reusable/web/review/index.tsx +21 -10
  29. package/source/styles/library.css +56 -0
  30. package/styles.css +1 -1
  31. package/types/components/icons.d.ts +8 -0
  32. package/types/components/peek.d.ts +17 -0
  33. package/types/components/thinking.d.ts +3 -1
  34. package/types/reusable/interactions/context.d.ts +39 -0
  35. package/types/reusable/interactions/copy.d.ts +43 -0
  36. package/types/reusable/interactions/gate.d.ts +39 -0
  37. package/types/reusable/interactions/index.d.ts +8 -0
  38. package/types/reusable/interactions/progress.d.ts +45 -0
  39. package/types/reusable/interactions/receipt.d.ts +54 -0
  40. package/types/reusable/interactions/run.d.ts +83 -0
  41. package/types/reusable/ui/index.d.ts +1 -0
  42. package/ui/index.js +3 -3
  43. 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.5.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.
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` | Supervised plans, artifact editing, saved conversations and feedback |
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
- This local artifact 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. This is the M1–M2b plus draft-review and supplied-data Generative local artifact (0.5.0), not the complete library release.
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.5.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.
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.5.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.
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";
@@ -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 | 1.21.1 web dependency | Apache-2.0; package retains full notice; maintained web accessibility primitive |
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" })] })), C = 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" })), w = 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" })] }));
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
- ] })), E = u("Alert", /* @__PURE__ */ s(a, { children: [
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
- ] })), D = u("CircleCheck", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("circle", {
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" })] })), O = u("CircleAlert", /* @__PURE__ */ s(a, { children: [
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
- })] })), A = u("Search", /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("circle", {
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" })] })), j = 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" })] })), M = 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", {
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 N = u("Sun", /* @__PURE__ */ s(a, { children: [
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
- ] })), P = u("Moon", /* @__PURE__ */ o("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" }));
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 F({ className: e }) {
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 I = "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!", L = {
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
- }, R = {
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 z({ variant: e = "secondary", size: t = "md", className: n } = {}) {
248
- return l(I, L[e], R[t], n);
243
+ function U({ variant: e = "secondary", size: t = "md", className: n } = {}) {
244
+ return l(B, V[e], H[t], n);
249
245
  }
250
- function B({ variant: t = "secondary", size: r = "md", pendingLabel: i, isDone: c = !1, doneLabel: l, className: u, children: d, ...f }) {
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) => z({
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(F, {}), i] }) : /* @__PURE__ */ s(a, { children: [/* @__PURE__ */ o("span", {
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(F, {})
266
+ children: /* @__PURE__ */ o(z, {})
271
267
  })] }) : e)
272
268
  });
273
269
  }
274
- function V({ variant: e = "secondary", size: r = "md", className: i, ...a }) {
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) => z({
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 H({ className: e, ...r }) {
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 U = {
288
+ var q = {
293
289
  neutral: {
294
290
  box: "border-line-subtle bg-surface-muted text-fg",
295
- icon: /* @__PURE__ */ o(T, { className: "text-fg-subtle" })
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(T, {})
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(D, {})
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(E, {})
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(O, {})
307
+ icon: /* @__PURE__ */ o(j, {})
312
308
  }
313
309
  };
314
- function W({ tone: e = "neutral", title: t, children: n, actions: r, icon: i, live: a, className: c }) {
315
- let u = U[e];
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, S as D, M as E, l as O, j as S, N as T, b as _, z as a, P as b, g as c, h as d, p as f, y as g, d as h, H as i, f as l, O as m, B as n, F as o, m as p, V as r, _ as s, W as t, x as u, w as v, v as w, C as x, k as y };
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 { O as e, f as t, g as n, n as r, p as i, u as a } from "./callout-DKMHSnjc.js";
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: i = !1, isDisabled: o, copy: s = T, writeText: c }) {
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: i ? "icon-sm" : "sm",
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" ? a : n, {}), i ? null : v]
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: n, onPrevious: a, onNext: o, copy: s = T }) {
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: n || e.index < 1,
236
+ isDisabled: i || e.index < 1,
237
237
  onPress: a,
238
- children: /* @__PURE__ */ x(t, {})
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: n || e.index >= e.count - 1,
253
+ isDisabled: i || e.index >= e.count - 1,
254
254
  onPress: o,
255
- children: /* @__PURE__ */ x(i, {})
255
+ children: /* @__PURE__ */ x(t, {})
256
256
  }) : null
257
257
  ]
258
258
  });
@@ -1,4 +1,4 @@
1
- import { O as e, m as t } from "./callout-DKMHSnjc.js";
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 };