@actioneer/ads 0.6.0 → 0.7.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 (112) hide show
  1. package/components/ai-elements/agent-trace.d.ts +2 -2
  2. package/components/ai-elements/agent-trace.js +163 -104
  3. package/components/ai-elements/chain-of-thought.d.ts +2 -2
  4. package/components/ai-elements/chain-of-thought.js +1 -1
  5. package/components/ai-elements/index.d.ts +0 -5
  6. package/components/ai-elements/inline-citation.js +1 -1
  7. package/components/alert.d.ts +6 -6
  8. package/components/alert.js +89 -53
  9. package/components/answer-sources.d.ts +2 -6
  10. package/components/answer-sources.js +58 -60
  11. package/components/answer.d.ts +5 -0
  12. package/components/answer.js +311 -271
  13. package/components/assistant-ui/composer-harness.js +15 -20
  14. package/components/assistant-ui/composer.d.ts +3 -1
  15. package/components/assistant-ui/composer.js +148 -144
  16. package/components/assistant-ui/index.d.ts +0 -3
  17. package/components/assistant-ui/thread-context.d.ts +3 -1
  18. package/components/assistant-ui/thread.js +50 -42
  19. package/components/avatar.js +42 -42
  20. package/components/badge.d.ts +5 -6
  21. package/components/badge.js +13 -76
  22. package/components/body-page-header.d.ts +15 -0
  23. package/components/body-page-header.js +24 -0
  24. package/components/brand-loader.d.ts +0 -3
  25. package/components/brand-loader.js +10 -32
  26. package/components/breadcrumbs.d.ts +0 -7
  27. package/components/breadcrumbs.js +54 -71
  28. package/components/button.d.ts +1 -1
  29. package/components/button.js +55 -49
  30. package/components/chart.js +298 -296
  31. package/components/chip.d.ts +13 -1
  32. package/components/chip.js +93 -80
  33. package/components/collection-header.d.ts +17 -0
  34. package/components/collection-header.js +31 -0
  35. package/components/connector-card.d.ts +6 -6
  36. package/components/connector-card.js +31 -32
  37. package/components/date-range-picker.d.ts +2 -1
  38. package/components/date-range-picker.js +158 -122
  39. package/components/drawer.d.ts +19 -3
  40. package/components/drawer.js +109 -100
  41. package/components/dropdown.d.ts +1 -2
  42. package/components/dropdown.js +88 -89
  43. package/components/field.js +39 -34
  44. package/components/file-dropzone.js +1 -1
  45. package/components/index.d.ts +4 -4
  46. package/components/index.js +499 -546
  47. package/components/infinite-canvas.js +24 -24
  48. package/components/input-field.d.ts +18 -3
  49. package/components/input-field.js +88 -72
  50. package/components/input.js +16 -15
  51. package/components/modal.d.ts +31 -3
  52. package/components/modal.js +243 -169
  53. package/components/number-field.js +45 -42
  54. package/components/page-body.d.ts +12 -0
  55. package/components/page-body.js +18 -0
  56. package/components/pagination.js +36 -36
  57. package/components/select.d.ts +21 -0
  58. package/components/select.js +189 -148
  59. package/components/setting-row.d.ts +6 -5
  60. package/components/setting-row.js +33 -32
  61. package/components/sidebar.d.ts +2 -0
  62. package/components/sidebar.js +165 -155
  63. package/components/skeleton.js +8 -7
  64. package/components/slider.js +1 -1
  65. package/components/surface-loader.d.ts +11 -0
  66. package/components/surface-loader.js +35 -0
  67. package/components/table.d.ts +16 -10
  68. package/components/table.js +426 -410
  69. package/components/tabs.d.ts +2 -0
  70. package/components/tabs.js +159 -294
  71. package/components/textarea.js +9 -9
  72. package/components/toast.d.ts +1 -1
  73. package/components/toast.js +181 -118
  74. package/components/tree.d.ts +5 -1
  75. package/components/tree.js +54 -49
  76. package/components/typography.d.ts +4 -4
  77. package/components/typography.js +13 -13
  78. package/components/ui/button.d.ts +1 -1
  79. package/components/ui/dialog.js +33 -33
  80. package/demo/components/add-to-artifact.js +6 -10
  81. package/lib/cn.js +11 -4
  82. package/lib/icons.d.ts +4 -0
  83. package/lib/icons.js +107 -106
  84. package/lib/interactive.d.ts +1 -1
  85. package/llms.txt +95 -152
  86. package/manifest.json +1628 -2729
  87. package/package.json +1 -2
  88. package/styles.css +347 -223
  89. package/theme.css +303 -177
  90. package/components/agent-icon.d.ts +0 -76
  91. package/components/agent-icon.js +0 -265
  92. package/components/ai-elements/queue.d.ts +0 -60
  93. package/components/ai-elements/queue.js +0 -193
  94. package/components/ai-elements/speech-input.d.ts +0 -16
  95. package/components/ai-elements/speech-input.js +0 -151
  96. package/components/ai-elements/task-progress.d.ts +0 -41
  97. package/components/ai-elements/task-progress.js +0 -224
  98. package/components/ai-elements/task.d.ts +0 -39
  99. package/components/ai-elements/task.js +0 -105
  100. package/components/ai-elements/voice.d.ts +0 -90
  101. package/components/ai-elements/voice.js +0 -496
  102. package/components/assistant-ui/follow-up-suggestions.d.ts +0 -11
  103. package/components/assistant-ui/follow-up-suggestions.js +0 -72
  104. package/components/assistant-ui/suggestions.d.ts +0 -7
  105. package/components/assistant-ui/suggestions.js +0 -19
  106. package/components/assistant-ui/voice.d.ts +0 -18
  107. package/components/link.d.ts +0 -14
  108. package/components/link.js +0 -72
  109. package/components/navbar.d.ts +0 -15
  110. package/components/navbar.js +0 -68
  111. package/components/pixel-icon.d.ts +0 -37
  112. package/components/pixel-icon.js +0 -859
