@actioneer/ads 0.5.6 → 0.5.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 (149) hide show
  1. package/bin/ads-init.mjs +6 -0
  2. package/components/accordion.js +50 -48
  3. package/components/agent-icon.d.ts +12 -0
  4. package/components/agent-icon.js +135 -121
  5. package/components/ai-elements/chain-of-thought-icon.d.ts +10 -12
  6. package/components/ai-elements/chain-of-thought-icon.js +341 -201
  7. package/components/ai-elements/chain-of-thought.d.ts +2 -2
  8. package/components/ai-elements/chain-of-thought.js +108 -108
  9. package/components/ai-elements/chart.js +16 -14
  10. package/components/ai-elements/inline-citation.js +41 -41
  11. package/components/ai-elements/message.js +4 -4
  12. package/components/ai-elements/queue.js +7 -7
  13. package/components/ai-elements/research-activity.js +114 -114
  14. package/components/ai-elements/shimmer.d.ts +2 -2
  15. package/components/ai-elements/speech-input.js +28 -28
  16. package/components/ai-elements/task-progress.js +26 -16
  17. package/components/ai-elements/task.js +17 -17
  18. package/components/ai-elements/tool.js +6 -6
  19. package/components/ai-elements/transcript.js +6 -5
  20. package/components/ai-elements/voice.js +1 -1
  21. package/components/alert.js +10 -10
  22. package/components/answer-sources.d.ts +42 -0
  23. package/components/answer-sources.js +111 -0
  24. package/components/answer.js +115 -114
  25. package/components/assistant-ui/action-bar.js +94 -48
  26. package/components/assistant-ui/attachment.js +131 -103
  27. package/components/assistant-ui/badge.d.ts +1 -1
  28. package/components/assistant-ui/badge.js +17 -17
  29. package/components/assistant-ui/chain-of-thought.d.ts +1 -1
  30. package/components/assistant-ui/composer-add-context.js +9 -9
  31. package/components/assistant-ui/composer-deep-research.js +5 -5
  32. package/components/assistant-ui/composer-harness.js +12 -9
  33. package/components/assistant-ui/composer-trigger-popover.js +45 -34
  34. package/components/assistant-ui/composer.js +59 -59
  35. package/components/assistant-ui/error.js +14 -14
  36. package/components/assistant-ui/file.d.ts +1 -1
  37. package/components/assistant-ui/image.d.ts +1 -1
  38. package/components/assistant-ui/image.js +113 -103
  39. package/components/assistant-ui/markdown-text.js +18 -18
  40. package/components/assistant-ui/message.js +46 -45
  41. package/components/assistant-ui/quote.js +1 -1
  42. package/components/assistant-ui/reasoning.d.ts +1 -1
  43. package/components/assistant-ui/reasoning.js +66 -77
  44. package/components/assistant-ui/suggestions.js +4 -4
  45. package/components/assistant-ui/thread-context.d.ts +2 -0
  46. package/components/assistant-ui/thread.js +41 -40
  47. package/components/assistant-ui/tool-fallback.js +60 -63
  48. package/components/assistant-ui/tool-group.d.ts +1 -1
  49. package/components/assistant-ui/tool-group.js +36 -42
  50. package/components/audio-waveform.js +25 -24
  51. package/components/autocomplete.d.ts +1 -0
  52. package/components/autocomplete.js +45 -43
  53. package/components/avatar.js +30 -30
  54. package/components/badge.d.ts +1 -1
  55. package/components/breadcrumbs.js +2 -2
  56. package/components/button.d.ts +2 -2
  57. package/components/button.js +22 -20
  58. package/components/card.js +8 -8
  59. package/components/carousel.js +105 -104
  60. package/components/chart.js +9 -7
  61. package/components/checkbox.js +74 -38
  62. package/components/chip.d.ts +1 -1
  63. package/components/code-block.js +3 -3
  64. package/components/collapsible.js +67 -23
  65. package/components/connector-card.js +6 -6
  66. package/components/drawer.d.ts +15 -10
  67. package/components/drawer.js +78 -77
  68. package/components/dropdown.d.ts +3 -1
  69. package/components/dropdown.js +88 -79
  70. package/components/empty-state.d.ts +4 -4
  71. package/components/empty-state.js +7 -7
  72. package/components/field.d.ts +4 -0
  73. package/components/field.js +45 -34
  74. package/components/file-dropzone.js +12 -12
  75. package/components/index.d.ts +4 -0
  76. package/components/index.js +584 -553
  77. package/components/infinite-canvas.js +1 -1
  78. package/components/input-field.js +51 -46
  79. package/components/input.js +20 -20
  80. package/components/link.js +9 -9
  81. package/components/modal.js +105 -73
  82. package/components/navbar.d.ts +1 -1
  83. package/components/navbar.js +1 -1
  84. package/components/number-field.js +38 -29
  85. package/components/page-header.js +12 -12
  86. package/components/pagination.js +19 -19
  87. package/components/panel.js +2 -2
  88. package/components/pixel-blast-svg.js +3 -3
  89. package/components/pixel-icon.d.ts +3 -1
  90. package/components/pixel-icon.js +294 -215
  91. package/components/popover.d.ts +1 -1
  92. package/components/popover.js +66 -64
  93. package/components/progress-circle.js +36 -32
  94. package/components/progress.js +28 -24
  95. package/components/radio.js +59 -49
  96. package/components/resizable-panel.js +1 -1
  97. package/components/reveal.d.ts +2 -2
  98. package/components/ripple.d.ts +3 -3
  99. package/components/scroll-area.js +17 -16
  100. package/components/segmented.d.ts +4 -1
  101. package/components/segmented.js +26 -25
  102. package/components/select.d.ts +2 -0
  103. package/components/select.js +61 -57
  104. package/components/setting-row.js +45 -42
  105. package/components/sidebar.d.ts +2 -2
  106. package/components/sidebar.js +131 -127
  107. package/components/skeleton.js +5 -5
  108. package/components/spinner.d.ts +13 -4
  109. package/components/spinner.js +42 -42
  110. package/components/stepper.js +21 -21
  111. package/components/switch.js +52 -32
  112. package/components/table.d.ts +24 -7
  113. package/components/table.js +457 -220
  114. package/components/tabs.js +149 -137
  115. package/components/textarea.js +1 -2
  116. package/components/toast.js +66 -66
  117. package/components/tooltip.js +2 -2
  118. package/components/tree.js +62 -51
  119. package/components/typography.d.ts +2 -1
  120. package/components/typography.js +33 -32
  121. package/components/ui/button.d.ts +2 -2
  122. package/components/ui/button.js +19 -19
  123. package/components/ui/collapsible.d.ts +1 -5
  124. package/components/ui/dialog.d.ts +3 -3
  125. package/components/ui/dialog.js +95 -58
  126. package/components/ui/tooltip.d.ts +2 -2
  127. package/components/ui/tooltip.js +67 -33
  128. package/components/viz-charts.js +95 -95
  129. package/demo/components/add-to-artifact.js +341 -0
  130. package/demo/lib/artifact-library.js +134 -0
  131. package/fonts/aribau-grotesk-medium.woff2 +0 -0
  132. package/fonts/aribau-grotesk-regular.woff2 +0 -0
  133. package/fonts.css +11 -11
  134. package/hooks/agents-ui/use-agent-audio-visualizer-aura.js +17 -16
  135. package/hooks/agents-ui/use-agent-audio-visualizer-wave.js +21 -20
  136. package/lib/icons.d.ts +12 -0
  137. package/lib/icons.js +107 -104
  138. package/lib/motion.d.ts +42 -39
  139. package/lib/motion.js +112 -52
  140. package/lib/spinner-mark.d.ts +9 -0
  141. package/lib/spinner-mark.js +98 -0
  142. package/llms.txt +69 -26
  143. package/manifest.json +344 -42
  144. package/package.json +1 -1
  145. package/styles.css +175 -161
  146. package/theme.css +104 -128
  147. package/components/ui/collapsible.js +0 -35
  148. package/fonts/aribau-grotesk-500.otf +0 -0
  149. package/fonts/aribau-grotesk-600.woff2 +0 -0
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx as a, jsxs as c, Fragment as J } from "react/jsx-runtime";
2
+ import { jsx as l, jsxs as c, Fragment as J } from "react/jsx-runtime";
3
3
  import * as $ from "react";
