@actioneer/ads 0.2.4 → 0.3.1

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 (62) hide show
  1. package/components/ai-elements/chain-of-thought.d.ts +88 -6
  2. package/components/ai-elements/chain-of-thought.js +370 -107
  3. package/components/ai-elements/chart.d.ts +30 -0
  4. package/components/ai-elements/chart.js +303 -0
  5. package/components/ai-elements/index.d.ts +2 -0
  6. package/components/ai-elements/message.d.ts +12 -2
  7. package/components/ai-elements/message.js +133 -100
  8. package/components/ai-elements/research-activity.d.ts +62 -0
  9. package/components/ai-elements/research-activity.js +278 -0
  10. package/components/ai-elements/task.d.ts +7 -3
  11. package/components/ai-elements/task.js +84 -52
  12. package/components/ai-elements/tool.js +39 -35
  13. package/components/ai-elements/voice.d.ts +7 -1
  14. package/components/ai-elements/voice.js +234 -180
  15. package/components/alert.js +28 -16
  16. package/components/answer.d.ts +16 -0
  17. package/components/answer.js +273 -249
  18. package/components/assistant-ui/attachment.js +5 -1
  19. package/components/assistant-ui/composer-deep-research.js +44 -29
  20. package/components/assistant-ui/composer-harness.js +45 -27
  21. package/components/assistant-ui/composer.js +16 -16
  22. package/components/assistant-ui/index.d.ts +0 -1
  23. package/components/assistant-ui/message.d.ts +7 -0
  24. package/components/assistant-ui/message.js +36 -36
  25. package/components/assistant-ui/thread.js +1 -1
  26. package/components/brand-texture.d.ts +37 -0
  27. package/components/brand-texture.js +54 -0
  28. package/components/code-block.d.ts +42 -0
  29. package/components/code-block.js +235 -0
  30. package/components/drawer.d.ts +1 -1
  31. package/components/file-dropzone.d.ts +32 -0
  32. package/components/file-dropzone.js +134 -0
  33. package/components/index.d.ts +10 -0
  34. package/components/index.js +482 -433
  35. package/components/infinite-canvas.d.ts +50 -0
  36. package/components/infinite-canvas.js +215 -0
  37. package/components/page-header.d.ts +22 -0
  38. package/components/page-header.js +52 -0
  39. package/components/resizable-panel.d.ts +29 -0
  40. package/components/resizable-panel.js +102 -0
  41. package/components/reveal.d.ts +36 -0
  42. package/components/reveal.js +35 -0
  43. package/components/scroll-area.d.ts +19 -0
  44. package/components/scroll-area.js +57 -0
  45. package/components/setting-row.d.ts +35 -0
  46. package/components/setting-row.js +86 -0
  47. package/components/sidebar.js +131 -131
  48. package/components/stepper.d.ts +40 -0
  49. package/components/stepper.js +102 -0
  50. package/components/table.js +16 -15
  51. package/components/tabs.js +1 -1
  52. package/lib/icons.d.ts +12 -0
  53. package/lib/icons.js +98 -95
  54. package/lib/motion.d.ts +7 -3
  55. package/lib/motion.js +29 -27
  56. package/llms.txt +123 -28
  57. package/manifest.json +883 -68
  58. package/package.json +2 -2
  59. package/styles.css +179 -30
  60. package/theme.css +29 -17
  61. package/components/assistant-ui/smart-message-text.d.ts +0 -15
  62. package/components/assistant-ui/smart-message-text.js +0 -29
@@ -195,7 +195,11 @@ const V = (a) => {
195
195
  side: "top",
196
196
  children: /* @__PURE__ */ e(R, { className: "aui-attachment-remove-icon size-3 dark:stroke-[2.5px]" })
197
197
  }