@@ -1,11 +1,10 @@
1
1
  "use client";
2
2
  var c = Object.defineProperty;
3
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 n = (r, t, o) => l(r, typeof t != "symbol" ? t + "" : t, o);
5
- import { jsxs as p, jsx as e } from "react/jsx-runtime";
4
+ var p = (r, t, o) => l(r, typeof t != "symbol" ? t + "" : t, o);
5
+ import { jsxs as n, jsx as e } from "react/jsx-runtime";
6
6
  import { useComposerRuntime as d, useComposer as u } from "@assistant-ui/react";
7
- import "clsx";
8
- import "tailwind-merge";
7
+ import "../../lib/cn.js";
9
8
  import "../../lib/interactive.js";
10
9
  import "../ui/tooltip.js";
11
10
  import "../button.js";
@@ -13,7 +12,6 @@ import "../spinner.js";
13
12
  import "../reveal.js";
14
13
  import "../field.js";
15
14
  import "../typography.js";
16
- import "../link.js";
17
15
  import "../divider.js";
18
16
  import "../kbd.js";
19
17
  import "../code-block.js";
@@ -61,19 +59,20 @@ import "../badge.js";
61
59
  import "../chip.js";
62
60
  import "../timeline.js";
63
61
  import "../alert.js";
62
+ import "../surface-loader.js";
64
63
  import "../pixel-blast-svg.js";
65
- import "../pixel-icon.js";
66
- import "../agent-icon.js";
67
64
  import "../brand-texture.js";
68
65
  import "../progress.js";
69
66
  import "../progress-circle.js";
70
67
  import "../skeleton.js";
71
68
  import "../empty-state.js";
69
+ import "../body-page-header.js";
70
+ import "../collection-header.js";
72
71
  import "../page-header.js";
73
- import "../navbar.js";
74
72
  import "../breadcrumbs.js";
75
73
  import "../pagination.js";
76
74
  import "../sidebar.js";
75
+ import "../page-body.js";
77
76
  import "../panel.js";
78
77
  import "../collapsible.js";
79
78
  import "../selection-action-bar.js";
@@ -85,13 +84,9 @@ import "../ai-elements/inline-citation.js";
85
84
  import "../ai-elements/message.js";
86
85
  import "../ai-elements/research-activity.js";
87
86
  import "../ai-elements/shimmer.js";
88
- import "../ai-elements/task.js";
89
- import "../ai-elements/task-progress.js";
90
87
  import "../ai-elements/tool.js";
91
- import "../ai-elements/voice.js";
92
88
  import "./composer.js";
93
89
  import "./answer-tool-ui.js";
94
- import "./follow-up-suggestions.js";
95
90
  import "./message.js";
96
91
  import "./selection-toolbar.js";
97
92
  import "../ui/button.js";
@@ -131,7 +126,7 @@ const m = "application/x-actioneer-harness", S = [
131
126
  instructions: "Write a concise executive brief: lead with the decision or insight, use only decision-relevant evidence, and end with the recommended next action."
132
127
  }
133
128
  ];
