@actioneer/ads 1.0.9 → 1.0.10

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 (51) hide show
  1. package/DESIGN.md +98 -57
  2. package/README.md +19 -7
  3. package/components/answer.js +1 -1
  4. package/components/assistant-ui/composer-harness.js +13 -10
  5. package/components/body-page-header.d.ts +9 -4
  6. package/components/body-page-header.js +10 -10
  7. package/components/breadcrumbs.js +22 -22
  8. package/components/card.js +18 -18
  9. package/components/chart.d.ts +9 -0
  10. package/components/chart.js +738 -717
  11. package/components/chip.js +12 -12
  12. package/components/collection-header.js +4 -4
  13. package/components/connector-card.js +30 -30
  14. package/components/date-range-picker.js +1 -1
  15. package/components/detail-list.d.ts +28 -0
  16. package/components/detail-list.js +52 -0
  17. package/components/drawer.d.ts +38 -15
  18. package/components/drawer.js +150 -86
  19. package/components/empty-state.d.ts +3 -2
  20. package/components/empty-state.js +22 -22
  21. package/components/field.d.ts +16 -0
  22. package/components/field.js +63 -42
  23. package/components/file-dropzone.d.ts +15 -4
  24. package/components/file-dropzone.js +100 -64
  25. package/components/filter-bar.d.ts +44 -0
  26. package/components/filter-bar.js +89 -0
  27. package/components/index.d.ts +3 -0
  28. package/components/index.js +526 -513
  29. package/components/input-field.d.ts +1 -1
  30. package/components/input-field.js +24 -22
  31. package/components/modal.js +56 -53
  32. package/components/panel.js +26 -27
  33. package/components/sidebar.js +54 -54
  34. package/components/sparkline.d.ts +30 -0
  35. package/components/sparkline.js +69 -0
  36. package/demo/components/add-to-artifact.js +5 -2
  37. package/examples/README.md +4 -2
  38. package/examples/call-logs-screen.tsx +381 -0
  39. package/examples/campaign-analysis-screen.tsx +114 -72
  40. package/examples/campaigns-screen.tsx +218 -160
  41. package/examples/guardrails-settings-screen.tsx +123 -0
  42. package/fonts/geist-variable.woff2 +0 -0
  43. package/fonts.css +12 -17
  44. package/lib/icons.js +3 -3
  45. package/llms.txt +107 -39
  46. package/manifest.json +3100 -892
  47. package/package.json +1 -1
  48. package/styles.css +102 -59
  49. package/theme.css +81 -37
  50. package/fonts/aribau-grotesk-medium.woff2 +0 -0
  51. package/fonts/aribau-grotesk-regular.woff2 +0 -0
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsxs as x, jsx as t, Fragment as k } from "react/jsx-runtime";
2
+ import { jsxs as b, jsx as t, Fragment as k } from "react/jsx-runtime";
3
3
  import * as r from "react";
4
4
  import { cn as d } from "../lib/cn.js";
