@actioneer/ads 1.0.7 → 1.0.9

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 (87) hide show
  1. package/DESIGN.md +119 -91
  2. package/README.md +19 -1
  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-harness.js +5 -4
  14. package/components/assistant-ui/composer-trigger-popover.js +1 -1
  15. package/components/assistant-ui/composer.js +13 -13
  16. package/components/assistant-ui/message-timing.js +6 -6
  17. package/components/assistant-ui/selection-toolbar.js +5 -5
  18. package/components/assistant-ui/sources.js +15 -15
  19. package/components/assistant-ui/tooltip-icon-button.js +18 -14
  20. package/components/audio-waveform.d.ts +21 -8
  21. package/components/audio-waveform.js +371 -94
  22. package/components/autocomplete.js +9 -9
  23. package/components/breadcrumbs.js +36 -42
  24. package/components/button.d.ts +16 -1
  25. package/components/button.js +86 -73
  26. package/components/card.js +1 -1
  27. package/components/chart.d.ts +31 -4
  28. package/components/chart.js +900 -666
  29. package/components/chip.d.ts +2 -1
  30. package/components/chip.js +56 -51
  31. package/components/command-palette.js +12 -12
  32. package/components/connector-card.d.ts +1 -2
  33. package/components/connector-card.js +17 -17
  34. package/components/date-range-picker.js +1 -2
  35. package/components/drawer.js +9 -10
  36. package/components/dropdown.js +1 -1
  37. package/components/empty-state.d.ts +2 -0
  38. package/components/empty-state.js +17 -15
  39. package/components/field.js +9 -10
  40. package/components/file-dropzone.d.ts +6 -3
  41. package/components/file-dropzone.js +72 -60
  42. package/components/filters.d.ts +37 -0
  43. package/components/filters.js +129 -0
  44. package/components/index.d.ts +1 -0
  45. package/components/index.js +447 -444
  46. package/components/infinite-canvas.js +9 -9
  47. package/components/modal.d.ts +2 -1
  48. package/components/modal.js +102 -91
  49. package/components/page-body.js +8 -8
  50. package/components/popover.d.ts +6 -1
  51. package/components/popover.js +75 -65
  52. package/components/progress-circle.d.ts +1 -1
  53. package/components/progress-circle.js +57 -48
  54. package/components/segmented.d.ts +1 -0
  55. package/components/segmented.js +34 -36
  56. package/components/select.js +2 -2
  57. package/components/selection-action-bar.js +32 -31
  58. package/components/setting-row.js +10 -10
  59. package/components/sidebar.d.ts +15 -0
  60. package/components/sidebar.js +186 -149
  61. package/components/slider.js +5 -5
  62. package/components/stepper.d.ts +1 -1
  63. package/components/stepper.js +1 -1
  64. package/components/switch.js +10 -10
  65. package/components/table.d.ts +10 -2
  66. package/components/table.js +380 -366
  67. package/components/tabs.d.ts +6 -1
  68. package/components/tabs.js +32 -29
  69. package/components/timeline.js +3 -3
  70. package/components/toast.js +53 -56
  71. package/components/ui/button.js +4 -4
  72. package/components/ui/dialog.js +1 -1
  73. package/components/viz-charts.js +263 -221
  74. package/demo/components/add-to-artifact.js +3 -2
  75. package/examples/README.md +31 -0
  76. package/examples/agents-screen.tsx +477 -0
  77. package/examples/campaign-analysis-screen.tsx +138 -0
  78. package/examples/campaigns-screen.tsx +439 -0
  79. package/examples/settings-screen.tsx +90 -0
  80. package/examples/workspace-header.tsx +71 -0
  81. package/lib/icons.d.ts +8 -0
  82. package/lib/icons.js +171 -118
  83. package/llms.txt +93 -29
  84. package/manifest.json +1660 -113
  85. package/package.json +1 -1
  86. package/styles.css +55 -68
  87. package/theme.css +50 -59
@@ -1,133 +1,249 @@
1
1
  "use client";
