@actioneer/ads 1.0.7 → 1.0.8

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 (71) hide show
  1. package/DESIGN.md +80 -86
  2. package/README.md +6 -0
  3. package/components/ai-elements/chart.js +20 -20
  4. package/components/ai-elements/inline-citation.js +50 -50
  5. package/components/ai-elements/message.js +1 -1
  6. package/components/ai-elements/tool.js +5 -5
  7. package/components/alert.d.ts +3 -2
  8. package/components/alert.js +25 -25
  9. package/components/answer.js +1 -1
  10. package/components/assistant-ui/action-bar.js +1 -1
  11. package/components/assistant-ui/attachment.js +68 -49
  12. package/components/assistant-ui/composer-add-context.js +1 -1
  13. package/components/assistant-ui/composer-trigger-popover.js +1 -1
  14. package/components/assistant-ui/composer.js +13 -13
  15. package/components/assistant-ui/message-timing.js +6 -6
  16. package/components/assistant-ui/selection-toolbar.js +5 -5
  17. package/components/assistant-ui/sources.js +15 -15
  18. package/components/assistant-ui/tooltip-icon-button.js +18 -14
  19. package/components/audio-waveform.d.ts +21 -8
  20. package/components/audio-waveform.js +371 -94
  21. package/components/autocomplete.js +9 -9
  22. package/components/breadcrumbs.js +32 -38
  23. package/components/button.js +83 -73
  24. package/components/card.js +1 -1
  25. package/components/chart.js +732 -673
  26. package/components/chip.js +37 -35
  27. package/components/command-palette.js +12 -12
  28. package/components/connector-card.d.ts +1 -2
  29. package/components/connector-card.js +17 -17
  30. package/components/date-range-picker.js +1 -2
  31. package/components/drawer.js +9 -10
  32. package/components/dropdown.js +1 -1
  33. package/components/empty-state.d.ts +2 -0
  34. package/components/empty-state.js +17 -15
  35. package/components/field.js +9 -10
  36. package/components/file-dropzone.d.ts +6 -3
  37. package/components/file-dropzone.js +72 -60
  38. package/components/infinite-canvas.js +9 -9
  39. package/components/modal.js +1 -1
  40. package/components/page-body.js +8 -8
  41. package/components/popover.js +11 -11
  42. package/components/progress-circle.d.ts +1 -1
  43. package/components/progress-circle.js +57 -48
  44. package/components/segmented.d.ts +1 -0
  45. package/components/segmented.js +34 -36
  46. package/components/select.js +2 -2
  47. package/components/selection-action-bar.js +32 -31
  48. package/components/setting-row.js +10 -10
  49. package/components/slider.js +5 -5
  50. package/components/stepper.d.ts +1 -1
  51. package/components/stepper.js +1 -1
  52. package/components/switch.js +10 -10
  53. package/components/table.d.ts +2 -2
  54. package/components/table.js +177 -170
  55. package/components/tabs.js +41 -35
  56. package/components/timeline.js +3 -3
  57. package/components/toast.js +53 -56
  58. package/components/ui/button.js +4 -4
  59. package/components/ui/dialog.js +1 -1
  60. package/components/viz-charts.js +263 -221
  61. package/examples/README.md +30 -0
  62. package/examples/agents-screen.tsx +477 -0
  63. package/examples/settings-screen.tsx +90 -0
  64. package/examples/workspace-header.tsx +71 -0
  65. package/lib/icons.d.ts +8 -0
  66. package/lib/icons.js +171 -118
  67. package/llms.txt +14 -14
  68. package/manifest.json +77 -48
  69. package/package.json +1 -1
  70. package/styles.css +55 -68
  71. package/theme.css +50 -59
@@ -1,15 +1,14 @@
1
1
  "use client";
2
- import { jsx as n, jsxs as x } from "react/jsx-runtime";
2
+ import { jsx as n, jsxs as h } from "react/jsx-runtime";
3
3
  import * as l from "react";
4
- import { MotionConfig as v, motion as w } from "motion/react";
4
+ import { MotionConfig as v, motion as x } from "motion/react";
5
5
  import { cva as c } from "class-variance-authority";
