@actioneer/ads 0.3.0 → 0.4.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 (35) hide show
  1. package/components/ai-elements/agent-trace.d.ts +87 -0
  2. package/components/ai-elements/agent-trace.js +180 -0
  3. package/components/ai-elements/chain-of-thought.d.ts +25 -5
  4. package/components/ai-elements/chain-of-thought.js +227 -183
  5. package/components/ai-elements/index.d.ts +1 -0
  6. package/components/ai-elements/research-activity.d.ts +17 -0
  7. package/components/ai-elements/research-activity.js +125 -107
  8. package/components/ai-elements/task.d.ts +7 -3
  9. package/components/ai-elements/task.js +84 -52
  10. package/components/ai-elements/tool.js +19 -19
  11. package/components/ai-elements/voice.d.ts +28 -12
  12. package/components/ai-elements/voice.js +270 -649
  13. package/components/alert.js +28 -16
  14. package/components/assistant-ui/composer-harness.js +5 -4
  15. package/components/code-block.d.ts +11 -5
  16. package/components/code-block.js +161 -62
  17. package/components/index.js +259 -257
  18. package/components/scroll-area.js +10 -10
  19. package/components/sidebar.js +1 -1
  20. package/components/stepper.d.ts +17 -9
  21. package/components/stepper.js +85 -96
  22. package/lib/icons.js +2 -2
  23. package/lib/motion.d.ts +2 -0
  24. package/lib/motion.js +21 -20
  25. package/llms.txt +7 -1
  26. package/manifest.json +69 -6
  27. package/package.json +1 -1
  28. package/styles.css +110 -4
  29. package/theme.css +12 -4
  30. package/components/agents-ui/agent-audio-visualizer-aura.d.ts +0 -11
  31. package/components/agents-ui/agent-audio-visualizer-aura.js +0 -277
  32. package/components/agents-ui/agent-audio-visualizer-wave.d.ts +0 -12
  33. package/components/agents-ui/agent-audio-visualizer-wave.js +0 -203
  34. package/components/agents-ui/react-shader-toy.d.ts +0 -87
  35. package/components/agents-ui/react-shader-toy.js +0 -531
@@ -1,19 +1,19 @@
1
1
  "use client";
2
2
  import { jsxs as f, jsx as o } from "react/jsx-runtime";
3
3
  import * as i from "react";
4
- import { ScrollArea as a } from "radix-ui";
4
+ import { ScrollArea as e } from "radix-ui";
5
5
  import { cn as s } from "../lib/cn.js";