5
5
  const N = r.createContext({
@@ -15,23 +15,23 @@ function B(a) {
15
15
  return null;
16
16
  }
17
17
  const C = r.forwardRef(
18
- ({ className: a, children: n, sticky: e, actions: i, center: c, meta: f, ...p }, l) => {
19
- const h = r.Children.toArray(n), b = r.useRef(null), m = r.useCallback(
18
+ ({ className: a, children: n, sticky: e, actions: i, center: c, meta: f, ...h }, o) => {
19
+ const p = r.Children.toArray(n), x = r.useRef(null), m = r.useCallback(
20
20
  (s) => {
21
- b.current = s, typeof l == "function" ? l(s) : l && (l.current = s);
21
+ x.current = s, typeof o == "function" ? o(s) : o && (o.current = s);
22
22
  },
23
- [l]
24
- ), [o, g] = r.useState(!1);
23
+ [o]
24
+ ), [l, g] = r.useState(!1);
25
25
  return r.useEffect(() => {
26
26
  if (!e) return;
27
- const s = B(b.current), u = s ?? window, v = () => g((s ? s.scrollTop : window.scrollY) > 2);
27
+ const s = B(x.current), u = s ?? window, v = () => g((s ? s.scrollTop : window.scrollY) > 2);
28
28
  return v(), u.addEventListener("scroll", v, { passive: !0 }), () => u.removeEventListener("scroll", v);
29
- }, [e]), /* @__PURE__ */ x(
29
+ }, [e]), /* @__PURE__ */ b(
30
30
  "nav",
31
31
  {
32
32
  ref: m,
33
33
  "aria-label": "Breadcrumb",
34
- "data-stuck": e ? o ? "true" : "false" : void 0,
34
+ "data-stuck": e ? l ? "true" : "false" : void 0,
35
35
  className: d(
36
36
  "relative flex w-full items-center",
37
37
  e && "sticky top-0 z-40 bg-card transition-[border-color] duration-150 ease-out motion-reduce:transition-none",
@@ -41,13 +41,13 @@ const C = r.forwardRef(
41
41
  // background over that gap (a no-op at rest, where the strip is the
42
42
  // panel's empty padding).
43
43
  e && "before:absolute before:inset-x-0 before:-top-8 before:h-8 before:bg-inherit before:content-['']",
44
- e && (o ? "border-b border-border" : "border-b border-transparent"),
44
+ e && (l ? "border-b border-border" : "border-b border-transparent"),
45
45
  a
46
46
  ),
47
- ...p,
47
+ ...h,
48
48
  children: [
49
- /* @__PURE__ */ x("div", { className: "flex min-w-0 shrink items-baseline", children: [
50
- /* @__PURE__ */ t("ol", { className: "flex min-w-0 shrink items-center gap-1.5 text-l", children: /* @__PURE__ */ t(N.Provider, { value: { count: h.length }, children: h.map((s, u) => /* @__PURE__ */ t(w.Provider, { value: u, children: s }, u)) }) }),
49
+ /* @__PURE__ */ b("div", { className: "flex min-w-0 shrink items-baseline", children: [
50
+ /* @__PURE__ */ t("ol", { className: "flex min-w-0 shrink items-center gap-1.5 font-heading text-xl", children: /* @__PURE__ */ t(N.Provider, { value: { count: p.length }, children: p.map((s, u) => /* @__PURE__ */ t(w.Provider, { value: u, children: s }, u)) }) }),
51
51
  f && /* @__PURE__ */ t("div", { className: "ml-3 flex shrink-0 items-baseline gap-3 text-s text-tertiary", children: f })
52
52
  ] }),
53
53
  c && /* @__PURE__ */ t("div", { className: "absolute left-1/2 top-1/2 z-50 flex -translate-x-1/2 -translate-y-1/2 items-center", children: c }),
@@ -58,16 +58,16 @@ const C = r.forwardRef(
58
58
  }
59
59
  );
60
60
  C.displayName = "Breadcrumbs";
61
- const R = r.forwardRef(({ className: a, href: n, isCurrent: e, icon: i, children: c, ...f }, p) => {
62
- const { count: l } = r.useContext(N), b = r.useContext(w) === l - 1, m = "inline-flex items-center gap-1.5", o = /* @__PURE__ */ x(k, { children: [
61
+ const R = r.forwardRef(({ className: a, href: n, isCurrent: e, icon: i, children: c, ...f }, h) => {
62
+ const { count: o } = r.useContext(N), x = r.useContext(w) === o - 1, m = "inline-flex items-center gap-1.5", l = /* @__PURE__ */ b(k, { children: [
63
63
  i && /* @__PURE__ */ t("span", { "aria-hidden": !0, className: "flex shrink-0 items-center [&_svg]:size-4", children: i }),
64
64
  e ? /* @__PURE__ */ t("span", { className: "min-w-0 truncate", children: c }) : c
65
65
  ] }), g = e ? /* @__PURE__ */ t(
66
66
  "span",
67
67
  {
68
68
  "aria-current": "page",
69
- className: d(m, "min-w-0 text-l font-medium text-primary"),
70
- children: o
69
+ className: d(m, "min-w-0 text-xl font-medium text-primary"),
70
+ children: l
71
71
  }
72
72
  ) : n ? /* @__PURE__ */ t(
73
73
  "a",
@@ -78,13 +78,13 @@ const R = r.forwardRef(({ className: a, href: n, isCurrent: e, icon: i, children
78
78
  "font-normal text-muted-foreground transition-colors hover:text-foreground",
79
79
  "outline-none focus-visible:ring-3 focus-visible:ring-ring rounded-sm"
80
80
  ),
81
- children: o
81
+ children: l
82
82
  }
83
- ) : /* @__PURE__ */ t("span", { className: d(m, "text-muted-foreground"), children: o });
84
- return /* @__PURE__ */ x(
83
+ ) : /* @__PURE__ */ t("span", { className: d(m, "text-muted-foreground"), children: l });
84
+ return /* @__PURE__ */ b(
85
85
  "li",
86
86
  {
87
- ref: p,
87
+ ref: h,
88
88
  className: d(
89
89
  "flex items-center gap-1.5",
90
90
  e ? "min-w-0 shrink" : "shrink-0",
@@ -93,7 +93,7 @@ const R = r.forwardRef(({ className: a, href: n, isCurrent: e, icon: i, children
93
93
  ...f,
94
94
  children: [
95
95
  g,
96
- !b && /* @__PURE__ */ t("span", { "aria-hidden": !0, className: "shrink-0 select-none text-border-strong", children: "/" })
96
+ !x && /* @__PURE__ */ t("span", { "aria-hidden": !0, className: "shrink-0 select-none text-border-strong", children: "/" })
97
97
  ]
98
98
  }
99
99
  );
@@ -3,14 +3,14 @@ import { jsx as t } from "react/jsx-runtime";
3
3
  import * as d from "react";
4
4
  import { cn as o } from "../lib/cn.js";
5
5
  const l = d.forwardRef(
6
- ({ className: r, isHoverable: a, isPressable: e, children: s, ...n }, i) => {
6
+ ({ className: e, isHoverable: a, isPressable: r, children: s, ...n }, i) => {
7
7
  const c = o(
8
- "bg-card text-card-foreground rounded-xl",
9
- (e || a) && "transition-[box-shadow,transform] duration-150 ease-out motion-reduce:transition-none",
8
+ "rounded-card border border-border bg-card text-card-foreground shadow-card",
9
+ (r || a) && "transition-[box-shadow,transform] duration-150 ease-out motion-reduce:transition-none",
10
10
  a && "hover:-translate-y-0.5",
11
- r
11
+ e
12
12
  );
13
- return e ? /* @__PURE__ */ t(
13
+ return r ? /* @__PURE__ */ t(
14
14
  "button",
15
15
  {
16
16
  ref: i,
@@ -29,46 +29,46 @@ const l = d.forwardRef(
29
29
  }
30
30
  );
31
31
  l.displayName = "Card";
32
- const f = d.forwardRef(({ className: r, ...a }, e) => /* @__PURE__ */ t(
32
+ const f = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
33
33
  "div",
34
34
  {
35
- ref: e,
36
- className: o("flex flex-col gap-1 px-5 pt-5", r),
35
+ ref: r,
36
+ className: o("flex flex-col gap-1 px-5 pt-5", e),
37
37
  ...a
38
38
  }
39
39
  ));
40
40
  f.displayName = "CardHeader";
41
- const m = d.forwardRef(({ className: r, ...a }, e) => /* @__PURE__ */ t(
41
+ const m = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
42
42
  "h3",
43
43
  {
44
- ref: e,
45
- className: o("text-base font-medium leading-none", r),
44
+ ref: r,
45
+ className: o("text-base font-medium leading-none", e),
46
46
  ...a
47
47
  }
48
48
  ));
49
49
  m.displayName = "CardTitle";
50
- const p = d.forwardRef(({ className: r, ...a }, e) => /* @__PURE__ */ t(
50
+ const p = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
51
51
  "p",
52
52
  {
53
- ref: e,
54
- className: o("text-xs text-muted-foreground", r),
53
+ ref: r,
54
+ className: o("text-xs text-muted-foreground", e),
55
55
  ...a
56
56
  }
57
57
  ));
58
58
  p.displayName = "CardDescription";
59
- const u = d.forwardRef(({ className: r, ...a }, e) => /* @__PURE__ */ t("div", { ref: e, className: o("px-5 py-4", r), ...a }));
59
+ const u = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t("div", { ref: r, className: o("px-5 py-4", e), ...a }));
60
60
  u.displayName = "CardBody";
61
61
  const x = d.forwardRef(
62
- ({ className: r, withBorder: a, ...e }, s) => /* @__PURE__ */ t(
62
+ ({ className: e, withBorder: a, ...r }, s) => /* @__PURE__ */ t(
63
63
  "div",
64
64
  {
65
65
  ref: s,
66
66
  className: o(
67
67
  "flex items-center px-5 pb-5 pt-4",
68
68
  a && "border-t border-border",
69
- r
69
+ e
70
70
  ),
71
- ...e
71
+ ...r
72
72
  }
73
73
  )
74
74
  );
@@ -128,6 +128,15 @@ export interface LineChartProps extends BaseChartProps {
128
128
  * labels step aside while the plot is hovered. Pass `false` to opt out.
129
129
  */
130
130
  showValues?: boolean;
131
+ /**
132
+ * A soft wash under each observed line that fades from the series colour
133
+ * (20%) at the line down to nothing at the baseline — ON by default
134
+ * (user-mandated 2026-11-12, the Span trend-line look). It reads as the
135
+ * line's shadow, not as an area measurement: it never stacks, never takes a
136
+ * label or tooltip, and forecasts (dashed) stay unfilled. Pass `false` for
137
+ * bare lines.
138
+ */
139
+ gradientFill?: boolean;
131
140
  }
132
141
  export interface AreaChartProps extends BaseChartProps {
133
142
  curve?: "linear" | "natural" | "step";