6
- import { cn as o } from "../lib/cn.js";
7
- import { springControl as y } from "../lib/motion.js";
8
- const D = c(
9
- // Borderless recessed track on ink-200 (bg-surface) — matches the Tabs
10
- // primary track (the selected segment provides the definition; a stroke around the
11
- // track read as a second, heavier control).
12
- "inline-flex items-center gap-1 bg-surface p-1",
6
+ import { cn as a } from "../lib/cn.js";
7
+ import { springControl as w } from "../lib/motion.js";
8
+ const y = c(
9
+ // Soft WG2 track with a WG4 edge; the selected option is a White thumb with
10
+ // its own WG4 edge, so the control reads as one quiet, premium switcher.
11
+ "inline-flex items-center gap-0.5 border border-border bg-background p-0.5",
13
12
  {
14
13
  variants: {
15
14
  size: {
@@ -21,10 +20,10 @@ const D = c(
21
20
  defaultVariants: { size: "md" }
22
21
  }
23
22
  ), k = c(
24
- o(
23
+ a(
25
24
  // The active segment is a shared motion thumb that SLIDES between options
26
25
  // (layoutId), so the option itself only carries text color.
27
- "relative inline-flex items-center justify-center whitespace-nowrap text-m font-normal select-none",
26
+ "relative inline-flex items-center justify-center whitespace-nowrap text-m select-none",
28
27
  "transition-colors duration-150 cursor-pointer",
29
28
  "outline-none focus-visible:ring-3 focus-visible:ring-ring",
30
29
  "disabled:pointer-events-none disabled:opacity-50"
@@ -32,44 +31,44 @@ const D = c(
32
31
  {
33
32
  variants: {
34
33
  size: {
35
- sm: "h-6 rounded-sm px-2.5",
36
- md: "h-8 rounded-md px-3",
37
- lg: "h-9 rounded-md px-4"
34
+ sm: "h-6 rounded-xs px-2.5",
35
+ md: "h-7.5 rounded-sm px-3",
36
+ lg: "h-8.5 rounded-sm px-4"
38
37
  },
39
38
  selected: {
40
- true: "text-brand-foreground",
41
- false: "text-muted-foreground hover:text-brand-text"
39
+ true: "font-medium text-foreground",
40
+ false: "font-normal text-muted-foreground hover:text-foreground"
42
41
  }
43
42
  },
44
43
  defaultVariants: { size: "md", selected: !1 }
45
44
  }
46
- ), I = l.forwardRef(({ options: t, value: a, onChange: s, size: i, className: m, elevated: u = !0, ...f }, b) => {
47
- const p = l.useId(), d = (e) => {
48
- const r = t.findIndex((h) => h.value === a), g = ((r < 0 ? 0 : r) + e + t.length) % t.length;
45
+ ), D = l.forwardRef(({ options: t, value: o, onChange: s, size: d, className: m, elevated: I, ...u }, f) => {
46
+ const b = l.useId(), i = (e) => {
47
+ const r = t.findIndex((p) => p.value === o), g = ((r < 0 ? 0 : r) + e + t.length) % t.length;
49
48
  s(t[g].value);
50
49
  };
51
50
  return /* @__PURE__ */ n(
52
51
  "div",
53
52
  {
54
- ref: b,
53
+ ref: f,
55
54
  role: "radiogroup",
56
55
  onKeyDown: (e) => {
57
56
  switch (e.key) {
58
57
  case "ArrowRight":
59
58
  case "ArrowDown":
60
- e.preventDefault(), d(1);
59
+ e.preventDefault(), i(1);
61
60
  break;
62
61
  case "ArrowLeft":
63
62
  case "ArrowUp":
64
- e.preventDefault(), d(-1);
63
+ e.preventDefault(), i(-1);
65
64
  break;
66
65
  }
67
66
  },
68
- className: o(D({ size: i }), m),
69
- ...f,
67
+ className: a(y({ size: d }), m),
68
+ ...u,
70
69
  children: /* @__PURE__ */ n(v, { reducedMotion: "user", children: t.map((e) => {
71
- const r = e.value === a;
72
- return /* @__PURE__ */ x(
70
+ const r = e.value === o;
71
+ return /* @__PURE__ */ h(
73
72
  "button",
74
73
  {
75
74
  type: "button",
@@ -78,18 +77,17 @@ const D = c(
78
77
  "aria-label": e.ariaLabel,
79
78
  tabIndex: r ? 0 : -1,
80
79
  onClick: () => s(e.value),
81
- className: k({ size: i, selected: r }),
80
+ className: k({ size: d, selected: r }),
82
81
  children: [
83
82
  r && /* @__PURE__ */ n(
84
- w.span,
83
+ x.span,
85
84
  {
86
- layoutId: p,
85
+ layoutId: b,
87
86
  "aria-hidden": !0,
88
- layoutDependency: a,
89
- transition: y,
90
- className: o(
91
- "absolute inset-0 rounded-[inherit] bg-brand",
92
- u && "shadow-elevation"
87
+ layoutDependency: o,
88
+ transition: w,
89
+ className: a(
90
+ "absolute inset-0 rounded-[inherit] border border-border bg-card"
93
91
  )
94
92
  }
95
93
  ),
@@ -102,7 +100,7 @@ const D = c(
102
100
  }
103
101
  );
104
102
  });
105
- I.displayName = "SegmentedControl";
103
+ D.displayName = "SegmentedControl";
106
104
  export {
107
- I as SegmentedControl
105
+ D as SegmentedControl
108
106
  };
@@ -61,7 +61,7 @@ const te = G(
61
61
  },
62
62
  className: b(
63
63
  "pointer-events-auto min-w-[280px] max-h-60 overflow-auto p-1",
64
- "rounded-md border border-input bg-elevated shadow-elevation",
64
+ "rounded-md border border-input bg-elevated",
65
65
  $
66
66
  ),
67
67
  children: [
@@ -220,7 +220,7 @@ const re = n.forwardRef(
220
220
  },
221
221
  className: b(
222
222
  "pointer-events-auto max-h-60 overflow-auto p-1",
223
- "rounded-md border border-border bg-elevated shadow-elevation",
223
+ "rounded-md border border-border bg-elevated",
224
224
  m ? "fixed" : b(
225
225
  "absolute z-50 w-full",
226
226
  x === "top" ? "bottom-full mb-1.5" : "top-full mt-1.5"
@@ -1,36 +1,36 @@
1
1
  "use client";
2
- import { jsxs as c, jsx as a } from "react/jsx-runtime";
3
- import * as i from "react";
2
+ import { jsxs as o, jsx as n } from "react/jsx-runtime";
3
+ import * as c from "react";
4
4
  import { cn as s } from "../lib/cn.js";
5
- import { Button as g } from "./button.js";
6
- const p = i.forwardRef(
5
+ import { Button as p } from "./button.js";
6
+ const b = c.forwardRef(
7
7
  ({
8
- className: r,
9
- selectedCount: o,
10
- selectedLabel: t,
11
- actions: n,
8
+ className: t,
9
+ selectedCount: a,
10
+ selectedLabel: i,
11
+ actions: r,
12
12
  onClear: e,
13
- clearLabel: l = "Clear",
13
+ clearLabel: d = "Clear",
14
14
  ...m
15
- }, f) => /* @__PURE__ */ c(
15
+ }, h) => /* @__PURE__ */ o(
16
16
  "div",
17
17
  {
18
- ref: f,
18
+ ref: h,
19
19
  className: s(
20
- "flex items-center gap-3 rounded-lg bg-brand px-3 py-2 text-s text-brand-foreground",
21
- r
20
+ "flex items-center gap-3 rounded-lg bg-wg12 px-3 py-2 text-s text-white",
21
+ t
22
22
  ),
23
23
  ...m,
24
24
  children: [
25
- /* @__PURE__ */ a("span", { className: "font-normal tabular-nums", children: t ?? `${o} selected` }),
26
- /* @__PURE__ */ c("div", { className: "ml-auto flex items-center gap-1", children: [
27
- n,
28
- e && /* @__PURE__ */ a(
29
- d,
25
+ /* @__PURE__ */ n("span", { className: "font-normal tabular-nums", children: i ?? `${a} selected` }),
26
+ /* @__PURE__ */ o("div", { className: "ml-auto flex items-center gap-1", children: [
27
+ r,
28
+ e && /* @__PURE__ */ n(
29
+ l,
30
30
  {
31
31
  onClick: e,
32
- className: "text-brand-foreground",
33
- children: l
32
+ className: "text-white",
33
+ children: d
34
34
  }
35
35
  )
36
36
  ] })
@@ -38,22 +38,23 @@ const p = i.forwardRef(
38
38
  }
39
39
  )
40
40
  );
41
- p.displayName = "SelectionActionBar";
42
- const d = i.forwardRef(({ className: r, variant: o = "ghost", size: t = "xs", ...n }, e) => /* @__PURE__ */ a(
43
- g,
41
+ b.displayName = "SelectionActionBar";
42
+ const l = c.forwardRef(({ className: t, variant: a = "ghost", size: i = "xs", ...r }, e) => /* @__PURE__ */ n(
43
+ p,
44
44
  {
45
45
  ref: e,
46
- variant: o,
47
- size: t,
46
+ variant: a,
47
+ size: i,
48
48
  className: s(
49
- "text-brand-foreground hover:bg-brand-hover hover:text-brand-foreground focus-visible:ring-brand-foreground",
50
- r
49
+ // Neutral black dock: actions wash 12% White on hover, no outline.
50
+ "text-white enabled:hover:border-transparent enabled:hover:bg-white/12 enabled:hover:text-white enabled:active:border-transparent enabled:active:bg-white/12 focus-visible:ring-white",
51
+ t
51
52
  ),
52
- ...n
53
+ ...r
53
54
  }
54
55
  ));
55
- d.displayName = "SelectionActionBarAction";
56
+ l.displayName = "SelectionActionBarAction";
56
57
  export {
57
- p as SelectionActionBar,
58
- d as SelectionActionBarAction
58
+ b as SelectionActionBar,
59
+ l as SelectionActionBarAction
59
60
  };
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { jsxs as d, jsx as e } from "react/jsx-runtime";
3
- import * as f from "react";
4
- import { cva as p } from "class-variance-authority";
2
+ import { jsxs as f, jsx as e } from "react/jsx-runtime";
3
+ import * as d from "react";
4
+ import { cva as u } from "class-variance-authority";
5
5
  import { cn as s } from "../lib/cn.js";
6
- const g = p(
6
+ const g = u(
7
7
  [
8
8
  "relative flex w-full items-center gap-3 rounded-md bg-transparent px-4 py-3 text-left",
9
9
  "after:pointer-events-none after:absolute after:inset-x-4 after:bottom-0 after:z-20",
@@ -18,10 +18,10 @@ const g = p(
18
18
  },
19
19
  defaultVariants: { isPressable: !1 }
20
20
  }
21
- ), v = f.forwardRef(
21
+ ), v = d.forwardRef(
22
22
  ({ className: a, icon: r, label: t, description: n, action: i, onSelect: o, ...c }, m) => {
23
23
  const l = !!o;
24
- return /* @__PURE__ */ d(
24
+ return /* @__PURE__ */ f(
25
25
  "div",
26
26
  {
27
27
  ref: m,
@@ -38,7 +38,7 @@ const g = p(
38
38
  className: s(
39
39
  "absolute inset-0 rounded-md outline-none",
40
40
  "transition-[background-color,transform] duration-150 ease-out",
41
- "hover:bg-muted focus-visible:ring-3 focus-visible:ring-ring",
41
+ "hover:bg-wg2 focus-visible:ring-3 focus-visible:ring-ring",
42
42
  "active:scale-[0.97] motion-reduce:transition-none"
43
43
  )
44
44
  }
@@ -51,7 +51,7 @@ const g = p(
51
51
  children: r
52
52
  }
53
53
  ),
54
- /* @__PURE__ */ d("div", { className: "relative z-10 flex min-w-0 flex-1 flex-col gap-0.5 pointer-events-none", children: [
54
+ /* @__PURE__ */ f("div", { className: "relative z-10 flex min-w-0 flex-1 flex-col gap-0.5 pointer-events-none", children: [
55
55
  /* @__PURE__ */ e("div", { className: "min-w-0 text-base text-foreground wrap-break-word", children: t }),
56
56
  n && /* @__PURE__ */ e("div", { className: "min-w-0 text-xs text-tertiary", children: n })
57
57
  ] }),
@@ -61,7 +61,7 @@ const g = p(
61
61
  "span",
62
62
  {
63
63
  className: "relative z-20 shrink-0",
64
- onClick: (u) => u.stopPropagation(),
64
+ onClick: (p) => p.stopPropagation(),
65
65
  children: i
66
66
  }
67
67
  )
@@ -71,7 +71,7 @@ const g = p(
71
71
  }
72
72
  );
73
73
  v.displayName = "SettingRow";
74
- const x = f.forwardRef(
74
+ const x = d.forwardRef(
75
75
  ({ className: a, ...r }, t) => /* @__PURE__ */ e(
76
76
  "div",
77
77
  {
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { jsxs as b, jsx as l } from "react/jsx-runtime";
3
- import * as v from "react";
3
+ import * as m from "react";
4
4
  import { cn as s } from "../lib/cn.js";
5
- const m = v.forwardRef(
5
+ const v = m.forwardRef(
6
6
  ({ value: d, onChange: t, min: e = 0, max: r = 100, step: u = 1, disabled: a, className: n, ...c }, f) => {
7
7
  const i = Math.min(Math.max(d, e), r), o = r === e ? 0 : (i - e) / (r - e) * 100;
8
8
  return /* @__PURE__ */ b(
@@ -44,7 +44,7 @@ const m = v.forwardRef(
44
44
  {
45
45
  className: s(
46
46
  "pointer-events-none absolute size-4 -translate-x-1/2 rounded-full",
47
- "border border-background bg-brand shadow-elevation transition-shadow",
47
+ "border border-background bg-brand transition-shadow",
48
48
  "peer-focus-visible:ring-3 peer-focus-visible:ring-ring"
49
49
  ),
50
50
  style: { left: `${o}%` },
@@ -56,7 +56,7 @@ const m = v.forwardRef(
56
56
  );
57
57
  }
58
58
  );
59
- m.displayName = "Slider";
59
+ v.displayName = "Slider";
60
60
  export {
61
- m as Slider
61
+ v as Slider
62
62
  };
@@ -35,7 +35,7 @@ export interface StepperProps extends Omit<React.HTMLAttributes<HTMLOListElement
35
35
  activeIndex: number;
36
36
  /** Makes completed steps navigable. */
37
37
  onSelect?: (index: number) => void;
38
- /** Places each label below its marker or directly beside it. */
38
+ /** Places each label directly beside its marker (default) or below it. */
39
39
  labelPosition?: "below" | "inline";
40
40
  }
41
41
  export declare const Stepper: React.ForwardRefExoticComponent<StepperProps & React.RefAttributes<HTMLOListElement>>;
@@ -31,7 +31,7 @@ const b = y(
31
31
  activeIndex: n,
32
32
  size: i = "md",
33
33
  onSelect: o,
34
- labelPosition: h = "below",
34
+ labelPosition: h = "inline",
35
35
  ...u
36
36
  }, N) => /* @__PURE__ */ e(
37
37
  "ol",
@@ -4,7 +4,7 @@ import * as c from "react";
4
4
  import { MotionConfig as w, motion as x } from "motion/react";
5
5
  import { cn as n } from "../lib/cn.js";
6
6
  import { springSwitch as g } from "../lib/motion.js";
7
- const v = {
7
+ const y = {
8
8
  sm: {
9
9
  track: "h-5 w-9",
10
10
  knob: "size-4",
@@ -15,17 +15,17 @@ const v = {
15
15
  knob: "size-5",
16
16
  offset: 20
17
17
  }
18
- }, y = c.forwardRef(
18
+ }, v = c.forwardRef(
19
19
  ({
20
20
  className: m,
21
21
  checked: t = !1,
22
22
  onCheckedChange: e,
23
- size: d = "md",
23
+ size: f = "md",
24
24
  disabled: s,
25
25
  children: o,
26
26
  ...r
27
- }, f) => {
28
- const l = v[d], a = c.useId(), u = r["aria-label"] != null || r["aria-labelledby"] != null, b = o && !u ? a : void 0;
27
+ }, u) => {
28
+ const l = y[f], a = c.useId(), b = r["aria-label"] != null || r["aria-labelledby"] != null, d = o && !b ? a : void 0;
29
29
  return /* @__PURE__ */ p(
30
30
  "label",
31
31
  {
@@ -37,11 +37,11 @@ const v = {
37
37
  /* @__PURE__ */ i(
38
38
  "button",
39
39
  {
40
- ref: f,
40
+ ref: u,
41
41
  type: "button",
42
42
  role: "switch",
43
43
  "aria-checked": t,
44
- "aria-labelledby": b,
44
+ "aria-labelledby": d,
45
45
  disabled: s,
46
46
  onClick: () => e == null ? void 0 : e(!t),
47
47
  className: n(
@@ -62,7 +62,7 @@ const v = {
62
62
  animate: { x: t ? l.offset : 0 },
63
63
  transition: g,
64
64
  className: n(
65
- "ml-0.5 inline-block rounded-full bg-elevated shadow-elevation",
65
+ "ml-0.5 inline-block rounded-full bg-elevated",
66
66
  l.knob
67
67
  )
68
68
  }
@@ -75,7 +75,7 @@ const v = {
75
75
  );
76
76
  }
77
77
  );
78
- y.displayName = "Switch";
78
+ v.displayName = "Switch";
79
79
  export {
80
- y as Switch
80
+ v as Switch
81
81
  };
@@ -33,8 +33,8 @@ export interface TableProps extends Omit<React.TableHTMLAttributes<HTMLTableElem
33
33
  rowKeys?: string[];
34
34
  /**
35
35
  * Turns the final `sticky="right"` column into a persistent action surface.
36
- * Its cells stay on `bg-elevated` while one flat Table-level
37
- * `shadow-elevation` compatibility hook spans the body below the White header.
36
+ * Its cells stay on `bg-elevated` and flat beside the body below the White
37
+ * header.
38
38
  * The matching header cell stays transparent and scrolls normally, so it
39
39
  * never becomes a blank sticky surface over the header labels.
40
40
  */