@automattic/agenttic-ui 0.1.75 → 0.1.76

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.
@@ -0,0 +1,1305 @@
1
+ import { jsx as e, jsxs as h, Fragment as X } from "react/jsx-runtime";
2
+ import { __ as w } from "@wordpress/i18n";
3
+ import * as at from "react";
4
+ import L, { createContext as mt, useContext as ht, useState as pt, useEffect as z, useId as ft, useCallback as tt, useRef as gt, useMemo as it } from "react";
5
+ import { AnimatePresence as st, motion as M } from "framer-motion";
6
+ import { Slot as bt } from "@radix-ui/react-slot";
7
+ import * as W from "@radix-ui/react-popover";
8
+ import Ct from "react-markdown";
9
+ import './DiffCard.css';function v(...t) {
10
+ return t.flat().filter(Boolean).map((n) => typeof n == "string" ? n : typeof n == "object" && !Array.isArray(n) && n !== null ? Object.entries(n).filter(([o, a]) => a).map(([o]) => o).join(" ") : "").join(" ").trim();
11
+ }
12
+ const Y = {
13
+ type: "spring",
14
+ stiffness: 300,
15
+ damping: 30
16
+ }, U = {
17
+ type: "spring",
18
+ damping: 40,
19
+ stiffness: 500,
20
+ mass: 0.8
21
+ }, Q = {
22
+ ...U,
23
+ stiffness: 1e3,
24
+ damping: 90
25
+ }, vt = {
26
+ type: "spring",
27
+ damping: 40,
28
+ stiffness: 500,
29
+ mass: 0.8
30
+ }, wt = {
31
+ hidden: {
32
+ opacity: 0
33
+ },
34
+ visible: {
35
+ opacity: 1,
36
+ transition: Y
37
+ },
38
+ exit: {
39
+ opacity: 0,
40
+ transition: { ...Y, duration: 0.1 }
41
+ }
42
+ }, yt = () => {
43
+ if (typeof window > "u")
44
+ return { left: 0, right: 0, top: 0, bottom: 0 };
45
+ const t = 20;
46
+ return {
47
+ left: t,
48
+ right: window.innerWidth - 400 - t,
49
+ // Assuming max width of 400px
50
+ top: t,
51
+ bottom: window.innerHeight - 60 - t
52
+ // Assuming collapsed height of 60px
53
+ };
54
+ }, _t = {
55
+ "0%": { backgroundPosition: "-200% 0" },
56
+ "100%": { backgroundPosition: "200% 0" }
57
+ }, bn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
58
+ __proto__: null,
59
+ fadeVariants: wt,
60
+ fastSpring: U,
61
+ fastSpringWithDelay: Q,
62
+ getDragConstraints: yt,
63
+ morphSpring: vt,
64
+ springConfig: Y,
65
+ thinkingGradientKeyframes: _t
66
+ }, Symbol.toStringTag, { value: "Module" })), lt = mt(null);
67
+ function T() {
68
+ const t = ht(lt);
69
+ if (!t)
70
+ throw new Error(
71
+ "useAgentUIContext must be used within an AgentUIContainer"
72
+ );
73
+ return t;
74
+ }
75
+ function Cn({ children: t, value: n }) {
76
+ return /* @__PURE__ */ e(lt.Provider, { value: n, children: t });
77
+ }
78
+ const Nt = "button-module_button", xt = "button-module_pressed", St = "button-module_primary", It = "button-module_ghost", $t = "button-module_outline", Lt = "button-module_transparent", kt = "button-module_link", At = "button-module_icon", Dt = "button-module_sm", Rt = "button-module_lg", Bt = "button-module_withTextAndIcon", H = {
79
+ button: Nt,
80
+ pressed: xt,
81
+ primary: St,
82
+ ghost: It,
83
+ outline: $t,
84
+ transparent: Lt,
85
+ link: kt,
86
+ icon: At,
87
+ sm: Dt,
88
+ lg: Rt,
89
+ withTextAndIcon: Bt
90
+ }, k = at.forwardRef(
91
+ function({
92
+ className: n,
93
+ variant: o = "primary",
94
+ size: a,
95
+ icon: i,
96
+ children: l,
97
+ asChild: s = !1,
98
+ pressed: b,
99
+ ...f
100
+ }, d) {
101
+ const u = s ? bt : "button", r = !!i, p = a || (r && !l ? "icon" : void 0);
102
+ return /* @__PURE__ */ h(
103
+ u,
104
+ {
105
+ ref: d,
106
+ "data-slot": "button",
107
+ className: v(
108
+ H.button,
109
+ H[o],
110
+ p && H[p],
111
+ r && l ? H.withTextAndIcon : void 0,
112
+ b ? H.pressed : void 0,
113
+ n
114
+ ),
115
+ "aria-pressed": b,
116
+ ...f,
117
+ children: [
118
+ i,
119
+ l
120
+ ]
121
+ }
122
+ );
123
+ }
124
+ );
125
+ k.displayName = "Button";
126
+ const Mt = "Textarea-module_textarea", jt = {
127
+ textarea: Mt
128
+ }, rt = at.forwardRef(
129
+ ({ className: t, ...n }, o) => /* @__PURE__ */ e(
130
+ "textarea",
131
+ {
132
+ "data-slot": "textarea",
133
+ className: jt.textarea,
134
+ ref: o,
135
+ ...n
136
+ }
137
+ )
138
+ );
139
+ rt.displayName = "Textarea";
140
+ function Et({ className: t, size: n = 24 }) {
141
+ return /* @__PURE__ */ e(
142
+ "svg",
143
+ {
144
+ width: n,
145
+ height: n,
146
+ viewBox: "0 0 24 24",
147
+ fill: "none",
148
+ xmlns: "http://www.w3.org/2000/svg",
149
+ className: t,
150
+ children: /* @__PURE__ */ e(
151
+ "path",
152
+ {
153
+ d: "M12.2197 5C12.4186 5 12.6094 5.07902 12.75 5.21967L17 9.46967C17.2929 9.76256 17.2929 10.2374 17 10.5303C16.7071 10.8232 16.2322 10.8232 15.9393 10.5303L12.9697 7.56067V18.25C12.9697 18.6642 12.6339 19 12.2197 19C11.8055 19 11.4697 18.6642 11.4697 18.25V7.56065L8.5 10.5303C8.2071 10.8232 7.73223 10.8232 7.43934 10.5303C7.14644 10.2374 7.14645 9.76256 7.43934 9.46967L11.6894 5.21967C11.83 5.07902 12.0208 5 12.2197 5Z",
154
+ fill: "currentColor"
155
+ }
156
+ )
157
+ }
158
+ );
159
+ }
160
+ function Pt({ className: t, size: n = 24 }) {
161
+ return /* @__PURE__ */ e(
162
+ "svg",
163
+ {
164
+ width: n,
165
+ height: n,
166
+ viewBox: "0 0 24 24",
167
+ fill: "none",
168
+ xmlns: "http://www.w3.org/2000/svg",
169
+ className: t,
170
+ children: /* @__PURE__ */ e(
171
+ "rect",
172
+ {
173
+ x: "7",
174
+ y: "7",
175
+ width: "10",
176
+ height: "10",
177
+ rx: "2",
178
+ fill: "currentColor"
179
+ }
180
+ )
181
+ }
182
+ );
183
+ }
184
+ const Vt = "ChatInput-module_container", Ht = "ChatInput-module_textareaContainer", Ut = "ChatInput-module_actions", Tt = "ChatInput-module_containerStacked", Zt = "ChatInput-module_button", R = {
185
+ container: Vt,
186
+ textareaContainer: Ht,
187
+ actions: Ut,
188
+ containerStacked: Tt,
189
+ button: Zt
190
+ };
191
+ function Ot({ className: t, size: n = 24 }) {
192
+ return /* @__PURE__ */ e(
193
+ "svg",
194
+ {
195
+ className: t,
196
+ width: n,
197
+ height: n,
198
+ viewBox: "0 0 24 24",
199
+ fill: "none",
200
+ xmlns: "http://www.w3.org/2000/svg",
201
+ children: /* @__PURE__ */ e(
202
+ "path",
203
+ {
204
+ fillRule: "evenodd",
205
+ clipRule: "evenodd",
206
+ d: "M18.0045 13.4451L12 7.9864L5.9955 13.4451L7.00451 14.5549L12 10.0136L16.9955 14.5549L18.0045 13.4451Z",
207
+ fill: "currentColor"
208
+ }
209
+ )
210
+ }
211
+ );
212
+ }
213
+ const Wt = "AnimatedPlaceholder-module_container", Qt = {
214
+ container: Wt
215
+ };
216
+ function Ft({
217
+ texts: t,
218
+ interval: n = 3e3,
219
+ className: o = ""
220
+ }) {
221
+ const [a, i] = pt(0);
222
+ return z(() => {
223
+ const l = setInterval(() => {
224
+ i(
225
+ (s) => (s + 1) % t.length
226
+ );
227
+ }, n);
228
+ return () => clearInterval(l);
229
+ }, [t.length, n]), /* @__PURE__ */ e(st, { mode: "wait", children: /* @__PURE__ */ e(
230
+ M.span,
231
+ {
232
+ "data-slot": "animated-placeholder",
233
+ className: v(Qt.container, o),
234
+ initial: { opacity: 0, y: 8 },
235
+ animate: { opacity: 1, y: 0 },
236
+ exit: { opacity: 0, y: -8 },
237
+ transition: {
238
+ duration: 0.3,
239
+ ease: [0.4, 0, 0.2, 1]
240
+ // Matches --transition-colors cubic-bezier
241
+ },
242
+ children: t[a]
243
+ },
244
+ a
245
+ ) });
246
+ }
247
+ function Gt({
248
+ value: t,
249
+ onChange: n,
250
+ onSubmit: o,
251
+ onKeyDown: a,
252
+ textareaRef: i,
253
+ placeholder: l = w("Ask anything", "a8c-agenttic"),
254
+ isProcessing: s,
255
+ onBlur: b,
256
+ onFocus: f,
257
+ onClick: d,
258
+ fromCompact: u = !1,
259
+ onExpand: r,
260
+ showExpandButton: p = !0,
261
+ focusOnMount: m = !1,
262
+ customActions: N = [],
263
+ actionOrder: y = "before-submit",
264
+ onStop: x,
265
+ disabled: A,
266
+ onMouseEnter: g,
267
+ onMouseLeave: D,
268
+ expandOnClick: I = !1,
269
+ layout: P = "inline"
270
+ }) {
271
+ const F = ft(), { variant: et, floatingChatState: j, isInputOverLimit: Z } = T(), G = (
272
+ // If the consumer actively sets `disabled` to `false` (vs undefined), that takes precedence.
273
+ A !== void 0 ? !A : (t.trim() || s) && !Z
274
+ ), ct = tt(
275
+ (c) => {
276
+ const O = c.key.toLowerCase();
277
+ if (O === "enter" && !c.shiftKey && (c.nativeEvent.isComposing || c.keyCode === 229)) {
278
+ c.preventDefault();
279
+ return;
280
+ }
281
+ if (O === "enter" && !c.shiftKey && !G) {
282
+ c.preventDefault();
283
+ return;
284
+ }
285
+ ((c.metaKey || c.ctrlKey) && O === "z" || c.ctrlKey && O === "y") && c.stopPropagation(), a(c);
286
+ },
287
+ [G, a]
288
+ ), nt = (c) => c.endsWith("…") ? c : `${c}…`, q = Array.isArray(l);
289
+ let V;
290
+ q ? V = l.map(nt) : l ? V = nt(l) : V = "";
291
+ const K = gt(m);
292
+ z(() => {
293
+ K.current && i.current && i.current.focus(), K.current = !1;
294
+ }, [K, i]);
295
+ const ot = () => N.map((c) => /* @__PURE__ */ e(
296
+ k,
297
+ {
298
+ className: c.className || R.button,
299
+ onClick: c.onClick,
300
+ disabled: c.disabled,
301
+ variant: c.variant || "ghost",
302
+ icon: c.icon,
303
+ "aria-label": c["aria-label"]
304
+ },
305
+ c.id
306
+ )), dt = () => et === "embedded" || j === "expanded" || I ? null : p && r ? /* @__PURE__ */ e(
307
+ k,
308
+ {
309
+ className: R.button,
310
+ onClick: r,
311
+ variant: "ghost",
312
+ icon: /* @__PURE__ */ e(Ot, {}),
313
+ "aria-label": w("Expand conversation", "a8c-agenttic")
314
+ }
315
+ ) : null, ut = () => {
316
+ if (s && !x)
317
+ return null;
318
+ const c = () => {
319
+ s && x ? x() : o();
320
+ };
321
+ return /* @__PURE__ */ e(
322
+ k,
323
+ {
324
+ className: R.button,
325
+ onClick: c,
326
+ disabled: !G,
327
+ variant: "primary",
328
+ icon: s ? /* @__PURE__ */ e(Pt, {}) : /* @__PURE__ */ e(Et, {}),
329
+ "aria-label": s ? w("Stop processing", "a8c-agenttic") : w("Send message", "a8c-agenttic")
330
+ }
331
+ );
332
+ };
333
+ return /* @__PURE__ */ h(
334
+ "div",
335
+ {
336
+ "data-slot": "chat-input",
337
+ className: `${R.container}${P === "stacked" ? ` ${R.containerStacked}` : ""}`,
338
+ onMouseEnter: g,
339
+ onMouseLeave: D,
340
+ children: [
341
+ /* @__PURE__ */ h(
342
+ M.div,
343
+ {
344
+ className: R.textareaContainer,
345
+ initial: {
346
+ opacity: 0
347
+ },
348
+ animate: {
349
+ opacity: 1,
350
+ scale: 1,
351
+ transition: t.trim() ? { duration: 0 } : Q
352
+ },
353
+ children: [
354
+ !t && q && /* @__PURE__ */ e(
355
+ Ft,
356
+ {
357
+ texts: V
358
+ }
359
+ ),
360
+ /* @__PURE__ */ e(
361
+ rt,
362
+ {
363
+ id: F,
364
+ ref: i,
365
+ value: t,
366
+ onChange: (c) => n(c.target.value),
367
+ onKeyDown: ct,
368
+ onBlur: b,
369
+ onFocus: f,
370
+ onClick: d,
371
+ placeholder: q ? "" : V,
372
+ rows: 1,
373
+ "aria-label": w("Chat input", "a8c-agenttic")
374
+ }
375
+ )
376
+ ]
377
+ }
378
+ ),
379
+ /* @__PURE__ */ h(
380
+ M.div,
381
+ {
382
+ className: R.actions,
383
+ initial: {
384
+ opacity: u ? 1 : 0,
385
+ scale: u ? 1 : 0.5
386
+ },
387
+ animate: {
388
+ opacity: 1,
389
+ scale: 1,
390
+ transition: t.trim() ? { duration: 0 } : U
391
+ },
392
+ children: [
393
+ dt(),
394
+ y === "before-submit" && ot(),
395
+ ut(),
396
+ y === "after-submit" && ot()
397
+ ]
398
+ }
399
+ )
400
+ ]
401
+ }
402
+ );
403
+ }
404
+ function qt({ className: t, size: n = 24 }) {
405
+ return /* @__PURE__ */ e(
406
+ "svg",
407
+ {
408
+ className: t,
409
+ width: n,
410
+ height: n,
411
+ viewBox: "0 0 24 24",
412
+ fill: "none",
413
+ xmlns: "http://www.w3.org/2000/svg",
414
+ children: /* @__PURE__ */ e(
415
+ "path",
416
+ {
417
+ fillRule: "evenodd",
418
+ clipRule: "evenodd",
419
+ d: "M18.0045 10.5549L12 16.0136L5.9955 10.5549L7.00451 9.44504L12 13.9864L16.9955 9.44504L18.0045 10.5549Z",
420
+ fill: "currentColor"
421
+ }
422
+ )
423
+ }
424
+ );
425
+ }
426
+ const Kt = "SuggestionDropdown-module_container", Xt = "SuggestionDropdown-module_labelRow", Yt = "SuggestionDropdown-module_chevron", Jt = "SuggestionDropdown-module_chevronOpen", zt = "SuggestionDropdown-module_dropdown", te = "SuggestionDropdown-module_option", E = {
427
+ container: Kt,
428
+ labelRow: Xt,
429
+ chevron: Yt,
430
+ chevronOpen: Jt,
431
+ dropdown: zt,
432
+ option: te
433
+ }, ee = "Suggestions-module_container", ne = "Suggestions-module_vertical", oe = "Suggestions-module_button", ae = "Suggestions-module_label", ie = "Suggestions-module_description", se = "Suggestions-module_floating", _ = {
434
+ container: ee,
435
+ vertical: ne,
436
+ button: oe,
437
+ "suggestion-content--with-description": "Suggestions-module_suggestion-content--with-description",
438
+ label: ae,
439
+ description: ie,
440
+ floating: se
441
+ }, le = (t, n) => !t || !n ? `${t}${n}` : /\s$/.test(t) || /^\s/.test(n) ? `${t}${n}` : `${t} ${n}`, re = ({
442
+ suggestion: t,
443
+ onSelect: n,
444
+ availableSuggestions: o,
445
+ onOpenChange: a,
446
+ showDescription: i
447
+ }) => {
448
+ var A;
449
+ const [l, s] = L.useState(!1), b = L.useRef(null), [f, d] = L.useState(null), [u, r] = L.useState(null), [p, m] = L.useState(void 0), N = L.useCallback(
450
+ (g) => {
451
+ if (b.current = g, !g) {
452
+ d(null), r(null);
453
+ return;
454
+ }
455
+ d(
456
+ g.closest(".agenttic") ?? g
457
+ ), r(
458
+ g.closest(
459
+ '[data-slot="conversation-view"]'
460
+ ) ?? null
461
+ );
462
+ },
463
+ []
464
+ ), y = L.useCallback(
465
+ (g) => {
466
+ var D;
467
+ if (g) {
468
+ const I = (D = b.current) == null ? void 0 : D.closest(
469
+ '[data-slot="suggestions"]'
470
+ );
471
+ I && m(I.clientWidth * 0.9);
472
+ }
473
+ s(g), a == null || a(g);
474
+ },
475
+ [a]
476
+ ), x = (g) => {
477
+ const { options: D, ...I } = t, P = {
478
+ ...I,
479
+ prompt: le(
480
+ t.prompt ?? t.label,
481
+ g.value
482
+ ),
483
+ label: `${t.label} ${g.label}`
484
+ };
485
+ n == null || n(P, o), y(!1);
486
+ };
487
+ return /* @__PURE__ */ e("div", { ref: N, className: E.container, children: /* @__PURE__ */ h(W.Root, { open: l, onOpenChange: y, children: [
488
+ /* @__PURE__ */ e(W.Trigger, { asChild: !0, children: /* @__PURE__ */ e(
489
+ k,
490
+ {
491
+ variant: "outline",
492
+ className: _.button,
493
+ children: /* @__PURE__ */ h(
494
+ "div",
495
+ {
496
+ className: v(
497
+ _["suggestion-content"],
498
+ i ? _["suggestion-content--with-description"] : ""
499
+ ),
500
+ children: [
501
+ /* @__PURE__ */ h("span", { className: E.labelRow, children: [
502
+ /* @__PURE__ */ e("span", { className: _.label, children: t.label }),
503
+ /* @__PURE__ */ e(
504
+ qt,
505
+ {
506
+ size: 14,
507
+ className: `${E.chevron} ${l ? E.chevronOpen : ""}`
508
+ }
509
+ )
510
+ ] }),
511
+ i && t.description && /* @__PURE__ */ e(
512
+ "span",
513
+ {
514
+ className: _.description,
515
+ children: t.description
516
+ }
517
+ )
518
+ ]
519
+ }
520
+ )
521
+ }
522
+ ) }),
523
+ f && /* @__PURE__ */ e(W.Portal, { container: f, children: /* @__PURE__ */ e(
524
+ W.Content,
525
+ {
526
+ className: E.dropdown,
527
+ side: "top",
528
+ align: "start",
529
+ sideOffset: 4,
530
+ collisionBoundary: u,
531
+ "aria-label": t.label,
532
+ style: p ? { width: p } : void 0,
533
+ children: (A = t.options) == null ? void 0 : A.map((g) => /* @__PURE__ */ e(
534
+ "button",
535
+ {
536
+ type: "button",
537
+ "data-slot": "suggestion-option",
538
+ className: E.option,
539
+ onClick: () => x(g),
540
+ children: g.label
541
+ },
542
+ g.id
543
+ ))
544
+ }
545
+ ) })
546
+ ] }) });
547
+ }, ce = ({
548
+ className: t,
549
+ suggestions: n,
550
+ onSubmit: o,
551
+ layout: a = "horizontal",
552
+ visible: i = !0,
553
+ onMouseEnter: l,
554
+ onMouseLeave: s,
555
+ onDropdownOpenChange: b,
556
+ translateY: f = "-100%"
557
+ }) => {
558
+ const { variant: d, reportSuggestionsRendered: u } = T(), r = it(
559
+ () => d === "floating" ? n == null ? void 0 : n.slice(0, 3) : n,
560
+ [n, d]
561
+ );
562
+ z(() => {
563
+ i && (r != null && r.length) && (u == null || u(r));
564
+ }, [i, r, u]);
565
+ const p = async (m, N) => {
566
+ let y = !0;
567
+ m.action && (y = await m.action()), y && o && m.prompt && o(m, N);
568
+ };
569
+ return !r || r.length === 0 ? null : /* @__PURE__ */ e(st, { children: i && /* @__PURE__ */ e(
570
+ M.div,
571
+ {
572
+ "data-slot": "suggestions",
573
+ className: v(
574
+ _.container,
575
+ a === "vertical" ? _.vertical : a === "floating" ? _.floating : "",
576
+ t
577
+ ),
578
+ initial: { opacity: 0, y: "-80%" },
579
+ animate: { opacity: 1, y: f },
580
+ exit: { opacity: 0, y: "-80%" },
581
+ transition: Q,
582
+ onMouseEnter: l,
583
+ onMouseLeave: s,
584
+ children: r.map(
585
+ (m, N) => {
586
+ const y = !!m.description && a !== "horizontal";
587
+ return /* @__PURE__ */ e(
588
+ M.div,
589
+ {
590
+ initial: { opacity: 0, y: 10 },
591
+ animate: { opacity: 1, y: 0 },
592
+ exit: { opacity: 0, y: 10 },
593
+ transition: {
594
+ ...Q,
595
+ delay: N * 0.05
596
+ },
597
+ children: m.options && m.options.length > 0 ? /* @__PURE__ */ e(
598
+ re,
599
+ {
600
+ suggestion: m,
601
+ onSelect: p,
602
+ availableSuggestions: r,
603
+ onOpenChange: b,
604
+ showDescription: y
605
+ }
606
+ ) : /* @__PURE__ */ e(
607
+ k,
608
+ {
609
+ onClick: (x) => {
610
+ x.stopPropagation(), p(
611
+ m,
612
+ r
613
+ );
614
+ },
615
+ variant: "outline",
616
+ className: _.button,
617
+ children: /* @__PURE__ */ h(
618
+ "div",
619
+ {
620
+ className: v(
621
+ _["suggestion-content"],
622
+ y ? _["suggestion-content--with-description"] : ""
623
+ ),
624
+ children: [
625
+ /* @__PURE__ */ e(
626
+ "span",
627
+ {
628
+ className: _.label,
629
+ children: m.label
630
+ }
631
+ ),
632
+ y && /* @__PURE__ */ e(
633
+ "span",
634
+ {
635
+ className: _.description,
636
+ children: m.description
637
+ }
638
+ )
639
+ ]
640
+ }
641
+ )
642
+ }
643
+ )
644
+ },
645
+ m.id
646
+ );
647
+ }
648
+ )
649
+ }
650
+ ) });
651
+ };
652
+ function de({ className: t, size: n = 24 }) {
653
+ return /* @__PURE__ */ e(
654
+ "svg",
655
+ {
656
+ className: t,
657
+ width: n,
658
+ height: n,
659
+ viewBox: "0 0 24 24",
660
+ fill: "none",
661
+ xmlns: "http://www.w3.org/2000/svg",
662
+ children: /* @__PURE__ */ e(
663
+ "path",
664
+ {
665
+ d: "M12.0001 13.0607L16.4697 17.5304L17.5304 16.4697L13.0607 12.0001L17.5304 7.53039L16.4697 6.46973L12.0001 10.9394L7.5304 6.46973L6.46973 7.53039L10.9394 12.0001L6.46974 16.4697L7.5304 17.5304L12.0001 13.0607Z",
666
+ fill: "currentColor"
667
+ }
668
+ )
669
+ }
670
+ );
671
+ }
672
+ const ue = "SourcesCard-module_card", me = "SourcesCard-module_heading", he = "SourcesCard-module_list", pe = "SourcesCard-module_item", fe = "SourcesCard-module_title", ge = "SourcesCard-module_label", B = {
673
+ card: ue,
674
+ heading: me,
675
+ list: he,
676
+ item: pe,
677
+ title: fe,
678
+ label: ge
679
+ };
680
+ function vn({ sources: t, className: n }) {
681
+ return t != null && t.length ? /* @__PURE__ */ h(
682
+ "section",
683
+ {
684
+ className: v(B.card, n),
685
+ "data-agenttic-sources-card": !0,
686
+ "data-slot": "sources",
687
+ children: [
688
+ /* @__PURE__ */ e("p", { className: B.heading, "data-slot": "heading", children: w("Sources", "a8c-agenttic") }),
689
+ /* @__PURE__ */ e("ul", { className: B.list, "data-slot": "list", children: t.map((o, a) => {
690
+ const i = o.title || o.url || o.label || w("Untitled source", "a8c-agenttic"), l = o.id || o.url || `${i}-${a}`;
691
+ return /* @__PURE__ */ h(
692
+ "li",
693
+ {
694
+ className: B.item,
695
+ "data-slot": "source",
696
+ children: [
697
+ o.url ? /* @__PURE__ */ e(
698
+ "a",
699
+ {
700
+ className: B.title,
701
+ "data-slot": "title",
702
+ href: o.url,
703
+ target: "_blank",
704
+ rel: "noopener noreferrer",
705
+ children: i
706
+ }
707
+ ) : /* @__PURE__ */ e(
708
+ "span",
709
+ {
710
+ className: B.title,
711
+ "data-slot": "title",
712
+ children: i
713
+ }
714
+ ),
715
+ o.label ? /* @__PURE__ */ e(
716
+ "span",
717
+ {
718
+ className: B.label,
719
+ "data-slot": "label",
720
+ children: o.label
721
+ }
722
+ ) : null
723
+ ]
724
+ },
725
+ l
726
+ );
727
+ }) })
728
+ ]
729
+ }
730
+ ) : null;
731
+ }
732
+ function be({ className: t, size: n = 24 }) {
733
+ return /* @__PURE__ */ e(
734
+ "svg",
735
+ {
736
+ width: n,
737
+ height: n,
738
+ viewBox: "0 0 24 24",
739
+ fill: "none",
740
+ xmlns: "http://www.w3.org/2000/svg",
741
+ className: t,
742
+ children: /* @__PURE__ */ e(
743
+ "path",
744
+ {
745
+ d: "M12 5C12.4142 5 12.75 5.33579 12.75 5.75V11.25H18.25C18.6642 11.25 19 11.5858 19 12C19 12.4142 18.6642 12.75 18.25 12.75H12.75V18.25C12.75 18.6642 12.4142 19 12 19C11.5858 19 11.25 18.6642 11.25 18.25V12.75H5.75C5.33579 12.75 5 12.4142 5 12C5 11.5858 5.33579 11.25 5.75 11.25H11.25V5.75C11.25 5.33579 11.5858 5 12 5Z",
746
+ fill: "currentColor"
747
+ }
748
+ )
749
+ }
750
+ );
751
+ }
752
+ function Ce({
753
+ className: t,
754
+ disabled: n,
755
+ customActions: o,
756
+ actionOrder: a,
757
+ onKeyDown: i,
758
+ layout: l,
759
+ imageUploaderRef: s
760
+ } = {}) {
761
+ const {
762
+ inputValue: b,
763
+ setInputValue: f,
764
+ handleSubmit: d,
765
+ handleKeyDown: u,
766
+ textareaRef: r,
767
+ placeholder: p,
768
+ isProcessing: m,
769
+ onStop: N,
770
+ fromCompact: y,
771
+ onExpand: x,
772
+ showExpandButton: A,
773
+ focusOnMount: g,
774
+ onInputFocus: D,
775
+ onInputBlur: I
776
+ } = T(), P = (j) => {
777
+ i == null || i(j), !j.defaultPrevented && u(j);
778
+ }, F = it(() => s ? [{
779
+ id: "image-upload",
780
+ icon: /* @__PURE__ */ e(be, {}),
781
+ onClick: () => {
782
+ var Z;
783
+ return (Z = s.current) == null ? void 0 : Z.openFileDialog();
784
+ },
785
+ variant: "ghost",
786
+ "aria-label": w("Upload image", "a8c-agenttic")
787
+ }, ...o || []] : o, [s, o]);
788
+ return /* @__PURE__ */ e(
789
+ Gt,
790
+ {
791
+ value: b,
792
+ onChange: f,
793
+ onSubmit: d,
794
+ onKeyDown: P,
795
+ onFocus: D,
796
+ onBlur: I,
797
+ textareaRef: r,
798
+ placeholder: p,
799
+ isProcessing: m,
800
+ onStop: N,
801
+ fromCompact: y,
802
+ onExpand: x,
803
+ showExpandButton: A,
804
+ focusOnMount: g,
805
+ disabled: n,
806
+ customActions: F,
807
+ actionOrder: a,
808
+ className: t,
809
+ layout: l ?? (s ? "stacked" : "inline")
810
+ }
811
+ );
812
+ }
813
+ function ve({
814
+ className: t,
815
+ showSuggestions: n,
816
+ onSelect: o
817
+ } = {}) {
818
+ const {
819
+ suggestions: a,
820
+ handleSuggestionSubmit: i,
821
+ inputValue: l,
822
+ messages: s,
823
+ variant: b,
824
+ emptyView: f
825
+ } = T(), d = tt(
826
+ (u, r) => {
827
+ try {
828
+ const p = u.prompt ?? u.label;
829
+ o == null || o(p);
830
+ } catch (p) {
831
+ console.warn("Suggestions onSelect callback failed:", p);
832
+ }
833
+ i(u, r);
834
+ },
835
+ [o, i]
836
+ );
837
+ return l && !n || f && ["floating", "embedded"].includes(b) && s.length === 0 && !l ? null : /* @__PURE__ */ e(
838
+ ce,
839
+ {
840
+ suggestions: a,
841
+ onSubmit: d,
842
+ className: t
843
+ }
844
+ );
845
+ }
846
+ function we({ className: t, size: n = 18 }) {
847
+ return /* @__PURE__ */ h(
848
+ "svg",
849
+ {
850
+ width: n,
851
+ height: n,
852
+ viewBox: "0 0 18 18",
853
+ fill: "none",
854
+ xmlns: "http://www.w3.org/2000/svg",
855
+ className: t,
856
+ role: "img",
857
+ "aria-label": "Alert",
858
+ children: [
859
+ /* @__PURE__ */ e("path", { d: "M8.4375 12V10.875H9.5625V12H8.4375Z", fill: "currentColor" }),
860
+ /* @__PURE__ */ e(
861
+ "path",
862
+ {
863
+ d: "M8.4375 6L8.4375 9.75H9.5625V6L8.4375 6Z",
864
+ fill: "currentColor"
865
+ }
866
+ ),
867
+ /* @__PURE__ */ e(
868
+ "path",
869
+ {
870
+ fillRule: "evenodd",
871
+ clipRule: "evenodd",
872
+ d: "M9 3C5.68629 3 3 5.68629 3 9C3 12.3137 5.68629 15 9 15C12.3137 15 15 12.3137 15 9C15 5.68629 12.3137 3 9 3ZM4.125 9C4.125 11.6924 6.30761 13.875 9 13.875C11.6924 13.875 13.875 11.6924 13.875 9C13.875 6.30761 11.6924 4.125 9 4.125C6.30761 4.125 4.125 6.30761 4.125 9Z",
873
+ fill: "currentColor"
874
+ }
875
+ )
876
+ ]
877
+ }
878
+ );
879
+ }
880
+ function ye({ className: t, size: n = 18 }) {
881
+ return /* @__PURE__ */ h(
882
+ "svg",
883
+ {
884
+ width: n,
885
+ height: n,
886
+ viewBox: "0 0 18 18",
887
+ fill: "none",
888
+ xmlns: "http://www.w3.org/2000/svg",
889
+ className: t,
890
+ role: "img",
891
+ "aria-label": "Alert",
892
+ children: [
893
+ /* @__PURE__ */ e(
894
+ "path",
895
+ {
896
+ d: "M9.56279 13.0952H8.43779V11.9702H9.56279V13.0952Z",
897
+ fill: "currentColor"
898
+ }
899
+ ),
900
+ /* @__PURE__ */ e(
901
+ "path",
902
+ {
903
+ d: "M8.43779 10.8452H9.56279V7.0952L8.43779 7.0952V10.8452Z",
904
+ fill: "currentColor"
905
+ }
906
+ ),
907
+ /* @__PURE__ */ e(
908
+ "path",
909
+ {
910
+ fillRule: "evenodd",
911
+ clipRule: "evenodd",
912
+ d: "M7.85634 3.48153C8.35812 2.58949 9.64245 2.58949 10.1442 3.48153L15.6118 13.2017C16.104 14.0767 15.4717 15.1577 14.4679 15.1577H3.53267C2.52884 15.1577 1.89659 14.0767 2.38873 13.2017L7.85634 3.48153ZM9.16371 4.03308C9.09203 3.90564 8.90855 3.90564 8.83686 4.03308L3.36925 13.7533C3.29895 13.8783 3.38927 14.0327 3.53267 14.0327H14.4679C14.6113 14.0327 14.7016 13.8783 14.6313 13.7533L9.16371 4.03308Z",
913
+ fill: "currentColor"
914
+ }
915
+ )
916
+ ]
917
+ }
918
+ );
919
+ }
920
+ const _e = "Notice-module_container", Ne = "Notice-module_isSuccess", xe = "Notice-module_icon", Se = "Notice-module_isWarning", Ie = "Notice-module_isError", $e = "Notice-module_content", Le = "Notice-module_actions", ke = "Notice-module_action", Ae = "Notice-module_dismissible", S = {
921
+ container: _e,
922
+ isSuccess: Ne,
923
+ icon: xe,
924
+ isWarning: Se,
925
+ isError: Ie,
926
+ content: $e,
927
+ actions: Le,
928
+ action: ke,
929
+ dismissible: Ae
930
+ };
931
+ function De({
932
+ icon: t,
933
+ message: n,
934
+ action: o,
935
+ dismissible: a = !0,
936
+ onDismiss: i,
937
+ className: l,
938
+ status: s
939
+ }) {
940
+ const f = tt(() => {
941
+ if (L.isValidElement(t))
942
+ return t;
943
+ if (t === !1 || t === null)
944
+ return null;
945
+ switch (s) {
946
+ case "warning":
947
+ return /* @__PURE__ */ e(we, {});
948
+ case "error":
949
+ return /* @__PURE__ */ e(ye, {});
950
+ default:
951
+ return null;
952
+ }
953
+ }, [t, s])();
954
+ return /* @__PURE__ */ h(
955
+ "div",
956
+ {
957
+ "data-slot": "notice",
958
+ className: v(
959
+ S.container,
960
+ {
961
+ [S.isSuccess]: s === "success",
962
+ [S.isWarning]: s === "warning",
963
+ [S.isError]: s === "error"
964
+ },
965
+ l
966
+ ),
967
+ children: [
968
+ /* @__PURE__ */ h("div", { className: S.content, children: [
969
+ f && /* @__PURE__ */ e("div", { className: S.icon, children: f }),
970
+ /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(
971
+ Ct,
972
+ {
973
+ allowedElements: ["p", "strong", "em", "a", "br"],
974
+ unwrapDisallowed: !0,
975
+ components: {
976
+ a: ({ node: d, ...u }) => /* @__PURE__ */ e(
977
+ "a",
978
+ {
979
+ ...u,
980
+ target: "_blank",
981
+ rel: "noopener noreferrer",
982
+ children: u.children
983
+ }
984
+ )
985
+ },
986
+ children: n
987
+ }
988
+ ) })
989
+ ] }),
990
+ /* @__PURE__ */ h("div", { className: S.actions, children: [
991
+ o && /* @__PURE__ */ e(
992
+ k,
993
+ {
994
+ className: S.action,
995
+ onClick: o.onClick,
996
+ variant: "link",
997
+ children: o.label
998
+ }
999
+ ),
1000
+ a && i && /* @__PURE__ */ e(
1001
+ k,
1002
+ {
1003
+ className: S.dismissible,
1004
+ onClick: i,
1005
+ variant: "ghost",
1006
+ size: "sm",
1007
+ icon: /* @__PURE__ */ e(de, {})
1008
+ }
1009
+ )
1010
+ ] })
1011
+ ]
1012
+ }
1013
+ );
1014
+ }
1015
+ function Re({ className: t } = {}) {
1016
+ const { notice: n } = T();
1017
+ return n ? /* @__PURE__ */ e(
1018
+ De,
1019
+ {
1020
+ icon: n.icon,
1021
+ message: n.message,
1022
+ action: n.action,
1023
+ dismissible: n.dismissible,
1024
+ onDismiss: n.onDismiss,
1025
+ className: t,
1026
+ status: n.status
1027
+ }
1028
+ ) : null;
1029
+ }
1030
+ const Be = "ChatFooter-module_container", Me = "ChatFooter-module_disclosure", J = {
1031
+ container: Be,
1032
+ disclosure: Me
1033
+ }, je = "https://automattic.com/ai-guidelines/";
1034
+ function Ee() {
1035
+ const t = (
1036
+ /* translators: %s: the linked label "Guidelines" (links to Automattic's AI guidelines). */
1037
+ w("You’re chatting with AI. %s.", "a8c-agenttic")
1038
+ ), [n, o] = t.split("%s");
1039
+ return /* @__PURE__ */ h(X, { children: [
1040
+ n,
1041
+ /* @__PURE__ */ e(
1042
+ "a",
1043
+ {
1044
+ href: je,
1045
+ target: "_blank",
1046
+ rel: "noopener noreferrer",
1047
+ "aria-label": w(
1048
+ "Guidelines (opens in a new tab)",
1049
+ "a8c-agenttic"
1050
+ ),
1051
+ children: w("Guidelines", "a8c-agenttic")
1052
+ }
1053
+ ),
1054
+ o
1055
+ ] });
1056
+ }
1057
+ function Pe({
1058
+ children: t
1059
+ }) {
1060
+ return t === !1 || t === null || t === void 0 ? null : /* @__PURE__ */ e(
1061
+ "div",
1062
+ {
1063
+ "data-slot": "chat-compliance-disclosure",
1064
+ className: J.disclosure,
1065
+ children: t
1066
+ }
1067
+ );
1068
+ }
1069
+ function wn({
1070
+ children: t,
1071
+ className: n,
1072
+ complianceDisclosure: o = /* @__PURE__ */ e(Ee, {})
1073
+ } = {}) {
1074
+ const a = /* @__PURE__ */ e(Pe, { children: o });
1075
+ return t ? /* @__PURE__ */ h(X, { children: [
1076
+ /* @__PURE__ */ e(
1077
+ M.div,
1078
+ {
1079
+ "data-slot": "chat-footer",
1080
+ className: v(J.container, n),
1081
+ initial: { opacity: 0, scale: 1 },
1082
+ animate: { opacity: 1, scale: 1 },
1083
+ transition: { ...U },
1084
+ children: t
1085
+ }
1086
+ ),
1087
+ a
1088
+ ] }) : /* @__PURE__ */ h(X, { children: [
1089
+ /* @__PURE__ */ h(
1090
+ M.div,
1091
+ {
1092
+ "data-slot": "chat-footer",
1093
+ className: v(J.container, n),
1094
+ initial: { opacity: 0, scale: 1 },
1095
+ animate: { opacity: 1, scale: 1 },
1096
+ transition: { ...U },
1097
+ children: [
1098
+ /* @__PURE__ */ e(ve, {}),
1099
+ /* @__PURE__ */ e(Re, {}),
1100
+ /* @__PURE__ */ e(Ce, {})
1101
+ ]
1102
+ }
1103
+ ),
1104
+ a
1105
+ ] });
1106
+ }
1107
+ const Ve = "QuestionCard-module_card", He = "QuestionCard-module_question", Ue = "QuestionCard-module_choices", Te = "QuestionCard-module_choicesGrid", Ze = "QuestionCard-module_choice", Oe = "QuestionCard-module_answered", We = "QuestionCard-module_label", Qe = "QuestionCard-module_description", $ = {
1108
+ card: Ve,
1109
+ question: He,
1110
+ choices: Ue,
1111
+ choicesGrid: Te,
1112
+ choice: Ze,
1113
+ answered: Oe,
1114
+ label: We,
1115
+ description: Qe
1116
+ };
1117
+ function yn({
1118
+ prompt: t,
1119
+ onAnswer: n,
1120
+ disabled: o = !1,
1121
+ answered: a = !1,
1122
+ answeredChoice: i,
1123
+ className: l,
1124
+ renderChoiceContent: s
1125
+ }) {
1126
+ const b = o || a, f = t.choices.slice(0, 4);
1127
+ return /* @__PURE__ */ h(
1128
+ "section",
1129
+ {
1130
+ className: v($.card, l),
1131
+ "data-agenttic-question-card": !0,
1132
+ "data-slot": "card",
1133
+ children: [
1134
+ /* @__PURE__ */ e("p", { className: $.question, "data-slot": "question", children: t.question }),
1135
+ /* @__PURE__ */ e(
1136
+ "div",
1137
+ {
1138
+ className: v(
1139
+ $.choices,
1140
+ f.length === 4 ? $.choicesGrid : void 0
1141
+ ),
1142
+ "data-slot": "choices",
1143
+ children: f.map((d, u) => {
1144
+ const r = d.message ?? d.label, p = i === r;
1145
+ return /* @__PURE__ */ h(
1146
+ "button",
1147
+ {
1148
+ type: "button",
1149
+ "data-slot": "choice",
1150
+ className: v(
1151
+ $.choice,
1152
+ p ? $.answered : void 0
1153
+ ),
1154
+ disabled: b,
1155
+ "aria-pressed": p || void 0,
1156
+ onClick: () => n(r, d),
1157
+ children: [
1158
+ /* @__PURE__ */ e("span", { className: $.label, "data-slot": "label", children: d.label }),
1159
+ d.description ? /* @__PURE__ */ e(
1160
+ "span",
1161
+ {
1162
+ className: $.description,
1163
+ "data-slot": "description",
1164
+ children: d.description
1165
+ }
1166
+ ) : null,
1167
+ s == null ? void 0 : s(d)
1168
+ ]
1169
+ },
1170
+ `${d.label}-${u}`
1171
+ );
1172
+ })
1173
+ }
1174
+ )
1175
+ ]
1176
+ }
1177
+ );
1178
+ }
1179
+ const Fe = "DiffCard-module_card", Ge = "DiffCard-module_isResolved", qe = "DiffCard-module_title", Ke = "DiffCard-module_summary", Xe = "DiffCard-module_body", Ye = "DiffCard-module_change", Je = "DiffCard-module_changeLabel", ze = "DiffCard-module_diff", tn = "DiffCard-module_removed", en = "DiffCard-module_added", nn = "DiffCard-module_resolution", on = "DiffCard-module_actions", an = "DiffCard-module_action", sn = "DiffCard-module_accept", ln = "DiffCard-module_reject", C = {
1180
+ card: Fe,
1181
+ isResolved: Ge,
1182
+ title: qe,
1183
+ summary: Ke,
1184
+ body: Xe,
1185
+ change: Ye,
1186
+ changeLabel: Je,
1187
+ diff: ze,
1188
+ removed: tn,
1189
+ added: en,
1190
+ resolution: nn,
1191
+ actions: on,
1192
+ action: an,
1193
+ accept: sn,
1194
+ reject: ln
1195
+ };
1196
+ function rn(t) {
1197
+ return typeof t == "string" ? [] : Array.isArray(t) ? t : [t];
1198
+ }
1199
+ function cn(t, n) {
1200
+ const o = typeof t.original == "string" && t.original.length > 0, a = typeof t.replacement == "string" && t.replacement.length > 0;
1201
+ return /* @__PURE__ */ h("div", { className: C.change, "data-slot": "change", children: [
1202
+ t.label ? /* @__PURE__ */ e("span", { className: C.changeLabel, "data-slot": "change-label", children: t.label }) : null,
1203
+ o ? /* @__PURE__ */ e(
1204
+ "pre",
1205
+ {
1206
+ className: v(C.diff, C.removed),
1207
+ "data-slot": "original",
1208
+ children: t.original
1209
+ }
1210
+ ) : null,
1211
+ a ? /* @__PURE__ */ e(
1212
+ "pre",
1213
+ {
1214
+ className: v(C.diff, C.added),
1215
+ "data-slot": "replacement",
1216
+ children: t.replacement
1217
+ }
1218
+ ) : null
1219
+ ] }, n);
1220
+ }
1221
+ function _n({
1222
+ diff: t,
1223
+ title: n,
1224
+ summary: o,
1225
+ onResolve: a,
1226
+ disabled: i = !1,
1227
+ resolved: l,
1228
+ acceptLabel: s,
1229
+ rejectLabel: b,
1230
+ className: f,
1231
+ renderDiff: d
1232
+ }) {
1233
+ const u = !!l, r = i || u, p = rn(t);
1234
+ let m;
1235
+ return d ? m = d(t) : typeof t == "string" ? m = /* @__PURE__ */ e("pre", { className: C.diff, "data-slot": "diff", children: t }) : m = p.map(cn), /* @__PURE__ */ h(
1236
+ "section",
1237
+ {
1238
+ className: v(
1239
+ C.card,
1240
+ u ? C.isResolved : void 0,
1241
+ f
1242
+ ),
1243
+ "data-agenttic-diff-card": !0,
1244
+ "data-slot": "card",
1245
+ children: [
1246
+ n ? /* @__PURE__ */ e("p", { className: C.title, "data-slot": "title", children: n }) : null,
1247
+ o ? /* @__PURE__ */ e("p", { className: C.summary, "data-slot": "summary", children: o }) : null,
1248
+ /* @__PURE__ */ e("div", { className: C.body, "data-slot": "body", children: m }),
1249
+ u ? /* @__PURE__ */ e("p", { className: C.resolution, "data-slot": "resolution", children: l === "accepted" ? w("Accepted", "a8c-agenttic") : w("Rejected", "a8c-agenttic") }) : /* @__PURE__ */ h("div", { className: C.actions, "data-slot": "actions", children: [
1250
+ /* @__PURE__ */ e(
1251
+ "button",
1252
+ {
1253
+ type: "button",
1254
+ "data-slot": "accept",
1255
+ className: v(C.action, C.accept),
1256
+ disabled: r,
1257
+ onClick: () => a("accepted"),
1258
+ children: s ?? w("Accept", "a8c-agenttic")
1259
+ }
1260
+ ),
1261
+ /* @__PURE__ */ e(
1262
+ "button",
1263
+ {
1264
+ type: "button",
1265
+ "data-slot": "reject",
1266
+ className: v(C.action, C.reject),
1267
+ disabled: r,
1268
+ onClick: () => a("rejected"),
1269
+ children: b ?? w("Reject", "a8c-agenttic")
1270
+ }
1271
+ )
1272
+ ] })
1273
+ ]
1274
+ }
1275
+ );
1276
+ }
1277
+ export {
1278
+ Cn as A,
1279
+ k as B,
1280
+ Gt as C,
1281
+ Ee as D,
1282
+ De as N,
1283
+ be as P,
1284
+ yn as Q,
1285
+ ce as S,
1286
+ de as X,
1287
+ Ot as a,
1288
+ wt as b,
1289
+ v as c,
1290
+ vn as d,
1291
+ wn as e,
1292
+ U as f,
1293
+ Re as g,
1294
+ ve as h,
1295
+ Ce as i,
1296
+ Pe as j,
1297
+ Ft as k,
1298
+ _n as l,
1299
+ vt as m,
1300
+ bn as n,
1301
+ Pt as o,
1302
+ Et as p,
1303
+ J as s,
1304
+ T as u
1305
+ };