@storm-ds/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +33 -0
- package/dist/charts.d.mts +136 -0
- package/dist/charts.d.ts +136 -0
- package/dist/charts.js +406 -0
- package/dist/charts.js.map +1 -0
- package/dist/charts.mjs +410 -0
- package/dist/charts.mjs.map +1 -0
- package/dist/index.d.mts +927 -0
- package/dist/index.d.ts +927 -0
- package/dist/index.js +3987 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3987 -0
- package/dist/index.mjs.map +1 -0
- package/dist/plugin.d.mts +8 -0
- package/dist/plugin.d.ts +8 -0
- package/dist/plugin.js +159 -0
- package/dist/plugin.js.map +1 -0
- package/dist/plugin.mjs +128 -0
- package/dist/plugin.mjs.map +1 -0
- package/package.json +72 -0
package/dist/charts.js
ADDED
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/charts.ts
|
|
22
|
+
var charts_exports = {};
|
|
23
|
+
__export(charts_exports, {
|
|
24
|
+
ChartContainer: () => ChartContainer,
|
|
25
|
+
ChartTooltipContent: () => ChartTooltipContent,
|
|
26
|
+
StormAreaChart: () => StormAreaChart,
|
|
27
|
+
StormBarChart: () => StormBarChart,
|
|
28
|
+
StormLineChart: () => StormLineChart,
|
|
29
|
+
StormPieChart: () => StormPieChart,
|
|
30
|
+
StormRadarChart: () => StormRadarChart,
|
|
31
|
+
StormRadialChart: () => StormRadialChart
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(charts_exports);
|
|
34
|
+
|
|
35
|
+
// src/components/charts/ChartContainer.tsx
|
|
36
|
+
var import_react = require("react");
|
|
37
|
+
var import_recharts = require("recharts");
|
|
38
|
+
|
|
39
|
+
// src/utils/cn.ts
|
|
40
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
41
|
+
function toClassString(input) {
|
|
42
|
+
if (!input) return "";
|
|
43
|
+
if (typeof input === "string") return input;
|
|
44
|
+
if (Array.isArray(input)) return input.map(toClassString).filter(Boolean).join(" ");
|
|
45
|
+
return Object.entries(input).filter(([, value]) => Boolean(value)).map(([key]) => key).join(" ");
|
|
46
|
+
}
|
|
47
|
+
function cn(...inputs) {
|
|
48
|
+
return (0, import_tailwind_merge.twMerge)(inputs.map(toClassString).filter(Boolean).join(" "));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// src/components/charts/ChartContainer.tsx
|
|
52
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
53
|
+
var ChartContainer = (0, import_react.forwardRef)(
|
|
54
|
+
({ className, height = 350, children, ...props }, ref) => {
|
|
55
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
56
|
+
"div",
|
|
57
|
+
{
|
|
58
|
+
ref,
|
|
59
|
+
className: cn(
|
|
60
|
+
"w-full text-sm",
|
|
61
|
+
"[&_.recharts-cartesian-grid_line]:stroke-storm-border",
|
|
62
|
+
"[&_.recharts-cartesian-axis-tick_text]:fill-storm-muted-foreground",
|
|
63
|
+
"[&_.recharts-cartesian-axis-line]:stroke-storm-border",
|
|
64
|
+
"[&_.recharts-polar-grid_circle]:stroke-storm-border",
|
|
65
|
+
"[&_.recharts-polar-angle-axis_text]:fill-storm-muted-foreground",
|
|
66
|
+
"[&_.recharts-radial-bar-background-sector]:fill-storm-accent/10",
|
|
67
|
+
className
|
|
68
|
+
),
|
|
69
|
+
...props,
|
|
70
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_recharts.ResponsiveContainer, { width: "100%", height, children })
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
ChartContainer.displayName = "ChartContainer";
|
|
76
|
+
|
|
77
|
+
// src/components/charts/ChartTooltip.tsx
|
|
78
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
79
|
+
function ChartTooltipContent({
|
|
80
|
+
active,
|
|
81
|
+
payload,
|
|
82
|
+
label,
|
|
83
|
+
className,
|
|
84
|
+
formatter,
|
|
85
|
+
labelFormatter,
|
|
86
|
+
hideLabel
|
|
87
|
+
}) {
|
|
88
|
+
if (!active || !payload?.length) return null;
|
|
89
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
90
|
+
"div",
|
|
91
|
+
{
|
|
92
|
+
className: cn(
|
|
93
|
+
"rounded-storm-md border border-storm-border bg-storm-background px-3 py-2 text-sm",
|
|
94
|
+
className
|
|
95
|
+
),
|
|
96
|
+
children: [
|
|
97
|
+
!hideLabel && label && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "mb-1 font-medium text-storm-foreground", children: labelFormatter ? labelFormatter(label) : label }),
|
|
98
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "space-y-0.5", children: payload.map((entry, i) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
99
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
100
|
+
"span",
|
|
101
|
+
{
|
|
102
|
+
className: "h-2.5 w-2.5 rounded-full",
|
|
103
|
+
style: { backgroundColor: entry.color || entry.fill }
|
|
104
|
+
}
|
|
105
|
+
),
|
|
106
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { className: "text-storm-muted-foreground", children: [
|
|
107
|
+
entry.name,
|
|
108
|
+
":"
|
|
109
|
+
] }),
|
|
110
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "font-medium text-storm-foreground", children: formatter ? formatter(entry.value, entry.name) : entry.value })
|
|
111
|
+
] }, i)) })
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
ChartTooltipContent.displayName = "ChartTooltipContent";
|
|
117
|
+
|
|
118
|
+
// src/components/charts/StormAreaChart.tsx
|
|
119
|
+
var import_recharts2 = require("recharts");
|
|
120
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
121
|
+
var COLORS = [
|
|
122
|
+
"rgb(var(--storm-primary))",
|
|
123
|
+
"rgb(var(--storm-accent))",
|
|
124
|
+
"hsl(220, 70%, 55%)",
|
|
125
|
+
"hsl(160, 60%, 45%)",
|
|
126
|
+
"hsl(30, 80%, 55%)",
|
|
127
|
+
"hsl(340, 65%, 50%)"
|
|
128
|
+
];
|
|
129
|
+
function StormAreaChart({
|
|
130
|
+
data,
|
|
131
|
+
categories,
|
|
132
|
+
index,
|
|
133
|
+
colors = COLORS,
|
|
134
|
+
height = 350,
|
|
135
|
+
stacked = false,
|
|
136
|
+
gradient = true,
|
|
137
|
+
curved = true,
|
|
138
|
+
showGrid = true,
|
|
139
|
+
showXAxis = true,
|
|
140
|
+
showYAxis = true,
|
|
141
|
+
className
|
|
142
|
+
}) {
|
|
143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ChartContainer, { height, className, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_recharts2.AreaChart, { data, children: [
|
|
144
|
+
showGrid && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_recharts2.CartesianGrid, { strokeDasharray: "3 3", vertical: false }),
|
|
145
|
+
showXAxis && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_recharts2.XAxis, { dataKey: index, tickLine: false, axisLine: false }),
|
|
146
|
+
showYAxis && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_recharts2.YAxis, { tickLine: false, axisLine: false, width: 40 }),
|
|
147
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_recharts2.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ChartTooltipContent, {}) }),
|
|
148
|
+
gradient && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("defs", { children: categories.map((cat, i) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("linearGradient", { id: `area-${cat}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
149
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("stop", { offset: "0%", stopColor: colors[i % colors.length], stopOpacity: 0.3 }),
|
|
150
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("stop", { offset: "100%", stopColor: colors[i % colors.length], stopOpacity: 0.05 })
|
|
151
|
+
] }, cat)) }),
|
|
152
|
+
categories.map((cat, i) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
153
|
+
import_recharts2.Area,
|
|
154
|
+
{
|
|
155
|
+
type: curved ? "monotone" : "linear",
|
|
156
|
+
dataKey: cat,
|
|
157
|
+
stroke: colors[i % colors.length],
|
|
158
|
+
fill: gradient ? `url(#area-${cat})` : colors[i % colors.length],
|
|
159
|
+
fillOpacity: gradient ? 1 : 0.1,
|
|
160
|
+
strokeWidth: 2,
|
|
161
|
+
stackId: stacked ? "stack" : void 0
|
|
162
|
+
},
|
|
163
|
+
cat
|
|
164
|
+
))
|
|
165
|
+
] }) });
|
|
166
|
+
}
|
|
167
|
+
StormAreaChart.displayName = "StormAreaChart";
|
|
168
|
+
|
|
169
|
+
// src/components/charts/StormBarChart.tsx
|
|
170
|
+
var import_recharts3 = require("recharts");
|
|
171
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
172
|
+
var COLORS2 = [
|
|
173
|
+
"rgb(var(--storm-primary))",
|
|
174
|
+
"rgb(var(--storm-accent))",
|
|
175
|
+
"hsl(220, 70%, 55%)",
|
|
176
|
+
"hsl(160, 60%, 45%)",
|
|
177
|
+
"hsl(30, 80%, 55%)",
|
|
178
|
+
"hsl(340, 65%, 50%)"
|
|
179
|
+
];
|
|
180
|
+
function StormBarChart({
|
|
181
|
+
data,
|
|
182
|
+
categories,
|
|
183
|
+
index,
|
|
184
|
+
colors = COLORS2,
|
|
185
|
+
height = 350,
|
|
186
|
+
stacked = false,
|
|
187
|
+
horizontal = false,
|
|
188
|
+
showGrid = true,
|
|
189
|
+
showXAxis = true,
|
|
190
|
+
showYAxis = true,
|
|
191
|
+
radius = 4,
|
|
192
|
+
className
|
|
193
|
+
}) {
|
|
194
|
+
const layout = horizontal ? "vertical" : "horizontal";
|
|
195
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ChartContainer, { height, className, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_recharts3.BarChart, { data, layout, children: [
|
|
196
|
+
showGrid && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_recharts3.CartesianGrid, { strokeDasharray: "3 3", vertical: !horizontal, horizontal: horizontal || true }),
|
|
197
|
+
horizontal ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
198
|
+
showYAxis && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_recharts3.YAxis, { dataKey: index, type: "category", tickLine: false, axisLine: false, width: 80 }),
|
|
199
|
+
showXAxis && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_recharts3.XAxis, { type: "number", tickLine: false, axisLine: false })
|
|
200
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
201
|
+
showXAxis && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_recharts3.XAxis, { dataKey: index, tickLine: false, axisLine: false }),
|
|
202
|
+
showYAxis && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_recharts3.YAxis, { tickLine: false, axisLine: false, width: 40 })
|
|
203
|
+
] }),
|
|
204
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_recharts3.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ChartTooltipContent, {}), cursor: { fill: "rgb(var(--storm-accent) / 0.1)" } }),
|
|
205
|
+
categories.map((cat, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
206
|
+
import_recharts3.Bar,
|
|
207
|
+
{
|
|
208
|
+
dataKey: cat,
|
|
209
|
+
fill: colors[i % colors.length],
|
|
210
|
+
stackId: stacked ? "stack" : void 0,
|
|
211
|
+
radius: [radius, radius, 0, 0]
|
|
212
|
+
},
|
|
213
|
+
cat
|
|
214
|
+
))
|
|
215
|
+
] }) });
|
|
216
|
+
}
|
|
217
|
+
StormBarChart.displayName = "StormBarChart";
|
|
218
|
+
|
|
219
|
+
// src/components/charts/StormLineChart.tsx
|
|
220
|
+
var import_recharts4 = require("recharts");
|
|
221
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
222
|
+
var COLORS3 = [
|
|
223
|
+
"rgb(var(--storm-primary))",
|
|
224
|
+
"rgb(var(--storm-accent))",
|
|
225
|
+
"hsl(220, 70%, 55%)",
|
|
226
|
+
"hsl(160, 60%, 45%)",
|
|
227
|
+
"hsl(30, 80%, 55%)",
|
|
228
|
+
"hsl(340, 65%, 50%)"
|
|
229
|
+
];
|
|
230
|
+
function StormLineChart({
|
|
231
|
+
data,
|
|
232
|
+
categories,
|
|
233
|
+
index,
|
|
234
|
+
colors = COLORS3,
|
|
235
|
+
height = 350,
|
|
236
|
+
curved = true,
|
|
237
|
+
showGrid = true,
|
|
238
|
+
showXAxis = true,
|
|
239
|
+
showYAxis = true,
|
|
240
|
+
showDots = true,
|
|
241
|
+
strokeWidth = 2,
|
|
242
|
+
className
|
|
243
|
+
}) {
|
|
244
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ChartContainer, { height, className, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_recharts4.LineChart, { data, children: [
|
|
245
|
+
showGrid && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_recharts4.CartesianGrid, { strokeDasharray: "3 3", vertical: false }),
|
|
246
|
+
showXAxis && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_recharts4.XAxis, { dataKey: index, tickLine: false, axisLine: false }),
|
|
247
|
+
showYAxis && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_recharts4.YAxis, { tickLine: false, axisLine: false, width: 40 }),
|
|
248
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_recharts4.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ChartTooltipContent, {}) }),
|
|
249
|
+
categories.map((cat, i) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
250
|
+
import_recharts4.Line,
|
|
251
|
+
{
|
|
252
|
+
type: curved ? "monotone" : "linear",
|
|
253
|
+
dataKey: cat,
|
|
254
|
+
stroke: colors[i % colors.length],
|
|
255
|
+
strokeWidth,
|
|
256
|
+
dot: showDots ? { r: 3, fill: colors[i % colors.length] } : false,
|
|
257
|
+
activeDot: { r: 5 }
|
|
258
|
+
},
|
|
259
|
+
cat
|
|
260
|
+
))
|
|
261
|
+
] }) });
|
|
262
|
+
}
|
|
263
|
+
StormLineChart.displayName = "StormLineChart";
|
|
264
|
+
|
|
265
|
+
// src/components/charts/StormPieChart.tsx
|
|
266
|
+
var import_recharts5 = require("recharts");
|
|
267
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
268
|
+
var COLORS4 = [
|
|
269
|
+
"rgb(var(--storm-primary))",
|
|
270
|
+
"rgb(var(--storm-accent))",
|
|
271
|
+
"hsl(220, 70%, 55%)",
|
|
272
|
+
"hsl(160, 60%, 45%)",
|
|
273
|
+
"hsl(30, 80%, 55%)",
|
|
274
|
+
"hsl(340, 65%, 50%)",
|
|
275
|
+
"hsl(270, 60%, 55%)",
|
|
276
|
+
"hsl(190, 70%, 45%)"
|
|
277
|
+
];
|
|
278
|
+
function StormPieChart({
|
|
279
|
+
data,
|
|
280
|
+
colors = COLORS4,
|
|
281
|
+
height = 350,
|
|
282
|
+
donut = false,
|
|
283
|
+
showLabel = false,
|
|
284
|
+
className
|
|
285
|
+
}) {
|
|
286
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ChartContainer, { height, className, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_recharts5.PieChart, { children: [
|
|
287
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_recharts5.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ChartTooltipContent, { hideLabel: true }) }),
|
|
288
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
289
|
+
import_recharts5.Pie,
|
|
290
|
+
{
|
|
291
|
+
data,
|
|
292
|
+
dataKey: "value",
|
|
293
|
+
nameKey: "name",
|
|
294
|
+
cx: "50%",
|
|
295
|
+
cy: "50%",
|
|
296
|
+
innerRadius: donut ? "60%" : 0,
|
|
297
|
+
outerRadius: "80%",
|
|
298
|
+
paddingAngle: donut ? 4 : 0,
|
|
299
|
+
label: showLabel ? ((props) => `${props.name || ""} ${(props.percent * 100).toFixed(0)}%`) : false,
|
|
300
|
+
children: data.map((entry, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_recharts5.Cell, { fill: entry.color || colors[i % colors.length] }, i))
|
|
301
|
+
}
|
|
302
|
+
)
|
|
303
|
+
] }) });
|
|
304
|
+
}
|
|
305
|
+
StormPieChart.displayName = "StormPieChart";
|
|
306
|
+
|
|
307
|
+
// src/components/charts/StormRadarChart.tsx
|
|
308
|
+
var import_recharts6 = require("recharts");
|
|
309
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
310
|
+
var COLORS5 = [
|
|
311
|
+
"rgb(var(--storm-primary))",
|
|
312
|
+
"rgb(var(--storm-accent))",
|
|
313
|
+
"hsl(220, 70%, 55%)",
|
|
314
|
+
"hsl(160, 60%, 45%)"
|
|
315
|
+
];
|
|
316
|
+
function StormRadarChart({
|
|
317
|
+
data,
|
|
318
|
+
categories,
|
|
319
|
+
index,
|
|
320
|
+
colors = COLORS5,
|
|
321
|
+
height = 350,
|
|
322
|
+
filled = false,
|
|
323
|
+
className
|
|
324
|
+
}) {
|
|
325
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ChartContainer, { height, className, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_recharts6.RadarChart, { data, cx: "50%", cy: "50%", outerRadius: "80%", children: [
|
|
326
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_recharts6.PolarGrid, {}),
|
|
327
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_recharts6.PolarAngleAxis, { dataKey: index }),
|
|
328
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_recharts6.PolarRadiusAxis, {}),
|
|
329
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_recharts6.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ChartTooltipContent, {}) }),
|
|
330
|
+
categories.map((cat, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
331
|
+
import_recharts6.Radar,
|
|
332
|
+
{
|
|
333
|
+
name: cat,
|
|
334
|
+
dataKey: cat,
|
|
335
|
+
stroke: colors[i % colors.length],
|
|
336
|
+
fill: colors[i % colors.length],
|
|
337
|
+
fillOpacity: filled ? 0.3 : 0,
|
|
338
|
+
strokeWidth: 2
|
|
339
|
+
},
|
|
340
|
+
cat
|
|
341
|
+
))
|
|
342
|
+
] }) });
|
|
343
|
+
}
|
|
344
|
+
StormRadarChart.displayName = "StormRadarChart";
|
|
345
|
+
|
|
346
|
+
// src/components/charts/StormRadialChart.tsx
|
|
347
|
+
var import_recharts7 = require("recharts");
|
|
348
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
349
|
+
var COLORS6 = [
|
|
350
|
+
"rgb(var(--storm-primary))",
|
|
351
|
+
"rgb(var(--storm-accent))",
|
|
352
|
+
"hsl(220, 70%, 55%)",
|
|
353
|
+
"hsl(160, 60%, 45%)",
|
|
354
|
+
"hsl(30, 80%, 55%)"
|
|
355
|
+
];
|
|
356
|
+
function StormRadialChart({
|
|
357
|
+
data,
|
|
358
|
+
colors = COLORS6,
|
|
359
|
+
height = 350,
|
|
360
|
+
startAngle = 90,
|
|
361
|
+
endAngle = -270,
|
|
362
|
+
innerRadius = "30%",
|
|
363
|
+
outerRadius = "90%",
|
|
364
|
+
className
|
|
365
|
+
}) {
|
|
366
|
+
const coloredData = data.map((entry, i) => ({
|
|
367
|
+
...entry,
|
|
368
|
+
fill: entry.fill || colors[i % colors.length]
|
|
369
|
+
}));
|
|
370
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ChartContainer, { height, className, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
371
|
+
import_recharts7.RadialBarChart,
|
|
372
|
+
{
|
|
373
|
+
data: coloredData,
|
|
374
|
+
cx: "50%",
|
|
375
|
+
cy: "50%",
|
|
376
|
+
innerRadius,
|
|
377
|
+
outerRadius,
|
|
378
|
+
startAngle,
|
|
379
|
+
endAngle,
|
|
380
|
+
children: [
|
|
381
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_recharts7.Tooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ChartTooltipContent, { hideLabel: true }) }),
|
|
382
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
383
|
+
import_recharts7.RadialBar,
|
|
384
|
+
{
|
|
385
|
+
dataKey: "value",
|
|
386
|
+
cornerRadius: 4,
|
|
387
|
+
background: true
|
|
388
|
+
}
|
|
389
|
+
)
|
|
390
|
+
]
|
|
391
|
+
}
|
|
392
|
+
) });
|
|
393
|
+
}
|
|
394
|
+
StormRadialChart.displayName = "StormRadialChart";
|
|
395
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
396
|
+
0 && (module.exports = {
|
|
397
|
+
ChartContainer,
|
|
398
|
+
ChartTooltipContent,
|
|
399
|
+
StormAreaChart,
|
|
400
|
+
StormBarChart,
|
|
401
|
+
StormLineChart,
|
|
402
|
+
StormPieChart,
|
|
403
|
+
StormRadarChart,
|
|
404
|
+
StormRadialChart
|
|
405
|
+
});
|
|
406
|
+
//# sourceMappingURL=charts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/charts.ts","../src/components/charts/ChartContainer.tsx","../src/utils/cn.ts","../src/components/charts/ChartTooltip.tsx","../src/components/charts/StormAreaChart.tsx","../src/components/charts/StormBarChart.tsx","../src/components/charts/StormLineChart.tsx","../src/components/charts/StormPieChart.tsx","../src/components/charts/StormRadarChart.tsx","../src/components/charts/StormRadialChart.tsx"],"sourcesContent":["export { ChartContainer } from './components/charts/ChartContainer'\nexport type { ChartContainerProps } from './components/charts/ChartContainer'\nexport { ChartTooltipContent } from './components/charts/ChartTooltip'\nexport type { ChartTooltipContentProps } from './components/charts/ChartTooltip'\nexport { StormAreaChart } from './components/charts/StormAreaChart'\nexport type { StormAreaChartProps } from './components/charts/StormAreaChart'\nexport { StormBarChart } from './components/charts/StormBarChart'\nexport type { StormBarChartProps } from './components/charts/StormBarChart'\nexport { StormLineChart } from './components/charts/StormLineChart'\nexport type { StormLineChartProps } from './components/charts/StormLineChart'\nexport { StormPieChart } from './components/charts/StormPieChart'\nexport type { StormPieChartProps } from './components/charts/StormPieChart'\nexport { StormRadarChart } from './components/charts/StormRadarChart'\nexport type { StormRadarChartProps } from './components/charts/StormRadarChart'\nexport { StormRadialChart } from './components/charts/StormRadialChart'\nexport type { StormRadialChartProps } from './components/charts/StormRadialChart'\n","'use client'\n\nimport { forwardRef } from 'react'\nimport { ResponsiveContainer } from 'recharts'\nimport { cn } from '../../utils/cn'\n\ninterface ChartContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n height?: number\n}\n\nconst ChartContainer = forwardRef<HTMLDivElement, ChartContainerProps>(\n ({ className, height = 350, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full text-sm',\n '[&_.recharts-cartesian-grid_line]:stroke-storm-border',\n '[&_.recharts-cartesian-axis-tick_text]:fill-storm-muted-foreground',\n '[&_.recharts-cartesian-axis-line]:stroke-storm-border',\n '[&_.recharts-polar-grid_circle]:stroke-storm-border',\n '[&_.recharts-polar-angle-axis_text]:fill-storm-muted-foreground',\n '[&_.recharts-radial-bar-background-sector]:fill-storm-accent/10',\n className\n )}\n {...props}\n >\n <ResponsiveContainer width=\"100%\" height={height}>\n {children as React.ReactElement}\n </ResponsiveContainer>\n </div>\n )\n }\n)\n\nChartContainer.displayName = 'ChartContainer'\n\nexport { ChartContainer }\nexport type { ChartContainerProps }\n","import { twMerge } from 'tailwind-merge'\n\ntype ClassValue = string | undefined | null | false | Record<string, boolean | undefined | null> | ClassValue[]\n\nfunction toClassString(input: ClassValue): string {\n if (!input) return ''\n if (typeof input === 'string') return input\n if (Array.isArray(input)) return input.map(toClassString).filter(Boolean).join(' ')\n return Object.entries(input)\n .filter(([, value]) => Boolean(value))\n .map(([key]) => key)\n .join(' ')\n}\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(inputs.map(toClassString).filter(Boolean).join(' '))\n}\n","'use client'\n\nimport { cn } from '../../utils/cn'\n\ninterface ChartTooltipContentProps {\n active?: boolean\n payload?: Array<{\n name: string\n value: number\n color?: string\n fill?: string\n dataKey?: string\n }>\n label?: string\n className?: string\n formatter?: (value: number, name: string) => string\n labelFormatter?: (label: string) => string\n hideLabel?: boolean\n}\n\nfunction ChartTooltipContent({\n active,\n payload,\n label,\n className,\n formatter,\n labelFormatter,\n hideLabel,\n}: ChartTooltipContentProps) {\n if (!active || !payload?.length) return null\n\n return (\n <div\n className={cn(\n 'rounded-storm-md border border-storm-border bg-storm-background px-3 py-2 text-sm',\n className\n )}\n >\n {!hideLabel && label && (\n <p className=\"mb-1 font-medium text-storm-foreground\">\n {labelFormatter ? labelFormatter(label) : label}\n </p>\n )}\n <div className=\"space-y-0.5\">\n {payload.map((entry, i) => (\n <div key={i} className=\"flex items-center gap-2\">\n <span\n className=\"h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: entry.color || entry.fill }}\n />\n <span className=\"text-storm-muted-foreground\">{entry.name}:</span>\n <span className=\"font-medium text-storm-foreground\">\n {formatter ? formatter(entry.value, entry.name) : entry.value}\n </span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nChartTooltipContent.displayName = 'ChartTooltipContent'\n\nexport { ChartTooltipContent }\nexport type { ChartTooltipContentProps }\n","'use client'\n\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n} from 'recharts'\nimport { ChartContainer } from './ChartContainer'\nimport { ChartTooltipContent } from './ChartTooltip'\n\nconst COLORS = [\n 'rgb(var(--storm-primary))',\n 'rgb(var(--storm-accent))',\n 'hsl(220, 70%, 55%)',\n 'hsl(160, 60%, 45%)',\n 'hsl(30, 80%, 55%)',\n 'hsl(340, 65%, 50%)',\n]\n\ninterface StormAreaChartProps {\n data: Record<string, unknown>[]\n categories: string[]\n index: string\n colors?: string[]\n height?: number\n stacked?: boolean\n gradient?: boolean\n curved?: boolean\n showGrid?: boolean\n showXAxis?: boolean\n showYAxis?: boolean\n className?: string\n}\n\nfunction StormAreaChart({\n data,\n categories,\n index,\n colors = COLORS,\n height = 350,\n stacked = false,\n gradient = true,\n curved = true,\n showGrid = true,\n showXAxis = true,\n showYAxis = true,\n className,\n}: StormAreaChartProps) {\n return (\n <ChartContainer height={height} className={className}>\n <RechartsAreaChart data={data}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" vertical={false} />}\n {showXAxis && <XAxis dataKey={index} tickLine={false} axisLine={false} />}\n {showYAxis && <YAxis tickLine={false} axisLine={false} width={40} />}\n <Tooltip content={<ChartTooltipContent />} />\n {gradient && (\n <defs>\n {categories.map((cat, i) => (\n <linearGradient key={cat} id={`area-${cat}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={colors[i % colors.length]} stopOpacity={0.3} />\n <stop offset=\"100%\" stopColor={colors[i % colors.length]} stopOpacity={0.05} />\n </linearGradient>\n ))}\n </defs>\n )}\n {categories.map((cat, i) => (\n <Area\n key={cat}\n type={curved ? 'monotone' : 'linear'}\n dataKey={cat}\n stroke={colors[i % colors.length]}\n fill={gradient ? `url(#area-${cat})` : colors[i % colors.length]}\n fillOpacity={gradient ? 1 : 0.1}\n strokeWidth={2}\n stackId={stacked ? 'stack' : undefined}\n />\n ))}\n </RechartsAreaChart>\n </ChartContainer>\n )\n}\n\nStormAreaChart.displayName = 'StormAreaChart'\n\nexport { StormAreaChart }\nexport type { StormAreaChartProps }\n","'use client'\n\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n} from 'recharts'\nimport { ChartContainer } from './ChartContainer'\nimport { ChartTooltipContent } from './ChartTooltip'\n\nconst COLORS = [\n 'rgb(var(--storm-primary))',\n 'rgb(var(--storm-accent))',\n 'hsl(220, 70%, 55%)',\n 'hsl(160, 60%, 45%)',\n 'hsl(30, 80%, 55%)',\n 'hsl(340, 65%, 50%)',\n]\n\ninterface StormBarChartProps {\n data: Record<string, unknown>[]\n categories: string[]\n index: string\n colors?: string[]\n height?: number\n stacked?: boolean\n horizontal?: boolean\n showGrid?: boolean\n showXAxis?: boolean\n showYAxis?: boolean\n radius?: number\n className?: string\n}\n\nfunction StormBarChart({\n data,\n categories,\n index,\n colors = COLORS,\n height = 350,\n stacked = false,\n horizontal = false,\n showGrid = true,\n showXAxis = true,\n showYAxis = true,\n radius = 4,\n className,\n}: StormBarChartProps) {\n const layout = horizontal ? 'vertical' : 'horizontal'\n\n return (\n <ChartContainer height={height} className={className}>\n <RechartsBarChart data={data} layout={layout}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" vertical={!horizontal} horizontal={horizontal || true} />}\n {horizontal ? (\n <>\n {showYAxis && <YAxis dataKey={index} type=\"category\" tickLine={false} axisLine={false} width={80} />}\n {showXAxis && <XAxis type=\"number\" tickLine={false} axisLine={false} />}\n </>\n ) : (\n <>\n {showXAxis && <XAxis dataKey={index} tickLine={false} axisLine={false} />}\n {showYAxis && <YAxis tickLine={false} axisLine={false} width={40} />}\n </>\n )}\n <Tooltip content={<ChartTooltipContent />} cursor={{ fill: 'rgb(var(--storm-accent) / 0.1)' }} />\n {categories.map((cat, i) => (\n <Bar\n key={cat}\n dataKey={cat}\n fill={colors[i % colors.length]}\n stackId={stacked ? 'stack' : undefined}\n radius={[radius, radius, 0, 0]}\n />\n ))}\n </RechartsBarChart>\n </ChartContainer>\n )\n}\n\nStormBarChart.displayName = 'StormBarChart'\n\nexport { StormBarChart }\nexport type { StormBarChartProps }\n","'use client'\n\nimport {\n LineChart as RechartsLineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n} from 'recharts'\nimport { ChartContainer } from './ChartContainer'\nimport { ChartTooltipContent } from './ChartTooltip'\n\nconst COLORS = [\n 'rgb(var(--storm-primary))',\n 'rgb(var(--storm-accent))',\n 'hsl(220, 70%, 55%)',\n 'hsl(160, 60%, 45%)',\n 'hsl(30, 80%, 55%)',\n 'hsl(340, 65%, 50%)',\n]\n\ninterface StormLineChartProps {\n data: Record<string, unknown>[]\n categories: string[]\n index: string\n colors?: string[]\n height?: number\n curved?: boolean\n showGrid?: boolean\n showXAxis?: boolean\n showYAxis?: boolean\n showDots?: boolean\n strokeWidth?: number\n className?: string\n}\n\nfunction StormLineChart({\n data,\n categories,\n index,\n colors = COLORS,\n height = 350,\n curved = true,\n showGrid = true,\n showXAxis = true,\n showYAxis = true,\n showDots = true,\n strokeWidth = 2,\n className,\n}: StormLineChartProps) {\n return (\n <ChartContainer height={height} className={className}>\n <RechartsLineChart data={data}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" vertical={false} />}\n {showXAxis && <XAxis dataKey={index} tickLine={false} axisLine={false} />}\n {showYAxis && <YAxis tickLine={false} axisLine={false} width={40} />}\n <Tooltip content={<ChartTooltipContent />} />\n {categories.map((cat, i) => (\n <Line\n key={cat}\n type={curved ? 'monotone' : 'linear'}\n dataKey={cat}\n stroke={colors[i % colors.length]}\n strokeWidth={strokeWidth}\n dot={showDots ? { r: 3, fill: colors[i % colors.length] } : false}\n activeDot={{ r: 5 }}\n />\n ))}\n </RechartsLineChart>\n </ChartContainer>\n )\n}\n\nStormLineChart.displayName = 'StormLineChart'\n\nexport { StormLineChart }\nexport type { StormLineChartProps }\n","'use client'\n\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n} from 'recharts'\nimport { ChartContainer } from './ChartContainer'\nimport { ChartTooltipContent } from './ChartTooltip'\n\nconst COLORS = [\n 'rgb(var(--storm-primary))',\n 'rgb(var(--storm-accent))',\n 'hsl(220, 70%, 55%)',\n 'hsl(160, 60%, 45%)',\n 'hsl(30, 80%, 55%)',\n 'hsl(340, 65%, 50%)',\n 'hsl(270, 60%, 55%)',\n 'hsl(190, 70%, 45%)',\n]\n\ninterface StormPieChartProps {\n data: Array<{ name: string; value: number; color?: string }>\n colors?: string[]\n height?: number\n donut?: boolean\n showLabel?: boolean\n className?: string\n}\n\nfunction StormPieChart({\n data,\n colors = COLORS,\n height = 350,\n donut = false,\n showLabel = false,\n className,\n}: StormPieChartProps) {\n return (\n <ChartContainer height={height} className={className}>\n <RechartsPieChart>\n <Tooltip content={<ChartTooltipContent hideLabel />} />\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={donut ? '60%' : 0}\n outerRadius=\"80%\"\n paddingAngle={donut ? 4 : 0}\n label={showLabel ? ((props: Record<string, unknown>) => `${props.name || ''} ${((props.percent as number) * 100).toFixed(0)}%`) as unknown as boolean : false}\n >\n {data.map((entry, i) => (\n <Cell key={i} fill={entry.color || colors[i % colors.length]} />\n ))}\n </Pie>\n </RechartsPieChart>\n </ChartContainer>\n )\n}\n\nStormPieChart.displayName = 'StormPieChart'\n\nexport { StormPieChart }\nexport type { StormPieChartProps }\n","'use client'\n\nimport {\n RadarChart as RechartsRadarChart,\n Radar,\n PolarGrid,\n PolarAngleAxis,\n PolarRadiusAxis,\n Tooltip,\n} from 'recharts'\nimport { ChartContainer } from './ChartContainer'\nimport { ChartTooltipContent } from './ChartTooltip'\n\nconst COLORS = [\n 'rgb(var(--storm-primary))',\n 'rgb(var(--storm-accent))',\n 'hsl(220, 70%, 55%)',\n 'hsl(160, 60%, 45%)',\n]\n\ninterface StormRadarChartProps {\n data: Record<string, unknown>[]\n categories: string[]\n index: string\n colors?: string[]\n height?: number\n filled?: boolean\n className?: string\n}\n\nfunction StormRadarChart({\n data,\n categories,\n index,\n colors = COLORS,\n height = 350,\n filled = false,\n className,\n}: StormRadarChartProps) {\n return (\n <ChartContainer height={height} className={className}>\n <RechartsRadarChart data={data} cx=\"50%\" cy=\"50%\" outerRadius=\"80%\">\n <PolarGrid />\n <PolarAngleAxis dataKey={index} />\n <PolarRadiusAxis />\n <Tooltip content={<ChartTooltipContent />} />\n {categories.map((cat, i) => (\n <Radar\n key={cat}\n name={cat}\n dataKey={cat}\n stroke={colors[i % colors.length]}\n fill={colors[i % colors.length]}\n fillOpacity={filled ? 0.3 : 0}\n strokeWidth={2}\n />\n ))}\n </RechartsRadarChart>\n </ChartContainer>\n )\n}\n\nStormRadarChart.displayName = 'StormRadarChart'\n\nexport { StormRadarChart }\nexport type { StormRadarChartProps }\n","'use client'\n\nimport {\n RadialBarChart as RechartsRadialBarChart,\n RadialBar,\n Tooltip,\n} from 'recharts'\nimport { ChartContainer } from './ChartContainer'\nimport { ChartTooltipContent } from './ChartTooltip'\n\nconst COLORS = [\n 'rgb(var(--storm-primary))',\n 'rgb(var(--storm-accent))',\n 'hsl(220, 70%, 55%)',\n 'hsl(160, 60%, 45%)',\n 'hsl(30, 80%, 55%)',\n]\n\ninterface StormRadialChartProps {\n data: Array<{ name: string; value: number; fill?: string }>\n colors?: string[]\n height?: number\n startAngle?: number\n endAngle?: number\n innerRadius?: string\n outerRadius?: string\n className?: string\n}\n\nfunction StormRadialChart({\n data,\n colors = COLORS,\n height = 350,\n startAngle = 90,\n endAngle = -270,\n innerRadius = '30%',\n outerRadius = '90%',\n className,\n}: StormRadialChartProps) {\n const coloredData = data.map((entry, i) => ({\n ...entry,\n fill: entry.fill || colors[i % colors.length],\n }))\n\n return (\n <ChartContainer height={height} className={className}>\n <RechartsRadialBarChart\n data={coloredData}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n startAngle={startAngle}\n endAngle={endAngle}\n >\n <Tooltip content={<ChartTooltipContent hideLabel />} />\n <RadialBar\n dataKey=\"value\"\n cornerRadius={4}\n background\n />\n </RechartsRadialBarChart>\n </ChartContainer>\n )\n}\n\nStormRadialChart.displayName = 'StormRadialChart'\n\nexport { StormRadialChart }\nexport type { StormRadialChartProps }\n"],"mappings":"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","names":["import_jsx_runtime","import_recharts","import_jsx_runtime","RechartsAreaChart","import_recharts","import_jsx_runtime","COLORS","RechartsBarChart","import_recharts","import_jsx_runtime","COLORS","RechartsLineChart","import_recharts","import_jsx_runtime","COLORS","RechartsPieChart","import_recharts","import_jsx_runtime","COLORS","RechartsRadarChart","import_recharts","import_jsx_runtime","COLORS","RechartsRadialBarChart"]}
|