4
4
  import { cn as D } from "../lib/cn.js";
5
5
  import { fmtDuration as B, pct1 as z, abbr as V, commafy as H } from "../lib/viz-format.js";
@@ -13,9 +13,9 @@ const G = [
13
13
  ], O = (e) => G[e % G.length], A = "var(--color-chart-1)", E = "var(--color-ink-400)", U = "var(--border)", Q = "var(--foreground)";
14
14
  function Y(e, s = 4) {
15
15
  if (e <= 0) return { max: 1, ticks: [0, 1] };
16
- const d = e / s, i = Math.pow(10, Math.floor(Math.log10(d))), o = ([1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10].find((w) => w * i >= d) ?? 10) * i, l = Math.ceil(e / o) * o, y = [];
17
- for (let w = 0; w <= l + o / 1e6; w += o) y.push(w);
18
- return { max: l, ticks: y };
16
+ const d = e / s, i = Math.pow(10, Math.floor(Math.log10(d))), o = ([1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10].find((w) => w * i >= d) ?? 10) * i, r = Math.ceil(e / o) * o, y = [];
17
+ for (let w = 0; w <= r + o / 1e6; w += o) y.push(w);
18
+ return { max: r, ticks: y };
19
19
  }
20
20
  function Z(e, s = 8) {
21
21
  if (e.length <= s) return e;
@@ -27,8 +27,8 @@ function P(e) {
27
27
  if (e.length === 1) return `M${e[0][0]},${e[0][1]}`;
28
28
  let s = `M${e[0][0]},${e[0][1]}`;
29
29
  for (let d = 1; d < e.length; d++) {
30
- const [i, u] = e[d - 1], [o, l] = e[d], y = (i + o) / 2;
31
- s += `C${y},${u} ${y},${l} ${o},${l}`;
30
+ const [i, u] = e[d - 1], [o, r] = e[d], y = (i + o) / 2;
31
+ s += `C${y},${u} ${y},${r} ${o},${r}`;
32
32
  }
33
33
  return s;
34
34
  }
@@ -49,19 +49,19 @@ function _({
49
49
  transform: `translate(${u ? "calc(-100% - 12px)" : "12px"}, -50%)`
50
50
  },
51
51
  children: [
52
- /* @__PURE__ */ a("div", { className: "mb-1.5 text-xs text-background/60", children: d }),
53
- /* @__PURE__ */ a("div", { className: "flex flex-col gap-1", children: i.map((o, l) => /* @__PURE__ */ c("div", { className: "flex items-center gap-2 text-xs", children: [
54
- o.dashed ? /* @__PURE__ */ a(
52
+ /* @__PURE__ */ l("div", { className: "mb-1.5 text-xs text-background/60", children: d }),
53
+ /* @__PURE__ */ l("div", { className: "flex flex-col gap-1", children: i.map((o, r) => /* @__PURE__ */ c("div", { className: "flex items-center gap-2 text-xs", children: [
54
+ o.dashed ? /* @__PURE__ */ l(
55
55
  "span",
56
56
  {
57
57
  "aria-hidden": !0,
58
58
  className: "h-0 w-3 shrink-0 border-t border-dashed",
59
59
  style: { borderColor: o.swatch ?? "currentColor" }
60
60
  }
61
- ) : o.swatch ? /* @__PURE__ */ a("span", { "aria-hidden": !0, className: "size-2 shrink-0 rounded-dot", style: { background: o.swatch } }) : null,
62
- /* @__PURE__ */ a("span", { className: "min-w-0 flex-1 truncate text-background/70", children: o.label }),
63
- /* @__PURE__ */ a("span", { className: "shrink-0 font-medium tabular-nums", children: o.value })
64
- ] }, l)) })
61
+ ) : o.swatch ? /* @__PURE__ */ l("span", { "aria-hidden": !0, className: "size-2 shrink-0 rounded-dot", style: { background: o.swatch } }) : null,
62
+ /* @__PURE__ */ l("span", { className: "min-w-0 flex-1 truncate text-background/70", children: o.label }),
63
+ /* @__PURE__ */ l("span", { className: "shrink-0 font-medium tabular-nums", children: o.value })
64
+ ] }, r)) })
65
65
  ]
66
66
  }
67
67
  );