2
- import { jsxs as A, jsx as e, Fragment as K } from "react/jsx-runtime";
3
- import * as R from "react";
4
- import { ResponsiveContainer as _, LineChart as pe, Tooltip as O, Line as se, AreaChart as Ne, Area as we, CartesianGrid as te, XAxis as re, YAxis as V, BarChart as Ae, Bar as ce, Cell as de, ComposedChart as Ce, ScatterChart as ye, Scatter as Re, PieChart as ke, Pie as Me, RadarChart as $e, PolarGrid as Se, PolarAngleAxis as ue, PolarRadiusAxis as Le, Radar as Fe, RadialBarChart as Oe, RadialBar as Te, Treemap as Ie, ReferenceArea as Be, ReferenceLine as De, ReferenceDot as Ee } from "recharts";
5
- import { MotionConfig as We, AnimatePresence as ze, motion as _e } from "motion/react";
6
- import { cn as $ } from "../lib/cn.js";
7
- import { floatVariants as je } from "../lib/motion.js";
8
- const U = (t) => `var(--color-chart-${t % 6 + 1})`, ee = (t) => U(t), ne = "var(--chart-context)", me = { fillOpacity: "var(--chart-active-bar-opacity)" }, Y = 2.5, He = 2.5, W = {
2
+ import { jsxs as w, jsx as e, Fragment as oe } from "react/jsx-runtime";
3
+ import * as C from "react";
4
+ import { ResponsiveContainer as q, LineChart as Fe, Tooltip as z, Line as be, AreaChart as Te, Area as Ie, CartesianGrid as ce, XAxis as de, YAxis as ee, BarChart as De, Bar as ge, LabelList as me, Cell as te, ComposedChart as Ee, ScatterChart as ke, Scatter as Be, PieChart as He, Pie as _e, RadarChart as ze, PolarGrid as je, PolarAngleAxis as pe, PolarRadiusAxis as Pe, Radar as We, RadialBarChart as Ge, RadialBar as Ve, Treemap as Ue, ReferenceArea as Ye, ReferenceLine as Xe, ReferenceDot as Ze } from "recharts";
5
+ import { MotionConfig as Qe, AnimatePresence as qe, motion as Je } from "motion/react";
6
+ import { cn as D } from "../lib/cn.js";
7
+ import { floatVariants as Ke } from "../lib/motion.js";
8
+ const ne = (t) => `var(--color-chart-${t % 6 + 1})`, se = (t) => ne(t), re = "var(--chart-context)", ae = 2.5, et = /* @__PURE__ */ new Set([
9
+ "var(--color-chart-2)",
10
+ "var(--color-chart-6)",
11
+ re
12
+ ]), Ne = (t) => et.has(t), fe = 20, tt = 0.55, W = "transition-opacity duration-150 ease-out motion-reduce:transition-none", X = (t, n, r = tt) => n == null || n === t ? 1 : r, we = (t) => t != null && t.isTooltipActive && t.activeTooltipIndex != null ? t.activeTooltipIndex : null;
13
+ function Ae() {
14
+ const [t, n] = C.useState(null), r = C.useMemo(
15
+ () => ({
16
+ onMouseMove: (i) => n(we(i)),
17
+ onMouseLeave: () => n(null)
18
+ }),
19
+ []
20
+ );
21
+ return { activeIndex: t, handlers: r };
22
+ }
23
+ function Ce(t, n) {
24
+ const r = C.useRef(null), [i, o] = C.useState(null), [a, l] = C.useState(null);
25
+ return { frameRef: r, activeIndex: i, isDimmed: (d) => a != null && t(d) !== a, handlers: { onMouseMove: (d) => {
26
+ const b = we(d);
27
+ o(b);
28
+ const v = d == null ? void 0 : d.chartY;
29
+ if (b == null || !n || v == null || !r.current) {
30
+ l(null);
31
+ return;
32
+ }
33
+ let f = null, p = 1 / 0;
34
+ r.current.querySelectorAll(`circle[data-chart-index="${b}"]`).forEach((M) => {
35
+ const y = M.dataset.chartSeries, x = Number(M.getAttribute("cy"));
36
+ if (y == null || Number.isNaN(x)) return;
37
+ const u = Math.abs(x - v);
38
+ u < p && (p = u, f = t(y));
39
+ }), l(f);
40
+ }, onMouseLeave: () => {
41
+ o(null), l(null);
42
+ } } };
43
+ }
44
+ function Me(t, n) {
45
+ return (r) => {
46
+ if (!(n != null && n.includes(r))) return r;
47
+ const i = t.filter((o) => !n.includes(o));
48
+ return i[n.indexOf(r)] ?? i[0] ?? r;
49
+ };
50
+ }
51
+ const nt = 2.5, Y = {
9
52
  primary: { ref: "var(--brand)", pill: "bg-action-primary-soft text-brand-text" },
10
53
  success: { ref: "var(--color-success-600)", pill: "bg-success-50 text-success-700" },
11
54
  warning: { ref: "var(--color-warning-500)", pill: "bg-warning-50 text-warning-700" },
12
55
  danger: { ref: "var(--color-danger-500)", pill: "bg-danger-50 text-danger-700" },
13
56
  info: { ref: "var(--color-info-500)", pill: "bg-info-50 text-info-700" }
14
- }, F = (t) => new Intl.NumberFormat("en-US", { notation: "compact", maximumFractionDigits: 1 }).format(t), fe = (t, n) => {
15
- const a = [];
57
+ }, _ = (t) => new Intl.NumberFormat("en-US", { notation: "compact", maximumFractionDigits: 1 }).format(t), ye = (t, n) => {
58
+ const r = [];
16
59
  for (const i of t)
17
60
  for (const o of Object.keys(i))
18
- o !== n && typeof i[o] == "number" && !a.includes(o) && a.push(o);
19
- return a;
61
+ o !== n && typeof i[o] == "number" && !r.includes(o) && r.push(o);
62
+ return r;
20
63
  };
21
- function D({ x: t, y: n, payload: a, anchor: i, dy: o, format: r }) {
22
- const l = (a == null ? void 0 : a.value) ?? "", x = r ? r(l) : l;
23
- return /* @__PURE__ */ e("text", { x: t, y: n, dy: o, textAnchor: i, className: "fill-tertiary text-xs tabular-nums", children: x });
64
+ function V({ x: t, y: n, payload: r, anchor: i, dy: o, format: a }) {
65
+ const l = (r == null ? void 0 : r.value) ?? "", h = a ? a(l) : l;
66
+ return /* @__PURE__ */ e("text", { x: t, y: n, dy: o, textAnchor: i, className: "fill-tertiary text-xs tabular-nums", children: h });
24
67
  }
25
- function he({
68
+ function Se({
26
69
  x: t,
27
70
  y: n,
28
- value: a,
29
- hidden: i,
30
- color: o,
31
- format: r
71
+ value: r,
72
+ index: i,
73
+ hidden: o,
74
+ skip: a,
75
+ below: l,
76
+ color: h,
77
+ format: c
32
78
  }) {
33
- if (i || t == null || n == null || a == null || a === "") return null;
34
- const l = Number(a);
35
- return Number.isNaN(l) ? null : /* @__PURE__ */ e(
79
+ if (o || i != null && (a != null && a(i)) || t == null || n == null || r == null || r === "") return null;
80
+ const m = Number(r);
81
+ if (Number.isNaN(m)) return null;
82
+ const d = i != null && (l == null ? void 0 : l(i));
83
+ return /* @__PURE__ */ e(
36
84
  "text",
37
85
  {
38
86
  x: Number(t),
39
- y: Number(n) - 10,
87
+ y: d ? Number(n) + 20 : Number(n) - 10,
40
88
  textAnchor: "middle",
41
- fill: o,
42
- className: $(!o && "fill-secondary", "text-xs tabular-nums"),
43
- children: r(l)
89
+ fill: h,
90
+ className: D(!h && "fill-secondary", "text-xs tabular-nums"),
91
+ children: c(m)
44
92
  }
45
93
  );
46
94
  }
47
- function E({
95
+ function U({
48
96
  cx: t,
49
97
  cy: n,
50
- color: a,
51
- active: i = !1
98
+ color: r,
99
+ active: i = !1,
100
+ seriesKey: o,
101
+ index: a
52
102
  }) {
53
- return t == null || n == null ? null : /* @__PURE__ */ e(
103
+ if (t == null || n == null) return null;
104
+ const l = o != null && !i;
105
+ return /* @__PURE__ */ e(
54
106
  "circle",
55
107
  {
56
108
  "aria-hidden": !0,
109
+ "data-chart-series": l ? o : void 0,
110
+ "data-chart-index": l ? a : void 0,
57
111
  cx: t,
58
112
  cy: n,
59
113
  r: i ? 5.5 : 4,
60
114
  fill: "var(--background)",
61
- stroke: a,
62
- strokeWidth: i ? 3 : He
115
+ stroke: r,
116
+ strokeWidth: i ? 3 : nt
63
117
  }
64
118
  );
65
119
  }
66
- function Pe({
120
+ function rt({
67
121
  x: t,
68
122
  y: n,
69
- width: a,
123
+ width: r,
70
124
  height: i,
71
125
  value: o,
72
- format: r,
126
+ format: a,
73
127
  horizontal: l
74
128
  }) {
75
129
  if (t == null || n == null || o == null || o === "") return null;
76
- const x = Number(o);
77
- if (Number.isNaN(x)) return null;
78
- const c = Number(t), m = Number(n), u = Number(a ?? 0), N = Number(i ?? 0);
130
+ const h = Number(o);
131
+ if (Number.isNaN(h)) return null;
132
+ const c = Number(t), m = Number(n), d = Number(r ?? 0), b = Number(i ?? 0);
79
133
  return l ? /* @__PURE__ */ e(
80
134
  "text",
81
135
  {
82
- x: c + u + 8,
83
- y: m + N / 2,
136
+ x: c + d + 8,
137
+ y: m + b / 2,
84
138
  dy: "0.32em",
85
139
  textAnchor: "start",
86
140
  className: "fill-secondary text-xs tabular-nums",
87
- children: r(x)
141
+ children: a(h)
88
142
  }
89
143
  ) : /* @__PURE__ */ e(
90
144
  "text",
91
145
  {
92
- x: c + u / 2,
146
+ x: c + d / 2,
93
147
  y: m - 8,
94
148
  textAnchor: "middle",
95
149
  className: "fill-secondary text-xs tabular-nums",
96
- children: r(x)
150
+ children: a(h)
151
+ }
152
+ );
153
+ }
154
+ function at({
155
+ x: t,
156
+ y: n,
157
+ width: r,
158
+ height: i,
159
+ value: o,
160
+ format: a,
161
+ horizontal: l,
162
+ light: h
163
+ }) {
164
+ if (t == null || n == null || o == null || o === "") return null;
165
+ const c = Number(o);
166
+ if (Number.isNaN(c) || c === 0) return null;
167
+ const m = Number(t), d = Number(n), b = Math.abs(Number(r ?? 0)), v = Math.abs(Number(i ?? 0)), f = a(c), p = l ? Math.max(fe, f.length * 6 + 8) : fe;
168
+ return (l ? b : v) < p ? null : /* @__PURE__ */ e(
169
+ "text",
170
+ {
171
+ x: m + Number(r ?? 0) / 2,
172
+ y: d + Number(i ?? 0) / 2,
173
+ dy: "0.32em",
174
+ textAnchor: "middle",
175
+ pointerEvents: "none",
176
+ className: D("text-xs tabular-nums", h ? "fill-primary" : "fill-white"),
177
+ children: f
97
178
  }
98
179
  );
99
180
  }
100
- function T({
181
+ function it({
182
+ x: t,
183
+ y: n,
184
+ width: r,
185
+ height: i,
186
+ index: o,
187
+ totals: a,
188
+ format: l,
189
+ horizontal: h
190
+ }) {
191
+ if (t == null || n == null || o == null) return null;
192
+ const c = a[o];
193
+ if (c == null) return null;
194
+ const m = Number(t), d = Number(n), b = Number(r ?? 0), v = Number(i ?? 0);
195
+ return h ? /* @__PURE__ */ e(
196
+ "text",
197
+ {
198
+ x: m + b + 8,
199
+ y: d + v / 2,
200
+ dy: "0.32em",
201
+ textAnchor: "start",
202
+ className: "fill-primary text-xs font-medium tabular-nums",
203
+ children: l(c)
204
+ }
205
+ ) : /* @__PURE__ */ e(
206
+ "text",
207
+ {
208
+ x: m + b / 2,
209
+ y: d - 8,
210
+ textAnchor: "middle",
211
+ className: "fill-primary text-xs font-medium tabular-nums",
212
+ children: l(c)
213
+ }
214
+ );
215
+ }
216
+ function j({
101
217
  active: t,
102
218
  payload: n,
103
- label: a,
219
+ label: r,
104
220
  format: i,
105
221
  labelKey: o,
106
- renderer: r
222
+ renderer: a
107
223
  }) {
108
- var N, b;
109
- const l = (n ?? []).map((f, y) => {
110
- const C = f.payload && typeof f.payload == "object" ? f.payload : void 0;
224
+ var b, v;
225
+ const l = (n ?? []).map((f, p) => {
226
+ const M = f.payload && typeof f.payload == "object" ? f.payload : void 0;
111
227
  return {
112
- key: f.dataKey ?? y,
113
- name: f.name ?? f.dataKey ?? y,
228
+ key: f.dataKey ?? p,
229
+ name: f.name ?? f.dataKey ?? p,
114
230
  value: f.value,
115
231
  color: f.color,
116
- datum: C
232
+ datum: M
117
233
  };
118
- }), x = o ? (b = (N = l[0]) == null ? void 0 : N.datum) == null ? void 0 : b[o] : void 0, c = {
234
+ }), h = o ? (v = (b = l[0]) == null ? void 0 : b.datum) == null ? void 0 : v[o] : void 0, c = {
119
235
  active: !!t,
120
- label: typeof x == "string" || typeof x == "number" ? x : a,
236
+ label: typeof h == "string" || typeof h == "number" ? h : r,
121
237
  items: l,
122
238
  formatValue: i
123
239
  };
124
- if (r) return /* @__PURE__ */ e(K, { children: r(c) });
240
+ if (a) return /* @__PURE__ */ e(oe, { children: a(c) });
125
241
  if (!c.active || !l.length) return null;
126
- const m = l.length === 1, u = c.label ?? (m ? l[0].name : void 0);
127
- return /* @__PURE__ */ A("div", { className: "rounded-md bg-foreground px-2.5 py-1.5 text-xs text-background", children: [
128
- /* @__PURE__ */ e("div", { className: $("text-xs font-normal tracking-wide uppercase text-background/60", !m && "mb-1"), children: u }),
129
- l.map((f) => /* @__PURE__ */ A("div", { className: "flex items-center gap-1.5", children: [
130
- !m && /* @__PURE__ */ A(K, { children: [
242
+ const m = l.length === 1, d = c.label ?? (m ? l[0].name : void 0);
243
+ return /* @__PURE__ */ w("div", { className: "rounded-md bg-foreground px-2.5 py-1.5 text-xs text-background", children: [
244
+ /* @__PURE__ */ e("div", { className: D("text-xs font-normal tracking-wide uppercase text-background/60", !m && "mb-1"), children: d }),
245
+ l.map((f) => /* @__PURE__ */ w("div", { className: "flex items-center gap-1.5", children: [
246
+ !m && /* @__PURE__ */ w(oe, { children: [
131
247
  /* @__PURE__ */ e("span", { "aria-hidden": !0, className: "size-1.5 rounded-dot", style: { background: f.color } }),
132
248
  /* @__PURE__ */ e("span", { className: "text-background/70", children: f.name })
133
249
  ] }),
@@ -135,54 +251,54 @@ function T({
135
251
  ] }, f.key))
136
252
  ] });
137
253
  }
138
- const xe = "pointer-events-none inline-flex min-h-4 items-center rounded-full px-2 py-0.5 text-xs font-normal whitespace-nowrap";
139
- function Ge({
254
+ const Re = "pointer-events-none inline-flex min-h-4 items-center rounded-full px-2 py-0.5 text-xs font-normal whitespace-nowrap";
255
+ function lt({
140
256
  viewBox: t,
141
257
  label: n,
142
- value: a,
258
+ value: r,
143
259
  color: i,
144
260
  axis: o
145
261
  }) {
146
- const r = t ?? {}, l = /* @__PURE__ */ A("span", { className: $(xe, W[i].pill), children: [
262
+ const a = t ?? {}, l = /* @__PURE__ */ w("span", { className: D(Re, Y[i].pill), children: [
147
263
  n,
148
- a != null && /* @__PURE__ */ e("span", { className: "ml-1 tabular-nums", children: a })
264
+ r != null && /* @__PURE__ */ e("span", { className: "ml-1 tabular-nums", children: r })
149
265
  ] });
150
- return o === "y" ? /* @__PURE__ */ e("foreignObject", { x: r.x ?? 0, y: (r.y ?? 0) - 12, width: r.width ?? 0, height: 24, className: "overflow-visible", children: /* @__PURE__ */ e("div", { className: "flex h-full items-center justify-end pr-1", children: l }) }) : /* @__PURE__ */ e("foreignObject", { x: (r.x ?? 0) - 90, y: (r.y ?? 0) - 12, width: 180, height: 24, className: "overflow-visible", children: /* @__PURE__ */ e("div", { className: "flex h-full items-center justify-center", children: l }) });
266
+ return o === "y" ? /* @__PURE__ */ e("foreignObject", { x: a.x ?? 0, y: (a.y ?? 0) - 12, width: a.width ?? 0, height: 24, className: "overflow-visible", children: /* @__PURE__ */ e("div", { className: "flex h-full items-center justify-end pr-1", children: l }) }) : /* @__PURE__ */ e("foreignObject", { x: (a.x ?? 0) - 90, y: (a.y ?? 0) - 12, width: 180, height: 24, className: "overflow-visible", children: /* @__PURE__ */ e("div", { className: "flex h-full items-center justify-center", children: l }) });
151
267
  }
152
- function Ve({ viewBox: t, label: n, color: a }) {
268
+ function ot({ viewBox: t, label: n, color: r }) {
153
269
  const i = t ?? {};
154
- return /* @__PURE__ */ e("foreignObject", { x: i.x ?? 0, y: i.y ?? 0, width: i.width ?? 0, height: 28, className: "overflow-visible", children: /* @__PURE__ */ e("div", { className: "flex h-full items-center pl-1.5", children: /* @__PURE__ */ e("span", { className: $(xe, W[a].pill), children: n }) }) });
270
+ return /* @__PURE__ */ e("foreignObject", { x: i.x ?? 0, y: i.y ?? 0, width: i.width ?? 0, height: 28, className: "overflow-visible", children: /* @__PURE__ */ e("div", { className: "flex h-full items-center pl-1.5", children: /* @__PURE__ */ e("span", { className: D(Re, Y[r].pill), children: n }) }) });
155
271
  }
156
- function Ue({
272
+ function st({
157
273
  cx: t,
158
274
  cy: n,
159
- n: a,
275
+ n: r,
160
276
  ann: i,
161
277
  onEnter: o,
162
- onLeave: r
278
+ onLeave: a
163
279
  }) {
164
- const [l, x] = R.useState(!1);
280
+ const [l, h] = C.useState(!1);
165
281
  if (t == null || n == null || !Number.isFinite(t) || !Number.isFinite(n)) return /* @__PURE__ */ e("g", {});
166
- const c = () => o({ ann: i, n: a, cx: t, cy: n }), m = () => r();
167
- return /* @__PURE__ */ A(
282
+ const c = () => o({ ann: i, n: r, cx: t, cy: n }), m = () => a();
283
+ return /* @__PURE__ */ w(
168
284
  "g",
169
285
  {
170
286
  tabIndex: 0,
171
287
  role: "img",
172
- "aria-label": `Annotation ${a}: ${i.label}`,
288
+ "aria-label": `Annotation ${r}: ${i.label}`,
173
289
  className: "cursor-default outline-none [transform-box:fill-box] origin-center transition-transform ease-out [transition-duration:150ms] hover:scale-110 focus-visible:scale-110 motion-reduce:transition-none motion-reduce:hover:scale-100 motion-reduce:focus-visible:scale-100",
174
290
  onMouseEnter: c,
175
291
  onMouseLeave: m,
176
292
  onFocus: () => {
177
- x(!0), c();
293
+ h(!0), c();
178
294
  },
179
295
  onBlur: () => {
180
- x(!1), m();
296
+ h(!1), m();
181
297
  },
182
298
  children: [
183
299
  l && /* @__PURE__ */ e("circle", { cx: t, cy: n, r: 12, fill: "none", stroke: "var(--ring)", strokeWidth: 2 }),
184
300
  /* @__PURE__ */ e("circle", { cx: t, cy: n, r: 10, fill: "var(--background)" }),
185
- /* @__PURE__ */ e("circle", { cx: t, cy: n, r: 8, fill: W[i.color ?? "primary"].ref }),
301
+ /* @__PURE__ */ e("circle", { cx: t, cy: n, r: 8, fill: Y[i.color ?? "primary"].ref }),
186
302
  /* @__PURE__ */ e(
187
303
  "text",
188
304
  {
@@ -191,15 +307,15 @@ function Ue({
191
307
  dy: "0.35em",
192
308
  textAnchor: "middle",
193
309
  className: "pointer-events-none fill-brand-foreground text-s font-medium select-none",
194
- children: a
310
+ children: r
195
311
  }
196
312
  )
197
313
  ]
198
314
  }
199
315
  );
200
316
  }
201
- function Ye({ hovered: t, frameWidth: n, format: a }) {
202
- return /* @__PURE__ */ e(We, { reducedMotion: "user", children: /* @__PURE__ */ e(ze, { children: t && /* @__PURE__ */ e(
317
+ function ct({ hovered: t, frameWidth: n, format: r }) {
318
+ return /* @__PURE__ */ e(Qe, { reducedMotion: "user", children: /* @__PURE__ */ e(qe, { children: t && /* @__PURE__ */ e(
203
319
  "div",
204
320
  {
205
321
  className: "pointer-events-none absolute z-10",
@@ -207,32 +323,32 @@ function Ye({ hovered: t, frameWidth: n, format: a }) {
207
323
  left: Math.max(96, Math.min(t.cx, Math.max(n - 96, 96))),
208
324
  top: t.cy - 16
209
325
  },
210
- children: /* @__PURE__ */ A(
211
- _e.div,
326
+ children: /* @__PURE__ */ w(
327
+ Je.div,
212
328
  {
213
- variants: je,
329
+ variants: Ke,
214
330
  initial: "hidden",
215
331
  animate: "visible",
216
332
  exit: "hidden",
217
- className: "w-max max-w-60 -translate-x-1/2 -translate-y-full origin-bottom rounded-lg bg-elevated p-3 shadow-elevation",
333
+ className: "w-max max-w-60 -translate-x-1/2 -translate-y-full origin-bottom rounded-lg bg-elevated p-3",
218
334
  children: [
219
- /* @__PURE__ */ A("div", { className: "flex items-center gap-2", children: [
335
+ /* @__PURE__ */ w("div", { className: "flex items-center gap-2", children: [
220
336
  /* @__PURE__ */ e(
221
337
  "span",
222
338
  {
223
339
  "aria-hidden": !0,
224
340
  className: "flex size-4.5 shrink-0 items-center justify-center rounded-full text-s font-medium text-brand-foreground",
225
- style: { background: W[t.ann.color ?? "primary"].ref },
341
+ style: { background: Y[t.ann.color ?? "primary"].ref },
226
342
  children: t.n
227
343
  }
228
344
  ),
229
345
  /* @__PURE__ */ e("span", { className: "text-xs font-normal text-foreground", children: t.ann.label })
230
346
  ] }),
231
347
  t.ann.description && /* @__PURE__ */ e("p", { className: "mt-1.5 text-xs leading-relaxed text-secondary", children: t.ann.description }),
232
- /* @__PURE__ */ A("div", { className: "mt-1.5 text-xs font-normal tracking-wide uppercase text-tertiary tabular-nums", children: [
348
+ /* @__PURE__ */ w("div", { className: "mt-1.5 text-xs font-normal tracking-wide uppercase text-tertiary tabular-nums", children: [
233
349
  t.ann.x,
234
350
  " · ",
235
- a(t.ann.y)
351
+ r(t.ann.y)
236
352
  ] })
237
353
  ]
238
354
  }
@@ -240,50 +356,50 @@ function Ye({ hovered: t, frameWidth: n, format: a }) {
240
356
  }
241
357
  ) }) });
242
358
  }
243
- function ve(t, n) {
244
- const [a, i] = R.useState(null), o = R.useCallback(() => i(null), []), { back: r, front: l } = R.useMemo(() => {
245
- const x = [], c = [];
359
+ function Le(t, n) {
360
+ const [r, i] = C.useState(null), o = C.useCallback(() => i(null), []), { back: a, front: l } = C.useMemo(() => {
361
+ const h = [], c = [];
246
362
  let m = 0;
247
- return (t ?? []).forEach((u, N) => {
248
- const b = u.color ?? "primary";
249
- if (u.kind === "band") {
250
- const f = u.axis ?? "y";
251
- x.push(
363
+ return (t ?? []).forEach((d, b) => {
364
+ const v = d.color ?? "primary";
365
+ if (d.kind === "band") {
366
+ const f = d.axis ?? "y";
367
+ h.push(
252
368
  /* @__PURE__ */ e(
253
- Be,
369
+ Ye,
254
370
  {
255
- ...f === "y" ? { y1: u.from, y2: u.to } : { x1: u.from, x2: u.to },
256
- fill: W[b].ref,
371
+ ...f === "y" ? { y1: d.from, y2: d.to } : { x1: d.from, x2: d.to },
372
+ fill: Y[v].ref,
257
373
  fillOpacity: 0.06,
258
374
  stroke: "none",
259
375
  ifOverflow: f === "y" ? "extendDomain" : "visible",
260
- label: u.label ? /* @__PURE__ */ e(Ve, { label: u.label, color: b }) : void 0
376
+ label: d.label ? /* @__PURE__ */ e(ot, { label: d.label, color: v }) : void 0
261
377
  },
262
- `ann-${N}`
378
+ `ann-${b}`
263
379
  )
264
380
  );
265
- } else if (u.kind === "line") {
266
- const f = u.axis ?? "y";
381
+ } else if (d.kind === "line") {
382
+ const f = d.axis ?? "y";
267
383
  c.push(
268
384
  /* @__PURE__ */ e(
269
- De,
385
+ Xe,
270
386
  {
271
- ...f === "y" ? { y: u.value } : { x: u.value },
272
- stroke: W[b].ref,
387
+ ...f === "y" ? { y: d.value } : { x: d.value },
388
+ stroke: Y[v].ref,
273
389
  strokeWidth: 1,
274
390
  strokeDasharray: "4 4",
275
391
  ifOverflow: f === "y" ? "extendDomain" : "visible",
276
- label: u.label ? /* @__PURE__ */ e(
277
- Ge,
392
+ label: d.label ? /* @__PURE__ */ e(
393
+ lt,
278
394
  {
279
- label: u.label,
280
- value: typeof u.value == "number" ? n(u.value) : String(u.value),
281
- color: b,
395
+ label: d.label,
396
+ value: typeof d.value == "number" ? n(d.value) : String(d.value),
397
+ color: v,
282
398
  axis: f
283
399
  }
284
400
  ) : void 0
285
401
  },
286
- `ann-${N}`
402
+ `ann-${b}`
287
403
  )
288
404
  );
289
405
  } else {
@@ -291,25 +407,25 @@ function ve(t, n) {
291
407
  const f = m;
292
408
  c.push(
293
409
  /* @__PURE__ */ e(
294
- Ee,
410
+ Ze,
295
411
  {
296
- x: u.x,
297
- y: u.y,
412
+ x: d.x,
413
+ y: d.y,
298
414
  ifOverflow: "visible",
299
- shape: (y) => /* @__PURE__ */ e(Ue, { cx: y.cx, cy: y.cy, n: f, ann: u, onEnter: i, onLeave: o })
415
+ shape: (p) => /* @__PURE__ */ e(st, { cx: p.cx, cy: p.cy, n: f, ann: d, onEnter: i, onLeave: o })
300
416
  },
301
- `ann-${N}`
417
+ `ann-${b}`
302
418
  )
303
419
  );
304
420
  }
305
- }), { back: x, front: c };
421
+ }), { back: h, front: c };
306
422
  }, [t, n, o]);
307
- return { back: r, front: l, hovered: a };
423
+ return { back: a, front: l, hovered: r };
308
424
  }
309
- function X({
425
+ function Q({
310
426
  items: t,
311
427
  align: n = "end",
312
- className: a,
428
+ className: r,
313
429
  onToggle: i
314
430
  }) {
315
431
  const o = {
@@ -317,285 +433,343 @@ function X({
317
433
  center: "justify-center",
318
434
  end: "justify-end"
319
435
  }[n];
320
- return /* @__PURE__ */ e("div", { className: $("mb-3 flex flex-wrap items-center gap-x-4 gap-y-1", o, a), children: t.map(
321
- (r) => i && r.key !== void 0 ? /* @__PURE__ */ A(
436
+ return /* @__PURE__ */ e("div", { className: D("mb-3 flex flex-wrap items-center gap-x-4 gap-y-1", o, r), children: t.map(
437
+ (a) => i && a.key !== void 0 ? /* @__PURE__ */ w(
322
438
  "button",
323
439
  {
324
440
  type: "button",
325
- "aria-pressed": !r.hidden,
326
- "aria-label": `Toggle ${r.label} series`,
327
- onClick: () => i(r.key),
328
- className: $(
441
+ "aria-pressed": !a.hidden,
442
+ "aria-label": `Toggle ${a.label} series`,
443
+ onClick: () => i(a.key),
444
+ className: D(
329
445
  "inline-flex cursor-pointer items-center gap-1.5 rounded-sm text-s outline-none",
330
446
  "transition-colors duration-150 ease-out motion-reduce:transition-none",
331
447
  "focus-visible:ring-2 focus-visible:ring-ring",
332
- r.hidden ? "text-tertiary" : "text-secondary hover:text-foreground"
448
+ a.hidden ? "text-tertiary" : "text-secondary hover:text-foreground"
333
449
  ),
334
450
  children: [
335
451
  /* @__PURE__ */ e(
336
452
  "span",
337
453
  {
338
454
  "aria-hidden": !0,
339
- className: $(
455
+ className: D(
340
456
  "size-2 rounded-dot transition-opacity duration-150 ease-out motion-reduce:transition-none",
341
- r.hidden && "opacity-25"
457
+ a.hidden && "opacity-25"
342
458
  ),
343
- style: { background: r.color }
459
+ style: { background: a.color }
344
460
  }
345
461
  ),
346
- r.label
462
+ a.label
347
463
  ]
348
464
  },
349
- r.label
350
- ) : /* @__PURE__ */ A("span", { className: "inline-flex items-center gap-1.5 text-s text-secondary", children: [
351
- /* @__PURE__ */ e("span", { "aria-hidden": !0, className: "size-2 rounded-dot", style: { background: r.color } }),
352
- r.label
353
- ] }, r.label)
465
+ a.label
466
+ ) : /* @__PURE__ */ w("span", { className: "inline-flex items-center gap-1.5 text-s text-secondary", children: [
467
+ /* @__PURE__ */ e("span", { "aria-hidden": !0, className: "size-2 rounded-dot", style: { background: a.color } }),
468
+ a.label
469
+ ] }, a.label)
354
470
  ) });
355
471
  }
356
- const z = R.forwardRef(
357
- ({ className: t, height: n, legendItems: a, hovered: i, format: o, onLegendToggle: r, children: l, ...x }, c) => {
358
- var N;
359
- const m = R.useRef(null);
360
- return /* @__PURE__ */ A("div", { ref: (b) => {
361
- m.current = b, typeof c == "function" ? c(b) : c && (c.current = b);
362
- }, className: $("relative w-full font-sans", t), ...x, children: [
363
- a && /* @__PURE__ */ e(X, { items: a, onToggle: r }),
364
- /* @__PURE__ */ e(_, { width: "100%", height: Math.max(n, I), children: l }),
365
- /* @__PURE__ */ e(Ye, { hovered: i, frameWidth: ((N = m.current) == null ? void 0 : N.clientWidth) ?? 0, format: o })
472
+ const Z = C.forwardRef(
473
+ ({
474
+ className: t,
475
+ height: n,
476
+ legendItems: r,
477
+ title: i,
478
+ subtitle: o,
479
+ legendPlacement: a,
480
+ hovered: l,
481
+ format: h,
482
+ onLegendToggle: c,
483
+ hoverRef: m,
484
+ children: d,
485
+ ...b
486
+ }, v) => {
487
+ var u;
488
+ const f = C.useRef(null), p = (g) => {
489
+ f.current = g, m && (m.current = g), typeof v == "function" ? v(g) : v && (v.current = g);
490
+ }, M = i != null || o != null, x = (a ?? (M ? "header" : "top")) === "header" && r != null;
491
+ return /* @__PURE__ */ w("div", { ref: p, className: D("relative w-full font-sans", t), ...b, children: [
492
+ (M || x) && // The header row: title block leads, the legend trails on the same
493
+ // row. 36px separates the header block from the plot.
494
+ /* @__PURE__ */ w(
495
+ "div",
496
+ {
497
+ "data-slot": "chart-header",
498
+ className: D(
499
+ "flex flex-wrap items-start gap-x-6 gap-y-2",
500
+ M ? "justify-between" : "justify-end",
501
+ x ? "mb-9" : "mb-3"
502
+ ),
503
+ children: [
504
+ M && /* @__PURE__ */ w("div", { className: "flex min-w-0 flex-col gap-0.5", children: [
505
+ i != null && /* @__PURE__ */ e("div", { className: "text-l font-medium text-on-white-primary", children: i }),
506
+ o != null && /* @__PURE__ */ e("div", { className: "text-s text-on-white-secondary", children: o })
507
+ ] }),
508
+ x && r && /* @__PURE__ */ e(Q, { items: r, onToggle: c, className: "mb-0 pt-1" })
509
+ ]
510
+ }
511
+ ),
512
+ r && !x && /* @__PURE__ */ e(Q, { items: r, onToggle: c }),
513
+ /* @__PURE__ */ e(q, { width: "100%", height: Math.max(n, P), children: d }),
514
+ /* @__PURE__ */ e(ct, { hovered: l, frameWidth: ((u = f.current) == null ? void 0 : u.clientWidth) ?? 0, format: h })
366
515
  ] });
367
516
  }
368
517
  );
369
- z.displayName = "ChartFrame";
370
- function Z(t) {
518
+ Z.displayName = "ChartFrame";
519
+ function ie(t) {
371
520
  const {
372
521
  data: n,
373
- categoryKey: a,
522
+ categoryKey: r,
374
523
  series: i,
375
524
  seriesLabels: o,
376
- highlight: r,
525
+ highlight: a,
377
526
  annotations: l,
378
- grid: x = !1,
527
+ grid: h = !1,
379
528
  legend: c,
380
529
  showYAxis: m = !0,
381
- formatValue: u,
382
- xScale: N = "category",
383
- xDomain: b,
530
+ formatValue: d,
531
+ xScale: b = "category",
532
+ xDomain: v,
384
533
  yDomain: f,
385
- xTickFormatter: y,
386
- yTickFormatter: C,
387
- yAxisWidth: w = 44
388
- } = t, p = R.useMemo(() => i ?? fe(n, a), [i, n, a]), h = u ?? F, k = C ?? ((M) => typeof M == "number" ? h(M) : M), d = ve(l, h), s = (M, B) => r && p.includes(r) ? M === r ? "var(--color-chart-1)" : ne : U(B), g = (M) => (o == null ? void 0 : o[M]) ?? M, [v, S] = R.useState(
534
+ xTickFormatter: p,
535
+ yTickFormatter: M,
536
+ yAxisWidth: y = 44,
537
+ title: x,
538
+ subtitle: u,
539
+ legendPlacement: g
540
+ } = t, S = { title: x, subtitle: u, legendPlacement: g }, $ = C.useMemo(() => i ?? ye(n, r), [i, n, r]), R = d ?? _, s = M ?? ((T) => typeof T == "number" ? R(T) : T), O = Le(l, R), A = (T, G) => a && $.includes(a) ? T === a ? "var(--color-chart-1)" : re : ne(G), I = (T) => (o == null ? void 0 : o[T]) ?? T, [L, E] = C.useState(
389
541
  () => /* @__PURE__ */ new Set()
390
- ), L = R.useCallback((M) => {
391
- S((B) => {
392
- const P = new Set(B);
393
- return P.has(M) ? P.delete(M) : P.add(M), P;
542
+ ), N = C.useCallback((T) => {
543
+ E((G) => {
544
+ const H = new Set(G);
545
+ return H.has(T) ? H.delete(T) : H.add(T), H;
394
546
  });
395
- }, []), H = (M) => v.has(M), Q = c ?? p.length > 1 ? p.map((M, B) => ({
396
- key: M,
397
- label: g(M),
398
- color: s(M, B),
399
- hidden: v.has(M)
547
+ }, []), F = (T) => L.has(T), B = c ?? $.length > 1 ? $.map((T, G) => ({
548
+ key: T,
549
+ label: I(T),
550
+ color: A(T, G),
551
+ hidden: L.has(T)
400
552
  })) : null;
401
553
  return {
402
- names: p,
403
- format: h,
404
- layers: d,
405
- legendItems: Q,
554
+ names: $,
555
+ format: R,
556
+ layers: O,
557
+ legendItems: B,
558
+ header: S,
406
559
  furniture: [
407
560
  /* Gridlines one step below the border token — guides, not content. */
408
- x ? /* @__PURE__ */ e(te, { vertical: !1, stroke: "var(--chart-grid)" }, "grid") : null,
561
+ h ? /* @__PURE__ */ e(ce, { vertical: !1, stroke: "var(--chart-grid)" }, "grid") : null,
409
562
  /* @__PURE__ */ e(
410
- re,
563
+ de,
411
564
  {
412
- dataKey: a,
413
- type: N === "time" ? "number" : "category",
414
- scale: N === "time" ? "time" : "auto",
415
- domain: N === "time" ? b ?? ["dataMin", "dataMax"] : b,
416
- allowDataOverflow: !!b,
565
+ dataKey: r,
566
+ type: b === "time" ? "number" : "category",
567
+ scale: b === "time" ? "time" : "auto",
568
+ domain: b === "time" ? v ?? ["dataMin", "dataMax"] : v,
569
+ allowDataOverflow: !!v,
417
570
  axisLine: { stroke: "var(--chart-axis)" },
418
571
  tickLine: !1,
419
572
  minTickGap: 28,
420
573
  tickMargin: 24,
421
574
  padding: { left: 16, right: 16 },
422
575
  height: 40,
423
- tick: /* @__PURE__ */ e(D, { anchor: "middle", dy: 0, format: y })
576
+ tick: /* @__PURE__ */ e(V, { anchor: "middle", dy: 0, format: p })
424
577
  },
425
578
  "x"
426
579
  ),
427
580
  m ? /* @__PURE__ */ e(
428
- V,
581
+ ee,
429
582
  {
430
- width: w,
583
+ width: y,
431
584
  domain: f,
432
585
  allowDataOverflow: !!f,
433
586
  axisLine: { stroke: "var(--chart-axis)" },
434
587
  tickLine: !1,
435
588
  tickMargin: 12,
436
- tick: /* @__PURE__ */ e(D, { anchor: "end", dy: "0.32em", format: k })
589
+ tick: /* @__PURE__ */ e(V, { anchor: "end", dy: "0.32em", format: s })
437
590
  },
438
591
  "y"
439
592
  ) : null
440
593
  ],
441
- colorFor: s,
442
- labelFor: g,
443
- toggleSeries: L,
444
- isHidden: H
594
+ colorFor: A,
595
+ labelFor: I,
596
+ toggleSeries: N,
597
+ isHidden: F
445
598
  };
446
599
  }
447
- const I = 300, j = { top: 24, right: 12, bottom: 8, left: 0 };
448
- function ae(t, n, a, i) {
600
+ const P = 300, J = { top: 24, right: 12, bottom: 8, left: 0 };
601
+ function ue(t, n, r, i) {
449
602
  if (i === !0) return new Set(t);
450
603
  if (i === !1) return /* @__PURE__ */ new Set();
451
- if (a && t.includes(a)) {
452
- const r = (n ?? []).filter((l) => l !== a);
453
- return /* @__PURE__ */ new Set([a, ...r]);
604
+ if (r && t.includes(r)) {
605
+ const a = (n ?? []).filter((l) => l !== r);
606
+ return /* @__PURE__ */ new Set([r, ...a]);
454
607
  }
455
- return t.filter((r) => !(n != null && n.includes(r))).length === 1 ? new Set(t) : /* @__PURE__ */ new Set();
608
+ return t.filter((a) => !(n != null && n.includes(a))).length === 1 ? new Set(t) : /* @__PURE__ */ new Set();
456
609
  }
457
- function ge(t, n, a) {
458
- return R.useCallback(
610
+ function $e(t, n, r) {
611
+ return C.useCallback(
459
612
  (i, o) => {
460
- if (!(n != null && n.includes(i))) return a(i, o);
461
- const r = t.filter((x) => !n.includes(x)), l = r[n.indexOf(i)] ?? r[0];
462
- return l ? a(l, t.indexOf(l)) : a(i, o);
613
+ if (!(n != null && n.includes(i))) return r(i, o);
614
+ const a = t.filter((h) => !n.includes(h)), l = a[n.indexOf(i)] ?? a[0];
615
+ return l ? r(l, t.indexOf(l)) : r(i, o);
463
616
  },
464
- [t, n, a]
617
+ [t, n, r]
465
618
  );
466
619
  }
467
- const Xe = R.forwardRef(
620
+ const dt = C.forwardRef(
468
621
  // Straight segments by default: the house line is a solid stroke with a DOT
469
622
  // at every observation — the data points are visible, the path connects them
470
623
  // without inventing values between them.
471
624
  // A smooth curve invents values between observations; opt back in with
472
625
  // `curve="natural"` when the interpolation is the point.
473
- ({ height: t = I, curve: n = "linear", forecastKeys: a, animatedSeriesKeys: i, showValues: o, className: r, ...l }, x) => {
474
- const { names: c, format: m, layers: u, legendItems: N, furniture: b, colorFor: f, labelFor: y, toggleSeries: C, isHidden: w } = Z(l), p = ge(c, a, f), h = ae(c, a, l.highlight, o), [k, d] = R.useState(null);
475
- return /* @__PURE__ */ e(z, { ref: x, className: r, height: t, legendItems: N, hovered: u.hovered, format: m, onLegendToggle: C, children: /* @__PURE__ */ A(
476
- pe,
477
- {
478
- data: l.data,
479
- margin: j,
480
- onMouseMove: (s) => d((s == null ? void 0 : s.activeTooltipIndex) ?? null),
481
- onMouseLeave: () => d(null),
482
- children: [
483
- b,
484
- l.tooltip !== !1 && /* @__PURE__ */ e(
485
- O,
626
+ ({ height: t = P, curve: n = "linear", forecastKeys: r, animatedSeriesKeys: i, showValues: o = !0, className: a, ...l }, h) => {
627
+ const { names: c, format: m, layers: d, legendItems: b, header: v, furniture: f, colorFor: p, labelFor: M, toggleSeries: y, isHidden: x } = ie(l), u = $e(c, r, p), g = ue(c, r, l.highlight, o), S = Me(c, r), $ = new Set(c.filter((N) => !x(N)).map(S)), R = Ce(S, $.size > 1), { activeIndex: s } = R, O = (N) => {
628
+ if (!(r != null && r.includes(N))) return;
629
+ const F = S(N);
630
+ if (F !== N)
631
+ return (B) => {
632
+ var T;
633
+ const k = (T = l.data[B]) == null ? void 0 : T[F];
634
+ return k != null && k !== "" && !x(F);
635
+ };
636
+ }, A = c.filter((N) => g.has(N) && !x(N)), I = (N, F) => {
637
+ var k;
638
+ const B = (k = l.data[N]) == null ? void 0 : k[F];
639
+ return typeof B == "number" && !Number.isNaN(B) ? B : null;
640
+ };
641
+ let L = 0;
642
+ for (let N = 0; N < l.data.length; N++)
643
+ for (const F of A) L = Math.max(L, Math.abs(I(N, F) ?? 0));
644
+ const E = (N) => {
645
+ if (A.length < 2 || L === 0) return;
646
+ const F = A.indexOf(N);
647
+ return (B) => {
648
+ const k = I(B, N);
649
+ return k == null ? !1 : A.some((T, G) => {
650
+ if (T === N) return !1;
651
+ const H = I(B, T);
652
+ return H == null ? !1 : (H > k || H === k && G < F) && (H - k) / L < 0.1;
653
+ });
654
+ };
655
+ };
656
+ return /* @__PURE__ */ e(Z, { ref: h, className: a, height: t, legendItems: b, ...v, hovered: d.hovered, format: m, onLegendToggle: y, hoverRef: R.frameRef, children: /* @__PURE__ */ w(Fe, { data: l.data, margin: J, ...R.handlers, children: [
657
+ f,
658
+ l.tooltip !== !1 && /* @__PURE__ */ e(
659
+ z,
660
+ {
661
+ content: /* @__PURE__ */ e(
662
+ j,
486
663
  {
487
- content: /* @__PURE__ */ e(
488
- T,
489
- {
490
- format: m,
491
- renderer: l.tooltip
492
- }
493
- ),
494
- cursor: { stroke: "var(--border-strong)" },
495
- isAnimationActive: !1
664
+ format: m,
665
+ renderer: l.tooltip
496
666
  }
497
667
  ),
498
- u.back,
499
- c.map((s, g) => /* @__PURE__ */ e(
500
- se,
668
+ cursor: !1,
669
+ isAnimationActive: !1
670
+ }
671
+ ),
672
+ d.back,
673
+ c.map((N, F) => /* @__PURE__ */ e(
674
+ be,
675
+ {
676
+ dataKey: N,
677
+ name: M(N),
678
+ type: n,
679
+ className: D(W, R.isDimmed(N) && "opacity-30"),
680
+ stroke: u(N, F),
681
+ strokeWidth: ae,
682
+ strokeDasharray: r != null && r.includes(N) ? "6 4" : void 0,
683
+ dot: /* @__PURE__ */ e(U, { color: u(N, F), seriesKey: N }),
684
+ activeDot: R.isDimmed(N) ? !1 : /* @__PURE__ */ e(U, { color: u(N, F), active: !0 }),
685
+ label: g.has(N) ? /* @__PURE__ */ e(
686
+ Se,
501
687
  {
502
- dataKey: s,
503
- name: y(s),
504
- type: n,
505
- stroke: p(s, g),
506
- strokeWidth: Y,
507
- strokeDasharray: a != null && a.includes(s) ? "6 4" : void 0,
508
- dot: /* @__PURE__ */ e(E, { color: p(s, g) }),
509
- activeDot: /* @__PURE__ */ e(E, { color: p(s, g), active: !0 }),
510
- label: h.has(s) ? /* @__PURE__ */ e(
511
- he,
512
- {
513
- color: p(s, g),
514
- format: m,
515
- hidden: k != null
516
- }
517
- ) : void 0,
518
- hide: w(s),
519
- isAnimationActive: (i == null ? void 0 : i.includes(s)) ?? !1
520
- },
521
- s
522
- )),
523
- u.front
524
- ]
525
- }
526
- ) });
688
+ color: Ne(u(N, F)) ? void 0 : u(N, F),
689
+ format: m,
690
+ hidden: s != null,
691
+ skip: O(N),
692
+ below: E(N)
693
+ }
694
+ ) : void 0,
695
+ hide: x(N),
696
+ isAnimationActive: (i == null ? void 0 : i.includes(N)) ?? !1
697
+ },
698
+ N
699
+ )),
700
+ d.front
701
+ ] }) });
527
702
  }
528
703
  );
529
- Xe.displayName = "LineChart";
530
- const Ze = R.forwardRef(
531
- ({ height: t = I, curve: n = "linear", stacked: a = !1, forecastKeys: i, showValues: o, className: r, ...l }, x) => {
532
- const { names: c, format: m, layers: u, legendItems: N, furniture: b, colorFor: f, labelFor: y, toggleSeries: C, isHidden: w } = Z(l), p = ge(c, i, f), h = a ? /* @__PURE__ */ new Set() : ae(c, i, l.highlight, o), [k, d] = R.useState(null), s = R.useId().replace(/[^a-zA-Z0-9]/g, "");
533
- return /* @__PURE__ */ e(z, { ref: x, className: r, height: t, legendItems: N, hovered: u.hovered, format: m, onLegendToggle: C, children: /* @__PURE__ */ A(
534
- Ne,
535
- {
536
- data: l.data,
537
- margin: j,
538
- onMouseMove: (g) => d((g == null ? void 0 : g.activeTooltipIndex) ?? null),
539
- onMouseLeave: () => d(null),
540
- children: [
541
- /* @__PURE__ */ e("defs", { children: c.map((g, v) => /* @__PURE__ */ A("linearGradient", { id: `${s}-${v}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
542
- /* @__PURE__ */ e("stop", { offset: "0%", stopColor: f(g, v), stopOpacity: 0.18 }),
543
- /* @__PURE__ */ e("stop", { offset: "100%", stopColor: f(g, v), stopOpacity: 0.02 })
544
- ] }, g)) }),
545
- b,
546
- l.tooltip !== !1 && /* @__PURE__ */ e(
547
- O,
704
+ dt.displayName = "LineChart";
705
+ const ut = C.forwardRef(
706
+ ({ height: t = P, curve: n = "linear", stacked: r = !1, forecastKeys: i, showValues: o, className: a, ...l }, h) => {
707
+ const { names: c, format: m, layers: d, legendItems: b, header: v, furniture: f, colorFor: p, labelFor: M, toggleSeries: y, isHidden: x } = ie(l), u = $e(c, i, p), g = r ? /* @__PURE__ */ new Set() : ue(c, i, l.highlight, o), S = Me(c, i), $ = new Set(c.filter((A) => !x(A)).map(S)), R = Ce(S, $.size > 1), { activeIndex: s } = R, O = C.useId().replace(/[^a-zA-Z0-9]/g, "");
708
+ return /* @__PURE__ */ e(Z, { ref: h, className: a, height: t, legendItems: b, ...v, hovered: d.hovered, format: m, onLegendToggle: y, hoverRef: R.frameRef, children: /* @__PURE__ */ w(Te, { data: l.data, margin: J, ...R.handlers, children: [
709
+ /* @__PURE__ */ e("defs", { children: c.map((A, I) => /* @__PURE__ */ w("linearGradient", { id: `${O}-${I}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
710
+ /* @__PURE__ */ e("stop", { offset: "0%", stopColor: p(A, I), stopOpacity: 0.18 }),
711
+ /* @__PURE__ */ e("stop", { offset: "100%", stopColor: p(A, I), stopOpacity: 0.02 })
712
+ ] }, A)) }),
713
+ f,
714
+ l.tooltip !== !1 && /* @__PURE__ */ e(
715
+ z,
716
+ {
717
+ content: /* @__PURE__ */ e(
718
+ j,
548
719
  {
549
- content: /* @__PURE__ */ e(
550
- T,
551
- {
552
- format: m,
553
- renderer: l.tooltip
554
- }
555
- ),
556
- cursor: { stroke: "var(--border-strong)" },
557
- isAnimationActive: !1
720
+ format: m,
721
+ renderer: l.tooltip
558
722
  }
559
723
  ),
560
- u.back,
561
- c.map((g, v) => /* @__PURE__ */ e(
562
- we,
563
- {
564
- dataKey: g,
565
- name: y(g),
566
- type: n,
567
- stackId: a ? "stack" : void 0,
568
- stroke: p(g, v),
569
- strokeWidth: Y,
570
- strokeDasharray: i != null && i.includes(g) ? "6 4" : void 0,
571
- fill: `url(#${s}-${v})`,
572
- dot: /* @__PURE__ */ e(E, { color: p(g, v) }),
573
- activeDot: /* @__PURE__ */ e(E, { color: p(g, v), active: !0 }),
574
- label: h.has(g) ? /* @__PURE__ */ e(he, { color: p(g, v), format: m, hidden: k != null }) : void 0,
575
- hide: w(g),
576
- isAnimationActive: !1
577
- },
578
- g
579
- )),
580
- u.front
581
- ]
582
- }
583
- ) });
724
+ cursor: !1,
725
+ isAnimationActive: !1
726
+ }
727
+ ),
728
+ d.back,
729
+ c.map((A, I) => /* @__PURE__ */ e(
730
+ Ie,
731
+ {
732
+ dataKey: A,
733
+ name: M(A),
734
+ type: n,
735
+ className: D(W, R.isDimmed(A) && "opacity-30"),
736
+ stackId: r ? "stack" : void 0,
737
+ stroke: u(A, I),
738
+ strokeWidth: ae,
739
+ strokeDasharray: i != null && i.includes(A) ? "6 4" : void 0,
740
+ fill: `url(#${O}-${I})`,
741
+ dot: /* @__PURE__ */ e(U, { color: u(A, I), seriesKey: A }),
742
+ activeDot: R.isDimmed(A) ? !1 : /* @__PURE__ */ e(U, { color: u(A, I), active: !0 }),
743
+ label: g.has(A) ? /* @__PURE__ */ e(Se, { color: u(A, I), format: m, hidden: s != null }) : void 0,
744
+ hide: x(A),
745
+ isAnimationActive: !1
746
+ },
747
+ A
748
+ )),
749
+ d.front
750
+ ] }) });
584
751
  }
585
752
  );
586
- Ze.displayName = "AreaChart";
587
- const Qe = R.forwardRef(
753
+ ut.displayName = "AreaChart";
754
+ const mt = C.forwardRef(
588
755
  ({
589
- height: t = I,
756
+ height: t = P,
590
757
  stacked: n = !1,
591
- layout: a = "vertical",
592
- showValues: i,
758
+ layout: r = "vertical",
759
+ showValues: i = !0,
593
760
  className: o,
594
- ...r
761
+ ...a
595
762
  }, l) => {
596
- const { names: x, format: c, layers: m, legendItems: u, furniture: N, colorFor: b, labelFor: f, toggleSeries: y, isHidden: C } = Z(r), w = a === "horizontal", p = n ? /* @__PURE__ */ new Set() : ae(x, void 0, r.highlight, i), h = r.xTickFormatter ?? ((s) => typeof s == "number" ? c(s) : s), k = [
597
- r.grid !== !1 ? /* @__PURE__ */ e(
598
- te,
763
+ const { names: h, format: c, layers: m, legendItems: d, header: b, furniture: v, colorFor: f, labelFor: p, toggleSeries: M, isHidden: y } = ie(a), x = r === "horizontal", u = n ? /* @__PURE__ */ new Set() : ue(h, void 0, a.highlight, i), g = h.filter((L) => !y(L)), S = n ? g[g.length - 1] : void 0, $ = a.data.map((L) => {
764
+ let E = null;
765
+ for (const N of g) {
766
+ const F = L[N];
767
+ typeof F == "number" && !Number.isNaN(F) && (E = (E ?? 0) + F);
768
+ }
769
+ return E;
770
+ }), R = a.xTickFormatter ?? ((L) => typeof L == "number" ? c(L) : L), s = [
771
+ a.grid !== !1 ? /* @__PURE__ */ e(
772
+ ce,
599
773
  {
600
774
  horizontal: !1,
601
775
  vertical: !0,
@@ -604,88 +778,120 @@ const Qe = R.forwardRef(
604
778
  "grid"
605
779
  ) : null,
606
780
  /* @__PURE__ */ e(
607
- re,
781
+ de,
608
782
  {
609
783
  type: "number",
610
- domain: r.xDomain,
611
- allowDataOverflow: !!r.xDomain,
784
+ domain: a.xDomain,
785
+ allowDataOverflow: !!a.xDomain,
612
786
  axisLine: !1,
613
787
  tickLine: !1,
614
788
  minTickGap: 28,
615
789
  tickMargin: 10,
616
- tick: /* @__PURE__ */ e(D, { anchor: "middle", dy: 0, format: h })
790
+ tick: /* @__PURE__ */ e(V, { anchor: "middle", dy: 0, format: R })
617
791
  },
618
792
  "x"
619
793
  ),
620
- r.showYAxis !== !1 ? /* @__PURE__ */ e(
621
- V,
794
+ a.showYAxis !== !1 ? /* @__PURE__ */ e(
795
+ ee,
622
796
  {
623
797
  type: "category",
624
- dataKey: r.categoryKey,
625
- width: r.yAxisWidth ?? 144,
798
+ dataKey: a.categoryKey,
799
+ width: a.yAxisWidth ?? 144,
626
800
  axisLine: !1,
627
801
  tickLine: !1,
628
802
  tickMargin: 6,
629
803
  tick: /* @__PURE__ */ e(
630
- D,
804
+ V,
631
805
  {
632
806
  anchor: "end",
633
807
  dy: "0.32em",
634
- format: r.yTickFormatter
808
+ format: a.yTickFormatter
635
809
  }
636
810
  )
637
811
  },
638
812
  "y"
639
813
  ) : null
640
- ], d = r.highlight && x.length === 1 && !x.includes(r.highlight) ? r.highlight : null;
641
- return /* @__PURE__ */ e(z, { ref: l, className: o, height: t, legendItems: u, hovered: m.hovered, format: c, onLegendToggle: y, children: /* @__PURE__ */ A(
642
- Ae,
814
+ ], O = a.highlight && h.length === 1 && !h.includes(a.highlight) ? a.highlight : null, { activeIndex: A, handlers: I } = Ae();
815
+ return /* @__PURE__ */ e(Z, { ref: l, className: o, height: t, legendItems: d, ...b, hovered: m.hovered, format: c, onLegendToggle: M, children: /* @__PURE__ */ w(
816
+ De,
643
817
  {
644
- data: r.data,
645
- layout: w ? "vertical" : "horizontal",
646
- margin: j,
818
+ data: a.data,
819
+ layout: x ? "vertical" : "horizontal",
820
+ margin: J,
647
821
  barCategoryGap: "24%",
822
+ ...I,
648
823
  children: [
649
- w ? k : N,
650
- r.tooltip !== !1 && /* @__PURE__ */ e(
651
- O,
824
+ x ? s : v,
825
+ a.tooltip !== !1 && /* @__PURE__ */ e(
826
+ z,
652
827
  {
653
828
  content: /* @__PURE__ */ e(
654
- T,
829
+ j,
655
830
  {
656
831
  format: c,
657
- renderer: r.tooltip
832
+ renderer: a.tooltip
658
833
  }
659
834
  ),
660
- cursor: { fill: "var(--muted)" },
835
+ cursor: !1,
661
836
  isAnimationActive: !1
662
837
  }
663
838
  ),
664
839
  m.back,
665
- x.map((s, g) => {
666
- const v = n ? g === x.length - 1 : !0, S = w ? [0, 4, 4, 0] : [4, 4, 0, 0];
667
- return /* @__PURE__ */ e(
668
- ce,
840
+ h.map((L, E) => {
841
+ const N = n ? L === S : !0, F = x ? [0, 4, 4, 0] : [4, 4, 0, 0];
842
+ return /* @__PURE__ */ w(
843
+ ge,
669
844
  {
670
- dataKey: s,
671
- name: f(s),
845
+ dataKey: L,
846
+ name: p(L),
672
847
  stackId: n ? "stack" : void 0,
673
- fill: b(s, g),
674
- activeBar: me,
675
- radius: v ? S : 0,
848
+ fill: f(L, E),
849
+ radius: N ? F : 0,
676
850
  maxBarSize: 48,
677
- label: p.has(s) ? /* @__PURE__ */ e(Pe, { format: c, horizontal: w }) : void 0,
678
- hide: C(s),
851
+ label: u.has(L) ? /* @__PURE__ */ e(rt, { format: c, horizontal: x }) : void 0,
852
+ hide: y(L),
679
853
  isAnimationActive: !1,
680
- children: d && r.data.map((L) => /* @__PURE__ */ e(
681
- de,
682
- {
683
- fill: L[r.categoryKey] === d ? "var(--color-chart-1)" : ne
684
- },
685
- String(L[r.categoryKey])
686
- ))
854
+ children: [
855
+ n && i && /* @__PURE__ */ e(
856
+ me,
857
+ {
858
+ dataKey: L,
859
+ content: /* @__PURE__ */ e(
860
+ at,
861
+ {
862
+ format: c,
863
+ horizontal: x,
864
+ light: Ne(f(L, E))
865
+ }
866
+ )
867
+ }
868
+ ),
869
+ n && i && L === S && /* @__PURE__ */ e(
870
+ me,
871
+ {
872
+ dataKey: L,
873
+ content: /* @__PURE__ */ e(
874
+ it,
875
+ {
876
+ totals: $,
877
+ format: c,
878
+ horizontal: x
879
+ }
880
+ )
881
+ }
882
+ ),
883
+ a.data.map((B, k) => /* @__PURE__ */ e(
884
+ te,
885
+ {
886
+ fill: O ? B[a.categoryKey] === O ? "var(--color-chart-1)" : re : f(L, E),
887
+ className: W,
888
+ opacity: X(k, A)
889
+ },
890
+ k
891
+ ))
892
+ ]
687
893
  },
688
- s
894
+ L
689
895
  );
690
896
  }),
691
897
  m.front
@@ -694,27 +900,27 @@ const Qe = R.forwardRef(
694
900
  ) });
695
901
  }
696
902
  );
697
- Qe.displayName = "BarChart";
698
- const be = R.forwardRef(
699
- ({ height: t = I, lineKeys: n, dualAxis: a = !1, stacked: i = !1, forecastKeys: o, className: r, ...l }, x) => {
700
- const { names: c, format: m, layers: u, furniture: N, colorFor: b, labelFor: f, toggleSeries: y, isHidden: C } = Z(l), w = c.filter((d) => !n.includes(d)), p = (d, s) => n.length ? "var(--chart-axis)" : b(d, s), h = (d, s) => n.length ? "var(--color-chart-1)" : b(d, s), k = c.length > 1 ? [
701
- ...w.map((d) => ({
702
- key: d,
703
- label: f(d),
704
- color: p(d, c.indexOf(d)),
705
- hidden: C(d)
903
+ mt.displayName = "BarChart";
904
+ const Oe = C.forwardRef(
905
+ ({ height: t = P, lineKeys: n, dualAxis: r = !1, stacked: i = !1, forecastKeys: o, className: a, ...l }, h) => {
906
+ const { names: c, format: m, layers: d, header: b, furniture: v, colorFor: f, labelFor: p, toggleSeries: M, isHidden: y } = ie(l), x = c.filter((s) => !n.includes(s)), u = (s, O) => n.length ? "var(--chart-axis)" : f(s, O), g = (s, O) => n.length ? "var(--color-chart-1)" : f(s, O), S = c.length > 1 ? [
907
+ ...x.map((s) => ({
908
+ key: s,
909
+ label: p(s),
910
+ color: u(s, c.indexOf(s)),
911
+ hidden: y(s)
706
912
  })),
707
- ...n.map((d) => ({
708
- key: d,
709
- label: f(d),
710
- color: h(d, c.indexOf(d)),
711
- hidden: C(d)
913
+ ...n.map((s) => ({
914
+ key: s,
915
+ label: p(s),
916
+ color: g(s, c.indexOf(s)),
917
+ hidden: y(s)
712
918
  }))
713
- ] : null;
714
- return /* @__PURE__ */ e(z, { ref: x, className: r, height: t, legendItems: k, hovered: u.hovered, format: m, onLegendToggle: y, children: /* @__PURE__ */ A(Ce, { data: l.data, margin: j, barCategoryGap: "24%", children: [
715
- N,
716
- a && /* @__PURE__ */ e(
717
- V,
919
+ ] : null, { activeIndex: $, handlers: R } = Ae();
920
+ return /* @__PURE__ */ e(Z, { ref: h, className: a, height: t, legendItems: S, ...b, hovered: d.hovered, format: m, onLegendToggle: M, children: /* @__PURE__ */ w(Ee, { data: l.data, margin: J, barCategoryGap: "24%", ...R, children: [
921
+ v,
922
+ r && /* @__PURE__ */ e(
923
+ ee,
718
924
  {
719
925
  yAxisId: "right",
720
926
  orientation: "right",
@@ -723,188 +929,196 @@ const be = R.forwardRef(
723
929
  tickLine: !1,
724
930
  tickMargin: 6,
725
931
  tick: /* @__PURE__ */ e(
726
- D,
932
+ V,
727
933
  {
728
934
  anchor: "start",
729
935
  dy: "0.32em",
730
- format: (d) => typeof d == "number" ? m(d) : d
936
+ format: (s) => typeof s == "number" ? m(s) : s
731
937
  }
732
938
  )
733
939
  }
734
940
  ),
735
941
  l.tooltip !== !1 && /* @__PURE__ */ e(
736
- O,
942
+ z,
737
943
  {
738
944
  content: /* @__PURE__ */ e(
739
- T,
945
+ j,
740
946
  {
741
947
  format: m,
742
948
  renderer: l.tooltip
743
949
  }
744
950
  ),
745
- cursor: { fill: "var(--muted)" },
951
+ cursor: !1,
746
952
  isAnimationActive: !1
747
953
  }
748
954
  ),
749
- u.back,
750
- w.map((d) => {
751
- const s = c.indexOf(d), g = i ? d === w[w.length - 1] : !0;
955
+ d.back,
956
+ x.map((s) => {
957
+ const O = c.indexOf(s), A = i ? s === x[x.length - 1] : !0;
752
958
  return /* @__PURE__ */ e(
753
- ce,
959
+ ge,
754
960
  {
755
- dataKey: d,
756
- name: f(d),
961
+ dataKey: s,
962
+ name: p(s),
757
963
  stackId: i ? "stack" : void 0,
758
- fill: p(d, s),
759
- activeBar: me,
760
- radius: g ? [4, 4, 0, 0] : 0,
964
+ fill: u(s, O),
965
+ radius: A ? [4, 4, 0, 0] : 0,
761
966
  maxBarSize: 48,
762
- hide: C(d),
763
- isAnimationActive: !1
967
+ hide: y(s),
968
+ isAnimationActive: !1,
969
+ children: l.data.map((I, L) => /* @__PURE__ */ e(
970
+ te,
971
+ {
972
+ fill: u(s, O),
973
+ className: W,
974
+ opacity: X(L, $)
975
+ },
976
+ L
977
+ ))
764
978
  },
765
- d
979
+ s
766
980
  );
767
981
  }),
768
- n.map((d) => {
769
- const s = c.indexOf(d);
982
+ n.map((s) => {
983
+ const O = c.indexOf(s);
770
984
  return /* @__PURE__ */ e(
771
- se,
985
+ be,
772
986
  {
773
- dataKey: d,
774
- name: f(d),
775
- yAxisId: a ? "right" : void 0,
987
+ dataKey: s,
988
+ name: p(s),
989
+ yAxisId: r ? "right" : void 0,
776
990
  type: "linear",
777
- stroke: h(d, s),
778
- strokeWidth: Y,
779
- strokeDasharray: o != null && o.includes(d) ? "6 4" : void 0,
780
- dot: /* @__PURE__ */ e(E, { color: h(d, s) }),
781
- activeDot: /* @__PURE__ */ e(E, { color: h(d, s), active: !0 }),
782
- hide: C(d),
991
+ stroke: g(s, O),
992
+ strokeWidth: ae,
993
+ strokeDasharray: o != null && o.includes(s) ? "6 4" : void 0,
994
+ dot: /* @__PURE__ */ e(U, { color: g(s, O) }),
995
+ activeDot: /* @__PURE__ */ e(U, { color: g(s, O), active: !0 }),
996
+ hide: y(s),
783
997
  isAnimationActive: !1
784
998
  },
785
- d
999
+ s
786
1000
  );
787
1001
  }),
788
- u.front
1002
+ d.front
789
1003
  ] }) });
790
1004
  }
791
1005
  );
792
- be.displayName = "ComboChart";
793
- const qe = R.forwardRef(
794
- (t, n) => /* @__PURE__ */ e(be, { ref: n, ...t })
1006
+ Oe.displayName = "ComboChart";
1007
+ const ft = C.forwardRef(
1008
+ (t, n) => /* @__PURE__ */ e(Oe, { ref: n, ...t })
795
1009
  );
796
- qe.displayName = "ComposedChart";
797
- const Je = R.forwardRef(
1010
+ ft.displayName = "ComposedChart";
1011
+ const ht = C.forwardRef(
798
1012
  ({
799
1013
  data: t,
800
1014
  xKey: n,
801
- yKey: a,
1015
+ yKey: r,
802
1016
  labelKey: i,
803
1017
  annotations: o,
804
- height: r = I,
1018
+ height: a = P,
805
1019
  grid: l = !1,
806
- showYAxis: x = !0,
1020
+ showYAxis: h = !0,
807
1021
  formatValue: c,
808
1022
  xScale: m = "number",
809
- xDomain: u,
810
- yDomain: N,
811
- xTickFormatter: b,
1023
+ xDomain: d,
1024
+ yDomain: b,
1025
+ xTickFormatter: v,
812
1026
  yTickFormatter: f,
813
- yAxisWidth: y = 44,
814
- tooltip: C,
815
- className: w
816
- }, p) => {
817
- const h = c ?? F, k = b ?? ((g) => typeof g == "number" ? F(g) : g), d = f ?? ((g) => typeof g == "number" ? h(g) : g), s = ve(o, h);
818
- return /* @__PURE__ */ e(z, { ref: p, className: w, height: r, legendItems: null, hovered: s.hovered, format: h, children: /* @__PURE__ */ A(ye, { margin: j, children: [
819
- l && /* @__PURE__ */ e(te, { vertical: !1, stroke: "var(--chart-grid)" }),
1027
+ yAxisWidth: p = 44,
1028
+ tooltip: M,
1029
+ className: y
1030
+ }, x) => {
1031
+ const u = c ?? _, g = v ?? ((R) => typeof R == "number" ? _(R) : R), S = f ?? ((R) => typeof R == "number" ? u(R) : R), $ = Le(o, u);
1032
+ return /* @__PURE__ */ e(Z, { ref: x, className: y, height: a, legendItems: null, hovered: $.hovered, format: u, children: /* @__PURE__ */ w(ke, { margin: J, children: [
1033
+ l && /* @__PURE__ */ e(ce, { vertical: !1, stroke: "var(--chart-grid)" }),
820
1034
  /* @__PURE__ */ e(
821
- re,
1035
+ de,
822
1036
  {
823
1037
  type: "number",
824
1038
  dataKey: n,
825
1039
  scale: m === "time" ? "time" : "auto",
826
- domain: u ?? (m === "time" ? ["dataMin", "dataMax"] : ["auto", "auto"]),
827
- allowDataOverflow: !!u,
1040
+ domain: d ?? (m === "time" ? ["dataMin", "dataMax"] : ["auto", "auto"]),
1041
+ allowDataOverflow: !!d,
828
1042
  axisLine: !1,
829
1043
  tickLine: !1,
830
1044
  minTickGap: 28,
831
1045
  tickMargin: 10,
832
- tick: /* @__PURE__ */ e(D, { anchor: "middle", dy: 0, format: k })
1046
+ tick: /* @__PURE__ */ e(V, { anchor: "middle", dy: 0, format: g })
833
1047
  }
834
1048
  ),
835
- x && /* @__PURE__ */ e(
836
- V,
1049
+ h && /* @__PURE__ */ e(
1050
+ ee,
837
1051
  {
838
1052
  type: "number",
839
- dataKey: a,
840
- width: y,
841
- domain: N,
842
- allowDataOverflow: !!N,
1053
+ dataKey: r,
1054
+ width: p,
1055
+ domain: b,
1056
+ allowDataOverflow: !!b,
843
1057
  axisLine: !1,
844
1058
  tickLine: !1,
845
1059
  tickMargin: 6,
846
- tick: /* @__PURE__ */ e(D, { anchor: "end", dy: "0.32em", format: d })
1060
+ tick: /* @__PURE__ */ e(V, { anchor: "end", dy: "0.32em", format: S })
847
1061
  }
848
1062
  ),
849
- C !== !1 && /* @__PURE__ */ e(
850
- O,
1063
+ M !== !1 && /* @__PURE__ */ e(
1064
+ z,
851
1065
  {
852
1066
  content: /* @__PURE__ */ e(
853
- T,
1067
+ j,
854
1068
  {
855
- format: h,
1069
+ format: u,
856
1070
  labelKey: i,
857
- renderer: C
1071
+ renderer: M
858
1072
  }
859
1073
  ),
860
1074
  cursor: { stroke: "var(--border-strong)", strokeDasharray: "4 4" },
861
1075
  isAnimationActive: !1
862
1076
  }
863
1077
  ),
864
- s.back,
1078
+ $.back,
865
1079
  /* @__PURE__ */ e(
866
- Re,
1080
+ Be,
867
1081
  {
868
1082
  data: t,
869
1083
  fill: "var(--color-chart-1)",
870
- shape: (g) => /* @__PURE__ */ e("circle", { cx: g.cx, cy: g.cy, r: 4.5, fill: "var(--color-chart-1)", fillOpacity: 0.75 }),
1084
+ shape: (R) => /* @__PURE__ */ e("circle", { cx: R.cx, cy: R.cy, r: 4.5, fill: "var(--color-chart-1)", fillOpacity: 0.75 }),
871
1085
  isAnimationActive: !1
872
1086
  }
873
1087
  ),
874
- s.front
1088
+ $.front
875
1089
  ] }) });
876
1090
  }
877
1091
  );
878
- Je.displayName = "ScatterChart";
879
- const Ke = R.forwardRef(
1092
+ ht.displayName = "ScatterChart";
1093
+ const xt = C.forwardRef(
880
1094
  ({
881
1095
  data: t,
882
1096
  nameKey: n,
883
- valueKey: a,
1097
+ valueKey: r,
884
1098
  donut: i = !0,
885
1099
  centerLabel: o,
886
- highlight: r,
1100
+ highlight: a,
887
1101
  height: l = 260,
888
- legend: x = !0,
1102
+ legend: h = !0,
889
1103
  formatValue: c,
890
1104
  tooltip: m,
891
- className: u
892
- }, N) => {
893
- const b = c ?? F, f = t.reduce((p, h) => p + (typeof h[a] == "number" ? h[a] : 0), 0), y = (p, h) => U(h), C = (p) => r && p !== r ? 0.3 : 1, w = x ? t.map((p, h) => ({
894
- label: `${p[n]} · ${f ? Math.round(Number(p[a]) / f * 100) : 0}%`,
895
- color: y(String(p[n]), h)
1105
+ className: d
1106
+ }, b) => {
1107
+ const v = c ?? _, f = t.reduce((g, S) => g + (typeof S[r] == "number" ? S[r] : 0), 0), p = (g, S) => ne(S), M = (g) => a && g !== a ? 0.3 : 1, [y, x] = C.useState(null), u = h ? t.map((g, S) => ({
1108
+ label: `${g[n]} · ${f ? Math.round(Number(g[r]) / f * 100) : 0}%`,
1109
+ color: p(String(g[n]), S)
896
1110
  })) : null;
897
- return /* @__PURE__ */ A("div", { ref: N, className: $("relative w-full font-sans", u), children: [
898
- w && /* @__PURE__ */ e(X, { items: w }),
899
- /* @__PURE__ */ A("div", { className: "relative", children: [
900
- /* @__PURE__ */ e(_, { width: "100%", height: l, children: /* @__PURE__ */ A(ke, { margin: { top: 8, right: 8, bottom: 8, left: 8 }, children: [
1111
+ return /* @__PURE__ */ w("div", { ref: b, className: D("relative w-full font-sans", d), children: [
1112
+ u && /* @__PURE__ */ e(Q, { items: u }),
1113
+ /* @__PURE__ */ w("div", { className: "relative", children: [
1114
+ /* @__PURE__ */ e(q, { width: "100%", height: l, children: /* @__PURE__ */ w(He, { margin: { top: 8, right: 8, bottom: 8, left: 8 }, children: [
901
1115
  m !== !1 && /* @__PURE__ */ e(
902
- O,
1116
+ z,
903
1117
  {
904
1118
  content: /* @__PURE__ */ e(
905
- T,
1119
+ j,
906
1120
  {
907
- format: b,
1121
+ format: v,
908
1122
  renderer: m
909
1123
  }
910
1124
  ),
@@ -912,10 +1126,10 @@ const Ke = R.forwardRef(
912
1126
  }
913
1127
  ),
914
1128
  /* @__PURE__ */ e(
915
- Me,
1129
+ _e,
916
1130
  {
917
1131
  data: t,
918
- dataKey: a,
1132
+ dataKey: r,
919
1133
  nameKey: n,
920
1134
  innerRadius: i ? "62%" : 0,
921
1135
  outerRadius: "88%",
@@ -923,57 +1137,61 @@ const Ke = R.forwardRef(
923
1137
  cornerRadius: i ? 4 : 2,
924
1138
  stroke: "none",
925
1139
  isAnimationActive: !1,
926
- children: t.map((p, h) => /* @__PURE__ */ e(
927
- de,
1140
+ onMouseEnter: (g, S) => x(S),
1141
+ onMouseLeave: () => x(null),
1142
+ children: t.map((g, S) => /* @__PURE__ */ e(
1143
+ te,
928
1144
  {
929
1145
  role: "presentation",
930
1146
  "aria-hidden": "true",
931
- fill: y(String(p[n]), h),
932
- fillOpacity: C(String(p[n]))
1147
+ className: W,
1148
+ fill: p(String(g[n]), S),
1149
+ fillOpacity: M(String(g[n])),
1150
+ opacity: X(S, y)
933
1151
  },
934
- String(p[n])
1152
+ String(g[n])
935
1153
  ))
936
1154
  }
937
1155
  )
938
1156
  ] }) }),
939
- i && /* @__PURE__ */ A("div", { className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center", children: [
940
- /* @__PURE__ */ e("div", { className: "text-xl font-medium text-foreground tabular-nums", children: b(f) }),
1157
+ i && /* @__PURE__ */ w("div", { className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center", children: [
1158
+ /* @__PURE__ */ e("div", { className: "text-xl font-medium text-foreground tabular-nums", children: v(f) }),
941
1159
  o && /* @__PURE__ */ e("div", { className: "mt-0.5 text-xs font-normal tracking-wide uppercase text-tertiary", children: o })
942
1160
  ] })
943
1161
  ] })
944
1162
  ] });
945
1163
  }
946
1164
  );
947
- Ke.displayName = "PieChart";
948
- const et = R.forwardRef(
1165
+ xt.displayName = "PieChart";
1166
+ const vt = C.forwardRef(
949
1167
  ({
950
1168
  data: t,
951
1169
  categoryKey: n,
952
- series: a,
1170
+ series: r,
953
1171
  seriesLabels: i,
954
1172
  highlight: o,
955
- maxValue: r,
1173
+ maxValue: a,
956
1174
  height: l = 300,
957
- legend: x,
1175
+ legend: h,
958
1176
  formatValue: c,
959
1177
  tooltip: m,
960
- className: u
961
- }, N) => {
962
- const b = R.useMemo(
963
- () => a ?? fe(t, n),
964
- [n, t, a]
965
- ), f = c ?? F, y = r ?? Math.max(
1178
+ className: d
1179
+ }, b) => {
1180
+ const v = C.useMemo(
1181
+ () => r ?? ye(t, n),
1182
+ [n, t, r]
1183
+ ), f = c ?? _, p = a ?? Math.max(
966
1184
  1,
967
1185
  ...t.flatMap(
968
- (h) => b.map(
969
- (k) => typeof h[k] == "number" ? h[k] : 0
1186
+ (u) => v.map(
1187
+ (g) => typeof u[g] == "number" ? u[g] : 0
970
1188
  )
971
1189
  )
972
- ), C = (h) => (i == null ? void 0 : i[h]) ?? h, w = (h, k) => o && b.includes(o) ? h === o ? "var(--color-chart-1)" : ne : U(k), p = x ?? b.length > 1 ? b.map((h, k) => ({ label: C(h), color: w(h, k) })) : null;
973
- return /* @__PURE__ */ A("div", { ref: N, className: $("relative w-full font-sans", u), children: [
974
- p && /* @__PURE__ */ e(X, { items: p, align: "center" }),
975
- /* @__PURE__ */ e("div", { className: "mx-auto w-full max-w-[520px]", children: /* @__PURE__ */ e(_, { width: "100%", height: l, children: /* @__PURE__ */ A(
976
- $e,
1190
+ ), M = (u) => (i == null ? void 0 : i[u]) ?? u, y = (u, g) => o && v.includes(o) ? u === o ? "var(--color-chart-1)" : re : ne(g), x = h ?? v.length > 1 ? v.map((u, g) => ({ label: M(u), color: y(u, g) })) : null;
1191
+ return /* @__PURE__ */ w("div", { ref: b, className: D("relative w-full font-sans", d), children: [
1192
+ x && /* @__PURE__ */ e(Q, { items: x, align: "center" }),
1193
+ /* @__PURE__ */ e("div", { className: "mx-auto w-full max-w-[520px]", children: /* @__PURE__ */ e(q, { width: "100%", height: l, children: /* @__PURE__ */ w(
1194
+ ze,
977
1195
  {
978
1196
  data: t,
979
1197
  cx: "50%",
@@ -981,29 +1199,29 @@ const et = R.forwardRef(
981
1199
  outerRadius: "68%",
982
1200
  margin: { top: 10, right: 56, bottom: 16, left: 56 },
983
1201
  children: [
984
- /* @__PURE__ */ e(Se, { stroke: "var(--border)", radialLines: !0 }),
1202
+ /* @__PURE__ */ e(je, { stroke: "var(--border)", radialLines: !0 }),
985
1203
  /* @__PURE__ */ e(
986
- ue,
1204
+ pe,
987
1205
  {
988
1206
  dataKey: n,
989
1207
  tick: { fill: "var(--text-secondary)", fontSize: "var(--text-s)", fontWeight: 500 }
990
1208
  }
991
1209
  ),
992
1210
  /* @__PURE__ */ e(
993
- Le,
1211
+ Pe,
994
1212
  {
995
1213
  angle: 90,
996
- domain: [0, y],
1214
+ domain: [0, p],
997
1215
  tick: !1,
998
1216
  axisLine: !1,
999
1217
  tickLine: !1
1000
1218
  }
1001
1219
  ),
1002
1220
  m !== !1 && /* @__PURE__ */ e(
1003
- O,
1221
+ z,
1004
1222
  {
1005
1223
  content: /* @__PURE__ */ e(
1006
- T,
1224
+ j,
1007
1225
  {
1008
1226
  format: f,
1009
1227
  renderer: m
@@ -1012,19 +1230,19 @@ const et = R.forwardRef(
1012
1230
  isAnimationActive: !1
1013
1231
  }
1014
1232
  ),
1015
- b.map((h, k) => /* @__PURE__ */ e(
1016
- Fe,
1233
+ v.map((u, g) => /* @__PURE__ */ e(
1234
+ We,
1017
1235
  {
1018
- dataKey: h,
1019
- name: C(h),
1020
- stroke: w(h, k),
1021
- fill: w(h, k),
1022
- fillOpacity: o ? h === o ? 0.16 : 0.05 : 0.1,
1023
- strokeWidth: Y,
1024
- dot: /* @__PURE__ */ e(E, { color: w(h, k) }),
1236
+ dataKey: u,
1237
+ name: M(u),
1238
+ stroke: y(u, g),
1239
+ fill: y(u, g),
1240
+ fillOpacity: o ? u === o ? 0.16 : 0.05 : 0.1,
1241
+ strokeWidth: ae,
1242
+ dot: /* @__PURE__ */ e(U, { color: y(u, g) }),
1025
1243
  isAnimationActive: !1
1026
1244
  },
1027
- h
1245
+ u
1028
1246
  ))
1029
1247
  ]
1030
1248
  }
@@ -1032,51 +1250,51 @@ const et = R.forwardRef(
1032
1250
  ] });
1033
1251
  }
1034
1252
  );
1035
- et.displayName = "RadarChart";
1036
- const tt = R.forwardRef(
1253
+ vt.displayName = "RadarChart";
1254
+ const bt = C.forwardRef(
1037
1255
  ({
1038
1256
  data: t,
1039
1257
  nameKey: n,
1040
- valueKey: a,
1258
+ valueKey: r,
1041
1259
  maxValue: i = 100,
1042
1260
  centerLabel: o,
1043
- height: r = I,
1261
+ height: a = P,
1044
1262
  legend: l = !0,
1045
- formatValue: x,
1263
+ formatValue: h,
1046
1264
  tooltip: c,
1047
1265
  className: m
1048
- }, u) => {
1049
- const N = x ?? F, b = t.map((C, w) => ({
1050
- ...C,
1051
- name: String(C[n]),
1052
- fill: ee(w)
1053
- })), f = b.length ? b.reduce(
1054
- (C, w) => C + (typeof w[a] == "number" ? w[a] : 0),
1266
+ }, d) => {
1267
+ const b = h ?? _, [v, f] = C.useState(null), p = t.map((x, u) => ({
1268
+ ...x,
1269
+ name: String(x[n]),
1270
+ fill: se(u)
1271
+ })), M = p.length ? p.reduce(
1272
+ (x, u) => x + (typeof u[r] == "number" ? u[r] : 0),
1055
1273
  0
1056
- ) / b.length : 0, y = l ? b.map((C, w) => ({
1057
- label: String(C[n]),
1058
- color: ee(w)
1274
+ ) / p.length : 0, y = l ? p.map((x, u) => ({
1275
+ label: String(x[n]),
1276
+ color: se(u)
1059
1277
  })) : null;
1060
- return /* @__PURE__ */ A("div", { ref: u, className: $("relative w-full font-sans", m), children: [
1061
- /* @__PURE__ */ A("div", { className: "relative mx-auto w-full max-w-[420px]", children: [
1062
- /* @__PURE__ */ e(_, { width: "100%", height: r, children: /* @__PURE__ */ A(
1063
- Oe,
1278
+ return /* @__PURE__ */ w("div", { ref: d, className: D("relative w-full font-sans", m), children: [
1279
+ /* @__PURE__ */ w("div", { className: "relative mx-auto w-full max-w-[420px]", children: [
1280
+ /* @__PURE__ */ e(q, { width: "100%", height: a, children: /* @__PURE__ */ w(
1281
+ Ge,
1064
1282
  {
1065
- data: b,
1283
+ data: p,
1066
1284
  innerRadius: "48%",
1067
1285
  outerRadius: "82%",
1068
1286
  startAngle: 90,
1069
1287
  endAngle: -270,
1070
1288
  margin: { top: 6, right: 6, bottom: 6, left: 6 },
1071
1289
  children: [
1072
- /* @__PURE__ */ e(ue, { type: "number", domain: [0, i], tick: !1 }),
1290
+ /* @__PURE__ */ e(pe, { type: "number", domain: [0, i], tick: !1 }),
1073
1291
  c !== !1 && /* @__PURE__ */ e(
1074
- O,
1292
+ z,
1075
1293
  {
1076
1294
  content: /* @__PURE__ */ e(
1077
- T,
1295
+ j,
1078
1296
  {
1079
- format: N,
1297
+ format: b,
1080
1298
  renderer: c
1081
1299
  }
1082
1300
  ),
@@ -1084,83 +1302,95 @@ const tt = R.forwardRef(
1084
1302
  }
1085
1303
  ),
1086
1304
  /* @__PURE__ */ e(
1087
- Te,
1305
+ Ve,
1088
1306
  {
1089
- dataKey: a,
1307
+ dataKey: r,
1090
1308
  background: { fill: "var(--muted)" },
1091
1309
  cornerRadius: 999,
1092
1310
  maxBarSize: 18,
1093
- isAnimationActive: !1
1311
+ isAnimationActive: !1,
1312
+ onMouseEnter: (x, u) => f(u),
1313
+ onMouseLeave: () => f(null),
1314
+ children: p.map((x, u) => /* @__PURE__ */ e(
1315
+ te,
1316
+ {
1317
+ fill: x.fill,
1318
+ className: W,
1319
+ opacity: X(u, v)
1320
+ },
1321
+ `${x.name}-${u}`
1322
+ ))
1094
1323
  }
1095
1324
  )
1096
1325
  ]
1097
1326
  }
1098
1327
  ) }),
1099
- /* @__PURE__ */ A("div", { className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center", children: [
1100
- /* @__PURE__ */ e("div", { className: "text-xl font-medium text-foreground tabular-nums", children: N(Math.round(f)) }),
1328
+ /* @__PURE__ */ w("div", { className: "pointer-events-none absolute inset-0 flex flex-col items-center justify-center", children: [
1329
+ /* @__PURE__ */ e("div", { className: "text-xl font-medium text-foreground tabular-nums", children: b(Math.round(M)) }),
1101
1330
  o && /* @__PURE__ */ e("div", { className: "mt-0.5 text-xs font-normal tracking-wide uppercase text-tertiary", children: o })
1102
1331
  ] })
1103
1332
  ] }),
1104
- y && /* @__PURE__ */ e(X, { items: y, align: "center", className: "mb-0 mt-3" })
1333
+ y && /* @__PURE__ */ e(Q, { items: y, align: "center", className: "mb-0 mt-3" })
1105
1334
  ] });
1106
1335
  }
1107
1336
  );
1108
- tt.displayName = "RadialBarChart";
1109
- function rt({
1337
+ bt.displayName = "RadialBarChart";
1338
+ function gt({
1110
1339
  x: t = 0,
1111
1340
  y: n = 0,
1112
- width: a = 0,
1341
+ width: r = 0,
1113
1342
  height: i = 0,
1114
1343
  depth: o = 0,
1115
- index: r = 0,
1344
+ index: a = 0,
1116
1345
  name: l,
1117
- value: x,
1118
- format: c = F
1346
+ value: h,
1347
+ format: c = _,
1348
+ activeIndex: m = null
1119
1349
  }) {
1120
1350
  if (o === 0) return /* @__PURE__ */ e("g", {});
1121
- const m = o === 0 ? "transparent" : ee(r), u = o > 0 && r < 4, N = a > 72 && i > 38;
1122
- return /* @__PURE__ */ A("g", { children: [
1351
+ const d = o === 0 ? "transparent" : se(a), b = o > 0 && a < 4, v = r > 72 && i > 38;
1352
+ return /* @__PURE__ */ w("g", { className: W, opacity: X(a, m), children: [
1123
1353
  /* @__PURE__ */ e(
1124
1354
  "rect",
1125
1355
  {
1126
1356
  x: t,
1127
1357
  y: n,
1128
- width: a,
1358
+ width: r,
1129
1359
  height: i,
1130
1360
  rx: 6,
1131
1361
  ry: 6,
1132
- fill: m,
1362
+ fill: d,
1133
1363
  stroke: "var(--background)",
1134
1364
  strokeWidth: 4
1135
1365
  }
1136
1366
  ),
1137
- N && /* @__PURE__ */ e(
1367
+ v && /* @__PURE__ */ e(
1138
1368
  "foreignObject",
1139
1369
  {
1140
1370
  x: t + 8,
1141
1371
  y: n + 8,
1142
- width: Math.max(0, a - 16),
1372
+ width: Math.max(0, r - 16),
1143
1373
  height: Math.max(0, i - 16),
1144
1374
  className: "pointer-events-none overflow-hidden",
1145
- children: /* @__PURE__ */ A("div", { className: "flex h-full flex-col justify-between", children: [
1375
+ children: /* @__PURE__ */ w("div", { className: "flex h-full flex-col justify-between", children: [
1146
1376
  /* @__PURE__ */ e(
1147
1377
  "p",
1148
1378
  {
1149
- className: $(
1379
+ className: D(
1150
1380
  "truncate text-xs font-medium",
1151
- u ? "text-background" : "text-foreground"
1381
+ b ? "text-background" : "text-foreground"
1152
1382
  ),
1153
1383
  children: l
1154
1384
  }
1155
1385
  ),
1156
- typeof x == "number" && i > 58 && /* @__PURE__ */ e(
1386
+ typeof h == "number" && i > 58 && /* @__PURE__ */ e(
1157
1387
  "p",
1158
1388
  {
1159
- className: $(
1389
+ className: D(
1160
1390
  "text-xs tabular-nums",
1161
- u ? "text-background/70" : "text-tertiary"
1391
+ b ? "text-background/70" : "text-tertiary"
1162
1392
  ),
1163
- children: c(x)
1393
+ children: c(h)
1164
1394
  }
1165
1395
  )
1166
1396
  ] })
@@ -1168,53 +1398,55 @@ function rt({
1168
1398
  )
1169
1399
  ] });
1170
1400
  }
1171
- function nt(t, n, a) {
1172
- const i = [], o = (r) => {
1173
- const l = Array.isArray(r.children) ? r.children : void 0;
1401
+ function pt(t, n, r) {
1402
+ const i = [], o = (a) => {
1403
+ const l = Array.isArray(a.children) ? a.children : void 0;
1174
1404
  if (l != null && l.length) {
1175
1405
  l.forEach(o);
1176
1406
  return;
1177
1407
  }
1178
- typeof r[a] == "number" && i.push({
1179
- ...r,
1180
- name: String(r[n] ?? ""),
1181
- value: r[a]
1408
+ typeof a[r] == "number" && i.push({
1409
+ ...a,
1410
+ name: String(a[n] ?? ""),
1411
+ value: a[r]
1182
1412
  });
1183
1413
  };
1184
1414
  return t.forEach(o), i.length ? i : t;
1185
1415
  }
1186
- const at = R.forwardRef(
1416
+ const Nt = C.forwardRef(
1187
1417
  ({
1188
1418
  data: t,
1189
1419
  nameKey: n,
1190
- valueKey: a,
1191
- height: i = I,
1420
+ valueKey: r,
1421
+ height: i = P,
1192
1422
  formatValue: o,
1193
- tooltip: r,
1423
+ tooltip: a,
1194
1424
  className: l
1195
- }, x) => {
1196
- const c = o ?? F, m = R.useMemo(
1197
- () => nt(t, n, a),
1198
- [t, n, a]
1199
- );
1200
- return /* @__PURE__ */ e("div", { ref: x, className: $("relative w-full font-sans", l), children: /* @__PURE__ */ e(_, { width: "100%", height: i, children: /* @__PURE__ */ e(
1201
- Ie,
1425
+ }, h) => {
1426
+ const c = o ?? _, m = C.useMemo(
1427
+ () => pt(t, n, r),
1428
+ [t, n, r]
1429
+ ), [d, b] = C.useState(null);
1430
+ return /* @__PURE__ */ e("div", { ref: h, className: D("relative w-full font-sans", l), children: /* @__PURE__ */ e(q, { width: "100%", height: i, children: /* @__PURE__ */ e(
1431
+ Ue,
1202
1432
  {
1203
1433
  data: m,
1204
1434
  nameKey: n,
1205
- dataKey: a,
1435
+ dataKey: r,
1206
1436
  type: "flat",
1207
1437
  aspectRatio: 1.6,
1208
- content: /* @__PURE__ */ e(rt, { format: c }),
1438
+ content: /* @__PURE__ */ e(gt, { format: c, activeIndex: d }),
1209
1439
  isAnimationActive: !1,
1210
- children: r !== !1 && /* @__PURE__ */ e(
1211
- O,
1440
+ onMouseEnter: (v) => b(v.depth ? v.index ?? null : null),
1441
+ onMouseLeave: () => b(null),
1442
+ children: a !== !1 && /* @__PURE__ */ e(
1443
+ z,
1212
1444
  {
1213
1445
  content: /* @__PURE__ */ e(
1214
- T,
1446
+ j,
1215
1447
  {
1216
1448
  format: c,
1217
- renderer: r
1449
+ renderer: a
1218
1450
  }
1219
1451
  ),
1220
1452
  isAnimationActive: !1
@@ -1224,98 +1456,100 @@ const at = R.forwardRef(
1224
1456
  ) }) });
1225
1457
  }
1226
1458
  );
1227
- at.displayName = "TreemapChart";
1228
- const J = "var(--color-chart-1)", it = "var(--chart-track)", G = 24, ot = 44, ie = 0.55, oe = 4, le = (t, n, a, i, o) => {
1229
- const r = Math.min(o, a / 2, i);
1230
- return `M ${t},${n + i} L ${t},${n + r} Q ${t},${n} ${t + r},${n} L ${t + a - r},${n} Q ${t + a},${n} ${t + a},${n + r} L ${t + a},${n + i} Z`;
1459
+ Nt.displayName = "TreemapChart";
1460
+ const le = "var(--color-chart-1)", wt = "var(--chart-track)", K = 24, At = 44, he = 0.55, xe = 4, ve = (t, n, r, i, o) => {
1461
+ const a = Math.min(o, r / 2, i);
1462
+ return `M ${t},${n + i} L ${t},${n + a} Q ${t},${n} ${t + a},${n} L ${t + r - a},${n} Q ${t + r},${n} ${t + r},${n + a} L ${t + r},${n + i} Z`;
1231
1463
  };
1232
- function lt() {
1233
- const t = R.useRef(null), [n, a] = R.useState(0);
1234
- return R.useLayoutEffect(() => {
1464
+ function Ct() {
1465
+ const t = C.useRef(null), [n, r] = C.useState(0);
1466
+ return C.useLayoutEffect(() => {
1235
1467
  const i = t.current;
1236
1468
  if (!i) return;
1237
- a(i.getBoundingClientRect().width);
1238
- const o = new ResizeObserver((r) => {
1239
- var x;
1240
- const l = ((x = r[0]) == null ? void 0 : x.contentRect.width) ?? 0;
1241
- a((c) => Math.abs(c - l) > 0.5 ? l : c);
1469
+ r(i.getBoundingClientRect().width);
1470
+ const o = new ResizeObserver((a) => {
1471
+ var h;
1472
+ const l = ((h = a[0]) == null ? void 0 : h.contentRect.width) ?? 0;
1473
+ r((c) => Math.abs(c - l) > 0.5 ? l : c);
1242
1474
  });
1243
1475
  return o.observe(i), () => o.disconnect();
1244
1476
  }, []), { ref: t, width: n };
1245
1477
  }
1246
- const st = R.forwardRef(
1478
+ const Mt = C.forwardRef(
1247
1479
  ({
1248
1480
  data: t,
1249
1481
  nameKey: n,
1250
- valueKey: a,
1251
- height: i = I,
1482
+ valueKey: r,
1483
+ height: i = P,
1252
1484
  formatValue: o,
1253
- label: r,
1485
+ label: a,
1254
1486
  tooltip: l,
1255
- className: x
1487
+ className: h
1256
1488
  }, c) => {
1257
- var g;
1258
- const m = o ?? F, { ref: u, width: N } = lt(), [b, f] = R.useState(null), y = Number(((g = t[0]) == null ? void 0 : g[a]) ?? 0), C = t.length, w = Math.max(0, i - G - ot), p = G + w, h = C > 0 ? N / (C + (C - 1) * ie) : 0, k = h * ie, d = t.map((v, S) => {
1259
- var B;
1260
- const L = Number(v[a]), H = Number(((B = t[S - 1]) == null ? void 0 : B[a]) ?? L), Q = y ? L / y * 100 : 0, q = H ? L / H * 100 : 0, M = y && L > 0 ? Math.max(2, L / y * w) : 0;
1489
+ var R;
1490
+ const m = o ?? _, { ref: d, width: b } = Ct(), [v, f] = C.useState(null), p = Number(((R = t[0]) == null ? void 0 : R[r]) ?? 0), M = t.length, y = Math.max(0, i - K - At), x = K + y, u = M > 0 ? b / (M + (M - 1) * he) : 0, g = u * he, S = t.map((s, O) => {
1491
+ var F;
1492
+ const A = Number(s[r]), I = Number(((F = t[O - 1]) == null ? void 0 : F[r]) ?? A), L = p ? A / p * 100 : 0, E = I ? A / I * 100 : 0, N = p && A > 0 ? Math.max(2, A / p * y) : 0;
1261
1493
  return {
1262
- datum: v,
1263
- index: S,
1264
- name: String(v[n]),
1265
- value: L,
1266
- conversionFromFirst: Q,
1267
- conversionFromPrevious: q,
1268
- dropOffFromPrevious: S === 0 ? 0 : 100 - q,
1269
- x: S * (h + k),
1270
- y: p - M,
1271
- width: h,
1272
- height: M,
1494
+ datum: s,
1495
+ index: O,
1496
+ name: String(s[n]),
1497
+ value: A,
1498
+ conversionFromFirst: L,
1499
+ conversionFromPrevious: E,
1500
+ dropOffFromPrevious: O === 0 ? 0 : 100 - E,
1501
+ x: O * (u + g),
1502
+ y: x - N,
1503
+ width: u,
1504
+ height: N,
1273
1505
  formatValue: m
1274
1506
  };
1275
- }), s = b != null ? d[b] : void 0;
1276
- return /* @__PURE__ */ e("div", { ref: c, className: $("relative w-full font-sans", x), children: /* @__PURE__ */ A("div", { ref: u, className: "relative w-full", style: { height: i }, children: [
1277
- N > 0 && C > 0 && /* @__PURE__ */ A("svg", { width: N, height: i, className: "block", children: [
1278
- d.slice(1).map((v) => {
1279
- const S = d[v.index - 1];
1507
+ }), $ = v != null ? S[v] : void 0;
1508
+ return /* @__PURE__ */ e("div", { ref: c, className: D("relative w-full font-sans", h), children: /* @__PURE__ */ w("div", { ref: d, className: "relative w-full", style: { height: i }, children: [
1509
+ b > 0 && M > 0 && /* @__PURE__ */ w("svg", { width: b, height: i, className: "block", children: [
1510
+ S.slice(1).map((s) => {
1511
+ const O = S[s.index - 1];
1280
1512
  return /* @__PURE__ */ e(
1281
1513
  "path",
1282
1514
  {
1283
- d: `M ${S.x + S.width},${S.y} L ${v.x},${v.y} L ${v.x},${p} L ${S.x + S.width},${p} Z`,
1284
- fill: J,
1515
+ d: `M ${O.x + O.width},${O.y} L ${s.x},${s.y} L ${s.x},${x} L ${O.x + O.width},${x} Z`,
1516
+ fill: le,
1285
1517
  opacity: 0.14
1286
1518
  },
1287
- `connector-${v.index}`
1519
+ `connector-${s.index}`
1288
1520
  );
1289
1521
  }),
1290
- d.map((v) => /* @__PURE__ */ A(
1522
+ S.map((s) => /* @__PURE__ */ w(
1291
1523
  "g",
1292
1524
  {
1293
1525
  role: "img",
1294
- "aria-label": `${v.name}: ${m(v.value)} (${Math.round(v.conversionFromFirst)}% of ${d[0].name})`,
1526
+ "aria-label": `${s.name}: ${m(s.value)} (${Math.round(s.conversionFromFirst)}% of ${S[0].name})`,
1295
1527
  children: [
1296
1528
  /* @__PURE__ */ e(
1297
1529
  "path",
1298
1530
  {
1299
- d: le(v.x, G, v.width, w, oe),
1300
- fill: it
1531
+ d: ve(s.x, K, s.width, y, xe),
1532
+ fill: wt
1301
1533
  }
1302
1534
  ),
1303
- v.height > 0 && /* @__PURE__ */ e(
1535
+ s.height > 0 && /* @__PURE__ */ e(
1304
1536
  "path",
1305
1537
  {
1306
- d: le(v.x, v.y, v.width, v.height, oe),
1307
- fill: J
1538
+ d: ve(s.x, s.y, s.width, s.height, xe),
1539
+ fill: le,
1540
+ className: W,
1541
+ opacity: X(s.index, v)
1308
1542
  }
1309
1543
  ),
1310
- r !== !1 && (r ? r(v) : /* @__PURE__ */ A(
1544
+ a !== !1 && (a ? a(s) : /* @__PURE__ */ w(
1311
1545
  "text",
1312
1546
  {
1313
- x: v.x,
1314
- y: v.y - 8,
1547
+ x: s.x,
1548
+ y: s.y - 8,
1315
1549
  textAnchor: "start",
1316
1550
  className: "fill-secondary text-xs font-normal tabular-nums",
1317
1551
  children: [
1318
- Math.round(v.conversionFromFirst),
1552
+ Math.round(s.conversionFromFirst),
1319
1553
  "%"
1320
1554
  ]
1321
1555
  }
@@ -1323,68 +1557,68 @@ const st = R.forwardRef(
1323
1557
  /* @__PURE__ */ e(
1324
1558
  "text",
1325
1559
  {
1326
- x: v.x,
1327
- y: p + 18,
1560
+ x: s.x,
1561
+ y: x + 18,
1328
1562
  textAnchor: "start",
1329
1563
  className: "fill-primary text-xs font-normal",
1330
- children: v.name
1564
+ children: s.name
1331
1565
  }
1332
1566
  ),
1333
1567
  /* @__PURE__ */ e(
1334
1568
  "text",
1335
1569
  {
1336
- x: v.x,
1337
- y: p + 34,
1570
+ x: s.x,
1571
+ y: x + 34,
1338
1572
  textAnchor: "start",
1339
1573
  className: "fill-tertiary text-xs tabular-nums",
1340
- children: m(v.value)
1574
+ children: m(s.value)
1341
1575
  }
1342
1576
  ),
1343
1577
  /* @__PURE__ */ e(
1344
1578
  "rect",
1345
1579
  {
1346
- x: v.x,
1347
- y: G,
1348
- width: v.index === C - 1 ? h : h + k,
1349
- height: w,
1580
+ x: s.x,
1581
+ y: K,
1582
+ width: s.index === M - 1 ? u : u + g,
1583
+ height: y,
1350
1584
  fill: "transparent",
1351
- onMouseEnter: () => f(v.index),
1585
+ onMouseEnter: () => f(s.index),
1352
1586
  onMouseLeave: () => f(null)
1353
1587
  }
1354
1588
  )
1355
1589
  ]
1356
1590
  },
1357
- `${v.name}-${v.index}`
1591
+ `${s.name}-${s.index}`
1358
1592
  ))
1359
1593
  ] }),
1360
- l !== !1 && s && /* @__PURE__ */ e(
1594
+ l !== !1 && $ && /* @__PURE__ */ e(
1361
1595
  "div",
1362
1596
  {
1363
1597
  className: "pointer-events-none absolute z-10 -translate-x-1/2 -translate-y-full",
1364
- style: { left: s.x + s.width / 2, top: s.y - 10 },
1598
+ style: { left: $.x + $.width / 2, top: $.y - 10 },
1365
1599
  children: l ? l({
1366
1600
  active: !0,
1367
- label: s.name,
1601
+ label: $.name,
1368
1602
  items: [
1369
1603
  {
1370
- key: s.name,
1371
- name: s.name,
1372
- value: s.value,
1373
- color: J,
1374
- datum: s.datum
1604
+ key: $.name,
1605
+ name: $.name,
1606
+ value: $.value,
1607
+ color: le,
1608
+ datum: $.datum
1375
1609
  }
1376
1610
  ],
1377
1611
  formatValue: m
1378
- }) : /* @__PURE__ */ A("div", { className: "rounded-md bg-foreground px-2.5 py-1.5 text-xs whitespace-nowrap text-background", children: [
1379
- /* @__PURE__ */ e("div", { className: "text-xs font-normal tracking-wide uppercase text-background/60", children: s.name }),
1380
- /* @__PURE__ */ e("div", { className: "font-normal tabular-nums", children: m(s.value) }),
1381
- /* @__PURE__ */ A("div", { className: "text-background/70 tabular-nums", children: [
1382
- Math.round(s.conversionFromFirst),
1612
+ }) : /* @__PURE__ */ w("div", { className: "rounded-md bg-foreground px-2.5 py-1.5 text-xs whitespace-nowrap text-background", children: [
1613
+ /* @__PURE__ */ e("div", { className: "text-xs font-normal tracking-wide uppercase text-background/60", children: $.name }),
1614
+ /* @__PURE__ */ e("div", { className: "font-normal tabular-nums", children: m($.value) }),
1615
+ /* @__PURE__ */ w("div", { className: "text-background/70 tabular-nums", children: [
1616
+ Math.round($.conversionFromFirst),
1383
1617
  "% of ",
1384
- d[0].name,
1385
- s.index > 0 && /* @__PURE__ */ A(K, { children: [
1618
+ S[0].name,
1619
+ $.index > 0 && /* @__PURE__ */ w(oe, { children: [
1386
1620
  " · −",
1387
- Math.round(s.dropOffFromPrevious),
1621
+ Math.round($.dropOffFromPrevious),
1388
1622
  "% step"
1389
1623
  ] })
1390
1624
  ] })
@@ -1394,18 +1628,18 @@ const st = R.forwardRef(
1394
1628
  ] }) });
1395
1629
  }
1396
1630
  );
1397
- st.displayName = "FunnelChart";
1631
+ Mt.displayName = "FunnelChart";
1398
1632
  export {
1399
- Ze as AreaChart,
1400
- Qe as BarChart,
1401
- be as ComboChart,
1402
- qe as ComposedChart,
1403
- st as FunnelChart,
1404
- Xe as LineChart,
1405
- I as MIN_HEIGHT,
1406
- Ke as PieChart,
1407
- et as RadarChart,
1408
- tt as RadialBarChart,
1409
- Je as ScatterChart,
1410
- at as TreemapChart
1633
+ ut as AreaChart,
1634
+ mt as BarChart,
1635
+ Oe as ComboChart,
1636
+ ft as ComposedChart,
1637
+ Mt as FunnelChart,
1638
+ dt as LineChart,
1639
+ P as MIN_HEIGHT,
1640
+ xt as PieChart,
1641
+ vt as RadarChart,
1642
+ bt as RadialBarChart,
1643
+ ht as ScatterChart,
1644
+ Nt as TreemapChart
1411
1645
  };