198
- ) }), we = () => /* @__PURE__ */ e("div", { className: "aui-user-message-attachments-end col-span-full col-start-1 row-start-1 flex w-full flex-row justify-end gap-2", children: /* @__PURE__ */ e(M.Attachments, { children: () => /* @__PURE__ */ e(I, {}) }) }), Ce = () => /* @__PURE__ */ e("div", { className: "aui-composer-attachments flex w-full flex-row items-center gap-2 overflow-x-auto empty:hidden", children: /* @__PURE__ */ e(T.Attachments, { children: () => /* @__PURE__ */ e(I, {}) }) }), ke = () => /* @__PURE__ */ e(T.AddAttachment, { asChild: !0, children: /* @__PURE__ */ e(
198
+ ) }), we = () => (
199
+ // Sits under the request as its parameters, so it reads left-to-right
200
+ // with the question rather than trailing off the right edge.
201
+ /* @__PURE__ */ e("div", { className: "aui-user-message-attachments-end mt-2.5 flex w-full flex-row flex-wrap justify-start gap-2 empty:hidden", children: /* @__PURE__ */ e(M.Attachments, { children: () => /* @__PURE__ */ e(I, {}) }) })
202
+ ), Ce = () => /* @__PURE__ */ e("div", { className: "aui-composer-attachments flex w-full flex-row items-center gap-2 overflow-x-auto empty:hidden", children: /* @__PURE__ */ e(T.Attachments, { children: () => /* @__PURE__ */ e(I, {}) }) }), ke = () => /* @__PURE__ */ e(T.AddAttachment, { asChild: !0, children: /* @__PURE__ */ e(
199
203
  g,
200
204
  {
201
205
  tooltip: "Add Attachment",
@@ -1,38 +1,53 @@
1
1
  "use client";
2
- import { jsxs as s, jsx as o } from "react/jsx-runtime";
3
- import { createContext as i, useContext as u } from "react";
2
+ import { jsxs as s, jsx as r } from "react/jsx-runtime";
3
+ import { createContext as u, useContext as a } from "react";
4
4
  import { Telescope as c } from "../../lib/icons.js";
5
- import { cn as f } from "../../lib/cn.js";
6
- const t = i(null);
7
- function x({
8
- value: r,
5
+ import { cn as n } from "../../lib/cn.js";
6
+ const t = u(null);
7
+ function p({
8
+ value: o,
9
9
  children: e
10
10
  }) {
11
- return /* @__PURE__ */ o(t.Provider, { value: r, children: e });
11
+ return /* @__PURE__ */ r(t.Provider, { value: o, children: e });
12
12
  }
13
- function a() {
14
- const r = u(t);
15
- if (!r) return null;
16
- const { enabled: e, setEnabled: n } = r;
17
- return /* @__PURE__ */ s(
18
- "button",
19
- {
20
- type: "button",
21
- "aria-pressed": e,
22
- onClick: () => n(!e),
23
- className: f(
24
- "flex h-7 shrink-0 items-center gap-1.5 rounded-full px-2.5 text-xs font-medium outline-none transition-colors",
25
- "focus-visible:ring-3 focus-visible:ring-ring [&_svg]:size-4 [&_svg]:shrink-0",
26
- e ? "bg-info-50 text-info-700 hover:bg-info-100" : "text-muted-foreground hover:bg-muted-foreground/15 hover:text-foreground"
27
- ),
28
- children: [
29
- /* @__PURE__ */ o(c, {}),
30
- "Deep research"
31
- ]
32
- }
13
+ function x() {
14
+ const o = a(t);
15
+ if (!o) return null;
16
+ const { enabled: e, setEnabled: i } = o;
17
+ return (
18
+ // Toggle affordance: the trailing square state light says "this switches
19
+ // a mode on and off" — the counterpart to the harness menu's caret, so
20
+ // the trailing slot alone tells the reader how each pill interacts.
21
+ /* @__PURE__ */ s(
22
+ "button",
23
+ {
24
+ type: "button",
25
+ "aria-pressed": e,
26
+ onClick: () => i(!e),
27
+ className: n(
28
+ "flex h-7 shrink-0 items-center gap-1.5 rounded-full px-2.5 text-xs font-medium outline-none transition-colors",
29
+ "focus-visible:ring-3 focus-visible:ring-ring",
30
+ e ? "bg-info-50 text-info-700 hover:bg-info-100" : "text-muted-foreground hover:bg-muted-foreground/15 hover:text-foreground"
31
+ ),
32
+ children: [
33
+ /* @__PURE__ */ r(c, { className: "size-4 shrink-0" }),
34
+ "Deep research",
35
+ /* @__PURE__ */ r(
36
+ "span",
37
+ {
38
+ "aria-hidden": !0,
39
+ className: n(
40
+ "size-1.5 shrink-0 rounded-dot transition-colors duration-(--duration-fast) ease-out motion-reduce:transition-none",
41
+ e ? "bg-info-600" : "bg-muted-foreground/40"
42
+ )
43
+ }
44
+ )
45
+ ]
46
+ }
47
+ )
33
48
  );
34
49
  }
35
50
  export {
36
- a as ComposerDeepResearch,
37
- x as DeepResearchProvider
51
+ x as ComposerDeepResearch,
52
+ p as DeepResearchProvider
38
53
  };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  var c = Object.defineProperty;
3
- var l = (e, t, o) => t in e ? c(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o;
4
- var p = (e, t, o) => l(e, typeof t != "symbol" ? t + "" : t, o);
5
- import { jsxs as m, jsx as r } from "react/jsx-runtime";
3
+ var l = (r, t, o) => t in r ? c(r, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : r[t] = o;
4
+ var p = (r, t, o) => l(r, typeof t != "symbol" ? t + "" : t, o);
5
+ import { jsxs as m, jsx as e } from "react/jsx-runtime";
6
6
  import { useComposerRuntime as d, useComposer as u } from "@assistant-ui/react";
7
7
  import "clsx";
8
8
  import "tailwind-merge";
@@ -10,11 +10,18 @@ import "../../lib/interactive.js";
10
10
  import "radix-ui";
11
11
  import "../button.js";
12
12
  import "../spinner.js";
13
+ import "../reveal.js";
13
14
  import "../field.js";
14
15
  import "../typography.js";
15
16
  import "../link.js";
16
17
  import "../divider.js";
17
18
  import "../kbd.js";
19
+ import "../code-block.js";
20
+ import "../setting-row.js";
21
+ import "../file-dropzone.js";
22
+ import "../scroll-area.js";
23
+ import "../stepper.js";
24
+ import "../resizable-panel.js";
18
25
  import "../input.js";
19
26
  import "../input-field.js";
20
27
  import "../textarea.js";
@@ -29,17 +36,18 @@ import "../segmented.js";
29
36
  import "../modal.js";
30
37
  import "react";
31
38
  import "react-dom";
32
- import { Bolt as s, CheckList as f, Sparkles as h } from "../../lib/icons.js";
39
+ import { Bolt as a, ChevronDown as f, CheckList as h, Sparkles as g } from "../../lib/icons.js";
33
40
  import "../drawer.js";
34
41
  import "../popover.js";
35
42
  import "motion/react";
36
- import { Dropdown as g, DropdownTrigger as b, DropdownContent as v, DropdownLabel as x, DropdownItem as y } from "../dropdown.js";
43
+ import { Dropdown as b, DropdownTrigger as v, DropdownContent as y, DropdownLabel as x, DropdownItem as w } from "../dropdown.js";
37
44
  import "../toast.js";
38
45
  import "../answer.js";
39
46
  import "../card.js";
40
47
  import "../carousel.js";
41
48
  import "../chart.js";
42
49
  import "../connector-card.js";
50
+ import "../infinite-canvas.js";
43
51
  import "../table.js";
44
52
  import "../tabs.js";
45
53
  import "../tree.js";
@@ -50,10 +58,12 @@ import "../chip.js";
50
58
  import "../timeline.js";
51
59
  import "../alert.js";
52
60
  import "../pixel-blast-svg.js";
61
+ import "../brand-texture.js";
53
62
  import "../progress.js";
54
63
  import "../progress-circle.js";
55
64
  import "../skeleton.js";
56
65
  import "../empty-state.js";
66
+ import "../page-header.js";
57
67
  import "../navbar.js";
58
68
  import "../breadcrumbs.js";
59
69
  import "../pagination.js";
@@ -62,8 +72,10 @@ import "../panel.js";
62
72
  import "../collapsible.js";
63
73
  import "../selection-action-bar.js";
64
74
  import "../ai-elements/chain-of-thought.js";
75
+ import "../ai-elements/chart.js";
65
76
  import "../ai-elements/inline-citation.js";
66
77
  import "../ai-elements/message.js";
78
+ import "../ai-elements/research-activity.js";
67
79
  import "../ai-elements/shimmer.js";
68
80
  import "../ai-elements/task.js";
69
81
  import "../ai-elements/task-progress.js";
@@ -86,59 +98,65 @@ import "./file.js";
86
98
  import "./image.js";
87
99
  import "./markdown-text.js";
88
100
  import "./quote.js";
89
- import "./smart-message-text.js";
90
101
  import "./sources.js";
91
102
  import "./tool-fallback.js";
92
103
  import "./tool-group.js";
93
- const n = "application/x-actioneer-harness", w = [
104
+ const n = "application/x-actioneer-harness", S = [
94
105
  {
95
106
  id: "investigate",
96
107
  label: "Data investigation",
97
- icon: /* @__PURE__ */ r(s, {}),
108
+ icon: /* @__PURE__ */ e(a, {}),
98
109
  instructions: "Investigate the question against the available context. State the conclusion first, identify the relevant sources, and clearly separate verified facts from assumptions."
99
110
  },
100
111
  {
101
112
  id: "metric",
102
113
  label: "Metric analysis",
103
- icon: /* @__PURE__ */ r(f, {}),
114
+ icon: /* @__PURE__ */ e(h, {}),
104
115
  instructions: "Define the metric, grain, population, and time window before calculating. Call out comparisons, denominator changes, and any data-quality caveats."
105
116
  },
106
117
  {
107
118
  id: "brief",
108
119
  label: "Executive brief",
109
- icon: /* @__PURE__ */ r(h, {}),
120
+ icon: /* @__PURE__ */ e(g, {}),
110
121
  instructions: "Write a concise executive brief: lead with the decision or insight, use only decision-relevant evidence, and end with the recommended next action."
111
122
  }
112
123
  ];
113
- function ei() {
114
- const e = d(), t = u((i) => i.attachments), o = new Set(
124
+ function hi() {
125
+ const r = d(), t = u((i) => i.attachments), o = new Set(
115
126
  t.filter((i) => i.contentType === n).map((i) => i.name)
116
- ), a = (i) => {
117
- o.has(i.label) || e.addAttachment(
127
+ ), s = (i) => {
128
+ o.has(i.label) || r.addAttachment(
118
129
  new File([i.instructions], `${i.label}.harness`, { type: n })
119
130
  );
120
131
  };
121
- return /* @__PURE__ */ m(g, { children: [
122
- /* @__PURE__ */ r(b, { children: /* @__PURE__ */ m(
132
+ return /* @__PURE__ */ m(b, { children: [
133
+ /* @__PURE__ */ e(v, { children: /* @__PURE__ */ m(
123
134
  "button",
124
135
  {
125
136
  type: "button",
126
- className: "flex h-7 shrink-0 items-center gap-1.5 rounded-full px-2.5 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted-foreground/15 hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring [&_svg]:size-4 [&_svg]:shrink-0",
137
+ className: "group flex h-7 shrink-0 items-center gap-1.5 rounded-full px-2.5 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted-foreground/15 hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring",
127
138
  "aria-label": "Add harness",
128
139
  children: [
129
- /* @__PURE__ */ r(s, {}),
130
- "Add harness"
140
+ /* @__PURE__ */ e(a, { className: "size-4 shrink-0" }),
141
+ "Add harness",
142
+ /* @__PURE__ */ e(
143
+ f,
144
+ {
145
+ "aria-hidden": !0,
146
+ className: "size-3.5 shrink-0 opacity-60 transition-transform duration-(--duration-fast) ease-out group-data-[state=open]:rotate-180 motion-reduce:transition-none"
147
+ }
148
+ )
131
149
  ]
132
150
  }
133
151
  ) }),
134
- /* @__PURE__ */ m(v, { side: "top", align: "start", className: "w-56", autoFocusFirstItem: !1, children: [
135
- /* @__PURE__ */ r(x, { children: "Add a harness" }),
136
- w.map((i) => /* @__PURE__ */ r(
137
- y,
152
+ /* @__PURE__ */ m(y, { side: "top", align: "start", className: "w-56", autoFocusFirstItem: !1, children: [
153
+ /* @__PURE__ */ e(x, { children: "Add a harness" }),
154
+ S.map((i) => /* @__PURE__ */ e(
155
+ w,
138
156
  {
139
157
  startContent: i.icon,
140
158
  disabled: o.has(i.label),
141
- onSelect: () => a(i),
159
+ onSelect: () => s(i),
142
160
  children: i.label
143
161
  },
144
162
  i.id
@@ -146,7 +164,7 @@ function ei() {
146
164
  ] })
147
165
  ] });
148
166
  }
149
- class ri {
167
+ class gi {
150
168
  constructor() {
151
169
  p(this, "accept", n);
152
170
  }
@@ -179,7 +197,7 @@ ${o}
179
197
  }
180
198
  }
181
199
  export {
182
- ei as ComposerHarness,
200
+ hi as ComposerHarness,
183
201
  n as HARNESS_MIME,
184
- ri as HarnessAttachmentAdapter
202
+ gi as HarnessAttachmentAdapter
185
203
  };
@@ -18,7 +18,7 @@ function G(i) {
18
18
  Math.max(Q, i.length * O)
19
19
  );
20
20
  }
21
- function J(i, t, p, x, T) {
21
+ function J(i, t, p, b, T) {
22
22
  if (t <= 0 || i.length === 0)
23
23
  return p(i), { promise: Promise.resolve(), cancel: () => {
24
24
  } };
@@ -28,7 +28,7 @@ function J(i, t, p, x, T) {
28
28
  o = d;
29
29
  let y = performance.now(), h = null;
30
30
  const n = (c) => {
31
- if (x()) {
31
+ if (b()) {
32
32
  d();
33
33
  return;
34
34
  }
@@ -52,7 +52,7 @@ function J(i, t, p, x, T) {
52
52
  };
53
53
  }
54
54
  const W = () => {
55
- const { setText: i } = q(), t = l.useContext(k), [p, x] = l.useState(
55
+ const { setText: i } = q(), t = l.useContext(k), [p, b] = l.useState(
56
56
  (t == null ? void 0 : t[0]) ?? "Send a message…"
57
57
  ), [T, w] = l.useState(!1), v = l.useRef(null), [o, z] = l.useState(null), d = l.useRef(!1), y = l.useCallback((n) => {
58
58
  v.current = n, z(n);
@@ -87,36 +87,36 @@ const W = () => {
87
87
  }
88
88
  u();
89
89
  }
90
- }, b = (r) => {
90
+ }, x = (r) => {
91
91
  (r.metaKey || r.ctrlKey) && !r.altKey && r.key.toLowerCase() === "a" && (r.preventDefault(), o.select());
92
92
  };
93
- return a(), o.addEventListener("beforeinput", C), o.addEventListener("input", a), o.addEventListener("focus", g), o.addEventListener("blur", g), o.addEventListener("keydown", b), () => {
94
- window.clearTimeout(n), o.removeEventListener("beforeinput", C), o.removeEventListener("input", a), o.removeEventListener("focus", g), o.removeEventListener("blur", g), o.removeEventListener("keydown", b);
93
+ return a(), o.addEventListener("beforeinput", C), o.addEventListener("input", a), o.addEventListener("focus", g), o.addEventListener("blur", g), o.addEventListener("keydown", x), () => {
94
+ window.clearTimeout(n), o.removeEventListener("beforeinput", C), o.removeEventListener("input", a), o.removeEventListener("focus", g), o.removeEventListener("blur", g), o.removeEventListener("keydown", x);
95
95
  };
96
96
  }, [o, i]), l.useEffect(() => {
97
97
  var C;
98
98
  if (!(t != null && t.length)) {
99
- x("Send a message…");
99
+ b("Send a message…");
100
100
  return;
101
101
  }
102
102
  if ((C = window.matchMedia) != null && C.call(window, "(prefers-reduced-motion: reduce)").matches) {
103
- x(t[0]);
103
+ b(t[0]);
104
104
  return;
105
105
  }
106
106
  let n = !1, c = 0, a, u;
107
- const g = (b) => new Promise((r) => {
108
- a = window.setTimeout(r, b);
107
+ const g = (x) => new Promise((r) => {
108
+ a = window.setTimeout(r, x);
109
109
  }), E = () => n;
110
110
  return (async () => {
111
111
  for (; !n; ) {
112
112
  for (; d.current && !n; ) await g(100);
113
113
  if (n) return;
114
- const b = t[c];
115
- x("");
114
+ const x = t[c];
115
+ b("");
116
116
  const { promise: r, cancel: m } = J(
117
- b,
118
- G(b),
119
117
  x,
118
+ G(x),
119
+ b,
120
120
  E,
121
121
  () => d.current
122
122
  );
@@ -136,7 +136,7 @@ const W = () => {
136
136
  "div",
137
137
  {
138
138
  "aria-hidden": !0,
139
- className: "pointer-events-none absolute inset-x-2.5 top-1 z-0 flex min-h-8 items-start overflow-hidden text-base leading-8 text-muted-foreground/80 group-focus-within/input:hidden",
139
+ className: "pointer-events-none absolute inset-x-2.5 top-1 z-0 line-clamp-2 max-h-(--composer-placeholder-max-h) overflow-hidden text-base text-muted-foreground/80 group-focus-within/input:hidden",
140
140
  children: /* @__PURE__ */ e("span", { children: p })
141
141
  }
142
142
  ),
@@ -145,7 +145,7 @@ const W = () => {
145
145
  {
146
146
  ref: y,
147
147
  placeholder: t != null && t.length ? "" : p,
148
- className: "aui-composer-input caret-primary placeholder:text-muted-foreground/80 relative z-10 max-h-32 min-h-10 w-full resize-none bg-transparent px-2.5 py-1 text-base text-foreground outline-none",
148
+ className: "aui-composer-input caret-primary placeholder:text-muted-foreground/80 relative z-10 max-h-32 min-h-14 w-full resize-none bg-transparent px-2.5 py-1 text-base text-foreground outline-none",
149
149
  rows: 1,
150
150
  autoFocus: !0,
151
151
  enterKeyHint: "send",
@@ -18,7 +18,6 @@ export * from './image';
18
18
  export * from './markdown-text';
19
19
  export * from './message-timing';
20
20
  export * from './quote';
21
- export * from './smart-message-text';
22
21
  export * from './sources';
23
22
  export * from './tool-fallback';
24
23
  export * from './tool-group';
@@ -1,4 +1,11 @@
1
1
  import { FC } from 'react';
2
2
  export declare const ThreadMessage: FC;
3
3
  export declare const AssistantMessage: FC;
4
+ /**
5
+ * Local modification (ADS): the user turn is a request put forward for
6
+ * research, not a chat utterance — so it leads its turn full-width behind a
7
+ * leading rail, set as the heading the answer below answers. No bubble, no
8
+ * right-hand column. The attachments it carried (context, harness) sit
9
+ * beneath the question as its parameters.
10
+ */
4
11
  export declare const UserMessage: FC;
@@ -1,13 +1,13 @@
1
1
  "use client";
2
- import { jsxs as o, jsx as t } from "react/jsx-runtime";
2
+ import { jsxs as a, jsx as t } from "react/jsx-runtime";
3
3
  import { UserMessageAttachments as h } from "./attachment.js";
4
4
  import { AssistantActionBar as T, UserActionBar as x } from "./action-bar.js";
5
5
  import { BranchPicker as d } from "./branch-picker.js";
6
- import { EditComposer as b } from "./composer.js";
7
- import { MessageError as _ } from "./error.js";
8
- import { QuoteBlock as v } from "./quote.js";
9
- import { Reasoning as A, ReasoningRoot as y, ReasoningTrigger as w, ReasoningContent as R, ReasoningText as N } from "./reasoning.js";
10
- import { SmartMessageText as C } from "./smart-message-text.js";
6
+ import { EditComposer as v } from "./composer.js";
7
+ import { MessageError as b } from "./error.js";
8
+ import { QuoteBlock as A } from "./quote.js";
9
+ import { Reasoning as _, ReasoningRoot as y, ReasoningTrigger as w, ReasoningContent as R, ReasoningText as N } from "./reasoning.js";
10
+ import { MarkdownText as C } from "./markdown-text.js";
11
11
  import { ThreadComponentsContext as p } from "./thread-context.js";
12
12
  import { ToolFallback as k } from "./tool-fallback.js";
13
13
  import { ToolGroupRoot as B, ToolGroupTrigger as M, ToolGroupContent as G } from "./tool-group.js";
@@ -23,41 +23,41 @@ const H = I(
23
23
  fallbackIcon: O
24
24
  }
25
25
  ), nt = () => {
26
- const { AssistantMessage: a = z } = f(p), n = g((s) => s.message.role);
27
- return g((s) => s.message.composer.isEditing) ? /* @__PURE__ */ t(b, {}) : n === "user" ? /* @__PURE__ */ t(D, {}) : /* @__PURE__ */ t(a, {});
28
- }, z = () => {
26
+ const { AssistantMessage: o = q } = f(p), n = g((s) => s.message.role);
27
+ return g((s) => s.message.composer.isEditing) ? /* @__PURE__ */ t(v, {}) : n === "user" ? /* @__PURE__ */ t(z, {}) : /* @__PURE__ */ t(o, {});
28
+ }, q = () => {
29
29
  const {
30
- AssistantAvatar: a,
30
+ AssistantAvatar: o,
31
31
  ToolFallback: n = k,
32
- ToolGroup: l,
32
+ ToolGroup: u,
33
33
  ReasoningGroup: s,
34
34
  ChainOfThoughtGroup: m
35
35
  } = f(p);
36
- return /* @__PURE__ */ o(
36
+ return /* @__PURE__ */ a(
37
37
  i.Root,
38
38
  {
39
39
  "data-slot": "aui_assistant-message-root",
40
40
  "data-role": "assistant",
41
41
  className: c(
42
42
  "fade-in slide-in-from-bottom-1 animate-in relative -mb-7.5 pb-7.5 duration-(--duration-fast) [contain-intrinsic-size:auto_200px] [content-visibility:auto]",
43
- a && "grid grid-cols-[2rem_minmax(0,1fr)] items-start gap-x-2"
43
+ o && "grid grid-cols-[2rem_minmax(0,1fr)] items-start gap-x-2"
44
44
  ),
45
45
  children: [
46
- a && /* @__PURE__ */ t(
46
+ o && /* @__PURE__ */ t(
47
47
  "div",
48
48
  {
49
49
  "data-slot": "aui_assistant-message-avatar",
50
50
  className: "col-start-1 row-start-1 mt-0.5 flex size-8 items-center justify-center",
51
- children: /* @__PURE__ */ t(a, {})
51
+ children: /* @__PURE__ */ t(o, {})
52
52
  }
53
53
  ),
54
- /* @__PURE__ */ o(
54
+ /* @__PURE__ */ a(
55
55
  "div",
56
56
  {
57
57
  "data-slot": "aui_assistant-message-content",
58
58
  className: c(
59
59
  "text-foreground px-2 leading-relaxed wrap-break-word",
60
- a && "col-start-2 row-start-1"
60
+ o && "col-start-2 row-start-1"
61
61
  ),
62
62
  children: [
63
63
  /* @__PURE__ */ t(
@@ -73,7 +73,7 @@ const H = I(
73
73
  case "group-chainOfThought":
74
74
  return m ? /* @__PURE__ */ t(m, { group: e, children: r }) : /* @__PURE__ */ t("div", { "data-slot": "aui_chain-of-thought", children: r });
75
75
  case "group-tool":
76
- return l ? /* @__PURE__ */ t(l, { group: e, children: r }) : /* @__PURE__ */ o(B, { variant: "ghost", children: [
76
+ return u ? /* @__PURE__ */ t(u, { group: e, children: r }) : /* @__PURE__ */ a(B, { variant: "ghost", children: [
77
77
  /* @__PURE__ */ t(
78
78
  M,
79
79
  {
@@ -86,16 +86,16 @@ const H = I(
86
86
  case "group-reasoning": {
87
87
  if (s)
88
88
  return /* @__PURE__ */ t(s, { group: e, children: r });
89
- const u = e.status.type === "running";
90
- return /* @__PURE__ */ o(y, { streaming: u, children: [
91
- /* @__PURE__ */ t(w, { active: u }),
92
- /* @__PURE__ */ t(R, { "aria-busy": u, children: /* @__PURE__ */ t(N, { children: r }) })
89
+ const l = e.status.type === "running";
90
+ return /* @__PURE__ */ a(y, { streaming: l, children: [
91
+ /* @__PURE__ */ t(w, { active: l }),
92
+ /* @__PURE__ */ t(R, { "aria-busy": l, children: /* @__PURE__ */ t(N, { children: r }) })
93
93
  ] });
94
94
  }
95
95
  case "text":
96
96
  return /* @__PURE__ */ t(C, {});
97
97
  case "reasoning":
98
- return /* @__PURE__ */ t(A, { ...e });
98
+ return /* @__PURE__ */ t(_, { ...e });
99
99
  case "tool-call":
100
100
  return e.toolUI ?? /* @__PURE__ */ t(n, { ...e });
101
101
  case "data":
@@ -116,18 +116,18 @@ const H = I(
116
116
  }
117
117
  }
118
118
  ),
119
- /* @__PURE__ */ t(_, {})
119
+ /* @__PURE__ */ t(b, {})
120
120
  ]
121
121
  }
122
122
  ),
123
- /* @__PURE__ */ o(
123
+ /* @__PURE__ */ a(
124
124
  "div",
125
125
  {
126
126
  "data-slot": "aui_assistant-message-footer",
127
127
  className: c(
128
128
  "ms-2 flex items-center",
129
129
  "min-h-7.5 pt-1.5",
130
- a && "col-start-2 row-start-2"
130
+ o && "col-start-2 row-start-2"
131
131
  ),
132
132
  children: [
133
133
  /* @__PURE__ */ t(d, {}),
@@ -138,35 +138,35 @@ const H = I(
138
138
  ]
139
139
  }
140
140
  );
141
- }, D = () => /* @__PURE__ */ o(
141
+ }, z = () => /* @__PURE__ */ a(
142
142
  i.Root,
143
143
  {
144
144
  "data-slot": "aui_user-message-root",
145
- className: "fade-in slide-in-from-bottom-1 animate-in grid auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] content-start gap-y-2 px-2 duration-(--duration-fast) [contain-intrinsic-size:auto_200px] [content-visibility:auto] [&:where(>*)]:col-start-2",
145
+ className: "fade-in slide-in-from-bottom-1 animate-in flex w-full flex-col gap-2 px-2 duration-(--duration-fast) [contain-intrinsic-size:auto_200px] [content-visibility:auto]",
146
146
  "data-role": "user",
147
147
  children: [
148
- /* @__PURE__ */ t(h, {}),
149
- /* @__PURE__ */ o("div", { className: "aui-user-message-content-wrapper relative col-start-2 min-w-0", children: [
150
- /* @__PURE__ */ t("div", { className: "aui-user-message-content peer bg-muted text-foreground rounded-xl px-4 py-2 wrap-break-word empty:hidden", children: /* @__PURE__ */ t(
148
+ /* @__PURE__ */ a("div", { className: "aui-user-message-content-wrapper group/user-request relative min-w-0", children: [
149
+ /* @__PURE__ */ t("div", { className: "aui-user-message-content peer text-foreground text-xl leading-snug wrap-break-word empty:hidden", children: /* @__PURE__ */ t(
151
150
  i.Parts,
152
151
  {
153
- components: { Quote: v, Text: H }
152
+ components: { Quote: A, Text: H }
154
153
  }
155
154
  ) }),
156
- /* @__PURE__ */ t("div", { className: "aui-user-action-bar-wrapper absolute start-0 top-1/2 -translate-x-full -translate-y-1/2 pe-2 peer-empty:hidden rtl:translate-x-full", children: /* @__PURE__ */ t(x, {}) })
155
+ /* @__PURE__ */ t(h, {}),
156
+ /* @__PURE__ */ t("div", { className: "aui-user-action-bar-wrapper absolute end-0 top-0 opacity-0 transition-opacity duration-(--duration-fast) ease-out peer-empty:hidden group-hover/user-request:opacity-100 group-focus-within/user-request:opacity-100 motion-reduce:transition-none", children: /* @__PURE__ */ t(x, {}) })
157
157
  ] }),
158
158
  /* @__PURE__ */ t(
159
159
  d,
160
160
  {
161
161
  "data-slot": "aui_user-branch-picker",
162
- className: "col-span-full col-start-1 row-start-3 -me-1 justify-end"
162
+ className: "-ms-1 justify-start"
163
163
  }
164
164
  )
165
165
  ]
166
166
  }
167
167
  );
168
168
  export {
169
- z as AssistantMessage,
169
+ q as AssistantMessage,
170
170
  nt as ThreadMessage,
171
- D as UserMessage
171
+ z as UserMessage
172
172
  };
@@ -39,7 +39,7 @@ const F = ({
39
39
  "div",
40
40
  {
41
41
  "data-slot": "aui_message-group",
42
- className: "mb-14 flex flex-col gap-y-6 empty:hidden",
42
+ className: "mb-14 flex flex-col gap-y-8 empty:hidden",
43
43
  children: /* @__PURE__ */ o(e.Messages, { children: () => /* @__PURE__ */ o(u, {}) })
44
44
  }
45
45
  ),
@@ -0,0 +1,37 @@
1
+ import * as React from "react";
2
+ /**
3
+ * BrandTexture — the ambient halftone canvas behind welcome and hero
4
+ * surfaces: the growth-mark's triangle cells drifting as a quiet ink wash.
5
+ * It mounts with a radial bloom (centre → corners) and exits with a cloud
6
+ * lift (`lifted`): the field dissolves bottom-up while drifting upward, like
7
+ * cloud cover breaking. The layer is decorative — `aria-hidden`,
8
+ * `pointer-events-none`, absolutely positioned over a `relative` parent —
9
+ * and its rest opacity flows from `--chat-texture-opacity`.
10
+ *
11
+ * The WebGL canvas stays pixel-capped and pauses when hidden
12
+ * (PixelBlastSVG); pass `paused` to stop the clock explicitly — set it a
13
+ * beat AFTER `lifted` so the cloud stays alive while it rises. Reveal and
14
+ * lift respect reduced motion (fade only).
15
+ */
16
+ /** The tuned shader field itself — full-bleed, no wash chrome. */
17
+ export declare function BrandTextureField({ paused, speed, className, }: {
18
+ paused?: boolean;
19
+ /** Shader clock multiplier; 1.5 is the house drift. */
20
+ speed?: number;
21
+ className?: string;
22
+ }): React.JSX.Element;
23
+ export declare namespace BrandTextureField {
24
+ var displayName: string;
25
+ }
26
+ export interface BrandTextureProps extends React.HTMLAttributes<HTMLDivElement> {
27
+ /** Stops the shader clock (the canvas keeps its last frame). */
28
+ paused?: boolean;
29
+ /** Plays the cloud-lift exit — dissolve bottom→top, drift up, fade. */
30
+ lifted?: boolean;
31
+ /** Shader clock multiplier; 1.5 is the house drift. */
32
+ speed?: number;
33
+ }
34
+ export declare const BrandTexture: {
35
+ ({ paused, lifted, speed, className, ...props }: BrandTextureProps): React.JSX.Element;
36
+ displayName: string;
37
+ };