@@ -69,8 +69,8 @@ function _({
69
69
  function ee({
70
70
  items: e
71
71
  }) {
72
- return /* @__PURE__ */ a("div", { className: "mb-3 flex flex-wrap items-center justify-end gap-x-4 gap-y-1", children: e.map((s) => /* @__PURE__ */ c("span", { className: "inline-flex items-center gap-1.5 text-xs text-secondary", children: [
73
- /* @__PURE__ */ a(
72
+ return /* @__PURE__ */ l("div", { className: "mb-3 flex flex-wrap items-center justify-end gap-x-4 gap-y-1", children: e.map((s) => /* @__PURE__ */ c("span", { className: "inline-flex items-center gap-1.5 text-xs text-secondary", children: [
73
+ /* @__PURE__ */ l(
74
74
  "span",
75
75
  {
76
76
  "aria-hidden": !0,
@@ -89,7 +89,7 @@ function ne({
89
89
  height: i = 300,
90
90
  formatAxis: u = V,
91
91
  formatValue: o = H,
92
- className: l
92
+ className: r
93
93
  }) {
94
94
  const [y, w] = $.useState(720), N = $.useRef(null);
95
95
  $.useEffect(() => {
@@ -97,9 +97,9 @@ function ne({
97
97
  const t = new ResizeObserver(([x]) => w(x.contentRect.width));
98
98
  return t.observe(N.current), () => t.disconnect();
99
99
  }, []);
100
- const [h, f] = $.useState(null), m = Math.max(0, y - b.l - b.r), M = Math.max(0, i - b.t - b.b), r = d.filter((t) => !t.ghost), { max: n, ticks: p } = Y(Math.max(1, ...d.flatMap((t) => t.values))), k = (t) => b.t + M - t / n * M, R = s.length, v = (t) => e === "bar" ? b.l + (t + 0.5) / R * m : b.l + (R <= 1 ? m / 2 : t / (R - 1) * m), j = [...p].reverse(), C = r.map((t, x) => ({ label: t.name, color: t.color ?? O(x), dashed: t.dashed }));
101
- return /* @__PURE__ */ c("div", { ref: N, className: D("relative w-full font-sans", l), children: [
102
- C.length > 1 && /* @__PURE__ */ a(ee, { items: C }),
100
+ const [h, f] = $.useState(null), m = Math.max(0, y - b.l - b.r), M = Math.max(0, i - b.t - b.b), a = d.filter((t) => !t.ghost), { max: n, ticks: p } = Y(Math.max(1, ...d.flatMap((t) => t.values))), k = (t) => b.t + M - t / n * M, R = s.length, v = (t) => e === "bar" ? b.l + (t + 0.5) / R * m : b.l + (R <= 1 ? m / 2 : t / (R - 1) * m), j = [...p].reverse(), C = a.map((t, x) => ({ label: t.name, color: t.color ?? O(x), dashed: t.dashed }));
101
+ return /* @__PURE__ */ c("div", { ref: N, className: D("relative w-full font-sans", r), children: [
102
+ C.length > 1 && /* @__PURE__ */ l(ee, { items: C }),
103
103
  /* @__PURE__ */ c(
104
104
  "svg",
105
105
  {
@@ -113,7 +113,7 @@ function ne({
113
113
  },
114
114
  children: [
115
115
  j.map((t, x) => /* @__PURE__ */ c("g", { children: [
116
- /* @__PURE__ */ a(
116
+ /* @__PURE__ */ l(
117
117
  "line",
118
118
  {
119
119
  x1: b.l,
@@ -126,16 +126,16 @@ function ne({
126
126
  opacity: t === 0 ? 0.9 : 0.6
127
127
  }
128
128
  ),
129
- /* @__PURE__ */ a("text", { x: b.l - 10, y: k(t), dy: "0.32em", textAnchor: "end", className: "fill-tertiary text-[11px] tabular-nums", children: u(t) })
129
+ /* @__PURE__ */ l("text", { x: b.l - 10, y: k(t), dy: "0.32em", textAnchor: "end", className: "fill-tertiary text-[11px] tabular-nums", children: u(t) })
130
130
  ] }, x)),
131
131
  Z(s).map(
132
- (t, x) => t == null ? null : /* @__PURE__ */ a("text", { x: v(x), y: i - 12, textAnchor: "middle", className: "fill-tertiary text-[11px] tabular-nums", children: t }, x)
132
+ (t, x) => t == null ? null : /* @__PURE__ */ l("text", { x: v(x), y: i - 12, textAnchor: "middle", className: "fill-tertiary text-[11px] tabular-nums", children: t }, x)
133
133
  ),
134
- e === "bar" && r.map((t, x) => {
135
- const T = m / R, L = Math.min(T * 0.7, 64), F = (L - (r.length - 1)) / r.length;
134
+ e === "bar" && a.map((t, x) => {
135
+ const T = m / R, L = Math.min(T * 0.7, 64), F = (L - (a.length - 1)) / a.length;
136
136
  return t.values.map((I, S) => {
137
137
  const K = b.l + S * T + (T - L) / 2 + x * (F + 1), q = h != null && h !== S;
138
- return /* @__PURE__ */ a(
138
+ return /* @__PURE__ */ l(
139
139
  "rect",
140
140
  {
141
141
  x: K,
@@ -150,17 +150,17 @@ function ne({
150
150
  );
151
151
  });
152
152
  }),
153
- e === "area" && r[0] && /* @__PURE__ */ a(
153
+ e === "area" && a[0] && /* @__PURE__ */ l(
154
154
  "path",
155
155
  {
156
- d: `${P(r[0].values.map((t, x) => [v(x), k(t)]))} L${v(R - 1)},${k(0)} L${v(0)},${k(0)} Z`,
157
- fill: r[0].color ?? O(0),
156
+ d: `${P(a[0].values.map((t, x) => [v(x), k(t)]))} L${v(R - 1)},${k(0)} L${v(0)},${k(0)} Z`,
157
+ fill: a[0].color ?? O(0),
158
158
  opacity: 0.12
159
159
  }
160
160
  ),
161
161
  e !== "bar" && d.map((t, x) => {
162
- const T = t.color ?? O(r.indexOf(t)), L = t.ghost ? "2 4" : t.dashed ? "6 5" : void 0, F = t.ghost ? 1.75 : x === 0 ? 2.5 : 2;
163
- return /* @__PURE__ */ a(
162
+ const T = t.color ?? O(a.indexOf(t)), L = t.ghost ? "2 4" : t.dashed ? "6 5" : void 0, F = t.ghost ? 1.75 : x === 0 ? 2.5 : 2;
163
+ return /* @__PURE__ */ l(
164
164
  "path",
165
165
  {
166
166
  d: P(t.values.map((I, S) => [v(S), k(I)])),
@@ -176,8 +176,8 @@ function ne({
176
176
  );
177
177
  }),
178
178
  h != null && e !== "bar" && /* @__PURE__ */ c(J, { children: [
179
- /* @__PURE__ */ a("line", { x1: v(h), x2: v(h), y1: b.t, y2: b.t + M, stroke: Q, strokeWidth: 1, opacity: 0.18 }),
180
- r.map((t, x) => /* @__PURE__ */ a(
179
+ /* @__PURE__ */ l("line", { x1: v(h), x2: v(h), y1: b.t, y2: b.t + M, stroke: Q, strokeWidth: 1, opacity: 0.18 }),
180
+ a.map((t, x) => /* @__PURE__ */ l(
181
181
  "circle",
182
182
  {
183
183
  cx: v(h),
@@ -193,7 +193,7 @@ function ne({
193
193
  ]
194
194
  }
195
195
  ),
196
- h != null && /* @__PURE__ */ a(
196
+ h != null && /* @__PURE__ */ l(
197
197
  _,
198
198
  {
199
199
  x: v(h),
@@ -201,7 +201,7 @@ function ne({
201
201
  flip: v(h) > b.l + m * 0.66,
202
202
  title: s[h],
203
203
  rows: d.map((t) => ({
204
- swatch: t.color ?? O(r.indexOf(t)),
204
+ swatch: t.color ?? O(a.indexOf(t)),
205
205
  dashed: t.ghost,
206
206
  label: t.name,
207
207
  value: o(t.values[h])
@@ -212,35 +212,35 @@ function ne({
212
212
  }
213
213
  const g = { l: 22, r: 16, t: 28, b: 98 }, X = "viz-funnel-hatch";
214
214
  function oe({ steps: e, height: s = 320, className: d }) {
215
- var r;
215
+ var a;
216
216
  const [i, u] = $.useState(720), o = $.useRef(null);
217
217
  $.useEffect(() => {
218
218
  if (!o.current) return;
219
219
  const n = new ResizeObserver(([p]) => u(p.contentRect.width));
220
220
  return n.observe(o.current), () => n.disconnect();
221
221
  }, []);
222
- const [l, y] = $.useState(null), w = Math.max(0, i - g.l - g.r), N = Math.max(0, s - g.t - g.b), h = ((r = e[0]) == null ? void 0 : r.value) || 1, f = (n) => g.t + N - n * N, m = w / Math.max(1, e.length), M = Math.min(m * 0.56, 120);
222
+ const [r, y] = $.useState(null), w = Math.max(0, i - g.l - g.r), N = Math.max(0, s - g.t - g.b), h = ((a = e[0]) == null ? void 0 : a.value) || 1, f = (n) => g.t + N - n * N, m = w / Math.max(1, e.length), M = Math.min(m * 0.56, 120);
223
223
  return /* @__PURE__ */ c("div", { ref: o, className: D("relative w-full font-sans", d), children: [
224
224
  /* @__PURE__ */ c("svg", { width: i, height: s, className: "block select-none", children: [
225
- /* @__PURE__ */ a("defs", { children: /* @__PURE__ */ c("pattern", { id: X, width: 6, height: 6, patternTransform: "rotate(45)", patternUnits: "userSpaceOnUse", children: [
226
- /* @__PURE__ */ a("rect", { width: 6, height: 6, fill: E, opacity: 0.07 }),
227
- /* @__PURE__ */ a("line", { x1: 0, y1: 0, x2: 0, y2: 6, stroke: E, strokeWidth: 2.5, opacity: 0.22 })
225
+ /* @__PURE__ */ l("defs", { children: /* @__PURE__ */ c("pattern", { id: X, width: 6, height: 6, patternTransform: "rotate(45)", patternUnits: "userSpaceOnUse", children: [
226
+ /* @__PURE__ */ l("rect", { width: 6, height: 6, fill: E, opacity: 0.07 }),
227
+ /* @__PURE__ */ l("line", { x1: 0, y1: 0, x2: 0, y2: 6, stroke: E, strokeWidth: 2.5, opacity: 0.22 })
228
228
  ] }) }),
229
229
  [1, 0.75, 0.5, 0.25, 0].map((n) => /* @__PURE__ */ c("g", { children: [
230
- /* @__PURE__ */ a("line", { x1: g.l, x2: g.l + w, y1: f(n), y2: f(n), stroke: U, strokeWidth: 1, strokeDasharray: n === 0 ? void 0 : "3 4", opacity: n === 0 ? 0.9 : 0.6 }),
231
- /* @__PURE__ */ a("text", { x: g.l, y: f(n) - 4, className: "fill-tertiary text-[10px] tabular-nums", children: n * 100 })
230
+ /* @__PURE__ */ l("line", { x1: g.l, x2: g.l + w, y1: f(n), y2: f(n), stroke: U, strokeWidth: 1, strokeDasharray: n === 0 ? void 0 : "3 4", opacity: n === 0 ? 0.9 : 0.6 }),
231
+ /* @__PURE__ */ l("text", { x: g.l, y: f(n) - 4, className: "fill-tertiary text-[10px] tabular-nums", children: n * 100 })
232
232
  ] }, n)),
233
233
  e.map((n, p) => {
234
- const k = n.value / h, R = p === 0 ? 1 : e[p - 1].value / h, v = g.l + p * m + m / 2, j = v - M / 2, C = f(k), t = l != null && l !== p;
234
+ const k = n.value / h, R = p === 0 ? 1 : e[p - 1].value / h, v = g.l + p * m + m / 2, j = v - M / 2, C = f(k), t = r != null && r !== p;
235
235
  return /* @__PURE__ */ c("g", { opacity: t ? 0.55 : 1, onMouseEnter: () => y(p), onMouseLeave: () => y(null), children: [
236
- p > 0 && /* @__PURE__ */ a("rect", { x: j, y: f(R), width: M, height: Math.max(0, C - f(R)), rx: 4, fill: `url(#${X})` }),
237
- /* @__PURE__ */ a("rect", { x: j, y: C, width: M, height: Math.max(0, g.t + N - C), rx: 4, fill: A }),
238
- /* @__PURE__ */ a("text", { x: v, y: C + 16, textAnchor: "middle", className: "fill-[var(--card)] text-[12px] font-medium tabular-nums", children: V(n.value) }),
239
- /* @__PURE__ */ a("text", { x: v, y: g.t + N + 24, textAnchor: "middle", className: "fill-secondary text-[12.5px] font-medium", children: n.label }),
236
+ p > 0 && /* @__PURE__ */ l("rect", { x: j, y: f(R), width: M, height: Math.max(0, C - f(R)), rx: 4, fill: `url(#${X})` }),
237
+ /* @__PURE__ */ l("rect", { x: j, y: C, width: M, height: Math.max(0, g.t + N - C), rx: 4, fill: A }),
238
+ /* @__PURE__ */ l("text", { x: v, y: C + 16, textAnchor: "middle", className: "fill-[var(--card)] text-[12px] font-medium tabular-nums", children: V(n.value) }),
239
+ /* @__PURE__ */ l("text", { x: v, y: g.t + N + 24, textAnchor: "middle", className: "fill-secondary text-[12.5px] font-medium", children: n.label }),
240
240
  /* @__PURE__ */ c("text", { x: v, y: g.t + N + 45, textAnchor: "middle", className: "fill-foreground text-[12px] font-medium tabular-nums", children: [
241
241
  H(n.value),
242
242
  " ",
243
- /* @__PURE__ */ a("tspan", { className: "fill-tertiary", children: p === 0 ? "entered" : `→ ${z(k * 100)}` })
243
+ /* @__PURE__ */ l("tspan", { className: "fill-tertiary", children: p === 0 ? "entered" : `→ ${z(k * 100)}` })
244
244
  ] }),
245
245
  p > 0 && /* @__PURE__ */ c("text", { x: v, y: g.t + N + 66, textAnchor: "middle", className: "fill-tertiary text-[12px] font-medium tabular-nums", children: [
246
246
  "↘ ",
@@ -253,20 +253,20 @@ function oe({ steps: e, height: s = 320, className: d }) {
253
253
  ] }, p);
254
254
  })
255
255
  ] }),
256
- l != null && e[l] && /* @__PURE__ */ a(
256
+ r != null && e[r] && /* @__PURE__ */ l(
257
257
  _,
258
258
  {
259
- x: g.l + l * m + m / 2,
259
+ x: g.l + r * m + m / 2,
260
260
  y: g.t + N / 2,
261
- flip: l >= e.length - 2,
262
- title: e[l].label,
261
+ flip: r >= e.length - 2,
262
+ title: e[r].label,
263
263
  rows: [
264
- { swatch: A, label: "Converted", value: H(e[l].value) },
265
- ...l > 0 ? [
266
- { swatch: E, label: "Dropped off", value: `−${H(e[l - 1].value - e[l].value)}` },
267
- { label: "Conversion so far", value: z(e[l].value / h * 100) },
268
- { label: "From previous", value: z(e[l].value / e[l - 1].value * 100) },
269
- { label: "Median time", value: B(e[l].medianTime) }
264
+ { swatch: A, label: "Converted", value: H(e[r].value) },
265
+ ...r > 0 ? [
266
+ { swatch: E, label: "Dropped off", value: `−${H(e[r - 1].value - e[r].value)}` },
267
+ { label: "Conversion so far", value: z(e[r].value / h * 100) },
268
+ { label: "From previous", value: z(e[r].value / e[r - 1].value * 100) },
269
+ { label: "Median time", value: B(e[r].medianTime) }
270
270
  ] : []
271
271
  ]
272
272
  }
@@ -276,8 +276,8 @@ function oe({ steps: e, height: s = 320, className: d }) {
276
276
  function ce({ steps: e, className: s }) {
277
277
  var i;
278
278
  const d = ((i = e[0]) == null ? void 0 : i.value) || 1;
279
- return /* @__PURE__ */ a("div", { className: D("flex w-full flex-col gap-[30px] font-sans", s), children: e.map((u, o) => {
280
- const l = u.value / d, y = o === 0 ? 1 : e[o - 1].value / d;
279
+ return /* @__PURE__ */ l("div", { className: D("flex w-full flex-col gap-[30px] font-sans", s), children: e.map((u, o) => {
280
+ const r = u.value / d, y = o === 0 ? 1 : e[o - 1].value / d;
281
281
  return /* @__PURE__ */ c("div", { className: "w-full", children: [
282
282
  /* @__PURE__ */ c("div", { className: "mb-1.5 flex items-baseline justify-between gap-3", children: [
283
283
  /* @__PURE__ */ c("span", { className: "truncate text-[12.5px] font-medium text-secondary", children: [
@@ -293,11 +293,11 @@ function ce({ steps: e, className: s }) {
293
293
  "Avg time ",
294
294
  B(u.avgTime)
295
295
  ] }),
296
- /* @__PURE__ */ a("span", { className: "text-[12.5px] font-medium text-foreground tabular-nums", children: z(l * 100) })
296
+ /* @__PURE__ */ l("span", { className: "text-[12.5px] font-medium text-foreground tabular-nums", children: z(r * 100) })
297
297
  ] })
298
298
  ] }),
299
299
  /* @__PURE__ */ c("div", { className: "relative h-[46px] w-full overflow-hidden rounded-lg bg-muted-foreground/[0.06]", children: [
300
- o > 0 && /* @__PURE__ */ a(
300
+ o > 0 && /* @__PURE__ */ l(
301
301
  "div",
302
302
  {
303
303
  className: "absolute inset-y-0 left-0",
@@ -307,7 +307,7 @@ function ce({ steps: e, className: s }) {
307
307
  }
308
308
  }
309
309
  ),
310
- /* @__PURE__ */ a("div", { className: "absolute inset-y-0 left-0 flex items-center rounded-lg", style: { width: `${l * 100}%`, background: A }, children: /* @__PURE__ */ a("span", { className: "ml-3 text-[12px] font-medium text-[var(--card)] tabular-nums", children: V(u.value) }) })
310
+ /* @__PURE__ */ l("div", { className: "absolute inset-y-0 left-0 flex items-center rounded-lg", style: { width: `${r * 100}%`, background: A }, children: /* @__PURE__ */ l("span", { className: "ml-3 text-[12px] font-medium text-ink-950 tabular-nums", children: V(u.value) }) })
311
311
  ] })
312
312
  ] }, o);
313
313
  }) });
@@ -317,10 +317,10 @@ function se({ points: e, height: s = 300, className: d }) {
317
317
  const [i, u] = $.useState(720), o = $.useRef(null);
318
318
  $.useEffect(() => {
319
319
  if (!o.current) return;
320
- const r = new ResizeObserver(([n]) => u(n.contentRect.width));
321
- return r.observe(o.current), () => r.disconnect();
320
+ const a = new ResizeObserver(([n]) => u(n.contentRect.width));
321
+ return a.observe(o.current), () => a.disconnect();
322
322
  }, []);
323
- const [l, y] = $.useState(null), w = Math.max(0, i - W.l - W.r), N = Math.max(0, s - W.t - W.b), h = e.length, f = (r) => W.l + (h <= 1 ? w / 2 : r / (h - 1) * w), m = (r) => W.t + N - r / 100 * N, M = e.map((r, n) => [f(n), m(r.v)]);
323
+ const [r, y] = $.useState(null), w = Math.max(0, i - W.l - W.r), N = Math.max(0, s - W.t - W.b), h = e.length, f = (a) => W.l + (h <= 1 ? w / 2 : a / (h - 1) * w), m = (a) => W.t + N - a / 100 * N, M = e.map((a, n) => [f(n), m(a.v)]);
324
324
  return /* @__PURE__ */ c("div", { ref: o, className: D("relative w-full font-sans", d), children: [
325
325
  /* @__PURE__ */ c(
326
326
  "svg",
@@ -329,41 +329,41 @@ function se({ points: e, height: s = 300, className: d }) {
329
329
  height: s,
330
330
  className: "block select-none",
331
331
  onMouseLeave: () => y(null),
332
- onMouseMove: (r) => {
333
- const n = r.currentTarget.getBoundingClientRect(), p = Math.round((r.clientX - n.left - W.l) / w * (h - 1));
332
+ onMouseMove: (a) => {
333
+ const n = a.currentTarget.getBoundingClientRect(), p = Math.round((a.clientX - n.left - W.l) / w * (h - 1));
334
334
  y(Math.max(0, Math.min(h - 1, p)));
335
335
  },
336
336
  children: [
337
- [100, 75, 50, 25, 0].map((r) => /* @__PURE__ */ c("g", { children: [
338
- /* @__PURE__ */ a("line", { x1: W.l, x2: W.l + w, y1: m(r), y2: m(r), stroke: U, strokeWidth: 1, strokeDasharray: r === 0 ? void 0 : "3 4", opacity: r === 0 ? 0.9 : 0.6 }),
339
- /* @__PURE__ */ c("text", { x: W.l - 10, y: m(r), dy: "0.32em", textAnchor: "end", className: "fill-tertiary text-[11px] tabular-nums", children: [
340
- r,
337
+ [100, 75, 50, 25, 0].map((a) => /* @__PURE__ */ c("g", { children: [
338
+ /* @__PURE__ */ l("line", { x1: W.l, x2: W.l + w, y1: m(a), y2: m(a), stroke: U, strokeWidth: 1, strokeDasharray: a === 0 ? void 0 : "3 4", opacity: a === 0 ? 0.9 : 0.6 }),
339
+ /* @__PURE__ */ c("text", { x: W.l - 10, y: m(a), dy: "0.32em", textAnchor: "end", className: "fill-tertiary text-[11px] tabular-nums", children: [
340
+ a,
341
341
  "%"
342
342
  ] })
343
- ] }, r)),
343
+ ] }, a)),
344
344
  Z(e).map(
345
- (r, n) => r == null ? null : /* @__PURE__ */ a("text", { x: f(n), y: s - 12, textAnchor: "middle", className: "fill-tertiary text-[11px] tabular-nums", children: r.label }, n)
345
+ (a, n) => a == null ? null : /* @__PURE__ */ l("text", { x: f(n), y: s - 12, textAnchor: "middle", className: "fill-tertiary text-[11px] tabular-nums", children: a.label }, n)
346
346
  ),
347
- /* @__PURE__ */ a("path", { d: `${P(M)} L${f(h - 1)},${m(0)} L${f(0)},${m(0)} Z`, fill: A, opacity: 0.12 }),
348
- /* @__PURE__ */ a("path", { d: P(M), fill: "none", stroke: A, strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }),
349
- e.map((r, n) => /* @__PURE__ */ c("g", { children: [
350
- /* @__PURE__ */ c("text", { x: f(n), y: m(r.v) - 12, textAnchor: "middle", className: "fill-foreground text-[11.5px] font-medium tabular-nums", children: [
351
- r.v,
347
+ /* @__PURE__ */ l("path", { d: `${P(M)} L${f(h - 1)},${m(0)} L${f(0)},${m(0)} Z`, fill: A, opacity: 0.12 }),
348
+ /* @__PURE__ */ l("path", { d: P(M), fill: "none", stroke: A, strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }),
349
+ e.map((a, n) => /* @__PURE__ */ c("g", { children: [
350
+ /* @__PURE__ */ c("text", { x: f(n), y: m(a.v) - 12, textAnchor: "middle", className: "fill-foreground text-[11.5px] font-medium tabular-nums", children: [
351
+ a.v,
352
352
  "%"
353
353
  ] }),
354
- /* @__PURE__ */ a("circle", { cx: f(n), cy: m(r.v), r: l === n ? 5 : 3.5, fill: "var(--card)", stroke: A, strokeWidth: 2 })
354
+ /* @__PURE__ */ l("circle", { cx: f(n), cy: m(a.v), r: r === n ? 5 : 3.5, fill: "var(--card)", stroke: A, strokeWidth: 2 })
355
355
  ] }, n))
356
356
  ]
357
357
  }
358
358
  ),
359
- l != null && e[l] && /* @__PURE__ */ a(
359
+ r != null && e[r] && /* @__PURE__ */ l(
360
360
  _,
361
361
  {
362
- x: f(l),
363
- y: m(e[l].v),
364
- flip: l >= h - 2,
365
- title: e[l].label,
366
- rows: [{ swatch: A, label: "Retention", value: `${e[l].v}%` }]
362
+ x: f(r),
363
+ y: m(e[r].v),
364
+ flip: r >= h - 2,
365
+ title: e[r].label,
366
+ rows: [{ swatch: A, label: "Retention", value: `${e[r].v}%` }]
367
367
  }
368
368
  )
369
369
  ] });
@@ -373,21 +373,21 @@ function te(e) {
373
373
  return `color-mix(in srgb, ${A} ${s}%, transparent)`;
374
374
  }
375
375
  function ie({ cols: e, cohorts: s, className: d }) {
376
- return /* @__PURE__ */ a("div", { className: D("w-full overflow-x-auto font-sans", d), children: /* @__PURE__ */ c("table", { className: "w-full border-collapse text-left", children: [
377
- /* @__PURE__ */ a("thead", { children: /* @__PURE__ */ c("tr", { className: "text-xs font-medium text-tertiary", children: [
378
- /* @__PURE__ */ a("th", { className: "sticky left-0 w-[1%] bg-card py-2 pr-4 whitespace-nowrap", children: "Cohort" }),
379
- /* @__PURE__ */ a("th", { className: "w-[1%] py-2 pr-4 text-right whitespace-nowrap", children: "Users" }),
380
- e.map((i) => /* @__PURE__ */ a("th", { className: "px-1.5 py-2 text-center tabular-nums", children: i }, i))
376
+ return /* @__PURE__ */ l("div", { className: D("w-full overflow-x-auto font-sans", d), children: /* @__PURE__ */ c("table", { className: "w-full border-collapse text-left", children: [
377
+ /* @__PURE__ */ l("thead", { children: /* @__PURE__ */ c("tr", { className: "text-xs font-medium text-tertiary", children: [
378
+ /* @__PURE__ */ l("th", { className: "sticky left-0 w-[1%] bg-card py-2 pr-4 whitespace-nowrap", children: "Cohort" }),
379
+ /* @__PURE__ */ l("th", { className: "w-[1%] py-2 pr-4 text-right whitespace-nowrap", children: "Users" }),
380
+ e.map((i) => /* @__PURE__ */ l("th", { className: "px-1.5 py-2 text-center tabular-nums", children: i }, i))
381
381
  ] }) }),
382
- /* @__PURE__ */ a("tbody", { children: s.map((i) => /* @__PURE__ */ c("tr", { children: [
383
- /* @__PURE__ */ a("td", { className: "sticky left-0 w-[1%] bg-card py-1.5 pr-4 text-[12.5px] text-secondary whitespace-nowrap", children: i.label }),
384
- /* @__PURE__ */ a("td", { className: "w-[1%] py-1.5 pr-4 text-right text-[12.5px] text-secondary tabular-nums whitespace-nowrap", children: H(i.size) }),
385
- i.values.map((u, o) => /* @__PURE__ */ a("td", { className: "px-1 py-1", children: u == null ? /* @__PURE__ */ a("div", { className: "py-[9px] text-center text-[12.5px] text-tertiary/45 tabular-nums", children: "—" }) : /* @__PURE__ */ c(
382
+ /* @__PURE__ */ l("tbody", { children: s.map((i) => /* @__PURE__ */ c("tr", { children: [
383
+ /* @__PURE__ */ l("td", { className: "sticky left-0 w-[1%] bg-card py-1.5 pr-4 text-[12.5px] text-secondary whitespace-nowrap", children: i.label }),
384
+ /* @__PURE__ */ l("td", { className: "w-[1%] py-1.5 pr-4 text-right text-[12.5px] text-secondary tabular-nums whitespace-nowrap", children: H(i.size) }),
385
+ i.values.map((u, o) => /* @__PURE__ */ l("td", { className: "px-1 py-1", children: u == null ? /* @__PURE__ */ l("div", { className: "py-[9px] text-center text-[12.5px] text-tertiary tabular-nums", children: "—" }) : /* @__PURE__ */ c(
386
386
  "div",
387
387
  {
388
388
  className: D(
389
389
  "rounded-md py-[9px] text-center text-[12.5px] tabular-nums",
390
- u >= 50 ? "text-[var(--card)]" : "text-secondary"
390
+ "text-ink-950"
391
391
  ),
392
392
  style: { background: te(u) },
393
393
  children: [