134
- function Di() {
129
+ function xi() {
135
130
  const r = d(), t = u((i) => i.attachments), o = new Set(
136
131
  t.filter((i) => i.contentType === m).map((i) => i.name)
137
132
  ), s = (i) => {
@@ -139,8 +134,8 @@ function Di() {
139
134
  new File([i.instructions], `${i.label}.harness`, { type: m })
140
135
  );
141
136
  };
142
- return /* @__PURE__ */ p(b, { children: [
143
- /* @__PURE__ */ e(v, { children: /* @__PURE__ */ p(
137
+ return /* @__PURE__ */ n(b, { children: [
138
+ /* @__PURE__ */ e(v, { children: /* @__PURE__ */ n(
144
139
  "button",
145
140
  {
146
141
  type: "button",
@@ -159,7 +154,7 @@ function Di() {
159
154
  ]
160
155
  }
161
156
  ) }),
162
- /* @__PURE__ */ p(y, { side: "top", align: "start", className: "w-56", autoFocusFirstItem: !1, children: [
157
+ /* @__PURE__ */ n(y, { side: "top", align: "start", className: "w-56", autoFocusFirstItem: !1, children: [
163
158
  /* @__PURE__ */ e(x, { children: "Add a harness" }),
164
159
  S.map((i) => /* @__PURE__ */ e(
165
160
  w,
@@ -174,9 +169,9 @@ function Di() {
174
169
  ] })
175
170
  ] });
176
171
  }
177
- class Ei {
172
+ class wi {
178
173
  constructor() {
179
- n(this, "accept", m);
174
+ p(this, "accept", m);
180
175
  }
181
176
  async add(t) {
182
177
  return {
@@ -207,7 +202,7 @@ ${o}
207
202
  }
208
203
  }
209
204
  export {
210
- Di as ComposerHarness,
205
+ xi as ComposerHarness,
211
206
  m as HARNESS_MIME,
212
- Ei as HarnessAttachmentAdapter
207
+ wi as HarnessAttachmentAdapter
213
208
  };
@@ -4,5 +4,7 @@ export declare function ComposerPlaceholdersProvider({ prompts, children, }: {
4
4
  prompts?: string[];
5
5
  children: React.ReactNode;
6
6
  }): React.JSX.Element;
7
- export declare const Composer: FC;
7
+ export declare const Composer: FC<{
8
+ autoFocus?: boolean;
9
+ }>;
8
10
  export declare const EditComposer: FC;
@@ -1,191 +1,195 @@
1
1
  "use client";
2
- import { jsx as e, jsxs as f, Fragment as L } from "react/jsx-runtime";
3
- import * as l from "react";
4
- import { useContext as D } from "react";
5
- import { ComposerAttachments as I, ComposerAddImage as k } from "./attachment.js";
6
- import { ComposerAddContext as F } from "./composer-add-context.js";
7
- import { ComposerHarness as B } from "./composer-harness.js";
8
- import { ComposerQuotePreview as H } from "./quote.js";
9
- import { ThreadComponentsContext as K } from "./thread-context.js";
10
- import { TooltipIconButton as S } from "./tooltip-icon-button.js";
11
- import { Button as N } from "../ui/button.js";
12
- import { ComposerPrimitive as s, MessagePrimitive as j, unstable_useComposerInput as q, AuiIf as _ } from "@assistant-ui/react";
13
- import { Mic as U, Stop as R, ArrowUp as Y } from "../../lib/icons.js";
14
- const O = 24, Q = 850, V = 1800, X = 3e3;
15
- function G(i) {
2
+ import { jsx as e, jsxs as p, Fragment as D } from "react/jsx-runtime";
3
+ import * as u from "react";
4
+ import { useContext as I } from "react";
5
+ import { ComposerAttachments as k, ComposerAddImage as F } from "./attachment.js";
6
+ import { ComposerAddContext as B } from "./composer-add-context.js";
7
+ import { ComposerHarness as H } from "./composer-harness.js";
8
+ import { ComposerQuotePreview as K } from "./quote.js";
9
+ import { ThreadComponentsContext as j } from "./thread-context.js";
10
+ import { TooltipIconButton as z } from "./tooltip-icon-button.js";
11
+ import { Button as P } from "../ui/button.js";
12
+ import { ComposerPrimitive as s, MessagePrimitive as q, unstable_useComposerInput as U, AuiIf as S } from "@assistant-ui/react";
13
+ import { Mic as Y, Stop as M, ArrowUp as O } from "../../lib/icons.js";
14
+ const Q = 24, V = 850, X = 1800, G = 3e3;
15
+ function J(a) {
16
16
  return Math.min(
17
- V,
18
- Math.max(Q, i.length * O)
17
+ X,
18
+ Math.max(V, a.length * Q)
19
19
  );
20
20
  }
21
- function J(i, t, p, b, T) {
22
- if (t <= 0 || i.length === 0)
23
- return p(i), { promise: Promise.resolve(), cancel: () => {
21
+ function W(a, n, r, f, w) {
22
+ if (n <= 0 || a.length === 0)
23
+ return r(a), { promise: Promise.resolve(), cancel: () => {
24
24
  } };
25
- let w = 0, v, o;
25
+ let v = 0, C, N;
26
26
  return {
27
- promise: new Promise((u) => {
28
- o = u;
29
- let y = performance.now(), h = null;
30
- const r = (c) => {
31
- if (b()) {
32
- u();
27
+ promise: new Promise((y) => {
28
+ N = y;
29
+ let m = performance.now(), h = null;
30
+ const T = (i) => {
31
+ if (f()) {
32
+ y();
33
33
  return;
34
34
  }
35
- if (T()) {
36
- h === null && (h = c), v = window.setTimeout(() => r(performance.now()), 100);
35
+ if (w()) {
36
+ h === null && (h = i), C = window.setTimeout(() => T(performance.now()), 100);
37
37
  return;
38
38
  }
39
- h !== null && (y += c - h, h = null);
40
- const a = Math.min(1, (c - y) / t), d = a >= 1 ? i.length : Math.floor(a * i.length);
41
- if (p(i.slice(0, d)), a >= 1) {
42
- u();
39
+ h !== null && (m += i - h, h = null);
40
+ const l = Math.min(1, (i - m) / n), c = l >= 1 ? a.length : Math.floor(l * a.length);
41
+ if (r(a.slice(0, c)), l >= 1) {
42
+ y();
43
43
  return;
44
44
  }
45
- w = requestAnimationFrame(r);
45
+ v = requestAnimationFrame(T);
46
46
  };
47
- w = requestAnimationFrame(r);
47
+ v = requestAnimationFrame(T);
48
48
  }),
49
49
  cancel: () => {
50
- cancelAnimationFrame(w), v !== void 0 && window.clearTimeout(v), o();
50
+ cancelAnimationFrame(v), C !== void 0 && window.clearTimeout(C), N();
51
51
  }
52
52
  };
53
53
  }
54
- const W = () => {
55
- const { setText: i } = q(), t = l.useContext(M), [p, b] = l.useState(
56
- (t == null ? void 0 : t[0]) ?? "Send a message…"
57
- ), [T, w] = l.useState(!1), v = l.useRef(null), [o, z] = l.useState(null), u = l.useRef(!1), y = l.useCallback((r) => {
58
- v.current = r, z(r);
54
+ const Z = ({
55
+ autoFocus: a = !0
56
+ }) => {
57
+ const { setText: n } = U(), r = u.useContext(L), [f, w] = u.useState(
58
+ (r == null ? void 0 : r[0]) ?? "Send a message…"
59
+ ), [v, C] = u.useState(!1), N = u.useRef(null), [o, y] = u.useState(null), m = u.useRef(!1), h = u.useCallback((i) => {
60
+ N.current = i, y(i);
59
61
  }, []);
60
- l.useEffect(() => {
62
+ u.useEffect(() => {
61
63
  if (!o) return;
62
- let r = 0;
63
- const c = (n) => {
64
- u.current = n || document.activeElement === o, w(n);
65
- }, a = () => {
66
- const n = o.value.length > 0;
67
- c(n);
68
- }, d = () => {
69
- window.clearTimeout(r), r = window.setTimeout(a, 0);
64
+ let i = 0;
65
+ const l = (t) => {
66
+ m.current = t || document.activeElement === o, C(t);
67
+ }, c = () => {
68
+ const t = o.value.length > 0;
69
+ l(t);
70
70
  }, g = () => {
71
- u.current = o.value.length > 0 || document.activeElement === o;
72
- }, E = (n, m) => {
73
- i(n), o.value = n, o.dispatchEvent(new Event("input", { bubbles: !0 })), c(n.length > 0), window.setTimeout(() => {
74
- document.activeElement === o && o.setSelectionRange(m, m);
71
+ window.clearTimeout(i), i = window.setTimeout(c, 0);
72
+ }, b = () => {
73
+ m.current = o.value.length > 0 || document.activeElement === o;
74
+ }, _ = (t, d) => {
75
+ n(t), o.value = t, o.dispatchEvent(new Event("input", { bubbles: !0 })), l(t.length > 0), window.setTimeout(() => {
76
+ document.activeElement === o && o.setSelectionRange(d, d);
75
77
  }, 0);
76
- }, P = (n) => {
77
- const m = o.selectionStart ?? 0, A = o.selectionEnd ?? m;
78
- return m === A || n.inputType !== "deleteContentBackward" && n.inputType !== "deleteContentForward" && n.inputType !== "deleteByCut" ? !1 : (n.preventDefault(), E(
79
- o.value.slice(0, m) + o.value.slice(A),
80
- m
78
+ }, A = (t) => {
79
+ const d = o.selectionStart ?? 0, R = o.selectionEnd ?? d;
80
+ return d === R || t.inputType !== "deleteContentBackward" && t.inputType !== "deleteContentForward" && t.inputType !== "deleteByCut" ? !1 : (t.preventDefault(), _(
81
+ o.value.slice(0, d) + o.value.slice(R),
82
+ d
81
83
  ), !0);
82
- }, C = (n) => {
83
- if (!n.isComposing && !P(n)) {
84
- if (typeof n.data == "string" && n.data.length > 0) {
85
- c(!0);
84
+ }, E = (t) => {
85
+ if (!t.isComposing && !A(t)) {
86
+ if (typeof t.data == "string" && t.data.length > 0) {
87
+ l(!0);
86
88
  return;
87
89
  }
88
- d();
90
+ g();
89
91
  }
90
- }, x = (n) => {
91
- (n.metaKey || n.ctrlKey) && !n.altKey && n.key.toLowerCase() === "a" && (n.preventDefault(), o.select());
92
+ }, x = (t) => {
93
+ (t.metaKey || t.ctrlKey) && !t.altKey && t.key.toLowerCase() === "a" && (t.preventDefault(), o.select());
92
94
  };
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(r), o.removeEventListener("beforeinput", C), o.removeEventListener("input", a), o.removeEventListener("focus", g), o.removeEventListener("blur", g), o.removeEventListener("keydown", x);
95
+ return c(), o.addEventListener("beforeinput", E), o.addEventListener("input", c), o.addEventListener("focus", b), o.addEventListener("blur", b), o.addEventListener("keydown", x), () => {
96
+ window.clearTimeout(i), o.removeEventListener("beforeinput", E), o.removeEventListener("input", c), o.removeEventListener("focus", b), o.removeEventListener("blur", b), o.removeEventListener("keydown", x);
95
97
  };
96
- }, [o, i]), l.useEffect(() => {
97
- var C;
98
- if (!(t != null && t.length)) {
99
- b("Send a message…");
98
+ }, [o, n]), u.useEffect(() => {
99
+ var E;
100
+ if (!(r != null && r.length)) {
101
+ w("Send a message…");
100
102
  return;
101
103
  }
102
- if ((C = window.matchMedia) != null && C.call(window, "(prefers-reduced-motion: reduce)").matches) {
103
- b(t[0]);
104
+ if ((E = window.matchMedia) != null && E.call(window, "(prefers-reduced-motion: reduce)").matches) {
105
+ w(r[0]);
104
106
  return;
105
107
  }
106
- let r = !1, c = 0, a, d;
107
- const g = (x) => new Promise((n) => {
108
- a = window.setTimeout(n, x);
109
- }), E = () => r;
108
+ let i = !1, l = 0, c, g;
109
+ const b = (x) => new Promise((t) => {
110
+ c = window.setTimeout(t, x);
111
+ }), _ = () => i;
110
112
  return (async () => {
111
- for (; !r; ) {
112
- for (; u.current && !r; ) await g(100);
113
- if (r) return;
114
- const x = t[c];
115
- b("");
116
- const { promise: n, cancel: m } = J(
113
+ for (; !i; ) {
114
+ for (; m.current && !i; ) await b(100);
115
+ if (i) return;
116
+ const x = r[l];
117
+ w("");
118
+ const { promise: t, cancel: d } = W(
117
119
  x,
118
- G(x),
119
- b,
120
- E,
121
- () => u.current
120
+ J(x),
121
+ w,
122
+ _,
123
+ () => m.current
122
124
  );
123
- if (d = m, await n, d = void 0, r) return;
124
- if (!u.current) {
125
- if (await g(X), r) return;
126
- c = (c + 1) % t.length;
125
+ if (g = d, await t, g = void 0, i) return;
126
+ if (!m.current) {
127
+ if (await b(G), i) return;
128
+ l = (l + 1) % r.length;
127
129
  }
128
130
  }
129
131
  })(), () => {
130
- r = !0, d == null || d(), a && window.clearTimeout(a);
132
+ i = !0, g == null || g(), c && window.clearTimeout(c);
131
133
  };
132
- }, [t]);
133
- const h = !!(t != null && t.length) && !T;
134
- return /* @__PURE__ */ f("div", { className: "group/input relative", children: [
135
- h && /* @__PURE__ */ e(
134
+ }, [r]);
135
+ const T = !!(r != null && r.length) && !v;
136
+ return /* @__PURE__ */ p("div", { className: "group/input relative", children: [
137
+ T && /* @__PURE__ */ e(
136
138
  "div",
137
139
  {
138
140
  "aria-hidden": !0,
139
141
  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
- children: /* @__PURE__ */ e("span", { children: p })
142
+ children: /* @__PURE__ */ e("span", { children: f })
141
143
  }
142
144
  ),
143
145
  /* @__PURE__ */ e(
144
146
  s.Input,
145
147
  {
146
- ref: y,
147
- placeholder: t != null && t.length ? "" : p,
148
+ ref: h,
149
+ placeholder: r != null && r.length ? "" : f,
148
150
  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
151
  rows: 1,
150
- autoFocus: !0,
152
+ autoFocus: a,
151
153
  enterKeyHint: "send",
152
154
  "aria-label": "Message input"
153
155
  }
154
156
  )
155
157
  ] });
156
- }, M = l.createContext(
158
+ }, L = u.createContext(
157
159
  void 0
158
160
  );
159
- function de({
160
- prompts: i,
161
- children: t
161
+ function me({
162
+ prompts: a,
163
+ children: n
162
164
  }) {
163
- return /* @__PURE__ */ e(M.Provider, { value: i, children: t });
165
+ return /* @__PURE__ */ e(L.Provider, { value: a, children: n });
164
166
  }
165
- const me = () => /* @__PURE__ */ e(s.Root, { className: "aui-composer-root animate-in fade-in slide-in-from-bottom-2 fill-mode-both relative flex w-full flex-col duration-200 delay-[420ms]", children: /* @__PURE__ */ e(s.Unstable_TriggerPopoverRoot, { children: /* @__PURE__ */ e(s.AttachmentDropzone, { asChild: !0, children: /* @__PURE__ */ f(
167
+ const pe = ({
168
+ autoFocus: a = !0
169
+ }) => /* @__PURE__ */ e(s.Root, { className: "aui-composer-root animate-in fade-in slide-in-from-bottom-2 fill-mode-both relative flex w-full flex-col duration-200 delay-[420ms]", children: /* @__PURE__ */ e(s.Unstable_TriggerPopoverRoot, { children: /* @__PURE__ */ e(s.AttachmentDropzone, { asChild: !0, children: /* @__PURE__ */ p(
166
170
  "div",
167
171
  {
168
172
  "data-slot": "aui_composer-shell",
169
- onMouseDown: (i) => {
170
- var p;
171
- i.target.closest("button, a, input, textarea, [role='button']") || (p = i.currentTarget.querySelector("textarea")) == null || p.focus();
173
+ onMouseDown: (n) => {
174
+ var f;
175
+ n.target.closest("button, a, input, textarea, [role='button']") || (f = n.currentTarget.querySelector("textarea")) == null || f.focus();
172
176
  },
173
- className: "border-border/60 data-[dragging=true]:border-ring focus-within:border-border relative flex w-full flex-col gap-2 rounded-(--composer-radius) border bg-(--composer-bg) p-(--composer-padding) shadow-[0_4px_16px_-8px_rgba(0,0,0,0.08),0_1px_2px_rgba(0,0,0,0.04)] transition-[border-color,box-shadow] focus-within:shadow-[0_6px_24px_-8px_rgba(0,0,0,0.12),0_1px_2px_rgba(0,0,0,0.05)] data-[dragging=true]:border-dashed data-[dragging=true]:bg-[color-mix(in_oklab,var(--color-accent)_50%,var(--color-background))]",
177
+ className: "border-ng2 data-[dragging=true]:border-ring focus-within:border-border relative flex w-full flex-col gap-2 rounded-(--composer-radius) border bg-(--composer-bg) p-(--composer-padding) shadow-400 transition-[border-color,box-shadow] data-[dragging=true]:border-dashed data-[dragging=true]:bg-[color-mix(in_oklab,var(--color-accent)_50%,var(--color-background))]",
174
178
  children: [
175
- /* @__PURE__ */ e(H, { className: "mx-0 mt-0" }),
176
- /* @__PURE__ */ e(I, {}),
177
- /* @__PURE__ */ e(W, {}),
178
- /* @__PURE__ */ e(Z, {})
179
+ /* @__PURE__ */ e(K, { className: "mx-0 mt-0" }),
180
+ /* @__PURE__ */ e(k, {}),
181
+ /* @__PURE__ */ e(Z, { autoFocus: a }),
182
+ /* @__PURE__ */ e($, {})
179
183
  ]
180
184
  }
181
- ) }) }) }), Z = () => {
182
- const { ComposerAccessories: i = $ } = D(K);
183
- return /* @__PURE__ */ f("div", { className: "aui-composer-action-wrapper relative flex items-center justify-between", children: [
184
- /* @__PURE__ */ e("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ e(i, {}) }),
185
- /* @__PURE__ */ f("div", { className: "flex items-center gap-1.5", children: [
186
- /* @__PURE__ */ f(_, { condition: (t) => t.thread.capabilities.dictation, children: [
187
- /* @__PURE__ */ e(_, { condition: (t) => t.composer.dictation == null, children: /* @__PURE__ */ e(s.Dictate, { asChild: !0, children: /* @__PURE__ */ e(
188
- S,
185
+ ) }) }) }), $ = () => {
186
+ const { ComposerAccessories: a = ee } = I(j);
187
+ return /* @__PURE__ */ p("div", { className: "aui-composer-action-wrapper relative flex items-center justify-between", children: [
188
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ e(a, {}) }),
189
+ /* @__PURE__ */ p("div", { className: "flex items-center gap-1.5", children: [
190
+ /* @__PURE__ */ p(S, { condition: (n) => n.thread.capabilities.dictation, children: [
191
+ /* @__PURE__ */ e(S, { condition: (n) => n.composer.dictation == null, children: /* @__PURE__ */ e(s.Dictate, { asChild: !0, children: /* @__PURE__ */ e(
192
+ z,
189
193
  {
190
194
  tooltip: "Voice input",
191
195
  side: "bottom",
@@ -194,11 +198,11 @@ const me = () => /* @__PURE__ */ e(s.Root, { className: "aui-composer-root anima
194
198
  size: "icon",
195
199
  className: "aui-composer-dictate size-7 rounded-full",
196
200
  "aria-label": "Start voice input",
197
- children: /* @__PURE__ */ e(U, { className: "aui-composer-dictate-icon size-4" })
201
+ children: /* @__PURE__ */ e(Y, { className: "aui-composer-dictate-icon size-4" })
198
202
  }
199
203
  ) }) }),
200
- /* @__PURE__ */ e(_, { condition: (t) => t.composer.dictation != null, children: /* @__PURE__ */ e(s.StopDictation, { asChild: !0, children: /* @__PURE__ */ e(
201
- S,
204
+ /* @__PURE__ */ e(S, { condition: (n) => n.composer.dictation != null, children: /* @__PURE__ */ e(s.StopDictation, { asChild: !0, children: /* @__PURE__ */ e(
205
+ z,
202
206
  {
203
207
  tooltip: "Stop dictation",
204
208
  side: "bottom",
@@ -207,12 +211,12 @@ const me = () => /* @__PURE__ */ e(s.Root, { className: "aui-composer-root anima
207
211
  size: "icon",
208
212
  className: "aui-composer-stop-dictation text-destructive size-7 rounded-full",
209
213
  "aria-label": "Stop voice input",
210
- children: /* @__PURE__ */ e(R, { className: "aui-composer-stop-dictation-icon size-3.5 animate-pulse fill-current" })
214
+ children: /* @__PURE__ */ e(M, { className: "aui-composer-stop-dictation-icon size-3.5 animate-pulse fill-current" })
211
215
  }
212
216
  ) }) })
213
217
  ] }),
214
- /* @__PURE__ */ e(_, { condition: (t) => !t.thread.isRunning, children: /* @__PURE__ */ e(s.Send, { asChild: !0, children: /* @__PURE__ */ e(
215
- S,
218
+ /* @__PURE__ */ e(S, { condition: (n) => !n.thread.isRunning, children: /* @__PURE__ */ e(s.Send, { asChild: !0, children: /* @__PURE__ */ e(
219
+ z,
216
220
  {
217
221
  tooltip: "Send message",
218
222
  side: "bottom",
@@ -221,32 +225,32 @@ const me = () => /* @__PURE__ */ e(s.Root, { className: "aui-composer-root anima
221
225
  size: "icon",
222
226
  className: "aui-composer-send size-7 rounded-full",
223
227
  "aria-label": "Send message",
224
- children: /* @__PURE__ */ e(Y, { className: "aui-composer-send-icon size-4.5" })
228
+ children: /* @__PURE__ */ e(O, { className: "aui-composer-send-icon size-4.5" })
225
229
  }
226
230
  ) }) }),
227
- /* @__PURE__ */ e(_, { condition: (t) => t.thread.isRunning, children: /* @__PURE__ */ e(s.Cancel, { asChild: !0, children: /* @__PURE__ */ e(
228
- N,
231
+ /* @__PURE__ */ e(S, { condition: (n) => n.thread.isRunning, children: /* @__PURE__ */ e(s.Cancel, { asChild: !0, children: /* @__PURE__ */ e(
232
+ P,
229
233
  {
230
234
  type: "button",
231
235
  variant: "default",
232
236
  size: "icon",
233
237
  className: "aui-composer-cancel size-7 rounded-full",
234
238
  "aria-label": "Stop generating",
235
- children: /* @__PURE__ */ e(R, { className: "aui-composer-cancel-icon size-3.5 fill-current" })
239
+ children: /* @__PURE__ */ e(M, { className: "aui-composer-cancel-icon size-3.5 fill-current" })
236
240
  }
237
241
  ) }) })
238
242
  ] })
239
243
  ] });
240
- }, $ = () => /* @__PURE__ */ f(L, { children: [
244
+ }, ee = () => /* @__PURE__ */ p(D, { children: [
245
+ /* @__PURE__ */ e(B, {}),
241
246
  /* @__PURE__ */ e(F, {}),
242
- /* @__PURE__ */ e(k, {}),
243
- /* @__PURE__ */ e(B, {})
244
- ] }), pe = () => /* @__PURE__ */ e(
245
- j.Root,
247
+ /* @__PURE__ */ e(H, {})
248
+ ] }), fe = () => /* @__PURE__ */ e(
249
+ q.Root,
246
250
  {
247
251
  "data-slot": "aui_edit-composer-wrapper",
248
252
  className: "flex flex-col px-2 [contain-intrinsic-size:auto_200px] [content-visibility:auto]",
249
- children: /* @__PURE__ */ f(s.Root, { className: "aui-edit-composer-root border-border/60 ms-auto flex w-full max-w-[85%] flex-col rounded-(--composer-radius) border bg-(--composer-bg) shadow-[0_4px_16px_-8px_rgba(0,0,0,0.08),0_1px_2px_rgba(0,0,0,0.04)]", children: [
253
+ children: /* @__PURE__ */ p(s.Root, { className: "aui-edit-composer-root border-border/60 ms-auto flex w-full max-w-[85%] flex-col rounded-(--composer-radius) border bg-(--composer-bg) shadow-[0_4px_16px_-8px_rgba(0,0,0,0.08),0_1px_2px_rgba(0,0,0,0.04)]", children: [
250
254
  /* @__PURE__ */ e(
251
255
  s.Input,
252
256
  {
@@ -254,9 +258,9 @@ const me = () => /* @__PURE__ */ e(s.Root, { className: "aui-composer-root anima
254
258
  autoFocus: !0
255
259
  }
256
260
  ),
257
- /* @__PURE__ */ f("div", { className: "aui-edit-composer-footer mx-2.5 mb-2.5 flex items-center gap-1.5 self-end", children: [
261
+ /* @__PURE__ */ p("div", { className: "aui-edit-composer-footer mx-2.5 mb-2.5 flex items-center gap-1.5 self-end", children: [
258
262
  /* @__PURE__ */ e(s.Cancel, { asChild: !0, children: /* @__PURE__ */ e(
259
- N,
263
+ P,
260
264
  {
261
265
  variant: "ghost",
262
266
  size: "sm",
@@ -264,13 +268,13 @@ const me = () => /* @__PURE__ */ e(s.Root, { className: "aui-composer-root anima
264
268
  children: "Cancel"
265
269
  }
266
270
  ) }),
267
- /* @__PURE__ */ e(s.Send, { asChild: !0, children: /* @__PURE__ */ e(N, { size: "sm", className: "h-8 rounded-full px-3.5", children: "Update" }) })
271
+ /* @__PURE__ */ e(s.Send, { asChild: !0, children: /* @__PURE__ */ e(P, { size: "sm", className: "h-8 rounded-full px-3.5", children: "Update" }) })
268
272
  ] })
269
273
  ] })
270
274
  }
271
275
  );
272
276
  export {
273
- me as Composer,
274
- de as ComposerPlaceholdersProvider,
275
- pe as EditComposer
277
+ pe as Composer,
278
+ me as ComposerPlaceholdersProvider,
279
+ fe as EditComposer
276
280
  };
@@ -5,7 +5,6 @@ export * from './answer-tool-ui';
5
5
  export * from './composer';
6
6
  export * from './message';
7
7
  export * from './action-bar';
8
- export * from './branch-picker';
9
8
  export * from './attachment';
10
9
  export * from './composer-add-context';
11
10
  export * from './composer-deep-research';
@@ -21,7 +20,5 @@ export * from './quote';
21
20
  export * from './sources';
22
21
  export * from './tool-fallback';
23
22
  export * from './tool-group';
24
- export * from './follow-up-suggestions';
25
23
  export * from './selection-toolbar';
26
- export * from './suggestions';
27
24
  export * from './tooltip-icon-button';
@@ -13,7 +13,9 @@ export type ThreadComponents = {
13
13
  /** Optional identity shown beside every assistant turn. */
14
14
  AssistantAvatar?: ComponentType | undefined;
15
15
  Welcome?: ComponentType | undefined;
16
- /** Wraps the default Composer, e.g. with TaskProgressDock. */
16
+ /** Replaces the complete new-chat viewport, including its Composer. */
17
+ EmptyState?: ComponentType | undefined;
18
+ /** Wraps the default Composer with an attached product-specific treatment. */
17
19
  ComposerDock?: ComponentType<PropsWithChildren> | undefined;
18
20
  /** Replaces the left-side composer controls (context, upload, harness). */
19
21
  ComposerAccessories?: ComponentType | undefined;