6
6
  const m = i.forwardRef(
7
- ({ className: e, children: l, orientation: r = "vertical", viewportClassName: t, ...n }, d) => /* @__PURE__ */ f(
8
- a.Root,
7
+ ({ className: a, children: l, orientation: r = "vertical", viewportClassName: t, ...n }, d) => /* @__PURE__ */ f(
8
+ e.Root,
9
9
  {
10
10
  ref: d,
11
11
  "data-slot": "scroll-area",
12
- className: s("relative overflow-hidden", e),
12
+ className: s("relative overflow-hidden border border-border", a),
13
13
  ...n,
14
14
  children: [
15
15
  /* @__PURE__ */ o(
16
- a.Viewport,
16
+ e.Viewport,
17
17
  {
18
18
  className: s("size-full rounded-[inherit]", t),
19
19
  children: l
@@ -21,14 +21,14 @@ const m = i.forwardRef(
21
21
  ),
22
22
  (r === "vertical" || r === "both") && /* @__PURE__ */ o(c, { orientation: "vertical" }),
23
23
  (r === "horizontal" || r === "both") && /* @__PURE__ */ o(c, { orientation: "horizontal" }),
24
- /* @__PURE__ */ o(a.Corner, {})
24
+ /* @__PURE__ */ o(e.Corner, {})
25
25
  ]
26
26
  }
27
27
  )
28
28
  );
29
29
  m.displayName = "ScrollArea";
30
- const c = i.forwardRef(({ className: e, orientation: l = "vertical", ...r }, t) => /* @__PURE__ */ o(
31
- a.ScrollAreaScrollbar,
30
+ const c = i.forwardRef(({ className: a, orientation: l = "vertical", ...r }, t) => /* @__PURE__ */ o(
31
+ e.ScrollAreaScrollbar,
32
32
  {
33
33
  ref: t,
34
34
  orientation: l,
@@ -38,11 +38,11 @@ const c = i.forwardRef(({ className: e, orientation: l = "vertical", ...r }, t)
38
38
  "transition-colors duration-(--duration-fast) ease-out motion-reduce:transition-none",
39
39
  l === "vertical" && "h-full w-2.5",
40
40
  l === "horizontal" && "h-2.5 flex-col",
41
- e
41
+ a
42
42
  ),
43
43
  ...r,
44
44
  children: /* @__PURE__ */ o(
45
- a.ScrollAreaThumb,
45
+ e.ScrollAreaThumb,
46
46
  {
47
47
  "data-slot": "scroll-bar-thumb",
48
48
  className: "relative flex-1 rounded-full bg-fill transition-colors duration-(--duration-fast) ease-out hover:bg-border-strong motion-reduce:transition-none"
@@ -235,7 +235,7 @@ const B = n.forwardRef(
235
235
  className: o("group-data-[collapsed=true]/sidebar:hidden", a),
236
236
  ...r,
237
237
  children: [
238
- e && /* @__PURE__ */ t("div", { className: "mb-1.5 px-3 text-[length:var(--sidebar-section-label-size)] leading-[var(--text-xs--line-height)] font-semibold uppercase tracking-wider text-muted-foreground", children: e }),
238
+ e && /* @__PURE__ */ t("div", { className: "mb-1.5 px-3 text-[length:var(--sidebar-section-label-size)] leading-[var(--text-xs--line-height)] font-normal uppercase tracking-wider text-muted-foreground", children: e }),
239
239
  /* @__PURE__ */ t("div", { className: "flex flex-col gap-0.5", children: i })
240
240
  ]
241
241
  }
@@ -5,26 +5,34 @@ import * as React from "react";
5
5
  *
6
6
  * `Progress` is a continuous bar and `Timeline` is a chronological list of
7
7
  * content; neither says "step 2 of 5, and here is what 3 through 5 will be".
8
- * Completed steps collapse to a check so the eye counts what is left, not what
9
- * is done. The connector is a functional rail, like `Tree`'s — an allowed
10
- * stroke.
8
+ * Completed steps collapse to a green check so the eye counts what is left,
9
+ * not what is done; the current step stays brand-black; a failed step turns
10
+ * danger and keeps its place in the sequence rather than disappearing — a
11
+ * wizard that hides the step that broke is unusable.
12
+ *
13
+ * One label per step, deliberately: a sub-label under every step is the
14
+ * redundant chrome design principle 8 warns about.
15
+ *
16
+ * Horizontal only. The connector is a functional rail, like `Tree`'s — an
17
+ * allowed stroke — running the full distance between two markers so the
18
+ * sequence reads as one continuous line rather than a row of ticks.
11
19
  */
12
- export type StepperStatus = "complete" | "current" | "upcoming";
20
+ export type StepperStatus = "complete" | "current" | "upcoming" | "error";
13
21
  export interface StepperStep {
14
22
  /** Stable key, also used for the accessible label. */
15
23
  id: string;
16
24
  label: React.ReactNode;
17
- /** Optional qualifier under the label. */
18
- description?: React.ReactNode;
25
+ /** Marks a step that failed. Overrides the index-derived status. */
26
+ isError?: boolean;
19
27
  }
20
28
  declare const markerVariants: (props?: ({
21
- status?: "current" | "complete" | "upcoming" | null | undefined;
29
+ status?: "current" | "error" | "complete" | "upcoming" | null | undefined;
30
+ size?: "sm" | "md" | null | undefined;
22
31
  } & import('class-variance-authority/types').ClassProp) | undefined) => string;
23
- export interface StepperProps extends Omit<React.HTMLAttributes<HTMLOListElement>, "onSelect">, VariantProps<typeof markerVariants> {
32
+ export interface StepperProps extends Omit<React.HTMLAttributes<HTMLOListElement>, "onSelect">, Pick<VariantProps<typeof markerVariants>, "size"> {
24
33
  steps: StepperStep[];
25
34
  /** Zero-based index of the current step. */
26
35
  activeIndex: number;
27
- orientation?: "horizontal" | "vertical";
28
36
  /** Makes completed steps navigable. */
29
37
  onSelect?: (index: number) => void;
30
38
  }
@@ -1,113 +1,102 @@
1
1
  "use client";
2
- import { jsx as r, jsxs as l } from "react/jsx-runtime";
3
- import * as h from "react";
4
- import { cva as v } from "class-variance-authority";
5
- import { cn as t } from "../lib/cn.js";
6
- import { Check as d } from "../lib/icons.js";
7
- const f = v(
8
- t(
9
- "flex size-6 shrink-0 items-center justify-center rounded-full text-xs font-medium tabular-nums",
2
+ import { jsx as e, jsxs as m } from "react/jsx-runtime";
3
+ import * as v from "react";
4
+ import { cva as k } from "class-variance-authority";
5
+ import { cn as s } from "../lib/cn.js";
6
+ import { Check as u, Close as f } from "../lib/icons.js";
7
+ const p = k(
8
+ s(
9
+ "flex shrink-0 items-center justify-center rounded-full font-medium tabular-nums",
10
10
  "transition-colors duration-(--duration-fast) ease-out motion-reduce:transition-none"
11
11
  ),
12
12
  {
13
13
  variants: {
14
14
  status: {
15
- complete: "bg-brand text-brand-foreground [&>svg]:size-3.5",
15
+ complete: "bg-success text-success-foreground",
16
16
  current: "bg-brand text-brand-foreground",
17
- upcoming: "bg-fill text-tertiary"
17
+ upcoming: "bg-fill text-tertiary",
18
+ error: "bg-danger text-danger-foreground"
19
+ },
20
+ size: {
21
+ sm: "size-5 text-[11px] [&>svg]:size-3",
22
+ md: "size-6 text-xs [&>svg]:size-3.5"
18
23
  }
19
24
  },
20
- defaultVariants: { status: "upcoming" }
25
+ defaultVariants: { status: "upcoming", size: "md" }
21
26
  }
22
- ), N = h.forwardRef(
23
- ({ className: g, steps: o, activeIndex: c, orientation: m = "horizontal", onSelect: i, ...u }, b) => {
24
- const a = m === "vertical";
25
- return /* @__PURE__ */ r(
26
- "ol",
27
- {
28
- ref: b,
29
- "data-slot": "stepper",
30
- "data-orientation": m,
31
- "aria-label": u["aria-label"] ?? "Progress",
32
- className: t(
33
- "flex w-full",
34
- a ? "flex-col gap-0" : "flex-row items-start gap-0",
35
- g
36
- ),
37
- ...u,
38
- children: o.map((n, s) => {
39
- const e = s < c ? "complete" : s === c ? "current" : "upcoming", p = s === o.length - 1, x = !!i && e === "complete";
40
- return /* @__PURE__ */ l(
41
- "li",
42
- {
43
- "data-status": e,
44
- "aria-current": e === "current" ? "step" : void 0,
45
- className: t(
46
- "flex min-w-0",
47
- a ? "flex-row gap-3" : "flex-1 flex-col gap-2",
48
- !p && a && "pb-6"
49
- ),
50
- children: [
51
- /* @__PURE__ */ l(
52
- "div",
27
+ ), w = v.forwardRef(
28
+ ({
29
+ className: d,
30
+ steps: l,
31
+ activeIndex: a,
32
+ size: n = "md",
33
+ onSelect: o,
34
+ ...c
35
+ }, g) => /* @__PURE__ */ e(
36
+ "ol",
37
+ {
38
+ ref: g,
39
+ "data-slot": "stepper",
40
+ "aria-label": c["aria-label"] ?? "Progress",
41
+ className: s("flex w-full flex-row items-start", d),
42
+ ...c,
43
+ children: l.map((i, t) => {
44
+ const r = i.isError ? "error" : t < a ? "complete" : t === a ? "current" : "upcoming", b = t === l.length - 1, x = !!o && t < a, h = t < a && !i.isError, N = /* @__PURE__ */ e("span", { "aria-hidden": !0, className: p({ status: r, size: n }), children: r === "complete" ? /* @__PURE__ */ e(u, {}) : r === "error" ? /* @__PURE__ */ e(f, {}) : t + 1 });
45
+ return /* @__PURE__ */ m(
46
+ "li",
47
+ {
48
+ "data-status": r,
49
+ "aria-current": r === "current" ? "step" : void 0,
50
+ className: "flex min-w-0 flex-1 flex-col gap-2",
51
+ children: [
52
+ /* @__PURE__ */ m("div", { className: "flex w-full flex-row items-center gap-2", children: [
53
+ x ? /* @__PURE__ */ e(
54
+ "button",
53
55
  {
54
- className: t(
55
- "flex min-w-0",
56
- a ? "flex-col items-center gap-1" : "w-full flex-row items-center gap-2"
56
+ type: "button",
57
+ onClick: () => o == null ? void 0 : o(t),
58
+ "aria-label": `Go to step ${t + 1}`,
59
+ className: s(
60
+ p({ status: r, size: n }),
61
+ "cursor-pointer outline-none focus-visible:ring-3 focus-visible:ring-ring",
62
+ "active:scale-(--scale-press)"
57
63
  ),
58
- children: [
59
- x ? /* @__PURE__ */ r(
60
- "button",
61
- {
62
- type: "button",
63
- onClick: () => i == null ? void 0 : i(s),
64
- "aria-label": `Go to step ${s + 1}`,
65
- className: t(
66
- f({ status: e }),
67
- "cursor-pointer outline-none focus-visible:ring-3 focus-visible:ring-ring",
68
- "active:scale-(--scale-press)"
69
- ),
70
- children: /* @__PURE__ */ r(d, { "aria-hidden": !0 })
71
- }
72
- ) : /* @__PURE__ */ r("span", { "aria-hidden": !0, className: f({ status: e }), children: e === "complete" ? /* @__PURE__ */ r(d, {}) : s + 1 }),
73
- !p && /* @__PURE__ */ r(
74
- "span",
75
- {
76
- "aria-hidden": !0,
77
- className: t(
78
- "shrink-0 bg-border",
79
- a ? "w-px flex-1" : "h-px flex-1",
80
- e === "complete" && "bg-brand"
81
- )
82
- }
83
- )
84
- ]
64
+ children: r === "complete" ? /* @__PURE__ */ e(u, {}) : r === "error" ? /* @__PURE__ */ e(f, {}) : t + 1
85
65
  }
86
- ),
87
- /* @__PURE__ */ l("div", { className: t("min-w-0", a ? "pb-1" : "pr-4"), children: [
88
- /* @__PURE__ */ r(
89
- "div",
90
- {
91
- className: t(
92
- "truncate text-base",
93
- e === "upcoming" ? "text-tertiary" : "text-foreground"
94
- ),
95
- children: n.label
96
- }
66
+ ) : N,
67
+ !b && /* @__PURE__ */ e(
68
+ "span",
69
+ {
70
+ "aria-hidden": !0,
71
+ className: s(
72
+ "h-px flex-1 shrink-0 bg-border",
73
+ h && "bg-success"
74
+ )
75
+ }
76
+ )
77
+ ] }),
78
+ /* @__PURE__ */ e("div", { className: "min-w-0 pr-4", children: /* @__PURE__ */ e(
79
+ "div",
80
+ {
81
+ className: s(
82
+ "truncate",
83
+ n === "sm" ? "text-xs" : "text-base",
84
+ r === "upcoming" ? "text-tertiary" : "text-foreground",
85
+ r === "error" && "text-danger"
97
86
  ),
98
- n.description && /* @__PURE__ */ r("div", { className: "truncate text-xs text-tertiary", children: n.description })
99
- ] })
100
- ]
101
- },
102
- n.id
103
- );
104
- })
105
- }
106
- );
107
- }
87
+ children: i.label
88
+ }
89
+ ) })
90
+ ]
91
+ },
92
+ i.id
93
+ );
94
+ })
95
+ }
96
+ )
108
97
  );
109
- N.displayName = "Stepper";
98
+ w.displayName = "Stepper";
110
99
  export {
111
- N as Stepper,
112
- f as stepperMarkerVariants
100
+ w as Stepper,
101
+ p as stepperMarkerVariants
113
102
  };
package/lib/icons.js CHANGED
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { jsx as r } from "react/jsx-runtime";
3
3
  import { HugeiconsIcon as s } from "@hugeicons/react";
4
- import { Tick02Icon as a, Copy01Icon as i, File02Icon as I, Cancel01Icon as l, Upload04Icon as h, ViewOffIcon as C, ViewIcon as g, MinusSignIcon as p, PlusSignIcon as f, ArrowDown01Icon as d, Search01Icon as u, InformationCircleIcon as k, AlertCircleIcon as w, Alert02Icon as A, CheckmarkCircle02Icon as L, ArrowLeft01Icon as m, ArrowRight01Icon as S, DatabaseIcon as M, Maximize01Icon as O, Magnet01Icon as P, ArrowUp01Icon as T, ArrowUpDownIcon as U, InboxIcon as B, ArrowLeft02Icon as D, MoreHorizontalIcon as y, RefreshIcon as F, CancelCircleIcon as R, Attachment01Icon as b, SparklesIcon as x, Clock01Icon as H, QuoteDownIcon as v, BrainIcon as G, Loading03Icon as V, AtIcon as z, BoltIcon as E, Table01Icon as W, File01Icon as N, Download01Icon as Q, Image01Icon as j, BracesIcon as q, MusicNote01Icon as J, Video01Icon as K, ImageNotFound01Icon as X, Activity01Icon as Y, AiChat02Icon as Z, ArrowDown02Icon as _, ArrowRight02Icon as $, ArrowUp02Icon as oo, Route01Icon as no, BlocksIcon as co, BookOpen01Icon as eo, Calendar01Icon as to, Call02Icon as ro, CheckListIcon as so, CircleDashedIcon as ao, CodeIcon as io, ComponentIcon as Io, LinkSquare02Icon as lo, Folder01Icon as ho, FolderOpenIcon as Co, DashboardSpeed01Icon as go, GitBranchIcon as po, HashtagIcon as fo, HistoryIcon as uo, Home01Icon as ko, ImageUploadIcon as wo, GridViewIcon as Ao, Leaf01Icon as Lo, Idea01Icon as mo, Link01Icon as So, Logout01Icon as Mo, Mail01Icon as Oo, Mic01Icon as Po, MicOff01Icon as To, MoreVerticalIcon as Uo, PaintBoardIcon as Bo, SidebarLeftIcon as Do, PencilEdit02Icon as yo, PhoneOff01Icon as Fo, PieChartIcon as Ro, PlugSocketIcon as bo, RocketIcon as xo, Settings01Icon as Ho, ShapesIcon as vo, Share01Icon as Go, StarIcon as Vo, StopIcon as zo, Target01Icon as Eo, Telescope01Icon as Wo, TextFontIcon as No, ToggleOnIcon as Qo, Delete02Icon as jo, UserIcon as qo, UserGroupIcon as Jo, Wrench01Icon as Ko, ArrowUpRight01Icon as Xo } from "@hugeicons/core-free-icons";
4
+ import { Tick02Icon as a, Copy01Icon as i, File02Icon as I, Cancel01Icon as l, Upload01Icon as h, ViewOffIcon as C, ViewIcon as g, MinusSignIcon as p, PlusSignIcon as f, ArrowDown01Icon as d, Search01Icon as u, InformationCircleIcon as k, AlertCircleIcon as w, Alert02Icon as A, CheckmarkCircle02Icon as L, ArrowLeft01Icon as m, ArrowRight01Icon as S, DatabaseIcon as M, Maximize01Icon as O, Magnet01Icon as P, ArrowUp01Icon as T, ArrowUpDownIcon as U, InboxIcon as B, ArrowLeft02Icon as D, MoreHorizontalIcon as y, SparklesIcon as F, Wrench01Icon as R, CancelCircleIcon as b, Clock01Icon as x, CircleDashedIcon as H, RefreshIcon as v, Attachment01Icon as G, QuoteDownIcon as V, BrainIcon as z, Loading03Icon as E, AtIcon as W, BoltIcon as N, Table01Icon as Q, File01Icon as j, Download01Icon as q, Image01Icon as J, BracesIcon as K, MusicNote01Icon as X, Video01Icon as Y, ImageNotFound01Icon as Z, Activity01Icon as _, AiChat02Icon as $, ArrowDown02Icon as oo, ArrowRight02Icon as no, ArrowUp02Icon as co, Route01Icon as eo, BlocksIcon as to, BookOpen01Icon as ro, Calendar01Icon as so, Call02Icon as ao, CheckListIcon as io, CodeIcon as Io, ComponentIcon as lo, LinkSquare02Icon as ho, Folder01Icon as Co, FolderOpenIcon as go, DashboardSpeed01Icon as po, GitBranchIcon as fo, HashtagIcon as uo, HistoryIcon as ko, Home01Icon as wo, ImageUploadIcon as Ao, GridViewIcon as Lo, Leaf01Icon as mo, Idea01Icon as So, Link01Icon as Mo, Logout01Icon as Oo, Mail01Icon as Po, Mic01Icon as To, MicOff01Icon as Uo, MoreVerticalIcon as Bo, PaintBoardIcon as Do, SidebarLeftIcon as yo, PencilEdit02Icon as Fo, PhoneOff01Icon as Ro, PieChartIcon as bo, PlugSocketIcon as xo, RocketIcon as Ho, Settings01Icon as vo, ShapesIcon as Go, Share01Icon as Vo, StarIcon as zo, StopIcon as Eo, Target01Icon as Wo, Telescope01Icon as No, TextFontIcon as Qo, ToggleOnIcon as jo, Delete02Icon as qo, UserIcon as Jo, UserGroupIcon as Ko, ArrowUpRight01Icon as Xo } from "@hugeicons/core-free-icons";
5
5
  function o(c, e) {
6
6
  function n(t) {
7
7
  return /* @__PURE__ */ r(s, { icon: c, size: "1em", ...t });
8
8
  }
9
9
  return n.displayName = e, n;
10
10
  }
11
- const $o = o(_, "ArrowDown"), on = o(D, "ArrowLeft"), nn = o($, "ArrowRight"), cn = o(oo, "ArrowUp"), en = o(Xo, "ArrowUpRight"), tn = o(d, "ChevronDown"), rn = o(m, "ChevronLeft"), sn = o(S, "ChevronRight"), an = o(T, "ChevronUp"), In = o(U, "SortIcon"), ln = o(lo, "ExternalLink"), hn = o(Do, "PanelLeft"), Cn = o(z, "At"), gn = o(ro, "Call"), pn = o(l, "Close"), fn = o(R, "CloseCircle"), dn = o(i, "Copy"), un = o(Q, "Download"), kn = o(Mo, "LogOut"), wn = o(Po, "Mic"), An = o(To, "MicOff"), Ln = o(Fo, "PhoneOff"), mn = o(yo, "Pencil"), Sn = o(v, "Quote"), Mn = o(g, "Eye"), On = o(C, "EyeOff"), Pn = o(fo, "Hash"), Tn = o(wo, "ImageUpload"), Un = o(h, "Upload"), Bn = o(No, "TextFont"), Dn = o(Qo, "ToggleOn"), yn = o(to, "Calendar"), Fn = o(H, "Clock"), Rn = o(io, "Code"), bn = o(zo, "Stop"), xn = o(P, "Magnet"), Hn = o(O, "Maximize"), vn = o(p, "Minus"), Gn = o(y, "MoreHorizontal"), Vn = o(Uo, "MoreVertical"), zn = o(So, "Link"), En = o(f, "Plus"), Wn = o(F, "Refresh"), Nn = o(no, "AuditTrail"), Qn = o(u, "Search"), jn = o(Go, "Share"), qn = o(jo, "Trash"), Jn = o(a, "Check"), Kn = o(V, "Loader"), Xn = o(L, "CheckCircle"), Yn = o(k, "Info"), Zn = o(A, "Warning"), _n = o(w, "WarningCircle"), $n = o(Y, "Activity"), oc = o(Z, "AgentChat"), nc = o(E, "Bolt"), cc = o(eo, "BookOpen"), ec = o(G, "Brain"), tc = o(so, "CheckList"), rc = o(Io, "Component"), sc = o(M, "Database"), ac = o(W, "Table"), ic = o(N, "File"), Ic = o(I, "FileText"), lc = o(ho, "Folder"), hc = o(j, "Image"), Cc = o(X, "ImageOff"), gc = o(J, "Music"), pc = o(K, "Video"), fc = o(q, "Braces"), dc = o(Co, "FolderOpen"), uc = o(go, "Gauge"), kc = o(po, "GitBranch"), wc = o(uo, "HistoryClock"), Ac = o(ko, "Home"), Lc = o(co, "Blocks"), mc = o(B, "Inbox"), Sc = o(mo, "Lightbulb"), Mc = o(Lo, "Leaf"), Oc = o(Ao, "LayoutGrid"), Pc = o(Oo, "Mail"), Tc = o(Bo, "Palette"), Uc = o(Ro, "PieChart"), Bc = o(bo, "Plug"), Dc = o(xo, "Rocket"), yc = o(Ho, "Settings"), Fc = o(vo, "Shapes"), Rc = o(x, "Sparkles"), bc = o(Vo, "Star"), xc = o(Wo, "Telescope"), Hc = o(Eo, "Target"), vc = o(qo, "User"), Gc = o(Jo, "Users"), Vc = o(b, "Paperclip"), zc = o(ao, "CircleDashed"), Ec = o(Ko, "Wrench");
11
+ const $o = o(oo, "ArrowDown"), on = o(D, "ArrowLeft"), nn = o(no, "ArrowRight"), cn = o(co, "ArrowUp"), en = o(Xo, "ArrowUpRight"), tn = o(d, "ChevronDown"), rn = o(m, "ChevronLeft"), sn = o(S, "ChevronRight"), an = o(T, "ChevronUp"), In = o(U, "SortIcon"), ln = o(ho, "ExternalLink"), hn = o(yo, "PanelLeft"), Cn = o(W, "At"), gn = o(ao, "Call"), pn = o(l, "Close"), fn = o(b, "CloseCircle"), dn = o(i, "Copy"), un = o(q, "Download"), kn = o(Oo, "LogOut"), wn = o(To, "Mic"), An = o(Uo, "MicOff"), Ln = o(Ro, "PhoneOff"), mn = o(Fo, "Pencil"), Sn = o(V, "Quote"), Mn = o(g, "Eye"), On = o(C, "EyeOff"), Pn = o(uo, "Hash"), Tn = o(Ao, "ImageUpload"), Un = o(h, "Upload"), Bn = o(Qo, "TextFont"), Dn = o(jo, "ToggleOn"), yn = o(so, "Calendar"), Fn = o(x, "Clock"), Rn = o(Io, "Code"), bn = o(Eo, "Stop"), xn = o(P, "Magnet"), Hn = o(O, "Maximize"), vn = o(p, "Minus"), Gn = o(y, "MoreHorizontal"), Vn = o(Bo, "MoreVertical"), zn = o(Mo, "Link"), En = o(f, "Plus"), Wn = o(v, "Refresh"), Nn = o(eo, "AuditTrail"), Qn = o(u, "Search"), jn = o(Vo, "Share"), qn = o(qo, "Trash"), Jn = o(a, "Check"), Kn = o(E, "Loader"), Xn = o(L, "CheckCircle"), Yn = o(k, "Info"), Zn = o(A, "Warning"), _n = o(w, "WarningCircle"), $n = o(_, "Activity"), oc = o($, "AgentChat"), nc = o(N, "Bolt"), cc = o(ro, "BookOpen"), ec = o(z, "Brain"), tc = o(io, "CheckList"), rc = o(lo, "Component"), sc = o(M, "Database"), ac = o(Q, "Table"), ic = o(j, "File"), Ic = o(I, "FileText"), lc = o(Co, "Folder"), hc = o(J, "Image"), Cc = o(Z, "ImageOff"), gc = o(X, "Music"), pc = o(Y, "Video"), fc = o(K, "Braces"), dc = o(go, "FolderOpen"), uc = o(po, "Gauge"), kc = o(fo, "GitBranch"), wc = o(ko, "HistoryClock"), Ac = o(wo, "Home"), Lc = o(to, "Blocks"), mc = o(B, "Inbox"), Sc = o(So, "Lightbulb"), Mc = o(mo, "Leaf"), Oc = o(Lo, "LayoutGrid"), Pc = o(Po, "Mail"), Tc = o(Do, "Palette"), Uc = o(bo, "PieChart"), Bc = o(xo, "Plug"), Dc = o(Ho, "Rocket"), yc = o(vo, "Settings"), Fc = o(Go, "Shapes"), Rc = o(F, "Sparkles"), bc = o(zo, "Star"), xc = o(No, "Telescope"), Hc = o(Wo, "Target"), vc = o(Jo, "User"), Gc = o(Ko, "Users"), Vc = o(G, "Paperclip"), zc = o(H, "CircleDashed"), Ec = o(R, "Wrench");
12
12
  export {
13
13
  $n as Activity,
14
14
  oc as AgentChat,
package/lib/motion.d.ts CHANGED
@@ -18,6 +18,8 @@ export declare const EASE_IN_OUT: readonly [0.77, 0, 0.175, 1];
18
18
  export declare const EASE_EXPO_OUT: readonly [0.16, 1, 0.3, 1];
19
19
  /** @deprecated Use `EASE_EXPO_OUT`. Kept as a compatibility alias. */
20
20
  export declare const EASE_DRAWER: readonly [0.16, 1, 0.3, 1];
21
+ /** Mirror of --ease-disclosure — height reveals (see theme.css). */
22
+ export declare const EASE_DISCLOSURE: readonly [0.32, 0.72, 0, 1];
21
23
  /**
22
24
  * Floating panels anchored to a trigger (popover / dropdown / listboxes).
23
25
  * Pair with an origin-aware `transformOrigin` so the panel grows out of the
package/lib/motion.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i = a, r = {
2
+ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i = a, r = [0.32, 0.72, 0, 1], o = {
3
3
  hidden: {
4
4
  opacity: 0,
5
5
  transform: "translate3d(0, -4px, 0) scale(0.96)",
@@ -10,7 +10,7 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
10
10
  transform: "translate3d(0, 0, 0) scale(1)",
11
11
  transition: { duration: 0.15, ease: t }
12
12
  }
13
- }, o = {
13
+ }, e = {
14
14
  hidden: {
15
15
  opacity: 0,
16
16
  transform: "scale(0.96)",
@@ -21,7 +21,7 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
21
21
  transform: "scale(1)",
22
22
  transition: { duration: 0.14, ease: t }
23
23
  }
24
- }, e = {
24
+ }, d = {
25
25
  hidden: {
26
26
  opacity: 0,
27
27
  transform: "translate3d(0, 8px, 0) scale(0.96)",
@@ -32,23 +32,23 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
32
32
  transform: "translate3d(0, 0, 0) scale(1)",
33
33
  transition: { duration: 0.22, ease: t }
34
34
  }
35
- }, d = {
35
+ }, c = {
36
36
  hidden: { opacity: 0, transition: { duration: 0.12, ease: t } },
37
37
  visible: { opacity: 1, transition: { duration: 0.18, ease: t } }
38
- }, c = {
38
+ }, l = {
39
39
  hidden: { opacity: 0, transition: { duration: 0.14, ease: t } },
40
40
  visible: { opacity: 1, transition: { duration: 0.22, ease: t } }
41
- }, l = {
41
+ }, p = {
42
42
  duration: 0.24,
43
43
  ease: a
44
- }, p = {
44
+ }, f = {
45
45
  duration: 0.18,
46
46
  ease: a
47
- }, f = {
47
+ }, m = {
48
48
  right: { transform: "translate3d(100%, 0, 0)" },
49
49
  left: { transform: "translate3d(-100%, 0, 0)" },
50
50
  bottom: { transform: "translate3d(0, 100%, 0)" }
51
- }, m = {
51
+ }, y = {
52
52
  hidden: { opacity: 0, transform: "translate3d(0, 8px, 0)" },
53
53
  visible: {
54
54
  opacity: 1,
@@ -60,7 +60,7 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
60
60
  stiffness: 420,
61
61
  damping: 34,
62
62
  mass: 0.9
63
- }, y = {
63
+ }, u = {
64
64
  hidden: {
65
65
  opacity: 0,
66
66
  transform: "translate3d(0, 16px, 0) scale(0.98)",
@@ -78,19 +78,20 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
78
78
  }
79
79
  };
80
80
  export {
81
+ r as EASE_DISCLOSURE,
81
82
  i as EASE_DRAWER,
82
83
  a as EASE_EXPO_OUT,
83
84
  s as EASE_IN_OUT,
84
85
  t as EASE_OUT,
85
- d as backdropVariants,
86
- c as drawerBackdropVariants,
87
- l as drawerEnterTransition,
88
- p as drawerExitTransition,
89
- f as drawerOffset,
90
- r as floatVariants,
91
- e as modalPanelVariants,
92
- m as screenVariants,
86
+ c as backdropVariants,
87
+ l as drawerBackdropVariants,
88
+ p as drawerEnterTransition,
89
+ f as drawerExitTransition,
90
+ m as drawerOffset,
91
+ o as floatVariants,
92
+ d as modalPanelVariants,
93
+ y as screenVariants,
93
94
  n as toastSpring,
94
- y as toastVariants,
95
- o as tooltipVariants
95
+ u as toastVariants,
96
+ e as tooltipVariants
96
97
  };
package/llms.txt CHANGED
@@ -187,7 +187,7 @@ When tabs and a search field control the same content, they share one responsive
187
187
  - [SettingList] — component (variants: isPressable: true|false) [docs](https://ads.actioneer.dev/#/review/setting-row)
188
188
  - [SettingRow] — component (variants: isPressable: true|false) [docs](https://ads.actioneer.dev/#/review/setting-row)
189
189
  - [Spinner] — Use for an indeterminate loading state (e.g. inside a Button's isLoading, or standalone while content is fetching) — not for measurable/determinate progress. (variants: size: sm|md|lg; color: current|primary|muted) [docs](https://ads.actioneer.dev/#/spinner)
190
- - [Stepper] — component (variants: status: complete|current|upcoming) [docs](https://ads.actioneer.dev/#/review/stepper)
190
+ - [Stepper] — component (variants: status: complete|current|upcoming|error; size: sm|md) [docs](https://ads.actioneer.dev/#/review/stepper)
191
191
  - [Text] — Use Text for any body copy, caption, or inline run of prose instead of a raw p/span tag. [docs](https://ads.actioneer.dev/#/typography)
192
192
  - [ButtonProps] — TypeScript type
193
193
  - [CodeBlockProps] — TypeScript type
@@ -546,6 +546,7 @@ When tabs and a search field control the same content, they share one responsive
546
546
 
547
547
  ### AI Elements
548
548
 
549
+ - [AgentTrace] — component [docs](https://ads.actioneer.dev/#/agent-trace)
549
550
  - [AIChart] — Wrap a source-backed chart produced during agent work so its query, partial-data, rendering, ready, error, and cancelled states stay distinct from the chart specification itself. (variants: status: pending|querying|partial|rendering|ready|error|cancelled) [docs](https://ads.actioneer.dev/#/ai/chart)
550
551
  - [ChainOfThought] — component [docs](https://ads.actioneer.dev/#/ai/chain-of-thought)
551
552
  - [ChainOfThoughtContent] — component [docs](https://ads.actioneer.dev/#/ai/chain-of-thought)
@@ -624,9 +625,14 @@ When tabs and a search field control the same content, they share one responsive
624
625
  - [VoiceDisconnectButton] — component [docs](https://ads.actioneer.dev/#/ai/voice)
625
626
  - [VoiceMuteButton] — component [docs](https://ads.actioneer.dev/#/ai/voice)
626
627
  - [VoiceStatusDot] — component [docs](https://ads.actioneer.dev/#/ai/voice)
628
+ - [AgentTraceCall] — TypeScript type
629
+ - [AgentTraceProps] — TypeScript type
630
+ - [AgentTraceStep] — TypeScript type
631
+ - [AgentTraceStepStatus] — TypeScript type
627
632
  - [AIChartProgress] — TypeScript type
628
633
  - [AIChartProps] — TypeScript type
629
634
  - [AIChartStatus] — TypeScript type
635
+ - [ChainOfThoughtConnector] — TypeScript type
630
636
  - [ChainOfThoughtContentProps] — TypeScript type
631
637
  - [ChainOfThoughtEvidenceColumn] — TypeScript type
632
638
  - [ChainOfThoughtEvidenceProps] — TypeScript type
package/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actioneer/ads",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "importPath": "@actioneer/ads",
5
5
  "styleImport": "@import \"@actioneer/ads/styles.css\";",
6
6
  "families": [
@@ -16,9 +16,9 @@
16
16
  "Chat"
17
17
  ],
18
18
  "counts": {
19
- "total": 668,
20
- "component": 322,
21
- "type": 283,
19
+ "total": 674,
20
+ "component": 323,
21
+ "type": 288,
22
22
  "hook": 10,
23
23
  "util": 53
24
24
  },
@@ -721,15 +721,22 @@
721
721
  "values": [
722
722
  "complete",
723
723
  "current",
724
- "upcoming"
724
+ "upcoming",
725
+ "error"
725
726
  ],
726
727
  "default": "upcoming"
728
+ },
729
+ "size": {
730
+ "values": [
731
+ "sm",
732
+ "md"
733
+ ],
734
+ "default": "md"
727
735
  }
728
736
  },
729
737
  "props": [
730
738
  "steps",
731
739
  "activeIndex",
732
- "orientation",
733
740
  "onSelect"
734
741
  ]
735
742
  },
@@ -4402,6 +4409,23 @@
4402
4409
  "importPath": "@actioneer/ads",
4403
4410
  "module": "selection-action-bar"
4404
4411
  },
4412
+ {
4413
+ "name": "AgentTrace",
4414
+ "family": "AI Elements",
4415
+ "kind": "component",
4416
+ "importPath": "@actioneer/ads",
4417
+ "module": "agent-trace",
4418
+ "showcaseUrl": "https://ads.actioneer.dev/#/agent-trace",
4419
+ "props": [
4420
+ "steps",
4421
+ "mainAgent",
4422
+ "slowSeconds",
4423
+ "reviewedStepIds",
4424
+ "onSendForReview",
4425
+ "slowMessage",
4426
+ "renderCall"
4427
+ ]
4428
+ },
4405
4429
  {
4406
4430
  "name": "AIChart",
4407
4431
  "family": "AI Elements",
@@ -5204,6 +5228,8 @@
5204
5228
  "stepCount",
5205
5229
  "summary",
5206
5230
  "sticky",
5231
+ "collapsible",
5232
+ "activityPlacement",
5207
5233
  "open",
5208
5234
  "defaultOpen",
5209
5235
  "onOpenChange",
@@ -5353,6 +5379,8 @@
5353
5379
  "className",
5354
5380
  "volume",
5355
5381
  "palette",
5382
+ "seed",
5383
+ "fill",
5356
5384
  "onReady"
5357
5385
  ]
5358
5386
  },
@@ -5426,6 +5454,34 @@
5426
5454
  "className"
5427
5455
  ]
5428
5456
  },
5457
+ {
5458
+ "name": "AgentTraceCall",
5459
+ "family": "AI Elements",
5460
+ "kind": "type",
5461
+ "importPath": "@actioneer/ads",
5462
+ "module": "agent-trace"
5463
+ },
5464
+ {
5465
+ "name": "AgentTraceProps",
5466
+ "family": "AI Elements",
5467
+ "kind": "type",
5468
+ "importPath": "@actioneer/ads",
5469
+ "module": "agent-trace"
5470
+ },
5471
+ {
5472
+ "name": "AgentTraceStep",
5473
+ "family": "AI Elements",
5474
+ "kind": "type",
5475
+ "importPath": "@actioneer/ads",
5476
+ "module": "agent-trace"
5477
+ },
5478
+ {
5479
+ "name": "AgentTraceStepStatus",
5480
+ "family": "AI Elements",
5481
+ "kind": "type",
5482
+ "importPath": "@actioneer/ads",
5483
+ "module": "agent-trace"
5484
+ },
5429
5485
  {
5430
5486
  "name": "AIChartProgress",
5431
5487
  "family": "AI Elements",
@@ -5447,6 +5503,13 @@
5447
5503
  "importPath": "@actioneer/ads",
5448
5504
  "module": "chart"
5449
5505
  },
5506
+ {
5507
+ "name": "ChainOfThoughtConnector",
5508
+ "family": "AI Elements",
5509
+ "kind": "type",
5510
+ "importPath": "@actioneer/ads",
5511
+ "module": "chain-of-thought"
5512
+ },
5450
5513
  {
5451
5514
  "name": "ChainOfThoughtContentProps",
5452
5515
  "family": "AI Elements",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actioneer/ads",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Actioneer Design System 1.0 — React 19 + Tailwind v4 component library.",
5
5
  "type": "module",
6
6
  "sideEffects": [